{"version":3,"file":"ShareablesScreen-C-yPdacH.cjs","names":["z","_","$","m","b","H","X","D","L","k","M","x","K","u","centerCrop","makeAspectCrop","purify","haveNativeBuffer","Buffer","isDeno","Buffer","web64","atob","isDeno","E_STRICT","isWellFormed","E_STRICT","decode","isDeno","Buffer","E_STRICT","encode","E_STRICT","r","maps","encodings","r","mappers","E_STRICT","isDeno","E_STRICT","NON_LATIN","multibyteEncoder","createMultibyteDecoder","define","TextDecoder","#unicode","#multibyte","#canBOM","#chunk","#findBom","#decode","TextEncoder","toBase64","fromBase64","E_LENGTH","E_PADDING","E_CHAR","E_LAST","btoa","js.toBase64","Buffer","js","atob","js.fromBase64","isDeno","ERR","hex","assert","stream","net","EE","stringify","diagnosticsChannel","util","assert","#handler","EventEmitter","#abort","#paused","#aborted","#reason","#handler","#controller","net","assert","Buffer","Buffer","assert","assert","#map","#detectRuntimeFeature","assert","inspect","zlib","assert","performance","#target","#kind","#index","isUint8Array","Transform","#zlibOptions","nodeUtil","#state","assert","assert","isErrored","assert","exports","assert","pipeline","assert","net","Buffer","debuglog","Buffer","EventEmitter","URL","#client","#getUrl","#opts","#parseNoProxy","#getProxyAgentForUrl","#shouldProxy","#noProxyChanged","#noProxyEntries","#noProxyValue","#noProxyEnv","assert","#agent","#options","assert","Readable","assert","AsyncResource","assert","AsyncResource","assert","Readable","AsyncResource","assert","AsyncResource","assert","STATUS_CODES","promisify","Transform","crypto","#snapshotPath","#maxSnapshots","#autoFlush","#headerFilters","#isUrlExcluded","#startAutoFlush","#snapshots","#scheduleFlush","#flushTimeout","setTimeout","#stopAutoFlush","#asyncDispatch","#replaySnapshot","#recordAndReplay","#setupMockInterceptors","assert","#handler","#onCompleteCalled","#onErrorCalled","#onResponseStartCalled","assert","EE","#contentType","#statusCode","#decoder","#headers","#body","#checkContentType","#maxSize","#abort","#controller","#dumped","#size","#maxItems","#records","#maxTTL","#defaultLookup","#defaultPick","#origin","#newOrigin","#opts","#state","#dispatch","#firstTry","#store","#cacheType","#cacheByDefault","#cacheKey","#handler","#writeStream","EventEmitter","#maxCount","#maxSize","#maxEntrySize","#size","#count","#entries","Writable","#hasEmittedMaxSizeEvent","assert","#callback","#handler","#allowErrorStatusCodes","#successful","#context","assert","Readable","createGunzip","createBrotliDecompress","createInflate","#skipStatusCodes","#skipErrorResponses","#decompressors","#setupDecompressorEvents","#shouldSkipDecompression","#createDecompressionChain","#cleanupDecompressors","#setupSingleDecompressor","#setupMultipleDecompressors","#primaryHandler","#onComplete","#maxBufferSize","#completed","#responseDataStarted","#createWaitingHandler","#responseStarted","#statusCode","#headers","#statusMessage","#waitingHandlers","#controller","#pruneDoneWaitingHandlers","#aborted","#bufferWaitingChunk","#flushWaitingHandler","#errorWaitingHandler","#maxEntrySize","#maxCount","#db","#getValuesQuery","#updateValueQuery","#insertValueQuery","#deleteByUrlQuery","#countEntriesQuery","#deleteExpiredValuesQuery","#deleteOldValuesQuery","#findValue","#makeValueUrl","#prune","Writable","assert","util","#headersList","#guard","nodeUtil","assert","#state","#headers","assert","#dispatcher","#state","#signal","#headers","assert","assert","Readable","pipeline","assert","assert","#relevantRequestResponseList","#internalMatchAll","#batchCacheOperations","#queryCache","#requestMatchesCachedItem","#caches","assert","#eventInit","assert","crypto","#options","#maxPayloadSize","#inflate","#handler","#extensions","#maxFragments","#maxPayloadSize","#buffers","#byteOffset","#loop","#info","#fragmentsBytes","#state","#fragments","#validatePayloadLength","#socket","#running","#queue","#run","#onConnectionEstablished","#onMessage","#handler","#onParserDrain","#parser","#onSocketClose","#url","#binaryType","#bufferedAmount","#sendQueue","#extensions","#protocol","#events","#closeCode","#reason","#onConnectionEstablished","#onMessage","#handler","#parser","#onSocketClose","#url","#openedPromise","#closedPromise","#handshakeAborted","#readableStreamController","#cancel","#write","#closeUsingReason","#readableStream","#writableStream","#dispatcher","#state","#url","#withCredentials","#request","#connect","#readyState","#reconnect","#controller","#events","n","stringify","o","isSurrogate","r","t","isWhitespace","i","c","consumeComment","e","ParseError","s","u","a","d","i","r","a","c","u","l","e","h","m","p","d","n","k","replaceComponentValues","o","f","t","s","toLowerCaseAZ","f","Y","m","p","C","d","n","g","t","D","N","r","a","_","u","o","h","i","B","A","l","e","c","b","F","s","w","E","S","I","$","Z","#o","#m","#A","#d","#g","#y","#s","#i","#t","#a","#u","#l","#h","#b","#e","#G","#D","#F","#O","#p","#c","#_","#n","#L","#U","#w","#C","#S","#v","#r","#T","#I","#f","#B","#j","#N","#E","#R","#z","#W","#P","#M","#x","#H","#k","#V","X","T","V","B","R","Z","z","F","M","D","S","k","P","H","h","L","x","w","C","_","y","d","f","g","v","b","N","p","m","c","e","a","n","r","o","ee","ae","ne","t","re","ie","ce","l","oe","te","s","u","A","X","K","Y","I","O","W","E","U","$","j","le","q","J","Q","se","ue","i","G","#item","#isNull","#hasNum","#numSum","#numMul","#hasPct","#pctSum","#pctMul","#hasDim","#dimSum","#dimSub","#dimMul","#dimDiv","#hasEtc","#etcSum","#etcSub","#etcMul","#etcDiv","fs","path","$","isAsciiAlphaNumeric","$","$$","$","$","$","doctype.getDocumentMode","doctype.isConforming","TN","foreignContent.causesExit","foreignContent.isIntegrationPoint","$","exports","#window","#astCache","#documentCache","#event","#focus","#lastFocusVisible","#eventHandlers","#noexcept","#warn","#check","#document","#root","#shadow","#documentURL","#node","#scoped","#selector","#ast","#nodes","#pseudoElement","#walkers","#nodeWalker","#rootWalker","#verifyShadowHost","#invalidateResults","#results","#descendant","#invalidate","#selectorAST","#finder","#idlUtils","#nwsapi","#cache","fs","#baseDispatcher","#cookieJar","#userAgent","#userInterceptors","#dispatchDataURL","#dispatchFileURL","#dispatchHTTP","Readable","#normalizeHeadersToObject","#doSingleRequest","#deleteRequestHeader","#setDefaultHeaders","#hasRequestHeader","#buildDispatchChain","#storeCookiesFromHeaders","vm","Readable","#fill","#validate","#removePrivilegedNoCORSHeaders","vm","#skipStatusCodes","#skipErrorResponses","#decompressors","#setupDecompressorEvents","#shouldSkipDecompression","#createDecompressionChain","#cleanupDecompressors","#setupSingleDecompressor","#setupMultipleDecompressors","window","JSDOM","DOMPurifyFactory","DOMPurify","createTranslationContext","DEFAULT_IMAGE","Card","CirclePlay","Badge","Skeleton","List","LayoutGrid","cn","PAGE_SIZE","useShareablesClient","useIsMobile","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbPage","SearchSort","Button","ChevronLeft","ChevronRight","ImageIcon","Badge","Maximize","Dialog","DialogContent","DialogTitle","DialogDescription","DialogClose","X","FacebookIcon","InstagramIcon","FacebookIcon","InstagramIcon","Button","Menu","MobileActionSheet","Copy","Button","Download","React","Button","Play","FileImage","Image","Spinner","Skeleton","DOMPurify","Button","useShareablesApi","useShareablesClient","useShareLink","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","ImageIcon","Separator","MarketingAssetsGrid","DEFAULT_IMAGE","shareablesKeys","useProductMediaByProductIds","Skeleton","Button","ChevronLeft","ChevronRight","Sparkles","PAGE_SIZE","useShareablesApi","useIsMobile","keepPreviousData","shareablesKeys","isApiError","ResponsiveDialog","Label","Input","Button","Spinner","cn","ListMusic","useIsMobile","Button","MoreVertical","MobileActionSheet","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","Trash2","Tabs","cn","TabsList","TabsTrigger","PAGE_SIZE","useIsMobile","useShareablesApi","useRepContext","shareablesKeys","keepPreviousData","Filter","SearchSort","Button","MobileActionSheet","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","Check","ScreenHeaderActions","Plus","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbPage","Badge","ResponsiveDialog","DialogFooter","Spinner","DEFAULT_IMAGE","ShoppingBag","ArrowUpRight","Button","Plus","cn","useShareablesApi","useRepContext","shareablesKeys","useShareLink","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","ScreenHeaderActions","Pencil","Separator","CoreFilePickerApiProvider","useFilePickerApi","z","ResponsiveDialog","Form","FormField","FormItem","FormLabel","FormControl","Input","FormMessage","Button","ResponsiveDialog","AlertTriangleIcon","DialogFooter","Button","ImageIcon","VideoIcon","FileIcon","cn","cn","cn","EllipsisVerticalIcon","MobileActionSheet","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","XIcon","Trash2Icon","cn","React","useFilePickerApi","useZodForm","Dialog","DialogPortal","DialogOverlay","Breadcrumb","BreadcrumbList","React","BreadcrumbItem","BreadcrumbPage","Button","cn","BreadcrumbSeparator","FolderIcon","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","LoaderIcon","ChevronDownIcon","Button","React","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Button","Button","ChevronDownIcon","MobileActionSheet","Input","TooltipProvider","Tooltip","TooltipTrigger","MinusIcon","TooltipContent","Slider","PlusIcon","TypeIcon","LayoutGridIcon","ListIcon","FolderPlusIcon","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","DropdownMenuSub","DropdownMenuSubTrigger","DropdownMenuSubContent","FolderIcon","SlidersHorizontalIcon","MobileBottomSheet","defaultFiltersState","Popover","PopoverTrigger","PopoverContent","ArrowUpDownIcon","CheckIcon","XIcon","React","ImageIcon","VideoIcon","FileIcon","Dialog","DialogPortal","DialogOverlay","DialogContent","Input","SearchIcon","LoaderIcon","Button","ChevronDownIcon","PAGE_SIZE","Input","SearchIcon","LoaderIcon","Button","ChevronDownIcon","FileTextIcon","PackageIcon","GraduationCapIcon","useFilePickerApi","DownloadIcon","UserIcon","Button","LoaderIcon","CheckIcon","AlertTriangleIcon","useFilePickerApi","isFileTypeAccepted","getAcceptedTypesDescription","LinkIcon","Input","CheckIcon","AlertTriangleIcon","Button","LoaderIcon","ArrowRightIcon","FileIcon","Switch","useFilePickerApi","getFileMimeType","Dialog","DialogContent","DialogTitle","Button","ChevronDownIcon","MobileActionSheet","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","MoveHorizontalIcon","RotateCwIcon","MinusIcon","Slider","PlusIcon","ReactCrop","formatFileSize","getFileMimeType","useDropzone","Card","CardContent","ArrowUpIcon","Button","LoaderIcon","CheckIcon","AlertTriangleIcon","Switch","React","FileIcon","ImageIcon","VideoIcon","React","Button","EllipsisVerticalIcon","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","CropIcon","LayersIcon","cn","XIcon","MobileActionSheet","MobileBottomSheet","Dialog","DialogPortal","DialogOverlay","defaultDamFilters","CloudIcon","ImagesIcon","FileTextIcon","PackageIcon","GraduationCapIcon","LaptopIcon","LinkIcon","Dialog","DialogContent","DialogTitle","useEditor","StarterKit","Placeholder","TextAlign","Underline","cn","AlignLeft","AlignCenter","AlignRight","AlignJustify","List","ListOrdered","EditorContent","PAGE_SIZE","Package","useIsMobile","Button","Plus","ResponsiveDialog","Spinner","Search","Input","useIsMobile","Globe","ShoppingCart","Mail","Phone","ResponsiveDialog","Switch","Label","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","HelpCircle","Input","Button","useIsMobile","ImageIcon","Button","Camera","ResponsiveDialog","Pause","Play","Spinner","ImageIcon","Button","useIsMobile","useShareablesApi","useRepContext","shareablesKeys","Spinner","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","ScreenHeaderActions","MoreVertical","MobileActionSheet","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","Trash2","Label","Input","Textarea","Switch","ResponsiveDialog","DialogFooter","Video","FileText","useShareablesUser","useCreateMediaMutation","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","ScreenHeaderActions","Button","Spinner","Upload","Label","Input","ImageIcon","Textarea","Switch","DEFAULT_IMAGE","useIsMobile","cn","Checkbox","MoreVertical","MobileActionSheet","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","Heart","Pencil","DropdownMenuSeparator","Trash2","Badge","Button","X","PAGE_SIZE","useShareablesApi","useIsMobile","shareablesKeys","keepPreviousData","SearchSort","ScreenHeaderActions","Button","Plus","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbPage","Badge","Checkbox","Heart","cn","MoreVertical","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","Pencil","DropdownMenuSeparator","Trash2","MobileActionSheet","ResponsiveDialog","DialogFooter","Spinner","DEFAULT_IMAGE","ListMusic","Play","ArrowUpRight","DEFAULT_IMAGE","useShareablesApi","shareablesKeys","useShareLink","ScreenHeaderActions","Button","Pencil","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","Separator","useIsMobile","ScreenHeaderActions","Button","MoreVertical","MobileActionSheet","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","Trash2","Spinner","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","ResponsiveDialog","DialogFooter","Label","Input","cn","CSS","React","Video","Image","FileText","ShoppingBag","Package","useIsMobile","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","GripVertical","Button","MoreHorizontal","DropdownMenu","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","Trash2","MobileActionSheet","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","useShareablesApi","useAddItemToPlaylistMutation","useRemoveItemsFromPlaylistMutation","useReorderPlaylistItemsMutation","Button","Plus","useShareablesApi","useCreatePlaylistMutation","useUpdatePlaylistMutation","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","shareablesKeys","Skeleton","PAGE_SIZE","DEFAULT_IMAGE","useShareablesApi","useIsMobile","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbPage","SearchSort","Card","CirclePlay","Badge","useShareablesApi","useIsMobile","shareablesKeys","keepPreviousData","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbPage","SearchSort","Card","Badge","useShareablesApi","shareablesKeys","useShareLink","ScreenHeaderBreadcrumbs","Breadcrumb","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbPage","Badge","useActiveLocale","useDomainDict","shareablesDomain","createShareablesTranslationAdapter","PortalContentApiProvider","usePortalContentContext","useFilePickerApi","useAccount","useStore","useAppNavigation","useNavigationParent","deniesRepSurfaces","usePortalTenantContentClient","usePortalProduct","ShareablesCoreProvider","toggleFavorite","PORTAL_MYSITE_KEYS"],"sources":["../../../file-picker/core/src/query-keys.ts","../../../file-picker/core/src/types.ts","../../../file-picker/core/src/schemas/file-picker-config.ts","../../../file-picker/core/src/constants/filter-options.ts","../../../../node_modules/.pnpm/react-image-crop@11.0.10_react@19.2.4/node_modules/react-image-crop/dist/index.js","../../../file-picker/core/src/utils/image-crop.ts","../../../file-picker/core/src/utils/dam-asset.ts","../../../file-picker/core/src/utils/dam-url.ts","../../../file-picker/core/src/utils/filename-sanitizer.ts","../../../shareables/ui/src/context.tsx","../../../../node_modules/.pnpm/dompurify@3.3.3/node_modules/dompurify/dist/purify.es.mjs","../../../../node_modules/.pnpm/tldts@7.0.23/node_modules/tldts/dist/cjs/index.js","../../../../node_modules/.pnpm/tough-cookie@6.0.0/node_modules/tough-cookie/dist/index.cjs","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/platform.native.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/platform.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/_utils.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/latin1.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/utf16.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/utf16.node.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/assert.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/array.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/utf8.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/utf8.node.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/single-byte.encodings.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/single-byte.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/single-byte.node.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/encoding.labels.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/encoding.api.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/encoding.util.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/encoding.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/encoding-lite.js","../../../../node_modules/.pnpm/html-encoding-sniffer@6.0.0_@noble+hashes@1.8.0/node_modules/html-encoding-sniffer/lib/html-encoding-sniffer.js","../../../../node_modules/.pnpm/webidl-conversions@8.0.1/node_modules/webidl-conversions/lib/index.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/utils.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/base64.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/base64.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/multi-byte.encodings.json","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/multi-byte.encodings.cjs","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/multi-byte.table.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/multi-byte.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/multi-byte.node.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/encoding.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/fallback/percent.js","../../../../node_modules/.pnpm/@exodus+bytes@1.14.1_@noble+hashes@1.8.0/node_modules/@exodus/bytes/whatwg.js","../../../../node_modules/.pnpm/punycode@2.3.1/node_modules/punycode/punycode.js","../../../../node_modules/.pnpm/tr46@6.0.0/node_modules/tr46/lib/regexes.js","../../../../node_modules/.pnpm/tr46@6.0.0/node_modules/tr46/lib/mappingTable.json","../../../../node_modules/.pnpm/tr46@6.0.0/node_modules/tr46/lib/statusMapping.js","../../../../node_modules/.pnpm/tr46@6.0.0/node_modules/tr46/index.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/infra.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/encoding.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/percent-encoding.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/url-state-machine.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/urlencoded.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/Function.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/URLSearchParams-impl.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/URLSearchParams.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/URL-impl.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/lib/URL.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/webidl2js-wrapper.js","../../../../node_modules/.pnpm/whatwg-url@16.0.1_@noble+hashes@1.8.0/node_modules/whatwg-url/index.js","../../../../node_modules/.pnpm/whatwg-mimetype@5.0.0/node_modules/whatwg-mimetype/lib/utils.js","../../../../node_modules/.pnpm/whatwg-mimetype@5.0.0/node_modules/whatwg-mimetype/lib/mime-type-parameters.js","../../../../node_modules/.pnpm/whatwg-mimetype@5.0.0/node_modules/whatwg-mimetype/lib/parser.js","../../../../node_modules/.pnpm/whatwg-mimetype@5.0.0/node_modules/whatwg-mimetype/lib/serializer.js","../../../../node_modules/.pnpm/whatwg-mimetype@5.0.0/node_modules/whatwg-mimetype/lib/mime-type.js","../../../../node_modules/.pnpm/whatwg-mimetype@5.0.0/node_modules/whatwg-mimetype/lib/sniff.js","../../../../node_modules/.pnpm/whatwg-mimetype@5.0.0/node_modules/whatwg-mimetype/lib/index.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/symbols.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/util/timers.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/errors.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/constants.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/tree.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/util.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/util/stats.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/diagnostics.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/request.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/wrap-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/dispatcher.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/unwrap-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/dispatcher-base.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/connect.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/llhttp/utils.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/llhttp/constants.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/llhttp/llhttp-wasm.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/constants.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/global.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/encoding/index.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/infra/index.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/data-url.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/util/runtime-features.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/webidl/index.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/util.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/formdata.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/formdata-parser.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/util/promise.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/body.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/client-h1.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/client-h2.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/client.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/fixed-queue.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/pool-base.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/pool.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/balanced-pool.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/round-robin-pool.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/agent.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/socks5-utils.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/core/socks5-client.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/proxy-agent.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/retry-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/retry-agent.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/dispatcher/h2c-client.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/readable.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/api-request.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/abort-signal.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/api-stream.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/api-pipeline.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/api-upgrade.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/api-connect.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/api/index.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-errors.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-symbols.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-utils.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-interceptor.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-client.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-call-history.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-pool.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/mock-agent.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/snapshot-utils.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/snapshot-recorder.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/mock/snapshot-agent.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/global.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/decorator-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/redirect-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/redirect.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/response-error.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/retry.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/dump.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/dns.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/util/cache.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/util/date.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/cache-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/cache/memory-cache-store.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/cache-revalidation-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/cache.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/decompress.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/handler/deduplication-handler.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/interceptor/deduplicate.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/cache/sqlite-cache-store.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/headers.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/response.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/request.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/fetch/index.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/cache/util.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/cache/cache.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/cache/cachestorage.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/cookies/constants.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/cookies/util.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/cookies/parse.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/cookies/index.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/events.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/constants.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/util.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/frame.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/connection.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/permessage-deflate.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/receiver.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/sender.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/websocket.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/stream/websocketerror.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/websocket/stream/websocketstream.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/eventsource/util.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/eventsource/eventsource-stream.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/lib/web/eventsource/eventsource.js","../../../../node_modules/.pnpm/undici@7.28.0/node_modules/undici/index.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/utils.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/virtual-console.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/not-implemented.js","../../../../node_modules/.pnpm/@csstools+css-tokenizer@4.0.0/node_modules/@csstools/css-tokenizer/dist/index.mjs","../../../../node_modules/.pnpm/@csstools+css-parser-algorithms@4.0.0_@csstools+css-tokenizer@4.0.0/node_modules/@csstools/css-parser-algorithms/dist/index.mjs","../../../../node_modules/.pnpm/@csstools+css-calc@3.1.1_@csstools+css-parser-algorithms@4.0.0_@csstools+css-tokenizer@_e728870d3b76a40220e2f2b00c51483a/node_modules/@csstools/css-calc/dist/index.mjs","../../../../node_modules/.pnpm/lru-cache@11.2.6/node_modules/lru-cache/dist/commonjs/index.min.js","../../../../node_modules/.pnpm/@csstools+color-helpers@6.0.1/node_modules/@csstools/color-helpers/dist/index.mjs","../../../../node_modules/.pnpm/@csstools+css-color-parser@4.0.1_@csstools+css-parser-algorithms@4.0.0_@csstools+css-to_f33f4d3d4c7dd5361da31c3109709b84/node_modules/@csstools/css-color-parser/dist/index.mjs","../../../../node_modules/.pnpm/@asamuzakjp+css-color@4.1.2/node_modules/@asamuzakjp/css-color/dist/cjs/index.cjs","../../../../node_modules/.pnpm/@csstools+css-syntax-patches-for-csstree@1.0.27/node_modules/@csstools/css-syntax-patches-for-csstree/dist/index.json","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/types.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/utils.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/names.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/tokenizer/index.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/utils/List.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/utils/create-custom-error.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/parser/SyntaxError.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/parser/sequence.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/parser/create.cjs","../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/lib/base64.js","../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/lib/base64-vlq.js","../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/lib/util.js","../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/lib/array-set.js","../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/lib/mapping-list.js","../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/lib/source-map-generator.js","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/generator/sourceMap.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/generator/token-before.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/generator/create.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/convertor/create.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/walker/create.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/definition-syntax/generate.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/error.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/utils/names.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/generic-const.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/generic-urange.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/generic.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/units.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/definition-syntax/scanner.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/definition-syntax/parse.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/match-graph.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/match.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/trace.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/search.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/structure.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/definition-syntax/walk.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/lexer/Lexer.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/config/mix.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/create.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/data/patch.json","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/data-patch.cjs","../../../../node_modules/.pnpm/mdn-data@2.12.2/node_modules/mdn-data/css/at-rules.json","../../../../node_modules/.pnpm/mdn-data@2.12.2/node_modules/mdn-data/css/properties.json","../../../../node_modules/.pnpm/mdn-data@2.12.2/node_modules/mdn-data/css/syntaxes.json","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/data.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Atrule.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Block.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Brackets.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/CDC.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/CDO.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Combinator.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Comment.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Condition.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Declaration.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Dimension.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Feature.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Function.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Hash.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Identifier.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Layer.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/LayerList.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Nth.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Number.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Operator.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Percentage.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Ratio.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Raw.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Rule.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Scope.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Selector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/utils/string.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/String.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/utils/url.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Url.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/Value.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/index.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/config/lexer.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/scope/default.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/scope/selector.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/function/expression.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/function/var.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/scope/value.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/scope/index.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/container.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/import.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/layer.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/media.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/nest.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/page.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/scope.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/supports.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/atrule/index.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/pseudo/lang.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/pseudo/index.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/node/index-parse.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/config/parser.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/config/walker.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/syntax/index.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/package.json","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/version.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/definition-syntax/index.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/utils/clone.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/utils/ident.cjs","../../../../node_modules/.pnpm/css-tree@3.1.0/node_modules/css-tree/cjs/index.cjs","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/generated/propertyDefinitions.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/utils/strings.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/parsers.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundImage.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundPosition.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundSize.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundRepeat.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundOrigin.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundClip.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundAttachment.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/backgroundColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/background.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderTopWidth.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderRightWidth.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderBottomWidth.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderLeftWidth.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderWidth.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderTopStyle.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderRightStyle.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderBottomStyle.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderLeftStyle.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderStyle.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderTopColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderRightColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderBottomColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderLeftColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderTop.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderRight.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderBottom.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderLeft.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/border.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderBlockEndColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderBlockStartColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderCollapse.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderInlineEndColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderInlineStartColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/borderSpacing.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/bottom.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/clear.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/clip.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/color.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/display.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/flexGrow.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/flexShrink.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/flexBasis.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/flex.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/float.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/floodColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/fontStyle.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/fontVariant.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/fontWeight.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/fontSize.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/lineHeight.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/fontFamily.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/font.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/height.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/left.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/lightingColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/marginTop.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/marginRight.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/marginBottom.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/marginLeft.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/margin.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/opacity.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/outlineColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/paddingTop.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/paddingRight.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/paddingBottom.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/paddingLeft.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/padding.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/right.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/stopColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/textEmphasisColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/top.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/webkitTextFillColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/properties/width.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/utils/propertyDescriptors.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/generated/propertyDescriptors.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/normalize.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/CSSStyleDeclaration.js","../../../../node_modules/.pnpm/cssstyle@6.0.1/node_modules/cssstyle/lib/index.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSOM.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/errorUtils.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/regexPatterns.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/MediaList.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/StyleSheet.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSRuleList.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSGroupingRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSStyleRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSStyleSheet.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSNestedDeclarations.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSImportRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSNamespaceRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSConditionRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSMediaRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSCounterStyleRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSPropertyRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSContainerRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSSupportsRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSFontFaceRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSHostRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSStartingStyleRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSKeyframeRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSKeyframesRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSValue.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSValueExpression.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/MatcherList.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSDocumentRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSScopeRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSLayerBlockRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSLayerStatementRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSPageRule.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/cssstyleTryCatchBlock.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/parse.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/CSSStyleDeclaration.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/clone.js","../../../../node_modules/.pnpm/@acemir+cssom@0.9.31/node_modules/@acemir/cssom/lib/index.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/level2/style.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/level3/xpath.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/webidl/DOMException-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMException.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/EventListener.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/EventHandlerNonNull.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/EventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ErrorEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/Event-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Event.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/ErrorEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ErrorEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/BeforeUnloadEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/BeforeUnloadEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/OnBeforeUnloadEventHandlerNonNull.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/OnErrorEventHandlerNonNull.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/events.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/create-event-accessor.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/is-window.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/node-type.js","../../../../node_modules/.pnpm/symbol-tree@3.2.4/node_modules/symbol-tree/lib/SymbolTreeNode.js","../../../../node_modules/.pnpm/symbol-tree@3.2.4/node_modules/symbol-tree/lib/TreePosition.js","../../../../node_modules/.pnpm/symbol-tree@3.2.4/node_modules/symbol-tree/lib/TreeIterator.js","../../../../node_modules/.pnpm/symbol-tree@3.2.4/node_modules/symbol-tree/lib/SymbolTree.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/node.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/NodeList-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/NodeList.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationRecord-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MutationRecord.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/shadow-dom.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/UIEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/EventModifierInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MouseEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/UIEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/UIEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/utils.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/EventModifierMixin-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/MouseEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MouseEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/aborting/AbortSignal-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/AbortSignal.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/EventListenerOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/AddEventListenerOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/EventTarget.js","../../../../node_modules/.pnpm/is-potential-custom-element-name@1.0.1/node_modules/is-potential-custom-element-name/index.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/custom-elements.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/GetRootNodeOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/node-document-position.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/strings.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/attributes.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js","../../../../node_modules/.pnpm/xml-name-validator@5.0.0/node_modules/xml-name-validator/lib/xml-name-validator.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/create-element.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLCollection.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/node.js","../../../../node_modules/.pnpm/@bramus+specificity@2.4.2/node_modules/@bramus/specificity/dist/index.cjs","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/colors.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/system-colors.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/style-rules.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Node.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/attributes/Attr-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Attr.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/attributes/NamedNodeMap-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/NamedNodeMap.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ShadowRootMode.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ShadowRootInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window-properties.js","../../../../node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xml/1.0/ed5.js","../../../../node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xml/1.1/ed2.js","../../../../node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xmlns/1.0/ed3.js","../../../../node_modules/.pnpm/saxes@6.0.0/node_modules/saxes/saxes.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/NonElementParentNode-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/DocumentFragment-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DocumentFragment.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/DocumentType-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DocumentType.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/NonDocumentTypeChildNode-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/CharacterData-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CharacterData.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/Slotable-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/Text-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Text.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/CDATASection-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CDATASection.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/Comment-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Comment.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/ProcessingInstruction-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ProcessingInstruction.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/parser/xml.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/common/unicode.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/common/error-codes.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/tokenizer/preprocessor.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/common/token.js","../../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/generated/decode-data-html.js","../../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/decode-codepoint.js","../../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/decode.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/common/html.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/tokenizer/index.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/parser/open-element-stack.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/parser/formatting-element-list.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/tree-adapters/default.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/common/doctype.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/common/foreign-content.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/parser/index.js","../../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/escape.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/serializer/index.js","../../../../node_modules/.pnpm/parse5@8.0.0/node_modules/parse5/dist/index.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/parser/html.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/parser/index.js","../../../../node_modules/.pnpm/w3c-xmlserializer@5.0.0/node_modules/w3c-xmlserializer/lib/constants.js","../../../../node_modules/.pnpm/w3c-xmlserializer@5.0.0/node_modules/w3c-xmlserializer/lib/attributes.js","../../../../node_modules/.pnpm/w3c-xmlserializer@5.0.0/node_modules/w3c-xmlserializer/lib/serialize.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/domparsing/InnerHTML-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMTokenList.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ShadowRoot.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Element.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ElementCreationOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/NodeFilter.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/html-constructor.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PointerEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/PointerEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PointerEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/traversal.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/custom-elements/ElementInternals-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ElementInternals.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/ElementCSSInlineStyle-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/event-sets.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/GlobalEventHandlers-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/details.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/FocusEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/FocusEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/FocusEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/focusing.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/DOMStringMap-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMStringMap.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLElement.js","../../../../node_modules/.pnpm/@asamuzakjp+nwsapi@2.3.9/node_modules/@asamuzakjp/nwsapi/src/nwsapi.js","../../../../node_modules/.pnpm/bidi-js@1.0.3/node_modules/bidi-js/dist/bidi.js","../../../../node_modules/.pnpm/@asamuzakjp+dom-selector@6.8.1/node_modules/@asamuzakjp/dom-selector/dist/cjs/index.cjs","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/cssom/StyleSheetList-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/StyleSheetList.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/text.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window/History-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/History.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/encoding.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window/navigation.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window/Location-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Location.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/iterable-weak-set.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/traversal/helpers.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/traversal/TreeWalker-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TreeWalker.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/traversal/NodeIterator-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/NodeIterator.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/range/AbstractRange-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/AbstractRange.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/range/boundary-point.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/range/Range-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Range.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CompositionEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/CompositionEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CompositionEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CustomEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/CustomEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CustomEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceMotionEventAccelerationInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceMotionEventRotationRateInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceMotionEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/deviceorientation/DeviceMotionEventAcceleration-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/deviceorientation/DeviceMotionEventRotationRate-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/DeviceMotionEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceMotionEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceOrientationEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/DeviceOrientationEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceOrientationEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HashChangeEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/HashChangeEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HashChangeEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/KeyboardEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/KeyboardEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/KeyboardEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MessageEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/MessageEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MessageEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/webstorage/Storage-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Storage.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/StorageEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/StorageEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/StorageEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TouchEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/TouchEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TouchEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/request-manager.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/async-resource-queue.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js","../../../../node_modules/.pnpm/data-urls@7.0.0_@noble+hashes@1.8.0/node_modules/data-urls/lib/utils.js","../../../../node_modules/.pnpm/data-urls@7.0.0_@noble+hashes@1.8.0/node_modules/data-urls/lib/parser.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/stream-handler.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/package.json","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/jsdom-dispatcher.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/by-id-cache.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Document.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/XMLDocument-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/XMLDocument.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/documents.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/DOMImplementation-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMImplementation.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/RadioNodeList-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/RadioNodeList.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLOptionElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptGroupElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLOptGroupElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLOptionsCollection.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLHeadElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTitleElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTitleElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBaseElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLBaseElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLinkElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLLinkElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMetaElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLMetaElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLStyleElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/WindowEventHandlers-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBodyElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLBodyElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadingElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLHeadingElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParagraphElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLParagraphElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHRElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLHRElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPreElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLPreElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUListElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLUListElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOListElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLOListElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLIElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLLIElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMenuElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLMenuElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDListElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLDListElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDivElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLDivElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHyperlinkElementUtils-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAnchorElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLAnchorElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAreaElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLAreaElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBRElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLBRElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/constraint-validation/ValidityState-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ValidityState.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/constraint-validation/DefaultConstraintValidation-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLButtonElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/BlobCallback.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLCanvasElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLDataElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataListElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLDataListElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLDetailsElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDialogElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLDialogElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDirectoryElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLDirectoryElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFieldSetElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLFieldSetElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFontElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLFontElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormControlsCollection-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLFormControlsCollection.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SubmitEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/SubmitEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SubmitEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLFormElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHtmlElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLHtmlElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLImageElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLImageElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SelectionMode.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/file-api/FileList-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/FileList.js","../../../../node_modules/.pnpm/decimal.js@10.6.0/node_modules/decimal.js/decimal.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/number-and-date-inputs.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLInputElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLInputElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLabelElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLLabelElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLegendElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLLegendElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMapElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLMapElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMarqueeElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLMarqueeElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TextTrackKind.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLMediaElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMeterElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLMeterElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLModElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLModElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOutputElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLOutputElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPictureElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLPictureElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLProgressElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLQuoteElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLQuoteElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLScriptElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSelectElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLSelectElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/AssignedNodesOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLSlotElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSourceElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLSourceElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSpanElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLSpanElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCaptionElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTableCaptionElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCellElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTableCellElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableColElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTableColElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTableSectionElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTableElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTimeElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTimeElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableRowElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTableRowElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTemplateElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTemplateElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTextAreaElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUnknownElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLUnknownElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLFrameElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameSetElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLFrameSetElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLIFrameElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLIFrameElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLEmbedElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLEmbedElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLObjectElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLObjectElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParamElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLParamElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLVideoElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLVideoElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAudioElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLAudioElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTrackElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/HTMLTrackElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedString-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGAnimatedString.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/svg/basic-types.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGListBase.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGStringList-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGStringList.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGTests-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGGraphicsElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGGraphicsElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGRect-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGRect.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedRect-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGAnimatedRect.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGPreserveAspectRatio-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGPreserveAspectRatio.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedPreserveAspectRatio-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGAnimatedPreserveAspectRatio.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/svg/SVGNumber-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGNumber.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGSVGElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGSVGElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGGElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGGElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGDefsElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGDefsElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGDescElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGDescElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGMetadataElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGMetadataElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGTitleElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGTitleElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGSymbolElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGSymbolElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/nodes/SVGSwitchElement-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SVGSwitchElement.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/EndingType.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/BlobPropertyBag.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/binary-data.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/file-api/Blob-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Blob.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/BlobEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/BlobEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/BlobEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CloseEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/CloseEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CloseEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PageTransitionEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/PageTransitionEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PageTransitionEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PopStateEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/PopStateEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PopStateEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PromiseRejectionEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/PromiseRejectionEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PromiseRejectionEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ProgressEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/ProgressEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ProgressEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TransitionEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/TransitionEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TransitionEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/InputEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/InputEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/InputEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/WheelEventInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/events/WheelEvent-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/WheelEvent.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window/BarProp-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/BarProp.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window/External-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/External.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window/Screen-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Screen.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/hr-time/Performance-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Performance.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/PluginArray-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/PluginArray.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/MimeTypeArray-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MimeTypeArray.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorID-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorLanguage-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorOnLine-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorCookies-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorPlugins-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorConcurrentHardware-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/Navigator-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Navigator.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/crypto/Crypto-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Crypto.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/Plugin-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Plugin.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/navigator/MimeType-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MimeType.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/FileReader.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/FilePropertyBag.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/file-api/File-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/File.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/SupportedType.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMParser.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/domparsing/XMLSerializer-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/XMLSerializer.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Function.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/FormData.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/XMLHttpRequestEventTarget.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestUpload-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/XMLHttpRequestUpload.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/XMLHttpRequestResponseType.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/fetch/header-utils.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/fetch/header-list.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/fetch/header-types.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/json.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/xhr/multipart-form-data.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/XMLHttpRequest.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/BinaryType.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/WebSocket.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/StaticRangeInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/range/StaticRange-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/StaticRange.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/selection/Selection-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Selection.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CustomElementConstructor.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/ElementDefinitionOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/custom-elements/CustomElementRegistry-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/CustomElementRegistry.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MutationCallback.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MutationObserverInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationObserver-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/MutationObserver.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/Headers.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/aborting/AbortController-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/AbortController.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceMotionEventAcceleration.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DeviceMotionEventRotationRate.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMRectInit.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/geometry/DOMRectReadOnly-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMRectReadOnly.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/geometry/DOMRect-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/DOMRect.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TextDecoderOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TextDecodeOptions.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/encoding/TextDecoder-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TextDecoder.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/encoding/TextEncoder-impl.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/idl/TextEncoder.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/interfaces.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/helpers/page-transition-event.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/living/window/SessionHistory.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/generated/js-globals.json","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/Window.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/decompress-interceptor.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/jsdom/browser/resources/request-interceptor.js","../../../../node_modules/.pnpm/jsdom@28.1.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/jsdom/lib/api.js","../../../../node_modules/.pnpm/isomorphic-dompurify@3.0.0_@noble+hashes@1.8.0_supports-color@10.2.2/node_modules/isomorphic-dompurify/dist/index.mjs","../../../shareables/ui/src/utils/strip-tags.ts","../../../shareables/ui/src/utils/social-sharing.ts","../../../shareables/ui/src/utils/os-detection.ts","../../../products/api-client/src/namespaces/products.ts","../../../shareables/core/src/translation-api-context.ts","../../../shareables/ui/src/components/MediaShare/ShareItemCard.tsx","../../../shareables/ui/src/components/MediaShare/products/ShareProductCard.tsx","../../../shareables/ui/src/components/shared/ShareableListLayout.tsx","../../../shareables/ui/src/components/shared/ShareableListRow.tsx","../../../shareables/ui/src/components/shared/ViewModeToggle.tsx","../../../shareables/ui/src/hooks/use-infinite-list-sentinel.ts","../../../shareables/ui/src/components/screens/ProductsScreen.tsx","../../../shareables/ui/src/components/SharePage/SharePageImageDisplay.tsx","../../../shareables/ui/src/components/QrCodeDisplay.tsx","../../../shareables/ui/src/components/icons/social-icons.tsx","../../../shareables/ui/src/components/SharePage/ShareLinkSection.tsx","../../../shareables/ui/src/utils/download-file.ts","../../../shareables/ui/src/components/SharePage/AssetActions.tsx","../../../shareables/ui/src/components/ShareablesModal/MarketingAssetsGrid.tsx","../../../shareables/ui/src/components/shared/ShareableDetailLayout.tsx","../../../shareables/ui/src/components/screens/ProductDetailScreen.tsx","../../../shareables/ui/src/components/MediaShare/ProductSharablesCarousel.tsx","../../../shareables/ui/src/components/media/AddToPlaylistDialog.tsx","../../../shareables/ui/src/components/media/MediaRowActionsMenu.tsx","../../../shareables/ui/src/components/OwnerFilterTabs.tsx","../../../shareables/ui/src/components/shared/ShareableFilterBarLayout.tsx","../../../shareables/ui/src/components/screens/MediaListingScreen.tsx","../../../shareables/ui/src/components/SharePage/TaggedProductsList.tsx","../../../shareables/ui/src/components/screens/MediaDetailScreen.tsx","../../../file-picker/ui/src/context/FilePickerApiContext.tsx","../../../file-picker/ui/src/context/FilePickerContext.tsx","../../../file-picker/ui/src/utils/brand-icons.tsx","../../../file-picker/ui/src/hooks/use-debounced-search.ts","../../../file-picker/ui/src/hooks/use-dam-library.ts","../../../file-picker/ui/src/hooks/use-is-mobile.ts","../../../file-picker/ui/src/components/AddFolderModal.tsx","../../../file-picker/ui/src/components/AssetActions.tsx","../../../file-picker/ui/src/utils/icons.ts","../../../file-picker/ui/src/components/DamLibraryAsset/AssetThumbnail.tsx","../../../file-picker/ui/src/components/DamLibraryAsset/SelectionIndexBadge.tsx","../../../file-picker/ui/src/components/DamLibraryAsset/AssetActionsMenu.tsx","../../../file-picker/ui/src/components/LibraryAssetGrid.tsx","../../../file-picker/ui/src/components/DamLibrary.tsx","../../../file-picker/ui/src/components/FilePickerSidebar.tsx","../../../file-picker/ui/src/components/FilePickerFiltersPanel.tsx","../../../file-picker/ui/src/components/FilePickerHeader.tsx","../../../file-picker/ui/src/components/MediaTab.tsx","../../../file-picker/ui/src/components/ContentBrowserTab.tsx","../../../file-picker/ui/src/components/PagesTab.tsx","../../../file-picker/ui/src/components/ProductsTab.tsx","../../../file-picker/ui/src/components/EnrollmentPacksTab.tsx","../../../file-picker/ui/src/hooks/use-unsplash-picker.ts","../../../file-picker/ui/src/components/UnsplashPicker.tsx","../../../file-picker/ui/src/hooks/use-url-upload.ts","../../../file-picker/ui/src/components/UrlUpload.tsx","../../../file-picker/ui/src/hooks/use-computer-upload.ts","../../../file-picker/ui/src/components/ImageCropModal.tsx","../../../file-picker/ui/src/components/ComputerUpload.tsx","../../../file-picker/ui/src/components/FilePickerContent.tsx","../../../file-picker/ui/src/components/SelectionPanel.tsx","../../../file-picker/ui/src/components/FilePicker.tsx","../../../shareables/ui/src/hooks/use-thumbnail-meta.ts","../../../shareables/ui/src/components/playlists/RichTextEditor.tsx","../../../shareables/ui/src/components/media/MediaProductTagging.tsx","../../../shareables/ui/src/components/media/CtaModal.tsx","../../../shareables/ui/src/components/media/VideoThumbnailSelector.tsx","../../../shareables/ui/src/components/screens/MediaEditScreen.tsx","../../../shareables/ui/src/components/screens/MediaCreateScreen.tsx","../../../shareables/ui/src/components/playlists/PlaylistCard.tsx","../../../shareables/ui/src/components/playlists/BulkSelectionBar.tsx","../../../shareables/ui/src/components/screens/PlaylistsListingScreen.tsx","../../../shareables/ui/src/constants.ts","../../../shareables/ui/src/components/SharePage/PlaylistItemsList.tsx","../../../shareables/ui/src/components/screens/PlaylistDetailScreen.tsx","../../../shareables/ui/src/components/playlists/form/PlaylistFormProvider.tsx","../../../shareables/ui/src/components/playlists/form/PlaylistItemsContext.tsx","../../../shareables/ui/src/components/playlists/form/PlaylistFormHeader.tsx","../../../shareables/ui/src/components/playlists/form/PlaylistFormDetails.tsx","../../../shareables/ui/src/components/playlists/form/SortableRow.tsx","../../../shareables/ui/src/components/playlists/form/SortableTable.tsx","../../../shareables/ui/src/components/playlists/form/PlaylistItemsSection.tsx","../../../shareables/ui/src/components/playlists/form/PlaylistOpenGraphPreview.tsx","../../../shareables/ui/src/components/screens/PlaylistCreateScreen.tsx","../../../shareables/ui/src/components/screens/FilesListingScreen.tsx","../../../shareables/ui/src/components/screens/PagesListingScreen.tsx","../../../shareables/ui/src/components/screens/PageDetailScreen.tsx","../../../shareables/ui/src/components/ShareablesApp.tsx","../src/providers/ShareablesTranslationBridge.tsx","../src/screens/shareables-source-context.ts","../src/screens/ShareablesScreen.tsx"],"sourcesContent":["export const damQueryKeys: {\n  all: readonly [\"dam\"];\n  assets: () => readonly [\"dam\", \"assets\"];\n  query: (params: unknown) => readonly [\"dam\", \"query\", unknown];\n} = {\n  all: [\"dam\"] as const,\n  assets: (): readonly [\"dam\", \"assets\"] => [\"dam\", \"assets\"] as const,\n  query: (params: unknown): readonly [\"dam\", \"query\", unknown] =>\n    [\"dam\", \"query\", params] as const,\n};\n","export interface FilePickerConfig {\n  accept?: string[];\n  maxFiles?: number;\n  maxSize?: number;\n  showProgress?: boolean;\n  showVariants?: boolean;\n  fileTypeFilter?: string[];\n  allowedMethods?: PickerMethod[];\n  /**\n   * When true, selections from all method tabs accumulate into a single list\n   * (deduped by asset_code) instead of being cleared on tab switch. Used by\n   * the playlist editor to let users pick across multiple content types in\n   * a single session. Defaults to false to preserve existing per-method UX.\n   */\n  unifiedSelection?: boolean;\n}\n\nexport interface DamAsset {\n  id: number; // Required numeric ID from API\n  asset_code: string;\n  name: string;\n  category: string;\n  variants: DamVariant[];\n  default_variant_url?: string;\n  created_at?: string;\n}\n\nexport interface DamVariant {\n  id: string;\n  url: string;\n  file_name: string;\n  mime_type: string;\n  metadata: Record<string, unknown>;\n  ready: boolean;\n  tags: string[];\n}\n\nexport interface DamAssetPath {\n  id: number;\n  path: string;\n  canonical: boolean;\n}\n\nexport interface DamTree {\n  [key: string]: DamTree | DamAsset;\n}\n\nexport interface FilePickerResult {\n  asset_id: number; // Numeric ID required by API\n  asset_code: string;\n  file_path: string;\n  file_url: string;\n  thumbnail_url?: string;\n  description?: string;\n  metadata: {\n    file_name: string;\n    mime_type: string;\n    file_size?: number;\n    dimensions?: {\n      width: number;\n      height: number;\n    };\n  };\n  upload_status: \"uploading\" | \"ready\" | \"error\";\n  variant_id?: string;\n}\n\nexport interface UploadProgress {\n  file_name: string;\n  progress: number;\n  status: \"uploading\" | \"processing\" | \"ready\" | \"error\";\n  error?: string;\n}\n\n/**\n * Discriminator for the picker's tabs. The original `UploadMethod` name\n * was a misnomer — only `upload`/`computer`/`url`/`unsplash`/cloud-storage\n * represent file uploads; the rest (`dam`/`media`/`pages`/`products`/\n * `enrollment_packs`) are existing-content browse tabs. `PickerMethod`\n * captures both flavors honestly without forcing a structural split.\n */\nexport type PickerMethod =\n  | \"upload\"\n  | \"computer\"\n  | \"dam\"\n  | \"media\"\n  | \"pages\"\n  | \"products\"\n  | \"enrollment_packs\"\n  | \"url\"\n  | \"unsplash\"\n  | \"google-drive\"\n  | \"instagram\"\n  | \"facebook\"\n  | \"tiktok\"\n  | \"dropbox\";\n\n/**\n * Whether each method is worth offering in a switcher. Keyed on\n * {@link PickerMethod} rather than listed, so adding a variant to the union is\n * a compile error here until someone decides which way it goes.\n *\n * `computer` is false because it renders the same tab as `upload` and nothing\n * builds a `computer` entry to switch to. The cloud-storage and social sources\n * are false because their tab bodies are still placeholders.\n */\nconst PICKER_METHOD_IMPLEMENTED: Record<PickerMethod, boolean> = {\n  dam: true,\n  media: true,\n  pages: true,\n  products: true,\n  enrollment_packs: true,\n  upload: true,\n  url: true,\n  unsplash: true,\n  computer: false,\n  \"google-drive\": false,\n  instagram: false,\n  facebook: false,\n  tiktok: false,\n  dropbox: false,\n};\n\n/**\n * Methods the picker's switchers offer, derived from\n * {@link PICKER_METHOD_IMPLEMENTED} so the two cannot drift.\n */\nexport const IMPLEMENTED_PICKER_METHODS: readonly PickerMethod[] = (\n  Object.entries(PICKER_METHOD_IMPLEMENTED) as Array<[PickerMethod, boolean]>\n)\n  .filter(([, implemented]) => implemented)\n  .map(([method]) => method);\n\n/** @deprecated Renamed to {@link PickerMethod}. */\nexport type UploadMethod = PickerMethod;\n\n// Image cropping types\nexport interface CropArea {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n}\n\nexport interface CropSettings {\n  aspect?: number;\n  unit?: \"px\" | \"%\";\n  x?: number;\n  y?: number;\n  width?: number;\n  height?: number;\n}\n\nexport interface ImageCropModalProps {\n  isOpen: boolean;\n  onClose: () => void;\n  onCrop: (croppedFile: File) => void;\n  imageFile: File;\n  aspectRatio?: number;\n  minWidth?: number;\n  minHeight?: number;\n  maxWidth?: number;\n  maxHeight?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Picker data-source contracts (used by the non-file content tabs:\n// pages, products, enrollment_packs). Hosts implement these; tabs consume.\n// ---------------------------------------------------------------------------\n\nexport interface PickerListParams {\n  search?: string;\n  cursor?: string | null;\n  limit?: number;\n}\n\nexport interface PickerListResult<T> {\n  items: T[];\n  nextCursor: string | null;\n}\n\nexport interface PickerPageItem {\n  id: number;\n  title: string;\n  image_url?: string | null;\n}\n\nexport interface PickerProductItem {\n  id: number;\n  name: string;\n  image_url?: string | null;\n  price?: string | null;\n}\n\nexport interface PickerEnrollmentPackItem {\n  id: number;\n  title: string;\n  image_url?: string | null;\n}\n\nexport interface PickerSource<T> {\n  list: (params: PickerListParams) => Promise<PickerListResult<T>>;\n  /**\n   * Stable identity for this source's backing dataset (for example, a locale\n   * or adapter version). Content tabs include it in query/cache keys and reset\n   * accumulated pagination when it changes.\n   */\n  cacheKey?: string;\n  /**\n   * When false, the picker tab hides its search input — the underlying\n   * endpoint doesn't accept a title/search filter, so typing in the box\n   * would round-trip to the server and return the same results, giving\n   * users false feedback. Defaults to true.\n   */\n  supportsSearch?: boolean;\n}\n","import { z } from \"zod\";\n\nconst pickerMethodLiterals = [\n  \"upload\",\n  \"computer\",\n  \"dam\",\n  \"media\",\n  \"pages\",\n  \"products\",\n  \"enrollment_packs\",\n  \"url\",\n  \"unsplash\",\n  \"google-drive\",\n  \"instagram\",\n  \"facebook\",\n  \"tiktok\",\n  \"dropbox\",\n] as const;\n\ntype PickerMethodLiteral = (typeof pickerMethodLiterals)[number];\n\ntype FilePickerConfigInput = {\n  accept?: string[];\n  maxFiles?: number;\n  maxSize?: number;\n  showProgress?: boolean;\n  showVariants?: boolean;\n  fileTypeFilter?: string[];\n  allowedMethods?: PickerMethodLiteral[];\n  unifiedSelection?: boolean;\n};\n\ntype FilePickerConfigOutput = {\n  accept?: string[];\n  maxFiles: number;\n  maxSize?: number;\n  showProgress: boolean;\n  showVariants: boolean;\n  fileTypeFilter?: string[];\n  allowedMethods?: PickerMethodLiteral[];\n  unifiedSelection: boolean;\n};\n\nexport const filePickerConfigSchema: z.ZodType<FilePickerConfigOutput> =\n  z.object({\n    accept: z.array(z.string()).optional(),\n    maxFiles: z.number().min(1).optional().default(1),\n    maxSize: z.number().positive().optional(),\n    showProgress: z.boolean().optional().default(true),\n    showVariants: z.boolean().optional().default(false),\n    fileTypeFilter: z.array(z.string()).optional(),\n    allowedMethods: z.array(z.enum(pickerMethodLiterals)).optional(),\n    unifiedSelection: z.boolean().optional().default(false),\n  });\n\nexport type { FilePickerConfigInput, FilePickerConfigOutput };\n","export const FILTER_VALUE_ALL = \"__all__\";\n\nexport const DAM_TYPE_FILTER_OPTIONS: { value: string; label: string }[] = [\n  { value: FILTER_VALUE_ALL, label: \"All types\" },\n  { value: \"images\", label: \"Image\" },\n  { value: \"videos\", label: \"Video\" },\n  { value: \"audio\", label: \"Audio\" },\n  { value: \"text\", label: \"Text\" },\n  { value: \"documents\", label: \"Document\" },\n  { value: \"other\", label: \"Others\" },\n];\n\nexport function getCategoryFromTypeFilter(value: string): string | undefined {\n  if (!value) return undefined;\n  return value;\n}\n\nexport const DATE_FILTER_OPTIONS: readonly { value: string; label: string }[] =\n  [\n    { value: FILTER_VALUE_ALL, label: \"Any time\" },\n    { value: \"24h\", label: \"Past 24 hours\" },\n    { value: \"7d\", label: \"Past 7 days\" },\n    { value: \"30d\", label: \"Past 30 days\" },\n    { value: \"90d\", label: \"Past 90 days\" },\n  ];\n\nexport const UPLOADED_BY_OPTIONS: readonly { value: string; label: string }[] =\n  [\n    { value: FILTER_VALUE_ALL, label: \"Anyone\" },\n    { value: \"me\", label: \"Me\" },\n  ];\n\nexport const USAGE_STATUS_OPTIONS: readonly {\n  value: string;\n  label: string;\n}[] = [\n  { value: FILTER_VALUE_ALL, label: \"Any\" },\n  { value: \"used\", label: \"Used\" },\n  { value: \"unused\", label: \"Unused\" },\n];\n\nexport const SOURCE_OPTIONS: readonly { value: string; label: string }[] = [\n  { value: FILTER_VALUE_ALL, label: \"Any\" },\n  { value: \"upload\", label: \"Upload\" },\n  { value: \"dam\", label: \"DAM\" },\n];\n\n// Need to add \"newest\" and \"oldest\" options later after we have the created_at field in the API\nexport type SortOptionId = \"name_asc\" | \"name_desc\";\n\nexport const SORT_OPTIONS: Array<{\n  id: SortOptionId;\n  label: string;\n  sortBy: string;\n  sortDirection: \"asc\" | \"desc\";\n}> = [\n  { id: \"name_asc\", label: \"Name A–Z\", sortBy: \"name\", sortDirection: \"asc\" },\n  { id: \"name_desc\", label: \"Name Z–A\", sortBy: \"name\", sortDirection: \"desc\" },\n];\n","var _ = Object.defineProperty;\nvar $ = (a, h, e) => h in a ? _(a, h, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[h] = e;\nvar m = (a, h, e) => $(a, typeof h != \"symbol\" ? h + \"\" : h, e);\nimport u, { PureComponent as K, createRef as P } from \"react\";\nconst E = {\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n  unit: \"px\"\n}, b = (a, h, e) => Math.min(Math.max(a, h), e), H = (...a) => a.filter((h) => h && typeof h == \"string\").join(\" \"), X = (a, h) => a === h || a.width === h.width && a.height === h.height && a.x === h.x && a.y === h.y && a.unit === h.unit;\nfunction B(a, h, e, n) {\n  const t = D(a, e, n);\n  return a.width && (t.height = t.width / h), a.height && (t.width = t.height * h), t.y + t.height > n && (t.height = n - t.y, t.width = t.height * h), t.x + t.width > e && (t.width = e - t.x, t.height = t.width / h), a.unit === \"%\" ? v(t, e, n) : t;\n}\nfunction L(a, h, e) {\n  const n = D(a, h, e);\n  return n.x = (h - n.width) / 2, n.y = (e - n.height) / 2, a.unit === \"%\" ? v(n, h, e) : n;\n}\nfunction v(a, h, e) {\n  return a.unit === \"%\" ? { ...E, ...a, unit: \"%\" } : {\n    unit: \"%\",\n    x: a.x ? a.x / h * 100 : 0,\n    y: a.y ? a.y / e * 100 : 0,\n    width: a.width ? a.width / h * 100 : 0,\n    height: a.height ? a.height / e * 100 : 0\n  };\n}\nfunction D(a, h, e) {\n  return a.unit ? a.unit === \"px\" ? { ...E, ...a, unit: \"px\" } : {\n    unit: \"px\",\n    x: a.x ? a.x * h / 100 : 0,\n    y: a.y ? a.y * e / 100 : 0,\n    width: a.width ? a.width * h / 100 : 0,\n    height: a.height ? a.height * e / 100 : 0\n  } : { ...E, ...a, unit: \"px\" };\n}\nfunction k(a, h, e, n, t, d = 0, r = 0, o = n, w = t) {\n  const i = { ...a };\n  let s = Math.min(d, n), c = Math.min(r, t), g = Math.min(o, n), p = Math.min(w, t);\n  h && (h > 1 ? (s = r ? r * h : s, c = s / h, g = o * h) : (c = d ? d / h : c, s = c * h, p = w / h)), i.y < 0 && (i.height = Math.max(i.height + i.y, c), i.y = 0), i.x < 0 && (i.width = Math.max(i.width + i.x, s), i.x = 0);\n  const l = n - (i.x + i.width);\n  l < 0 && (i.x = Math.min(i.x, n - s), i.width += l);\n  const C = t - (i.y + i.height);\n  if (C < 0 && (i.y = Math.min(i.y, t - c), i.height += C), i.width < s && ((e === \"sw\" || e == \"nw\") && (i.x -= s - i.width), i.width = s), i.height < c && ((e === \"nw\" || e == \"ne\") && (i.y -= c - i.height), i.height = c), i.width > g && ((e === \"sw\" || e == \"nw\") && (i.x -= g - i.width), i.width = g), i.height > p && ((e === \"nw\" || e == \"ne\") && (i.y -= p - i.height), i.height = p), h) {\n    const y = i.width / i.height;\n    if (y < h) {\n      const f = Math.max(i.width / h, c);\n      (e === \"nw\" || e == \"ne\") && (i.y -= f - i.height), i.height = f;\n    } else if (y > h) {\n      const f = Math.max(i.height * h, s);\n      (e === \"sw\" || e == \"nw\") && (i.x -= f - i.width), i.width = f;\n    }\n  }\n  return i;\n}\nfunction I(a, h, e, n) {\n  const t = { ...a };\n  return h === \"ArrowLeft\" ? n === \"nw\" ? (t.x -= e, t.y -= e, t.width += e, t.height += e) : n === \"w\" ? (t.x -= e, t.width += e) : n === \"sw\" ? (t.x -= e, t.width += e, t.height += e) : n === \"ne\" ? (t.y += e, t.width -= e, t.height -= e) : n === \"e\" ? t.width -= e : n === \"se\" && (t.width -= e, t.height -= e) : h === \"ArrowRight\" && (n === \"nw\" ? (t.x += e, t.y += e, t.width -= e, t.height -= e) : n === \"w\" ? (t.x += e, t.width -= e) : n === \"sw\" ? (t.x += e, t.width -= e, t.height -= e) : n === \"ne\" ? (t.y -= e, t.width += e, t.height += e) : n === \"e\" ? t.width += e : n === \"se\" && (t.width += e, t.height += e)), h === \"ArrowUp\" ? n === \"nw\" ? (t.x -= e, t.y -= e, t.width += e, t.height += e) : n === \"n\" ? (t.y -= e, t.height += e) : n === \"ne\" ? (t.y -= e, t.width += e, t.height += e) : n === \"sw\" ? (t.x += e, t.width -= e, t.height -= e) : n === \"s\" ? t.height -= e : n === \"se\" && (t.width -= e, t.height -= e) : h === \"ArrowDown\" && (n === \"nw\" ? (t.x += e, t.y += e, t.width -= e, t.height -= e) : n === \"n\" ? (t.y += e, t.height -= e) : n === \"ne\" ? (t.y += e, t.width -= e, t.height -= e) : n === \"sw\" ? (t.x -= e, t.width += e, t.height += e) : n === \"s\" ? t.height += e : n === \"se\" && (t.width += e, t.height += e)), t;\n}\nconst M = { capture: !0, passive: !1 };\nlet N = 0;\nconst x = class x extends K {\n  constructor() {\n    super(...arguments);\n    m(this, \"docMoveBound\", !1);\n    m(this, \"mouseDownOnCrop\", !1);\n    m(this, \"dragStarted\", !1);\n    m(this, \"evData\", {\n      startClientX: 0,\n      startClientY: 0,\n      startCropX: 0,\n      startCropY: 0,\n      clientX: 0,\n      clientY: 0,\n      isResize: !0\n    });\n    m(this, \"componentRef\", P());\n    m(this, \"mediaRef\", P());\n    m(this, \"resizeObserver\");\n    m(this, \"initChangeCalled\", !1);\n    m(this, \"instanceId\", `rc-${N++}`);\n    m(this, \"state\", {\n      cropIsActive: !1,\n      newCropIsBeingDrawn: !1\n    });\n    m(this, \"onCropPointerDown\", (e) => {\n      const { crop: n, disabled: t } = this.props, d = this.getBox();\n      if (!n)\n        return;\n      const r = D(n, d.width, d.height);\n      if (t)\n        return;\n      e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n      const o = e.target.dataset.ord, w = !!o;\n      let i = e.clientX, s = e.clientY, c = r.x, g = r.y;\n      if (o) {\n        const p = e.clientX - d.x, l = e.clientY - d.y;\n        let C = 0, y = 0;\n        o === \"ne\" || o == \"e\" ? (C = p - (r.x + r.width), y = l - r.y, c = r.x, g = r.y + r.height) : o === \"se\" || o === \"s\" ? (C = p - (r.x + r.width), y = l - (r.y + r.height), c = r.x, g = r.y) : o === \"sw\" || o == \"w\" ? (C = p - r.x, y = l - (r.y + r.height), c = r.x + r.width, g = r.y) : (o === \"nw\" || o == \"n\") && (C = p - r.x, y = l - r.y, c = r.x + r.width, g = r.y + r.height), i = c + d.x + C, s = g + d.y + y;\n      }\n      this.evData = {\n        startClientX: i,\n        startClientY: s,\n        startCropX: c,\n        startCropY: g,\n        clientX: e.clientX,\n        clientY: e.clientY,\n        isResize: w,\n        ord: o\n      }, this.mouseDownOnCrop = !0, this.setState({ cropIsActive: !0 });\n    });\n    m(this, \"onComponentPointerDown\", (e) => {\n      const { crop: n, disabled: t, locked: d, keepSelection: r, onChange: o } = this.props, w = this.getBox();\n      if (t || d || r && n)\n        return;\n      e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\n      const i = e.clientX - w.x, s = e.clientY - w.y, c = {\n        unit: \"px\",\n        x: i,\n        y: s,\n        width: 0,\n        height: 0\n      };\n      this.evData = {\n        startClientX: e.clientX,\n        startClientY: e.clientY,\n        startCropX: i,\n        startCropY: s,\n        clientX: e.clientX,\n        clientY: e.clientY,\n        isResize: !0\n      }, this.mouseDownOnCrop = !0, o(D(c, w.width, w.height), v(c, w.width, w.height)), this.setState({ cropIsActive: !0, newCropIsBeingDrawn: !0 });\n    });\n    m(this, \"onDocPointerMove\", (e) => {\n      const { crop: n, disabled: t, onChange: d, onDragStart: r } = this.props, o = this.getBox();\n      if (t || !n || !this.mouseDownOnCrop)\n        return;\n      e.cancelable && e.preventDefault(), this.dragStarted || (this.dragStarted = !0, r && r(e));\n      const { evData: w } = this;\n      w.clientX = e.clientX, w.clientY = e.clientY;\n      let i;\n      w.isResize ? i = this.resizeCrop() : i = this.dragCrop(), X(n, i) || d(\n        D(i, o.width, o.height),\n        v(i, o.width, o.height)\n      );\n    });\n    m(this, \"onComponentKeyDown\", (e) => {\n      const { crop: n, disabled: t, onChange: d, onComplete: r } = this.props;\n      if (t)\n        return;\n      const o = e.key;\n      let w = !1;\n      if (!n)\n        return;\n      const i = this.getBox(), s = this.makePixelCrop(i), g = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? x.nudgeStepLarge : e.shiftKey ? x.nudgeStepMedium : x.nudgeStep;\n      if (o === \"ArrowLeft\" ? (s.x -= g, w = !0) : o === \"ArrowRight\" ? (s.x += g, w = !0) : o === \"ArrowUp\" ? (s.y -= g, w = !0) : o === \"ArrowDown\" && (s.y += g, w = !0), w) {\n        e.cancelable && e.preventDefault(), s.x = b(s.x, 0, i.width - s.width), s.y = b(s.y, 0, i.height - s.height);\n        const p = D(s, i.width, i.height), l = v(s, i.width, i.height);\n        d(p, l), r && r(p, l);\n      }\n    });\n    m(this, \"onHandlerKeyDown\", (e, n) => {\n      const {\n        aspect: t = 0,\n        crop: d,\n        disabled: r,\n        minWidth: o = 0,\n        minHeight: w = 0,\n        maxWidth: i,\n        maxHeight: s,\n        onChange: c,\n        onComplete: g\n      } = this.props, p = this.getBox();\n      if (r || !d)\n        return;\n      if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" || e.key === \"ArrowRight\")\n        e.stopPropagation(), e.preventDefault();\n      else\n        return;\n      const C = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? x.nudgeStepLarge : e.shiftKey ? x.nudgeStepMedium : x.nudgeStep, y = D(d, p.width, p.height), f = I(y, e.key, C, n), R = k(\n        f,\n        t,\n        n,\n        p.width,\n        p.height,\n        o,\n        w,\n        i,\n        s\n      );\n      if (!X(d, R)) {\n        const Y = v(R, p.width, p.height);\n        c(R, Y), g && g(R, Y);\n      }\n    });\n    m(this, \"onDocPointerDone\", (e) => {\n      const { crop: n, disabled: t, onComplete: d, onDragEnd: r } = this.props, o = this.getBox();\n      this.unbindDocMove(), !(t || !n) && this.mouseDownOnCrop && (this.mouseDownOnCrop = !1, this.dragStarted = !1, r && r(e), d && d(D(n, o.width, o.height), v(n, o.width, o.height)), this.setState({ cropIsActive: !1, newCropIsBeingDrawn: !1 }));\n    });\n    m(this, \"onDragFocus\", () => {\n      var e;\n      (e = this.componentRef.current) == null || e.scrollTo(0, 0);\n    });\n  }\n  get document() {\n    return document;\n  }\n  // We unfortunately get the bounding box every time as x+y changes\n  // due to scrolling.\n  getBox() {\n    const e = this.mediaRef.current;\n    if (!e)\n      return { x: 0, y: 0, width: 0, height: 0 };\n    const { x: n, y: t, width: d, height: r } = e.getBoundingClientRect();\n    return { x: n, y: t, width: d, height: r };\n  }\n  componentDidUpdate(e) {\n    const { crop: n, onComplete: t } = this.props;\n    if (t && !e.crop && n) {\n      const { width: d, height: r } = this.getBox();\n      d && r && t(D(n, d, r), v(n, d, r));\n    }\n  }\n  componentWillUnmount() {\n    this.resizeObserver && this.resizeObserver.disconnect(), this.unbindDocMove();\n  }\n  bindDocMove() {\n    this.docMoveBound || (this.document.addEventListener(\"pointermove\", this.onDocPointerMove, M), this.document.addEventListener(\"pointerup\", this.onDocPointerDone, M), this.document.addEventListener(\"pointercancel\", this.onDocPointerDone, M), this.docMoveBound = !0);\n  }\n  unbindDocMove() {\n    this.docMoveBound && (this.document.removeEventListener(\"pointermove\", this.onDocPointerMove, M), this.document.removeEventListener(\"pointerup\", this.onDocPointerDone, M), this.document.removeEventListener(\"pointercancel\", this.onDocPointerDone, M), this.docMoveBound = !1);\n  }\n  getCropStyle() {\n    const { crop: e } = this.props;\n    if (e)\n      return {\n        top: `${e.y}${e.unit}`,\n        left: `${e.x}${e.unit}`,\n        width: `${e.width}${e.unit}`,\n        height: `${e.height}${e.unit}`\n      };\n  }\n  dragCrop() {\n    const { evData: e } = this, n = this.getBox(), t = this.makePixelCrop(n), d = e.clientX - e.startClientX, r = e.clientY - e.startClientY;\n    return t.x = b(e.startCropX + d, 0, n.width - t.width), t.y = b(e.startCropY + r, 0, n.height - t.height), t;\n  }\n  getPointRegion(e, n, t, d) {\n    const { evData: r } = this, o = r.clientX - e.x, w = r.clientY - e.y;\n    let i;\n    d && n ? i = n === \"nw\" || n === \"n\" || n === \"ne\" : i = w < r.startCropY;\n    let s;\n    return t && n ? s = n === \"nw\" || n === \"w\" || n === \"sw\" : s = o < r.startCropX, s ? i ? \"nw\" : \"sw\" : i ? \"ne\" : \"se\";\n  }\n  resolveMinDimensions(e, n, t = 0, d = 0) {\n    const r = Math.min(t, e.width), o = Math.min(d, e.height);\n    return !n || !r && !o ? [r, o] : n > 1 ? r ? [r, r / n] : [o * n, o] : o ? [o * n, o] : [r, r / n];\n  }\n  resizeCrop() {\n    const { evData: e } = this, { aspect: n = 0, maxWidth: t, maxHeight: d } = this.props, r = this.getBox(), [o, w] = this.resolveMinDimensions(r, n, this.props.minWidth, this.props.minHeight);\n    let i = this.makePixelCrop(r);\n    const s = this.getPointRegion(r, e.ord, o, w), c = e.ord || s;\n    let g = e.clientX - e.startClientX, p = e.clientY - e.startClientY;\n    (o && c === \"nw\" || c === \"w\" || c === \"sw\") && (g = Math.min(g, -o)), (w && c === \"nw\" || c === \"n\" || c === \"ne\") && (p = Math.min(p, -w));\n    const l = {\n      unit: \"px\",\n      x: 0,\n      y: 0,\n      width: 0,\n      height: 0\n    };\n    s === \"ne\" ? (l.x = e.startCropX, l.width = g, n ? (l.height = l.width / n, l.y = e.startCropY - l.height) : (l.height = Math.abs(p), l.y = e.startCropY - l.height)) : s === \"se\" ? (l.x = e.startCropX, l.y = e.startCropY, l.width = g, n ? l.height = l.width / n : l.height = p) : s === \"sw\" ? (l.x = e.startCropX + g, l.y = e.startCropY, l.width = Math.abs(g), n ? l.height = l.width / n : l.height = p) : s === \"nw\" && (l.x = e.startCropX + g, l.width = Math.abs(g), n ? (l.height = l.width / n, l.y = e.startCropY - l.height) : (l.height = Math.abs(p), l.y = e.startCropY + p));\n    const C = k(\n      l,\n      n,\n      s,\n      r.width,\n      r.height,\n      o,\n      w,\n      t,\n      d\n    );\n    return n || x.xyOrds.indexOf(c) > -1 ? i = C : x.xOrds.indexOf(c) > -1 ? (i.x = C.x, i.width = C.width) : x.yOrds.indexOf(c) > -1 && (i.y = C.y, i.height = C.height), i.x = b(i.x, 0, r.width - i.width), i.y = b(i.y, 0, r.height - i.height), i;\n  }\n  renderCropSelection() {\n    const {\n      ariaLabels: e = x.defaultProps.ariaLabels,\n      disabled: n,\n      locked: t,\n      renderSelectionAddon: d,\n      ruleOfThirds: r,\n      crop: o\n    } = this.props, w = this.getCropStyle();\n    if (o)\n      return /* @__PURE__ */ u.createElement(\n        \"div\",\n        {\n          style: w,\n          className: \"ReactCrop__crop-selection\",\n          onPointerDown: this.onCropPointerDown,\n          \"aria-label\": e.cropArea,\n          tabIndex: 0,\n          onKeyDown: this.onComponentKeyDown,\n          role: \"group\"\n        },\n        !n && !t && /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__drag-elements\", onFocus: this.onDragFocus }, /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-n\", \"data-ord\": \"n\" }), /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-e\", \"data-ord\": \"e\" }), /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-s\", \"data-ord\": \"s\" }), /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-w\", \"data-ord\": \"w\" }), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-nw\",\n            \"data-ord\": \"nw\",\n            tabIndex: 0,\n            \"aria-label\": e.nwDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"nw\"),\n            role: \"button\"\n          }\n        ), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-n\",\n            \"data-ord\": \"n\",\n            tabIndex: 0,\n            \"aria-label\": e.nDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"n\"),\n            role: \"button\"\n          }\n        ), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-ne\",\n            \"data-ord\": \"ne\",\n            tabIndex: 0,\n            \"aria-label\": e.neDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"ne\"),\n            role: \"button\"\n          }\n        ), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-e\",\n            \"data-ord\": \"e\",\n            tabIndex: 0,\n            \"aria-label\": e.eDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"e\"),\n            role: \"button\"\n          }\n        ), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-se\",\n            \"data-ord\": \"se\",\n            tabIndex: 0,\n            \"aria-label\": e.seDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"se\"),\n            role: \"button\"\n          }\n        ), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-s\",\n            \"data-ord\": \"s\",\n            tabIndex: 0,\n            \"aria-label\": e.sDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"s\"),\n            role: \"button\"\n          }\n        ), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-sw\",\n            \"data-ord\": \"sw\",\n            tabIndex: 0,\n            \"aria-label\": e.swDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"sw\"),\n            role: \"button\"\n          }\n        ), /* @__PURE__ */ u.createElement(\n          \"div\",\n          {\n            className: \"ReactCrop__drag-handle ord-w\",\n            \"data-ord\": \"w\",\n            tabIndex: 0,\n            \"aria-label\": e.wDragHandle,\n            onKeyDown: (i) => this.onHandlerKeyDown(i, \"w\"),\n            role: \"button\"\n          }\n        )),\n        d && /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__selection-addon\", onPointerDown: (i) => i.stopPropagation() }, d(this.state)),\n        r && /* @__PURE__ */ u.createElement(u.Fragment, null, /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-hz\" }), /* @__PURE__ */ u.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-vt\" }))\n      );\n  }\n  makePixelCrop(e) {\n    const n = { ...E, ...this.props.crop || {} };\n    return D(n, e.width, e.height);\n  }\n  render() {\n    const { aspect: e, children: n, circularCrop: t, className: d, crop: r, disabled: o, locked: w, style: i, ruleOfThirds: s } = this.props, { cropIsActive: c, newCropIsBeingDrawn: g } = this.state, p = r ? this.renderCropSelection() : null, l = H(\n      \"ReactCrop\",\n      d,\n      c && \"ReactCrop--active\",\n      o && \"ReactCrop--disabled\",\n      w && \"ReactCrop--locked\",\n      g && \"ReactCrop--new-crop\",\n      r && e && \"ReactCrop--fixed-aspect\",\n      r && t && \"ReactCrop--circular-crop\",\n      r && s && \"ReactCrop--rule-of-thirds\",\n      !this.dragStarted && r && !r.width && !r.height && \"ReactCrop--invisible-crop\",\n      t && \"ReactCrop--no-animate\"\n    );\n    return /* @__PURE__ */ u.createElement(\"div\", { ref: this.componentRef, className: l, style: i }, /* @__PURE__ */ u.createElement(\"div\", { ref: this.mediaRef, className: \"ReactCrop__child-wrapper\", onPointerDown: this.onComponentPointerDown }, n), r ? /* @__PURE__ */ u.createElement(\"svg\", { className: \"ReactCrop__crop-mask\", width: \"100%\", height: \"100%\" }, /* @__PURE__ */ u.createElement(\"defs\", null, /* @__PURE__ */ u.createElement(\"mask\", { id: `hole-${this.instanceId}` }, /* @__PURE__ */ u.createElement(\"rect\", { width: \"100%\", height: \"100%\", fill: \"white\" }), t ? /* @__PURE__ */ u.createElement(\n      \"ellipse\",\n      {\n        cx: `${r.x + r.width / 2}${r.unit}`,\n        cy: `${r.y + r.height / 2}${r.unit}`,\n        rx: `${r.width / 2}${r.unit}`,\n        ry: `${r.height / 2}${r.unit}`,\n        fill: \"black\"\n      }\n    ) : /* @__PURE__ */ u.createElement(\n      \"rect\",\n      {\n        x: `${r.x}${r.unit}`,\n        y: `${r.y}${r.unit}`,\n        width: `${r.width}${r.unit}`,\n        height: `${r.height}${r.unit}`,\n        fill: \"black\"\n      }\n    ))), /* @__PURE__ */ u.createElement(\"rect\", { fill: \"black\", fillOpacity: 0.5, width: \"100%\", height: \"100%\", mask: `url(#hole-${this.instanceId})` })) : void 0, p);\n  }\n};\nm(x, \"xOrds\", [\"e\", \"w\"]), m(x, \"yOrds\", [\"n\", \"s\"]), m(x, \"xyOrds\", [\"nw\", \"ne\", \"se\", \"sw\"]), m(x, \"nudgeStep\", 1), m(x, \"nudgeStepMedium\", 10), m(x, \"nudgeStepLarge\", 100), m(x, \"defaultProps\", {\n  ariaLabels: {\n    cropArea: \"Use the arrow keys to move the crop selection area\",\n    nwDragHandle: \"Use the arrow keys to move the north west drag handle to change the crop selection area\",\n    nDragHandle: \"Use the up and down arrow keys to move the north drag handle to change the crop selection area\",\n    neDragHandle: \"Use the arrow keys to move the north east drag handle to change the crop selection area\",\n    eDragHandle: \"Use the up and down arrow keys to move the east drag handle to change the crop selection area\",\n    seDragHandle: \"Use the arrow keys to move the south east drag handle to change the crop selection area\",\n    sDragHandle: \"Use the up and down arrow keys to move the south drag handle to change the crop selection area\",\n    swDragHandle: \"Use the arrow keys to move the south west drag handle to change the crop selection area\",\n    wDragHandle: \"Use the up and down arrow keys to move the west drag handle to change the crop selection area\"\n  }\n});\nlet S = x;\nexport {\n  S as Component,\n  S as ReactCrop,\n  X as areCropsEqual,\n  L as centerCrop,\n  b as clamp,\n  H as cls,\n  k as containCrop,\n  v as convertToPercentCrop,\n  D as convertToPixelCrop,\n  S as default,\n  E as defaultCrop,\n  B as makeAspectCrop,\n  I as nudgeCrop\n};\n","import {\n  centerCrop,\n  makeAspectCrop,\n  type Crop,\n  type PixelCrop,\n} from \"react-image-crop\";\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\nexport const ASPECT_OPTIONS: readonly {\n  label: string;\n  value: \"free\" | number;\n}[] = [\n  { label: \"Free\", value: \"free\" as const },\n  { label: \"1:1\", value: 1 },\n  { label: \"16:9\", value: 16 / 9 },\n  { label: \"4:3\", value: 4 / 3 },\n];\n\nexport type AspectValue = \"free\" | number;\n\nexport const ROTATION_MIN = -180;\nexport const ROTATION_MAX = 180;\n\n// ── Crop helpers ─────────────────────────────────────────────────────────────\n\n/**\n * Compute initial crop + completedCrop values for given container dimensions\n * and optional aspect ratio.\n *\n * Used when the image first loads, when the user resets, and when the aspect\n * ratio changes via the dropdown.\n */\nexport function computeInitialCrop(\n  displayedWidth: number,\n  displayedHeight: number,\n  aspect?: number,\n): { crop: Crop; completedCrop: PixelCrop } {\n  if (aspect) {\n    const imageAspect = displayedWidth / displayedHeight;\n    const seed =\n      aspect > imageAspect\n        ? { unit: \"%\" as const, width: 100 }\n        : { unit: \"%\" as const, height: 100 };\n\n    const crop = centerCrop(\n      makeAspectCrop(seed, aspect, displayedWidth, displayedHeight),\n      displayedWidth,\n      displayedHeight,\n    );\n    const completedCrop: PixelCrop = {\n      x: (crop.x / 100) * displayedWidth,\n      y: (crop.y / 100) * displayedHeight,\n      width: (crop.width / 100) * displayedWidth,\n      height: (crop.height / 100) * displayedHeight,\n      unit: \"px\",\n    };\n    return { crop, completedCrop };\n  }\n\n  const crop: Crop = { unit: \"%\", x: 0, y: 0, width: 100, height: 100 };\n  const completedCrop: PixelCrop = {\n    x: 0,\n    y: 0,\n    width: displayedWidth,\n    height: displayedHeight,\n    unit: \"px\",\n  };\n  return { crop, completedCrop };\n}\n\n// ── Canvas export ────────────────────────────────────────────────────────────\n\n/**\n * Render the image onto a canvas at natural (full) resolution\n * (including rotation, zoom, flip) then extract the crop rectangle as a File.\n *\n * Uses createImageBitmap() from the original file to guarantee full-resolution\n * decoding. The <img> element may have been decoded at reduced resolution by the\n * browser when displayed at a small CSS size (downsample-on-decode).\n */\nexport async function getCroppedImgFromViewport(\n  image: HTMLImageElement,\n  vw: number,\n  vh: number,\n  crop: { x: number; y: number; width: number; height: number },\n  zoom: number,\n  rotationDeg: number,\n  flipHorizontal: boolean,\n  fileName: string,\n  type: string = \"image/jpeg\",\n  quality: number = 0.9,\n  sourceFile?: File,\n): Promise<File> {\n  // Decode the image at full resolution from the original file bytes,\n  // bypassing any browser downsample-on-decode optimization on the <img>.\n  const bitmap = sourceFile\n    ? await createImageBitmap(sourceFile)\n    : await createImageBitmap(image);\n\n  const nw = bitmap.width;\n  const nh = bitmap.height;\n\n  // Scale factor from viewport coords to natural-resolution coords.\n  // Cap canvas dimensions at MAX_CANVAS_DIM to avoid exceeding browser limits\n  // (most browsers cap at 16384, but we use 4096 for safe memory usage).\n  const MAX_CANVAS_DIM = 4096;\n  const rawUpscale = Math.max(nw / vw, nh / vh);\n  const rawW = Math.round(vw * rawUpscale);\n  const rawH = Math.round(vh * rawUpscale);\n  const downscale = Math.min(1, MAX_CANVAS_DIM / rawW, MAX_CANVAS_DIM / rawH);\n  const upscale = rawUpscale * downscale;\n  const canvasW = Math.round(rawW * downscale);\n  const canvasH = Math.round(rawH * downscale);\n\n  const scaleFit = Math.min(canvasW / nw, canvasH / nh);\n  const scale = scaleFit * zoom;\n\n  const source = document.createElement(\"canvas\");\n  source.width = canvasW;\n  source.height = canvasH;\n  const ctx = source.getContext(\"2d\");\n  if (!ctx) throw new Error(\"No 2d context\");\n  ctx.imageSmoothingQuality = \"high\";\n  ctx.imageSmoothingEnabled = true;\n\n  ctx.save();\n  ctx.translate(canvasW / 2, canvasH / 2);\n  ctx.rotate((rotationDeg * Math.PI) / 180);\n  if (flipHorizontal) ctx.scale(-1, 1);\n  ctx.scale(scale, scale);\n  ctx.translate(-nw / 2, -nh / 2);\n  ctx.drawImage(bitmap, 0, 0);\n  ctx.restore();\n\n  bitmap.close();\n\n  // Scale crop coordinates to natural resolution\n  const cropX = Math.max(0, Math.floor(crop.x * upscale));\n  const cropY = Math.max(0, Math.floor(crop.y * upscale));\n  const pw = Math.floor(crop.width * upscale);\n  const ph = Math.floor(crop.height * upscale);\n\n  const out = document.createElement(\"canvas\");\n  out.width = pw;\n  out.height = ph;\n  const outCtx = out.getContext(\"2d\");\n  if (!outCtx) throw new Error(\"No 2d context\");\n  outCtx.imageSmoothingQuality = \"high\";\n  outCtx.imageSmoothingEnabled = true;\n  outCtx.drawImage(source, cropX, cropY, pw, ph, 0, 0, pw, ph);\n\n  return new Promise((resolve, reject) => {\n    out.toBlob(\n      (blob) => {\n        if (!blob) {\n          reject(new Error(\"Canvas is empty\"));\n          return;\n        }\n        const file = new File([blob], fileName, { type });\n        resolve(file);\n      },\n      type,\n      quality,\n    );\n  });\n}\n","import type React from \"react\";\nimport type { DamAsset } from \"../types\";\n\nexport function getAssetCardClassName(isSelected: boolean): string {\n  return isSelected ? \"bg-blue-50 ring-2 ring-blue-500\" : \"bg-white\";\n}\n\nexport function createAssetClickHandlers(\n  pendingClickTimeoutRef: React.MutableRefObject<ReturnType<\n    typeof setTimeout\n  > | null>,\n  handleAssetClick: (\n    e: React.MouseEvent,\n    asset: DamAsset,\n    index: number,\n  ) => void,\n  setPreviewAsset: (asset: DamAsset | null) => void,\n  asset: DamAsset,\n  index: number,\n): {\n  onClick: (e: React.MouseEvent) => void;\n  onDoubleClick: (e: React.MouseEvent) => void;\n} {\n  const delayMs = 250;\n  return {\n    onClick: (e: React.MouseEvent) => {\n      if (pendingClickTimeoutRef.current) {\n        clearTimeout(pendingClickTimeoutRef.current);\n      }\n      pendingClickTimeoutRef.current = setTimeout(() => {\n        handleAssetClick(e, asset, index);\n        pendingClickTimeoutRef.current = null;\n      }, delayMs);\n    },\n    onDoubleClick: (e: React.MouseEvent) => {\n      e.stopPropagation();\n      if (pendingClickTimeoutRef.current) {\n        clearTimeout(pendingClickTimeoutRef.current);\n        pendingClickTimeoutRef.current = null;\n      }\n      setPreviewAsset(asset);\n    },\n  };\n}\n","/**\n * Get the URL for a DAM asset, preferring the CDN URL if available.\n * Falls back to the API proxy URL when CDN URL is not ready.\n *\n * @param asset - The asset object with code and variant info\n * @param apiBaseUrl - Base URL for fallback API proxy (e.g. \"https://api.fluid.app/api\")\n */\nexport function getDamAssetUrl(\n  asset: {\n    code: string;\n    default_variant_id: string | number;\n    default_variant_url?: string | null;\n  },\n  apiBaseUrl?: string,\n): string {\n  if (asset.default_variant_url) {\n    return asset.default_variant_url;\n  }\n  const base = apiBaseUrl || \"\";\n  return `${base}/dam/assets/${asset.code}/variants/${asset.default_variant_id}/content`;\n}\n","/**\n * Sanitizes a filename for safe upload by:\n * 1. Removing or replacing problematic characters\n * 2. Ensuring proper encoding for spaces and special characters\n * 3. Maintaining file extension\n */\nexport function sanitizeFilename(filename: string): string {\n  if (!filename) return filename;\n\n  // Split filename into name and extension\n  const lastDotIndex = filename.lastIndexOf(\".\");\n  const name =\n    lastDotIndex > 0 ? filename.substring(0, lastDotIndex) : filename;\n  const rawExtension = lastDotIndex > 0 ? filename.substring(lastDotIndex) : \"\";\n  const extension = (rawExtension.split(\"?\")[0] ?? \"\").split(\"#\")[0] ?? \"\";\n\n  // Clean the name part\n  let sanitizedName = name\n    // Replace problematic characters with underscores\n    .replace(/[<>:\"/\\\\|?*]/g, \"_\")\n    // Replace multiple spaces with single space\n    .replace(/\\s+/g, \" \")\n    // Trim whitespace\n    .trim()\n    // Replace spaces with underscores for better compatibility\n    .replace(/\\s/g, \"_\");\n\n  // If the name is empty after sanitization, use a default\n  if (!sanitizedName) {\n    sanitizedName = \"file\";\n  }\n\n  // Return the sanitized filename with extension\n  return sanitizedName + extension;\n}\n\n/**\n * Extracts the base name (without extension) from a filename\n * and sanitizes it for use as an asset name\n * Server validation only allows: word characters, spaces, and hyphens\n */\nexport function getSanitizedAssetName(filename: string): string {\n  if (!filename) return \"asset\";\n\n  // Split filename into name and extension\n  const lastDotIndex = filename.lastIndexOf(\".\");\n  const name =\n    lastDotIndex > 0 ? filename.substring(0, lastDotIndex) : filename;\n\n  // Clean the name part for asset naming\n  // Only allow word characters (letters, numbers, underscore), spaces, and hyphens\n  let sanitizedName = name\n    // Replace any characters that are not word characters, spaces, or hyphens with spaces\n    .replace(/[^\\w\\s-]/g, \" \")\n    // Replace multiple spaces with single space\n    .replace(/\\s+/g, \" \")\n    // Trim whitespace\n    .trim();\n\n  // If the name is empty after sanitization, use a default\n  if (!sanitizedName) {\n    sanitizedName = \"asset\";\n  }\n\n  return sanitizedName;\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { createContext, use } from \"react\";\nimport type {\n  FilePickerApi,\n  PickerEnrollmentPackItem,\n  PickerPageItem,\n  PickerProductItem,\n  PickerSource,\n} from \"@fluid-app/file-picker-core\";\n\nexport type RenderImageProps = {\n  src: string;\n  alt: string;\n  width?: number;\n  height?: number;\n  fill?: boolean;\n  className?: string;\n  onError?: () => void;\n};\n\nexport interface ShareablesUIConfig {\n  /** User info for fallback logo, etc. */\n  user?: { id: number; company?: { logo_url?: string | null } | null } | null;\n  /** Affiliate ID for user-scoped operations (favorites toggle) */\n  affiliateId?: number | null;\n  /** Base path for rep links (e.g., \"/rep/123\") */\n  basePath: string;\n  /** Navigation callback — replaces useRouter.push */\n  navigate: (path: string) => void;\n  /** Toast callback — replaces fluidToast */\n  showToast: (opts: {\n    title: string;\n    type: \"success\" | \"error\" | \"warning\";\n    error?: unknown;\n  }) => void;\n  /** MySite share handler — admin-coupled (dynamic import).\n   *  The implementation is responsible for providing user-specific fields\n   *  (affiliate_id, country_id) from its own auth context. */\n  onMySiteShare?: (params: {\n    shareLink: string;\n    relateable_id: number;\n    relateable_type: string;\n  }) => Promise<void>;\n  /** File download handler — replaces useFileDownload */\n  onFileDownload?: (url: string, filename: string) => void;\n  /** File picker API for DAM asset browsing/uploading */\n  filePickerApi?: FilePickerApi;\n  /** Custom image renderer — replaces next/image imports */\n  renderImage?: (props: RenderImageProps) => React.ReactNode;\n  /** Toggle favorite on a playlist (Library) or other entity.\n   *  Host app provides the implementation since the endpoint lives\n   *  outside the shareables API domain. */\n  onToggleFavorite?: (params: {\n    favoriteableId: number;\n    favoriteableType: string;\n  }) => Promise<{ is_favorited: boolean }>;\n  /** Delete a playlist by ID. */\n  onDeletePlaylist?: (playlistId: number) => Promise<void>;\n  /** Media products API — list, add, remove product associations on media. */\n  mediaProductsApi?: {\n    listMediaProducts: (\n      mediumId: number,\n      params?: { language_iso?: string },\n    ) => Promise<{\n      media_products: Array<{\n        id: number;\n        name?: string;\n        slug?: string | null;\n        image_url?: string | null;\n        price?: string | null;\n        sku?: string | null;\n      }>;\n    }>;\n    addMediaProduct: (\n      mediumId: number,\n      body: { id: number },\n    ) => Promise<unknown>;\n    removeMediaProduct: (\n      mediumId: number,\n      productId: number,\n    ) => Promise<unknown>;\n  };\n  /** Product search for tagging — returns matching products with optional\n   *  cursor pagination so the tag modal can infinite-scroll. Empty query\n   *  should return the initial product list (host app's decision). */\n  searchProducts?: (\n    query: string,\n    options?: { cursor?: string | null; limit?: number },\n  ) => Promise<{\n    products: Array<{\n      id: number;\n      name?: string;\n      image_url?: string | null;\n      price?: string | null;\n    }>;\n    nextCursor?: string | null;\n  }>;\n  /**\n   * When true, hides actions that author or alter *content* — creating and\n   * editing media, tagging products, uploading thumbnails. Set for member\n   * types without rep eligibility.\n   *\n   * This does NOT gate playlist curation; see `canCuratePlaylists`. The two\n   * were a single flag until customers were given their own playlists, at\n   * which point one boolean could no longer answer both questions.\n   */\n  readOnly?: boolean;\n  /**\n   * When true, the member may curate playlists they own — create, rename,\n   * reorder, delete, and add or remove items. Ownership is still enforced by\n   * the API, which refuses any playlist the member doesn't own, so this only\n   * decides whether the affordances are offered.\n   *\n   * Defaults to true when unset so hosts that never opted out (the admin app)\n   * keep working unchanged.\n   */\n  canCuratePlaylists?: boolean;\n  /** Upload a thumbnail blob to DAM and return the hosted URL. */\n  uploadThumbnail?: (blob: Blob, filename: string) => Promise<string>;\n  /**\n   * Optional list/search functions for the non-media picker tabs in the\n   * playlist editor (Pages, Products, Enrollment Packs).\n   *\n   * Each entry is opt-in: when an entry is omitted the corresponding tab is\n   * hidden in the picker. Hosts wire these via their portal-tenant adapters\n   * once the matching BFF endpoint exists.\n   */\n  pickerSources?: {\n    pages?: PickerSource<PickerPageItem>;\n    products?: PickerSource<PickerProductItem>;\n    enrollment_packs?: PickerSource<PickerEnrollmentPackItem>;\n  };\n}\n\nconst MISSING_PROVIDER = Symbol(\"missing-shareables-provider\");\n\nconst ShareablesUIContext = createContext<\n  ShareablesUIConfig | typeof MISSING_PROVIDER\n>(MISSING_PROVIDER);\n\nconst OBJECT_FIT_CLASS_NAMES = new Set([\n  \"object-contain\",\n  \"object-cover\",\n  \"object-fill\",\n  \"object-none\",\n  \"object-scale-down\",\n]);\n\nfunction hasObjectFitClass(className: string | undefined): boolean {\n  return (\n    className\n      ?.split(/\\s+/)\n      .some((classNamePart) => OBJECT_FIT_CLASS_NAMES.has(classNamePart)) ??\n    false\n  );\n}\n\nexport function ShareablesUIProvider({\n  config,\n  children,\n}: {\n  config: ShareablesUIConfig;\n  children: React.ReactNode;\n}): React.JSX.Element {\n  return (\n    <ShareablesUIContext.Provider value={config}>\n      {children}\n    </ShareablesUIContext.Provider>\n  );\n}\n\nfunction defaultRenderImage(props: RenderImageProps): React.ReactNode {\n  const fillClassName = props.fill\n    ? `absolute inset-0 h-full w-full${hasObjectFitClass(props.className) ? \"\" : \" object-cover\"}`\n    : \"\";\n  const className = [fillClassName, props.className].filter(Boolean).join(\" \");\n\n  return (\n    <img\n      src={props.src}\n      alt={props.alt}\n      width={props.width}\n      height={props.height}\n      className={className}\n      onError={props.onError}\n    />\n  );\n}\n\nexport function useRenderImage(): (props: RenderImageProps) => React.ReactNode {\n  const ctx = use(ShareablesUIContext);\n  if (ctx === MISSING_PROVIDER) {\n    return defaultRenderImage;\n  }\n  return ctx.renderImage ?? defaultRenderImage;\n}\n\nexport function useShareablesUI(): ShareablesUIConfig {\n  const ctx = use(ShareablesUIContext);\n  if (ctx === MISSING_PROVIDER) {\n    throw new Error(\n      \"useShareablesUI must be used within a <ShareablesUIProvider>. \" +\n        \"Wrap your component tree with <ShareablesUIProvider config={...}>.\",\n    );\n  }\n  return ctx;\n}\n\n/**\n * Whether the current member may curate their own playlists.\n *\n * Reads `canCuratePlaylists`, defaulting to true when the host hasn't set it,\n * so the default is applied in one place instead of every call site having to\n * remember that `undefined` means allowed.\n */\nexport function useCanCuratePlaylists(): boolean {\n  return useShareablesUI().canCuratePlaylists !== false;\n}\n","/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */\n\nconst {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor\n} = Object;\nlet {\n  freeze,\n  seal,\n  create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n  apply,\n  construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n  freeze = function freeze(x) {\n    return x;\n  };\n}\nif (!seal) {\n  seal = function seal(x) {\n    return x;\n  };\n}\nif (!apply) {\n  apply = function apply(func, thisArg) {\n    for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n    return func.apply(thisArg, args);\n  };\n}\nif (!construct) {\n  construct = function construct(Func) {\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n    return new Func(...args);\n  };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n  return function (thisArg) {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n    return apply(func, thisArg, args);\n  };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n  return function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return construct(Func, args);\n  };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n  let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n        element = lcElement;\n      }\n    }\n    set[element] = true;\n  }\n  return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n  return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n  const newObject = create(null);\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (value && typeof value === 'object' && value.constructor === Object) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n  return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n    object = getPrototypeOf(object);\n  }\n  function fallbackValue() {\n    return null;\n  }\n  return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: ARIA_ATTR,\n  ATTR_WHITESPACE: ATTR_WHITESPACE,\n  CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n  DATA_ATTR: DATA_ATTR,\n  DOCTYPE_NAME: DOCTYPE_NAME,\n  ERB_EXPR: ERB_EXPR,\n  IS_ALLOWED_URI: IS_ALLOWED_URI,\n  IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n  MUSTACHE_EXPR: MUSTACHE_EXPR,\n  TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5,\n  // Deprecated\n  entityNode: 6,\n  // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n  if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      }\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\nconst _createHooksMap = function _createHooksMap() {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n};\nfunction createDOMPurify() {\n  let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n  const DOMPurify = root => createDOMPurify(root);\n  DOMPurify.version = '3.3.3';\n  DOMPurify.removed = [];\n  if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n    return DOMPurify;\n  }\n  let {\n    document\n  } = window;\n  const originalDocument = document;\n  const currentScript = originalDocument.currentScript;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes\n  } = window;\n  const ElementPrototype = Element.prototype;\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName\n  } = document;\n  const {\n    importNode\n  } = originalDocument;\n  let hooks = _createHooksMap();\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT\n  } = EXPRESSIONS;\n  let {\n    IS_ALLOWED_URI: IS_ALLOWED_URI$1\n  } = EXPRESSIONS;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: false\n    }\n  }));\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n  /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n  const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n    tagCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    },\n    attributeCheck: {\n      writable: true,\n      configurable: false,\n      enumerable: true,\n      value: null\n    }\n  }));\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc = null;\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n  const formElement = document.createElement('form');\n  const isRegexOrFunction = function isRegexOrFunction(testValue) {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function _parseConfig() {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n    PARSER_MEDIA_TYPE =\n    // eslint-disable-next-line unicorn/prefer-includes\n    SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n    if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, text);\n      ALLOWED_ATTR = create(null);\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html$1);\n        addToSet(ALLOWED_ATTR, html);\n      }\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg$1);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl$1);\n        addToSet(ALLOWED_ATTR, mathMl);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n    /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */\n    if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n      EXTRA_ELEMENT_HANDLING.tagCheck = null;\n    }\n    if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n      EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n    }\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (typeof cfg.ADD_TAGS === 'function') {\n        EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n      } else {\n        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n          ALLOWED_TAGS = clone(ALLOWED_TAGS);\n        }\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n      }\n    }\n    if (cfg.ADD_ATTR) {\n      if (typeof cfg.ADD_ATTR === 'function') {\n        EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n      } else {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n      }\n    }\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n    if (cfg.ADD_FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n      addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n    }\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n      }\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n      }\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n      }\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n    CONFIG = cfg;\n  };\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n  const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function _checkValidNamespace(element) {\n    let parent = getParentNode(element);\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template'\n      };\n    }\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n      }\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n        return false;\n      }\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n    }\n    // For XHTML and XML documents that support custom namespaces\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return true;\n    }\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function _forceRemove(node) {\n    arrayPush(DOMPurify.removed, {\n      element: node\n    });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function _removeAttribute(name, element) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element\n      });\n    }\n    element.removeAttribute(name);\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n    }\n    const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n    const body = doc.body || doc.documentElement;\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n    }\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n    }\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function _createNodeIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root,\n    // eslint-disable-next-line no-bitwise\n    NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n  };\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function _isClobbered(element) {\n    return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n  };\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function _isNode(value) {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n  function _executeHooks(hooks, currentNode, data) {\n    arrayForEach(hooks, hook => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function _sanitizeElements(currentNode) {\n    let content = null;\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove any kind of possibly harmful comments */\n    if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Remove element if anything forbids its presence */\n    if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n          return false;\n        }\n        if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n          return false;\n        }\n      }\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        content = stringReplace(content, expr, ' ');\n      });\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, {\n          element: currentNode.cloneNode()\n        });\n        currentNode.textContent = content;\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n    return false;\n  };\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n    if (FORBID_ATTR[lcName]) {\n      return false;\n    }\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n      // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n      // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n      _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n      // Alternative, second condition checks if it's an `is`-attribute, AND\n      // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n      lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n      return false;\n    } else ;\n    return true;\n  };\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n    const {\n      attributes\n    } = currentNode;\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined\n    };\n    let l = attributes.length;\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const {\n        name,\n        namespaceURI,\n        value: attrValue\n      } = attr;\n      const lcName = transformCaseFunc(name);\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n      if (lcName === 'attributename' && stringMatch(value, 'href')) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n      /* Handle attributes that require Trusted Types */\n      if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n        if (namespaceURI) ; else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML':\n              {\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n              }\n            case 'TrustedScriptURL':\n              {\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n              }\n          }\n        }\n      }\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        try {\n          if (namespaceURI) {\n            currentNode.setAttributeNS(namespaceURI, name, value);\n          } else {\n            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n            currentNode.setAttribute(name, value);\n          }\n          if (_isClobbered(currentNode)) {\n            _forceRemove(currentNode);\n          } else {\n            arrayPop(DOMPurify.removed);\n          }\n        } catch (_) {\n          _removeAttribute(name, currentNode);\n        }\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty) {\n    let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if (dirty.nodeName) {\n        const tagName = transformCaseFunc(dirty.nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n      // eslint-disable-next-line unicorn/prefer-includes\n      dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n      return returnNode;\n    }\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n    /* Serialize doctype if allowed */\n    if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n      serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n  DOMPurify.setConfig = function () {\n    let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n      return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n    return arrayPop(hooks[entryPoint]);\n  };\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n  return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","'use strict';\n\n/**\n * Check if `vhost` is a valid suffix of `hostname` (top-domain)\n *\n * It means that `vhost` needs to be a suffix of `hostname` and we then need to\n * make sure that: either they are equal, or the character preceding `vhost` in\n * `hostname` is a '.' (it should not be a partial label).\n *\n * * hostname = 'not.evil.com' and vhost = 'vil.com'      => not ok\n * * hostname = 'not.evil.com' and vhost = 'evil.com'     => ok\n * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok\n */\nfunction shareSameDomainSuffix(hostname, vhost) {\n    if (hostname.endsWith(vhost)) {\n        return (hostname.length === vhost.length ||\n            hostname[hostname.length - vhost.length - 1] === '.');\n    }\n    return false;\n}\n/**\n * Given a hostname and its public suffix, extract the general domain.\n */\nfunction extractDomainWithSuffix(hostname, publicSuffix) {\n    // Locate the index of the last '.' in the part of the `hostname` preceding\n    // the public suffix.\n    //\n    // examples:\n    //   1. not.evil.co.uk  => evil.co.uk\n    //         ^    ^\n    //         |    | start of public suffix\n    //         | index of the last dot\n    //\n    //   2. example.co.uk   => example.co.uk\n    //     ^       ^\n    //     |       | start of public suffix\n    //     |\n    //     | (-1) no dot found before the public suffix\n    const publicSuffixIndex = hostname.length - publicSuffix.length - 2;\n    const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);\n    // No '.' found, then `hostname` is the general domain (no sub-domain)\n    if (lastDotBeforeSuffixIndex === -1) {\n        return hostname;\n    }\n    // Extract the part between the last '.'\n    return hostname.slice(lastDotBeforeSuffixIndex + 1);\n}\n/**\n * Detects the domain based on rules and upon and a host string\n */\nfunction getDomain$1(suffix, hostname, options) {\n    // Check if `hostname` ends with a member of `validHosts`.\n    if (options.validHosts !== null) {\n        const validHosts = options.validHosts;\n        for (const vhost of validHosts) {\n            if ( /*@__INLINE__*/shareSameDomainSuffix(hostname, vhost)) {\n                return vhost;\n            }\n        }\n    }\n    let numberOfLeadingDots = 0;\n    if (hostname.startsWith('.')) {\n        while (numberOfLeadingDots < hostname.length &&\n            hostname[numberOfLeadingDots] === '.') {\n            numberOfLeadingDots += 1;\n        }\n    }\n    // If `hostname` is a valid public suffix, then there is no domain to return.\n    // Since we already know that `getPublicSuffix` returns a suffix of `hostname`\n    // there is no need to perform a string comparison and we only compare the\n    // size.\n    if (suffix.length === hostname.length - numberOfLeadingDots) {\n        return null;\n    }\n    // To extract the general domain, we start by identifying the public suffix\n    // (if any), then consider the domain to be the public suffix with one added\n    // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:\n    // `co.uk`, then we take one more level: `evil`, giving the final result:\n    // `evil.co.uk`).\n    return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);\n}\n\n/**\n * Return the part of domain without suffix.\n *\n * Example: for domain 'foo.com', the result would be 'foo'.\n */\nfunction getDomainWithoutSuffix$1(domain, suffix) {\n    // Note: here `domain` and `suffix` cannot have the same length because in\n    // this case we set `domain` to `null` instead. It is thus safe to assume\n    // that `suffix` is shorter than `domain`.\n    return domain.slice(0, -suffix.length - 1);\n}\n\n/**\n * @param url - URL we want to extract a hostname from.\n * @param urlIsValidHostname - hint from caller; true if `url` is already a valid hostname.\n */\nfunction extractHostname(url, urlIsValidHostname) {\n    let start = 0;\n    let end = url.length;\n    let hasUpper = false;\n    // If url is not already a valid hostname, then try to extract hostname.\n    if (!urlIsValidHostname) {\n        // Special handling of data URLs\n        if (url.startsWith('data:')) {\n            return null;\n        }\n        // Trim leading spaces\n        while (start < url.length && url.charCodeAt(start) <= 32) {\n            start += 1;\n        }\n        // Trim trailing spaces\n        while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {\n            end -= 1;\n        }\n        // Skip scheme.\n        if (url.charCodeAt(start) === 47 /* '/' */ &&\n            url.charCodeAt(start + 1) === 47 /* '/' */) {\n            start += 2;\n        }\n        else {\n            const indexOfProtocol = url.indexOf(':/', start);\n            if (indexOfProtocol !== -1) {\n                // Implement fast-path for common protocols. We expect most protocols\n                // should be one of these 4 and thus we will not need to perform the\n                // more expansive validity check most of the time.\n                const protocolSize = indexOfProtocol - start;\n                const c0 = url.charCodeAt(start);\n                const c1 = url.charCodeAt(start + 1);\n                const c2 = url.charCodeAt(start + 2);\n                const c3 = url.charCodeAt(start + 3);\n                const c4 = url.charCodeAt(start + 4);\n                if (protocolSize === 5 &&\n                    c0 === 104 /* 'h' */ &&\n                    c1 === 116 /* 't' */ &&\n                    c2 === 116 /* 't' */ &&\n                    c3 === 112 /* 'p' */ &&\n                    c4 === 115 /* 's' */) ;\n                else if (protocolSize === 4 &&\n                    c0 === 104 /* 'h' */ &&\n                    c1 === 116 /* 't' */ &&\n                    c2 === 116 /* 't' */ &&\n                    c3 === 112 /* 'p' */) ;\n                else if (protocolSize === 3 &&\n                    c0 === 119 /* 'w' */ &&\n                    c1 === 115 /* 's' */ &&\n                    c2 === 115 /* 's' */) ;\n                else if (protocolSize === 2 &&\n                    c0 === 119 /* 'w' */ &&\n                    c1 === 115 /* 's' */) ;\n                else {\n                    // Check that scheme is valid\n                    for (let i = start; i < indexOfProtocol; i += 1) {\n                        const lowerCaseCode = url.charCodeAt(i) | 32;\n                        if (!(((lowerCaseCode >= 97 && lowerCaseCode <= 122) || // [a, z]\n                            (lowerCaseCode >= 48 && lowerCaseCode <= 57) || // [0, 9]\n                            lowerCaseCode === 46 || // '.'\n                            lowerCaseCode === 45 || // '-'\n                            lowerCaseCode === 43) // '+'\n                        )) {\n                            return null;\n                        }\n                    }\n                }\n                // Skip 0, 1 or more '/' after ':/'\n                start = indexOfProtocol + 2;\n                while (url.charCodeAt(start) === 47 /* '/' */) {\n                    start += 1;\n                }\n            }\n        }\n        // Detect first occurrence of '/', '?' or '#'. We also keep track of the\n        // last occurrence of '@', ']' or ':' to speed-up subsequent parsing of\n        // (respectively), identifier, ipv6 or port.\n        let indexOfIdentifier = -1;\n        let indexOfClosingBracket = -1;\n        let indexOfPort = -1;\n        for (let i = start; i < end; i += 1) {\n            const code = url.charCodeAt(i);\n            if (code === 35 || // '#'\n                code === 47 || // '/'\n                code === 63 // '?'\n            ) {\n                end = i;\n                break;\n            }\n            else if (code === 64) {\n                // '@'\n                indexOfIdentifier = i;\n            }\n            else if (code === 93) {\n                // ']'\n                indexOfClosingBracket = i;\n            }\n            else if (code === 58) {\n                // ':'\n                indexOfPort = i;\n            }\n            else if (code >= 65 && code <= 90) {\n                hasUpper = true;\n            }\n        }\n        // Detect identifier: '@'\n        if (indexOfIdentifier !== -1 &&\n            indexOfIdentifier > start &&\n            indexOfIdentifier < end) {\n            start = indexOfIdentifier + 1;\n        }\n        // Handle ipv6 addresses\n        if (url.charCodeAt(start) === 91 /* '[' */) {\n            if (indexOfClosingBracket !== -1) {\n                return url.slice(start + 1, indexOfClosingBracket).toLowerCase();\n            }\n            return null;\n        }\n        else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {\n            // Detect port: ':'\n            end = indexOfPort;\n        }\n    }\n    // Trim trailing dots\n    while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {\n        end -= 1;\n    }\n    const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;\n    if (hasUpper) {\n        return hostname.toLowerCase();\n    }\n    return hostname;\n}\n\n/**\n * Check if a hostname is an IP. You should be aware that this only works\n * because `hostname` is already garanteed to be a valid hostname!\n */\nfunction isProbablyIpv4(hostname) {\n    // Cannot be shorted than 1.1.1.1\n    if (hostname.length < 7) {\n        return false;\n    }\n    // Cannot be longer than: 255.255.255.255\n    if (hostname.length > 15) {\n        return false;\n    }\n    let numberOfDots = 0;\n    for (let i = 0; i < hostname.length; i += 1) {\n        const code = hostname.charCodeAt(i);\n        if (code === 46 /* '.' */) {\n            numberOfDots += 1;\n        }\n        else if (code < 48 /* '0' */ || code > 57 /* '9' */) {\n            return false;\n        }\n    }\n    return (numberOfDots === 3 &&\n        hostname.charCodeAt(0) !== 46 /* '.' */ &&\n        hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */);\n}\n/**\n * Similar to isProbablyIpv4.\n */\nfunction isProbablyIpv6(hostname) {\n    if (hostname.length < 3) {\n        return false;\n    }\n    let start = hostname.startsWith('[') ? 1 : 0;\n    let end = hostname.length;\n    if (hostname[end - 1] === ']') {\n        end -= 1;\n    }\n    // We only consider the maximum size of a normal IPV6. Note that this will\n    // fail on so-called \"IPv4 mapped IPv6 addresses\" but this is a corner-case\n    // and a proper validation library should be used for these.\n    if (end - start > 39) {\n        return false;\n    }\n    let hasColon = false;\n    for (; start < end; start += 1) {\n        const code = hostname.charCodeAt(start);\n        if (code === 58 /* ':' */) {\n            hasColon = true;\n        }\n        else if (!(((code >= 48 && code <= 57) || // 0-9\n            (code >= 97 && code <= 102) || // a-f\n            (code >= 65 && code <= 90)) // A-F\n        )) {\n            return false;\n        }\n    }\n    return hasColon;\n}\n/**\n * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).\n * This *will not* work on any string. We need `hostname` to be a valid\n * hostname.\n */\nfunction isIp(hostname) {\n    return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);\n}\n\n/**\n * Implements fast shallow verification of hostnames. This does not perform a\n * struct check on the content of labels (classes of Unicode characters, etc.)\n * but instead check that the structure is valid (number of labels, length of\n * labels, etc.).\n *\n * If you need stricter validation, consider using an external library.\n */\nfunction isValidAscii(code) {\n    return ((code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127);\n}\n/**\n * Check if a hostname string is valid. It's usually a preliminary check before\n * trying to use getDomain or anything else.\n *\n * Beware: it does not check if the TLD exists.\n */\nfunction isValidHostname (hostname) {\n    if (hostname.length > 255) {\n        return false;\n    }\n    if (hostname.length === 0) {\n        return false;\n    }\n    if (\n    /*@__INLINE__*/ !isValidAscii(hostname.charCodeAt(0)) &&\n        hostname.charCodeAt(0) !== 46 && // '.' (dot)\n        hostname.charCodeAt(0) !== 95 // '_' (underscore)\n    ) {\n        return false;\n    }\n    // Validate hostname according to RFC\n    let lastDotIndex = -1;\n    let lastCharCode = -1;\n    const len = hostname.length;\n    for (let i = 0; i < len; i += 1) {\n        const code = hostname.charCodeAt(i);\n        if (code === 46 /* '.' */) {\n            if (\n            // Check that previous label is < 63 bytes long (64 = 63 + '.')\n            i - lastDotIndex > 64 ||\n                // Check that previous character was not already a '.'\n                lastCharCode === 46 ||\n                // Check that the previous label does not end with a '-' (dash)\n                lastCharCode === 45 ||\n                // Check that the previous label does not end with a '_' (underscore)\n                lastCharCode === 95) {\n                return false;\n            }\n            lastDotIndex = i;\n        }\n        else if (!( /*@__INLINE__*/(isValidAscii(code) || code === 45 || code === 95))) {\n            // Check if there is a forbidden character in the label\n            return false;\n        }\n        lastCharCode = code;\n    }\n    return (\n    // Check that last label is shorter than 63 chars\n    len - lastDotIndex - 1 <= 63 &&\n        // Check that the last character is an allowed trailing label character.\n        // Since we already checked that the char is a valid hostname character,\n        // we only need to check that it's different from '-'.\n        lastCharCode !== 45);\n}\n\nfunction setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, extractHostname = true, mixedInputs = true, validHosts = null, validateHostname = true, }) {\n    return {\n        allowIcannDomains,\n        allowPrivateDomains,\n        detectIp,\n        extractHostname,\n        mixedInputs,\n        validHosts,\n        validateHostname,\n    };\n}\nconst DEFAULT_OPTIONS = /*@__INLINE__*/ setDefaultsImpl({});\nfunction setDefaults(options) {\n    if (options === undefined) {\n        return DEFAULT_OPTIONS;\n    }\n    return /*@__INLINE__*/ setDefaultsImpl(options);\n}\n\n/**\n * Returns the subdomain of a hostname string\n */\nfunction getSubdomain$1(hostname, domain) {\n    // If `hostname` and `domain` are the same, then there is no sub-domain\n    if (domain.length === hostname.length) {\n        return '';\n    }\n    return hostname.slice(0, -domain.length - 1);\n}\n\n/**\n * Implement a factory allowing to plug different implementations of suffix\n * lookup (e.g.: using a trie or the packed hashes datastructures). This is used\n * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.\n */\nfunction getEmptyResult() {\n    return {\n        domain: null,\n        domainWithoutSuffix: null,\n        hostname: null,\n        isIcann: null,\n        isIp: null,\n        isPrivate: null,\n        publicSuffix: null,\n        subdomain: null,\n    };\n}\nfunction resetResult(result) {\n    result.domain = null;\n    result.domainWithoutSuffix = null;\n    result.hostname = null;\n    result.isIcann = null;\n    result.isIp = null;\n    result.isPrivate = null;\n    result.publicSuffix = null;\n    result.subdomain = null;\n}\nfunction parseImpl(url, step, suffixLookup, partialOptions, result) {\n    const options = /*@__INLINE__*/ setDefaults(partialOptions);\n    // Very fast approximate check to make sure `url` is a string. This is needed\n    // because the library will not necessarily be used in a typed setup and\n    // values of arbitrary types might be given as argument.\n    if (typeof url !== 'string') {\n        return result;\n    }\n    // Extract hostname from `url` only if needed. This can be made optional\n    // using `options.extractHostname`. This option will typically be used\n    // whenever we are sure the inputs to `parse` are already hostnames and not\n    // arbitrary URLs.\n    //\n    // `mixedInput` allows to specify if we expect a mix of URLs and hostnames\n    // as input. If only hostnames are expected then `extractHostname` can be\n    // set to `false` to speed-up parsing. If only URLs are expected then\n    // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint\n    // and will not change the behavior of the library.\n    if (!options.extractHostname) {\n        result.hostname = url;\n    }\n    else if (options.mixedInputs) {\n        result.hostname = extractHostname(url, isValidHostname(url));\n    }\n    else {\n        result.hostname = extractHostname(url, false);\n    }\n    // Check if `hostname` is a valid ip address\n    if (options.detectIp && result.hostname !== null) {\n        result.isIp = isIp(result.hostname);\n        if (result.isIp) {\n            return result;\n        }\n    }\n    // Perform hostname validation if enabled. If hostname is not valid, no need to\n    // go further as there will be no valid domain or sub-domain. This validation\n    // is applied before any early returns to ensure consistent behavior across\n    // all API methods including getHostname().\n    if (options.validateHostname &&\n        options.extractHostname &&\n        result.hostname !== null &&\n        !isValidHostname(result.hostname)) {\n        result.hostname = null;\n        return result;\n    }\n    if (step === 0 /* FLAG.HOSTNAME */ || result.hostname === null) {\n        return result;\n    }\n    // Extract public suffix\n    suffixLookup(result.hostname, options, result);\n    if (step === 2 /* FLAG.PUBLIC_SUFFIX */ || result.publicSuffix === null) {\n        return result;\n    }\n    // Extract domain\n    result.domain = getDomain$1(result.publicSuffix, result.hostname, options);\n    if (step === 3 /* FLAG.DOMAIN */ || result.domain === null) {\n        return result;\n    }\n    // Extract subdomain\n    result.subdomain = getSubdomain$1(result.hostname, result.domain);\n    if (step === 4 /* FLAG.SUB_DOMAIN */) {\n        return result;\n    }\n    // Extract domain without suffix\n    result.domainWithoutSuffix = getDomainWithoutSuffix$1(result.domain, result.publicSuffix);\n    return result;\n}\n\nfunction fastPathLookup (hostname, options, out) {\n    // Fast path for very popular suffixes; this allows to by-pass lookup\n    // completely as well as any extra allocation or string manipulation.\n    if (!options.allowPrivateDomains && hostname.length > 3) {\n        const last = hostname.length - 1;\n        const c3 = hostname.charCodeAt(last);\n        const c2 = hostname.charCodeAt(last - 1);\n        const c1 = hostname.charCodeAt(last - 2);\n        const c0 = hostname.charCodeAt(last - 3);\n        if (c3 === 109 /* 'm' */ &&\n            c2 === 111 /* 'o' */ &&\n            c1 === 99 /* 'c' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'com';\n            return true;\n        }\n        else if (c3 === 103 /* 'g' */ &&\n            c2 === 114 /* 'r' */ &&\n            c1 === 111 /* 'o' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'org';\n            return true;\n        }\n        else if (c3 === 117 /* 'u' */ &&\n            c2 === 100 /* 'd' */ &&\n            c1 === 101 /* 'e' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'edu';\n            return true;\n        }\n        else if (c3 === 118 /* 'v' */ &&\n            c2 === 111 /* 'o' */ &&\n            c1 === 103 /* 'g' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'gov';\n            return true;\n        }\n        else if (c3 === 116 /* 't' */ &&\n            c2 === 101 /* 'e' */ &&\n            c1 === 110 /* 'n' */ &&\n            c0 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'net';\n            return true;\n        }\n        else if (c3 === 101 /* 'e' */ &&\n            c2 === 100 /* 'd' */ &&\n            c1 === 46 /* '.' */) {\n            out.isIcann = true;\n            out.isPrivate = false;\n            out.publicSuffix = 'de';\n            return true;\n        }\n    }\n    return false;\n}\n\nconst exceptions = (function () {\n    const _0 = [1, {}], _1 = [0, { \"city\": _0 }];\n    const exceptions = [0, { \"ck\": [0, { \"www\": _0 }], \"jp\": [0, { \"kawasaki\": _1, \"kitakyushu\": _1, \"kobe\": _1, \"nagoya\": _1, \"sapporo\": _1, \"sendai\": _1, \"yokohama\": _1 }] }];\n    return exceptions;\n})();\nconst rules = (function () {\n    const _2 = [1, {}], _3 = [2, {}], _4 = [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2 }], _5 = [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], _6 = [0, { \"*\": _3 }], _7 = [2, { \"s\": _6 }], _8 = [0, { \"relay\": _3 }], _9 = [2, { \"id\": _3 }], _10 = [1, { \"gov\": _2 }], _11 = [0, { \"airflow\": _6, \"lambda-url\": _3, \"transfer-webapp\": _3 }], _12 = [0, { \"airflow\": _6, \"transfer-webapp\": _3 }], _13 = [0, { \"transfer-webapp\": _3 }], _14 = [0, { \"transfer-webapp\": _3, \"transfer-webapp-fips\": _3 }], _15 = [0, { \"notebook\": _3, \"studio\": _3 }], _16 = [0, { \"labeling\": _3, \"notebook\": _3, \"studio\": _3 }], _17 = [0, { \"notebook\": _3 }], _18 = [0, { \"labeling\": _3, \"notebook\": _3, \"notebook-fips\": _3, \"studio\": _3 }], _19 = [0, { \"notebook\": _3, \"notebook-fips\": _3, \"studio\": _3, \"studio-fips\": _3 }], _20 = [0, { \"shop\": _3 }], _21 = [0, { \"*\": _2 }], _22 = [1, { \"co\": _3 }], _23 = [0, { \"objects\": _3 }], _24 = [2, { \"nodes\": _3 }], _25 = [0, { \"my\": _3 }], _26 = [0, { \"s3\": _3, \"s3-accesspoint\": _3, \"s3-website\": _3 }], _27 = [0, { \"s3\": _3, \"s3-accesspoint\": _3 }], _28 = [0, { \"direct\": _3 }], _29 = [0, { \"webview-assets\": _3 }], _30 = [0, { \"vfs\": _3, \"webview-assets\": _3 }], _31 = [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _26, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"aws-cloud9\": _29, \"cloud9\": _30 }], _32 = [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _27, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"aws-cloud9\": _29, \"cloud9\": _30 }], _33 = [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _26, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"analytics-gateway\": _3, \"aws-cloud9\": _29, \"cloud9\": _30 }], _34 = [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _26, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3 }], _35 = [0, { \"s3\": _3, \"s3-accesspoint\": _3, \"s3-accesspoint-fips\": _3, \"s3-fips\": _3, \"s3-website\": _3 }], _36 = [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _35, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-accesspoint-fips\": _3, \"s3-fips\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"aws-cloud9\": _29, \"cloud9\": _30 }], _37 = [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _35, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-accesspoint-fips\": _3, \"s3-fips\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3 }], _38 = [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _35, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-accesspoint-fips\": _3, \"s3-deprecated\": _3, \"s3-fips\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"analytics-gateway\": _3, \"aws-cloud9\": _29, \"cloud9\": _30 }], _39 = [0, { \"auth\": _3 }], _40 = [0, { \"auth\": _3, \"auth-fips\": _3 }], _41 = [0, { \"auth-fips\": _3 }], _42 = [0, { \"apps\": _3 }], _43 = [0, { \"paas\": _3 }], _44 = [2, { \"eu\": _3 }], _45 = [0, { \"app\": _3 }], _46 = [0, { \"site\": _3 }], _47 = [1, { \"com\": _2, \"edu\": _2, \"net\": _2, \"org\": _2 }], _48 = [0, { \"j\": _3 }], _49 = [0, { \"dyn\": _3 }], _50 = [2, { \"web\": _3 }], _51 = [1, { \"discourse\": _3 }], _52 = [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2 }], _53 = [0, { \"p\": _3 }], _54 = [0, { \"user\": _3 }], _55 = [0, { \"cdn\": _3 }], _56 = [2, { \"raw\": _6 }], _57 = [0, { \"cust\": _3, \"reservd\": _3 }], _58 = [0, { \"cust\": _3 }], _59 = [0, { \"s3\": _3 }], _60 = [1, { \"biz\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"net\": _2, \"org\": _2 }], _61 = [0, { \"ipfs\": _3 }], _62 = [1, { \"framer\": _3 }], _63 = [0, { \"forgot\": _3 }], _64 = [0, { \"blob\": _3, \"file\": _3, \"web\": _3 }], _65 = [0, { \"core\": _64, \"servicebus\": _3 }], _66 = [1, { \"gs\": _2 }], _67 = [0, { \"nes\": _2 }], _68 = [1, { \"k12\": _2, \"cc\": _2, \"lib\": _2 }], _69 = [1, { \"cc\": _2 }], _70 = [1, { \"cc\": _2, \"lib\": _2 }];\n    const rules = [0, { \"ac\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"drr\": _3, \"feedback\": _3, \"forms\": _3 }], \"ad\": _2, \"ae\": [1, { \"ac\": _2, \"co\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"sch\": _2 }], \"aero\": [1, { \"airline\": _2, \"airport\": _2, \"accident-investigation\": _2, \"accident-prevention\": _2, \"aerobatic\": _2, \"aeroclub\": _2, \"aerodrome\": _2, \"agents\": _2, \"air-surveillance\": _2, \"air-traffic-control\": _2, \"aircraft\": _2, \"airtraffic\": _2, \"ambulance\": _2, \"association\": _2, \"author\": _2, \"ballooning\": _2, \"broker\": _2, \"caa\": _2, \"cargo\": _2, \"catering\": _2, \"certification\": _2, \"championship\": _2, \"charter\": _2, \"civilaviation\": _2, \"club\": _2, \"conference\": _2, \"consultant\": _2, \"consulting\": _2, \"control\": _2, \"council\": _2, \"crew\": _2, \"design\": _2, \"dgca\": _2, \"educator\": _2, \"emergency\": _2, \"engine\": _2, \"engineer\": _2, \"entertainment\": _2, \"equipment\": _2, \"exchange\": _2, \"express\": _2, \"federation\": _2, \"flight\": _2, \"freight\": _2, \"fuel\": _2, \"gliding\": _2, \"government\": _2, \"groundhandling\": _2, \"group\": _2, \"hanggliding\": _2, \"homebuilt\": _2, \"insurance\": _2, \"journal\": _2, \"journalist\": _2, \"leasing\": _2, \"logistics\": _2, \"magazine\": _2, \"maintenance\": _2, \"marketplace\": _2, \"media\": _2, \"microlight\": _2, \"modelling\": _2, \"navigation\": _2, \"parachuting\": _2, \"paragliding\": _2, \"passenger-association\": _2, \"pilot\": _2, \"press\": _2, \"production\": _2, \"recreation\": _2, \"repbody\": _2, \"res\": _2, \"research\": _2, \"rotorcraft\": _2, \"safety\": _2, \"scientist\": _2, \"services\": _2, \"show\": _2, \"skydiving\": _2, \"software\": _2, \"student\": _2, \"taxi\": _2, \"trader\": _2, \"trading\": _2, \"trainer\": _2, \"union\": _2, \"workinggroup\": _2, \"works\": _2 }], \"af\": _4, \"ag\": [1, { \"co\": _2, \"com\": _2, \"net\": _2, \"nom\": _2, \"org\": _2, \"obj\": _3 }], \"ai\": [1, { \"com\": _2, \"net\": _2, \"off\": _2, \"org\": _2, \"uwu\": _3, \"framer\": _3, \"kiloapps\": _3 }], \"al\": _5, \"am\": [1, { \"co\": _2, \"com\": _2, \"commune\": _2, \"net\": _2, \"org\": _2, \"radio\": _3 }], \"ao\": [1, { \"co\": _2, \"ed\": _2, \"edu\": _2, \"gov\": _2, \"gv\": _2, \"it\": _2, \"og\": _2, \"org\": _2, \"pb\": _2 }], \"aq\": _2, \"ar\": [1, { \"bet\": _2, \"com\": _2, \"coop\": _2, \"edu\": _2, \"gob\": _2, \"gov\": _2, \"int\": _2, \"mil\": _2, \"musica\": _2, \"mutual\": _2, \"net\": _2, \"org\": _2, \"seg\": _2, \"senasa\": _2, \"tur\": _2 }], \"arpa\": [1, { \"e164\": _2, \"home\": _2, \"in-addr\": _2, \"ip6\": _2, \"iris\": _2, \"uri\": _2, \"urn\": _2 }], \"as\": _10, \"asia\": [1, { \"cloudns\": _3, \"daemon\": _3, \"dix\": _3 }], \"at\": [1, { \"4\": _3, \"ac\": [1, { \"sth\": _2 }], \"co\": _2, \"gv\": _2, \"or\": _2, \"funkfeuer\": [0, { \"wien\": _3 }], \"futurecms\": [0, { \"*\": _3, \"ex\": _6, \"in\": _6 }], \"futurehosting\": _3, \"futuremailing\": _3, \"ortsinfo\": [0, { \"ex\": _6, \"kunden\": _6 }], \"biz\": _3, \"info\": _3, \"123webseite\": _3, \"priv\": _3, \"my\": _3, \"myspreadshop\": _3, \"12hp\": _3, \"2ix\": _3, \"4lima\": _3, \"lima-city\": _3 }], \"au\": [1, { \"asn\": _2, \"com\": [1, { \"cloudlets\": [0, { \"mel\": _3 }], \"myspreadshop\": _3 }], \"edu\": [1, { \"act\": _2, \"catholic\": _2, \"nsw\": _2, \"nt\": _2, \"qld\": _2, \"sa\": _2, \"tas\": _2, \"vic\": _2, \"wa\": _2 }], \"gov\": [1, { \"qld\": _2, \"sa\": _2, \"tas\": _2, \"vic\": _2, \"wa\": _2 }], \"id\": _2, \"net\": _2, \"org\": _2, \"conf\": _2, \"oz\": _2, \"act\": _2, \"nsw\": _2, \"nt\": _2, \"qld\": _2, \"sa\": _2, \"tas\": _2, \"vic\": _2, \"wa\": _2, \"hrsn\": [0, { \"vps\": _3 }] }], \"aw\": [1, { \"com\": _2 }], \"ax\": _2, \"az\": [1, { \"biz\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"int\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"pp\": _2, \"pro\": _2 }], \"ba\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"brendly\": _20, \"rs\": _3 }], \"bb\": [1, { \"biz\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"net\": _2, \"org\": _2, \"store\": _2, \"tv\": _2 }], \"bd\": [1, { \"ac\": _2, \"ai\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"id\": _2, \"info\": _2, \"it\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"sch\": _2, \"tv\": _2 }], \"be\": [1, { \"ac\": _2, \"cloudns\": _3, \"webhosting\": _3, \"interhostsolutions\": [0, { \"cloud\": _3 }], \"kuleuven\": [0, { \"ezproxy\": _3 }], \"123website\": _3, \"myspreadshop\": _3, \"transurl\": _6 }], \"bf\": _10, \"bg\": [1, { \"0\": _2, \"1\": _2, \"2\": _2, \"3\": _2, \"4\": _2, \"5\": _2, \"6\": _2, \"7\": _2, \"8\": _2, \"9\": _2, \"a\": _2, \"b\": _2, \"c\": _2, \"d\": _2, \"e\": _2, \"f\": _2, \"g\": _2, \"h\": _2, \"i\": _2, \"j\": _2, \"k\": _2, \"l\": _2, \"m\": _2, \"n\": _2, \"o\": _2, \"p\": _2, \"q\": _2, \"r\": _2, \"s\": _2, \"t\": _2, \"u\": _2, \"v\": _2, \"w\": _2, \"x\": _2, \"y\": _2, \"z\": _2, \"barsy\": _3 }], \"bh\": _4, \"bi\": [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"or\": _2, \"org\": _2 }], \"biz\": [1, { \"activetrail\": _3, \"cloud-ip\": _3, \"cloudns\": _3, \"jozi\": _3, \"dyndns\": _3, \"for-better\": _3, \"for-more\": _3, \"for-some\": _3, \"for-the\": _3, \"selfip\": _3, \"webhop\": _3, \"orx\": _3, \"mmafan\": _3, \"myftp\": _3, \"no-ip\": _3, \"dscloud\": _3 }], \"bj\": [1, { \"africa\": _2, \"agro\": _2, \"architectes\": _2, \"assur\": _2, \"avocats\": _2, \"co\": _2, \"com\": _2, \"eco\": _2, \"econo\": _2, \"edu\": _2, \"info\": _2, \"loisirs\": _2, \"money\": _2, \"net\": _2, \"org\": _2, \"ote\": _2, \"restaurant\": _2, \"resto\": _2, \"tourism\": _2, \"univ\": _2 }], \"bm\": _4, \"bn\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"co\": _3 }], \"bo\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"int\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"tv\": _2, \"web\": _2, \"academia\": _2, \"agro\": _2, \"arte\": _2, \"blog\": _2, \"bolivia\": _2, \"ciencia\": _2, \"cooperativa\": _2, \"democracia\": _2, \"deporte\": _2, \"ecologia\": _2, \"economia\": _2, \"empresa\": _2, \"indigena\": _2, \"industria\": _2, \"info\": _2, \"medicina\": _2, \"movimiento\": _2, \"musica\": _2, \"natural\": _2, \"nombre\": _2, \"noticias\": _2, \"patria\": _2, \"plurinacional\": _2, \"politica\": _2, \"profesional\": _2, \"pueblo\": _2, \"revista\": _2, \"salud\": _2, \"tecnologia\": _2, \"tksat\": _2, \"transporte\": _2, \"wiki\": _2 }], \"br\": [1, { \"9guacu\": _2, \"abc\": _2, \"adm\": _2, \"adv\": _2, \"agr\": _2, \"aju\": _2, \"am\": _2, \"anani\": _2, \"aparecida\": _2, \"api\": _2, \"app\": _2, \"arq\": _2, \"art\": _2, \"ato\": _2, \"b\": _2, \"barueri\": _2, \"belem\": _2, \"bet\": _2, \"bhz\": _2, \"bib\": _2, \"bio\": _2, \"blog\": _2, \"bmd\": _2, \"boavista\": _2, \"bsb\": _2, \"campinagrande\": _2, \"campinas\": _2, \"caxias\": _2, \"cim\": _2, \"cng\": _2, \"cnt\": _2, \"com\": [1, { \"simplesite\": _3 }], \"contagem\": _2, \"coop\": _2, \"coz\": _2, \"cri\": _2, \"cuiaba\": _2, \"curitiba\": _2, \"def\": _2, \"des\": _2, \"det\": _2, \"dev\": _2, \"ecn\": _2, \"eco\": _2, \"edu\": _2, \"emp\": _2, \"enf\": _2, \"eng\": _2, \"esp\": _2, \"etc\": _2, \"eti\": _2, \"far\": _2, \"feira\": _2, \"flog\": _2, \"floripa\": _2, \"fm\": _2, \"fnd\": _2, \"fortal\": _2, \"fot\": _2, \"foz\": _2, \"fst\": _2, \"g12\": _2, \"geo\": _2, \"ggf\": _2, \"goiania\": _2, \"gov\": [1, { \"ac\": _2, \"al\": _2, \"am\": _2, \"ap\": _2, \"ba\": _2, \"ce\": _2, \"df\": _2, \"es\": _2, \"go\": _2, \"ma\": _2, \"mg\": _2, \"ms\": _2, \"mt\": _2, \"pa\": _2, \"pb\": _2, \"pe\": _2, \"pi\": _2, \"pr\": _2, \"rj\": _2, \"rn\": _2, \"ro\": _2, \"rr\": _2, \"rs\": _2, \"sc\": _2, \"se\": _2, \"sp\": _2, \"to\": _2 }], \"gru\": _2, \"ia\": _2, \"imb\": _2, \"ind\": _2, \"inf\": _2, \"jab\": _2, \"jampa\": _2, \"jdf\": _2, \"joinville\": _2, \"jor\": _2, \"jus\": _2, \"leg\": [1, { \"ac\": _3, \"al\": _3, \"am\": _3, \"ap\": _3, \"ba\": _3, \"ce\": _3, \"df\": _3, \"es\": _3, \"go\": _3, \"ma\": _3, \"mg\": _3, \"ms\": _3, \"mt\": _3, \"pa\": _3, \"pb\": _3, \"pe\": _3, \"pi\": _3, \"pr\": _3, \"rj\": _3, \"rn\": _3, \"ro\": _3, \"rr\": _3, \"rs\": _3, \"sc\": _3, \"se\": _3, \"sp\": _3, \"to\": _3 }], \"leilao\": _2, \"lel\": _2, \"log\": _2, \"londrina\": _2, \"macapa\": _2, \"maceio\": _2, \"manaus\": _2, \"maringa\": _2, \"mat\": _2, \"med\": _2, \"mil\": _2, \"morena\": _2, \"mp\": _2, \"mus\": _2, \"natal\": _2, \"net\": _2, \"niteroi\": _2, \"nom\": _21, \"not\": _2, \"ntr\": _2, \"odo\": _2, \"ong\": _2, \"org\": _2, \"osasco\": _2, \"palmas\": _2, \"poa\": _2, \"ppg\": _2, \"pro\": _2, \"psc\": _2, \"psi\": _2, \"pvh\": _2, \"qsl\": _2, \"radio\": _2, \"rec\": _2, \"recife\": _2, \"rep\": _2, \"ribeirao\": _2, \"rio\": _2, \"riobranco\": _2, \"riopreto\": _2, \"salvador\": _2, \"sampa\": _2, \"santamaria\": _2, \"santoandre\": _2, \"saobernardo\": _2, \"saogonca\": _2, \"seg\": _2, \"sjc\": _2, \"slg\": _2, \"slz\": _2, \"social\": _2, \"sorocaba\": _2, \"srv\": _2, \"taxi\": _2, \"tc\": _2, \"tec\": _2, \"teo\": _2, \"the\": _2, \"tmp\": _2, \"trd\": _2, \"tur\": _2, \"tv\": _2, \"udi\": _2, \"vet\": _2, \"vix\": _2, \"vlog\": _2, \"wiki\": _2, \"xyz\": _2, \"zlg\": _2, \"tche\": _3 }], \"bs\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"we\": _3 }], \"bt\": _4, \"bv\": _2, \"bw\": [1, { \"ac\": _2, \"co\": _2, \"gov\": _2, \"net\": _2, \"org\": _2 }], \"by\": [1, { \"gov\": _2, \"mil\": _2, \"com\": _2, \"of\": _2, \"mediatech\": _3 }], \"bz\": [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"za\": _3, \"mydns\": _3, \"gsj\": _3 }], \"ca\": [1, { \"ab\": _2, \"bc\": _2, \"mb\": _2, \"nb\": _2, \"nf\": _2, \"nl\": _2, \"ns\": _2, \"nt\": _2, \"nu\": _2, \"on\": _2, \"pe\": _2, \"qc\": _2, \"sk\": _2, \"yk\": _2, \"gc\": _2, \"barsy\": _3, \"awdev\": _6, \"co\": _3, \"no-ip\": _3, \"onid\": _3, \"myspreadshop\": _3, \"box\": _3 }], \"cat\": _2, \"cc\": [1, { \"cleverapps\": _3, \"cloud-ip\": _3, \"cloudns\": _3, \"ccwu\": _3, \"ftpaccess\": _3, \"game-server\": _3, \"myphotos\": _3, \"scrapping\": _3, \"twmail\": _3, \"csx\": _3, \"fantasyleague\": _3, \"spawn\": [0, { \"instances\": _3 }], \"ec\": _3, \"eu\": _3, \"gu\": _3, \"uk\": _3, \"us\": _3 }], \"cd\": [1, { \"gov\": _2, \"cc\": _3 }], \"cf\": _2, \"cg\": _2, \"ch\": [1, { \"square7\": _3, \"cloudns\": _3, \"cloudscale\": [0, { \"cust\": _3, \"lpg\": _23, \"rma\": _23 }], \"objectstorage\": [0, { \"lpg\": _3, \"rma\": _3 }], \"flow\": [0, { \"ae\": [0, { \"alp1\": _3 }], \"appengine\": _3 }], \"linkyard-cloud\": _3, \"gotdns\": _3, \"dnsking\": _3, \"123website\": _3, \"myspreadshop\": _3, \"firenet\": [0, { \"*\": _3, \"svc\": _6 }], \"12hp\": _3, \"2ix\": _3, \"4lima\": _3, \"lima-city\": _3 }], \"ci\": [1, { \"ac\": _2, \"xn--aroport-bya\": _2, \"aéroport\": _2, \"asso\": _2, \"co\": _2, \"com\": _2, \"ed\": _2, \"edu\": _2, \"go\": _2, \"gouv\": _2, \"int\": _2, \"net\": _2, \"or\": _2, \"org\": _2, \"us\": _3 }], \"ck\": _21, \"cl\": [1, { \"co\": _2, \"gob\": _2, \"gov\": _2, \"mil\": _2, \"cloudns\": _3 }], \"cm\": [1, { \"co\": _2, \"com\": _2, \"gov\": _2, \"net\": _2 }], \"cn\": [1, { \"ac\": _2, \"com\": [1, { \"amazonaws\": [0, { \"cn-north-1\": [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"rds\": _6, \"dualstack\": _26, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-deprecated\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3 }], \"cn-northwest-1\": [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"rds\": _6, \"dualstack\": _27, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3 }], \"compute\": _6, \"airflow\": [0, { \"cn-north-1\": _6, \"cn-northwest-1\": _6 }], \"eb\": [0, { \"cn-north-1\": _3, \"cn-northwest-1\": _3 }], \"elb\": _6 }], \"amazonwebservices\": [0, { \"on\": [0, { \"cn-north-1\": _12, \"cn-northwest-1\": _12 }] }], \"sagemaker\": [0, { \"cn-north-1\": _15, \"cn-northwest-1\": _15 }] }], \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"xn--55qx5d\": _2, \"公司\": _2, \"xn--od0alg\": _2, \"網絡\": _2, \"xn--io0a7i\": _2, \"网络\": _2, \"ah\": _2, \"bj\": _2, \"cq\": _2, \"fj\": _2, \"gd\": _2, \"gs\": _2, \"gx\": _2, \"gz\": _2, \"ha\": _2, \"hb\": _2, \"he\": _2, \"hi\": _2, \"hk\": _2, \"hl\": _2, \"hn\": _2, \"jl\": _2, \"js\": _2, \"jx\": _2, \"ln\": _2, \"mo\": _2, \"nm\": _2, \"nx\": _2, \"qh\": _2, \"sc\": _2, \"sd\": _2, \"sh\": [1, { \"as\": _3 }], \"sn\": _2, \"sx\": _2, \"tj\": _2, \"tw\": _2, \"xj\": _2, \"xz\": _2, \"yn\": _2, \"zj\": _2, \"canva-apps\": _3, \"canvasite\": _25, \"myqnapcloud\": _3, \"quickconnect\": _28 }], \"co\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"nom\": _2, \"org\": _2, \"carrd\": _3, \"crd\": _3, \"otap\": _6, \"hidns\": _3, \"leadpages\": _3, \"lpages\": _3, \"mypi\": _3, \"xmit\": _6, \"rdpa\": [0, { \"clusters\": _6, \"srvrless\": _6 }], \"firewalledreplit\": _9, \"repl\": _9, \"supabase\": [2, { \"realtime\": _3, \"storage\": _3 }], \"umso\": _3 }], \"com\": [1, { \"a2hosted\": _3, \"cpserver\": _3, \"adobeaemcloud\": [2, { \"dev\": _6 }], \"africa\": _3, \"auiusercontent\": _6, \"aivencloud\": _3, \"alibabacloudcs\": _3, \"kasserver\": _3, \"amazonaws\": [0, { \"af-south-1\": _31, \"ap-east-1\": _32, \"ap-northeast-1\": _33, \"ap-northeast-2\": _33, \"ap-northeast-3\": _31, \"ap-south-1\": _33, \"ap-south-2\": _34, \"ap-southeast-1\": _33, \"ap-southeast-2\": _33, \"ap-southeast-3\": _34, \"ap-southeast-4\": _34, \"ap-southeast-5\": [0, { \"execute-api\": _3, \"dualstack\": _26, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-deprecated\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3 }], \"ca-central-1\": _36, \"ca-west-1\": _37, \"eu-central-1\": _33, \"eu-central-2\": _34, \"eu-north-1\": _32, \"eu-south-1\": _31, \"eu-south-2\": _34, \"eu-west-1\": [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _26, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-deprecated\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"analytics-gateway\": _3, \"aws-cloud9\": _29, \"cloud9\": _30 }], \"eu-west-2\": _32, \"eu-west-3\": _31, \"il-central-1\": [0, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _26, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"aws-cloud9\": _29, \"cloud9\": [0, { \"vfs\": _3 }] }], \"me-central-1\": _34, \"me-south-1\": _32, \"sa-east-1\": _31, \"us-east-1\": [2, { \"execute-api\": _3, \"emrappui-prod\": _3, \"emrnotebooks-prod\": _3, \"emrstudio-prod\": _3, \"dualstack\": _35, \"s3\": _3, \"s3-accesspoint\": _3, \"s3-accesspoint-fips\": _3, \"s3-deprecated\": _3, \"s3-fips\": _3, \"s3-object-lambda\": _3, \"s3-website\": _3, \"analytics-gateway\": _3, \"aws-cloud9\": _29, \"cloud9\": _30 }], \"us-east-2\": _38, \"us-gov-east-1\": _37, \"us-gov-west-1\": _37, \"us-west-1\": _36, \"us-west-2\": _38, \"compute\": _6, \"compute-1\": _6, \"airflow\": [0, { \"af-south-1\": _6, \"ap-east-1\": _6, \"ap-northeast-1\": _6, \"ap-northeast-2\": _6, \"ap-northeast-3\": _6, \"ap-south-1\": _6, \"ap-south-2\": _6, \"ap-southeast-1\": _6, \"ap-southeast-2\": _6, \"ap-southeast-3\": _6, \"ap-southeast-4\": _6, \"ap-southeast-5\": _6, \"ap-southeast-7\": _6, \"ca-central-1\": _6, \"ca-west-1\": _6, \"eu-central-1\": _6, \"eu-central-2\": _6, \"eu-north-1\": _6, \"eu-south-1\": _6, \"eu-south-2\": _6, \"eu-west-1\": _6, \"eu-west-2\": _6, \"eu-west-3\": _6, \"il-central-1\": _6, \"me-central-1\": _6, \"me-south-1\": _6, \"sa-east-1\": _6, \"us-east-1\": _6, \"us-east-2\": _6, \"us-west-1\": _6, \"us-west-2\": _6 }], \"rds\": [0, { \"af-south-1\": _6, \"ap-east-1\": _6, \"ap-east-2\": _6, \"ap-northeast-1\": _6, \"ap-northeast-2\": _6, \"ap-northeast-3\": _6, \"ap-south-1\": _6, \"ap-south-2\": _6, \"ap-southeast-1\": _6, \"ap-southeast-2\": _6, \"ap-southeast-3\": _6, \"ap-southeast-4\": _6, \"ap-southeast-5\": _6, \"ap-southeast-6\": _6, \"ap-southeast-7\": _6, \"ca-central-1\": _6, \"ca-west-1\": _6, \"eu-central-1\": _6, \"eu-central-2\": _6, \"eu-west-1\": _6, \"eu-west-2\": _6, \"eu-west-3\": _6, \"il-central-1\": _6, \"me-central-1\": _6, \"me-south-1\": _6, \"mx-central-1\": _6, \"sa-east-1\": _6, \"us-east-1\": _6, \"us-east-2\": _6, \"us-gov-east-1\": _6, \"us-gov-west-1\": _6, \"us-northeast-1\": _6, \"us-west-1\": _6, \"us-west-2\": _6 }], \"s3\": _3, \"s3-1\": _3, \"s3-ap-east-1\": _3, \"s3-ap-northeast-1\": _3, \"s3-ap-northeast-2\": _3, \"s3-ap-northeast-3\": _3, \"s3-ap-south-1\": _3, \"s3-ap-southeast-1\": _3, \"s3-ap-southeast-2\": _3, \"s3-ca-central-1\": _3, \"s3-eu-central-1\": _3, \"s3-eu-north-1\": _3, \"s3-eu-west-1\": _3, \"s3-eu-west-2\": _3, \"s3-eu-west-3\": _3, \"s3-external-1\": _3, \"s3-fips-us-gov-east-1\": _3, \"s3-fips-us-gov-west-1\": _3, \"s3-global\": [0, { \"accesspoint\": [0, { \"mrap\": _3 }] }], \"s3-me-south-1\": _3, \"s3-sa-east-1\": _3, \"s3-us-east-2\": _3, \"s3-us-gov-east-1\": _3, \"s3-us-gov-west-1\": _3, \"s3-us-west-1\": _3, \"s3-us-west-2\": _3, \"s3-website-ap-northeast-1\": _3, \"s3-website-ap-southeast-1\": _3, \"s3-website-ap-southeast-2\": _3, \"s3-website-eu-west-1\": _3, \"s3-website-sa-east-1\": _3, \"s3-website-us-east-1\": _3, \"s3-website-us-gov-west-1\": _3, \"s3-website-us-west-1\": _3, \"s3-website-us-west-2\": _3, \"elb\": _6 }], \"amazoncognito\": [0, { \"af-south-1\": _39, \"ap-east-1\": _39, \"ap-northeast-1\": _39, \"ap-northeast-2\": _39, \"ap-northeast-3\": _39, \"ap-south-1\": _39, \"ap-south-2\": _39, \"ap-southeast-1\": _39, \"ap-southeast-2\": _39, \"ap-southeast-3\": _39, \"ap-southeast-4\": _39, \"ap-southeast-5\": _39, \"ap-southeast-7\": _39, \"ca-central-1\": _39, \"ca-west-1\": _39, \"eu-central-1\": _39, \"eu-central-2\": _39, \"eu-north-1\": _39, \"eu-south-1\": _39, \"eu-south-2\": _39, \"eu-west-1\": _39, \"eu-west-2\": _39, \"eu-west-3\": _39, \"il-central-1\": _39, \"me-central-1\": _39, \"me-south-1\": _39, \"mx-central-1\": _39, \"sa-east-1\": _39, \"us-east-1\": _40, \"us-east-2\": _40, \"us-gov-east-1\": _41, \"us-gov-west-1\": _41, \"us-west-1\": _40, \"us-west-2\": _40 }], \"amplifyapp\": _3, \"awsapprunner\": _6, \"awsapps\": _3, \"elasticbeanstalk\": [2, { \"af-south-1\": _3, \"ap-east-1\": _3, \"ap-northeast-1\": _3, \"ap-northeast-2\": _3, \"ap-northeast-3\": _3, \"ap-south-1\": _3, \"ap-southeast-1\": _3, \"ap-southeast-2\": _3, \"ap-southeast-3\": _3, \"ap-southeast-5\": _3, \"ap-southeast-7\": _3, \"ca-central-1\": _3, \"eu-central-1\": _3, \"eu-north-1\": _3, \"eu-south-1\": _3, \"eu-south-2\": _3, \"eu-west-1\": _3, \"eu-west-2\": _3, \"eu-west-3\": _3, \"il-central-1\": _3, \"me-central-1\": _3, \"me-south-1\": _3, \"sa-east-1\": _3, \"us-east-1\": _3, \"us-east-2\": _3, \"us-gov-east-1\": _3, \"us-gov-west-1\": _3, \"us-west-1\": _3, \"us-west-2\": _3 }], \"awsglobalaccelerator\": _3, \"siiites\": _3, \"appspacehosted\": _3, \"appspaceusercontent\": _3, \"on-aptible\": _3, \"myasustor\": _3, \"balena-devices\": _3, \"boutir\": _3, \"bplaced\": _3, \"cafjs\": _3, \"canva-apps\": _3, \"canva-hosted-embed\": _3, \"canvacode\": _3, \"rice-labs\": _3, \"cdn77-storage\": _3, \"br\": _3, \"cn\": _3, \"de\": _3, \"eu\": _3, \"jpn\": _3, \"mex\": _3, \"ru\": _3, \"sa\": _3, \"uk\": _3, \"us\": _3, \"za\": _3, \"clever-cloud\": [0, { \"services\": _6 }], \"abrdns\": _3, \"dnsabr\": _3, \"ip-ddns\": _3, \"jdevcloud\": _3, \"wpdevcloud\": _3, \"cf-ipfs\": _3, \"cloudflare-ipfs\": _3, \"trycloudflare\": _3, \"co\": _3, \"devinapps\": _6, \"builtwithdark\": _3, \"datadetect\": [0, { \"demo\": _3, \"instance\": _3 }], \"dattolocal\": _3, \"dattorelay\": _3, \"dattoweb\": _3, \"mydatto\": _3, \"digitaloceanspaces\": _6, \"discordsays\": _3, \"discordsez\": _3, \"drayddns\": _3, \"dreamhosters\": _3, \"durumis\": _3, \"blogdns\": _3, \"cechire\": _3, \"dnsalias\": _3, \"dnsdojo\": _3, \"doesntexist\": _3, \"dontexist\": _3, \"doomdns\": _3, \"dyn-o-saur\": _3, \"dynalias\": _3, \"dyndns-at-home\": _3, \"dyndns-at-work\": _3, \"dyndns-blog\": _3, \"dyndns-free\": _3, \"dyndns-home\": _3, \"dyndns-ip\": _3, \"dyndns-mail\": _3, \"dyndns-office\": _3, \"dyndns-pics\": _3, \"dyndns-remote\": _3, \"dyndns-server\": _3, \"dyndns-web\": _3, \"dyndns-wiki\": _3, \"dyndns-work\": _3, \"est-a-la-maison\": _3, \"est-a-la-masion\": _3, \"est-le-patron\": _3, \"est-mon-blogueur\": _3, \"from-ak\": _3, \"from-al\": _3, \"from-ar\": _3, \"from-ca\": _3, \"from-ct\": _3, \"from-dc\": _3, \"from-de\": _3, \"from-fl\": _3, \"from-ga\": _3, \"from-hi\": _3, \"from-ia\": _3, \"from-id\": _3, \"from-il\": _3, \"from-in\": _3, \"from-ks\": _3, \"from-ky\": _3, \"from-ma\": _3, \"from-md\": _3, \"from-mi\": _3, \"from-mn\": _3, \"from-mo\": _3, \"from-ms\": _3, \"from-mt\": _3, \"from-nc\": _3, \"from-nd\": _3, \"from-ne\": _3, \"from-nh\": _3, \"from-nj\": _3, \"from-nm\": _3, \"from-nv\": _3, \"from-oh\": _3, \"from-ok\": _3, \"from-or\": _3, \"from-pa\": _3, \"from-pr\": _3, \"from-ri\": _3, \"from-sc\": _3, \"from-sd\": _3, \"from-tn\": _3, \"from-tx\": _3, \"from-ut\": _3, \"from-va\": _3, \"from-vt\": _3, \"from-wa\": _3, \"from-wi\": _3, \"from-wv\": _3, \"from-wy\": _3, \"getmyip\": _3, \"gotdns\": _3, \"hobby-site\": _3, \"homelinux\": _3, \"homeunix\": _3, \"iamallama\": _3, \"is-a-anarchist\": _3, \"is-a-blogger\": _3, \"is-a-bookkeeper\": _3, \"is-a-bulls-fan\": _3, \"is-a-caterer\": _3, \"is-a-chef\": _3, \"is-a-conservative\": _3, \"is-a-cpa\": _3, \"is-a-cubicle-slave\": _3, \"is-a-democrat\": _3, \"is-a-designer\": _3, \"is-a-doctor\": _3, \"is-a-financialadvisor\": _3, \"is-a-geek\": _3, \"is-a-green\": _3, \"is-a-guru\": _3, \"is-a-hard-worker\": _3, \"is-a-hunter\": _3, \"is-a-landscaper\": _3, \"is-a-lawyer\": _3, \"is-a-liberal\": _3, \"is-a-libertarian\": _3, \"is-a-llama\": _3, \"is-a-musician\": _3, \"is-a-nascarfan\": _3, \"is-a-nurse\": _3, \"is-a-painter\": _3, \"is-a-personaltrainer\": _3, \"is-a-photographer\": _3, \"is-a-player\": _3, \"is-a-republican\": _3, \"is-a-rockstar\": _3, \"is-a-socialist\": _3, \"is-a-student\": _3, \"is-a-teacher\": _3, \"is-a-techie\": _3, \"is-a-therapist\": _3, \"is-an-accountant\": _3, \"is-an-actor\": _3, \"is-an-actress\": _3, \"is-an-anarchist\": _3, \"is-an-artist\": _3, \"is-an-engineer\": _3, \"is-an-entertainer\": _3, \"is-certified\": _3, \"is-gone\": _3, \"is-into-anime\": _3, \"is-into-cars\": _3, \"is-into-cartoons\": _3, \"is-into-games\": _3, \"is-leet\": _3, \"is-not-certified\": _3, \"is-slick\": _3, \"is-uberleet\": _3, \"is-with-theband\": _3, \"isa-geek\": _3, \"isa-hockeynut\": _3, \"issmarterthanyou\": _3, \"likes-pie\": _3, \"likescandy\": _3, \"neat-url\": _3, \"saves-the-whales\": _3, \"selfip\": _3, \"sells-for-less\": _3, \"sells-for-u\": _3, \"servebbs\": _3, \"simple-url\": _3, \"space-to-rent\": _3, \"teaches-yoga\": _3, \"writesthisblog\": _3, \"1cooldns\": _3, \"bumbleshrimp\": _3, \"ddnsfree\": _3, \"ddnsgeek\": _3, \"ddnsguru\": _3, \"dynuddns\": _3, \"dynuhosting\": _3, \"giize\": _3, \"gleeze\": _3, \"kozow\": _3, \"loseyourip\": _3, \"ooguy\": _3, \"pivohosting\": _3, \"theworkpc\": _3, \"wiredbladehosting\": _3, \"emergentagent\": [0, { \"preview\": _3 }], \"mytuleap\": _3, \"tuleap-partners\": _3, \"encoreapi\": _3, \"evennode\": [0, { \"eu-1\": _3, \"eu-2\": _3, \"eu-3\": _3, \"eu-4\": _3, \"us-1\": _3, \"us-2\": _3, \"us-3\": _3, \"us-4\": _3 }], \"onfabrica\": _3, \"fastly-edge\": _3, \"fastly-terrarium\": _3, \"fastvps-server\": _3, \"mydobiss\": _3, \"firebaseapp\": _3, \"fldrv\": _3, \"framercanvas\": _3, \"freebox-os\": _3, \"freeboxos\": _3, \"freemyip\": _3, \"aliases121\": _3, \"gentapps\": _3, \"gentlentapis\": _3, \"githubusercontent\": _3, \"0emm\": _6, \"appspot\": [2, { \"r\": _6 }], \"blogspot\": _3, \"codespot\": _3, \"googleapis\": _3, \"googlecode\": _3, \"pagespeedmobilizer\": _3, \"withgoogle\": _3, \"withyoutube\": _3, \"grayjayleagues\": _3, \"hatenablog\": _3, \"hatenadiary\": _3, \"hercules-app\": _3, \"hercules-dev\": _3, \"herokuapp\": _3, \"gr\": _3, \"smushcdn\": _3, \"wphostedmail\": _3, \"wpmucdn\": _3, \"pixolino\": _3, \"apps-1and1\": _3, \"live-website\": _3, \"webspace-host\": _3, \"dopaas\": _3, \"hosted-by-previder\": _43, \"hosteur\": [0, { \"rag-cloud\": _3, \"rag-cloud-ch\": _3 }], \"ik-server\": [0, { \"jcloud\": _3, \"jcloud-ver-jpc\": _3 }], \"jelastic\": [0, { \"demo\": _3 }], \"massivegrid\": _43, \"wafaicloud\": [0, { \"jed\": _3, \"ryd\": _3 }], \"eu1-plenit\": _3, \"la1-plenit\": _3, \"us1-plenit\": _3, \"webadorsite\": _3, \"on-forge\": _3, \"on-vapor\": _3, \"lpusercontent\": _3, \"linode\": [0, { \"members\": _3, \"nodebalancer\": _6 }], \"linodeobjects\": _6, \"linodeusercontent\": [0, { \"ip\": _3 }], \"localtonet\": _3, \"lovableproject\": _3, \"barsycenter\": _3, \"barsyonline\": _3, \"lutrausercontent\": _6, \"magicpatternsapp\": _3, \"modelscape\": _3, \"mwcloudnonprod\": _3, \"polyspace\": _3, \"mazeplay\": _3, \"miniserver\": _3, \"atmeta\": _3, \"fbsbx\": _42, \"meteorapp\": _44, \"routingthecloud\": _3, \"same-app\": _3, \"same-preview\": _3, \"mydbserver\": _3, \"mochausercontent\": _3, \"hostedpi\": _3, \"mythic-beasts\": [0, { \"caracal\": _3, \"customer\": _3, \"fentiger\": _3, \"lynx\": _3, \"ocelot\": _3, \"oncilla\": _3, \"onza\": _3, \"sphinx\": _3, \"vs\": _3, \"x\": _3, \"yali\": _3 }], \"nospamproxy\": [0, { \"cloud\": [2, { \"o365\": _3 }] }], \"4u\": _3, \"nfshost\": _3, \"3utilities\": _3, \"blogsyte\": _3, \"ciscofreak\": _3, \"damnserver\": _3, \"ddnsking\": _3, \"ditchyourip\": _3, \"dnsiskinky\": _3, \"dynns\": _3, \"geekgalaxy\": _3, \"health-carereform\": _3, \"homesecuritymac\": _3, \"homesecuritypc\": _3, \"myactivedirectory\": _3, \"mysecuritycamera\": _3, \"myvnc\": _3, \"net-freaks\": _3, \"onthewifi\": _3, \"point2this\": _3, \"quicksytes\": _3, \"securitytactics\": _3, \"servebeer\": _3, \"servecounterstrike\": _3, \"serveexchange\": _3, \"serveftp\": _3, \"servegame\": _3, \"servehalflife\": _3, \"servehttp\": _3, \"servehumour\": _3, \"serveirc\": _3, \"servemp3\": _3, \"servep2p\": _3, \"servepics\": _3, \"servequake\": _3, \"servesarcasm\": _3, \"stufftoread\": _3, \"unusualperson\": _3, \"workisboring\": _3, \"myiphost\": _3, \"observableusercontent\": [0, { \"static\": _3 }], \"simplesite\": _3, \"oaiusercontent\": _6, \"orsites\": _3, \"operaunite\": _3, \"customer-oci\": [0, { \"*\": _3, \"oci\": _6, \"ocp\": _6, \"ocs\": _6 }], \"oraclecloudapps\": _6, \"oraclegovcloudapps\": _6, \"authgear-staging\": _3, \"authgearapps\": _3, \"outsystemscloud\": _3, \"ownprovider\": _3, \"pgfog\": _3, \"pagexl\": _3, \"gotpantheon\": _3, \"paywhirl\": _6, \"forgeblocks\": _3, \"upsunapp\": _3, \"postman-echo\": _3, \"prgmr\": [0, { \"xen\": _3 }], \"project-study\": [0, { \"dev\": _3 }], \"pythonanywhere\": _44, \"qa2\": _3, \"alpha-myqnapcloud\": _3, \"dev-myqnapcloud\": _3, \"mycloudnas\": _3, \"mynascloud\": _3, \"myqnapcloud\": _3, \"qualifioapp\": _3, \"ladesk\": _3, \"qualyhqpartner\": _6, \"qualyhqportal\": _6, \"qbuser\": _3, \"quipelements\": _6, \"rackmaze\": _3, \"readthedocs-hosted\": _3, \"rhcloud\": _3, \"onrender\": _3, \"render\": _45, \"subsc-pay\": _3, \"180r\": _3, \"dojin\": _3, \"sakuratan\": _3, \"sakuraweb\": _3, \"x0\": _3, \"code\": [0, { \"builder\": _6, \"dev-builder\": _6, \"stg-builder\": _6 }], \"salesforce\": [0, { \"platform\": [0, { \"code-builder-stg\": [0, { \"test\": [0, { \"001\": _6 }] }] }] }], \"logoip\": _3, \"scrysec\": _3, \"firewall-gateway\": _3, \"myshopblocks\": _3, \"myshopify\": _3, \"shopitsite\": _3, \"1kapp\": _3, \"appchizi\": _3, \"applinzi\": _3, \"sinaapp\": _3, \"vipsinaapp\": _3, \"streamlitapp\": _3, \"try-snowplow\": _3, \"playstation-cloud\": _3, \"myspreadshop\": _3, \"w-corp-staticblitz\": _3, \"w-credentialless-staticblitz\": _3, \"w-staticblitz\": _3, \"stackhero-network\": _3, \"stdlib\": [0, { \"api\": _3 }], \"strapiapp\": [2, { \"media\": _3 }], \"streak-link\": _3, \"streaklinks\": _3, \"streakusercontent\": _3, \"temp-dns\": _3, \"dsmynas\": _3, \"familyds\": _3, \"mytabit\": _3, \"taveusercontent\": _3, \"tb-hosting\": _46, \"reservd\": _3, \"thingdustdata\": _3, \"townnews-staging\": _3, \"typeform\": [0, { \"pro\": _3 }], \"hk\": _3, \"it\": _3, \"deus-canvas\": _3, \"vultrobjects\": _6, \"wafflecell\": _3, \"hotelwithflight\": _3, \"reserve-online\": _3, \"cprapid\": _3, \"pleskns\": _3, \"remotewd\": _3, \"wiardweb\": [0, { \"pages\": _3 }], \"base44-sandbox\": _3, \"wixsite\": _3, \"wixstudio\": _3, \"messwithdns\": _3, \"woltlab-demo\": _3, \"wpenginepowered\": [2, { \"js\": _3 }], \"xnbay\": [2, { \"u2\": _3, \"u2-local\": _3 }], \"xtooldevice\": _3, \"yolasite\": _3 }], \"coop\": _2, \"cr\": [1, { \"ac\": _2, \"co\": _2, \"ed\": _2, \"fi\": _2, \"go\": _2, \"or\": _2, \"sa\": _2 }], \"cu\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"inf\": _2, \"nat\": _2, \"net\": _2, \"org\": _2 }], \"cv\": [1, { \"com\": _2, \"edu\": _2, \"id\": _2, \"int\": _2, \"net\": _2, \"nome\": _2, \"org\": _2, \"publ\": _2 }], \"cw\": _47, \"cx\": [1, { \"gov\": _2, \"cloudns\": _3, \"ath\": _3, \"info\": _3, \"assessments\": _3, \"calculators\": _3, \"funnels\": _3, \"paynow\": _3, \"quizzes\": _3, \"researched\": _3, \"tests\": _3 }], \"cy\": [1, { \"ac\": _2, \"biz\": _2, \"com\": [1, { \"scaleforce\": _48 }], \"ekloges\": _2, \"gov\": _2, \"ltd\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"press\": _2, \"pro\": _2, \"tm\": _2 }], \"cz\": [1, { \"gov\": _2, \"contentproxy9\": [0, { \"rsc\": _3 }], \"realm\": _3, \"e4\": _3, \"co\": _3, \"metacentrum\": [0, { \"cloud\": _6, \"custom\": _3 }], \"muni\": [0, { \"cloud\": [0, { \"flt\": _3, \"usr\": _3 }] }] }], \"de\": [1, { \"bplaced\": _3, \"square7\": _3, \"bwcloud-os-instance\": _6, \"com\": _3, \"cosidns\": _49, \"dnsupdater\": _3, \"dynamisches-dns\": _3, \"internet-dns\": _3, \"l-o-g-i-n\": _3, \"ddnss\": [2, { \"dyn\": _3, \"dyndns\": _3 }], \"dyn-ip24\": _3, \"dyndns1\": _3, \"home-webserver\": [2, { \"dyn\": _3 }], \"myhome-server\": _3, \"dnshome\": _3, \"fuettertdasnetz\": _3, \"isteingeek\": _3, \"istmein\": _3, \"lebtimnetz\": _3, \"leitungsen\": _3, \"traeumtgerade\": _3, \"frusky\": _6, \"goip\": _3, \"xn--gnstigbestellen-zvb\": _3, \"günstigbestellen\": _3, \"xn--gnstigliefern-wob\": _3, \"günstigliefern\": _3, \"hs-heilbronn\": [0, { \"it\": [0, { \"pages\": _3, \"pages-research\": _3 }] }], \"dyn-berlin\": _3, \"in-berlin\": _3, \"in-brb\": _3, \"in-butter\": _3, \"in-dsl\": _3, \"in-vpn\": _3, \"iservschule\": _3, \"mein-iserv\": _3, \"schuldock\": _3, \"schulplattform\": _3, \"schulserver\": _3, \"test-iserv\": _3, \"keymachine\": _3, \"co\": _3, \"git-repos\": _3, \"lcube-server\": _3, \"svn-repos\": _3, \"barsy\": _3, \"webspaceconfig\": _3, \"123webseite\": _3, \"rub\": _3, \"ruhr-uni-bochum\": [2, { \"noc\": [0, { \"io\": _3 }] }], \"logoip\": _3, \"firewall-gateway\": _3, \"my-gateway\": _3, \"my-router\": _3, \"spdns\": _3, \"my\": _3, \"speedpartner\": [0, { \"customer\": _3 }], \"myspreadshop\": _3, \"taifun-dns\": _3, \"12hp\": _3, \"2ix\": _3, \"4lima\": _3, \"lima-city\": _3, \"virtual-user\": _3, \"virtualuser\": _3, \"community-pro\": _3, \"diskussionsbereich\": _3, \"xenonconnect\": _6 }], \"dj\": _2, \"dk\": [1, { \"biz\": _3, \"co\": _3, \"firm\": _3, \"reg\": _3, \"store\": _3, \"123hjemmeside\": _3, \"myspreadshop\": _3 }], \"dm\": _52, \"do\": [1, { \"art\": _2, \"com\": _2, \"edu\": _2, \"gob\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"sld\": _2, \"web\": _2 }], \"dz\": [1, { \"art\": _2, \"asso\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"pol\": _2, \"soc\": _2, \"tm\": _2 }], \"ec\": [1, { \"abg\": _2, \"adm\": _2, \"agron\": _2, \"arqt\": _2, \"art\": _2, \"bar\": _2, \"chef\": _2, \"com\": _2, \"cont\": _2, \"cpa\": _2, \"cue\": _2, \"dent\": _2, \"dgn\": _2, \"disco\": _2, \"doc\": _2, \"edu\": _2, \"eng\": _2, \"esm\": _2, \"fin\": _2, \"fot\": _2, \"gal\": _2, \"gob\": _2, \"gov\": _2, \"gye\": _2, \"ibr\": _2, \"info\": _2, \"k12\": _2, \"lat\": _2, \"loj\": _2, \"med\": _2, \"mil\": _2, \"mktg\": _2, \"mon\": _2, \"net\": _2, \"ntr\": _2, \"odont\": _2, \"org\": _2, \"pro\": _2, \"prof\": _2, \"psic\": _2, \"psiq\": _2, \"pub\": _2, \"rio\": _2, \"rrpp\": _2, \"sal\": _2, \"tech\": _2, \"tul\": _2, \"tur\": _2, \"uio\": _2, \"vet\": _2, \"xxx\": _2, \"base\": _3, \"official\": _3 }], \"edu\": [1, { \"rit\": [0, { \"git-pages\": _3 }] }], \"ee\": [1, { \"aip\": _2, \"com\": _2, \"edu\": _2, \"fie\": _2, \"gov\": _2, \"lib\": _2, \"med\": _2, \"org\": _2, \"pri\": _2, \"riik\": _2 }], \"eg\": [1, { \"ac\": _2, \"com\": _2, \"edu\": _2, \"eun\": _2, \"gov\": _2, \"info\": _2, \"me\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"sci\": _2, \"sport\": _2, \"tv\": _2 }], \"er\": _21, \"es\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"nom\": _2, \"org\": _2, \"123miweb\": _3, \"myspreadshop\": _3 }], \"et\": [1, { \"biz\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"name\": _2, \"net\": _2, \"org\": _2 }], \"eu\": [1, { \"amazonwebservices\": [0, { \"on\": [0, { \"eusc-de-east-1\": [0, { \"cognito-idp\": _39 }] }] }], \"cloudns\": _3, \"prvw\": _3, \"deuxfleurs\": _3, \"dogado\": [0, { \"jelastic\": _3 }], \"barsy\": _3, \"spdns\": _3, \"nxa\": _6, \"directwp\": _3, \"transurl\": _6 }], \"fi\": [1, { \"aland\": _2, \"dy\": _3, \"xn--hkkinen-5wa\": _3, \"häkkinen\": _3, \"iki\": _3, \"cloudplatform\": [0, { \"fi\": _3 }], \"datacenter\": [0, { \"demo\": _3, \"paas\": _3 }], \"kapsi\": _3, \"123kotisivu\": _3, \"myspreadshop\": _3 }], \"fj\": [1, { \"ac\": _2, \"biz\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"id\": _2, \"info\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"pro\": _2 }], \"fk\": _21, \"fm\": [1, { \"com\": _2, \"edu\": _2, \"net\": _2, \"org\": _2, \"radio\": _3, \"user\": _6 }], \"fo\": _2, \"fr\": [1, { \"asso\": _2, \"com\": _2, \"gouv\": _2, \"nom\": _2, \"prd\": _2, \"tm\": _2, \"avoues\": _2, \"cci\": _2, \"greta\": _2, \"huissier-justice\": _2, \"fbx-os\": _3, \"fbxos\": _3, \"freebox-os\": _3, \"freeboxos\": _3, \"goupile\": _3, \"123siteweb\": _3, \"on-web\": _3, \"chirurgiens-dentistes-en-france\": _3, \"dedibox\": _3, \"aeroport\": _3, \"avocat\": _3, \"chambagri\": _3, \"chirurgiens-dentistes\": _3, \"experts-comptables\": _3, \"medecin\": _3, \"notaires\": _3, \"pharmacien\": _3, \"port\": _3, \"veterinaire\": _3, \"myspreadshop\": _3, \"ynh\": _3 }], \"ga\": _2, \"gb\": _2, \"gd\": [1, { \"edu\": _2, \"gov\": _2 }], \"ge\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"pvt\": _2, \"school\": _2 }], \"gf\": _2, \"gg\": [1, { \"co\": _2, \"net\": _2, \"org\": _2, \"ply\": [0, { \"at\": _6, \"d6\": _3 }], \"botdash\": _3, \"kaas\": _3, \"stackit\": _3, \"panel\": [2, { \"daemon\": _3 }] }], \"gh\": [1, { \"biz\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], \"gi\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"ltd\": _2, \"mod\": _2, \"org\": _2 }], \"gl\": [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"net\": _2, \"org\": _2 }], \"gm\": _2, \"gn\": [1, { \"ac\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2 }], \"gov\": _2, \"gp\": [1, { \"asso\": _2, \"com\": _2, \"edu\": _2, \"mobi\": _2, \"net\": _2, \"org\": _2 }], \"gq\": _2, \"gr\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"barsy\": _3, \"simplesite\": _3 }], \"gs\": _2, \"gt\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"ind\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], \"gu\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"guam\": _2, \"info\": _2, \"net\": _2, \"org\": _2, \"web\": _2 }], \"gw\": [1, { \"nx\": _3 }], \"gy\": _52, \"hk\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"idv\": _2, \"net\": _2, \"org\": _2, \"xn--ciqpn\": _2, \"个人\": _2, \"xn--gmqw5a\": _2, \"個人\": _2, \"xn--55qx5d\": _2, \"公司\": _2, \"xn--mxtq1m\": _2, \"政府\": _2, \"xn--lcvr32d\": _2, \"敎育\": _2, \"xn--wcvs22d\": _2, \"教育\": _2, \"xn--gmq050i\": _2, \"箇人\": _2, \"xn--uc0atv\": _2, \"組織\": _2, \"xn--uc0ay4a\": _2, \"組织\": _2, \"xn--od0alg\": _2, \"網絡\": _2, \"xn--zf0avx\": _2, \"網络\": _2, \"xn--mk0axi\": _2, \"组織\": _2, \"xn--tn0ag\": _2, \"组织\": _2, \"xn--od0aq3b\": _2, \"网絡\": _2, \"xn--io0a7i\": _2, \"网络\": _2, \"inc\": _3, \"ltd\": _3 }], \"hm\": _2, \"hn\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], \"hr\": [1, { \"com\": _2, \"from\": _2, \"iz\": _2, \"name\": _2, \"brendly\": _20 }], \"ht\": [1, { \"adult\": _2, \"art\": _2, \"asso\": _2, \"com\": _2, \"coop\": _2, \"edu\": _2, \"firm\": _2, \"gouv\": _2, \"info\": _2, \"med\": _2, \"net\": _2, \"org\": _2, \"perso\": _2, \"pol\": _2, \"pro\": _2, \"rel\": _2, \"shop\": _2, \"rt\": _3 }], \"hu\": [1, { \"2000\": _2, \"agrar\": _2, \"bolt\": _2, \"casino\": _2, \"city\": _2, \"co\": _2, \"erotica\": _2, \"erotika\": _2, \"film\": _2, \"forum\": _2, \"games\": _2, \"hotel\": _2, \"info\": _2, \"ingatlan\": _2, \"jogasz\": _2, \"konyvelo\": _2, \"lakas\": _2, \"media\": _2, \"news\": _2, \"org\": _2, \"priv\": _2, \"reklam\": _2, \"sex\": _2, \"shop\": _2, \"sport\": _2, \"suli\": _2, \"szex\": _2, \"tm\": _2, \"tozsde\": _2, \"utazas\": _2, \"video\": _2 }], \"id\": [1, { \"ac\": _2, \"biz\": _2, \"co\": _2, \"desa\": _2, \"go\": _2, \"kop\": _2, \"mil\": _2, \"my\": _2, \"net\": _2, \"or\": _2, \"ponpes\": _2, \"sch\": _2, \"web\": _2, \"xn--9tfky\": _2, \"ᬩᬮᬶ\": _2, \"e\": _3, \"zone\": _3 }], \"ie\": [1, { \"gov\": _2, \"myspreadshop\": _3 }], \"il\": [1, { \"ac\": _2, \"co\": [1, { \"ravpage\": _3, \"mytabit\": _3, \"tabitorder\": _3 }], \"gov\": _2, \"idf\": _2, \"k12\": _2, \"muni\": _2, \"net\": _2, \"org\": _2 }], \"xn--4dbrk0ce\": [1, { \"xn--4dbgdty6c\": _2, \"xn--5dbhl8d\": _2, \"xn--8dbq2a\": _2, \"xn--hebda8b\": _2 }], \"ישראל\": [1, { \"אקדמיה\": _2, \"ישוב\": _2, \"צהל\": _2, \"ממשל\": _2 }], \"im\": [1, { \"ac\": _2, \"co\": [1, { \"ltd\": _2, \"plc\": _2 }], \"com\": _2, \"net\": _2, \"org\": _2, \"tt\": _2, \"tv\": _2 }], \"in\": [1, { \"5g\": _2, \"6g\": _2, \"ac\": _2, \"ai\": _2, \"am\": _2, \"bank\": _2, \"bihar\": _2, \"biz\": _2, \"business\": _2, \"ca\": _2, \"cn\": _2, \"co\": _2, \"com\": _2, \"coop\": _2, \"cs\": _2, \"delhi\": _2, \"dr\": _2, \"edu\": _2, \"er\": _2, \"fin\": _2, \"firm\": _2, \"gen\": _2, \"gov\": _2, \"gujarat\": _2, \"ind\": _2, \"info\": _2, \"int\": _2, \"internet\": _2, \"io\": _2, \"me\": _2, \"mil\": _2, \"net\": _2, \"nic\": _2, \"org\": _2, \"pg\": _2, \"post\": _2, \"pro\": _2, \"res\": _2, \"travel\": _2, \"tv\": _2, \"uk\": _2, \"up\": _2, \"us\": _2, \"cloudns\": _3, \"barsy\": _3, \"web\": _3, \"indevs\": _3, \"supabase\": _3 }], \"info\": [1, { \"cloudns\": _3, \"dynamic-dns\": _3, \"barrel-of-knowledge\": _3, \"barrell-of-knowledge\": _3, \"dyndns\": _3, \"for-our\": _3, \"groks-the\": _3, \"groks-this\": _3, \"here-for-more\": _3, \"knowsitall\": _3, \"selfip\": _3, \"webhop\": _3, \"barsy\": _3, \"mayfirst\": _3, \"mittwald\": _3, \"mittwaldserver\": _3, \"typo3server\": _3, \"dvrcam\": _3, \"ilovecollege\": _3, \"no-ip\": _3, \"forumz\": _3, \"nsupdate\": _3, \"dnsupdate\": _3, \"v-info\": _3 }], \"int\": [1, { \"eu\": _2 }], \"io\": [1, { \"2038\": _3, \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"nom\": _2, \"org\": _2, \"on-acorn\": _6, \"myaddr\": _3, \"apigee\": _3, \"b-data\": _3, \"beagleboard\": _3, \"bitbucket\": _3, \"bluebite\": _3, \"boxfuse\": _3, \"brave\": _7, \"browsersafetymark\": _3, \"bubble\": _55, \"bubbleapps\": _3, \"bigv\": [0, { \"uk0\": _3 }], \"cleverapps\": _3, \"cloudbeesusercontent\": _3, \"dappnode\": [0, { \"dyndns\": _3 }], \"darklang\": _3, \"definima\": _3, \"dedyn\": _3, \"icp0\": _56, \"icp1\": _56, \"qzz\": _3, \"fh-muenster\": _3, \"gitbook\": _3, \"github\": _3, \"gitlab\": _3, \"lolipop\": _3, \"hasura-app\": _3, \"hostyhosting\": _3, \"hypernode\": _3, \"moonscale\": _6, \"beebyte\": _43, \"beebyteapp\": [0, { \"sekd1\": _3 }], \"jele\": _3, \"keenetic\": _3, \"kiloapps\": _3, \"webthings\": _3, \"loginline\": _3, \"barsy\": _3, \"azurecontainer\": _6, \"ngrok\": [2, { \"ap\": _3, \"au\": _3, \"eu\": _3, \"in\": _3, \"jp\": _3, \"sa\": _3, \"us\": _3 }], \"nodeart\": [0, { \"stage\": _3 }], \"pantheonsite\": _3, \"forgerock\": [0, { \"id\": _3 }], \"pstmn\": [2, { \"mock\": _3 }], \"protonet\": _3, \"qcx\": [2, { \"sys\": _6 }], \"qoto\": _3, \"vaporcloud\": _3, \"myrdbx\": _3, \"rb-hosting\": _46, \"on-k3s\": _6, \"on-rio\": _6, \"readthedocs\": _3, \"resindevice\": _3, \"resinstaging\": [0, { \"devices\": _3 }], \"hzc\": _3, \"sandcats\": _3, \"scrypted\": [0, { \"client\": _3 }], \"mo-siemens\": _3, \"lair\": _42, \"stolos\": _6, \"musician\": _3, \"utwente\": _3, \"edugit\": _3, \"telebit\": _3, \"thingdust\": [0, { \"dev\": _57, \"disrec\": _57, \"prod\": _58, \"testing\": _57 }], \"tickets\": _3, \"webflow\": _3, \"webflowtest\": _3, \"editorx\": _3, \"wixstudio\": _3, \"basicserver\": _3, \"virtualserver\": _3 }], \"iq\": _5, \"ir\": [1, { \"ac\": _2, \"co\": _2, \"gov\": _2, \"id\": _2, \"net\": _2, \"org\": _2, \"sch\": _2, \"xn--mgba3a4f16a\": _2, \"ایران\": _2, \"xn--mgba3a4fra\": _2, \"ايران\": _2, \"arvanedge\": _3, \"vistablog\": _3 }], \"is\": _2, \"it\": [1, { \"edu\": _2, \"gov\": _2, \"abr\": _2, \"abruzzo\": _2, \"aosta-valley\": _2, \"aostavalley\": _2, \"bas\": _2, \"basilicata\": _2, \"cal\": _2, \"calabria\": _2, \"cam\": _2, \"campania\": _2, \"emilia-romagna\": _2, \"emiliaromagna\": _2, \"emr\": _2, \"friuli-v-giulia\": _2, \"friuli-ve-giulia\": _2, \"friuli-vegiulia\": _2, \"friuli-venezia-giulia\": _2, \"friuli-veneziagiulia\": _2, \"friuli-vgiulia\": _2, \"friuliv-giulia\": _2, \"friulive-giulia\": _2, \"friulivegiulia\": _2, \"friulivenezia-giulia\": _2, \"friuliveneziagiulia\": _2, \"friulivgiulia\": _2, \"fvg\": _2, \"laz\": _2, \"lazio\": _2, \"lig\": _2, \"liguria\": _2, \"lom\": _2, \"lombardia\": _2, \"lombardy\": _2, \"lucania\": _2, \"mar\": _2, \"marche\": _2, \"mol\": _2, \"molise\": _2, \"piedmont\": _2, \"piemonte\": _2, \"pmn\": _2, \"pug\": _2, \"puglia\": _2, \"sar\": _2, \"sardegna\": _2, \"sardinia\": _2, \"sic\": _2, \"sicilia\": _2, \"sicily\": _2, \"taa\": _2, \"tos\": _2, \"toscana\": _2, \"trentin-sud-tirol\": _2, \"xn--trentin-sd-tirol-rzb\": _2, \"trentin-süd-tirol\": _2, \"trentin-sudtirol\": _2, \"xn--trentin-sdtirol-7vb\": _2, \"trentin-südtirol\": _2, \"trentin-sued-tirol\": _2, \"trentin-suedtirol\": _2, \"trentino\": _2, \"trentino-a-adige\": _2, \"trentino-aadige\": _2, \"trentino-alto-adige\": _2, \"trentino-altoadige\": _2, \"trentino-s-tirol\": _2, \"trentino-stirol\": _2, \"trentino-sud-tirol\": _2, \"xn--trentino-sd-tirol-c3b\": _2, \"trentino-süd-tirol\": _2, \"trentino-sudtirol\": _2, \"xn--trentino-sdtirol-szb\": _2, \"trentino-südtirol\": _2, \"trentino-sued-tirol\": _2, \"trentino-suedtirol\": _2, \"trentinoa-adige\": _2, \"trentinoaadige\": _2, \"trentinoalto-adige\": _2, \"trentinoaltoadige\": _2, \"trentinos-tirol\": _2, \"trentinostirol\": _2, \"trentinosud-tirol\": _2, \"xn--trentinosd-tirol-rzb\": _2, \"trentinosüd-tirol\": _2, \"trentinosudtirol\": _2, \"xn--trentinosdtirol-7vb\": _2, \"trentinosüdtirol\": _2, \"trentinosued-tirol\": _2, \"trentinosuedtirol\": _2, \"trentinsud-tirol\": _2, \"xn--trentinsd-tirol-6vb\": _2, \"trentinsüd-tirol\": _2, \"trentinsudtirol\": _2, \"xn--trentinsdtirol-nsb\": _2, \"trentinsüdtirol\": _2, \"trentinsued-tirol\": _2, \"trentinsuedtirol\": _2, \"tuscany\": _2, \"umb\": _2, \"umbria\": _2, \"val-d-aosta\": _2, \"val-daosta\": _2, \"vald-aosta\": _2, \"valdaosta\": _2, \"valle-aosta\": _2, \"valle-d-aosta\": _2, \"valle-daosta\": _2, \"valleaosta\": _2, \"valled-aosta\": _2, \"valledaosta\": _2, \"vallee-aoste\": _2, \"xn--valle-aoste-ebb\": _2, \"vallée-aoste\": _2, \"vallee-d-aoste\": _2, \"xn--valle-d-aoste-ehb\": _2, \"vallée-d-aoste\": _2, \"valleeaoste\": _2, \"xn--valleaoste-e7a\": _2, \"valléeaoste\": _2, \"valleedaoste\": _2, \"xn--valledaoste-ebb\": _2, \"valléedaoste\": _2, \"vao\": _2, \"vda\": _2, \"ven\": _2, \"veneto\": _2, \"ag\": _2, \"agrigento\": _2, \"al\": _2, \"alessandria\": _2, \"alto-adige\": _2, \"altoadige\": _2, \"an\": _2, \"ancona\": _2, \"andria-barletta-trani\": _2, \"andria-trani-barletta\": _2, \"andriabarlettatrani\": _2, \"andriatranibarletta\": _2, \"ao\": _2, \"aosta\": _2, \"aoste\": _2, \"ap\": _2, \"aq\": _2, \"aquila\": _2, \"ar\": _2, \"arezzo\": _2, \"ascoli-piceno\": _2, \"ascolipiceno\": _2, \"asti\": _2, \"at\": _2, \"av\": _2, \"avellino\": _2, \"ba\": _2, \"balsan\": _2, \"balsan-sudtirol\": _2, \"xn--balsan-sdtirol-nsb\": _2, \"balsan-südtirol\": _2, \"balsan-suedtirol\": _2, \"bari\": _2, \"barletta-trani-andria\": _2, \"barlettatraniandria\": _2, \"belluno\": _2, \"benevento\": _2, \"bergamo\": _2, \"bg\": _2, \"bi\": _2, \"biella\": _2, \"bl\": _2, \"bn\": _2, \"bo\": _2, \"bologna\": _2, \"bolzano\": _2, \"bolzano-altoadige\": _2, \"bozen\": _2, \"bozen-sudtirol\": _2, \"xn--bozen-sdtirol-2ob\": _2, \"bozen-südtirol\": _2, \"bozen-suedtirol\": _2, \"br\": _2, \"brescia\": _2, \"brindisi\": _2, \"bs\": _2, \"bt\": _2, \"bulsan\": _2, \"bulsan-sudtirol\": _2, \"xn--bulsan-sdtirol-nsb\": _2, \"bulsan-südtirol\": _2, \"bulsan-suedtirol\": _2, \"bz\": _2, \"ca\": _2, \"cagliari\": _2, \"caltanissetta\": _2, \"campidano-medio\": _2, \"campidanomedio\": _2, \"campobasso\": _2, \"carbonia-iglesias\": _2, \"carboniaiglesias\": _2, \"carrara-massa\": _2, \"carraramassa\": _2, \"caserta\": _2, \"catania\": _2, \"catanzaro\": _2, \"cb\": _2, \"ce\": _2, \"cesena-forli\": _2, \"xn--cesena-forl-mcb\": _2, \"cesena-forlì\": _2, \"cesenaforli\": _2, \"xn--cesenaforl-i8a\": _2, \"cesenaforlì\": _2, \"ch\": _2, \"chieti\": _2, \"ci\": _2, \"cl\": _2, \"cn\": _2, \"co\": _2, \"como\": _2, \"cosenza\": _2, \"cr\": _2, \"cremona\": _2, \"crotone\": _2, \"cs\": _2, \"ct\": _2, \"cuneo\": _2, \"cz\": _2, \"dell-ogliastra\": _2, \"dellogliastra\": _2, \"en\": _2, \"enna\": _2, \"fc\": _2, \"fe\": _2, \"fermo\": _2, \"ferrara\": _2, \"fg\": _2, \"fi\": _2, \"firenze\": _2, \"florence\": _2, \"fm\": _2, \"foggia\": _2, \"forli-cesena\": _2, \"xn--forl-cesena-fcb\": _2, \"forlì-cesena\": _2, \"forlicesena\": _2, \"xn--forlcesena-c8a\": _2, \"forlìcesena\": _2, \"fr\": _2, \"frosinone\": _2, \"ge\": _2, \"genoa\": _2, \"genova\": _2, \"go\": _2, \"gorizia\": _2, \"gr\": _2, \"grosseto\": _2, \"iglesias-carbonia\": _2, \"iglesiascarbonia\": _2, \"im\": _2, \"imperia\": _2, \"is\": _2, \"isernia\": _2, \"kr\": _2, \"la-spezia\": _2, \"laquila\": _2, \"laspezia\": _2, \"latina\": _2, \"lc\": _2, \"le\": _2, \"lecce\": _2, \"lecco\": _2, \"li\": _2, \"livorno\": _2, \"lo\": _2, \"lodi\": _2, \"lt\": _2, \"lu\": _2, \"lucca\": _2, \"macerata\": _2, \"mantova\": _2, \"massa-carrara\": _2, \"massacarrara\": _2, \"matera\": _2, \"mb\": _2, \"mc\": _2, \"me\": _2, \"medio-campidano\": _2, \"mediocampidano\": _2, \"messina\": _2, \"mi\": _2, \"milan\": _2, \"milano\": _2, \"mn\": _2, \"mo\": _2, \"modena\": _2, \"monza\": _2, \"monza-brianza\": _2, \"monza-e-della-brianza\": _2, \"monzabrianza\": _2, \"monzaebrianza\": _2, \"monzaedellabrianza\": _2, \"ms\": _2, \"mt\": _2, \"na\": _2, \"naples\": _2, \"napoli\": _2, \"no\": _2, \"novara\": _2, \"nu\": _2, \"nuoro\": _2, \"og\": _2, \"ogliastra\": _2, \"olbia-tempio\": _2, \"olbiatempio\": _2, \"or\": _2, \"oristano\": _2, \"ot\": _2, \"pa\": _2, \"padova\": _2, \"padua\": _2, \"palermo\": _2, \"parma\": _2, \"pavia\": _2, \"pc\": _2, \"pd\": _2, \"pe\": _2, \"perugia\": _2, \"pesaro-urbino\": _2, \"pesarourbino\": _2, \"pescara\": _2, \"pg\": _2, \"pi\": _2, \"piacenza\": _2, \"pisa\": _2, \"pistoia\": _2, \"pn\": _2, \"po\": _2, \"pordenone\": _2, \"potenza\": _2, \"pr\": _2, \"prato\": _2, \"pt\": _2, \"pu\": _2, \"pv\": _2, \"pz\": _2, \"ra\": _2, \"ragusa\": _2, \"ravenna\": _2, \"rc\": _2, \"re\": _2, \"reggio-calabria\": _2, \"reggio-emilia\": _2, \"reggiocalabria\": _2, \"reggioemilia\": _2, \"rg\": _2, \"ri\": _2, \"rieti\": _2, \"rimini\": _2, \"rm\": _2, \"rn\": _2, \"ro\": _2, \"roma\": _2, \"rome\": _2, \"rovigo\": _2, \"sa\": _2, \"salerno\": _2, \"sassari\": _2, \"savona\": _2, \"si\": _2, \"siena\": _2, \"siracusa\": _2, \"so\": _2, \"sondrio\": _2, \"sp\": _2, \"sr\": _2, \"ss\": _2, \"xn--sdtirol-n2a\": _2, \"südtirol\": _2, \"suedtirol\": _2, \"sv\": _2, \"ta\": _2, \"taranto\": _2, \"te\": _2, \"tempio-olbia\": _2, \"tempioolbia\": _2, \"teramo\": _2, \"terni\": _2, \"tn\": _2, \"to\": _2, \"torino\": _2, \"tp\": _2, \"tr\": _2, \"trani-andria-barletta\": _2, \"trani-barletta-andria\": _2, \"traniandriabarletta\": _2, \"tranibarlettaandria\": _2, \"trapani\": _2, \"trento\": _2, \"treviso\": _2, \"trieste\": _2, \"ts\": _2, \"turin\": _2, \"tv\": _2, \"ud\": _2, \"udine\": _2, \"urbino-pesaro\": _2, \"urbinopesaro\": _2, \"va\": _2, \"varese\": _2, \"vb\": _2, \"vc\": _2, \"ve\": _2, \"venezia\": _2, \"venice\": _2, \"verbania\": _2, \"vercelli\": _2, \"verona\": _2, \"vi\": _2, \"vibo-valentia\": _2, \"vibovalentia\": _2, \"vicenza\": _2, \"viterbo\": _2, \"vr\": _2, \"vs\": _2, \"vt\": _2, \"vv\": _2, \"ibxos\": _3, \"iliadboxos\": _3, \"neen\": [0, { \"jc\": _3 }], \"123homepage\": _3, \"16-b\": _3, \"32-b\": _3, \"64-b\": _3, \"myspreadshop\": _3, \"syncloud\": _3 }], \"je\": [1, { \"co\": _2, \"net\": _2, \"org\": _2, \"of\": _3 }], \"jm\": _21, \"jo\": [1, { \"agri\": _2, \"ai\": _2, \"com\": _2, \"edu\": _2, \"eng\": _2, \"fm\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"per\": _2, \"phd\": _2, \"sch\": _2, \"tv\": _2 }], \"jobs\": _2, \"jp\": [1, { \"ac\": _2, \"ad\": _2, \"co\": _2, \"ed\": _2, \"go\": _2, \"gr\": _2, \"lg\": _2, \"ne\": [1, { \"aseinet\": _54, \"gehirn\": _3, \"ivory\": _3, \"mail-box\": _3, \"mints\": _3, \"mokuren\": _3, \"opal\": _3, \"sakura\": _3, \"sumomo\": _3, \"topaz\": _3 }], \"or\": _2, \"aichi\": [1, { \"aisai\": _2, \"ama\": _2, \"anjo\": _2, \"asuke\": _2, \"chiryu\": _2, \"chita\": _2, \"fuso\": _2, \"gamagori\": _2, \"handa\": _2, \"hazu\": _2, \"hekinan\": _2, \"higashiura\": _2, \"ichinomiya\": _2, \"inazawa\": _2, \"inuyama\": _2, \"isshiki\": _2, \"iwakura\": _2, \"kanie\": _2, \"kariya\": _2, \"kasugai\": _2, \"kira\": _2, \"kiyosu\": _2, \"komaki\": _2, \"konan\": _2, \"kota\": _2, \"mihama\": _2, \"miyoshi\": _2, \"nishio\": _2, \"nisshin\": _2, \"obu\": _2, \"oguchi\": _2, \"oharu\": _2, \"okazaki\": _2, \"owariasahi\": _2, \"seto\": _2, \"shikatsu\": _2, \"shinshiro\": _2, \"shitara\": _2, \"tahara\": _2, \"takahama\": _2, \"tobishima\": _2, \"toei\": _2, \"togo\": _2, \"tokai\": _2, \"tokoname\": _2, \"toyoake\": _2, \"toyohashi\": _2, \"toyokawa\": _2, \"toyone\": _2, \"toyota\": _2, \"tsushima\": _2, \"yatomi\": _2 }], \"akita\": [1, { \"akita\": _2, \"daisen\": _2, \"fujisato\": _2, \"gojome\": _2, \"hachirogata\": _2, \"happou\": _2, \"higashinaruse\": _2, \"honjo\": _2, \"honjyo\": _2, \"ikawa\": _2, \"kamikoani\": _2, \"kamioka\": _2, \"katagami\": _2, \"kazuno\": _2, \"kitaakita\": _2, \"kosaka\": _2, \"kyowa\": _2, \"misato\": _2, \"mitane\": _2, \"moriyoshi\": _2, \"nikaho\": _2, \"noshiro\": _2, \"odate\": _2, \"oga\": _2, \"ogata\": _2, \"semboku\": _2, \"yokote\": _2, \"yurihonjo\": _2 }], \"aomori\": [1, { \"aomori\": _2, \"gonohe\": _2, \"hachinohe\": _2, \"hashikami\": _2, \"hiranai\": _2, \"hirosaki\": _2, \"itayanagi\": _2, \"kuroishi\": _2, \"misawa\": _2, \"mutsu\": _2, \"nakadomari\": _2, \"noheji\": _2, \"oirase\": _2, \"owani\": _2, \"rokunohe\": _2, \"sannohe\": _2, \"shichinohe\": _2, \"shingo\": _2, \"takko\": _2, \"towada\": _2, \"tsugaru\": _2, \"tsuruta\": _2 }], \"chiba\": [1, { \"abiko\": _2, \"asahi\": _2, \"chonan\": _2, \"chosei\": _2, \"choshi\": _2, \"chuo\": _2, \"funabashi\": _2, \"futtsu\": _2, \"hanamigawa\": _2, \"ichihara\": _2, \"ichikawa\": _2, \"ichinomiya\": _2, \"inzai\": _2, \"isumi\": _2, \"kamagaya\": _2, \"kamogawa\": _2, \"kashiwa\": _2, \"katori\": _2, \"katsuura\": _2, \"kimitsu\": _2, \"kisarazu\": _2, \"kozaki\": _2, \"kujukuri\": _2, \"kyonan\": _2, \"matsudo\": _2, \"midori\": _2, \"mihama\": _2, \"minamiboso\": _2, \"mobara\": _2, \"mutsuzawa\": _2, \"nagara\": _2, \"nagareyama\": _2, \"narashino\": _2, \"narita\": _2, \"noda\": _2, \"oamishirasato\": _2, \"omigawa\": _2, \"onjuku\": _2, \"otaki\": _2, \"sakae\": _2, \"sakura\": _2, \"shimofusa\": _2, \"shirako\": _2, \"shiroi\": _2, \"shisui\": _2, \"sodegaura\": _2, \"sosa\": _2, \"tako\": _2, \"tateyama\": _2, \"togane\": _2, \"tohnosho\": _2, \"tomisato\": _2, \"urayasu\": _2, \"yachimata\": _2, \"yachiyo\": _2, \"yokaichiba\": _2, \"yokoshibahikari\": _2, \"yotsukaido\": _2 }], \"ehime\": [1, { \"ainan\": _2, \"honai\": _2, \"ikata\": _2, \"imabari\": _2, \"iyo\": _2, \"kamijima\": _2, \"kihoku\": _2, \"kumakogen\": _2, \"masaki\": _2, \"matsuno\": _2, \"matsuyama\": _2, \"namikata\": _2, \"niihama\": _2, \"ozu\": _2, \"saijo\": _2, \"seiyo\": _2, \"shikokuchuo\": _2, \"tobe\": _2, \"toon\": _2, \"uchiko\": _2, \"uwajima\": _2, \"yawatahama\": _2 }], \"fukui\": [1, { \"echizen\": _2, \"eiheiji\": _2, \"fukui\": _2, \"ikeda\": _2, \"katsuyama\": _2, \"mihama\": _2, \"minamiechizen\": _2, \"obama\": _2, \"ohi\": _2, \"ono\": _2, \"sabae\": _2, \"sakai\": _2, \"takahama\": _2, \"tsuruga\": _2, \"wakasa\": _2 }], \"fukuoka\": [1, { \"ashiya\": _2, \"buzen\": _2, \"chikugo\": _2, \"chikuho\": _2, \"chikujo\": _2, \"chikushino\": _2, \"chikuzen\": _2, \"chuo\": _2, \"dazaifu\": _2, \"fukuchi\": _2, \"hakata\": _2, \"higashi\": _2, \"hirokawa\": _2, \"hisayama\": _2, \"iizuka\": _2, \"inatsuki\": _2, \"kaho\": _2, \"kasuga\": _2, \"kasuya\": _2, \"kawara\": _2, \"keisen\": _2, \"koga\": _2, \"kurate\": _2, \"kurogi\": _2, \"kurume\": _2, \"minami\": _2, \"miyako\": _2, \"miyama\": _2, \"miyawaka\": _2, \"mizumaki\": _2, \"munakata\": _2, \"nakagawa\": _2, \"nakama\": _2, \"nishi\": _2, \"nogata\": _2, \"ogori\": _2, \"okagaki\": _2, \"okawa\": _2, \"oki\": _2, \"omuta\": _2, \"onga\": _2, \"onojo\": _2, \"oto\": _2, \"saigawa\": _2, \"sasaguri\": _2, \"shingu\": _2, \"shinyoshitomi\": _2, \"shonai\": _2, \"soeda\": _2, \"sue\": _2, \"tachiarai\": _2, \"tagawa\": _2, \"takata\": _2, \"toho\": _2, \"toyotsu\": _2, \"tsuiki\": _2, \"ukiha\": _2, \"umi\": _2, \"usui\": _2, \"yamada\": _2, \"yame\": _2, \"yanagawa\": _2, \"yukuhashi\": _2 }], \"fukushima\": [1, { \"aizubange\": _2, \"aizumisato\": _2, \"aizuwakamatsu\": _2, \"asakawa\": _2, \"bandai\": _2, \"date\": _2, \"fukushima\": _2, \"furudono\": _2, \"futaba\": _2, \"hanawa\": _2, \"higashi\": _2, \"hirata\": _2, \"hirono\": _2, \"iitate\": _2, \"inawashiro\": _2, \"ishikawa\": _2, \"iwaki\": _2, \"izumizaki\": _2, \"kagamiishi\": _2, \"kaneyama\": _2, \"kawamata\": _2, \"kitakata\": _2, \"kitashiobara\": _2, \"koori\": _2, \"koriyama\": _2, \"kunimi\": _2, \"miharu\": _2, \"mishima\": _2, \"namie\": _2, \"nango\": _2, \"nishiaizu\": _2, \"nishigo\": _2, \"okuma\": _2, \"omotego\": _2, \"ono\": _2, \"otama\": _2, \"samegawa\": _2, \"shimogo\": _2, \"shirakawa\": _2, \"showa\": _2, \"soma\": _2, \"sukagawa\": _2, \"taishin\": _2, \"tamakawa\": _2, \"tanagura\": _2, \"tenei\": _2, \"yabuki\": _2, \"yamato\": _2, \"yamatsuri\": _2, \"yanaizu\": _2, \"yugawa\": _2 }], \"gifu\": [1, { \"anpachi\": _2, \"ena\": _2, \"gifu\": _2, \"ginan\": _2, \"godo\": _2, \"gujo\": _2, \"hashima\": _2, \"hichiso\": _2, \"hida\": _2, \"higashishirakawa\": _2, \"ibigawa\": _2, \"ikeda\": _2, \"kakamigahara\": _2, \"kani\": _2, \"kasahara\": _2, \"kasamatsu\": _2, \"kawaue\": _2, \"kitagata\": _2, \"mino\": _2, \"minokamo\": _2, \"mitake\": _2, \"mizunami\": _2, \"motosu\": _2, \"nakatsugawa\": _2, \"ogaki\": _2, \"sakahogi\": _2, \"seki\": _2, \"sekigahara\": _2, \"shirakawa\": _2, \"tajimi\": _2, \"takayama\": _2, \"tarui\": _2, \"toki\": _2, \"tomika\": _2, \"wanouchi\": _2, \"yamagata\": _2, \"yaotsu\": _2, \"yoro\": _2 }], \"gunma\": [1, { \"annaka\": _2, \"chiyoda\": _2, \"fujioka\": _2, \"higashiagatsuma\": _2, \"isesaki\": _2, \"itakura\": _2, \"kanna\": _2, \"kanra\": _2, \"katashina\": _2, \"kawaba\": _2, \"kiryu\": _2, \"kusatsu\": _2, \"maebashi\": _2, \"meiwa\": _2, \"midori\": _2, \"minakami\": _2, \"naganohara\": _2, \"nakanojo\": _2, \"nanmoku\": _2, \"numata\": _2, \"oizumi\": _2, \"ora\": _2, \"ota\": _2, \"shibukawa\": _2, \"shimonita\": _2, \"shinto\": _2, \"showa\": _2, \"takasaki\": _2, \"takayama\": _2, \"tamamura\": _2, \"tatebayashi\": _2, \"tomioka\": _2, \"tsukiyono\": _2, \"tsumagoi\": _2, \"ueno\": _2, \"yoshioka\": _2 }], \"hiroshima\": [1, { \"asaminami\": _2, \"daiwa\": _2, \"etajima\": _2, \"fuchu\": _2, \"fukuyama\": _2, \"hatsukaichi\": _2, \"higashihiroshima\": _2, \"hongo\": _2, \"jinsekikogen\": _2, \"kaita\": _2, \"kui\": _2, \"kumano\": _2, \"kure\": _2, \"mihara\": _2, \"miyoshi\": _2, \"naka\": _2, \"onomichi\": _2, \"osakikamijima\": _2, \"otake\": _2, \"saka\": _2, \"sera\": _2, \"seranishi\": _2, \"shinichi\": _2, \"shobara\": _2, \"takehara\": _2 }], \"hokkaido\": [1, { \"abashiri\": _2, \"abira\": _2, \"aibetsu\": _2, \"akabira\": _2, \"akkeshi\": _2, \"asahikawa\": _2, \"ashibetsu\": _2, \"ashoro\": _2, \"assabu\": _2, \"atsuma\": _2, \"bibai\": _2, \"biei\": _2, \"bifuka\": _2, \"bihoro\": _2, \"biratori\": _2, \"chippubetsu\": _2, \"chitose\": _2, \"date\": _2, \"ebetsu\": _2, \"embetsu\": _2, \"eniwa\": _2, \"erimo\": _2, \"esan\": _2, \"esashi\": _2, \"fukagawa\": _2, \"fukushima\": _2, \"furano\": _2, \"furubira\": _2, \"haboro\": _2, \"hakodate\": _2, \"hamatonbetsu\": _2, \"hidaka\": _2, \"higashikagura\": _2, \"higashikawa\": _2, \"hiroo\": _2, \"hokuryu\": _2, \"hokuto\": _2, \"honbetsu\": _2, \"horokanai\": _2, \"horonobe\": _2, \"ikeda\": _2, \"imakane\": _2, \"ishikari\": _2, \"iwamizawa\": _2, \"iwanai\": _2, \"kamifurano\": _2, \"kamikawa\": _2, \"kamishihoro\": _2, \"kamisunagawa\": _2, \"kamoenai\": _2, \"kayabe\": _2, \"kembuchi\": _2, \"kikonai\": _2, \"kimobetsu\": _2, \"kitahiroshima\": _2, \"kitami\": _2, \"kiyosato\": _2, \"koshimizu\": _2, \"kunneppu\": _2, \"kuriyama\": _2, \"kuromatsunai\": _2, \"kushiro\": _2, \"kutchan\": _2, \"kyowa\": _2, \"mashike\": _2, \"matsumae\": _2, \"mikasa\": _2, \"minamifurano\": _2, \"mombetsu\": _2, \"moseushi\": _2, \"mukawa\": _2, \"muroran\": _2, \"naie\": _2, \"nakagawa\": _2, \"nakasatsunai\": _2, \"nakatombetsu\": _2, \"nanae\": _2, \"nanporo\": _2, \"nayoro\": _2, \"nemuro\": _2, \"niikappu\": _2, \"niki\": _2, \"nishiokoppe\": _2, \"noboribetsu\": _2, \"numata\": _2, \"obihiro\": _2, \"obira\": _2, \"oketo\": _2, \"okoppe\": _2, \"otaru\": _2, \"otobe\": _2, \"otofuke\": _2, \"otoineppu\": _2, \"oumu\": _2, \"ozora\": _2, \"pippu\": _2, \"rankoshi\": _2, \"rebun\": _2, \"rikubetsu\": _2, \"rishiri\": _2, \"rishirifuji\": _2, \"saroma\": _2, \"sarufutsu\": _2, \"shakotan\": _2, \"shari\": _2, \"shibecha\": _2, \"shibetsu\": _2, \"shikabe\": _2, \"shikaoi\": _2, \"shimamaki\": _2, \"shimizu\": _2, \"shimokawa\": _2, \"shinshinotsu\": _2, \"shintoku\": _2, \"shiranuka\": _2, \"shiraoi\": _2, \"shiriuchi\": _2, \"sobetsu\": _2, \"sunagawa\": _2, \"taiki\": _2, \"takasu\": _2, \"takikawa\": _2, \"takinoue\": _2, \"teshikaga\": _2, \"tobetsu\": _2, \"tohma\": _2, \"tomakomai\": _2, \"tomari\": _2, \"toya\": _2, \"toyako\": _2, \"toyotomi\": _2, \"toyoura\": _2, \"tsubetsu\": _2, \"tsukigata\": _2, \"urakawa\": _2, \"urausu\": _2, \"uryu\": _2, \"utashinai\": _2, \"wakkanai\": _2, \"wassamu\": _2, \"yakumo\": _2, \"yoichi\": _2 }], \"hyogo\": [1, { \"aioi\": _2, \"akashi\": _2, \"ako\": _2, \"amagasaki\": _2, \"aogaki\": _2, \"asago\": _2, \"ashiya\": _2, \"awaji\": _2, \"fukusaki\": _2, \"goshiki\": _2, \"harima\": _2, \"himeji\": _2, \"ichikawa\": _2, \"inagawa\": _2, \"itami\": _2, \"kakogawa\": _2, \"kamigori\": _2, \"kamikawa\": _2, \"kasai\": _2, \"kasuga\": _2, \"kawanishi\": _2, \"miki\": _2, \"minamiawaji\": _2, \"nishinomiya\": _2, \"nishiwaki\": _2, \"ono\": _2, \"sanda\": _2, \"sannan\": _2, \"sasayama\": _2, \"sayo\": _2, \"shingu\": _2, \"shinonsen\": _2, \"shiso\": _2, \"sumoto\": _2, \"taishi\": _2, \"taka\": _2, \"takarazuka\": _2, \"takasago\": _2, \"takino\": _2, \"tamba\": _2, \"tatsuno\": _2, \"toyooka\": _2, \"yabu\": _2, \"yashiro\": _2, \"yoka\": _2, \"yokawa\": _2 }], \"ibaraki\": [1, { \"ami\": _2, \"asahi\": _2, \"bando\": _2, \"chikusei\": _2, \"daigo\": _2, \"fujishiro\": _2, \"hitachi\": _2, \"hitachinaka\": _2, \"hitachiomiya\": _2, \"hitachiota\": _2, \"ibaraki\": _2, \"ina\": _2, \"inashiki\": _2, \"itako\": _2, \"iwama\": _2, \"joso\": _2, \"kamisu\": _2, \"kasama\": _2, \"kashima\": _2, \"kasumigaura\": _2, \"koga\": _2, \"miho\": _2, \"mito\": _2, \"moriya\": _2, \"naka\": _2, \"namegata\": _2, \"oarai\": _2, \"ogawa\": _2, \"omitama\": _2, \"ryugasaki\": _2, \"sakai\": _2, \"sakuragawa\": _2, \"shimodate\": _2, \"shimotsuma\": _2, \"shirosato\": _2, \"sowa\": _2, \"suifu\": _2, \"takahagi\": _2, \"tamatsukuri\": _2, \"tokai\": _2, \"tomobe\": _2, \"tone\": _2, \"toride\": _2, \"tsuchiura\": _2, \"tsukuba\": _2, \"uchihara\": _2, \"ushiku\": _2, \"yachiyo\": _2, \"yamagata\": _2, \"yawara\": _2, \"yuki\": _2 }], \"ishikawa\": [1, { \"anamizu\": _2, \"hakui\": _2, \"hakusan\": _2, \"kaga\": _2, \"kahoku\": _2, \"kanazawa\": _2, \"kawakita\": _2, \"komatsu\": _2, \"nakanoto\": _2, \"nanao\": _2, \"nomi\": _2, \"nonoichi\": _2, \"noto\": _2, \"shika\": _2, \"suzu\": _2, \"tsubata\": _2, \"tsurugi\": _2, \"uchinada\": _2, \"wajima\": _2 }], \"iwate\": [1, { \"fudai\": _2, \"fujisawa\": _2, \"hanamaki\": _2, \"hiraizumi\": _2, \"hirono\": _2, \"ichinohe\": _2, \"ichinoseki\": _2, \"iwaizumi\": _2, \"iwate\": _2, \"joboji\": _2, \"kamaishi\": _2, \"kanegasaki\": _2, \"karumai\": _2, \"kawai\": _2, \"kitakami\": _2, \"kuji\": _2, \"kunohe\": _2, \"kuzumaki\": _2, \"miyako\": _2, \"mizusawa\": _2, \"morioka\": _2, \"ninohe\": _2, \"noda\": _2, \"ofunato\": _2, \"oshu\": _2, \"otsuchi\": _2, \"rikuzentakata\": _2, \"shiwa\": _2, \"shizukuishi\": _2, \"sumita\": _2, \"tanohata\": _2, \"tono\": _2, \"yahaba\": _2, \"yamada\": _2 }], \"kagawa\": [1, { \"ayagawa\": _2, \"higashikagawa\": _2, \"kanonji\": _2, \"kotohira\": _2, \"manno\": _2, \"marugame\": _2, \"mitoyo\": _2, \"naoshima\": _2, \"sanuki\": _2, \"tadotsu\": _2, \"takamatsu\": _2, \"tonosho\": _2, \"uchinomi\": _2, \"utazu\": _2, \"zentsuji\": _2 }], \"kagoshima\": [1, { \"akune\": _2, \"amami\": _2, \"hioki\": _2, \"isa\": _2, \"isen\": _2, \"izumi\": _2, \"kagoshima\": _2, \"kanoya\": _2, \"kawanabe\": _2, \"kinko\": _2, \"kouyama\": _2, \"makurazaki\": _2, \"matsumoto\": _2, \"minamitane\": _2, \"nakatane\": _2, \"nishinoomote\": _2, \"satsumasendai\": _2, \"soo\": _2, \"tarumizu\": _2, \"yusui\": _2 }], \"kanagawa\": [1, { \"aikawa\": _2, \"atsugi\": _2, \"ayase\": _2, \"chigasaki\": _2, \"ebina\": _2, \"fujisawa\": _2, \"hadano\": _2, \"hakone\": _2, \"hiratsuka\": _2, \"isehara\": _2, \"kaisei\": _2, \"kamakura\": _2, \"kiyokawa\": _2, \"matsuda\": _2, \"minamiashigara\": _2, \"miura\": _2, \"nakai\": _2, \"ninomiya\": _2, \"odawara\": _2, \"oi\": _2, \"oiso\": _2, \"sagamihara\": _2, \"samukawa\": _2, \"tsukui\": _2, \"yamakita\": _2, \"yamato\": _2, \"yokosuka\": _2, \"yugawara\": _2, \"zama\": _2, \"zushi\": _2 }], \"kochi\": [1, { \"aki\": _2, \"geisei\": _2, \"hidaka\": _2, \"higashitsuno\": _2, \"ino\": _2, \"kagami\": _2, \"kami\": _2, \"kitagawa\": _2, \"kochi\": _2, \"mihara\": _2, \"motoyama\": _2, \"muroto\": _2, \"nahari\": _2, \"nakamura\": _2, \"nankoku\": _2, \"nishitosa\": _2, \"niyodogawa\": _2, \"ochi\": _2, \"okawa\": _2, \"otoyo\": _2, \"otsuki\": _2, \"sakawa\": _2, \"sukumo\": _2, \"susaki\": _2, \"tosa\": _2, \"tosashimizu\": _2, \"toyo\": _2, \"tsuno\": _2, \"umaji\": _2, \"yasuda\": _2, \"yusuhara\": _2 }], \"kumamoto\": [1, { \"amakusa\": _2, \"arao\": _2, \"aso\": _2, \"choyo\": _2, \"gyokuto\": _2, \"kamiamakusa\": _2, \"kikuchi\": _2, \"kumamoto\": _2, \"mashiki\": _2, \"mifune\": _2, \"minamata\": _2, \"minamioguni\": _2, \"nagasu\": _2, \"nishihara\": _2, \"oguni\": _2, \"ozu\": _2, \"sumoto\": _2, \"takamori\": _2, \"uki\": _2, \"uto\": _2, \"yamaga\": _2, \"yamato\": _2, \"yatsushiro\": _2 }], \"kyoto\": [1, { \"ayabe\": _2, \"fukuchiyama\": _2, \"higashiyama\": _2, \"ide\": _2, \"ine\": _2, \"joyo\": _2, \"kameoka\": _2, \"kamo\": _2, \"kita\": _2, \"kizu\": _2, \"kumiyama\": _2, \"kyotamba\": _2, \"kyotanabe\": _2, \"kyotango\": _2, \"maizuru\": _2, \"minami\": _2, \"minamiyamashiro\": _2, \"miyazu\": _2, \"muko\": _2, \"nagaokakyo\": _2, \"nakagyo\": _2, \"nantan\": _2, \"oyamazaki\": _2, \"sakyo\": _2, \"seika\": _2, \"tanabe\": _2, \"uji\": _2, \"ujitawara\": _2, \"wazuka\": _2, \"yamashina\": _2, \"yawata\": _2 }], \"mie\": [1, { \"asahi\": _2, \"inabe\": _2, \"ise\": _2, \"kameyama\": _2, \"kawagoe\": _2, \"kiho\": _2, \"kisosaki\": _2, \"kiwa\": _2, \"komono\": _2, \"kumano\": _2, \"kuwana\": _2, \"matsusaka\": _2, \"meiwa\": _2, \"mihama\": _2, \"minamiise\": _2, \"misugi\": _2, \"miyama\": _2, \"nabari\": _2, \"shima\": _2, \"suzuka\": _2, \"tado\": _2, \"taiki\": _2, \"taki\": _2, \"tamaki\": _2, \"toba\": _2, \"tsu\": _2, \"udono\": _2, \"ureshino\": _2, \"watarai\": _2, \"yokkaichi\": _2 }], \"miyagi\": [1, { \"furukawa\": _2, \"higashimatsushima\": _2, \"ishinomaki\": _2, \"iwanuma\": _2, \"kakuda\": _2, \"kami\": _2, \"kawasaki\": _2, \"marumori\": _2, \"matsushima\": _2, \"minamisanriku\": _2, \"misato\": _2, \"murata\": _2, \"natori\": _2, \"ogawara\": _2, \"ohira\": _2, \"onagawa\": _2, \"osaki\": _2, \"rifu\": _2, \"semine\": _2, \"shibata\": _2, \"shichikashuku\": _2, \"shikama\": _2, \"shiogama\": _2, \"shiroishi\": _2, \"tagajo\": _2, \"taiwa\": _2, \"tome\": _2, \"tomiya\": _2, \"wakuya\": _2, \"watari\": _2, \"yamamoto\": _2, \"zao\": _2 }], \"miyazaki\": [1, { \"aya\": _2, \"ebino\": _2, \"gokase\": _2, \"hyuga\": _2, \"kadogawa\": _2, \"kawaminami\": _2, \"kijo\": _2, \"kitagawa\": _2, \"kitakata\": _2, \"kitaura\": _2, \"kobayashi\": _2, \"kunitomi\": _2, \"kushima\": _2, \"mimata\": _2, \"miyakonojo\": _2, \"miyazaki\": _2, \"morotsuka\": _2, \"nichinan\": _2, \"nishimera\": _2, \"nobeoka\": _2, \"saito\": _2, \"shiiba\": _2, \"shintomi\": _2, \"takaharu\": _2, \"takanabe\": _2, \"takazaki\": _2, \"tsuno\": _2 }], \"nagano\": [1, { \"achi\": _2, \"agematsu\": _2, \"anan\": _2, \"aoki\": _2, \"asahi\": _2, \"azumino\": _2, \"chikuhoku\": _2, \"chikuma\": _2, \"chino\": _2, \"fujimi\": _2, \"hakuba\": _2, \"hara\": _2, \"hiraya\": _2, \"iida\": _2, \"iijima\": _2, \"iiyama\": _2, \"iizuna\": _2, \"ikeda\": _2, \"ikusaka\": _2, \"ina\": _2, \"karuizawa\": _2, \"kawakami\": _2, \"kiso\": _2, \"kisofukushima\": _2, \"kitaaiki\": _2, \"komagane\": _2, \"komoro\": _2, \"matsukawa\": _2, \"matsumoto\": _2, \"miasa\": _2, \"minamiaiki\": _2, \"minamimaki\": _2, \"minamiminowa\": _2, \"minowa\": _2, \"miyada\": _2, \"miyota\": _2, \"mochizuki\": _2, \"nagano\": _2, \"nagawa\": _2, \"nagiso\": _2, \"nakagawa\": _2, \"nakano\": _2, \"nozawaonsen\": _2, \"obuse\": _2, \"ogawa\": _2, \"okaya\": _2, \"omachi\": _2, \"omi\": _2, \"ookuwa\": _2, \"ooshika\": _2, \"otaki\": _2, \"otari\": _2, \"sakae\": _2, \"sakaki\": _2, \"saku\": _2, \"sakuho\": _2, \"shimosuwa\": _2, \"shinanomachi\": _2, \"shiojiri\": _2, \"suwa\": _2, \"suzaka\": _2, \"takagi\": _2, \"takamori\": _2, \"takayama\": _2, \"tateshina\": _2, \"tatsuno\": _2, \"togakushi\": _2, \"togura\": _2, \"tomi\": _2, \"ueda\": _2, \"wada\": _2, \"yamagata\": _2, \"yamanouchi\": _2, \"yasaka\": _2, \"yasuoka\": _2 }], \"nagasaki\": [1, { \"chijiwa\": _2, \"futsu\": _2, \"goto\": _2, \"hasami\": _2, \"hirado\": _2, \"iki\": _2, \"isahaya\": _2, \"kawatana\": _2, \"kuchinotsu\": _2, \"matsuura\": _2, \"nagasaki\": _2, \"obama\": _2, \"omura\": _2, \"oseto\": _2, \"saikai\": _2, \"sasebo\": _2, \"seihi\": _2, \"shimabara\": _2, \"shinkamigoto\": _2, \"togitsu\": _2, \"tsushima\": _2, \"unzen\": _2 }], \"nara\": [1, { \"ando\": _2, \"gose\": _2, \"heguri\": _2, \"higashiyoshino\": _2, \"ikaruga\": _2, \"ikoma\": _2, \"kamikitayama\": _2, \"kanmaki\": _2, \"kashiba\": _2, \"kashihara\": _2, \"katsuragi\": _2, \"kawai\": _2, \"kawakami\": _2, \"kawanishi\": _2, \"koryo\": _2, \"kurotaki\": _2, \"mitsue\": _2, \"miyake\": _2, \"nara\": _2, \"nosegawa\": _2, \"oji\": _2, \"ouda\": _2, \"oyodo\": _2, \"sakurai\": _2, \"sango\": _2, \"shimoichi\": _2, \"shimokitayama\": _2, \"shinjo\": _2, \"soni\": _2, \"takatori\": _2, \"tawaramoto\": _2, \"tenkawa\": _2, \"tenri\": _2, \"uda\": _2, \"yamatokoriyama\": _2, \"yamatotakada\": _2, \"yamazoe\": _2, \"yoshino\": _2 }], \"niigata\": [1, { \"aga\": _2, \"agano\": _2, \"gosen\": _2, \"itoigawa\": _2, \"izumozaki\": _2, \"joetsu\": _2, \"kamo\": _2, \"kariwa\": _2, \"kashiwazaki\": _2, \"minamiuonuma\": _2, \"mitsuke\": _2, \"muika\": _2, \"murakami\": _2, \"myoko\": _2, \"nagaoka\": _2, \"niigata\": _2, \"ojiya\": _2, \"omi\": _2, \"sado\": _2, \"sanjo\": _2, \"seiro\": _2, \"seirou\": _2, \"sekikawa\": _2, \"shibata\": _2, \"tagami\": _2, \"tainai\": _2, \"tochio\": _2, \"tokamachi\": _2, \"tsubame\": _2, \"tsunan\": _2, \"uonuma\": _2, \"yahiko\": _2, \"yoita\": _2, \"yuzawa\": _2 }], \"oita\": [1, { \"beppu\": _2, \"bungoono\": _2, \"bungotakada\": _2, \"hasama\": _2, \"hiji\": _2, \"himeshima\": _2, \"hita\": _2, \"kamitsue\": _2, \"kokonoe\": _2, \"kuju\": _2, \"kunisaki\": _2, \"kusu\": _2, \"oita\": _2, \"saiki\": _2, \"taketa\": _2, \"tsukumi\": _2, \"usa\": _2, \"usuki\": _2, \"yufu\": _2 }], \"okayama\": [1, { \"akaiwa\": _2, \"asakuchi\": _2, \"bizen\": _2, \"hayashima\": _2, \"ibara\": _2, \"kagamino\": _2, \"kasaoka\": _2, \"kibichuo\": _2, \"kumenan\": _2, \"kurashiki\": _2, \"maniwa\": _2, \"misaki\": _2, \"nagi\": _2, \"niimi\": _2, \"nishiawakura\": _2, \"okayama\": _2, \"satosho\": _2, \"setouchi\": _2, \"shinjo\": _2, \"shoo\": _2, \"soja\": _2, \"takahashi\": _2, \"tamano\": _2, \"tsuyama\": _2, \"wake\": _2, \"yakage\": _2 }], \"okinawa\": [1, { \"aguni\": _2, \"ginowan\": _2, \"ginoza\": _2, \"gushikami\": _2, \"haebaru\": _2, \"higashi\": _2, \"hirara\": _2, \"iheya\": _2, \"ishigaki\": _2, \"ishikawa\": _2, \"itoman\": _2, \"izena\": _2, \"kadena\": _2, \"kin\": _2, \"kitadaito\": _2, \"kitanakagusuku\": _2, \"kumejima\": _2, \"kunigami\": _2, \"minamidaito\": _2, \"motobu\": _2, \"nago\": _2, \"naha\": _2, \"nakagusuku\": _2, \"nakijin\": _2, \"nanjo\": _2, \"nishihara\": _2, \"ogimi\": _2, \"okinawa\": _2, \"onna\": _2, \"shimoji\": _2, \"taketomi\": _2, \"tarama\": _2, \"tokashiki\": _2, \"tomigusuku\": _2, \"tonaki\": _2, \"urasoe\": _2, \"uruma\": _2, \"yaese\": _2, \"yomitan\": _2, \"yonabaru\": _2, \"yonaguni\": _2, \"zamami\": _2 }], \"osaka\": [1, { \"abeno\": _2, \"chihayaakasaka\": _2, \"chuo\": _2, \"daito\": _2, \"fujiidera\": _2, \"habikino\": _2, \"hannan\": _2, \"higashiosaka\": _2, \"higashisumiyoshi\": _2, \"higashiyodogawa\": _2, \"hirakata\": _2, \"ibaraki\": _2, \"ikeda\": _2, \"izumi\": _2, \"izumiotsu\": _2, \"izumisano\": _2, \"kadoma\": _2, \"kaizuka\": _2, \"kanan\": _2, \"kashiwara\": _2, \"katano\": _2, \"kawachinagano\": _2, \"kishiwada\": _2, \"kita\": _2, \"kumatori\": _2, \"matsubara\": _2, \"minato\": _2, \"minoh\": _2, \"misaki\": _2, \"moriguchi\": _2, \"neyagawa\": _2, \"nishi\": _2, \"nose\": _2, \"osakasayama\": _2, \"sakai\": _2, \"sayama\": _2, \"sennan\": _2, \"settsu\": _2, \"shijonawate\": _2, \"shimamoto\": _2, \"suita\": _2, \"tadaoka\": _2, \"taishi\": _2, \"tajiri\": _2, \"takaishi\": _2, \"takatsuki\": _2, \"tondabayashi\": _2, \"toyonaka\": _2, \"toyono\": _2, \"yao\": _2 }], \"saga\": [1, { \"ariake\": _2, \"arita\": _2, \"fukudomi\": _2, \"genkai\": _2, \"hamatama\": _2, \"hizen\": _2, \"imari\": _2, \"kamimine\": _2, \"kanzaki\": _2, \"karatsu\": _2, \"kashima\": _2, \"kitagata\": _2, \"kitahata\": _2, \"kiyama\": _2, \"kouhoku\": _2, \"kyuragi\": _2, \"nishiarita\": _2, \"ogi\": _2, \"omachi\": _2, \"ouchi\": _2, \"saga\": _2, \"shiroishi\": _2, \"taku\": _2, \"tara\": _2, \"tosu\": _2, \"yoshinogari\": _2 }], \"saitama\": [1, { \"arakawa\": _2, \"asaka\": _2, \"chichibu\": _2, \"fujimi\": _2, \"fujimino\": _2, \"fukaya\": _2, \"hanno\": _2, \"hanyu\": _2, \"hasuda\": _2, \"hatogaya\": _2, \"hatoyama\": _2, \"hidaka\": _2, \"higashichichibu\": _2, \"higashimatsuyama\": _2, \"honjo\": _2, \"ina\": _2, \"iruma\": _2, \"iwatsuki\": _2, \"kamiizumi\": _2, \"kamikawa\": _2, \"kamisato\": _2, \"kasukabe\": _2, \"kawagoe\": _2, \"kawaguchi\": _2, \"kawajima\": _2, \"kazo\": _2, \"kitamoto\": _2, \"koshigaya\": _2, \"kounosu\": _2, \"kuki\": _2, \"kumagaya\": _2, \"matsubushi\": _2, \"minano\": _2, \"misato\": _2, \"miyashiro\": _2, \"miyoshi\": _2, \"moroyama\": _2, \"nagatoro\": _2, \"namegawa\": _2, \"niiza\": _2, \"ogano\": _2, \"ogawa\": _2, \"ogose\": _2, \"okegawa\": _2, \"omiya\": _2, \"otaki\": _2, \"ranzan\": _2, \"ryokami\": _2, \"saitama\": _2, \"sakado\": _2, \"satte\": _2, \"sayama\": _2, \"shiki\": _2, \"shiraoka\": _2, \"soka\": _2, \"sugito\": _2, \"toda\": _2, \"tokigawa\": _2, \"tokorozawa\": _2, \"tsurugashima\": _2, \"urawa\": _2, \"warabi\": _2, \"yashio\": _2, \"yokoze\": _2, \"yono\": _2, \"yorii\": _2, \"yoshida\": _2, \"yoshikawa\": _2, \"yoshimi\": _2 }], \"shiga\": [1, { \"aisho\": _2, \"gamo\": _2, \"higashiomi\": _2, \"hikone\": _2, \"koka\": _2, \"konan\": _2, \"kosei\": _2, \"koto\": _2, \"kusatsu\": _2, \"maibara\": _2, \"moriyama\": _2, \"nagahama\": _2, \"nishiazai\": _2, \"notogawa\": _2, \"omihachiman\": _2, \"otsu\": _2, \"ritto\": _2, \"ryuoh\": _2, \"takashima\": _2, \"takatsuki\": _2, \"torahime\": _2, \"toyosato\": _2, \"yasu\": _2 }], \"shimane\": [1, { \"akagi\": _2, \"ama\": _2, \"gotsu\": _2, \"hamada\": _2, \"higashiizumo\": _2, \"hikawa\": _2, \"hikimi\": _2, \"izumo\": _2, \"kakinoki\": _2, \"masuda\": _2, \"matsue\": _2, \"misato\": _2, \"nishinoshima\": _2, \"ohda\": _2, \"okinoshima\": _2, \"okuizumo\": _2, \"shimane\": _2, \"tamayu\": _2, \"tsuwano\": _2, \"unnan\": _2, \"yakumo\": _2, \"yasugi\": _2, \"yatsuka\": _2 }], \"shizuoka\": [1, { \"arai\": _2, \"atami\": _2, \"fuji\": _2, \"fujieda\": _2, \"fujikawa\": _2, \"fujinomiya\": _2, \"fukuroi\": _2, \"gotemba\": _2, \"haibara\": _2, \"hamamatsu\": _2, \"higashiizu\": _2, \"ito\": _2, \"iwata\": _2, \"izu\": _2, \"izunokuni\": _2, \"kakegawa\": _2, \"kannami\": _2, \"kawanehon\": _2, \"kawazu\": _2, \"kikugawa\": _2, \"kosai\": _2, \"makinohara\": _2, \"matsuzaki\": _2, \"minamiizu\": _2, \"mishima\": _2, \"morimachi\": _2, \"nishiizu\": _2, \"numazu\": _2, \"omaezaki\": _2, \"shimada\": _2, \"shimizu\": _2, \"shimoda\": _2, \"shizuoka\": _2, \"susono\": _2, \"yaizu\": _2, \"yoshida\": _2 }], \"tochigi\": [1, { \"ashikaga\": _2, \"bato\": _2, \"haga\": _2, \"ichikai\": _2, \"iwafune\": _2, \"kaminokawa\": _2, \"kanuma\": _2, \"karasuyama\": _2, \"kuroiso\": _2, \"mashiko\": _2, \"mibu\": _2, \"moka\": _2, \"motegi\": _2, \"nasu\": _2, \"nasushiobara\": _2, \"nikko\": _2, \"nishikata\": _2, \"nogi\": _2, \"ohira\": _2, \"ohtawara\": _2, \"oyama\": _2, \"sakura\": _2, \"sano\": _2, \"shimotsuke\": _2, \"shioya\": _2, \"takanezawa\": _2, \"tochigi\": _2, \"tsuga\": _2, \"ujiie\": _2, \"utsunomiya\": _2, \"yaita\": _2 }], \"tokushima\": [1, { \"aizumi\": _2, \"anan\": _2, \"ichiba\": _2, \"itano\": _2, \"kainan\": _2, \"komatsushima\": _2, \"matsushige\": _2, \"mima\": _2, \"minami\": _2, \"miyoshi\": _2, \"mugi\": _2, \"nakagawa\": _2, \"naruto\": _2, \"sanagochi\": _2, \"shishikui\": _2, \"tokushima\": _2, \"wajiki\": _2 }], \"tokyo\": [1, { \"adachi\": _2, \"akiruno\": _2, \"akishima\": _2, \"aogashima\": _2, \"arakawa\": _2, \"bunkyo\": _2, \"chiyoda\": _2, \"chofu\": _2, \"chuo\": _2, \"edogawa\": _2, \"fuchu\": _2, \"fussa\": _2, \"hachijo\": _2, \"hachioji\": _2, \"hamura\": _2, \"higashikurume\": _2, \"higashimurayama\": _2, \"higashiyamato\": _2, \"hino\": _2, \"hinode\": _2, \"hinohara\": _2, \"inagi\": _2, \"itabashi\": _2, \"katsushika\": _2, \"kita\": _2, \"kiyose\": _2, \"kodaira\": _2, \"koganei\": _2, \"kokubunji\": _2, \"komae\": _2, \"koto\": _2, \"kouzushima\": _2, \"kunitachi\": _2, \"machida\": _2, \"meguro\": _2, \"minato\": _2, \"mitaka\": _2, \"mizuho\": _2, \"musashimurayama\": _2, \"musashino\": _2, \"nakano\": _2, \"nerima\": _2, \"ogasawara\": _2, \"okutama\": _2, \"ome\": _2, \"oshima\": _2, \"ota\": _2, \"setagaya\": _2, \"shibuya\": _2, \"shinagawa\": _2, \"shinjuku\": _2, \"suginami\": _2, \"sumida\": _2, \"tachikawa\": _2, \"taito\": _2, \"tama\": _2, \"toshima\": _2 }], \"tottori\": [1, { \"chizu\": _2, \"hino\": _2, \"kawahara\": _2, \"koge\": _2, \"kotoura\": _2, \"misasa\": _2, \"nanbu\": _2, \"nichinan\": _2, \"sakaiminato\": _2, \"tottori\": _2, \"wakasa\": _2, \"yazu\": _2, \"yonago\": _2 }], \"toyama\": [1, { \"asahi\": _2, \"fuchu\": _2, \"fukumitsu\": _2, \"funahashi\": _2, \"himi\": _2, \"imizu\": _2, \"inami\": _2, \"johana\": _2, \"kamiichi\": _2, \"kurobe\": _2, \"nakaniikawa\": _2, \"namerikawa\": _2, \"nanto\": _2, \"nyuzen\": _2, \"oyabe\": _2, \"taira\": _2, \"takaoka\": _2, \"tateyama\": _2, \"toga\": _2, \"tonami\": _2, \"toyama\": _2, \"unazuki\": _2, \"uozu\": _2, \"yamada\": _2 }], \"wakayama\": [1, { \"arida\": _2, \"aridagawa\": _2, \"gobo\": _2, \"hashimoto\": _2, \"hidaka\": _2, \"hirogawa\": _2, \"inami\": _2, \"iwade\": _2, \"kainan\": _2, \"kamitonda\": _2, \"katsuragi\": _2, \"kimino\": _2, \"kinokawa\": _2, \"kitayama\": _2, \"koya\": _2, \"koza\": _2, \"kozagawa\": _2, \"kudoyama\": _2, \"kushimoto\": _2, \"mihama\": _2, \"misato\": _2, \"nachikatsuura\": _2, \"shingu\": _2, \"shirahama\": _2, \"taiji\": _2, \"tanabe\": _2, \"wakayama\": _2, \"yuasa\": _2, \"yura\": _2 }], \"yamagata\": [1, { \"asahi\": _2, \"funagata\": _2, \"higashine\": _2, \"iide\": _2, \"kahoku\": _2, \"kaminoyama\": _2, \"kaneyama\": _2, \"kawanishi\": _2, \"mamurogawa\": _2, \"mikawa\": _2, \"murayama\": _2, \"nagai\": _2, \"nakayama\": _2, \"nanyo\": _2, \"nishikawa\": _2, \"obanazawa\": _2, \"oe\": _2, \"oguni\": _2, \"ohkura\": _2, \"oishida\": _2, \"sagae\": _2, \"sakata\": _2, \"sakegawa\": _2, \"shinjo\": _2, \"shirataka\": _2, \"shonai\": _2, \"takahata\": _2, \"tendo\": _2, \"tozawa\": _2, \"tsuruoka\": _2, \"yamagata\": _2, \"yamanobe\": _2, \"yonezawa\": _2, \"yuza\": _2 }], \"yamaguchi\": [1, { \"abu\": _2, \"hagi\": _2, \"hikari\": _2, \"hofu\": _2, \"iwakuni\": _2, \"kudamatsu\": _2, \"mitou\": _2, \"nagato\": _2, \"oshima\": _2, \"shimonoseki\": _2, \"shunan\": _2, \"tabuse\": _2, \"tokuyama\": _2, \"toyota\": _2, \"ube\": _2, \"yuu\": _2 }], \"yamanashi\": [1, { \"chuo\": _2, \"doshi\": _2, \"fuefuki\": _2, \"fujikawa\": _2, \"fujikawaguchiko\": _2, \"fujiyoshida\": _2, \"hayakawa\": _2, \"hokuto\": _2, \"ichikawamisato\": _2, \"kai\": _2, \"kofu\": _2, \"koshu\": _2, \"kosuge\": _2, \"minami-alps\": _2, \"minobu\": _2, \"nakamichi\": _2, \"nanbu\": _2, \"narusawa\": _2, \"nirasaki\": _2, \"nishikatsura\": _2, \"oshino\": _2, \"otsuki\": _2, \"showa\": _2, \"tabayama\": _2, \"tsuru\": _2, \"uenohara\": _2, \"yamanakako\": _2, \"yamanashi\": _2 }], \"xn--ehqz56n\": _2, \"三重\": _2, \"xn--1lqs03n\": _2, \"京都\": _2, \"xn--qqqt11m\": _2, \"佐賀\": _2, \"xn--f6qx53a\": _2, \"兵庫\": _2, \"xn--djrs72d6uy\": _2, \"北海道\": _2, \"xn--mkru45i\": _2, \"千葉\": _2, \"xn--0trq7p7nn\": _2, \"和歌山\": _2, \"xn--5js045d\": _2, \"埼玉\": _2, \"xn--kbrq7o\": _2, \"大分\": _2, \"xn--pssu33l\": _2, \"大阪\": _2, \"xn--ntsq17g\": _2, \"奈良\": _2, \"xn--uisz3g\": _2, \"宮城\": _2, \"xn--6btw5a\": _2, \"宮崎\": _2, \"xn--1ctwo\": _2, \"富山\": _2, \"xn--6orx2r\": _2, \"山口\": _2, \"xn--rht61e\": _2, \"山形\": _2, \"xn--rht27z\": _2, \"山梨\": _2, \"xn--nit225k\": _2, \"岐阜\": _2, \"xn--rht3d\": _2, \"岡山\": _2, \"xn--djty4k\": _2, \"岩手\": _2, \"xn--klty5x\": _2, \"島根\": _2, \"xn--kltx9a\": _2, \"広島\": _2, \"xn--kltp7d\": _2, \"徳島\": _2, \"xn--c3s14m\": _2, \"愛媛\": _2, \"xn--vgu402c\": _2, \"愛知\": _2, \"xn--efvn9s\": _2, \"新潟\": _2, \"xn--1lqs71d\": _2, \"東京\": _2, \"xn--4pvxs\": _2, \"栃木\": _2, \"xn--uuwu58a\": _2, \"沖縄\": _2, \"xn--zbx025d\": _2, \"滋賀\": _2, \"xn--8pvr4u\": _2, \"熊本\": _2, \"xn--5rtp49c\": _2, \"石川\": _2, \"xn--ntso0iqx3a\": _2, \"神奈川\": _2, \"xn--elqq16h\": _2, \"福井\": _2, \"xn--4it168d\": _2, \"福岡\": _2, \"xn--klt787d\": _2, \"福島\": _2, \"xn--rny31h\": _2, \"秋田\": _2, \"xn--7t0a264c\": _2, \"群馬\": _2, \"xn--uist22h\": _2, \"茨城\": _2, \"xn--8ltr62k\": _2, \"長崎\": _2, \"xn--2m4a15e\": _2, \"長野\": _2, \"xn--32vp30h\": _2, \"青森\": _2, \"xn--4it797k\": _2, \"静岡\": _2, \"xn--5rtq34k\": _2, \"香川\": _2, \"xn--k7yn95e\": _2, \"高知\": _2, \"xn--tor131o\": _2, \"鳥取\": _2, \"xn--d5qv7z876c\": _2, \"鹿児島\": _2, \"kawasaki\": _21, \"kitakyushu\": _21, \"kobe\": _21, \"nagoya\": _21, \"sapporo\": _21, \"sendai\": _21, \"yokohama\": _21, \"buyshop\": _3, \"fashionstore\": _3, \"handcrafted\": _3, \"kawaiishop\": _3, \"supersale\": _3, \"theshop\": _3, \"0am\": _3, \"0g0\": _3, \"0j0\": _3, \"0t0\": _3, \"mydns\": _3, \"pgw\": _3, \"wjg\": _3, \"usercontent\": _3, \"angry\": _3, \"babyblue\": _3, \"babymilk\": _3, \"backdrop\": _3, \"bambina\": _3, \"bitter\": _3, \"blush\": _3, \"boo\": _3, \"boy\": _3, \"boyfriend\": _3, \"but\": _3, \"candypop\": _3, \"capoo\": _3, \"catfood\": _3, \"cheap\": _3, \"chicappa\": _3, \"chillout\": _3, \"chips\": _3, \"chowder\": _3, \"chu\": _3, \"ciao\": _3, \"cocotte\": _3, \"coolblog\": _3, \"cranky\": _3, \"cutegirl\": _3, \"daa\": _3, \"deca\": _3, \"deci\": _3, \"digick\": _3, \"egoism\": _3, \"fakefur\": _3, \"fem\": _3, \"flier\": _3, \"floppy\": _3, \"fool\": _3, \"frenchkiss\": _3, \"girlfriend\": _3, \"girly\": _3, \"gloomy\": _3, \"gonna\": _3, \"greater\": _3, \"hacca\": _3, \"heavy\": _3, \"her\": _3, \"hiho\": _3, \"hippy\": _3, \"holy\": _3, \"hungry\": _3, \"icurus\": _3, \"itigo\": _3, \"jellybean\": _3, \"kikirara\": _3, \"kill\": _3, \"kilo\": _3, \"kuron\": _3, \"littlestar\": _3, \"lolipopmc\": _3, \"lolitapunk\": _3, \"lomo\": _3, \"lovepop\": _3, \"lovesick\": _3, \"main\": _3, \"mods\": _3, \"mond\": _3, \"mongolian\": _3, \"moo\": _3, \"namaste\": _3, \"nikita\": _3, \"nobushi\": _3, \"noor\": _3, \"oops\": _3, \"parallel\": _3, \"parasite\": _3, \"pecori\": _3, \"peewee\": _3, \"penne\": _3, \"pepper\": _3, \"perma\": _3, \"pigboat\": _3, \"pinoko\": _3, \"punyu\": _3, \"pupu\": _3, \"pussycat\": _3, \"pya\": _3, \"raindrop\": _3, \"readymade\": _3, \"sadist\": _3, \"schoolbus\": _3, \"secret\": _3, \"staba\": _3, \"stripper\": _3, \"sub\": _3, \"sunnyday\": _3, \"thick\": _3, \"tonkotsu\": _3, \"under\": _3, \"upper\": _3, \"velvet\": _3, \"verse\": _3, \"versus\": _3, \"vivian\": _3, \"watson\": _3, \"weblike\": _3, \"whitesnow\": _3, \"zombie\": _3, \"hateblo\": _3, \"hatenablog\": _3, \"hatenadiary\": _3, \"2-d\": _3, \"bona\": _3, \"crap\": _3, \"daynight\": _3, \"eek\": _3, \"flop\": _3, \"halfmoon\": _3, \"jeez\": _3, \"matrix\": _3, \"mimoza\": _3, \"netgamers\": _3, \"nyanta\": _3, \"o0o0\": _3, \"rdy\": _3, \"rgr\": _3, \"rulez\": _3, \"sakurastorage\": [0, { \"isk01\": _59, \"isk02\": _59 }], \"saloon\": _3, \"sblo\": _3, \"skr\": _3, \"tank\": _3, \"uh-oh\": _3, \"undo\": _3, \"webaccel\": [0, { \"rs\": _3, \"user\": _3 }], \"websozai\": _3, \"xii\": _3 }], \"ke\": [1, { \"ac\": _2, \"co\": _2, \"go\": _2, \"info\": _2, \"me\": _2, \"mobi\": _2, \"ne\": _2, \"or\": _2, \"sc\": _2 }], \"kg\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"us\": _3, \"xx\": _3, \"ae\": _3 }], \"kh\": _21, \"ki\": _60, \"km\": [1, { \"ass\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"nom\": _2, \"org\": _2, \"prd\": _2, \"tm\": _2, \"asso\": _2, \"coop\": _2, \"gouv\": _2, \"medecin\": _2, \"notaires\": _2, \"pharmaciens\": _2, \"presse\": _2, \"veterinaire\": _2 }], \"kn\": [1, { \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2 }], \"kp\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"org\": _2, \"rep\": _2, \"tra\": _2 }], \"kr\": [1, { \"ac\": _2, \"ai\": _2, \"co\": _2, \"es\": _2, \"go\": _2, \"hs\": _2, \"io\": _2, \"it\": _2, \"kg\": _2, \"me\": _2, \"mil\": _2, \"ms\": _2, \"ne\": _2, \"or\": _2, \"pe\": _2, \"re\": _2, \"sc\": _2, \"busan\": _2, \"chungbuk\": _2, \"chungnam\": _2, \"daegu\": _2, \"daejeon\": _2, \"gangwon\": _2, \"gwangju\": _2, \"gyeongbuk\": _2, \"gyeonggi\": _2, \"gyeongnam\": _2, \"incheon\": _2, \"jeju\": _2, \"jeonbuk\": _2, \"jeonnam\": _2, \"seoul\": _2, \"ulsan\": _2, \"c01\": _3, \"eliv-api\": _3, \"eliv-cdn\": _3, \"eliv-dns\": _3, \"mmv\": _3, \"vki\": _3 }], \"kw\": [1, { \"com\": _2, \"edu\": _2, \"emb\": _2, \"gov\": _2, \"ind\": _2, \"net\": _2, \"org\": _2 }], \"ky\": _47, \"kz\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"jcloud\": _3 }], \"la\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"int\": _2, \"net\": _2, \"org\": _2, \"per\": _2, \"bnr\": _3 }], \"lb\": _4, \"lc\": [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"oy\": _3 }], \"li\": _2, \"lk\": [1, { \"ac\": _2, \"assn\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"grp\": _2, \"hotel\": _2, \"int\": _2, \"ltd\": _2, \"net\": _2, \"ngo\": _2, \"org\": _2, \"sch\": _2, \"soc\": _2, \"web\": _2 }], \"lr\": _4, \"ls\": [1, { \"ac\": _2, \"biz\": _2, \"co\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"net\": _2, \"org\": _2, \"sc\": _2 }], \"lt\": _10, \"lu\": [1, { \"123website\": _3 }], \"lv\": [1, { \"asn\": _2, \"com\": _2, \"conf\": _2, \"edu\": _2, \"gov\": _2, \"id\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], \"ly\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"id\": _2, \"med\": _2, \"net\": _2, \"org\": _2, \"plc\": _2, \"sch\": _2 }], \"ma\": [1, { \"ac\": _2, \"co\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"press\": _2 }], \"mc\": [1, { \"asso\": _2, \"tm\": _2 }], \"md\": [1, { \"ir\": _3 }], \"me\": [1, { \"ac\": _2, \"co\": _2, \"edu\": _2, \"gov\": _2, \"its\": _2, \"net\": _2, \"org\": _2, \"priv\": _2, \"c66\": _3, \"craft\": _3, \"edgestack\": _3, \"filegear\": _3, \"filegear-sg\": _3, \"lohmus\": _3, \"barsy\": _3, \"mcdir\": _3, \"brasilia\": _3, \"ddns\": _3, \"dnsfor\": _3, \"hopto\": _3, \"loginto\": _3, \"noip\": _3, \"webhop\": _3, \"soundcast\": _3, \"tcp4\": _3, \"vp4\": _3, \"diskstation\": _3, \"dscloud\": _3, \"i234\": _3, \"myds\": _3, \"synology\": _3, \"transip\": _46, \"nohost\": _3 }], \"mg\": [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"nom\": _2, \"org\": _2, \"prd\": _2 }], \"mh\": _2, \"mil\": _2, \"mk\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"inf\": _2, \"name\": _2, \"net\": _2, \"org\": _2 }], \"ml\": [1, { \"ac\": _2, \"art\": _2, \"asso\": _2, \"com\": _2, \"edu\": _2, \"gouv\": _2, \"gov\": _2, \"info\": _2, \"inst\": _2, \"net\": _2, \"org\": _2, \"pr\": _2, \"presse\": _2 }], \"mm\": _21, \"mn\": [1, { \"edu\": _2, \"gov\": _2, \"org\": _2, \"nyc\": _3 }], \"mo\": _4, \"mobi\": [1, { \"barsy\": _3, \"dscloud\": _3 }], \"mp\": [1, { \"ju\": _3 }], \"mq\": _2, \"mr\": _10, \"ms\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"minisite\": _3 }], \"mt\": _47, \"mu\": [1, { \"ac\": _2, \"co\": _2, \"com\": _2, \"gov\": _2, \"net\": _2, \"or\": _2, \"org\": _2 }], \"museum\": _2, \"mv\": [1, { \"aero\": _2, \"biz\": _2, \"com\": _2, \"coop\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"int\": _2, \"mil\": _2, \"museum\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"pro\": _2 }], \"mw\": [1, { \"ac\": _2, \"biz\": _2, \"co\": _2, \"com\": _2, \"coop\": _2, \"edu\": _2, \"gov\": _2, \"int\": _2, \"net\": _2, \"org\": _2 }], \"mx\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"net\": _2, \"org\": _2 }], \"my\": [1, { \"biz\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"org\": _2 }], \"mz\": [1, { \"ac\": _2, \"adv\": _2, \"co\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], \"na\": [1, { \"alt\": _2, \"co\": _2, \"com\": _2, \"gov\": _2, \"net\": _2, \"org\": _2 }], \"name\": [1, { \"her\": _63, \"his\": _63, \"ispmanager\": _3, \"keenetic\": _3 }], \"nc\": [1, { \"asso\": _2, \"nom\": _2 }], \"ne\": _2, \"net\": [1, { \"adobeaemcloud\": _3, \"adobeio-static\": _3, \"adobeioruntime\": _3, \"akadns\": _3, \"akamai\": _3, \"akamai-staging\": _3, \"akamaiedge\": _3, \"akamaiedge-staging\": _3, \"akamaihd\": _3, \"akamaihd-staging\": _3, \"akamaiorigin\": _3, \"akamaiorigin-staging\": _3, \"akamaized\": _3, \"akamaized-staging\": _3, \"edgekey\": _3, \"edgekey-staging\": _3, \"edgesuite\": _3, \"edgesuite-staging\": _3, \"alwaysdata\": _3, \"myamaze\": _3, \"cloudfront\": _3, \"appudo\": _3, \"atlassian-dev\": [0, { \"prod\": _55 }], \"myfritz\": _3, \"shopselect\": _3, \"blackbaudcdn\": _3, \"boomla\": _3, \"bplaced\": _3, \"square7\": _3, \"cdn77\": [0, { \"r\": _3 }], \"cdn77-ssl\": _3, \"gb\": _3, \"hu\": _3, \"jp\": _3, \"se\": _3, \"uk\": _3, \"clickrising\": _3, \"ddns-ip\": _3, \"dns-cloud\": _3, \"dns-dynamic\": _3, \"cloudaccess\": _3, \"cloudflare\": [2, { \"cdn\": _3 }], \"cloudflareanycast\": _55, \"cloudflarecn\": _55, \"cloudflareglobal\": _55, \"ctfcloud\": _3, \"feste-ip\": _3, \"knx-server\": _3, \"static-access\": _3, \"cryptonomic\": _6, \"dattolocal\": _3, \"mydatto\": _3, \"debian\": _3, \"definima\": _3, \"deno\": _3, \"icp\": _6, \"de5\": _3, \"at-band-camp\": _3, \"blogdns\": _3, \"broke-it\": _3, \"buyshouses\": _3, \"dnsalias\": _3, \"dnsdojo\": _3, \"does-it\": _3, \"dontexist\": _3, \"dynalias\": _3, \"dynathome\": _3, \"endofinternet\": _3, \"from-az\": _3, \"from-co\": _3, \"from-la\": _3, \"from-ny\": _3, \"gets-it\": _3, \"ham-radio-op\": _3, \"homeftp\": _3, \"homeip\": _3, \"homelinux\": _3, \"homeunix\": _3, \"in-the-band\": _3, \"is-a-chef\": _3, \"is-a-geek\": _3, \"isa-geek\": _3, \"kicks-ass\": _3, \"office-on-the\": _3, \"podzone\": _3, \"scrapper-site\": _3, \"selfip\": _3, \"sells-it\": _3, \"servebbs\": _3, \"serveftp\": _3, \"thruhere\": _3, \"webhop\": _3, \"casacam\": _3, \"dynu\": _3, \"dynuddns\": _3, \"mysynology\": _3, \"opik\": _3, \"spryt\": _3, \"dynv6\": _3, \"twmail\": _3, \"ru\": _3, \"channelsdvr\": [2, { \"u\": _3 }], \"fastly\": [0, { \"freetls\": _3, \"map\": _3, \"prod\": [0, { \"a\": _3, \"global\": _3 }], \"ssl\": [0, { \"a\": _3, \"b\": _3, \"global\": _3 }] }], \"fastlylb\": [2, { \"map\": _3 }], \"keyword-on\": _3, \"live-on\": _3, \"server-on\": _3, \"cdn-edges\": _3, \"heteml\": _3, \"cloudfunctions\": _3, \"grafana-dev\": _3, \"iobb\": _3, \"moonscale\": _3, \"in-dsl\": _3, \"in-vpn\": _3, \"oninferno\": _3, \"botdash\": _3, \"apps-1and1\": _3, \"ipifony\": _3, \"cloudjiffy\": [2, { \"fra1-de\": _3, \"west1-us\": _3 }], \"elastx\": [0, { \"jls-sto1\": _3, \"jls-sto2\": _3, \"jls-sto3\": _3 }], \"massivegrid\": [0, { \"paas\": [0, { \"fr-1\": _3, \"lon-1\": _3, \"lon-2\": _3, \"ny-1\": _3, \"ny-2\": _3, \"sg-1\": _3 }] }], \"saveincloud\": [0, { \"jelastic\": _3, \"nordeste-idc\": _3 }], \"scaleforce\": _48, \"kinghost\": _3, \"uni5\": _3, \"krellian\": _3, \"ggff\": _3, \"localto\": _6, \"barsy\": _3, \"luyani\": _3, \"memset\": _3, \"azure-api\": _3, \"azure-mobile\": _3, \"azureedge\": _3, \"azurefd\": _3, \"azurestaticapps\": [2, { \"1\": _3, \"2\": _3, \"3\": _3, \"4\": _3, \"5\": _3, \"6\": _3, \"7\": _3, \"centralus\": _3, \"eastasia\": _3, \"eastus2\": _3, \"westeurope\": _3, \"westus2\": _3 }], \"azurewebsites\": _3, \"cloudapp\": _3, \"trafficmanager\": _3, \"usgovcloudapi\": _65, \"usgovcloudapp\": _3, \"usgovtrafficmanager\": _3, \"windows\": _65, \"mynetname\": [0, { \"sn\": _3 }], \"routingthecloud\": _3, \"bounceme\": _3, \"ddns\": _3, \"eating-organic\": _3, \"mydissent\": _3, \"myeffect\": _3, \"mymediapc\": _3, \"mypsx\": _3, \"mysecuritycamera\": _3, \"nhlfan\": _3, \"no-ip\": _3, \"pgafan\": _3, \"privatizehealthinsurance\": _3, \"redirectme\": _3, \"serveblog\": _3, \"serveminecraft\": _3, \"sytes\": _3, \"dnsup\": _3, \"hicam\": _3, \"now-dns\": _3, \"ownip\": _3, \"vpndns\": _3, \"cloudycluster\": _3, \"ovh\": [0, { \"hosting\": _6, \"webpaas\": _6 }], \"rackmaze\": _3, \"myradweb\": _3, \"in\": _3, \"subsc-pay\": _3, \"squares\": _3, \"schokokeks\": _3, \"firewall-gateway\": _3, \"seidat\": _3, \"senseering\": _3, \"siteleaf\": _3, \"mafelo\": _3, \"myspreadshop\": _3, \"vps-host\": [2, { \"jelastic\": [0, { \"atl\": _3, \"njs\": _3, \"ric\": _3 }] }], \"srcf\": [0, { \"soc\": _3, \"user\": _3 }], \"supabase\": _3, \"dsmynas\": _3, \"familyds\": _3, \"ts\": [2, { \"c\": _6 }], \"torproject\": [2, { \"pages\": _3 }], \"tunnelmole\": _3, \"vusercontent\": _3, \"reserve-online\": _3, \"localcert\": _3, \"community-pro\": _3, \"meinforum\": _3, \"yandexcloud\": [2, { \"storage\": _3, \"website\": _3 }], \"za\": _3, \"zabc\": _3 }], \"nf\": [1, { \"arts\": _2, \"com\": _2, \"firm\": _2, \"info\": _2, \"net\": _2, \"other\": _2, \"per\": _2, \"rec\": _2, \"store\": _2, \"web\": _2 }], \"ng\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"i\": _2, \"mil\": _2, \"mobi\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"sch\": _2, \"biz\": [2, { \"co\": _3, \"dl\": _3, \"go\": _3, \"lg\": _3, \"on\": _3 }], \"col\": _3, \"firm\": _3, \"gen\": _3, \"ltd\": _3, \"ngo\": _3, \"plc\": _3 }], \"ni\": [1, { \"ac\": _2, \"biz\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"gob\": _2, \"in\": _2, \"info\": _2, \"int\": _2, \"mil\": _2, \"net\": _2, \"nom\": _2, \"org\": _2, \"web\": _2 }], \"nl\": [1, { \"co\": _3, \"hosting-cluster\": _3, \"gov\": _3, \"khplay\": _3, \"123website\": _3, \"myspreadshop\": _3, \"transurl\": _6, \"cistron\": _3, \"demon\": _3 }], \"no\": [1, { \"fhs\": _2, \"folkebibl\": _2, \"fylkesbibl\": _2, \"idrett\": _2, \"museum\": _2, \"priv\": _2, \"vgs\": _2, \"dep\": _2, \"herad\": _2, \"kommune\": _2, \"mil\": _2, \"stat\": _2, \"aa\": _66, \"ah\": _66, \"bu\": _66, \"fm\": _66, \"hl\": _66, \"hm\": _66, \"jan-mayen\": _66, \"mr\": _66, \"nl\": _66, \"nt\": _66, \"of\": _66, \"ol\": _66, \"oslo\": _66, \"rl\": _66, \"sf\": _66, \"st\": _66, \"svalbard\": _66, \"tm\": _66, \"tr\": _66, \"va\": _66, \"vf\": _66, \"akrehamn\": _2, \"xn--krehamn-dxa\": _2, \"åkrehamn\": _2, \"algard\": _2, \"xn--lgrd-poac\": _2, \"ålgård\": _2, \"arna\": _2, \"bronnoysund\": _2, \"xn--brnnysund-m8ac\": _2, \"brønnøysund\": _2, \"brumunddal\": _2, \"bryne\": _2, \"drobak\": _2, \"xn--drbak-wua\": _2, \"drøbak\": _2, \"egersund\": _2, \"fetsund\": _2, \"floro\": _2, \"xn--flor-jra\": _2, \"florø\": _2, \"fredrikstad\": _2, \"hokksund\": _2, \"honefoss\": _2, \"xn--hnefoss-q1a\": _2, \"hønefoss\": _2, \"jessheim\": _2, \"jorpeland\": _2, \"xn--jrpeland-54a\": _2, \"jørpeland\": _2, \"kirkenes\": _2, \"kopervik\": _2, \"krokstadelva\": _2, \"langevag\": _2, \"xn--langevg-jxa\": _2, \"langevåg\": _2, \"leirvik\": _2, \"mjondalen\": _2, \"xn--mjndalen-64a\": _2, \"mjøndalen\": _2, \"mo-i-rana\": _2, \"mosjoen\": _2, \"xn--mosjen-eya\": _2, \"mosjøen\": _2, \"nesoddtangen\": _2, \"orkanger\": _2, \"osoyro\": _2, \"xn--osyro-wua\": _2, \"osøyro\": _2, \"raholt\": _2, \"xn--rholt-mra\": _2, \"råholt\": _2, \"sandnessjoen\": _2, \"xn--sandnessjen-ogb\": _2, \"sandnessjøen\": _2, \"skedsmokorset\": _2, \"slattum\": _2, \"spjelkavik\": _2, \"stathelle\": _2, \"stavern\": _2, \"stjordalshalsen\": _2, \"xn--stjrdalshalsen-sqb\": _2, \"stjørdalshalsen\": _2, \"tananger\": _2, \"tranby\": _2, \"vossevangen\": _2, \"aarborte\": _2, \"aejrie\": _2, \"afjord\": _2, \"xn--fjord-lra\": _2, \"åfjord\": _2, \"agdenes\": _2, \"akershus\": _67, \"aknoluokta\": _2, \"xn--koluokta-7ya57h\": _2, \"ákŋoluokta\": _2, \"al\": _2, \"xn--l-1fa\": _2, \"ål\": _2, \"alaheadju\": _2, \"xn--laheadju-7ya\": _2, \"álaheadju\": _2, \"alesund\": _2, \"xn--lesund-hua\": _2, \"ålesund\": _2, \"alstahaug\": _2, \"alta\": _2, \"xn--lt-liac\": _2, \"áltá\": _2, \"alvdal\": _2, \"amli\": _2, \"xn--mli-tla\": _2, \"åmli\": _2, \"amot\": _2, \"xn--mot-tla\": _2, \"åmot\": _2, \"andasuolo\": _2, \"andebu\": _2, \"andoy\": _2, \"xn--andy-ira\": _2, \"andøy\": _2, \"ardal\": _2, \"xn--rdal-poa\": _2, \"årdal\": _2, \"aremark\": _2, \"arendal\": _2, \"xn--s-1fa\": _2, \"ås\": _2, \"aseral\": _2, \"xn--seral-lra\": _2, \"åseral\": _2, \"asker\": _2, \"askim\": _2, \"askoy\": _2, \"xn--asky-ira\": _2, \"askøy\": _2, \"askvoll\": _2, \"asnes\": _2, \"xn--snes-poa\": _2, \"åsnes\": _2, \"audnedaln\": _2, \"aukra\": _2, \"aure\": _2, \"aurland\": _2, \"aurskog-holand\": _2, \"xn--aurskog-hland-jnb\": _2, \"aurskog-høland\": _2, \"austevoll\": _2, \"austrheim\": _2, \"averoy\": _2, \"xn--avery-yua\": _2, \"averøy\": _2, \"badaddja\": _2, \"xn--bdddj-mrabd\": _2, \"bådåddjå\": _2, \"xn--brum-voa\": _2, \"bærum\": _2, \"bahcavuotna\": _2, \"xn--bhcavuotna-s4a\": _2, \"báhcavuotna\": _2, \"bahccavuotna\": _2, \"xn--bhccavuotna-k7a\": _2, \"báhccavuotna\": _2, \"baidar\": _2, \"xn--bidr-5nac\": _2, \"báidár\": _2, \"bajddar\": _2, \"xn--bjddar-pta\": _2, \"bájddar\": _2, \"balat\": _2, \"xn--blt-elab\": _2, \"bálát\": _2, \"balestrand\": _2, \"ballangen\": _2, \"balsfjord\": _2, \"bamble\": _2, \"bardu\": _2, \"barum\": _2, \"batsfjord\": _2, \"xn--btsfjord-9za\": _2, \"båtsfjord\": _2, \"bearalvahki\": _2, \"xn--bearalvhki-y4a\": _2, \"bearalváhki\": _2, \"beardu\": _2, \"beiarn\": _2, \"berg\": _2, \"bergen\": _2, \"berlevag\": _2, \"xn--berlevg-jxa\": _2, \"berlevåg\": _2, \"bievat\": _2, \"xn--bievt-0qa\": _2, \"bievát\": _2, \"bindal\": _2, \"birkenes\": _2, \"bjerkreim\": _2, \"bjugn\": _2, \"bodo\": _2, \"xn--bod-2na\": _2, \"bodø\": _2, \"bokn\": _2, \"bomlo\": _2, \"xn--bmlo-gra\": _2, \"bømlo\": _2, \"bremanger\": _2, \"bronnoy\": _2, \"xn--brnny-wuac\": _2, \"brønnøy\": _2, \"budejju\": _2, \"buskerud\": _67, \"bygland\": _2, \"bykle\": _2, \"cahcesuolo\": _2, \"xn--hcesuolo-7ya35b\": _2, \"čáhcesuolo\": _2, \"davvenjarga\": _2, \"xn--davvenjrga-y4a\": _2, \"davvenjárga\": _2, \"davvesiida\": _2, \"deatnu\": _2, \"dielddanuorri\": _2, \"divtasvuodna\": _2, \"divttasvuotna\": _2, \"donna\": _2, \"xn--dnna-gra\": _2, \"dønna\": _2, \"dovre\": _2, \"drammen\": _2, \"drangedal\": _2, \"dyroy\": _2, \"xn--dyry-ira\": _2, \"dyrøy\": _2, \"eid\": _2, \"eidfjord\": _2, \"eidsberg\": _2, \"eidskog\": _2, \"eidsvoll\": _2, \"eigersund\": _2, \"elverum\": _2, \"enebakk\": _2, \"engerdal\": _2, \"etne\": _2, \"etnedal\": _2, \"evenassi\": _2, \"xn--eveni-0qa01ga\": _2, \"evenášši\": _2, \"evenes\": _2, \"evje-og-hornnes\": _2, \"farsund\": _2, \"fauske\": _2, \"fedje\": _2, \"fet\": _2, \"finnoy\": _2, \"xn--finny-yua\": _2, \"finnøy\": _2, \"fitjar\": _2, \"fjaler\": _2, \"fjell\": _2, \"fla\": _2, \"xn--fl-zia\": _2, \"flå\": _2, \"flakstad\": _2, \"flatanger\": _2, \"flekkefjord\": _2, \"flesberg\": _2, \"flora\": _2, \"folldal\": _2, \"forde\": _2, \"xn--frde-gra\": _2, \"førde\": _2, \"forsand\": _2, \"fosnes\": _2, \"xn--frna-woa\": _2, \"fræna\": _2, \"frana\": _2, \"frei\": _2, \"frogn\": _2, \"froland\": _2, \"frosta\": _2, \"froya\": _2, \"xn--frya-hra\": _2, \"frøya\": _2, \"fuoisku\": _2, \"fuossko\": _2, \"fusa\": _2, \"fyresdal\": _2, \"gaivuotna\": _2, \"xn--givuotna-8ya\": _2, \"gáivuotna\": _2, \"galsa\": _2, \"xn--gls-elac\": _2, \"gálsá\": _2, \"gamvik\": _2, \"gangaviika\": _2, \"xn--ggaviika-8ya47h\": _2, \"gáŋgaviika\": _2, \"gaular\": _2, \"gausdal\": _2, \"giehtavuoatna\": _2, \"gildeskal\": _2, \"xn--gildeskl-g0a\": _2, \"gildeskål\": _2, \"giske\": _2, \"gjemnes\": _2, \"gjerdrum\": _2, \"gjerstad\": _2, \"gjesdal\": _2, \"gjovik\": _2, \"xn--gjvik-wua\": _2, \"gjøvik\": _2, \"gloppen\": _2, \"gol\": _2, \"gran\": _2, \"grane\": _2, \"granvin\": _2, \"gratangen\": _2, \"grimstad\": _2, \"grong\": _2, \"grue\": _2, \"gulen\": _2, \"guovdageaidnu\": _2, \"ha\": _2, \"xn--h-2fa\": _2, \"hå\": _2, \"habmer\": _2, \"xn--hbmer-xqa\": _2, \"hábmer\": _2, \"hadsel\": _2, \"xn--hgebostad-g3a\": _2, \"hægebostad\": _2, \"hagebostad\": _2, \"halden\": _2, \"halsa\": _2, \"hamar\": _2, \"hamaroy\": _2, \"hammarfeasta\": _2, \"xn--hmmrfeasta-s4ac\": _2, \"hámmárfeasta\": _2, \"hammerfest\": _2, \"hapmir\": _2, \"xn--hpmir-xqa\": _2, \"hápmir\": _2, \"haram\": _2, \"hareid\": _2, \"harstad\": _2, \"hasvik\": _2, \"hattfjelldal\": _2, \"haugesund\": _2, \"hedmark\": [0, { \"os\": _2, \"valer\": _2, \"xn--vler-qoa\": _2, \"våler\": _2 }], \"hemne\": _2, \"hemnes\": _2, \"hemsedal\": _2, \"hitra\": _2, \"hjartdal\": _2, \"hjelmeland\": _2, \"hobol\": _2, \"xn--hobl-ira\": _2, \"hobøl\": _2, \"hof\": _2, \"hol\": _2, \"hole\": _2, \"holmestrand\": _2, \"holtalen\": _2, \"xn--holtlen-hxa\": _2, \"holtålen\": _2, \"hordaland\": [0, { \"os\": _2 }], \"hornindal\": _2, \"horten\": _2, \"hoyanger\": _2, \"xn--hyanger-q1a\": _2, \"høyanger\": _2, \"hoylandet\": _2, \"xn--hylandet-54a\": _2, \"høylandet\": _2, \"hurdal\": _2, \"hurum\": _2, \"hvaler\": _2, \"hyllestad\": _2, \"ibestad\": _2, \"inderoy\": _2, \"xn--indery-fya\": _2, \"inderøy\": _2, \"iveland\": _2, \"ivgu\": _2, \"jevnaker\": _2, \"jolster\": _2, \"xn--jlster-bya\": _2, \"jølster\": _2, \"jondal\": _2, \"kafjord\": _2, \"xn--kfjord-iua\": _2, \"kåfjord\": _2, \"karasjohka\": _2, \"xn--krjohka-hwab49j\": _2, \"kárášjohka\": _2, \"karasjok\": _2, \"karlsoy\": _2, \"karmoy\": _2, \"xn--karmy-yua\": _2, \"karmøy\": _2, \"kautokeino\": _2, \"klabu\": _2, \"xn--klbu-woa\": _2, \"klæbu\": _2, \"klepp\": _2, \"kongsberg\": _2, \"kongsvinger\": _2, \"kraanghke\": _2, \"xn--kranghke-b0a\": _2, \"kråanghke\": _2, \"kragero\": _2, \"xn--krager-gya\": _2, \"kragerø\": _2, \"kristiansand\": _2, \"kristiansund\": _2, \"krodsherad\": _2, \"xn--krdsherad-m8a\": _2, \"krødsherad\": _2, \"xn--kvfjord-nxa\": _2, \"kvæfjord\": _2, \"xn--kvnangen-k0a\": _2, \"kvænangen\": _2, \"kvafjord\": _2, \"kvalsund\": _2, \"kvam\": _2, \"kvanangen\": _2, \"kvinesdal\": _2, \"kvinnherad\": _2, \"kviteseid\": _2, \"kvitsoy\": _2, \"xn--kvitsy-fya\": _2, \"kvitsøy\": _2, \"laakesvuemie\": _2, \"xn--lrdal-sra\": _2, \"lærdal\": _2, \"lahppi\": _2, \"xn--lhppi-xqa\": _2, \"láhppi\": _2, \"lardal\": _2, \"larvik\": _2, \"lavagis\": _2, \"lavangen\": _2, \"leangaviika\": _2, \"xn--leagaviika-52b\": _2, \"leaŋgaviika\": _2, \"lebesby\": _2, \"leikanger\": _2, \"leirfjord\": _2, \"leka\": _2, \"leksvik\": _2, \"lenvik\": _2, \"lerdal\": _2, \"lesja\": _2, \"levanger\": _2, \"lier\": _2, \"lierne\": _2, \"lillehammer\": _2, \"lillesand\": _2, \"lindas\": _2, \"xn--linds-pra\": _2, \"lindås\": _2, \"lindesnes\": _2, \"loabat\": _2, \"xn--loabt-0qa\": _2, \"loabát\": _2, \"lodingen\": _2, \"xn--ldingen-q1a\": _2, \"lødingen\": _2, \"lom\": _2, \"loppa\": _2, \"lorenskog\": _2, \"xn--lrenskog-54a\": _2, \"lørenskog\": _2, \"loten\": _2, \"xn--lten-gra\": _2, \"løten\": _2, \"lund\": _2, \"lunner\": _2, \"luroy\": _2, \"xn--lury-ira\": _2, \"lurøy\": _2, \"luster\": _2, \"lyngdal\": _2, \"lyngen\": _2, \"malatvuopmi\": _2, \"xn--mlatvuopmi-s4a\": _2, \"málatvuopmi\": _2, \"malselv\": _2, \"xn--mlselv-iua\": _2, \"målselv\": _2, \"malvik\": _2, \"mandal\": _2, \"marker\": _2, \"marnardal\": _2, \"masfjorden\": _2, \"masoy\": _2, \"xn--msy-ula0h\": _2, \"måsøy\": _2, \"matta-varjjat\": _2, \"xn--mtta-vrjjat-k7af\": _2, \"mátta-várjjat\": _2, \"meland\": _2, \"meldal\": _2, \"melhus\": _2, \"meloy\": _2, \"xn--mely-ira\": _2, \"meløy\": _2, \"meraker\": _2, \"xn--merker-kua\": _2, \"meråker\": _2, \"midsund\": _2, \"midtre-gauldal\": _2, \"moareke\": _2, \"xn--moreke-jua\": _2, \"moåreke\": _2, \"modalen\": _2, \"modum\": _2, \"molde\": _2, \"more-og-romsdal\": [0, { \"heroy\": _2, \"sande\": _2 }], \"xn--mre-og-romsdal-qqb\": [0, { \"xn--hery-ira\": _2, \"sande\": _2 }], \"møre-og-romsdal\": [0, { \"herøy\": _2, \"sande\": _2 }], \"moskenes\": _2, \"moss\": _2, \"muosat\": _2, \"xn--muost-0qa\": _2, \"muosát\": _2, \"naamesjevuemie\": _2, \"xn--nmesjevuemie-tcba\": _2, \"nååmesjevuemie\": _2, \"xn--nry-yla5g\": _2, \"nærøy\": _2, \"namdalseid\": _2, \"namsos\": _2, \"namsskogan\": _2, \"nannestad\": _2, \"naroy\": _2, \"narviika\": _2, \"narvik\": _2, \"naustdal\": _2, \"navuotna\": _2, \"xn--nvuotna-hwa\": _2, \"návuotna\": _2, \"nedre-eiker\": _2, \"nesna\": _2, \"nesodden\": _2, \"nesseby\": _2, \"nesset\": _2, \"nissedal\": _2, \"nittedal\": _2, \"nord-aurdal\": _2, \"nord-fron\": _2, \"nord-odal\": _2, \"norddal\": _2, \"nordkapp\": _2, \"nordland\": [0, { \"bo\": _2, \"xn--b-5ga\": _2, \"bø\": _2, \"heroy\": _2, \"xn--hery-ira\": _2, \"herøy\": _2 }], \"nordre-land\": _2, \"nordreisa\": _2, \"nore-og-uvdal\": _2, \"notodden\": _2, \"notteroy\": _2, \"xn--nttery-byae\": _2, \"nøtterøy\": _2, \"odda\": _2, \"oksnes\": _2, \"xn--ksnes-uua\": _2, \"øksnes\": _2, \"omasvuotna\": _2, \"oppdal\": _2, \"oppegard\": _2, \"xn--oppegrd-ixa\": _2, \"oppegård\": _2, \"orkdal\": _2, \"orland\": _2, \"xn--rland-uua\": _2, \"ørland\": _2, \"orskog\": _2, \"xn--rskog-uua\": _2, \"ørskog\": _2, \"orsta\": _2, \"xn--rsta-fra\": _2, \"ørsta\": _2, \"osen\": _2, \"osteroy\": _2, \"xn--ostery-fya\": _2, \"osterøy\": _2, \"ostfold\": [0, { \"valer\": _2 }], \"xn--stfold-9xa\": [0, { \"xn--vler-qoa\": _2 }], \"østfold\": [0, { \"våler\": _2 }], \"ostre-toten\": _2, \"xn--stre-toten-zcb\": _2, \"østre-toten\": _2, \"overhalla\": _2, \"ovre-eiker\": _2, \"xn--vre-eiker-k8a\": _2, \"øvre-eiker\": _2, \"oyer\": _2, \"xn--yer-zna\": _2, \"øyer\": _2, \"oygarden\": _2, \"xn--ygarden-p1a\": _2, \"øygarden\": _2, \"oystre-slidre\": _2, \"xn--ystre-slidre-ujb\": _2, \"øystre-slidre\": _2, \"porsanger\": _2, \"porsangu\": _2, \"xn--porsgu-sta26f\": _2, \"porsáŋgu\": _2, \"porsgrunn\": _2, \"rade\": _2, \"xn--rde-ula\": _2, \"råde\": _2, \"radoy\": _2, \"xn--rady-ira\": _2, \"radøy\": _2, \"xn--rlingen-mxa\": _2, \"rælingen\": _2, \"rahkkeravju\": _2, \"xn--rhkkervju-01af\": _2, \"ráhkkerávju\": _2, \"raisa\": _2, \"xn--risa-5na\": _2, \"ráisa\": _2, \"rakkestad\": _2, \"ralingen\": _2, \"rana\": _2, \"randaberg\": _2, \"rauma\": _2, \"rendalen\": _2, \"rennebu\": _2, \"rennesoy\": _2, \"xn--rennesy-v1a\": _2, \"rennesøy\": _2, \"rindal\": _2, \"ringebu\": _2, \"ringerike\": _2, \"ringsaker\": _2, \"risor\": _2, \"xn--risr-ira\": _2, \"risør\": _2, \"rissa\": _2, \"roan\": _2, \"rodoy\": _2, \"xn--rdy-0nab\": _2, \"rødøy\": _2, \"rollag\": _2, \"romsa\": _2, \"romskog\": _2, \"xn--rmskog-bya\": _2, \"rømskog\": _2, \"roros\": _2, \"xn--rros-gra\": _2, \"røros\": _2, \"rost\": _2, \"xn--rst-0na\": _2, \"røst\": _2, \"royken\": _2, \"xn--ryken-vua\": _2, \"røyken\": _2, \"royrvik\": _2, \"xn--ryrvik-bya\": _2, \"røyrvik\": _2, \"ruovat\": _2, \"rygge\": _2, \"salangen\": _2, \"salat\": _2, \"xn--slat-5na\": _2, \"sálat\": _2, \"xn--slt-elab\": _2, \"sálát\": _2, \"saltdal\": _2, \"samnanger\": _2, \"sandefjord\": _2, \"sandnes\": _2, \"sandoy\": _2, \"xn--sandy-yua\": _2, \"sandøy\": _2, \"sarpsborg\": _2, \"sauda\": _2, \"sauherad\": _2, \"sel\": _2, \"selbu\": _2, \"selje\": _2, \"seljord\": _2, \"siellak\": _2, \"sigdal\": _2, \"siljan\": _2, \"sirdal\": _2, \"skanit\": _2, \"xn--sknit-yqa\": _2, \"skánit\": _2, \"skanland\": _2, \"xn--sknland-fxa\": _2, \"skånland\": _2, \"skaun\": _2, \"skedsmo\": _2, \"ski\": _2, \"skien\": _2, \"skierva\": _2, \"xn--skierv-uta\": _2, \"skiervá\": _2, \"skiptvet\": _2, \"skjak\": _2, \"xn--skjk-soa\": _2, \"skjåk\": _2, \"skjervoy\": _2, \"xn--skjervy-v1a\": _2, \"skjervøy\": _2, \"skodje\": _2, \"smola\": _2, \"xn--smla-hra\": _2, \"smøla\": _2, \"snaase\": _2, \"xn--snase-nra\": _2, \"snåase\": _2, \"snasa\": _2, \"xn--snsa-roa\": _2, \"snåsa\": _2, \"snillfjord\": _2, \"snoasa\": _2, \"sogndal\": _2, \"sogne\": _2, \"xn--sgne-gra\": _2, \"søgne\": _2, \"sokndal\": _2, \"sola\": _2, \"solund\": _2, \"somna\": _2, \"xn--smna-gra\": _2, \"sømna\": _2, \"sondre-land\": _2, \"xn--sndre-land-0cb\": _2, \"søndre-land\": _2, \"songdalen\": _2, \"sor-aurdal\": _2, \"xn--sr-aurdal-l8a\": _2, \"sør-aurdal\": _2, \"sor-fron\": _2, \"xn--sr-fron-q1a\": _2, \"sør-fron\": _2, \"sor-odal\": _2, \"xn--sr-odal-q1a\": _2, \"sør-odal\": _2, \"sor-varanger\": _2, \"xn--sr-varanger-ggb\": _2, \"sør-varanger\": _2, \"sorfold\": _2, \"xn--srfold-bya\": _2, \"sørfold\": _2, \"sorreisa\": _2, \"xn--srreisa-q1a\": _2, \"sørreisa\": _2, \"sortland\": _2, \"sorum\": _2, \"xn--srum-gra\": _2, \"sørum\": _2, \"spydeberg\": _2, \"stange\": _2, \"stavanger\": _2, \"steigen\": _2, \"steinkjer\": _2, \"stjordal\": _2, \"xn--stjrdal-s1a\": _2, \"stjørdal\": _2, \"stokke\": _2, \"stor-elvdal\": _2, \"stord\": _2, \"stordal\": _2, \"storfjord\": _2, \"strand\": _2, \"stranda\": _2, \"stryn\": _2, \"sula\": _2, \"suldal\": _2, \"sund\": _2, \"sunndal\": _2, \"surnadal\": _2, \"sveio\": _2, \"svelvik\": _2, \"sykkylven\": _2, \"tana\": _2, \"telemark\": [0, { \"bo\": _2, \"xn--b-5ga\": _2, \"bø\": _2 }], \"time\": _2, \"tingvoll\": _2, \"tinn\": _2, \"tjeldsund\": _2, \"tjome\": _2, \"xn--tjme-hra\": _2, \"tjøme\": _2, \"tokke\": _2, \"tolga\": _2, \"tonsberg\": _2, \"xn--tnsberg-q1a\": _2, \"tønsberg\": _2, \"torsken\": _2, \"xn--trna-woa\": _2, \"træna\": _2, \"trana\": _2, \"tranoy\": _2, \"xn--trany-yua\": _2, \"tranøy\": _2, \"troandin\": _2, \"trogstad\": _2, \"xn--trgstad-r1a\": _2, \"trøgstad\": _2, \"tromsa\": _2, \"tromso\": _2, \"xn--troms-zua\": _2, \"tromsø\": _2, \"trondheim\": _2, \"trysil\": _2, \"tvedestrand\": _2, \"tydal\": _2, \"tynset\": _2, \"tysfjord\": _2, \"tysnes\": _2, \"xn--tysvr-vra\": _2, \"tysvær\": _2, \"tysvar\": _2, \"ullensaker\": _2, \"ullensvang\": _2, \"ulvik\": _2, \"unjarga\": _2, \"xn--unjrga-rta\": _2, \"unjárga\": _2, \"utsira\": _2, \"vaapste\": _2, \"vadso\": _2, \"xn--vads-jra\": _2, \"vadsø\": _2, \"xn--vry-yla5g\": _2, \"værøy\": _2, \"vaga\": _2, \"xn--vg-yiab\": _2, \"vågå\": _2, \"vagan\": _2, \"xn--vgan-qoa\": _2, \"vågan\": _2, \"vagsoy\": _2, \"xn--vgsy-qoa0j\": _2, \"vågsøy\": _2, \"vaksdal\": _2, \"valle\": _2, \"vang\": _2, \"vanylven\": _2, \"vardo\": _2, \"xn--vard-jra\": _2, \"vardø\": _2, \"varggat\": _2, \"xn--vrggt-xqad\": _2, \"várggát\": _2, \"varoy\": _2, \"vefsn\": _2, \"vega\": _2, \"vegarshei\": _2, \"xn--vegrshei-c0a\": _2, \"vegårshei\": _2, \"vennesla\": _2, \"verdal\": _2, \"verran\": _2, \"vestby\": _2, \"vestfold\": [0, { \"sande\": _2 }], \"vestnes\": _2, \"vestre-slidre\": _2, \"vestre-toten\": _2, \"vestvagoy\": _2, \"xn--vestvgy-ixa6o\": _2, \"vestvågøy\": _2, \"vevelstad\": _2, \"vik\": _2, \"vikna\": _2, \"vindafjord\": _2, \"voagat\": _2, \"volda\": _2, \"voss\": _2, \"co\": _3, \"123hjemmeside\": _3, \"myspreadshop\": _3 }], \"np\": _21, \"nr\": _60, \"nu\": [1, { \"merseine\": _3, \"mine\": _3, \"shacknet\": _3, \"enterprisecloud\": _3 }], \"nz\": [1, { \"ac\": _2, \"co\": _2, \"cri\": _2, \"geek\": _2, \"gen\": _2, \"govt\": _2, \"health\": _2, \"iwi\": _2, \"kiwi\": _2, \"maori\": _2, \"xn--mori-qsa\": _2, \"māori\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"parliament\": _2, \"school\": _2, \"cloudns\": _3 }], \"om\": [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"med\": _2, \"museum\": _2, \"net\": _2, \"org\": _2, \"pro\": _2 }], \"onion\": _2, \"org\": [1, { \"altervista\": _3, \"pimienta\": _3, \"poivron\": _3, \"potager\": _3, \"sweetpepper\": _3, \"cdn77\": [0, { \"c\": _3, \"rsc\": _3 }], \"cdn77-secure\": [0, { \"origin\": [0, { \"ssl\": _3 }] }], \"ae\": _3, \"cloudns\": _3, \"ip-dynamic\": _3, \"ddnss\": _3, \"dpdns\": _3, \"duckdns\": _3, \"tunk\": _3, \"blogdns\": _3, \"blogsite\": _3, \"boldlygoingnowhere\": _3, \"dnsalias\": _3, \"dnsdojo\": _3, \"doesntexist\": _3, \"dontexist\": _3, \"doomdns\": _3, \"dvrdns\": _3, \"dynalias\": _3, \"dyndns\": [2, { \"go\": _3, \"home\": _3 }], \"endofinternet\": _3, \"endoftheinternet\": _3, \"from-me\": _3, \"game-host\": _3, \"gotdns\": _3, \"hobby-site\": _3, \"homedns\": _3, \"homeftp\": _3, \"homelinux\": _3, \"homeunix\": _3, \"is-a-bruinsfan\": _3, \"is-a-candidate\": _3, \"is-a-celticsfan\": _3, \"is-a-chef\": _3, \"is-a-geek\": _3, \"is-a-knight\": _3, \"is-a-linux-user\": _3, \"is-a-patsfan\": _3, \"is-a-soxfan\": _3, \"is-found\": _3, \"is-lost\": _3, \"is-saved\": _3, \"is-very-bad\": _3, \"is-very-evil\": _3, \"is-very-good\": _3, \"is-very-nice\": _3, \"is-very-sweet\": _3, \"isa-geek\": _3, \"kicks-ass\": _3, \"misconfused\": _3, \"podzone\": _3, \"readmyblog\": _3, \"selfip\": _3, \"sellsyourhome\": _3, \"servebbs\": _3, \"serveftp\": _3, \"servegame\": _3, \"stuff-4-sale\": _3, \"webhop\": _3, \"accesscam\": _3, \"camdvr\": _3, \"freeddns\": _3, \"mywire\": _3, \"roxa\": _3, \"webredirect\": _3, \"twmail\": _3, \"eu\": [2, { \"al\": _3, \"asso\": _3, \"at\": _3, \"au\": _3, \"be\": _3, \"bg\": _3, \"ca\": _3, \"cd\": _3, \"ch\": _3, \"cn\": _3, \"cy\": _3, \"cz\": _3, \"de\": _3, \"dk\": _3, \"edu\": _3, \"ee\": _3, \"es\": _3, \"fi\": _3, \"fr\": _3, \"gr\": _3, \"hr\": _3, \"hu\": _3, \"ie\": _3, \"il\": _3, \"in\": _3, \"int\": _3, \"is\": _3, \"it\": _3, \"jp\": _3, \"kr\": _3, \"lt\": _3, \"lu\": _3, \"lv\": _3, \"me\": _3, \"mk\": _3, \"mt\": _3, \"my\": _3, \"net\": _3, \"ng\": _3, \"nl\": _3, \"no\": _3, \"nz\": _3, \"pl\": _3, \"pt\": _3, \"ro\": _3, \"ru\": _3, \"se\": _3, \"si\": _3, \"sk\": _3, \"tr\": _3, \"uk\": _3, \"us\": _3 }], \"fedorainfracloud\": _3, \"fedorapeople\": _3, \"fedoraproject\": [0, { \"cloud\": _3, \"os\": _45, \"stg\": [0, { \"os\": _45 }] }], \"freedesktop\": _3, \"hatenadiary\": _3, \"hepforge\": _3, \"in-dsl\": _3, \"in-vpn\": _3, \"js\": _3, \"barsy\": _3, \"mayfirst\": _3, \"routingthecloud\": _3, \"bmoattachments\": _3, \"cable-modem\": _3, \"collegefan\": _3, \"couchpotatofries\": _3, \"hopto\": _3, \"mlbfan\": _3, \"myftp\": _3, \"mysecuritycamera\": _3, \"nflfan\": _3, \"no-ip\": _3, \"read-books\": _3, \"ufcfan\": _3, \"zapto\": _3, \"dynserv\": _3, \"now-dns\": _3, \"is-local\": _3, \"httpbin\": _3, \"pubtls\": _3, \"jpn\": _3, \"my-firewall\": _3, \"myfirewall\": _3, \"spdns\": _3, \"small-web\": _3, \"dsmynas\": _3, \"familyds\": _3, \"teckids\": _59, \"tuxfamily\": _3, \"hk\": _3, \"us\": _3, \"toolforge\": _3, \"wmcloud\": [2, { \"beta\": _3 }], \"wmflabs\": _3, \"za\": _3 }], \"pa\": [1, { \"abo\": _2, \"ac\": _2, \"com\": _2, \"edu\": _2, \"gob\": _2, \"ing\": _2, \"med\": _2, \"net\": _2, \"nom\": _2, \"org\": _2, \"sld\": _2 }], \"pe\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"mil\": _2, \"net\": _2, \"nom\": _2, \"org\": _2 }], \"pf\": [1, { \"com\": _2, \"edu\": _2, \"org\": _2 }], \"pg\": _21, \"ph\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"i\": _2, \"mil\": _2, \"net\": _2, \"ngo\": _2, \"org\": _2, \"cloudns\": _3 }], \"pk\": [1, { \"ac\": _2, \"biz\": _2, \"com\": _2, \"edu\": _2, \"fam\": _2, \"gkp\": _2, \"gob\": _2, \"gog\": _2, \"gok\": _2, \"gop\": _2, \"gos\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"web\": _2 }], \"pl\": [1, { \"com\": _2, \"net\": _2, \"org\": _2, \"agro\": _2, \"aid\": _2, \"atm\": _2, \"auto\": _2, \"biz\": _2, \"edu\": _2, \"gmina\": _2, \"gsm\": _2, \"info\": _2, \"mail\": _2, \"media\": _2, \"miasta\": _2, \"mil\": _2, \"nieruchomosci\": _2, \"nom\": _2, \"pc\": _2, \"powiat\": _2, \"priv\": _2, \"realestate\": _2, \"rel\": _2, \"sex\": _2, \"shop\": _2, \"sklep\": _2, \"sos\": _2, \"szkola\": _2, \"targi\": _2, \"tm\": _2, \"tourism\": _2, \"travel\": _2, \"turystyka\": _2, \"gov\": [1, { \"ap\": _2, \"griw\": _2, \"ic\": _2, \"is\": _2, \"kmpsp\": _2, \"konsulat\": _2, \"kppsp\": _2, \"kwp\": _2, \"kwpsp\": _2, \"mup\": _2, \"mw\": _2, \"oia\": _2, \"oirm\": _2, \"oke\": _2, \"oow\": _2, \"oschr\": _2, \"oum\": _2, \"pa\": _2, \"pinb\": _2, \"piw\": _2, \"po\": _2, \"pr\": _2, \"psp\": _2, \"psse\": _2, \"pup\": _2, \"rzgw\": _2, \"sa\": _2, \"sdn\": _2, \"sko\": _2, \"so\": _2, \"sr\": _2, \"starostwo\": _2, \"ug\": _2, \"ugim\": _2, \"um\": _2, \"umig\": _2, \"upow\": _2, \"uppo\": _2, \"us\": _2, \"uw\": _2, \"uzs\": _2, \"wif\": _2, \"wiih\": _2, \"winb\": _2, \"wios\": _2, \"witd\": _2, \"wiw\": _2, \"wkz\": _2, \"wsa\": _2, \"wskr\": _2, \"wsse\": _2, \"wuoz\": _2, \"wzmiuw\": _2, \"zp\": _2, \"zpisdn\": _2 }], \"augustow\": _2, \"babia-gora\": _2, \"bedzin\": _2, \"beskidy\": _2, \"bialowieza\": _2, \"bialystok\": _2, \"bielawa\": _2, \"bieszczady\": _2, \"boleslawiec\": _2, \"bydgoszcz\": _2, \"bytom\": _2, \"cieszyn\": _2, \"czeladz\": _2, \"czest\": _2, \"dlugoleka\": _2, \"elblag\": _2, \"elk\": _2, \"glogow\": _2, \"gniezno\": _2, \"gorlice\": _2, \"grajewo\": _2, \"ilawa\": _2, \"jaworzno\": _2, \"jelenia-gora\": _2, \"jgora\": _2, \"kalisz\": _2, \"karpacz\": _2, \"kartuzy\": _2, \"kaszuby\": _2, \"katowice\": _2, \"kazimierz-dolny\": _2, \"kepno\": _2, \"ketrzyn\": _2, \"klodzko\": _2, \"kobierzyce\": _2, \"kolobrzeg\": _2, \"konin\": _2, \"konskowola\": _2, \"kutno\": _2, \"lapy\": _2, \"lebork\": _2, \"legnica\": _2, \"lezajsk\": _2, \"limanowa\": _2, \"lomza\": _2, \"lowicz\": _2, \"lubin\": _2, \"lukow\": _2, \"malbork\": _2, \"malopolska\": _2, \"mazowsze\": _2, \"mazury\": _2, \"mielec\": _2, \"mielno\": _2, \"mragowo\": _2, \"naklo\": _2, \"nowaruda\": _2, \"nysa\": _2, \"olawa\": _2, \"olecko\": _2, \"olkusz\": _2, \"olsztyn\": _2, \"opoczno\": _2, \"opole\": _2, \"ostroda\": _2, \"ostroleka\": _2, \"ostrowiec\": _2, \"ostrowwlkp\": _2, \"pila\": _2, \"pisz\": _2, \"podhale\": _2, \"podlasie\": _2, \"polkowice\": _2, \"pomorskie\": _2, \"pomorze\": _2, \"prochowice\": _2, \"pruszkow\": _2, \"przeworsk\": _2, \"pulawy\": _2, \"radom\": _2, \"rawa-maz\": _2, \"rybnik\": _2, \"rzeszow\": _2, \"sanok\": _2, \"sejny\": _2, \"skoczow\": _2, \"slask\": _2, \"slupsk\": _2, \"sosnowiec\": _2, \"stalowa-wola\": _2, \"starachowice\": _2, \"stargard\": _2, \"suwalki\": _2, \"swidnica\": _2, \"swiebodzin\": _2, \"swinoujscie\": _2, \"szczecin\": _2, \"szczytno\": _2, \"tarnobrzeg\": _2, \"tgory\": _2, \"turek\": _2, \"tychy\": _2, \"ustka\": _2, \"walbrzych\": _2, \"warmia\": _2, \"warszawa\": _2, \"waw\": _2, \"wegrow\": _2, \"wielun\": _2, \"wlocl\": _2, \"wloclawek\": _2, \"wodzislaw\": _2, \"wolomin\": _2, \"wroclaw\": _2, \"zachpomor\": _2, \"zagan\": _2, \"zarow\": _2, \"zgora\": _2, \"zgorzelec\": _2, \"art\": _3, \"gliwice\": _3, \"krakow\": _3, \"poznan\": _3, \"wroc\": _3, \"zakopane\": _3, \"beep\": _3, \"ecommerce-shop\": _3, \"cfolks\": _3, \"dfirma\": _3, \"dkonto\": _3, \"you2\": _3, \"shoparena\": _3, \"homesklep\": _3, \"sdscloud\": _3, \"unicloud\": _3, \"lodz\": _3, \"pabianice\": _3, \"plock\": _3, \"sieradz\": _3, \"skierniewice\": _3, \"zgierz\": _3, \"krasnik\": _3, \"leczna\": _3, \"lubartow\": _3, \"lublin\": _3, \"poniatowa\": _3, \"swidnik\": _3, \"co\": _3, \"torun\": _3, \"simplesite\": _3, \"myspreadshop\": _3, \"gda\": _3, \"gdansk\": _3, \"gdynia\": _3, \"med\": _3, \"sopot\": _3, \"bielsko\": _3 }], \"pm\": [1, { \"own\": _3, \"name\": _3 }], \"pn\": [1, { \"co\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2 }], \"post\": _2, \"pr\": [1, { \"biz\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"isla\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"pro\": _2, \"ac\": _2, \"est\": _2, \"prof\": _2 }], \"pro\": [1, { \"aaa\": _2, \"aca\": _2, \"acct\": _2, \"avocat\": _2, \"bar\": _2, \"cpa\": _2, \"eng\": _2, \"jur\": _2, \"law\": _2, \"med\": _2, \"recht\": _2, \"cloudns\": _3, \"keenetic\": _3, \"barsy\": _3, \"ngrok\": _3 }], \"ps\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"plo\": _2, \"sec\": _2 }], \"pt\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"int\": _2, \"net\": _2, \"nome\": _2, \"org\": _2, \"publ\": _2, \"123paginaweb\": _3 }], \"pw\": [1, { \"gov\": _2, \"cloudns\": _3, \"x443\": _3 }], \"py\": [1, { \"com\": _2, \"coop\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], \"qa\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"sch\": _2 }], \"re\": [1, { \"asso\": _2, \"com\": _2, \"netlib\": _3, \"can\": _3 }], \"ro\": [1, { \"arts\": _2, \"com\": _2, \"firm\": _2, \"info\": _2, \"nom\": _2, \"nt\": _2, \"org\": _2, \"rec\": _2, \"store\": _2, \"tm\": _2, \"www\": _2, \"co\": _3, \"shop\": _3, \"barsy\": _3 }], \"rs\": [1, { \"ac\": _2, \"co\": _2, \"edu\": _2, \"gov\": _2, \"in\": _2, \"org\": _2, \"brendly\": _20, \"barsy\": _3, \"ox\": _3 }], \"ru\": [1, { \"ac\": _3, \"edu\": _3, \"gov\": _3, \"int\": _3, \"mil\": _3, \"eurodir\": _3, \"adygeya\": _3, \"bashkiria\": _3, \"bir\": _3, \"cbg\": _3, \"com\": _3, \"dagestan\": _3, \"grozny\": _3, \"kalmykia\": _3, \"kustanai\": _3, \"marine\": _3, \"mordovia\": _3, \"msk\": _3, \"mytis\": _3, \"nalchik\": _3, \"nov\": _3, \"pyatigorsk\": _3, \"spb\": _3, \"vladikavkaz\": _3, \"vladimir\": _3, \"na4u\": _3, \"mircloud\": _3, \"myjino\": [2, { \"hosting\": _6, \"landing\": _6, \"spectrum\": _6, \"vps\": _6 }], \"cldmail\": [0, { \"hb\": _3 }], \"mcdir\": [2, { \"vps\": _3 }], \"mcpre\": _3, \"net\": _3, \"org\": _3, \"pp\": _3, \"ras\": _3 }], \"rw\": [1, { \"ac\": _2, \"co\": _2, \"coop\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2 }], \"sa\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"med\": _2, \"net\": _2, \"org\": _2, \"pub\": _2, \"sch\": _2 }], \"sb\": _4, \"sc\": _4, \"sd\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"med\": _2, \"net\": _2, \"org\": _2, \"tv\": _2 }], \"se\": [1, { \"a\": _2, \"ac\": _2, \"b\": _2, \"bd\": _2, \"brand\": _2, \"c\": _2, \"d\": _2, \"e\": _2, \"f\": _2, \"fh\": _2, \"fhsk\": _2, \"fhv\": _2, \"g\": _2, \"h\": _2, \"i\": _2, \"k\": _2, \"komforb\": _2, \"kommunalforbund\": _2, \"komvux\": _2, \"l\": _2, \"lanbib\": _2, \"m\": _2, \"n\": _2, \"naturbruksgymn\": _2, \"o\": _2, \"org\": _2, \"p\": _2, \"parti\": _2, \"pp\": _2, \"press\": _2, \"r\": _2, \"s\": _2, \"t\": _2, \"tm\": _2, \"u\": _2, \"w\": _2, \"x\": _2, \"y\": _2, \"z\": _2, \"com\": _3, \"iopsys\": _3, \"123minsida\": _3, \"itcouldbewor\": _3, \"myspreadshop\": _3 }], \"sg\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"enscaled\": _3 }], \"sh\": [1, { \"com\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"hashbang\": _3, \"botda\": _3, \"lovable\": _3, \"platform\": [0, { \"ent\": _3, \"eu\": _3, \"us\": _3 }], \"teleport\": _3, \"now\": _3 }], \"si\": [1, { \"f5\": _3, \"gitapp\": _3, \"gitpage\": _3 }], \"sj\": _2, \"sk\": [1, { \"org\": _2 }], \"sl\": _4, \"sm\": _2, \"sn\": [1, { \"art\": _2, \"com\": _2, \"edu\": _2, \"gouv\": _2, \"org\": _2, \"univ\": _2 }], \"so\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"me\": _2, \"net\": _2, \"org\": _2, \"surveys\": _3 }], \"sr\": _2, \"ss\": [1, { \"biz\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"me\": _2, \"net\": _2, \"org\": _2, \"sch\": _2 }], \"st\": [1, { \"co\": _2, \"com\": _2, \"consulado\": _2, \"edu\": _2, \"embaixada\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"principe\": _2, \"saotome\": _2, \"store\": _2, \"helioho\": _3, \"cn\": _6, \"kirara\": _3, \"noho\": _3 }], \"su\": [1, { \"abkhazia\": _3, \"adygeya\": _3, \"aktyubinsk\": _3, \"arkhangelsk\": _3, \"armenia\": _3, \"ashgabad\": _3, \"azerbaijan\": _3, \"balashov\": _3, \"bashkiria\": _3, \"bryansk\": _3, \"bukhara\": _3, \"chimkent\": _3, \"dagestan\": _3, \"east-kazakhstan\": _3, \"exnet\": _3, \"georgia\": _3, \"grozny\": _3, \"ivanovo\": _3, \"jambyl\": _3, \"kalmykia\": _3, \"kaluga\": _3, \"karacol\": _3, \"karaganda\": _3, \"karelia\": _3, \"khakassia\": _3, \"krasnodar\": _3, \"kurgan\": _3, \"kustanai\": _3, \"lenug\": _3, \"mangyshlak\": _3, \"mordovia\": _3, \"msk\": _3, \"murmansk\": _3, \"nalchik\": _3, \"navoi\": _3, \"north-kazakhstan\": _3, \"nov\": _3, \"obninsk\": _3, \"penza\": _3, \"pokrovsk\": _3, \"sochi\": _3, \"spb\": _3, \"tashkent\": _3, \"termez\": _3, \"togliatti\": _3, \"troitsk\": _3, \"tselinograd\": _3, \"tula\": _3, \"tuva\": _3, \"vladikavkaz\": _3, \"vladimir\": _3, \"vologda\": _3 }], \"sv\": [1, { \"com\": _2, \"edu\": _2, \"gob\": _2, \"org\": _2, \"red\": _2 }], \"sx\": _10, \"sy\": _5, \"sz\": [1, { \"ac\": _2, \"co\": _2, \"org\": _2 }], \"tc\": _2, \"td\": _2, \"tel\": _2, \"tf\": [1, { \"sch\": _3 }], \"tg\": _2, \"th\": [1, { \"ac\": _2, \"co\": _2, \"go\": _2, \"in\": _2, \"mi\": _2, \"net\": _2, \"or\": _2, \"online\": _3, \"shop\": _3 }], \"tj\": [1, { \"ac\": _2, \"biz\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"go\": _2, \"gov\": _2, \"int\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"nic\": _2, \"org\": _2, \"test\": _2, \"web\": _2 }], \"tk\": _2, \"tl\": _10, \"tm\": [1, { \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"nom\": _2, \"org\": _2 }], \"tn\": [1, { \"com\": _2, \"ens\": _2, \"fin\": _2, \"gov\": _2, \"ind\": _2, \"info\": _2, \"intl\": _2, \"mincom\": _2, \"nat\": _2, \"net\": _2, \"org\": _2, \"perso\": _2, \"tourism\": _2, \"orangecloud\": _3 }], \"to\": [1, { \"611\": _3, \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"oya\": _3, \"x0\": _3, \"quickconnect\": _28, \"vpnplus\": _3, \"nett\": _3 }], \"tr\": [1, { \"av\": _2, \"bbs\": _2, \"bel\": _2, \"biz\": _2, \"com\": _2, \"dr\": _2, \"edu\": _2, \"gen\": _2, \"gov\": _2, \"info\": _2, \"k12\": _2, \"kep\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"pol\": _2, \"tel\": _2, \"tsk\": _2, \"tv\": _2, \"web\": _2, \"nc\": _10 }], \"tt\": [1, { \"biz\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"mil\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"pro\": _2 }], \"tv\": [1, { \"better-than\": _3, \"dyndns\": _3, \"on-the-web\": _3, \"worse-than\": _3, \"from\": _3, \"sakura\": _3 }], \"tw\": [1, { \"club\": _2, \"com\": [1, { \"mymailer\": _3 }], \"ebiz\": _2, \"edu\": _2, \"game\": _2, \"gov\": _2, \"idv\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"url\": _3, \"mydns\": _3 }], \"tz\": [1, { \"ac\": _2, \"co\": _2, \"go\": _2, \"hotel\": _2, \"info\": _2, \"me\": _2, \"mil\": _2, \"mobi\": _2, \"ne\": _2, \"or\": _2, \"sc\": _2, \"tv\": _2 }], \"ua\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"in\": _2, \"net\": _2, \"org\": _2, \"cherkassy\": _2, \"cherkasy\": _2, \"chernigov\": _2, \"chernihiv\": _2, \"chernivtsi\": _2, \"chernovtsy\": _2, \"ck\": _2, \"cn\": _2, \"cr\": _2, \"crimea\": _2, \"cv\": _2, \"dn\": _2, \"dnepropetrovsk\": _2, \"dnipropetrovsk\": _2, \"donetsk\": _2, \"dp\": _2, \"if\": _2, \"ivano-frankivsk\": _2, \"kh\": _2, \"kharkiv\": _2, \"kharkov\": _2, \"kherson\": _2, \"khmelnitskiy\": _2, \"khmelnytskyi\": _2, \"kiev\": _2, \"kirovograd\": _2, \"km\": _2, \"kr\": _2, \"kropyvnytskyi\": _2, \"krym\": _2, \"ks\": _2, \"kv\": _2, \"kyiv\": _2, \"lg\": _2, \"lt\": _2, \"lugansk\": _2, \"luhansk\": _2, \"lutsk\": _2, \"lv\": _2, \"lviv\": _2, \"mk\": _2, \"mykolaiv\": _2, \"nikolaev\": _2, \"od\": _2, \"odesa\": _2, \"odessa\": _2, \"pl\": _2, \"poltava\": _2, \"rivne\": _2, \"rovno\": _2, \"rv\": _2, \"sb\": _2, \"sebastopol\": _2, \"sevastopol\": _2, \"sm\": _2, \"sumy\": _2, \"te\": _2, \"ternopil\": _2, \"uz\": _2, \"uzhgorod\": _2, \"uzhhorod\": _2, \"vinnica\": _2, \"vinnytsia\": _2, \"vn\": _2, \"volyn\": _2, \"yalta\": _2, \"zakarpattia\": _2, \"zaporizhzhe\": _2, \"zaporizhzhia\": _2, \"zhitomir\": _2, \"zhytomyr\": _2, \"zp\": _2, \"zt\": _2, \"cc\": _3, \"inf\": _3, \"ltd\": _3, \"cx\": _3, \"biz\": _3, \"co\": _3, \"pp\": _3, \"v\": _3 }], \"ug\": [1, { \"ac\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"go\": _2, \"gov\": _2, \"mil\": _2, \"ne\": _2, \"or\": _2, \"org\": _2, \"sc\": _2, \"us\": _2 }], \"uk\": [1, { \"ac\": _2, \"co\": [1, { \"bytemark\": [0, { \"dh\": _3, \"vm\": _3 }], \"layershift\": _48, \"barsy\": _3, \"barsyonline\": _3, \"retrosnub\": _58, \"nh-serv\": _3, \"no-ip\": _3, \"adimo\": _3, \"myspreadshop\": _3 }], \"gov\": [1, { \"api\": _3, \"campaign\": _3, \"service\": _3 }], \"ltd\": _2, \"me\": _2, \"net\": _2, \"nhs\": _2, \"org\": [1, { \"glug\": _3, \"lug\": _3, \"lugs\": _3, \"affinitylottery\": _3, \"raffleentry\": _3, \"weeklylottery\": _3 }], \"plc\": _2, \"police\": _2, \"sch\": _21, \"conn\": _3, \"copro\": _3, \"hosp\": _3, \"independent-commission\": _3, \"independent-inquest\": _3, \"independent-inquiry\": _3, \"independent-panel\": _3, \"independent-review\": _3, \"public-inquiry\": _3, \"royal-commission\": _3, \"pymnt\": _3, \"barsy\": _3, \"nimsite\": _3, \"oraclegovcloudapps\": _6 }], \"us\": [1, { \"dni\": _2, \"isa\": _2, \"nsn\": _2, \"ak\": _68, \"al\": _68, \"ar\": _68, \"as\": _68, \"az\": _68, \"ca\": _68, \"co\": _68, \"ct\": _68, \"dc\": _68, \"de\": _69, \"fl\": _68, \"ga\": _68, \"gu\": _68, \"hi\": _70, \"ia\": _68, \"id\": _68, \"il\": _68, \"in\": _68, \"ks\": _68, \"ky\": _68, \"la\": _68, \"ma\": [1, { \"k12\": [1, { \"chtr\": _2, \"paroch\": _2, \"pvt\": _2 }], \"cc\": _2, \"lib\": _2 }], \"md\": _68, \"me\": _68, \"mi\": [1, { \"k12\": _2, \"cc\": _2, \"lib\": _2, \"ann-arbor\": _2, \"cog\": _2, \"dst\": _2, \"eaton\": _2, \"gen\": _2, \"mus\": _2, \"tec\": _2, \"washtenaw\": _2 }], \"mn\": _68, \"mo\": _68, \"ms\": [1, { \"k12\": _2, \"cc\": _2 }], \"mt\": _68, \"nc\": _68, \"nd\": _70, \"ne\": _68, \"nh\": _68, \"nj\": _68, \"nm\": _68, \"nv\": _68, \"ny\": _68, \"oh\": _68, \"ok\": _68, \"or\": _68, \"pa\": _68, \"pr\": _68, \"ri\": _70, \"sc\": _68, \"sd\": _70, \"tn\": _68, \"tx\": _68, \"ut\": _68, \"va\": _68, \"vi\": _68, \"vt\": _68, \"wa\": _68, \"wi\": _68, \"wv\": _69, \"wy\": _68, \"cloudns\": _3, \"is-by\": _3, \"land-4-sale\": _3, \"stuff-4-sale\": _3, \"heliohost\": _3, \"enscaled\": [0, { \"phx\": _3 }], \"mircloud\": _3, \"azure-api\": _3, \"azurewebsites\": _3, \"ngo\": _3, \"golffan\": _3, \"noip\": _3, \"pointto\": _3, \"freeddns\": _3, \"srv\": [2, { \"gh\": _3, \"gl\": _3 }], \"servername\": _3 }], \"uy\": [1, { \"com\": _2, \"edu\": _2, \"gub\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"gv\": _3 }], \"uz\": [1, { \"co\": _2, \"com\": _2, \"net\": _2, \"org\": _2 }], \"va\": _2, \"vc\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"gv\": [2, { \"d\": _3 }], \"0e\": _6, \"mydns\": _3 }], \"ve\": [1, { \"arts\": _2, \"bib\": _2, \"co\": _2, \"com\": _2, \"e12\": _2, \"edu\": _2, \"emprende\": _2, \"firm\": _2, \"gob\": _2, \"gov\": _2, \"ia\": _2, \"info\": _2, \"int\": _2, \"mil\": _2, \"net\": _2, \"nom\": _2, \"org\": _2, \"rar\": _2, \"rec\": _2, \"store\": _2, \"tec\": _2, \"web\": _2 }], \"vg\": [1, { \"edu\": _2 }], \"vi\": [1, { \"co\": _2, \"com\": _2, \"k12\": _2, \"net\": _2, \"org\": _2 }], \"vn\": [1, { \"ac\": _2, \"ai\": _2, \"biz\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"health\": _2, \"id\": _2, \"info\": _2, \"int\": _2, \"io\": _2, \"name\": _2, \"net\": _2, \"org\": _2, \"pro\": _2, \"angiang\": _2, \"bacgiang\": _2, \"backan\": _2, \"baclieu\": _2, \"bacninh\": _2, \"baria-vungtau\": _2, \"bentre\": _2, \"binhdinh\": _2, \"binhduong\": _2, \"binhphuoc\": _2, \"binhthuan\": _2, \"camau\": _2, \"cantho\": _2, \"caobang\": _2, \"daklak\": _2, \"daknong\": _2, \"danang\": _2, \"dienbien\": _2, \"dongnai\": _2, \"dongthap\": _2, \"gialai\": _2, \"hagiang\": _2, \"haiduong\": _2, \"haiphong\": _2, \"hanam\": _2, \"hanoi\": _2, \"hatinh\": _2, \"haugiang\": _2, \"hoabinh\": _2, \"hungyen\": _2, \"khanhhoa\": _2, \"kiengiang\": _2, \"kontum\": _2, \"laichau\": _2, \"lamdong\": _2, \"langson\": _2, \"laocai\": _2, \"longan\": _2, \"namdinh\": _2, \"nghean\": _2, \"ninhbinh\": _2, \"ninhthuan\": _2, \"phutho\": _2, \"phuyen\": _2, \"quangbinh\": _2, \"quangnam\": _2, \"quangngai\": _2, \"quangninh\": _2, \"quangtri\": _2, \"soctrang\": _2, \"sonla\": _2, \"tayninh\": _2, \"thaibinh\": _2, \"thainguyen\": _2, \"thanhhoa\": _2, \"thanhphohochiminh\": _2, \"thuathienhue\": _2, \"tiengiang\": _2, \"travinh\": _2, \"tuyenquang\": _2, \"vinhlong\": _2, \"vinhphuc\": _2, \"yenbai\": _2 }], \"vu\": _47, \"wf\": [1, { \"biz\": _3, \"sch\": _3 }], \"ws\": [1, { \"com\": _2, \"edu\": _2, \"gov\": _2, \"net\": _2, \"org\": _2, \"advisor\": _6, \"cloud66\": _3, \"dyndns\": _3, \"mypets\": _3 }], \"yt\": [1, { \"org\": _3 }], \"xn--mgbaam7a8h\": _2, \"امارات\": _2, \"xn--y9a3aq\": _2, \"հայ\": _2, \"xn--54b7fta0cc\": _2, \"বাংলা\": _2, \"xn--90ae\": _2, \"бг\": _2, \"xn--mgbcpq6gpa1a\": _2, \"البحرين\": _2, \"xn--90ais\": _2, \"бел\": _2, \"xn--fiqs8s\": _2, \"中国\": _2, \"xn--fiqz9s\": _2, \"中國\": _2, \"xn--lgbbat1ad8j\": _2, \"الجزائر\": _2, \"xn--wgbh1c\": _2, \"مصر\": _2, \"xn--e1a4c\": _2, \"ею\": _2, \"xn--qxa6a\": _2, \"ευ\": _2, \"xn--mgbah1a3hjkrd\": _2, \"موريتانيا\": _2, \"xn--node\": _2, \"გე\": _2, \"xn--qxam\": _2, \"ελ\": _2, \"xn--j6w193g\": [1, { \"xn--gmqw5a\": _2, \"xn--55qx5d\": _2, \"xn--mxtq1m\": _2, \"xn--wcvs22d\": _2, \"xn--uc0atv\": _2, \"xn--od0alg\": _2 }], \"香港\": [1, { \"個人\": _2, \"公司\": _2, \"政府\": _2, \"教育\": _2, \"組織\": _2, \"網絡\": _2 }], \"xn--2scrj9c\": _2, \"ಭಾರತ\": _2, \"xn--3hcrj9c\": _2, \"ଭାରତ\": _2, \"xn--45br5cyl\": _2, \"ভাৰত\": _2, \"xn--h2breg3eve\": _2, \"भारतम्\": _2, \"xn--h2brj9c8c\": _2, \"भारोत\": _2, \"xn--mgbgu82a\": _2, \"ڀارت\": _2, \"xn--rvc1e0am3e\": _2, \"ഭാരതം\": _2, \"xn--h2brj9c\": _2, \"भारत\": _2, \"xn--mgbbh1a\": _2, \"بارت\": _2, \"xn--mgbbh1a71e\": _2, \"بھارت\": _2, \"xn--fpcrj9c3d\": _2, \"భారత్\": _2, \"xn--gecrj9c\": _2, \"ભારત\": _2, \"xn--s9brj9c\": _2, \"ਭਾਰਤ\": _2, \"xn--45brj9c\": _2, \"ভারত\": _2, \"xn--xkc2dl3a5ee0h\": _2, \"இந்தியா\": _2, \"xn--mgba3a4f16a\": _2, \"ایران\": _2, \"xn--mgba3a4fra\": _2, \"ايران\": _2, \"xn--mgbtx2b\": _2, \"عراق\": _2, \"xn--mgbayh7gpa\": _2, \"الاردن\": _2, \"xn--3e0b707e\": _2, \"한국\": _2, \"xn--80ao21a\": _2, \"қаз\": _2, \"xn--q7ce6a\": _2, \"ລາວ\": _2, \"xn--fzc2c9e2c\": _2, \"ලංකා\": _2, \"xn--xkc2al3hye2a\": _2, \"இலங்கை\": _2, \"xn--mgbc0a9azcg\": _2, \"المغرب\": _2, \"xn--d1alf\": _2, \"мкд\": _2, \"xn--l1acc\": _2, \"мон\": _2, \"xn--mix891f\": _2, \"澳門\": _2, \"xn--mix082f\": _2, \"澳门\": _2, \"xn--mgbx4cd0ab\": _2, \"مليسيا\": _2, \"xn--mgb9awbf\": _2, \"عمان\": _2, \"xn--mgbai9azgqp6j\": _2, \"پاکستان\": _2, \"xn--mgbai9a5eva00b\": _2, \"پاكستان\": _2, \"xn--ygbi2ammx\": _2, \"فلسطين\": _2, \"xn--90a3ac\": [1, { \"xn--80au\": _2, \"xn--90azh\": _2, \"xn--d1at\": _2, \"xn--c1avg\": _2, \"xn--o1ac\": _2, \"xn--o1ach\": _2 }], \"срб\": [1, { \"ак\": _2, \"обр\": _2, \"од\": _2, \"орг\": _2, \"пр\": _2, \"упр\": _2 }], \"xn--p1ai\": _2, \"рф\": _2, \"xn--wgbl6a\": _2, \"قطر\": _2, \"xn--mgberp4a5d4ar\": _2, \"السعودية\": _2, \"xn--mgberp4a5d4a87g\": _2, \"السعودیة\": _2, \"xn--mgbqly7c0a67fbc\": _2, \"السعودیۃ\": _2, \"xn--mgbqly7cvafr\": _2, \"السعوديه\": _2, \"xn--mgbpl2fh\": _2, \"سودان\": _2, \"xn--yfro4i67o\": _2, \"新加坡\": _2, \"xn--clchc0ea0b2g2a9gcd\": _2, \"சிங்கப்பூர்\": _2, \"xn--ogbpf8fl\": _2, \"سورية\": _2, \"xn--mgbtf8fl\": _2, \"سوريا\": _2, \"xn--o3cw4h\": [1, { \"xn--o3cyx2a\": _2, \"xn--12co0c3b4eva\": _2, \"xn--m3ch0j3a\": _2, \"xn--h3cuzk1di\": _2, \"xn--12c1fe0br\": _2, \"xn--12cfi8ixb8l\": _2 }], \"ไทย\": [1, { \"ทหาร\": _2, \"ธุรกิจ\": _2, \"เน็ต\": _2, \"รัฐบาล\": _2, \"ศึกษา\": _2, \"องค์กร\": _2 }], \"xn--pgbs0dh\": _2, \"تونس\": _2, \"xn--kpry57d\": _2, \"台灣\": _2, \"xn--kprw13d\": _2, \"台湾\": _2, \"xn--nnx388a\": _2, \"臺灣\": _2, \"xn--j1amh\": _2, \"укр\": _2, \"xn--mgb2ddes\": _2, \"اليمن\": _2, \"xxx\": _2, \"ye\": _5, \"za\": [0, { \"ac\": _2, \"agric\": _2, \"alt\": _2, \"co\": _2, \"edu\": _2, \"gov\": _2, \"grondar\": _2, \"law\": _2, \"mil\": _2, \"net\": _2, \"ngo\": _2, \"nic\": _2, \"nis\": _2, \"nom\": _2, \"org\": _2, \"school\": _2, \"tm\": _2, \"web\": _2 }], \"zm\": [1, { \"ac\": _2, \"biz\": _2, \"co\": _2, \"com\": _2, \"edu\": _2, \"gov\": _2, \"info\": _2, \"mil\": _2, \"net\": _2, \"org\": _2, \"sch\": _2 }], \"zw\": [1, { \"ac\": _2, \"co\": _2, \"gov\": _2, \"mil\": _2, \"org\": _2 }], \"aaa\": _2, \"aarp\": _2, \"abb\": _2, \"abbott\": _2, \"abbvie\": _2, \"abc\": _2, \"able\": _2, \"abogado\": _2, \"abudhabi\": _2, \"academy\": [1, { \"official\": _3 }], \"accenture\": _2, \"accountant\": _2, \"accountants\": _2, \"aco\": _2, \"actor\": _2, \"ads\": _2, \"adult\": _2, \"aeg\": _2, \"aetna\": _2, \"afl\": _2, \"africa\": _2, \"agakhan\": _2, \"agency\": _2, \"aig\": _2, \"airbus\": _2, \"airforce\": _2, \"airtel\": _2, \"akdn\": _2, \"alibaba\": _2, \"alipay\": _2, \"allfinanz\": _2, \"allstate\": _2, \"ally\": _2, \"alsace\": _2, \"alstom\": _2, \"amazon\": _2, \"americanexpress\": _2, \"americanfamily\": _2, \"amex\": _2, \"amfam\": _2, \"amica\": _2, \"amsterdam\": _2, \"analytics\": _2, \"android\": _2, \"anquan\": _2, \"anz\": _2, \"aol\": _2, \"apartments\": _2, \"app\": [1, { \"adaptable\": _3, \"aiven\": _3, \"beget\": _6, \"brave\": _7, \"clerk\": _3, \"clerkstage\": _3, \"cloudflare\": _3, \"wnext\": _3, \"csb\": [2, { \"preview\": _3 }], \"convex\": _3, \"corespeed\": _3, \"deta\": _3, \"ondigitalocean\": _3, \"easypanel\": _3, \"encr\": [2, { \"frontend\": _3 }], \"evervault\": _8, \"expo\": [2, { \"staging\": _3 }], \"edgecompute\": _3, \"on-fleek\": _3, \"flutterflow\": _3, \"sprites\": _3, \"e2b\": _3, \"framer\": _3, \"gadget\": _3, \"github\": _3, \"hosted\": _6, \"run\": [0, { \"*\": _3, \"mtls\": _6 }], \"web\": _3, \"hackclub\": _3, \"hasura\": _3, \"onhercules\": _3, \"botdash\": _3, \"shiptoday\": _3, \"leapcell\": _3, \"loginline\": _3, \"lovable\": _3, \"luyani\": _3, \"magicpatterns\": _3, \"medusajs\": _3, \"messerli\": _3, \"miren\": _3, \"mocha\": _3, \"netlify\": _3, \"ngrok\": _3, \"ngrok-free\": _3, \"developer\": _6, \"noop\": _3, \"northflank\": _6, \"upsun\": _6, \"railway\": [0, { \"up\": _3 }], \"replit\": _9, \"nyat\": _3, \"snowflake\": [0, { \"*\": _3, \"privatelink\": _6 }], \"streamlit\": _3, \"spawnbase\": _3, \"telebit\": _3, \"typedream\": _3, \"vercel\": _3, \"wal\": _3, \"wasmer\": _3, \"bookonline\": _3, \"windsurf\": _3, \"base44\": _3, \"zeabur\": _3, \"zerops\": _6 }], \"apple\": [1, { \"int\": [2, { \"cloud\": [0, { \"*\": _3, \"r\": [0, { \"*\": _3, \"ap-north-1\": _6, \"ap-south-1\": _6, \"ap-south-2\": _6, \"eu-central-1\": _6, \"eu-north-1\": _6, \"us-central-1\": _6, \"us-central-2\": _6, \"us-east-1\": _6, \"us-east-2\": _6, \"us-west-1\": _6, \"us-west-2\": _6, \"us-west-3\": _6 }] }] }] }], \"aquarelle\": _2, \"arab\": _2, \"aramco\": _2, \"archi\": _2, \"army\": _2, \"art\": _2, \"arte\": _2, \"asda\": _2, \"associates\": _2, \"athleta\": _2, \"attorney\": _2, \"auction\": _2, \"audi\": _2, \"audible\": _2, \"audio\": _2, \"auspost\": _2, \"author\": _2, \"auto\": _2, \"autos\": _2, \"aws\": [1, { \"on\": [0, { \"af-south-1\": _11, \"ap-east-1\": _11, \"ap-northeast-1\": _11, \"ap-northeast-2\": _11, \"ap-northeast-3\": _11, \"ap-south-1\": _11, \"ap-south-2\": _12, \"ap-southeast-1\": _11, \"ap-southeast-2\": _11, \"ap-southeast-3\": _11, \"ap-southeast-4\": _12, \"ap-southeast-5\": _12, \"ca-central-1\": _11, \"ca-west-1\": _12, \"eu-central-1\": _11, \"eu-central-2\": _12, \"eu-north-1\": _11, \"eu-south-1\": _11, \"eu-south-2\": _12, \"eu-west-1\": _11, \"eu-west-2\": _11, \"eu-west-3\": _11, \"il-central-1\": _12, \"me-central-1\": _12, \"me-south-1\": _11, \"sa-east-1\": _11, \"us-east-1\": _11, \"us-east-2\": _11, \"us-west-1\": _11, \"us-west-2\": _11, \"ap-southeast-7\": _13, \"mx-central-1\": _13, \"us-gov-east-1\": _14, \"us-gov-west-1\": _14 }], \"sagemaker\": [0, { \"ap-northeast-1\": _16, \"ap-northeast-2\": _16, \"ap-south-1\": _16, \"ap-southeast-1\": _16, \"ap-southeast-2\": _16, \"ca-central-1\": _18, \"eu-central-1\": _16, \"eu-west-1\": _16, \"eu-west-2\": _16, \"us-east-1\": _18, \"us-east-2\": _18, \"us-west-2\": _18, \"af-south-1\": _15, \"ap-east-1\": _15, \"ap-northeast-3\": _15, \"ap-south-2\": _17, \"ap-southeast-3\": _15, \"ap-southeast-4\": _17, \"ca-west-1\": [0, { \"notebook\": _3, \"notebook-fips\": _3 }], \"eu-central-2\": _15, \"eu-north-1\": _15, \"eu-south-1\": _15, \"eu-south-2\": _15, \"eu-west-3\": _15, \"il-central-1\": _15, \"me-central-1\": _15, \"me-south-1\": _15, \"sa-east-1\": _15, \"us-gov-east-1\": _19, \"us-gov-west-1\": _19, \"us-west-1\": [0, { \"notebook\": _3, \"notebook-fips\": _3, \"studio\": _3 }], \"experiments\": _6 }], \"repost\": [0, { \"private\": _6 }] }], \"axa\": _2, \"azure\": _2, \"baby\": _2, \"baidu\": _2, \"banamex\": _2, \"band\": _2, \"bank\": _2, \"bar\": _2, \"barcelona\": _2, \"barclaycard\": _2, \"barclays\": _2, \"barefoot\": _2, \"bargains\": _2, \"baseball\": _2, \"basketball\": [1, { \"aus\": _3, \"nz\": _3 }], \"bauhaus\": _2, \"bayern\": _2, \"bbc\": _2, \"bbt\": _2, \"bbva\": _2, \"bcg\": _2, \"bcn\": _2, \"beats\": _2, \"beauty\": _2, \"beer\": _2, \"berlin\": _2, \"best\": _2, \"bestbuy\": _2, \"bet\": _2, \"bharti\": _2, \"bible\": _2, \"bid\": _2, \"bike\": _2, \"bing\": _2, \"bingo\": _2, \"bio\": _2, \"black\": _2, \"blackfriday\": _2, \"blockbuster\": _2, \"blog\": _2, \"bloomberg\": _2, \"blue\": _2, \"bms\": _2, \"bmw\": _2, \"bnpparibas\": _2, \"boats\": _2, \"boehringer\": _2, \"bofa\": _2, \"bom\": _2, \"bond\": _2, \"boo\": _2, \"book\": _2, \"booking\": _2, \"bosch\": _2, \"bostik\": _2, \"boston\": _2, \"bot\": _2, \"boutique\": _2, \"box\": _2, \"bradesco\": _2, \"bridgestone\": _2, \"broadway\": _2, \"broker\": _2, \"brother\": _2, \"brussels\": _2, \"build\": [1, { \"shiptoday\": _3, \"v0\": _3, \"windsurf\": _3 }], \"builders\": [1, { \"cloudsite\": _3 }], \"business\": _22, \"buy\": _2, \"buzz\": _2, \"bzh\": _2, \"cab\": _2, \"cafe\": _2, \"cal\": _2, \"call\": _2, \"calvinklein\": _2, \"cam\": _2, \"camera\": _2, \"camp\": [1, { \"emf\": [0, { \"at\": _3 }] }], \"canon\": _2, \"capetown\": _2, \"capital\": _2, \"capitalone\": _2, \"car\": _2, \"caravan\": _2, \"cards\": _2, \"care\": _2, \"career\": _2, \"careers\": _2, \"cars\": _2, \"casa\": [1, { \"nabu\": [0, { \"ui\": _3 }] }], \"case\": [1, { \"sav\": _3 }], \"cash\": _2, \"casino\": _2, \"catering\": _2, \"catholic\": _2, \"cba\": _2, \"cbn\": _2, \"cbre\": _2, \"center\": _2, \"ceo\": _2, \"cern\": _2, \"cfa\": _2, \"cfd\": _2, \"chanel\": _2, \"channel\": _2, \"charity\": _2, \"chase\": _2, \"chat\": _2, \"cheap\": _2, \"chintai\": _2, \"christmas\": _2, \"chrome\": _2, \"church\": _2, \"cipriani\": _2, \"circle\": _2, \"cisco\": _2, \"citadel\": _2, \"citi\": _2, \"citic\": _2, \"city\": _2, \"claims\": _2, \"cleaning\": _2, \"click\": _2, \"clinic\": _2, \"clinique\": _2, \"clothing\": _2, \"cloud\": [1, { \"antagonist\": _3, \"convex\": _3, \"elementor\": _3, \"emergent\": _3, \"encoway\": [0, { \"eu\": _3 }], \"statics\": _6, \"ravendb\": _3, \"axarnet\": [0, { \"es-1\": _3 }], \"diadem\": _3, \"jelastic\": [0, { \"vip\": _3 }], \"jele\": _3, \"jenv-aruba\": [0, { \"aruba\": [0, { \"eur\": [0, { \"it1\": _3 }] }], \"it1\": _3 }], \"keliweb\": [2, { \"cs\": _3 }], \"oxa\": [2, { \"tn\": _3, \"uk\": _3 }], \"primetel\": [2, { \"uk\": _3 }], \"reclaim\": [0, { \"ca\": _3, \"uk\": _3, \"us\": _3 }], \"trendhosting\": [0, { \"ch\": _3, \"de\": _3 }], \"jote\": _3, \"jotelulu\": _3, \"kuleuven\": _3, \"laravel\": _3, \"linkyard\": _3, \"magentosite\": _6, \"matlab\": _3, \"observablehq\": _3, \"perspecta\": _3, \"vapor\": _3, \"on-rancher\": _6, \"scw\": [0, { \"baremetal\": [0, { \"fr-par-1\": _3, \"fr-par-2\": _3, \"nl-ams-1\": _3 }], \"fr-par\": [0, { \"cockpit\": _3, \"ddl\": _3, \"dtwh\": _3, \"fnc\": [2, { \"functions\": _3 }], \"ifr\": _3, \"k8s\": _24, \"kafk\": _3, \"mgdb\": _3, \"rdb\": _3, \"s3\": _3, \"s3-website\": _3, \"scbl\": _3, \"whm\": _3 }], \"instances\": [0, { \"priv\": _3, \"pub\": _3 }], \"k8s\": _3, \"nl-ams\": [0, { \"cockpit\": _3, \"ddl\": _3, \"dtwh\": _3, \"ifr\": _3, \"k8s\": _24, \"kafk\": _3, \"mgdb\": _3, \"rdb\": _3, \"s3\": _3, \"s3-website\": _3, \"scbl\": _3, \"whm\": _3 }], \"pl-waw\": [0, { \"cockpit\": _3, \"ddl\": _3, \"dtwh\": _3, \"ifr\": _3, \"k8s\": _24, \"kafk\": _3, \"mgdb\": _3, \"rdb\": _3, \"s3\": _3, \"s3-website\": _3, \"scbl\": _3 }], \"scalebook\": _3, \"smartlabeling\": _3 }], \"servebolt\": _3, \"onstackit\": [0, { \"runs\": _3 }], \"trafficplex\": _3, \"unison-services\": _3, \"urown\": _3, \"voorloper\": _3, \"zap\": _3 }], \"club\": [1, { \"cloudns\": _3, \"jele\": _3, \"barsy\": _3 }], \"clubmed\": _2, \"coach\": _2, \"codes\": [1, { \"owo\": _6 }], \"coffee\": _2, \"college\": _2, \"cologne\": _2, \"commbank\": _2, \"community\": [1, { \"nog\": _3, \"ravendb\": _3, \"myforum\": _3 }], \"company\": _2, \"compare\": _2, \"computer\": _2, \"comsec\": _2, \"condos\": _2, \"construction\": _2, \"consulting\": _2, \"contact\": _2, \"contractors\": _2, \"cooking\": _2, \"cool\": [1, { \"elementor\": _3, \"de\": _3 }], \"corsica\": _2, \"country\": _2, \"coupon\": _2, \"coupons\": _2, \"courses\": _2, \"cpa\": _2, \"credit\": _2, \"creditcard\": _2, \"creditunion\": _2, \"cricket\": _2, \"crown\": _2, \"crs\": _2, \"cruise\": _2, \"cruises\": _2, \"cuisinella\": _2, \"cymru\": _2, \"cyou\": _2, \"dad\": _2, \"dance\": _2, \"data\": _2, \"date\": _2, \"dating\": _2, \"datsun\": _2, \"day\": _2, \"dclk\": _2, \"dds\": _2, \"deal\": _2, \"dealer\": _2, \"deals\": _2, \"degree\": _2, \"delivery\": _2, \"dell\": _2, \"deloitte\": _2, \"delta\": _2, \"democrat\": _2, \"dental\": _2, \"dentist\": _2, \"desi\": _2, \"design\": [1, { \"graphic\": _3, \"bss\": _3 }], \"dev\": [1, { \"myaddr\": _3, \"panel\": _3, \"bearblog\": _3, \"brave\": _7, \"lcl\": _6, \"lclstage\": _6, \"stg\": _6, \"stgstage\": _6, \"pages\": _3, \"r2\": _3, \"workers\": _3, \"deno\": _3, \"deno-staging\": _3, \"deta\": _3, \"lp\": [2, { \"api\": _3, \"objects\": _3 }], \"evervault\": _8, \"fly\": _3, \"githubpreview\": _3, \"gateway\": _6, \"grebedoc\": _3, \"botdash\": _3, \"inbrowser\": _6, \"is-a-good\": _3, \"iserv\": _3, \"leapcell\": _3, \"runcontainers\": _3, \"localcert\": [0, { \"user\": _6 }], \"loginline\": _3, \"barsy\": _3, \"mediatech\": _3, \"mocha-sandbox\": _3, \"modx\": _3, \"ngrok\": _3, \"ngrok-free\": _3, \"is-a-fullstack\": _3, \"is-cool\": _3, \"is-not-a\": _3, \"localplayer\": _3, \"xmit\": _3, \"platter-app\": _3, \"replit\": [2, { \"archer\": _3, \"bones\": _3, \"canary\": _3, \"global\": _3, \"hacker\": _3, \"id\": _3, \"janeway\": _3, \"kim\": _3, \"kira\": _3, \"kirk\": _3, \"odo\": _3, \"paris\": _3, \"picard\": _3, \"pike\": _3, \"prerelease\": _3, \"reed\": _3, \"riker\": _3, \"sisko\": _3, \"spock\": _3, \"staging\": _3, \"sulu\": _3, \"tarpit\": _3, \"teams\": _3, \"tucker\": _3, \"wesley\": _3, \"worf\": _3 }], \"crm\": [0, { \"aa\": _6, \"ab\": _6, \"ac\": _6, \"ad\": _6, \"ae\": _6, \"af\": _6, \"ci\": _6, \"d\": _6, \"pa\": _6, \"pb\": _6, \"pc\": _6, \"pd\": _6, \"pe\": _6, \"pf\": _6, \"w\": _6, \"wa\": _6, \"wb\": _6, \"wc\": _6, \"wd\": _6, \"we\": _6, \"wf\": _6 }], \"erp\": _50, \"vercel\": _3, \"webhare\": _6, \"hrsn\": _3, \"is-a\": _3 }], \"dhl\": _2, \"diamonds\": _2, \"diet\": _2, \"digital\": [1, { \"cloudapps\": [2, { \"london\": _3 }] }], \"direct\": [1, { \"libp2p\": _3 }], \"directory\": _2, \"discount\": _2, \"discover\": _2, \"dish\": _2, \"diy\": _51, \"dnp\": _2, \"docs\": _2, \"doctor\": _2, \"dog\": _2, \"domains\": _2, \"dot\": _2, \"download\": _2, \"drive\": _2, \"dtv\": _2, \"dubai\": _2, \"dupont\": _2, \"durban\": _2, \"dvag\": _2, \"dvr\": _2, \"earth\": _2, \"eat\": _2, \"eco\": _2, \"edeka\": _2, \"education\": _22, \"email\": [1, { \"crisp\": [0, { \"on\": _3 }], \"tawk\": _53, \"tawkto\": _53 }], \"emerck\": _2, \"energy\": _2, \"engineer\": _2, \"engineering\": _2, \"enterprises\": _2, \"epson\": _2, \"equipment\": _2, \"ericsson\": _2, \"erni\": _2, \"esq\": _2, \"estate\": [1, { \"compute\": _6 }], \"eurovision\": _2, \"eus\": [1, { \"party\": _54 }], \"events\": [1, { \"koobin\": _3, \"co\": _3 }], \"exchange\": _2, \"expert\": _2, \"exposed\": _2, \"express\": _2, \"extraspace\": _2, \"fage\": _2, \"fail\": _2, \"fairwinds\": _2, \"faith\": _2, \"family\": _2, \"fan\": _2, \"fans\": _2, \"farm\": [1, { \"storj\": _3 }], \"farmers\": _2, \"fashion\": _2, \"fast\": _2, \"fedex\": _2, \"feedback\": _2, \"ferrari\": _2, \"ferrero\": _2, \"fidelity\": _2, \"fido\": _2, \"film\": _2, \"final\": _2, \"finance\": _2, \"financial\": _22, \"fire\": _2, \"firestone\": _2, \"firmdale\": _2, \"fish\": _2, \"fishing\": _2, \"fit\": _2, \"fitness\": _2, \"flickr\": _2, \"flights\": _2, \"flir\": _2, \"florist\": _2, \"flowers\": _2, \"fly\": _2, \"foo\": _2, \"food\": _2, \"football\": _2, \"ford\": _2, \"forex\": _2, \"forsale\": _2, \"forum\": _2, \"foundation\": _2, \"fox\": _2, \"free\": _2, \"fresenius\": _2, \"frl\": _2, \"frogans\": _2, \"frontier\": _2, \"ftr\": _2, \"fujitsu\": _2, \"fun\": _2, \"fund\": _2, \"furniture\": _2, \"futbol\": _2, \"fyi\": _2, \"gal\": _2, \"gallery\": _2, \"gallo\": _2, \"gallup\": _2, \"game\": _2, \"games\": [1, { \"pley\": _3, \"sheezy\": _3 }], \"gap\": _2, \"garden\": _2, \"gay\": [1, { \"pages\": _3 }], \"gbiz\": _2, \"gdn\": [1, { \"cnpy\": _3 }], \"gea\": _2, \"gent\": _2, \"genting\": _2, \"george\": _2, \"ggee\": _2, \"gift\": _2, \"gifts\": _2, \"gives\": _2, \"giving\": _2, \"glass\": _2, \"gle\": _2, \"global\": [1, { \"appwrite\": _3 }], \"globo\": _2, \"gmail\": _2, \"gmbh\": _2, \"gmo\": _2, \"gmx\": _2, \"godaddy\": _2, \"gold\": _2, \"goldpoint\": _2, \"golf\": _2, \"goodyear\": _2, \"goog\": [1, { \"cloud\": _3, \"translate\": _3, \"usercontent\": _6 }], \"google\": _2, \"gop\": _2, \"got\": _2, \"grainger\": _2, \"graphics\": _2, \"gratis\": _2, \"green\": _2, \"gripe\": _2, \"grocery\": _2, \"group\": _51, \"gucci\": _2, \"guge\": _2, \"guide\": _2, \"guitars\": _2, \"guru\": _2, \"hair\": _2, \"hamburg\": _2, \"hangout\": _2, \"haus\": _2, \"hbo\": _2, \"hdfc\": _2, \"hdfcbank\": _2, \"health\": [1, { \"hra\": _3 }], \"healthcare\": _2, \"help\": _2, \"helsinki\": _2, \"here\": _2, \"hermes\": _2, \"hiphop\": _2, \"hisamitsu\": _2, \"hitachi\": _2, \"hiv\": _2, \"hkt\": _2, \"hockey\": _2, \"holdings\": _2, \"holiday\": _2, \"homedepot\": _2, \"homegoods\": _2, \"homes\": _2, \"homesense\": _2, \"honda\": _2, \"horse\": _2, \"hospital\": _2, \"host\": [1, { \"cloudaccess\": _3, \"freesite\": _3, \"easypanel\": _3, \"emergent\": _3, \"fastvps\": _3, \"myfast\": _3, \"gadget\": _3, \"tempurl\": _3, \"wpmudev\": _3, \"iserv\": _3, \"jele\": _3, \"mircloud\": _3, \"bolt\": _3, \"wp2\": _3, \"half\": _3 }], \"hosting\": [1, { \"opencraft\": _3 }], \"hot\": _2, \"hotel\": _2, \"hotels\": _2, \"hotmail\": _2, \"house\": _2, \"how\": _2, \"hsbc\": _2, \"hughes\": _2, \"hyatt\": _2, \"hyundai\": _2, \"ibm\": _2, \"icbc\": _2, \"ice\": _2, \"icu\": _2, \"ieee\": _2, \"ifm\": _2, \"ikano\": _2, \"imamat\": _2, \"imdb\": _2, \"immo\": _2, \"immobilien\": _2, \"inc\": _2, \"industries\": _2, \"infiniti\": _2, \"ing\": _2, \"ink\": _2, \"institute\": _2, \"insurance\": _2, \"insure\": _2, \"international\": _2, \"intuit\": _2, \"investments\": _2, \"ipiranga\": _2, \"irish\": _2, \"ismaili\": _2, \"ist\": _2, \"istanbul\": _2, \"itau\": _2, \"itv\": _2, \"jaguar\": _2, \"java\": _2, \"jcb\": _2, \"jeep\": _2, \"jetzt\": _2, \"jewelry\": _2, \"jio\": _2, \"jll\": _2, \"jmp\": _2, \"jnj\": _2, \"joburg\": _2, \"jot\": _2, \"joy\": _2, \"jpmorgan\": _2, \"jprs\": _2, \"juegos\": _2, \"juniper\": _2, \"kaufen\": _2, \"kddi\": _2, \"kerryhotels\": _2, \"kerryproperties\": _2, \"kfh\": _2, \"kia\": _2, \"kids\": _2, \"kim\": _2, \"kindle\": _2, \"kitchen\": _2, \"kiwi\": _2, \"koeln\": _2, \"komatsu\": _2, \"kosher\": _2, \"kpmg\": _2, \"kpn\": _2, \"krd\": [1, { \"co\": _3, \"edu\": _3 }], \"kred\": _2, \"kuokgroup\": _2, \"kyoto\": _2, \"lacaixa\": _2, \"lamborghini\": _2, \"lamer\": _2, \"land\": _2, \"landrover\": _2, \"lanxess\": _2, \"lasalle\": _2, \"lat\": _2, \"latino\": _2, \"latrobe\": _2, \"law\": _2, \"lawyer\": _2, \"lds\": _2, \"lease\": _2, \"leclerc\": _2, \"lefrak\": _2, \"legal\": _2, \"lego\": _2, \"lexus\": _2, \"lgbt\": _2, \"lidl\": _2, \"life\": _2, \"lifeinsurance\": _2, \"lifestyle\": _2, \"lighting\": _2, \"like\": _2, \"lilly\": _2, \"limited\": _2, \"limo\": _2, \"lincoln\": _2, \"link\": [1, { \"myfritz\": _3, \"cyon\": _3, \"joinmc\": _3, \"dweb\": _6, \"inbrowser\": _6, \"keenetic\": _3, \"nftstorage\": _61, \"mypep\": _3, \"storacha\": _61, \"w3s\": _61 }], \"live\": [1, { \"aem\": _3, \"hlx\": _3, \"ewp\": _6 }], \"living\": _2, \"llc\": _2, \"llp\": _2, \"loan\": _2, \"loans\": _2, \"locker\": _2, \"locus\": _2, \"lol\": [1, { \"omg\": _3 }], \"london\": _2, \"lotte\": _2, \"lotto\": _2, \"love\": _2, \"lpl\": _2, \"lplfinancial\": _2, \"ltd\": _2, \"ltda\": _2, \"lundbeck\": _2, \"luxe\": _2, \"luxury\": _2, \"madrid\": _2, \"maif\": _2, \"maison\": _2, \"makeup\": _2, \"man\": _2, \"management\": _2, \"mango\": _2, \"map\": _2, \"market\": _2, \"marketing\": _2, \"markets\": _2, \"marriott\": _2, \"marshalls\": _2, \"mattel\": _2, \"mba\": _2, \"mckinsey\": _2, \"med\": _2, \"media\": _62, \"meet\": _2, \"melbourne\": _2, \"meme\": _2, \"memorial\": _2, \"men\": _2, \"menu\": [1, { \"barsy\": _3, \"barsyonline\": _3 }], \"merck\": _2, \"merckmsd\": _2, \"miami\": _2, \"microsoft\": _2, \"mini\": _2, \"mint\": _2, \"mit\": _2, \"mitsubishi\": _2, \"mlb\": _2, \"mls\": _2, \"mma\": _2, \"mobile\": _2, \"moda\": _2, \"moe\": _2, \"moi\": _2, \"mom\": _2, \"monash\": _2, \"money\": _2, \"monster\": _2, \"mormon\": _2, \"mortgage\": _2, \"moscow\": _2, \"moto\": _2, \"motorcycles\": _2, \"mov\": _2, \"movie\": _2, \"msd\": _2, \"mtn\": _2, \"mtr\": _2, \"music\": _2, \"nab\": _2, \"nagoya\": _2, \"navy\": _2, \"nba\": _2, \"nec\": _2, \"netbank\": _2, \"netflix\": _2, \"network\": [1, { \"aem\": _3, \"alces\": _6, \"appwrite\": _3, \"co\": _3, \"arvo\": _3, \"azimuth\": _3, \"tlon\": _3 }], \"neustar\": _2, \"new\": _2, \"news\": [1, { \"noticeable\": _3 }], \"next\": _2, \"nextdirect\": _2, \"nexus\": _2, \"nfl\": _2, \"ngo\": _2, \"nhk\": _2, \"nico\": _2, \"nike\": _2, \"nikon\": _2, \"ninja\": _2, \"nissan\": _2, \"nissay\": _2, \"nokia\": _2, \"norton\": _2, \"now\": _2, \"nowruz\": _2, \"nowtv\": _2, \"nra\": _2, \"nrw\": _2, \"ntt\": _2, \"nyc\": _2, \"obi\": _2, \"observer\": _2, \"office\": _2, \"okinawa\": _2, \"olayan\": _2, \"olayangroup\": _2, \"ollo\": _2, \"omega\": _2, \"one\": [1, { \"kin\": _6, \"service\": _3, \"website\": _3 }], \"ong\": _2, \"onl\": _2, \"online\": [1, { \"eero\": _3, \"eero-stage\": _3, \"websitebuilder\": _3, \"leapcell\": _3, \"barsy\": _3 }], \"ooo\": _2, \"open\": _2, \"oracle\": _2, \"orange\": [1, { \"tech\": _3 }], \"organic\": _2, \"origins\": _2, \"osaka\": _2, \"otsuka\": _2, \"ott\": _2, \"ovh\": [1, { \"nerdpol\": _3 }], \"page\": [1, { \"aem\": _3, \"hlx\": _3, \"codeberg\": _3, \"deuxfleurs\": _3, \"heyflow\": _3, \"prvcy\": _3, \"rocky\": _3, \"statichost\": _3, \"pdns\": _3, \"plesk\": _3 }], \"panasonic\": _2, \"paris\": _2, \"pars\": _2, \"partners\": _2, \"parts\": _2, \"party\": _2, \"pay\": _2, \"pccw\": _2, \"pet\": _2, \"pfizer\": _2, \"pharmacy\": _2, \"phd\": _2, \"philips\": _2, \"phone\": _2, \"photo\": _2, \"photography\": _2, \"photos\": _62, \"physio\": _2, \"pics\": _2, \"pictet\": _2, \"pictures\": [1, { \"1337\": _3 }], \"pid\": _2, \"pin\": _2, \"ping\": _2, \"pink\": _2, \"pioneer\": _2, \"pizza\": [1, { \"ngrok\": _3 }], \"place\": _22, \"play\": _2, \"playstation\": _2, \"plumbing\": _2, \"plus\": [1, { \"playit\": [2, { \"at\": _6, \"with\": _3 }] }], \"pnc\": _2, \"pohl\": _2, \"poker\": _2, \"politie\": _2, \"porn\": _2, \"praxi\": _2, \"press\": _2, \"prime\": _2, \"prod\": _2, \"productions\": _2, \"prof\": _2, \"progressive\": _2, \"promo\": _2, \"properties\": _2, \"property\": _2, \"protection\": _2, \"pru\": _2, \"prudential\": _2, \"pub\": [1, { \"id\": _6, \"kin\": _6, \"barsy\": _3 }], \"pwc\": _2, \"qpon\": _2, \"quebec\": _2, \"quest\": _2, \"racing\": _2, \"radio\": _2, \"read\": _2, \"realestate\": _2, \"realtor\": _2, \"realty\": _2, \"recipes\": _2, \"red\": _2, \"redumbrella\": _2, \"rehab\": _2, \"reise\": _2, \"reisen\": _2, \"reit\": _2, \"reliance\": _2, \"ren\": _2, \"rent\": _2, \"rentals\": _2, \"repair\": _2, \"report\": _2, \"republican\": _2, \"rest\": _2, \"restaurant\": _2, \"review\": _2, \"reviews\": [1, { \"aem\": _3 }], \"rexroth\": _2, \"rich\": _2, \"richardli\": _2, \"ricoh\": _2, \"ril\": _2, \"rio\": _2, \"rip\": [1, { \"clan\": _3 }], \"rocks\": [1, { \"myddns\": _3, \"stackit\": _3, \"lima-city\": _3, \"webspace\": _3 }], \"rodeo\": _2, \"rogers\": _2, \"room\": _2, \"rsvp\": _2, \"rugby\": _2, \"ruhr\": _2, \"run\": [1, { \"appwrite\": _6, \"canva\": _3, \"development\": _3, \"ravendb\": _3, \"liara\": [2, { \"iran\": _3 }], \"lovable\": _3, \"needle\": _3, \"build\": _6, \"code\": _6, \"database\": _6, \"migration\": _6, \"onporter\": _3, \"repl\": _3, \"stackit\": _3, \"val\": _50, \"vercel\": _3, \"wix\": _3 }], \"rwe\": _2, \"ryukyu\": _2, \"saarland\": _2, \"safe\": _2, \"safety\": _2, \"sakura\": _2, \"sale\": _2, \"salon\": _2, \"samsclub\": _2, \"samsung\": _2, \"sandvik\": _2, \"sandvikcoromant\": _2, \"sanofi\": _2, \"sap\": _2, \"sarl\": _2, \"sas\": _2, \"save\": _2, \"saxo\": _2, \"sbi\": _2, \"sbs\": _2, \"scb\": _2, \"schaeffler\": _2, \"schmidt\": _2, \"scholarships\": _2, \"school\": _2, \"schule\": _2, \"schwarz\": _2, \"science\": _2, \"scot\": [1, { \"co\": _3, \"me\": _3, \"org\": _3, \"gov\": [2, { \"service\": _3 }] }], \"search\": _2, \"seat\": _2, \"secure\": _2, \"security\": _2, \"seek\": _2, \"select\": _2, \"sener\": _2, \"services\": [1, { \"loginline\": _3 }], \"seven\": _2, \"sew\": _2, \"sex\": _2, \"sexy\": _2, \"sfr\": _2, \"shangrila\": _2, \"sharp\": _2, \"shell\": _2, \"shia\": _2, \"shiksha\": _2, \"shoes\": _2, \"shop\": [1, { \"base\": _3, \"hoplix\": _3, \"barsy\": _3, \"barsyonline\": _3, \"shopware\": _3 }], \"shopping\": _2, \"shouji\": _2, \"show\": _2, \"silk\": _2, \"sina\": _2, \"singles\": _2, \"site\": [1, { \"square\": _3, \"canva\": _25, \"cloudera\": _6, \"convex\": _3, \"cyon\": _3, \"caffeine\": _3, \"fastvps\": _3, \"figma\": _3, \"figma-gov\": _3, \"preview\": _3, \"heyflow\": _3, \"jele\": _3, \"jouwweb\": _3, \"loginline\": _3, \"barsy\": _3, \"co\": _3, \"notion\": _3, \"omniwe\": _3, \"opensocial\": _3, \"madethis\": _3, \"support\": _3, \"platformsh\": _6, \"tst\": _6, \"byen\": _3, \"sol\": _3, \"srht\": _3, \"novecore\": _3, \"cpanel\": _3, \"wpsquared\": _3, \"sourcecraft\": _3 }], \"ski\": _2, \"skin\": _2, \"sky\": _2, \"skype\": _2, \"sling\": _2, \"smart\": _2, \"smile\": _2, \"sncf\": _2, \"soccer\": _2, \"social\": _2, \"softbank\": _2, \"software\": _2, \"sohu\": _2, \"solar\": _2, \"solutions\": _2, \"song\": _2, \"sony\": _2, \"soy\": _2, \"spa\": _2, \"space\": [1, { \"myfast\": _3, \"heiyu\": _3, \"hf\": [2, { \"static\": _3 }], \"app-ionos\": _3, \"project\": _3, \"uber\": _3, \"xs4all\": _3 }], \"sport\": _2, \"spot\": _2, \"srl\": _2, \"stada\": _2, \"staples\": _2, \"star\": _2, \"statebank\": _2, \"statefarm\": _2, \"stc\": _2, \"stcgroup\": _2, \"stockholm\": _2, \"storage\": _2, \"store\": [1, { \"barsy\": _3, \"sellfy\": _3, \"shopware\": _3, \"storebase\": _3 }], \"stream\": _2, \"studio\": _2, \"study\": _2, \"style\": _2, \"sucks\": _2, \"supplies\": _2, \"supply\": _2, \"support\": [1, { \"barsy\": _3 }], \"surf\": _2, \"surgery\": _2, \"suzuki\": _2, \"swatch\": _2, \"swiss\": _2, \"sydney\": _2, \"systems\": [1, { \"knightpoint\": _3, \"miren\": _3 }], \"tab\": _2, \"taipei\": _2, \"talk\": _2, \"taobao\": _2, \"target\": _2, \"tatamotors\": _2, \"tatar\": _2, \"tattoo\": _2, \"tax\": _2, \"taxi\": _2, \"tci\": _2, \"tdk\": _2, \"team\": [1, { \"discourse\": _3, \"jelastic\": _3 }], \"tech\": [1, { \"cleverapps\": _3 }], \"technology\": _22, \"temasek\": _2, \"tennis\": _2, \"teva\": _2, \"thd\": _2, \"theater\": _2, \"theatre\": _2, \"tiaa\": _2, \"tickets\": _2, \"tienda\": _2, \"tips\": _2, \"tires\": _2, \"tirol\": _2, \"tjmaxx\": _2, \"tjx\": _2, \"tkmaxx\": _2, \"tmall\": _2, \"today\": [1, { \"prequalifyme\": _3 }], \"tokyo\": _2, \"tools\": [1, { \"addr\": _49, \"myaddr\": _3 }], \"top\": [1, { \"ntdll\": _3, \"wadl\": _6 }], \"toray\": _2, \"toshiba\": _2, \"total\": _2, \"tours\": _2, \"town\": _2, \"toyota\": _2, \"toys\": _2, \"trade\": _2, \"trading\": _2, \"training\": _2, \"travel\": _2, \"travelers\": _2, \"travelersinsurance\": _2, \"trust\": _2, \"trv\": _2, \"tube\": _2, \"tui\": _2, \"tunes\": _2, \"tushu\": _2, \"tvs\": _2, \"ubank\": _2, \"ubs\": _2, \"unicom\": _2, \"university\": _2, \"uno\": _2, \"uol\": _2, \"ups\": _2, \"vacations\": _2, \"vana\": _2, \"vanguard\": _2, \"vegas\": _2, \"ventures\": _2, \"verisign\": _2, \"versicherung\": _2, \"vet\": _2, \"viajes\": _2, \"video\": _2, \"vig\": _2, \"viking\": _2, \"villas\": _2, \"vin\": _2, \"vip\": [1, { \"hidns\": _3 }], \"virgin\": _2, \"visa\": _2, \"vision\": _2, \"viva\": _2, \"vivo\": _2, \"vlaanderen\": _2, \"vodka\": _2, \"volvo\": _2, \"vote\": _2, \"voting\": _2, \"voto\": _2, \"voyage\": _2, \"wales\": _2, \"walmart\": _2, \"walter\": _2, \"wang\": _2, \"wanggou\": _2, \"watch\": _2, \"watches\": _2, \"weather\": _2, \"weatherchannel\": _2, \"webcam\": _2, \"weber\": _2, \"website\": _62, \"wed\": _2, \"wedding\": _2, \"weibo\": _2, \"weir\": _2, \"whoswho\": _2, \"wien\": _2, \"wiki\": _62, \"williamhill\": _2, \"win\": _2, \"windows\": _2, \"wine\": _2, \"winners\": _2, \"wme\": _2, \"wolterskluwer\": _2, \"woodside\": _2, \"work\": [1, { \"imagine-proxy\": _3 }], \"works\": _2, \"world\": _2, \"wow\": _2, \"wtc\": _2, \"wtf\": _2, \"xbox\": _2, \"xerox\": _2, \"xihuan\": _2, \"xin\": _2, \"xn--11b4c3d\": _2, \"कॉम\": _2, \"xn--1ck2e1b\": _2, \"セール\": _2, \"xn--1qqw23a\": _2, \"佛山\": _2, \"xn--30rr7y\": _2, \"慈善\": _2, \"xn--3bst00m\": _2, \"集团\": _2, \"xn--3ds443g\": _2, \"在线\": _2, \"xn--3pxu8k\": _2, \"点看\": _2, \"xn--42c2d9a\": _2, \"คอม\": _2, \"xn--45q11c\": _2, \"八卦\": _2, \"xn--4gbrim\": _2, \"موقع\": _2, \"xn--55qw42g\": _2, \"公益\": _2, \"xn--55qx5d\": _2, \"公司\": _2, \"xn--5su34j936bgsg\": _2, \"香格里拉\": _2, \"xn--5tzm5g\": _2, \"网站\": _2, \"xn--6frz82g\": _2, \"移动\": _2, \"xn--6qq986b3xl\": _2, \"我爱你\": _2, \"xn--80adxhks\": _2, \"москва\": _2, \"xn--80aqecdr1a\": _2, \"католик\": _2, \"xn--80asehdb\": _2, \"онлайн\": _2, \"xn--80aswg\": _2, \"сайт\": _2, \"xn--8y0a063a\": _2, \"联通\": _2, \"xn--9dbq2a\": _2, \"קום\": _2, \"xn--9et52u\": _2, \"时尚\": _2, \"xn--9krt00a\": _2, \"微博\": _2, \"xn--b4w605ferd\": _2, \"淡马锡\": _2, \"xn--bck1b9a5dre4c\": _2, \"ファッション\": _2, \"xn--c1avg\": _2, \"орг\": _2, \"xn--c2br7g\": _2, \"नेट\": _2, \"xn--cck2b3b\": _2, \"ストア\": _2, \"xn--cckwcxetd\": _2, \"アマゾン\": _2, \"xn--cg4bki\": _2, \"삼성\": _2, \"xn--czr694b\": _2, \"商标\": _2, \"xn--czrs0t\": _2, \"商店\": _2, \"xn--czru2d\": _2, \"商城\": _2, \"xn--d1acj3b\": _2, \"дети\": _2, \"xn--eckvdtc9d\": _2, \"ポイント\": _2, \"xn--efvy88h\": _2, \"新闻\": _2, \"xn--fct429k\": _2, \"家電\": _2, \"xn--fhbei\": _2, \"كوم\": _2, \"xn--fiq228c5hs\": _2, \"中文网\": _2, \"xn--fiq64b\": _2, \"中信\": _2, \"xn--fjq720a\": _2, \"娱乐\": _2, \"xn--flw351e\": _2, \"谷歌\": _2, \"xn--fzys8d69uvgm\": _2, \"電訊盈科\": _2, \"xn--g2xx48c\": _2, \"购物\": _2, \"xn--gckr3f0f\": _2, \"クラウド\": _2, \"xn--gk3at1e\": _2, \"通販\": _2, \"xn--hxt814e\": _2, \"网店\": _2, \"xn--i1b6b1a6a2e\": _2, \"संगठन\": _2, \"xn--imr513n\": _2, \"餐厅\": _2, \"xn--io0a7i\": _2, \"网络\": _2, \"xn--j1aef\": _2, \"ком\": _2, \"xn--jlq480n2rg\": _2, \"亚马逊\": _2, \"xn--jvr189m\": _2, \"食品\": _2, \"xn--kcrx77d1x4a\": _2, \"飞利浦\": _2, \"xn--kput3i\": _2, \"手机\": _2, \"xn--mgba3a3ejt\": _2, \"ارامكو\": _2, \"xn--mgba7c0bbn0a\": _2, \"العليان\": _2, \"xn--mgbab2bd\": _2, \"بازار\": _2, \"xn--mgbca7dzdo\": _2, \"ابوظبي\": _2, \"xn--mgbi4ecexp\": _2, \"كاثوليك\": _2, \"xn--mgbt3dhd\": _2, \"همراه\": _2, \"xn--mk1bu44c\": _2, \"닷컴\": _2, \"xn--mxtq1m\": _2, \"政府\": _2, \"xn--ngbc5azd\": _2, \"شبكة\": _2, \"xn--ngbe9e0a\": _2, \"بيتك\": _2, \"xn--ngbrx\": _2, \"عرب\": _2, \"xn--nqv7f\": _2, \"机构\": _2, \"xn--nqv7fs00ema\": _2, \"组织机构\": _2, \"xn--nyqy26a\": _2, \"健康\": _2, \"xn--otu796d\": _2, \"招聘\": _2, \"xn--p1acf\": [1, { \"xn--90amc\": _3, \"xn--j1aef\": _3, \"xn--j1ael8b\": _3, \"xn--h1ahn\": _3, \"xn--j1adp\": _3, \"xn--c1avg\": _3, \"xn--80aaa0cvac\": _3, \"xn--h1aliz\": _3, \"xn--90a1af\": _3, \"xn--41a\": _3 }], \"рус\": [1, { \"биз\": _3, \"ком\": _3, \"крым\": _3, \"мир\": _3, \"мск\": _3, \"орг\": _3, \"самара\": _3, \"сочи\": _3, \"спб\": _3, \"я\": _3 }], \"xn--pssy2u\": _2, \"大拿\": _2, \"xn--q9jyb4c\": _2, \"みんな\": _2, \"xn--qcka1pmc\": _2, \"グーグル\": _2, \"xn--rhqv96g\": _2, \"世界\": _2, \"xn--rovu88b\": _2, \"書籍\": _2, \"xn--ses554g\": _2, \"网址\": _2, \"xn--t60b56a\": _2, \"닷넷\": _2, \"xn--tckwe\": _2, \"コム\": _2, \"xn--tiq49xqyj\": _2, \"天主教\": _2, \"xn--unup4y\": _2, \"游戏\": _2, \"xn--vermgensberater-ctb\": _2, \"vermögensberater\": _2, \"xn--vermgensberatung-pwb\": _2, \"vermögensberatung\": _2, \"xn--vhquv\": _2, \"企业\": _2, \"xn--vuq861b\": _2, \"信息\": _2, \"xn--w4r85el8fhu5dnra\": _2, \"嘉里大酒店\": _2, \"xn--w4rs40l\": _2, \"嘉里\": _2, \"xn--xhq521b\": _2, \"广东\": _2, \"xn--zfr164b\": _2, \"政务\": _2, \"xyz\": [1, { \"caffeine\": _3, \"botdash\": _3, \"telebit\": _6 }], \"yachts\": _2, \"yahoo\": _2, \"yamaxun\": _2, \"yandex\": _2, \"yodobashi\": _2, \"yoga\": _2, \"yokohama\": _2, \"you\": _2, \"youtube\": _2, \"yun\": _2, \"zappos\": _2, \"zara\": _2, \"zero\": _2, \"zip\": _2, \"zone\": [1, { \"triton\": _6, \"stackit\": _3, \"lima\": _3 }], \"zuerich\": _2 }];\n    return rules;\n})();\n\n/**\n * Lookup parts of domain in Trie\n */\nfunction lookupInTrie(parts, trie, index, allowedMask) {\n    let result = null;\n    let node = trie;\n    while (node !== undefined) {\n        // We have a match!\n        if ((node[0] & allowedMask) !== 0) {\n            result = {\n                index: index + 1,\n                isIcann: (node[0] & 1 /* RULE_TYPE.ICANN */) !== 0,\n                isPrivate: (node[0] & 2 /* RULE_TYPE.PRIVATE */) !== 0,\n            };\n        }\n        // No more `parts` to look for\n        if (index === -1) {\n            break;\n        }\n        const succ = node[1];\n        node = Object.prototype.hasOwnProperty.call(succ, parts[index])\n            ? succ[parts[index]]\n            : succ['*'];\n        index -= 1;\n    }\n    return result;\n}\n/**\n * Check if `hostname` has a valid public suffix in `trie`.\n */\nfunction suffixLookup(hostname, options, out) {\n    var _a;\n    if (fastPathLookup(hostname, options, out)) {\n        return;\n    }\n    const hostnameParts = hostname.split('.');\n    const allowedMask = (options.allowPrivateDomains ? 2 /* RULE_TYPE.PRIVATE */ : 0) |\n        (options.allowIcannDomains ? 1 /* RULE_TYPE.ICANN */ : 0);\n    // Look for exceptions\n    const exceptionMatch = lookupInTrie(hostnameParts, exceptions, hostnameParts.length - 1, allowedMask);\n    if (exceptionMatch !== null) {\n        out.isIcann = exceptionMatch.isIcann;\n        out.isPrivate = exceptionMatch.isPrivate;\n        out.publicSuffix = hostnameParts.slice(exceptionMatch.index + 1).join('.');\n        return;\n    }\n    // Look for a match in rules\n    const rulesMatch = lookupInTrie(hostnameParts, rules, hostnameParts.length - 1, allowedMask);\n    if (rulesMatch !== null) {\n        out.isIcann = rulesMatch.isIcann;\n        out.isPrivate = rulesMatch.isPrivate;\n        out.publicSuffix = hostnameParts.slice(rulesMatch.index).join('.');\n        return;\n    }\n    // No match found...\n    // Prevailing rule is '*' so we consider the top-level domain to be the\n    // public suffix of `hostname` (e.g.: 'example.org' => 'org').\n    out.isIcann = false;\n    out.isPrivate = false;\n    out.publicSuffix = (_a = hostnameParts[hostnameParts.length - 1]) !== null && _a !== void 0 ? _a : null;\n}\n\n// For all methods but 'parse', it does not make sense to allocate an object\n// every single time to only return the value of a specific attribute. To avoid\n// this un-necessary allocation, we use a global object which is re-used.\nconst RESULT = getEmptyResult();\nfunction parse(url, options = {}) {\n    return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, getEmptyResult());\n}\nfunction getHostname(url, options = {}) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 0 /* FLAG.HOSTNAME */, suffixLookup, options, RESULT).hostname;\n}\nfunction getPublicSuffix(url, options = {}) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 2 /* FLAG.PUBLIC_SUFFIX */, suffixLookup, options, RESULT)\n        .publicSuffix;\n}\nfunction getDomain(url, options = {}) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 3 /* FLAG.DOMAIN */, suffixLookup, options, RESULT).domain;\n}\nfunction getSubdomain(url, options = {}) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 4 /* FLAG.SUB_DOMAIN */, suffixLookup, options, RESULT)\n        .subdomain;\n}\nfunction getDomainWithoutSuffix(url, options = {}) {\n    /*@__INLINE__*/ resetResult(RESULT);\n    return parseImpl(url, 5 /* FLAG.ALL */, suffixLookup, options, RESULT)\n        .domainWithoutSuffix;\n}\n\nexports.getDomain = getDomain;\nexports.getDomainWithoutSuffix = getDomainWithoutSuffix;\nexports.getHostname = getHostname;\nexports.getPublicSuffix = getPublicSuffix;\nexports.getSubdomain = getSubdomain;\nexports.parse = parse;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// lib/cookie/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  Cookie: () => Cookie,\n  CookieJar: () => CookieJar,\n  MemoryCookieStore: () => MemoryCookieStore,\n  ParameterError: () => ParameterError,\n  PrefixSecurityEnum: () => PrefixSecurityEnum,\n  Store: () => Store,\n  canonicalDomain: () => canonicalDomain,\n  cookieCompare: () => cookieCompare,\n  defaultPath: () => defaultPath,\n  domainMatch: () => domainMatch,\n  formatDate: () => formatDate,\n  fromJSON: () => fromJSON2,\n  getPublicSuffix: () => getPublicSuffix,\n  parse: () => parse2,\n  parseDate: () => parseDate,\n  pathMatch: () => pathMatch,\n  permuteDomain: () => permuteDomain,\n  permutePath: () => permutePath,\n  version: () => version\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// lib/pathMatch.ts\nfunction pathMatch(reqPath, cookiePath) {\n  if (cookiePath === reqPath) {\n    return true;\n  }\n  const idx = reqPath.indexOf(cookiePath);\n  if (idx === 0) {\n    if (cookiePath[cookiePath.length - 1] === \"/\") {\n      return true;\n    }\n    if (reqPath.startsWith(cookiePath) && reqPath[cookiePath.length] === \"/\") {\n      return true;\n    }\n  }\n  return false;\n}\n\n// lib/getPublicSuffix.ts\nvar import_tldts = require(\"tldts\");\nvar SPECIAL_USE_DOMAINS = [\"local\", \"example\", \"invalid\", \"localhost\", \"test\"];\nvar SPECIAL_TREATMENT_DOMAINS = [\"localhost\", \"invalid\"];\nvar defaultGetPublicSuffixOptions = {\n  allowSpecialUseDomain: false,\n  ignoreError: false\n};\nfunction getPublicSuffix(domain, options = {}) {\n  options = { ...defaultGetPublicSuffixOptions, ...options };\n  const domainParts = domain.split(\".\");\n  const topLevelDomain = domainParts[domainParts.length - 1];\n  const allowSpecialUseDomain = !!options.allowSpecialUseDomain;\n  const ignoreError = !!options.ignoreError;\n  if (allowSpecialUseDomain && topLevelDomain !== void 0 && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {\n    if (domainParts.length > 1) {\n      const secondLevelDomain = domainParts[domainParts.length - 2];\n      return `${secondLevelDomain}.${topLevelDomain}`;\n    } else if (SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain)) {\n      return topLevelDomain;\n    }\n  }\n  if (!ignoreError && topLevelDomain !== void 0 && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {\n    throw new Error(\n      `Cookie has domain set to the public suffix \"${topLevelDomain}\" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`\n    );\n  }\n  const publicSuffix = (0, import_tldts.getDomain)(domain, {\n    allowIcannDomains: true,\n    allowPrivateDomains: true\n  });\n  if (publicSuffix) return publicSuffix;\n}\n\n// lib/permuteDomain.ts\nfunction permuteDomain(domain, allowSpecialUseDomain) {\n  const pubSuf = getPublicSuffix(domain, {\n    allowSpecialUseDomain\n  });\n  if (!pubSuf) {\n    return void 0;\n  }\n  if (pubSuf == domain) {\n    return [domain];\n  }\n  if (domain.slice(-1) == \".\") {\n    domain = domain.slice(0, -1);\n  }\n  const prefix = domain.slice(0, -(pubSuf.length + 1));\n  const parts = prefix.split(\".\").reverse();\n  let cur = pubSuf;\n  const permutations = [cur];\n  while (parts.length) {\n    const part = parts.shift();\n    cur = `${part}.${cur}`;\n    permutations.push(cur);\n  }\n  return permutations;\n}\n\n// lib/store.ts\nvar Store = class {\n  constructor() {\n    this.synchronous = false;\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookie(_domain, _path, _key, _callback) {\n    throw new Error(\"findCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookies(_domain, _path, _allowSpecialUseDomain = false, _callback) {\n    throw new Error(\"findCookies is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  putCookie(_cookie, _callback) {\n    throw new Error(\"putCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  updateCookie(_oldCookie, _newCookie, _callback) {\n    throw new Error(\"updateCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookie(_domain, _path, _key, _callback) {\n    throw new Error(\"removeCookie is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookies(_domain, _path, _callback) {\n    throw new Error(\"removeCookies is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeAllCookies(_callback) {\n    throw new Error(\"removeAllCookies is not implemented\");\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  getAllCookies(_callback) {\n    throw new Error(\n      \"getAllCookies is not implemented (therefore jar cannot be serialized)\"\n    );\n  }\n};\n\n// lib/utils.ts\nvar objectToString = (obj) => Object.prototype.toString.call(obj);\nvar safeArrayToString = (arr, seenArrays) => {\n  if (typeof arr.join !== \"function\") return objectToString(arr);\n  seenArrays.add(arr);\n  const mapped = arr.map(\n    (val) => val === null || val === void 0 || seenArrays.has(val) ? \"\" : safeToStringImpl(val, seenArrays)\n  );\n  return mapped.join();\n};\nvar safeToStringImpl = (val, seenArrays = /* @__PURE__ */ new WeakSet()) => {\n  if (typeof val !== \"object\" || val === null) {\n    return String(val);\n  } else if (typeof val.toString === \"function\") {\n    return Array.isArray(val) ? (\n      // Arrays have a weird custom toString that we need to replicate\n      safeArrayToString(val, seenArrays)\n    ) : (\n      // eslint-disable-next-line @typescript-eslint/no-base-to-string\n      String(val)\n    );\n  } else {\n    return objectToString(val);\n  }\n};\nvar safeToString = (val) => safeToStringImpl(val);\nfunction createPromiseCallback(cb) {\n  let callback;\n  let resolve;\n  let reject;\n  const promise = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  if (typeof cb === \"function\") {\n    callback = (err, result) => {\n      try {\n        if (err) cb(err);\n        else cb(null, result);\n      } catch (e) {\n        reject(e instanceof Error ? e : new Error());\n      }\n    };\n  } else {\n    callback = (err, result) => {\n      try {\n        if (err) reject(err);\n        else resolve(result);\n      } catch (e) {\n        reject(e instanceof Error ? e : new Error());\n      }\n    };\n  }\n  return {\n    promise,\n    callback,\n    resolve: (value) => {\n      callback(null, value);\n      return promise;\n    },\n    reject: (error) => {\n      callback(error);\n      return promise;\n    }\n  };\n}\nfunction inOperator(k, o) {\n  return k in o;\n}\n\n// lib/memstore.ts\nvar MemoryCookieStore = class extends Store {\n  /**\n   * Create a new {@link MemoryCookieStore}.\n   */\n  constructor() {\n    super();\n    this.synchronous = true;\n    this.idx = /* @__PURE__ */ Object.create(null);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookie(domain, path, key, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    if (domain == null || path == null || key == null) {\n      return promiseCallback.resolve(void 0);\n    }\n    const result = this.idx[domain]?.[path]?.[key];\n    return promiseCallback.resolve(result);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  findCookies(domain, path, allowSpecialUseDomain = false, callback) {\n    if (typeof allowSpecialUseDomain === \"function\") {\n      callback = allowSpecialUseDomain;\n      allowSpecialUseDomain = true;\n    }\n    const results = [];\n    const promiseCallback = createPromiseCallback(callback);\n    if (!domain) {\n      return promiseCallback.resolve([]);\n    }\n    let pathMatcher;\n    if (!path) {\n      pathMatcher = function matchAll(domainIndex) {\n        for (const curPath in domainIndex) {\n          const pathIndex = domainIndex[curPath];\n          for (const key in pathIndex) {\n            const value = pathIndex[key];\n            if (value) {\n              results.push(value);\n            }\n          }\n        }\n      };\n    } else {\n      pathMatcher = function matchRFC(domainIndex) {\n        for (const cookiePath in domainIndex) {\n          if (pathMatch(path, cookiePath)) {\n            const pathIndex = domainIndex[cookiePath];\n            for (const key in pathIndex) {\n              const value = pathIndex[key];\n              if (value) {\n                results.push(value);\n              }\n            }\n          }\n        }\n      };\n    }\n    const domains = permuteDomain(domain, allowSpecialUseDomain) || [domain];\n    const idx = this.idx;\n    domains.forEach((curDomain) => {\n      const domainIndex = idx[curDomain];\n      if (!domainIndex) {\n        return;\n      }\n      pathMatcher(domainIndex);\n    });\n    return promiseCallback.resolve(results);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  putCookie(cookie, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const { domain, path, key } = cookie;\n    if (domain == null || path == null || key == null) {\n      return promiseCallback.resolve(void 0);\n    }\n    const domainEntry = this.idx[domain] ?? /* @__PURE__ */ Object.create(null);\n    this.idx[domain] = domainEntry;\n    const pathEntry = domainEntry[path] ?? /* @__PURE__ */ Object.create(null);\n    domainEntry[path] = pathEntry;\n    pathEntry[key] = cookie;\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  updateCookie(_oldCookie, newCookie, callback) {\n    if (callback) this.putCookie(newCookie, callback);\n    else return this.putCookie(newCookie);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookie(domain, path, key, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    delete this.idx[domain]?.[path]?.[key];\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeCookies(domain, path, callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const domainEntry = this.idx[domain];\n    if (domainEntry) {\n      if (path) {\n        delete domainEntry[path];\n      } else {\n        delete this.idx[domain];\n      }\n    }\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  removeAllCookies(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    this.idx = /* @__PURE__ */ Object.create(null);\n    return promiseCallback.resolve(void 0);\n  }\n  /**\n   * @internal No doc because this is an overload that supports the implementation\n   */\n  getAllCookies(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const cookies = [];\n    const idx = this.idx;\n    const domains = Object.keys(idx);\n    domains.forEach((domain) => {\n      const domainEntry = idx[domain] ?? {};\n      const paths = Object.keys(domainEntry);\n      paths.forEach((path) => {\n        const pathEntry = domainEntry[path] ?? {};\n        const keys = Object.keys(pathEntry);\n        keys.forEach((key) => {\n          const keyEntry = pathEntry[key];\n          if (keyEntry != null) {\n            cookies.push(keyEntry);\n          }\n        });\n      });\n    });\n    cookies.sort((a, b) => {\n      return (a.creationIndex || 0) - (b.creationIndex || 0);\n    });\n    return promiseCallback.resolve(cookies);\n  }\n};\n\n// lib/validators.ts\nfunction isNonEmptyString(data) {\n  return isString(data) && data !== \"\";\n}\nfunction isEmptyString(data) {\n  return data === \"\" || data instanceof String && data.toString() === \"\";\n}\nfunction isString(data) {\n  return typeof data === \"string\" || data instanceof String;\n}\nfunction isObject(data) {\n  return objectToString(data) === \"[object Object]\";\n}\nfunction validate(bool, cbOrMessage, message) {\n  if (bool) return;\n  const cb = typeof cbOrMessage === \"function\" ? cbOrMessage : void 0;\n  let options = typeof cbOrMessage === \"function\" ? message : cbOrMessage;\n  if (!isObject(options)) options = \"[object Object]\";\n  const err = new ParameterError(safeToString(options));\n  if (cb) cb(err);\n  else throw err;\n}\nvar ParameterError = class extends Error {\n};\n\n// lib/version.ts\nvar version = \"6.0.0\";\n\n// lib/cookie/constants.ts\nvar PrefixSecurityEnum = {\n  SILENT: \"silent\",\n  STRICT: \"strict\",\n  DISABLED: \"unsafe-disabled\"\n};\nObject.freeze(PrefixSecurityEnum);\nvar IP_V6_REGEX = `\n\\\\[?(?:\n(?:[a-fA-F\\\\d]{1,4}:){7}(?:[a-fA-F\\\\d]{1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|:[a-fA-F\\\\d]{1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,2}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){4}(?:(?::[a-fA-F\\\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,3}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){3}(?:(?::[a-fA-F\\\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,4}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){2}(?:(?::[a-fA-F\\\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,5}|:)|\n(?:[a-fA-F\\\\d]{1,4}:){1}(?:(?::[a-fA-F\\\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,6}|:)|\n(?::(?:(?::[a-fA-F\\\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}|(?::[a-fA-F\\\\d]{1,4}){1,7}|:))\n)(?:%[0-9a-zA-Z]{1,})?\\\\]?\n`.replace(/\\s*\\/\\/.*$/gm, \"\").replace(/\\n/g, \"\").trim();\nvar IP_V6_REGEX_OBJECT = new RegExp(`^${IP_V6_REGEX}$`);\nvar IP_V4_REGEX = `(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])`;\nvar IP_V4_REGEX_OBJECT = new RegExp(`^${IP_V4_REGEX}$`);\n\n// lib/cookie/canonicalDomain.ts\nfunction domainToASCII(domain) {\n  return new URL(`http://${domain}`).hostname;\n}\nfunction canonicalDomain(domainName) {\n  if (domainName == null) {\n    return void 0;\n  }\n  let str = domainName.trim().replace(/^\\./, \"\");\n  if (IP_V6_REGEX_OBJECT.test(str)) {\n    if (!str.startsWith(\"[\")) {\n      str = \"[\" + str;\n    }\n    if (!str.endsWith(\"]\")) {\n      str = str + \"]\";\n    }\n    return domainToASCII(str).slice(1, -1);\n  }\n  if (/[^\\u0001-\\u007f]/.test(str)) {\n    return domainToASCII(str);\n  }\n  return str.toLowerCase();\n}\n\n// lib/cookie/formatDate.ts\nfunction formatDate(date) {\n  return date.toUTCString();\n}\n\n// lib/cookie/parseDate.ts\nvar DATE_DELIM = /[\\x09\\x20-\\x2F\\x3B-\\x40\\x5B-\\x60\\x7B-\\x7E]/;\nvar MONTH_TO_NUM = {\n  jan: 0,\n  feb: 1,\n  mar: 2,\n  apr: 3,\n  may: 4,\n  jun: 5,\n  jul: 6,\n  aug: 7,\n  sep: 8,\n  oct: 9,\n  nov: 10,\n  dec: 11\n};\nfunction parseDigits(token, minDigits, maxDigits, trailingOK) {\n  let count = 0;\n  while (count < token.length) {\n    const c = token.charCodeAt(count);\n    if (c <= 47 || c >= 58) {\n      break;\n    }\n    count++;\n  }\n  if (count < minDigits || count > maxDigits) {\n    return;\n  }\n  if (!trailingOK && count != token.length) {\n    return;\n  }\n  return parseInt(token.slice(0, count), 10);\n}\nfunction parseTime(token) {\n  const parts = token.split(\":\");\n  const result = [0, 0, 0];\n  if (parts.length !== 3) {\n    return;\n  }\n  for (let i = 0; i < 3; i++) {\n    const trailingOK = i == 2;\n    const numPart = parts[i];\n    if (numPart === void 0) {\n      return;\n    }\n    const num = parseDigits(numPart, 1, 2, trailingOK);\n    if (num === void 0) {\n      return;\n    }\n    result[i] = num;\n  }\n  return result;\n}\nfunction parseMonth(token) {\n  token = String(token).slice(0, 3).toLowerCase();\n  switch (token) {\n    case \"jan\":\n      return MONTH_TO_NUM.jan;\n    case \"feb\":\n      return MONTH_TO_NUM.feb;\n    case \"mar\":\n      return MONTH_TO_NUM.mar;\n    case \"apr\":\n      return MONTH_TO_NUM.apr;\n    case \"may\":\n      return MONTH_TO_NUM.may;\n    case \"jun\":\n      return MONTH_TO_NUM.jun;\n    case \"jul\":\n      return MONTH_TO_NUM.jul;\n    case \"aug\":\n      return MONTH_TO_NUM.aug;\n    case \"sep\":\n      return MONTH_TO_NUM.sep;\n    case \"oct\":\n      return MONTH_TO_NUM.oct;\n    case \"nov\":\n      return MONTH_TO_NUM.nov;\n    case \"dec\":\n      return MONTH_TO_NUM.dec;\n    default:\n      return;\n  }\n}\nfunction parseDate(cookieDate) {\n  if (!cookieDate) {\n    return;\n  }\n  const tokens = cookieDate.split(DATE_DELIM);\n  let hour;\n  let minute;\n  let second;\n  let dayOfMonth;\n  let month;\n  let year;\n  for (let i = 0; i < tokens.length; i++) {\n    const token = (tokens[i] ?? \"\").trim();\n    if (!token.length) {\n      continue;\n    }\n    if (second === void 0) {\n      const result = parseTime(token);\n      if (result) {\n        hour = result[0];\n        minute = result[1];\n        second = result[2];\n        continue;\n      }\n    }\n    if (dayOfMonth === void 0) {\n      const result = parseDigits(token, 1, 2, true);\n      if (result !== void 0) {\n        dayOfMonth = result;\n        continue;\n      }\n    }\n    if (month === void 0) {\n      const result = parseMonth(token);\n      if (result !== void 0) {\n        month = result;\n        continue;\n      }\n    }\n    if (year === void 0) {\n      const result = parseDigits(token, 2, 4, true);\n      if (result !== void 0) {\n        year = result;\n        if (year >= 70 && year <= 99) {\n          year += 1900;\n        } else if (year >= 0 && year <= 69) {\n          year += 2e3;\n        }\n      }\n    }\n  }\n  if (dayOfMonth === void 0 || month === void 0 || year === void 0 || hour === void 0 || minute === void 0 || second === void 0 || dayOfMonth < 1 || dayOfMonth > 31 || year < 1601 || hour > 23 || minute > 59 || second > 59) {\n    return;\n  }\n  return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));\n}\n\n// lib/cookie/cookie.ts\nvar COOKIE_OCTETS = /^[\\x21\\x23-\\x2B\\x2D-\\x3A\\x3C-\\x5B\\x5D-\\x7E]+$/;\nvar PATH_VALUE = /[\\x20-\\x3A\\x3C-\\x7E]+/;\nvar CONTROL_CHARS = /[\\x00-\\x1F]/;\nvar TERMINATORS = [\"\\n\", \"\\r\", \"\\0\"];\nfunction trimTerminator(str) {\n  if (isEmptyString(str)) return str;\n  for (let t = 0; t < TERMINATORS.length; t++) {\n    const terminator = TERMINATORS[t];\n    const terminatorIdx = terminator ? str.indexOf(terminator) : -1;\n    if (terminatorIdx !== -1) {\n      str = str.slice(0, terminatorIdx);\n    }\n  }\n  return str;\n}\nfunction parseCookiePair(cookiePair, looseMode) {\n  cookiePair = trimTerminator(cookiePair);\n  let firstEq = cookiePair.indexOf(\"=\");\n  if (looseMode) {\n    if (firstEq === 0) {\n      cookiePair = cookiePair.substring(1);\n      firstEq = cookiePair.indexOf(\"=\");\n    }\n  } else {\n    if (firstEq <= 0) {\n      return void 0;\n    }\n  }\n  let cookieName, cookieValue;\n  if (firstEq <= 0) {\n    cookieName = \"\";\n    cookieValue = cookiePair.trim();\n  } else {\n    cookieName = cookiePair.slice(0, firstEq).trim();\n    cookieValue = cookiePair.slice(firstEq + 1).trim();\n  }\n  if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {\n    return void 0;\n  }\n  const c = new Cookie();\n  c.key = cookieName;\n  c.value = cookieValue;\n  return c;\n}\nfunction parse(str, options) {\n  if (isEmptyString(str) || !isString(str)) {\n    return void 0;\n  }\n  str = str.trim();\n  const firstSemi = str.indexOf(\";\");\n  const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi);\n  const c = parseCookiePair(cookiePair, options?.loose ?? false);\n  if (!c) {\n    return void 0;\n  }\n  if (firstSemi === -1) {\n    return c;\n  }\n  const unparsed = str.slice(firstSemi + 1).trim();\n  if (unparsed.length === 0) {\n    return c;\n  }\n  const cookie_avs = unparsed.split(\";\");\n  while (cookie_avs.length) {\n    const av = (cookie_avs.shift() ?? \"\").trim();\n    if (av.length === 0) {\n      continue;\n    }\n    const av_sep = av.indexOf(\"=\");\n    let av_key, av_value;\n    if (av_sep === -1) {\n      av_key = av;\n      av_value = null;\n    } else {\n      av_key = av.slice(0, av_sep);\n      av_value = av.slice(av_sep + 1);\n    }\n    av_key = av_key.trim().toLowerCase();\n    if (av_value) {\n      av_value = av_value.trim();\n    }\n    switch (av_key) {\n      case \"expires\":\n        if (av_value) {\n          const exp = parseDate(av_value);\n          if (exp) {\n            c.expires = exp;\n          }\n        }\n        break;\n      case \"max-age\":\n        if (av_value) {\n          if (/^-?[0-9]+$/.test(av_value)) {\n            const delta = parseInt(av_value, 10);\n            c.setMaxAge(delta);\n          }\n        }\n        break;\n      case \"domain\":\n        if (av_value) {\n          const domain = av_value.trim().replace(/^\\./, \"\");\n          if (domain) {\n            c.domain = domain.toLowerCase();\n          }\n        }\n        break;\n      case \"path\":\n        c.path = av_value && av_value[0] === \"/\" ? av_value : null;\n        break;\n      case \"secure\":\n        c.secure = true;\n        break;\n      case \"httponly\":\n        c.httpOnly = true;\n        break;\n      case \"samesite\":\n        switch (av_value ? av_value.toLowerCase() : \"\") {\n          case \"strict\":\n            c.sameSite = \"strict\";\n            break;\n          case \"lax\":\n            c.sameSite = \"lax\";\n            break;\n          case \"none\":\n            c.sameSite = \"none\";\n            break;\n          default:\n            c.sameSite = void 0;\n            break;\n        }\n        break;\n      default:\n        c.extensions = c.extensions || [];\n        c.extensions.push(av);\n        break;\n    }\n  }\n  return c;\n}\nfunction fromJSON(str) {\n  if (!str || isEmptyString(str)) {\n    return void 0;\n  }\n  let obj;\n  if (typeof str === \"string\") {\n    try {\n      obj = JSON.parse(str);\n    } catch {\n      return void 0;\n    }\n  } else {\n    obj = str;\n  }\n  const c = new Cookie();\n  Cookie.serializableProperties.forEach((prop) => {\n    if (obj && typeof obj === \"object\" && inOperator(prop, obj)) {\n      const val = obj[prop];\n      if (val === void 0) {\n        return;\n      }\n      if (inOperator(prop, cookieDefaults) && val === cookieDefaults[prop]) {\n        return;\n      }\n      switch (prop) {\n        case \"key\":\n        case \"value\":\n        case \"sameSite\":\n          if (typeof val === \"string\") {\n            c[prop] = val;\n          }\n          break;\n        case \"expires\":\n        case \"creation\":\n        case \"lastAccessed\":\n          if (typeof val === \"number\" || typeof val === \"string\" || val instanceof Date) {\n            c[prop] = obj[prop] == \"Infinity\" ? \"Infinity\" : new Date(val);\n          } else if (val === null) {\n            c[prop] = null;\n          }\n          break;\n        case \"maxAge\":\n          if (typeof val === \"number\" || val === \"Infinity\" || val === \"-Infinity\") {\n            c[prop] = val;\n          }\n          break;\n        case \"domain\":\n        case \"path\":\n          if (typeof val === \"string\" || val === null) {\n            c[prop] = val;\n          }\n          break;\n        case \"secure\":\n        case \"httpOnly\":\n          if (typeof val === \"boolean\") {\n            c[prop] = val;\n          }\n          break;\n        case \"extensions\":\n          if (Array.isArray(val) && val.every((item) => typeof item === \"string\")) {\n            c[prop] = val;\n          }\n          break;\n        case \"hostOnly\":\n        case \"pathIsDefault\":\n          if (typeof val === \"boolean\" || val === null) {\n            c[prop] = val;\n          }\n          break;\n      }\n    }\n  });\n  return c;\n}\nvar cookieDefaults = {\n  // the order in which the RFC has them:\n  key: \"\",\n  value: \"\",\n  expires: \"Infinity\",\n  maxAge: null,\n  domain: null,\n  path: null,\n  secure: false,\n  httpOnly: false,\n  extensions: null,\n  // set by the CookieJar:\n  hostOnly: null,\n  pathIsDefault: null,\n  creation: null,\n  lastAccessed: null,\n  sameSite: void 0\n};\nvar _Cookie = class _Cookie {\n  /**\n   * Create a new Cookie instance.\n   * @public\n   * @param options - The attributes to set on the cookie\n   */\n  constructor(options = {}) {\n    this.key = options.key ?? cookieDefaults.key;\n    this.value = options.value ?? cookieDefaults.value;\n    this.expires = options.expires ?? cookieDefaults.expires;\n    this.maxAge = options.maxAge ?? cookieDefaults.maxAge;\n    this.domain = options.domain ?? cookieDefaults.domain;\n    this.path = options.path ?? cookieDefaults.path;\n    this.secure = options.secure ?? cookieDefaults.secure;\n    this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly;\n    this.extensions = options.extensions ?? cookieDefaults.extensions;\n    this.creation = options.creation ?? cookieDefaults.creation;\n    this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly;\n    this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault;\n    this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed;\n    this.sameSite = options.sameSite ?? cookieDefaults.sameSite;\n    this.creation = options.creation ?? /* @__PURE__ */ new Date();\n    Object.defineProperty(this, \"creationIndex\", {\n      configurable: false,\n      enumerable: false,\n      // important for assert.deepEqual checks\n      writable: true,\n      value: ++_Cookie.cookiesCreated\n    });\n    this.creationIndex = _Cookie.cookiesCreated;\n  }\n  [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n    const now = Date.now();\n    const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : \"?\";\n    const createAge = this.creation && this.creation !== \"Infinity\" ? `${String(now - this.creation.getTime())}ms` : \"?\";\n    const accessAge = this.lastAccessed && this.lastAccessed !== \"Infinity\" ? `${String(now - this.lastAccessed.getTime())}ms` : \"?\";\n    return `Cookie=\"${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}\"`;\n  }\n  /**\n   * For convenience in using `JSON.stringify(cookie)`. Returns a plain-old Object that can be JSON-serialized.\n   *\n   * @remarks\n   * - Any `Date` properties (such as {@link Cookie.expires}, {@link Cookie.creation}, and {@link Cookie.lastAccessed}) are exported in ISO format (`Date.toISOString()`).\n   *\n   *  - Custom Cookie properties are discarded. In tough-cookie 1.x, since there was no {@link Cookie.toJSON} method explicitly defined, all enumerable properties were captured.\n   *      If you want a property to be serialized, add the property name to {@link Cookie.serializableProperties}.\n   */\n  toJSON() {\n    const obj = {};\n    for (const prop of _Cookie.serializableProperties) {\n      const val = this[prop];\n      if (val === cookieDefaults[prop]) {\n        continue;\n      }\n      switch (prop) {\n        case \"key\":\n        case \"value\":\n        case \"sameSite\":\n          if (typeof val === \"string\") {\n            obj[prop] = val;\n          }\n          break;\n        case \"expires\":\n        case \"creation\":\n        case \"lastAccessed\":\n          if (typeof val === \"number\" || typeof val === \"string\" || val instanceof Date) {\n            obj[prop] = val == \"Infinity\" ? \"Infinity\" : new Date(val).toISOString();\n          } else if (val === null) {\n            obj[prop] = null;\n          }\n          break;\n        case \"maxAge\":\n          if (typeof val === \"number\" || val === \"Infinity\" || val === \"-Infinity\") {\n            obj[prop] = val;\n          }\n          break;\n        case \"domain\":\n        case \"path\":\n          if (typeof val === \"string\" || val === null) {\n            obj[prop] = val;\n          }\n          break;\n        case \"secure\":\n        case \"httpOnly\":\n          if (typeof val === \"boolean\") {\n            obj[prop] = val;\n          }\n          break;\n        case \"extensions\":\n          if (Array.isArray(val)) {\n            obj[prop] = val;\n          }\n          break;\n        case \"hostOnly\":\n        case \"pathIsDefault\":\n          if (typeof val === \"boolean\" || val === null) {\n            obj[prop] = val;\n          }\n          break;\n      }\n    }\n    return obj;\n  }\n  /**\n   * Does a deep clone of this cookie, implemented exactly as `Cookie.fromJSON(cookie.toJSON())`.\n   * @public\n   */\n  clone() {\n    return fromJSON(this.toJSON());\n  }\n  /**\n   * Validates cookie attributes for semantic correctness. Useful for \"lint\" checking any `Set-Cookie` headers you generate.\n   * For now, it returns a boolean, but eventually could return a reason string.\n   *\n   * @remarks\n   * Works for a few things, but is by no means comprehensive.\n   *\n   * @beta\n   */\n  validate() {\n    if (!this.value || !COOKIE_OCTETS.test(this.value)) {\n      return false;\n    }\n    if (this.expires != \"Infinity\" && !(this.expires instanceof Date) && !parseDate(this.expires)) {\n      return false;\n    }\n    if (this.maxAge != null && this.maxAge !== \"Infinity\" && (this.maxAge === \"-Infinity\" || this.maxAge <= 0)) {\n      return false;\n    }\n    if (this.path != null && !PATH_VALUE.test(this.path)) {\n      return false;\n    }\n    const cdomain = this.cdomain();\n    if (cdomain) {\n      if (cdomain.match(/\\.$/)) {\n        return false;\n      }\n      const suffix = getPublicSuffix(cdomain);\n      if (suffix == null) {\n        return false;\n      }\n    }\n    return true;\n  }\n  /**\n   * Sets the 'Expires' attribute on a cookie.\n   *\n   * @remarks\n   * When given a `string` value it will be parsed with {@link parseDate}. If the value can't be parsed as a cookie date\n   * then the 'Expires' attribute will be set to `\"Infinity\"`.\n   *\n   * @param exp - the new value for the 'Expires' attribute of the cookie.\n   */\n  setExpires(exp) {\n    if (exp instanceof Date) {\n      this.expires = exp;\n    } else {\n      this.expires = parseDate(exp) || \"Infinity\";\n    }\n  }\n  /**\n   * Sets the 'Max-Age' attribute (in seconds) on a cookie.\n   *\n   * @remarks\n   * Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it can be serialized to JSON.\n   *\n   * @param age - the new value for the 'Max-Age' attribute (in seconds).\n   */\n  setMaxAge(age) {\n    if (age === Infinity) {\n      this.maxAge = \"Infinity\";\n    } else if (age === -Infinity) {\n      this.maxAge = \"-Infinity\";\n    } else {\n      this.maxAge = age;\n    }\n  }\n  /**\n   * Encodes to a `Cookie` header value (specifically, the {@link Cookie.key} and {@link Cookie.value} properties joined with \"=\").\n   * @public\n   */\n  cookieString() {\n    const val = this.value || \"\";\n    if (this.key) {\n      return `${this.key}=${val}`;\n    }\n    return val;\n  }\n  /**\n   * Encodes to a `Set-Cookie header` value.\n   * @public\n   */\n  toString() {\n    let str = this.cookieString();\n    if (this.expires != \"Infinity\") {\n      if (this.expires instanceof Date) {\n        str += `; Expires=${formatDate(this.expires)}`;\n      }\n    }\n    if (this.maxAge != null && this.maxAge != Infinity) {\n      str += `; Max-Age=${String(this.maxAge)}`;\n    }\n    if (this.domain && !this.hostOnly) {\n      str += `; Domain=${this.domain}`;\n    }\n    if (this.path) {\n      str += `; Path=${this.path}`;\n    }\n    if (this.secure) {\n      str += \"; Secure\";\n    }\n    if (this.httpOnly) {\n      str += \"; HttpOnly\";\n    }\n    if (this.sameSite && this.sameSite !== \"none\") {\n      if (this.sameSite.toLowerCase() === _Cookie.sameSiteCanonical.lax.toLowerCase()) {\n        str += `; SameSite=${_Cookie.sameSiteCanonical.lax}`;\n      } else if (this.sameSite.toLowerCase() === _Cookie.sameSiteCanonical.strict.toLowerCase()) {\n        str += `; SameSite=${_Cookie.sameSiteCanonical.strict}`;\n      } else {\n        str += `; SameSite=${this.sameSite}`;\n      }\n    }\n    if (this.extensions) {\n      this.extensions.forEach((ext) => {\n        str += `; ${ext}`;\n      });\n    }\n    return str;\n  }\n  /**\n   * Computes the TTL relative to now (milliseconds).\n   *\n   * @remarks\n   * - `Infinity` is returned for cookies without an explicit expiry\n   *\n   * - `0` is returned if the cookie is expired.\n   *\n   * - Otherwise a time-to-live in milliseconds is returned.\n   *\n   * @param now - passing an explicit value is mostly used for testing purposes since this defaults to the `Date.now()`\n   * @public\n   */\n  TTL(now = Date.now()) {\n    if (this.maxAge != null && typeof this.maxAge === \"number\") {\n      return this.maxAge <= 0 ? 0 : this.maxAge * 1e3;\n    }\n    const expires = this.expires;\n    if (expires === \"Infinity\") {\n      return Infinity;\n    }\n    return (expires?.getTime() ?? now) - (now || Date.now());\n  }\n  /**\n   * Computes the absolute unix-epoch milliseconds that this cookie expires.\n   *\n   * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n   * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n   *\n   * If Expires ({@link Cookie.expires}) is set, that's returned.\n   *\n   * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n   */\n  expiryTime(now) {\n    if (this.maxAge != null) {\n      const relativeTo = now || this.lastAccessed || /* @__PURE__ */ new Date();\n      const maxAge = typeof this.maxAge === \"number\" ? this.maxAge : -Infinity;\n      const age = maxAge <= 0 ? -Infinity : maxAge * 1e3;\n      if (relativeTo === \"Infinity\") {\n        return Infinity;\n      }\n      return relativeTo.getTime() + age;\n    }\n    if (this.expires == \"Infinity\") {\n      return Infinity;\n    }\n    return this.expires ? this.expires.getTime() : void 0;\n  }\n  /**\n   * Similar to {@link Cookie.expiryTime}, computes the absolute unix-epoch milliseconds that this cookie expires and returns it as a Date.\n   *\n   * The \"Max-Age\" attribute takes precedence over \"Expires\" (as per the RFC). The {@link Cookie.lastAccessed} attribute\n   * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.\n   *\n   * If Expires ({@link Cookie.expires}) is set, that's returned.\n   *\n   * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the \"Max-Age\" value\n   */\n  expiryDate(now) {\n    const millisec = this.expiryTime(now);\n    if (millisec == Infinity) {\n      return /* @__PURE__ */ new Date(2147483647e3);\n    } else if (millisec == -Infinity) {\n      return /* @__PURE__ */ new Date(0);\n    } else {\n      return millisec == void 0 ? void 0 : new Date(millisec);\n    }\n  }\n  /**\n   * Indicates if the cookie has been persisted to a store or not.\n   * @public\n   */\n  isPersistent() {\n    return this.maxAge != null || this.expires != \"Infinity\";\n  }\n  /**\n   * Calls {@link canonicalDomain} with the {@link Cookie.domain} property.\n   * @public\n   */\n  canonicalizedDomain() {\n    return canonicalDomain(this.domain);\n  }\n  /**\n   * Alias for {@link Cookie.canonicalizedDomain}\n   * @public\n   */\n  cdomain() {\n    return canonicalDomain(this.domain);\n  }\n  /**\n   * Parses a string into a Cookie object.\n   *\n   * @remarks\n   * Note: when parsing a `Cookie` header it must be split by ';' before each Cookie string can be parsed.\n   *\n   * @example\n   * ```\n   * // parse a `Set-Cookie` header\n   * const setCookieHeader = 'a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT'\n   * const cookie = Cookie.parse(setCookieHeader)\n   * cookie.key === 'a'\n   * cookie.value === 'bcd'\n   * cookie.expires === new Date(Date.parse('Tue, 18 Oct 2011 07:05:03 GMT'))\n   * ```\n   *\n   * @example\n   * ```\n   * // parse a `Cookie` header\n   * const cookieHeader = 'name=value; name2=value2; name3=value3'\n   * const cookies = cookieHeader.split(';').map(Cookie.parse)\n   * cookies[0].name === 'name'\n   * cookies[0].value === 'value'\n   * cookies[1].name === 'name2'\n   * cookies[1].value === 'value2'\n   * cookies[2].name === 'name3'\n   * cookies[2].value === 'value3'\n   * ```\n   *\n   * @param str - The `Set-Cookie` header or a Cookie string to parse.\n   * @param options - Configures `strict` or `loose` mode for cookie parsing\n   */\n  static parse(str, options) {\n    return parse(str, options);\n  }\n  /**\n   * Does the reverse of {@link Cookie.toJSON}.\n   *\n   * @remarks\n   * Any Date properties (such as .expires, .creation, and .lastAccessed) are parsed via Date.parse, not tough-cookie's parseDate, since ISO timestamps are being handled at this layer.\n   *\n   * @example\n   * ```\n   * const json = JSON.stringify({\n   *   key: 'alpha',\n   *   value: 'beta',\n   *   domain: 'example.com',\n   *   path: '/foo',\n   *   expires: '2038-01-19T03:14:07.000Z',\n   * })\n   * const cookie = Cookie.fromJSON(json)\n   * cookie.key === 'alpha'\n   * cookie.value === 'beta'\n   * cookie.domain === 'example.com'\n   * cookie.path === '/foo'\n   * cookie.expires === new Date(Date.parse('2038-01-19T03:14:07.000Z'))\n   * ```\n   *\n   * @param str - An unparsed JSON string or a value that has already been parsed as JSON\n   */\n  static fromJSON(str) {\n    return fromJSON(str);\n  }\n};\n_Cookie.cookiesCreated = 0;\n/**\n * @internal\n */\n_Cookie.sameSiteLevel = {\n  strict: 3,\n  lax: 2,\n  none: 1\n};\n/**\n * @internal\n */\n_Cookie.sameSiteCanonical = {\n  strict: \"Strict\",\n  lax: \"Lax\"\n};\n/**\n * Cookie properties that will be serialized when using {@link Cookie.fromJSON} and {@link Cookie.toJSON}.\n * @public\n */\n_Cookie.serializableProperties = [\n  \"key\",\n  \"value\",\n  \"expires\",\n  \"maxAge\",\n  \"domain\",\n  \"path\",\n  \"secure\",\n  \"httpOnly\",\n  \"extensions\",\n  \"hostOnly\",\n  \"pathIsDefault\",\n  \"creation\",\n  \"lastAccessed\",\n  \"sameSite\"\n];\nvar Cookie = _Cookie;\n\n// lib/cookie/cookieCompare.ts\nvar MAX_TIME = 2147483647e3;\nfunction cookieCompare(a, b) {\n  let cmp;\n  const aPathLen = a.path ? a.path.length : 0;\n  const bPathLen = b.path ? b.path.length : 0;\n  cmp = bPathLen - aPathLen;\n  if (cmp !== 0) {\n    return cmp;\n  }\n  const aTime = a.creation && a.creation instanceof Date ? a.creation.getTime() : MAX_TIME;\n  const bTime = b.creation && b.creation instanceof Date ? b.creation.getTime() : MAX_TIME;\n  cmp = aTime - bTime;\n  if (cmp !== 0) {\n    return cmp;\n  }\n  cmp = (a.creationIndex || 0) - (b.creationIndex || 0);\n  return cmp;\n}\n\n// lib/cookie/defaultPath.ts\nfunction defaultPath(path) {\n  if (!path || path.slice(0, 1) !== \"/\") {\n    return \"/\";\n  }\n  if (path === \"/\") {\n    return path;\n  }\n  const rightSlash = path.lastIndexOf(\"/\");\n  if (rightSlash === 0) {\n    return \"/\";\n  }\n  return path.slice(0, rightSlash);\n}\n\n// lib/cookie/domainMatch.ts\nvar IP_REGEX_LOWERCASE = /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-f\\d]{1,4}:){7}(?:[a-f\\d]{1,4}|:)|(?:[a-f\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-f\\d]{1,4}|:)|(?:[a-f\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,2}|:)|(?:[a-f\\d]{1,4}:){4}(?:(?::[a-f\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,3}|:)|(?:[a-f\\d]{1,4}:){3}(?:(?::[a-f\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,4}|:)|(?:[a-f\\d]{1,4}:){2}(?:(?::[a-f\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,5}|:)|(?:[a-f\\d]{1,4}:){1}(?:(?::[a-f\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-f\\d]{1,4}){1,7}|:)))$)/;\nfunction domainMatch(domain, cookieDomain, canonicalize) {\n  if (domain == null || cookieDomain == null) {\n    return void 0;\n  }\n  let _str;\n  let _domStr;\n  if (canonicalize !== false) {\n    _str = canonicalDomain(domain);\n    _domStr = canonicalDomain(cookieDomain);\n  } else {\n    _str = domain;\n    _domStr = cookieDomain;\n  }\n  if (_str == null || _domStr == null) {\n    return void 0;\n  }\n  if (_str == _domStr) {\n    return true;\n  }\n  const idx = _str.lastIndexOf(_domStr);\n  if (idx <= 0) {\n    return false;\n  }\n  if (_str.length !== _domStr.length + idx) {\n    return false;\n  }\n  if (_str.substring(idx - 1, idx) !== \".\") {\n    return false;\n  }\n  return !IP_REGEX_LOWERCASE.test(_str);\n}\n\n// lib/cookie/secureContext.ts\nfunction isLoopbackV4(address) {\n  const octets = address.split(\".\");\n  return octets.length === 4 && octets[0] !== void 0 && parseInt(octets[0], 10) === 127;\n}\nfunction isLoopbackV6(address) {\n  return address === \"::1\";\n}\nfunction isNormalizedLocalhostTLD(lowerHost) {\n  return lowerHost.endsWith(\".localhost\");\n}\nfunction isLocalHostname(host) {\n  const lowerHost = host.toLowerCase();\n  return lowerHost === \"localhost\" || isNormalizedLocalhostTLD(lowerHost);\n}\nfunction hostNoBrackets(host) {\n  if (host.length >= 2 && host.startsWith(\"[\") && host.endsWith(\"]\")) {\n    return host.substring(1, host.length - 1);\n  }\n  return host;\n}\nfunction isPotentiallyTrustworthy(inputUrl, allowSecureOnLocal = true) {\n  let url;\n  if (typeof inputUrl === \"string\") {\n    try {\n      url = new URL(inputUrl);\n    } catch {\n      return false;\n    }\n  } else {\n    url = inputUrl;\n  }\n  const scheme = url.protocol.replace(\":\", \"\").toLowerCase();\n  const hostname = hostNoBrackets(url.hostname).replace(/\\.+$/, \"\");\n  if (scheme === \"https\" || scheme === \"wss\") {\n    return true;\n  }\n  if (!allowSecureOnLocal) {\n    return false;\n  }\n  if (IP_V4_REGEX_OBJECT.test(hostname)) {\n    return isLoopbackV4(hostname);\n  }\n  if (IP_V6_REGEX_OBJECT.test(hostname)) {\n    return isLoopbackV6(hostname);\n  }\n  return isLocalHostname(hostname);\n}\n\n// lib/cookie/cookieJar.ts\nvar defaultSetCookieOptions = {\n  loose: false,\n  sameSiteContext: void 0,\n  ignoreError: false,\n  http: true\n};\nvar defaultGetCookieOptions = {\n  http: true,\n  expire: true,\n  allPaths: false,\n  sameSiteContext: void 0,\n  sort: void 0\n};\nvar SAME_SITE_CONTEXT_VAL_ERR = 'Invalid sameSiteContext option for getCookies(); expected one of \"strict\", \"lax\", or \"none\"';\nfunction getCookieContext(url) {\n  if (url && typeof url === \"object\" && \"hostname\" in url && typeof url.hostname === \"string\" && \"pathname\" in url && typeof url.pathname === \"string\" && \"protocol\" in url && typeof url.protocol === \"string\") {\n    return {\n      hostname: url.hostname,\n      pathname: url.pathname,\n      protocol: url.protocol\n    };\n  } else if (typeof url === \"string\") {\n    try {\n      return new URL(decodeURI(url));\n    } catch {\n      return new URL(url);\n    }\n  } else {\n    throw new ParameterError(\"`url` argument is not a string or URL.\");\n  }\n}\nfunction checkSameSiteContext(value) {\n  const context = String(value).toLowerCase();\n  if (context === \"none\" || context === \"lax\" || context === \"strict\") {\n    return context;\n  } else {\n    return void 0;\n  }\n}\nfunction isSecurePrefixConditionMet(cookie) {\n  const startsWithSecurePrefix = typeof cookie.key === \"string\" && cookie.key.startsWith(\"__Secure-\");\n  return !startsWithSecurePrefix || cookie.secure;\n}\nfunction isHostPrefixConditionMet(cookie) {\n  const startsWithHostPrefix = typeof cookie.key === \"string\" && cookie.key.startsWith(\"__Host-\");\n  return !startsWithHostPrefix || Boolean(\n    cookie.secure && cookie.hostOnly && cookie.path != null && cookie.path === \"/\"\n  );\n}\nfunction getNormalizedPrefixSecurity(prefixSecurity) {\n  const normalizedPrefixSecurity = prefixSecurity.toLowerCase();\n  switch (normalizedPrefixSecurity) {\n    case PrefixSecurityEnum.STRICT:\n    case PrefixSecurityEnum.SILENT:\n    case PrefixSecurityEnum.DISABLED:\n      return normalizedPrefixSecurity;\n    default:\n      return PrefixSecurityEnum.SILENT;\n  }\n}\nvar CookieJar = class _CookieJar {\n  /**\n   * Creates a new `CookieJar` instance.\n   *\n   * @remarks\n   * - If a custom store is not passed to the constructor, an in-memory store ({@link MemoryCookieStore} will be created and used.\n   * - If a boolean value is passed as the `options` parameter, this is equivalent to passing `{ rejectPublicSuffixes: <value> }`\n   *\n   * @param store - a custom {@link Store} implementation (defaults to {@link MemoryCookieStore})\n   * @param options - configures how cookies are processed by the cookie jar\n   */\n  constructor(store, options) {\n    if (typeof options === \"boolean\") {\n      options = { rejectPublicSuffixes: options };\n    }\n    this.rejectPublicSuffixes = options?.rejectPublicSuffixes ?? true;\n    this.enableLooseMode = options?.looseMode ?? false;\n    this.allowSpecialUseDomain = options?.allowSpecialUseDomain ?? true;\n    this.allowSecureOnLocal = options?.allowSecureOnLocal ?? true;\n    this.prefixSecurity = getNormalizedPrefixSecurity(\n      options?.prefixSecurity ?? \"silent\"\n    );\n    this.store = store ?? new MemoryCookieStore();\n  }\n  callSync(fn) {\n    if (!this.store.synchronous) {\n      throw new Error(\n        \"CookieJar store is not synchronous; use async API instead.\"\n      );\n    }\n    let syncErr = null;\n    let syncResult = void 0;\n    try {\n      fn.call(this, (error, result) => {\n        syncErr = error;\n        syncResult = result;\n      });\n    } catch (err) {\n      syncErr = err;\n    }\n    if (syncErr) throw syncErr;\n    return syncResult;\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  setCookie(cookie, url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    let context;\n    try {\n      if (typeof url === \"string\") {\n        validate(\n          isNonEmptyString(url),\n          callback,\n          safeToString(options)\n        );\n      }\n      context = getCookieContext(url);\n      if (typeof url === \"function\") {\n        return promiseCallback.reject(new Error(\"No URL was specified\"));\n      }\n      if (typeof options === \"function\") {\n        options = defaultSetCookieOptions;\n      }\n      validate(typeof cb === \"function\", cb);\n      if (!isNonEmptyString(cookie) && !isObject(cookie) && cookie instanceof String && cookie.length == 0) {\n        return promiseCallback.resolve(void 0);\n      }\n    } catch (err) {\n      return promiseCallback.reject(err);\n    }\n    const host = canonicalDomain(context.hostname) ?? null;\n    const loose = options?.loose || this.enableLooseMode;\n    let sameSiteContext = null;\n    if (options?.sameSiteContext) {\n      sameSiteContext = checkSameSiteContext(options.sameSiteContext);\n      if (!sameSiteContext) {\n        return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n      }\n    }\n    if (typeof cookie === \"string\" || cookie instanceof String) {\n      const parsedCookie = Cookie.parse(cookie.toString(), { loose });\n      if (!parsedCookie) {\n        const err = new Error(\"Cookie failed to parse\");\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n      }\n      cookie = parsedCookie;\n    } else if (!(cookie instanceof Cookie)) {\n      const err = new Error(\n        \"First argument to setCookie must be a Cookie object or string\"\n      );\n      return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n    }\n    const now = options?.now || /* @__PURE__ */ new Date();\n    if (this.rejectPublicSuffixes && cookie.domain) {\n      try {\n        const cdomain = cookie.cdomain();\n        const suffix = typeof cdomain === \"string\" ? getPublicSuffix(cdomain, {\n          allowSpecialUseDomain: this.allowSpecialUseDomain,\n          ignoreError: options?.ignoreError\n        }) : null;\n        if (suffix == null && !IP_V6_REGEX_OBJECT.test(cookie.domain)) {\n          const err = new Error(\"Cookie has domain set to a public suffix\");\n          return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n        }\n      } catch (err) {\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : (\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n          promiseCallback.reject(err)\n        );\n      }\n    }\n    if (cookie.domain) {\n      if (!domainMatch(host ?? void 0, cookie.cdomain() ?? void 0, false)) {\n        const err = new Error(\n          `Cookie not in this host's domain. Cookie:${cookie.cdomain() ?? \"null\"} Request:${host ?? \"null\"}`\n        );\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n      }\n      if (cookie.hostOnly == null) {\n        cookie.hostOnly = false;\n      }\n    } else {\n      cookie.hostOnly = true;\n      cookie.domain = host;\n    }\n    if (!cookie.path || cookie.path[0] !== \"/\") {\n      cookie.path = defaultPath(context.pathname);\n      cookie.pathIsDefault = true;\n    }\n    if (options?.http === false && cookie.httpOnly) {\n      const err = new Error(\"Cookie is HttpOnly and this isn't an HTTP API\");\n      return options.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n    }\n    if (cookie.sameSite !== \"none\" && cookie.sameSite !== void 0 && sameSiteContext) {\n      if (sameSiteContext === \"none\") {\n        const err = new Error(\n          \"Cookie is SameSite but this is a cross-origin request\"\n        );\n        return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);\n      }\n    }\n    const ignoreErrorForPrefixSecurity = this.prefixSecurity === PrefixSecurityEnum.SILENT;\n    const prefixSecurityDisabled = this.prefixSecurity === PrefixSecurityEnum.DISABLED;\n    if (!prefixSecurityDisabled) {\n      let errorFound = false;\n      let errorMsg;\n      if (!isSecurePrefixConditionMet(cookie)) {\n        errorFound = true;\n        errorMsg = \"Cookie has __Secure prefix but Secure attribute is not set\";\n      } else if (!isHostPrefixConditionMet(cookie)) {\n        errorFound = true;\n        errorMsg = \"Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'\";\n      }\n      if (errorFound) {\n        return options?.ignoreError || ignoreErrorForPrefixSecurity ? promiseCallback.resolve(void 0) : promiseCallback.reject(new Error(errorMsg));\n      }\n    }\n    const store = this.store;\n    if (!store.updateCookie) {\n      store.updateCookie = async function(_oldCookie, newCookie, cb2) {\n        return this.putCookie(newCookie).then(\n          () => cb2?.(null),\n          (error) => cb2?.(error)\n        );\n      };\n    }\n    const withCookie = function withCookie2(err, oldCookie) {\n      if (err) {\n        cb(err);\n        return;\n      }\n      const next = function(err2) {\n        if (err2) {\n          cb(err2);\n        } else if (typeof cookie === \"string\") {\n          cb(null, void 0);\n        } else {\n          cb(null, cookie);\n        }\n      };\n      if (oldCookie) {\n        if (options && \"http\" in options && options.http === false && oldCookie.httpOnly) {\n          err = new Error(\"old Cookie is HttpOnly and this isn't an HTTP API\");\n          if (options.ignoreError) cb(null, void 0);\n          else cb(err);\n          return;\n        }\n        if (cookie instanceof Cookie) {\n          cookie.creation = oldCookie.creation;\n          cookie.creationIndex = oldCookie.creationIndex;\n          cookie.lastAccessed = now;\n          store.updateCookie(oldCookie, cookie, next);\n        }\n      } else {\n        if (cookie instanceof Cookie) {\n          cookie.creation = cookie.lastAccessed = now;\n          store.putCookie(cookie, next);\n        }\n      }\n    };\n    store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie);\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronously attempt to set the {@link Cookie} in the {@link CookieJar}.\n   *\n   * <strong>Note:</strong> Only works if the configured {@link Store} is also synchronous.\n   *\n   * @remarks\n   * - If successfully persisted, the {@link Cookie} will have updated\n   *     {@link Cookie.creation}, {@link Cookie.lastAccessed} and {@link Cookie.hostOnly}\n   *     properties.\n   *\n   * - As per the RFC, the {@link Cookie.hostOnly} flag is set if there was no `Domain={value}`\n   *     attribute on the cookie string. The {@link Cookie.domain} property is set to the\n   *     fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an\n   *     exact hostname match (not a {@link domainMatch} as per usual)\n   *\n   * @param cookie - The cookie object or cookie string to store. A string value will be parsed into a cookie using {@link Cookie.parse}.\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when storing the cookie.\n   * @public\n   */\n  setCookieSync(cookie, url, options) {\n    const setCookieFn = options ? this.setCookie.bind(this, cookie, url, options) : this.setCookie.bind(this, cookie, url);\n    return this.callSync(setCookieFn);\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  getCookies(url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = defaultGetCookieOptions;\n    } else if (options === void 0) {\n      options = defaultGetCookieOptions;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    let context;\n    try {\n      if (typeof url === \"string\") {\n        validate(isNonEmptyString(url), cb, url);\n      }\n      context = getCookieContext(url);\n      validate(\n        isObject(options),\n        cb,\n        safeToString(options)\n      );\n      validate(typeof cb === \"function\", cb);\n    } catch (parameterError) {\n      return promiseCallback.reject(parameterError);\n    }\n    const host = canonicalDomain(context.hostname);\n    const path = context.pathname || \"/\";\n    const potentiallyTrustworthy = isPotentiallyTrustworthy(\n      url,\n      this.allowSecureOnLocal\n    );\n    let sameSiteLevel = 0;\n    if (options.sameSiteContext) {\n      const sameSiteContext = checkSameSiteContext(options.sameSiteContext);\n      if (sameSiteContext == null) {\n        return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n      }\n      sameSiteLevel = Cookie.sameSiteLevel[sameSiteContext];\n      if (!sameSiteLevel) {\n        return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));\n      }\n    }\n    const http = options.http ?? true;\n    const now = Date.now();\n    const expireCheck = options.expire ?? true;\n    const allPaths = options.allPaths ?? false;\n    const store = this.store;\n    function matchingCookie(c) {\n      if (c.hostOnly) {\n        if (c.domain != host) {\n          return false;\n        }\n      } else {\n        if (!domainMatch(host ?? void 0, c.domain ?? void 0, false)) {\n          return false;\n        }\n      }\n      if (!allPaths && typeof c.path === \"string\" && !pathMatch(path, c.path)) {\n        return false;\n      }\n      if (c.secure && !potentiallyTrustworthy) {\n        return false;\n      }\n      if (c.httpOnly && !http) {\n        return false;\n      }\n      if (sameSiteLevel) {\n        let cookieLevel;\n        if (c.sameSite === \"lax\") {\n          cookieLevel = Cookie.sameSiteLevel.lax;\n        } else if (c.sameSite === \"strict\") {\n          cookieLevel = Cookie.sameSiteLevel.strict;\n        } else {\n          cookieLevel = Cookie.sameSiteLevel.none;\n        }\n        if (cookieLevel > sameSiteLevel) {\n          return false;\n        }\n      }\n      const expiryTime = c.expiryTime();\n      if (expireCheck && expiryTime != void 0 && expiryTime <= now) {\n        store.removeCookie(c.domain, c.path, c.key, () => {\n        });\n        return false;\n      }\n      return true;\n    }\n    store.findCookies(\n      host,\n      allPaths ? null : path,\n      this.allowSpecialUseDomain,\n      (err, cookies) => {\n        if (err) {\n          cb(err);\n          return;\n        }\n        if (cookies == null) {\n          cb(null, []);\n          return;\n        }\n        cookies = cookies.filter(matchingCookie);\n        if (\"sort\" in options && options.sort !== false) {\n          cookies = cookies.sort(cookieCompare);\n        }\n        const now2 = /* @__PURE__ */ new Date();\n        for (const cookie of cookies) {\n          cookie.lastAccessed = now2;\n        }\n        cb(null, cookies);\n      }\n    );\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronously retrieve the list of cookies that can be sent in a Cookie header for the\n   * current URL.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @remarks\n   * - The array of cookies returned will be sorted according to {@link cookieCompare}.\n   *\n   * - The {@link Cookie.lastAccessed} property will be updated on all returned cookies.\n   *\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when retrieving the cookies.\n   */\n  getCookiesSync(url, options) {\n    return this.callSync(this.getCookies.bind(this, url, options)) ?? [];\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  getCookieString(url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const next = function(err, cookies) {\n      if (err) {\n        promiseCallback.callback(err);\n      } else {\n        promiseCallback.callback(\n          null,\n          cookies?.sort(cookieCompare).map((c) => c.cookieString()).join(\"; \")\n        );\n      }\n    };\n    this.getCookies(url, options, next);\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronous version of `.getCookieString()`. Accepts the same options as `.getCookies()` but returns a string suitable for a\n   * `Cookie` header rather than an Array.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when retrieving the cookies.\n   */\n  getCookieStringSync(url, options) {\n    return this.callSync(\n      options ? this.getCookieString.bind(this, url, options) : this.getCookieString.bind(this, url)\n    ) ?? \"\";\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  getSetCookieStrings(url, options, callback) {\n    if (typeof options === \"function\") {\n      callback = options;\n      options = void 0;\n    }\n    const promiseCallback = createPromiseCallback(\n      callback\n    );\n    const next = function(err, cookies) {\n      if (err) {\n        promiseCallback.callback(err);\n      } else {\n        promiseCallback.callback(\n          null,\n          cookies?.map((c) => {\n            return c.toString();\n          })\n        );\n      }\n    };\n    this.getCookies(url, options, next);\n    return promiseCallback.promise;\n  }\n  /**\n   * Synchronous version of `.getSetCookieStrings()`. Returns an array of strings suitable for `Set-Cookie` headers.\n   * Accepts the same options as `.getCookies()`.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @param url - The domain to store the cookie with.\n   * @param options - Configuration settings to use when retrieving the cookies.\n   */\n  getSetCookieStringsSync(url, options = {}) {\n    return this.callSync(this.getSetCookieStrings.bind(this, url, options)) ?? [];\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  serialize(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    let type = this.store.constructor.name;\n    if (isObject(type)) {\n      type = null;\n    }\n    const serialized = {\n      // The version of tough-cookie that serialized this jar. Generally a good\n      // practice since future versions can make data import decisions based on\n      // known past behavior. When/if this matters, use `semver`.\n      version: `tough-cookie@${version}`,\n      // add the store type, to make humans happy:\n      storeType: type,\n      // CookieJar configuration:\n      rejectPublicSuffixes: this.rejectPublicSuffixes,\n      enableLooseMode: this.enableLooseMode,\n      allowSpecialUseDomain: this.allowSpecialUseDomain,\n      prefixSecurity: getNormalizedPrefixSecurity(this.prefixSecurity),\n      // this gets filled from getAllCookies:\n      cookies: []\n    };\n    if (typeof this.store.getAllCookies !== \"function\") {\n      return promiseCallback.reject(\n        new Error(\n          \"store does not support getAllCookies and cannot be serialized\"\n        )\n      );\n    }\n    this.store.getAllCookies((err, cookies) => {\n      if (err) {\n        promiseCallback.callback(err);\n        return;\n      }\n      if (cookies == null) {\n        promiseCallback.callback(null, serialized);\n        return;\n      }\n      serialized.cookies = cookies.map((cookie) => {\n        const serializedCookie = cookie.toJSON();\n        delete serializedCookie.creationIndex;\n        return serializedCookie;\n      });\n      promiseCallback.callback(null, serialized);\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * Serialize the CookieJar if the underlying store supports `.getAllCookies`.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   */\n  serializeSync() {\n    return this.callSync((callback) => {\n      this.serialize(callback);\n    });\n  }\n  /**\n   * Alias of {@link CookieJar.serializeSync}. Allows the cookie to be serialized\n   * with `JSON.stringify(cookieJar)`.\n   */\n  toJSON() {\n    return this.serializeSync();\n  }\n  /**\n   * Use the class method CookieJar.deserialize instead of calling this directly\n   * @internal\n   */\n  _importCookies(serialized, callback) {\n    let cookies = void 0;\n    if (serialized && typeof serialized === \"object\" && inOperator(\"cookies\", serialized) && Array.isArray(serialized.cookies)) {\n      cookies = serialized.cookies;\n    }\n    if (!cookies) {\n      callback(new Error(\"serialized jar has no cookies array\"), void 0);\n      return;\n    }\n    cookies = cookies.slice();\n    const putNext = (err) => {\n      if (err) {\n        callback(err, void 0);\n        return;\n      }\n      if (Array.isArray(cookies)) {\n        if (!cookies.length) {\n          callback(err, this);\n          return;\n        }\n        let cookie;\n        try {\n          cookie = Cookie.fromJSON(cookies.shift());\n        } catch (e) {\n          callback(e instanceof Error ? e : new Error(), void 0);\n          return;\n        }\n        if (cookie === void 0) {\n          putNext(null);\n          return;\n        }\n        this.store.putCookie(cookie, putNext);\n      }\n    };\n    putNext(null);\n  }\n  /**\n   * @internal\n   */\n  _importCookiesSync(serialized) {\n    this.callSync(this._importCookies.bind(this, serialized));\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  clone(newStore, callback) {\n    if (typeof newStore === \"function\") {\n      callback = newStore;\n      newStore = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    this.serialize((err, serialized) => {\n      if (err) {\n        return promiseCallback.reject(err);\n      }\n      return _CookieJar.deserialize(serialized ?? \"\", newStore, cb);\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * @internal\n   */\n  _cloneSync(newStore) {\n    const cloneFn = newStore && typeof newStore !== \"function\" ? this.clone.bind(this, newStore) : this.clone.bind(this);\n    return this.callSync((callback) => {\n      cloneFn(callback);\n    });\n  }\n  /**\n   * Produces a deep clone of this CookieJar. Modifications to the original do\n   * not affect the clone, and vice versa.\n   *\n   * <strong>Note</strong>: Only works if both the configured Store and destination\n   * Store are synchronous.\n   *\n   * @remarks\n   * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n   *\n   * - Transferring between store types is supported so long as the source\n   *     implements `.getAllCookies()` and the destination implements `.putCookie()`.\n   *\n   * @param newStore - The target {@link Store} to clone cookies into.\n   */\n  cloneSync(newStore) {\n    if (!newStore) {\n      return this._cloneSync();\n    }\n    if (!newStore.synchronous) {\n      throw new Error(\n        \"CookieJar clone destination store is not synchronous; use async API instead.\"\n      );\n    }\n    return this._cloneSync(newStore);\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  removeAllCookies(callback) {\n    const promiseCallback = createPromiseCallback(callback);\n    const cb = promiseCallback.callback;\n    const store = this.store;\n    if (typeof store.removeAllCookies === \"function\" && store.removeAllCookies !== Store.prototype.removeAllCookies) {\n      store.removeAllCookies(cb);\n      return promiseCallback.promise;\n    }\n    store.getAllCookies((err, cookies) => {\n      if (err) {\n        cb(err);\n        return;\n      }\n      if (!cookies) {\n        cookies = [];\n      }\n      if (cookies.length === 0) {\n        cb(null, void 0);\n        return;\n      }\n      let completedCount = 0;\n      const removeErrors = [];\n      const removeCookieCb = function removeCookieCb2(removeErr) {\n        if (removeErr) {\n          removeErrors.push(removeErr);\n        }\n        completedCount++;\n        if (completedCount === cookies.length) {\n          if (removeErrors[0]) cb(removeErrors[0]);\n          else cb(null, void 0);\n          return;\n        }\n      };\n      cookies.forEach((cookie) => {\n        store.removeCookie(\n          cookie.domain,\n          cookie.path,\n          cookie.key,\n          removeCookieCb\n        );\n      });\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * Removes all cookies from the CookieJar.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @remarks\n   * - This is a new backwards-compatible feature of tough-cookie version 2.5,\n   *     so not all Stores will implement it efficiently. For Stores that do not\n   *     implement `removeAllCookies`, the fallback is to call `removeCookie` after\n   *     `getAllCookies`.\n   *\n   * - If `getAllCookies` fails or isn't implemented in the Store, an error is returned.\n   *\n   * - If one or more of the `removeCookie` calls fail, only the first error is returned.\n   */\n  removeAllCookiesSync() {\n    this.callSync((callback) => {\n      this.removeAllCookies(callback);\n    });\n  }\n  /**\n   * @internal No doc because this is the overload implementation\n   */\n  static deserialize(strOrObj, store, callback) {\n    if (typeof store === \"function\") {\n      callback = store;\n      store = void 0;\n    }\n    const promiseCallback = createPromiseCallback(callback);\n    let serialized;\n    if (typeof strOrObj === \"string\") {\n      try {\n        serialized = JSON.parse(strOrObj);\n      } catch (e) {\n        return promiseCallback.reject(e instanceof Error ? e : new Error());\n      }\n    } else {\n      serialized = strOrObj;\n    }\n    const readSerializedProperty = (property) => {\n      return serialized && typeof serialized === \"object\" && inOperator(property, serialized) ? serialized[property] : void 0;\n    };\n    const readSerializedBoolean = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"boolean\" ? value : void 0;\n    };\n    const readSerializedString = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"string\" ? value : void 0;\n    };\n    const jar = new _CookieJar(store, {\n      rejectPublicSuffixes: readSerializedBoolean(\"rejectPublicSuffixes\"),\n      looseMode: readSerializedBoolean(\"enableLooseMode\"),\n      allowSpecialUseDomain: readSerializedBoolean(\"allowSpecialUseDomain\"),\n      prefixSecurity: getNormalizedPrefixSecurity(\n        readSerializedString(\"prefixSecurity\") ?? \"silent\"\n      )\n    });\n    jar._importCookies(serialized, (err) => {\n      if (err) {\n        promiseCallback.callback(err);\n        return;\n      }\n      promiseCallback.callback(null, jar);\n    });\n    return promiseCallback.promise;\n  }\n  /**\n   * A new CookieJar is created and the serialized {@link Cookie} values are added to\n   * the underlying store. Each {@link Cookie} is added via `store.putCookie(...)` in\n   * the order in which they appear in the serialization.\n   *\n   * <strong>Note</strong>: Only works if the configured Store is also synchronous.\n   *\n   * @remarks\n   * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n   *\n   * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.\n   *\n   * @param strOrObj - A JSON string or object representing the deserialized cookies.\n   * @param store - The underlying store to persist the deserialized cookies into.\n   */\n  static deserializeSync(strOrObj, store) {\n    const serialized = typeof strOrObj === \"string\" ? JSON.parse(strOrObj) : strOrObj;\n    const readSerializedProperty = (property) => {\n      return serialized && typeof serialized === \"object\" && inOperator(property, serialized) ? serialized[property] : void 0;\n    };\n    const readSerializedBoolean = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"boolean\" ? value : void 0;\n    };\n    const readSerializedString = (property) => {\n      const value = readSerializedProperty(property);\n      return typeof value === \"string\" ? value : void 0;\n    };\n    const jar = new _CookieJar(store, {\n      rejectPublicSuffixes: readSerializedBoolean(\"rejectPublicSuffixes\"),\n      looseMode: readSerializedBoolean(\"enableLooseMode\"),\n      allowSpecialUseDomain: readSerializedBoolean(\"allowSpecialUseDomain\"),\n      prefixSecurity: getNormalizedPrefixSecurity(\n        readSerializedString(\"prefixSecurity\") ?? \"silent\"\n      )\n    });\n    if (!jar.store.synchronous) {\n      throw new Error(\n        \"CookieJar store is not synchronous; use async API instead.\"\n      );\n    }\n    jar._importCookiesSync(serialized);\n    return jar;\n  }\n  /**\n   * Alias of {@link CookieJar.deserializeSync}.\n   *\n   * @remarks\n   * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.\n   *\n   * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.\n   *\n   * @param jsonString - A JSON string or object representing the deserialized cookies.\n   * @param store - The underlying store to persist the deserialized cookies into.\n   */\n  static fromJSON(jsonString, store) {\n    return _CookieJar.deserializeSync(jsonString, store);\n  }\n};\n\n// lib/cookie/permutePath.ts\nfunction permutePath(path) {\n  if (path === \"/\") {\n    return [\"/\"];\n  }\n  const permutations = [path];\n  while (path.length > 1) {\n    const lindex = path.lastIndexOf(\"/\");\n    if (lindex === 0) {\n      break;\n    }\n    path = path.slice(0, lindex);\n    permutations.push(path);\n  }\n  permutations.push(\"/\");\n  return permutations;\n}\n\n// lib/cookie/index.ts\nfunction parse2(str, options) {\n  return Cookie.parse(str, options);\n}\nfunction fromJSON2(str) {\n  return Cookie.fromJSON(str);\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  Cookie,\n  CookieJar,\n  MemoryCookieStore,\n  ParameterError,\n  PrefixSecurityEnum,\n  Store,\n  canonicalDomain,\n  cookieCompare,\n  defaultPath,\n  domainMatch,\n  formatDate,\n  fromJSON,\n  getPublicSuffix,\n  parse,\n  parseDate,\n  pathMatch,\n  permuteDomain,\n  permutePath,\n  version\n});\n/*!\n * Copyright (c) 2015-2020, Salesforce.com, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of Salesforce.com nor the names of its contributors may\n * be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n//# sourceMappingURL=index.cjs.map","const { Buffer } = globalThis\nconst haveNativeBuffer = Buffer && !Buffer.TYPED_ARRAY_SUPPORT\nexport const nativeBuffer = haveNativeBuffer ? Buffer : null\nexport const isHermes = /* @__PURE__ */ (() => !!globalThis.HermesInternal)()\nexport const isDeno = /* @__PURE__ */ (() => !!globalThis.Deno)()\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(Uint16Array.of(258).buffer)[0] === 2)()\n\n// We consider Node.js TextDecoder/TextEncoder native\n// Still needed in platform.native.js as this is re-exported to platform.js\nlet isNative = (x) => x && (haveNativeBuffer || `${x}`.includes('[native code]'))\nif (!haveNativeBuffer && isNative(() => {})) isNative = () => false // e.g. XS, we don't want false positives\n\nexport const nativeEncoder = /* @__PURE__ */ (() =>\n  isNative(globalThis.TextEncoder) ? new TextEncoder() : null)()\nexport const nativeDecoder = /* @__PURE__ */ (() =>\n  isNative(globalThis.TextDecoder) ? new TextDecoder('utf-8', { ignoreBOM: true }) : null)()\n\n// Actually windows-1252, compatible with ascii and latin1 decoding\n// Beware that on non-latin1, i.e. on windows-1252, this is broken in ~all Node.js versions released\n// in 2025 due to a regression, so we call it Latin1 as it's usable only for that\nexport const nativeDecoderLatin1 = /* @__PURE__ */ (() => {\n  // Not all barebone engines with TextDecoder support something except utf-8, detect\n  if (nativeDecoder) {\n    try {\n      return new TextDecoder('latin1', { ignoreBOM: true })\n    } catch {}\n  }\n\n  return null\n})()\n\nexport function decodePartAddition(a, start, end, m) {\n  let o = ''\n  let i = start\n  for (const last3 = end - 3; i < last3; i += 4) {\n    const x0 = a[i]\n    const x1 = a[i + 1]\n    const x2 = a[i + 2]\n    const x3 = a[i + 3]\n    o += m[x0]\n    o += m[x1]\n    o += m[x2]\n    o += m[x3]\n  }\n\n  while (i < end) o += m[a[i++]]\n  return o\n}\n\n// Decoding with templates is faster on Hermes\nexport function decodePartTemplates(a, start, end, m) {\n  let o = ''\n  let i = start\n  for (const last15 = end - 15; i < last15; i += 16) {\n    const x0 = a[i]\n    const x1 = a[i + 1]\n    const x2 = a[i + 2]\n    const x3 = a[i + 3]\n    const x4 = a[i + 4]\n    const x5 = a[i + 5]\n    const x6 = a[i + 6]\n    const x7 = a[i + 7]\n    const x8 = a[i + 8]\n    const x9 = a[i + 9]\n    const x10 = a[i + 10]\n    const x11 = a[i + 11]\n    const x12 = a[i + 12]\n    const x13 = a[i + 13]\n    const x14 = a[i + 14]\n    const x15 = a[i + 15]\n    o += `${m[x0]}${m[x1]}${m[x2]}${m[x3]}${m[x4]}${m[x5]}${m[x6]}${m[x7]}${m[x8]}${m[x9]}${m[x10]}${m[x11]}${m[x12]}${m[x13]}${m[x14]}${m[x15]}`\n  }\n\n  while (i < end) o += m[a[i++]]\n  return o\n}\n\nconst decodePart = isHermes ? decodePartTemplates : decodePartAddition\nexport function decode2string(arr, start, end, m) {\n  if (end - start > 30_000) {\n    // Limit concatenation to avoid excessive GC\n    // Thresholds checked on Hermes for toHex\n    const concat = []\n    for (let i = start; i < end; ) {\n      const step = i + 500\n      const iNext = step > end ? end : step\n      concat.push(decodePart(arr, i, iNext, m))\n      i = iNext\n    }\n\n    const res = concat.join('')\n    concat.length = 0\n    return res\n  }\n\n  return decodePart(arr, start, end, m)\n}\n\n/* eslint-disable @exodus/mutable/no-param-reassign-prop-only */\n\nfunction encodeCharcodesHermes(str, arr) {\n  const length = str.length\n  if (length > 64) {\n    const at = str.charCodeAt.bind(str) // faster on strings from ~64 chars on Hermes, but can be 10x slower on e.g. JSC\n    for (let i = 0; i < length; i++) arr[i] = at(i)\n  } else {\n    for (let i = 0; i < length; i++) arr[i] = str.charCodeAt(i)\n  }\n\n  return arr\n}\n\nexport function encodeCharcodesPure(str, arr) {\n  const length = str.length\n  // Can be optimized with unrolling, but this is not used on non-Hermes atm\n  for (let i = 0; i < length; i++) arr[i] = str.charCodeAt(i)\n  return arr\n}\n\n/* eslint-enable @exodus/mutable/no-param-reassign-prop-only */\n\nexport const encodeCharcodes = isHermes ? encodeCharcodesHermes : encodeCharcodesPure\n","// platform.native actually hosts Node.js / Deno detection too\nexport * from './platform.native.js'\n","export * from './platform.js'\n\nconst Buffer = /* @__PURE__ */ (() => globalThis.Buffer)()\n\nexport function assert(condition, msg) {\n  if (!condition) throw new Error(msg)\n}\n\nexport function assertU8(arg) {\n  if (!(arg instanceof Uint8Array)) throw new TypeError('Expected an Uint8Array')\n}\n\n// On arrays in heap (<= 64) it's cheaper to copy into a pooled buffer than lazy-create the ArrayBuffer storage\nexport const toBuf = (x) =>\n  x.byteLength <= 64 && x.BYTES_PER_ELEMENT === 1\n    ? Buffer.from(x)\n    : Buffer.from(x.buffer, x.byteOffset, x.byteLength)\n\nexport const E_STRING = 'Input is not a string'\nexport const E_STRICT_UNICODE = 'Input is not well-formed Unicode'\n","import {\n  nativeEncoder,\n  nativeDecoder,\n  nativeDecoderLatin1,\n  nativeBuffer,\n  encodeCharcodes,\n  isHermes,\n  isDeno,\n  isLE,\n} from './platform.js'\n\nconst atob = /* @__PURE__ */ (() => globalThis.atob)()\nconst web64 = /* @__PURE__ */ (() => Uint8Array.prototype.toBase64)()\n\n// See http://stackoverflow.com/a/22747272/680742, which says that lowest limit is in Chrome, with 0xffff args\n// On Hermes, actual max is 0x20_000 minus current stack depth, 1/16 of that should be safe\nconst maxFunctionArgs = 0x20_00\n\n// toBase64+atob path is faster on everything where fromBase64 is fast\nconst useLatin1atob = web64 && atob\n\nexport function asciiPrefix(arr) {\n  let p = 0 // verified ascii bytes\n  const length = arr.length\n  // Threshold tested on Hermes (worse on <=48, better on >=52)\n  // Also on v8 arrs of size <=64 might be on heap and using Uint32Array on them is unoptimal\n  if (length > 64) {\n    // Speedup with u32\n    const u32start = (4 - (arr.byteOffset & 3)) % 4 // offset start by this many bytes for alignment\n    for (; p < u32start; p++) if (arr[p] >= 0x80) return p\n    const u32length = ((arr.byteLength - u32start) / 4) | 0\n    const u32 = new Uint32Array(arr.buffer, arr.byteOffset + u32start, u32length)\n    let i = 0\n    for (const last3 = u32length - 3; ; p += 16, i += 4) {\n      if (i >= last3) break // loop is fast enough for moving this here to be _very_ useful, likely due to array access checks\n      const a = u32[i]\n      const b = u32[i + 1]\n      const c = u32[i + 2]\n      const d = u32[i + 3]\n      // \"(a | b | c | d) & mask\" is slower on Hermes though faster on v8\n      if (a & 0x80_80_80_80 || b & 0x80_80_80_80 || c & 0x80_80_80_80 || d & 0x80_80_80_80) break\n    }\n\n    for (; i < u32length; p += 4, i++) if (u32[i] & 0x80_80_80_80) break\n  }\n\n  for (; p < length; p++) if (arr[p] >= 0x80) return p\n  return length\n}\n\n// Capable of decoding Uint16Array to UTF-16 as well as Uint8Array to Latin-1\nexport function decodeLatin1(arr, start = 0, stop = arr.length) {\n  start |= 0\n  stop |= 0\n  const total = stop - start\n  if (total === 0) return ''\n\n  if (\n    useLatin1atob &&\n    total >= 256 &&\n    total < 1e8 &&\n    arr.toBase64 === web64 &&\n    arr.BYTES_PER_ELEMENT === 1\n  ) {\n    const sliced = start === 0 && stop === arr.length ? arr : arr.subarray(start, stop)\n    return atob(sliced.toBase64())\n  }\n\n  if (total > maxFunctionArgs) {\n    let prefix = ''\n    for (let i = start; i < stop; ) {\n      const i1 = Math.min(stop, i + maxFunctionArgs)\n      prefix += String.fromCharCode.apply(String, arr.subarray(i, i1))\n      i = i1\n    }\n\n    return prefix\n  }\n\n  const sliced = start === 0 && stop === arr.length ? arr : arr.subarray(start, stop)\n  return String.fromCharCode.apply(String, sliced)\n}\n\n// Unchecked for well-formedness, raw. Expects Uint16Array input\nexport const decodeUCS2 =\n  nativeBuffer && isLE && !isDeno\n    ? (u16, stop = u16.length) => {\n        // TODO: fast path for BE, perhaps faster path for Deno. Note that decoder replaces, this function doesn't\n        if (stop > 32) return nativeBuffer.from(u16.buffer, u16.byteOffset, stop * 2).ucs2Slice() // from 64 bytes, below are in heap\n        return decodeLatin1(u16, 0, stop)\n      }\n    : (u16, stop = u16.length) => decodeLatin1(u16, 0, stop)\n\n// Does not check input, uses best available method\n// Building an array for this is only faster than proper string concatenation when TextDecoder or native Buffer are available\nexport const decodeAscii = nativeBuffer\n  ? (a) =>\n      // Buffer is faster on Node.js (but only for long enough data), if we know that output is ascii\n      a.byteLength >= 0x3_00 && !isDeno\n        ? nativeBuffer.from(a.buffer, a.byteOffset, a.byteLength).latin1Slice(0, a.byteLength) // .latin1Slice is faster than .asciiSlice\n        : nativeDecoder.decode(a) // On Node.js, utf8 decoder is faster than latin1\n  : nativeDecoderLatin1\n    ? (a) => nativeDecoderLatin1.decode(a) // On browsers (specifically WebKit), latin1 decoder is faster than utf8\n    : (a) =>\n        decodeLatin1(\n          a instanceof Uint8Array ? a : new Uint8Array(a.buffer, a.byteOffset, a.byteLength)\n        )\n\n/* eslint-disable @exodus/mutable/no-param-reassign-prop-only */\n\nexport function encodeAsciiPrefix(x, s) {\n  let i = 0\n  for (const len3 = s.length - 3; i < len3; i += 4) {\n    const x0 = s.charCodeAt(i), x1 = s.charCodeAt(i + 1), x2 = s.charCodeAt(i + 2), x3 = s.charCodeAt(i + 3) // prettier-ignore\n    if ((x0 | x1 | x2 | x3) >= 128) break\n    x[i] = x0\n    x[i + 1] = x1\n    x[i + 2] = x2\n    x[i + 3] = x3\n  }\n\n  return i\n}\n\n/* eslint-enable @exodus/mutable/no-param-reassign-prop-only */\n\n// Warning: can be used only on checked strings, converts strings to 8-bit\nexport const encodeLatin1 = (str) => encodeCharcodes(str, new Uint8Array(str.length))\n\n// Expects nativeEncoder to be present\nconst useEncodeInto = /* @__PURE__ */ (() => isHermes && nativeEncoder?.encodeInto)()\nexport const encodeAscii = useEncodeInto\n  ? (str, ERR) => {\n      // Much faster in Hermes\n      const codes = new Uint8Array(str.length + 4) // overshoot by a full utf8 char\n      const info = nativeEncoder.encodeInto(str, codes)\n      if (info.read !== str.length || info.written !== str.length) throw new SyntaxError(ERR) // non-ascii\n      return codes.subarray(0, str.length)\n    }\n  : nativeBuffer\n    ? (str, ERR) => {\n        // TextEncoder is slow on Node.js 24 / 25 (was ok on 22)\n        const codes = nativeBuffer.from(str, 'utf8') // ascii/latin1 coerces, we need to check\n        if (codes.length !== str.length) throw new SyntaxError(ERR) // non-ascii\n        return new Uint8Array(codes.buffer, codes.byteOffset, codes.byteLength)\n      }\n    : (str, ERR) => {\n        const codes = nativeEncoder.encode(str)\n        if (codes.length !== str.length) throw new SyntaxError(ERR) // non-ascii\n        return codes\n      }\n","import { decodeUCS2 } from './latin1.js'\nimport { assertU8, E_STRING, E_STRICT_UNICODE } from './_utils.js'\nimport { nativeDecoder, isLE, encodeCharcodes } from './platform.js'\n\nexport const E_STRICT = 'Input is not well-formed utf16'\nconst isWellFormedStr = /* @__PURE__ */ (() => String.prototype.isWellFormed)()\nconst toWellFormedStr = /* @__PURE__ */ (() => String.prototype.toWellFormed)()\n\nconst replacementCodepoint = 0xff_fd\nconst replacementCodepointSwapped = 0xfd_ff\n\nconst to16 = (a) => new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2) // Requires checked length and alignment!\n\nexport function encodeApi(str, loose, format) {\n  if (typeof str !== 'string') throw new TypeError(E_STRING)\n  if (format !== 'uint16' && format !== 'uint8-le' && format !== 'uint8-be') {\n    throw new TypeError('Unknown format')\n  }\n\n  // On v8 and SpiderMonkey, check via isWellFormed is faster than js\n  // On JSC, check during loop is faster than isWellFormed\n  // If isWellFormed is available, we skip check during decoding and recheck after\n  // If isWellFormed is unavailable, we check in js during decoding\n  if (!loose && isWellFormedStr && !isWellFormedStr.call(str)) throw new TypeError(E_STRICT_UNICODE)\n  const shouldSwap = (isLE && format === 'uint8-be') || (!isLE && format === 'uint8-le')\n  const u16 = encode(str, loose, !loose && isWellFormedStr, shouldSwap)\n\n  // Bytes are already swapped and format is already checked, we need to just cast the view\n  return format === 'uint16' ? u16 : new Uint8Array(u16.buffer, u16.byteOffset, u16.byteLength)\n}\n\nconst fatalLE = nativeDecoder ? new TextDecoder('utf-16le', { ignoreBOM: true, fatal: true }) : null\nconst looseLE = nativeDecoder ? new TextDecoder('utf-16le', { ignoreBOM: true }) : null\nconst fatalBE = nativeDecoder ? new TextDecoder('utf-16be', { ignoreBOM: true, fatal: true }) : null\nconst looseBE = nativeDecoder ? new TextDecoder('utf-16be', { ignoreBOM: true }) : null\n\nexport function decodeApiDecoders(input, loose, format) {\n  if (format === 'uint16') {\n    if (!(input instanceof Uint16Array)) throw new TypeError('Expected an Uint16Array')\n  } else if (format === 'uint8-le' || format === 'uint8-be') {\n    assertU8(input)\n    if (input.byteLength % 2 !== 0) throw new TypeError('Expected even number of bytes')\n  } else {\n    throw new TypeError('Unknown format')\n  }\n\n  const le = format === 'uint8-le' || (format === 'uint16' && isLE)\n  return (le ? (loose ? looseLE : fatalLE) : loose ? looseBE : fatalBE).decode(input)\n}\n\nexport function decodeApiJS(input, loose, format) {\n  let u16\n  switch (format) {\n    case 'uint16':\n      if (!(input instanceof Uint16Array)) throw new TypeError('Expected an Uint16Array')\n      u16 = input\n      break\n    case 'uint8-le':\n      assertU8(input)\n      if (input.byteLength % 2 !== 0) throw new TypeError('Expected even number of bytes')\n      u16 = to16input(input, true)\n      break\n    case 'uint8-be':\n      assertU8(input)\n      if (input.byteLength % 2 !== 0) throw new TypeError('Expected even number of bytes')\n      u16 = to16input(input, false)\n      break\n    default:\n      throw new TypeError('Unknown format')\n  }\n\n  const str = decode(u16, loose, (!loose && isWellFormedStr) || (loose && toWellFormedStr))\n  if (!loose && isWellFormedStr && !isWellFormedStr.call(str)) throw new TypeError(E_STRICT)\n  if (loose && toWellFormedStr) return toWellFormedStr.call(str)\n\n  return str\n}\n\nexport function to16input(u8, le) {\n  // Assume even number of bytes\n  if (le === isLE) return to16(u8.byteOffset % 2 === 0 ? u8 : Uint8Array.from(u8))\n  return to16(swap16(Uint8Array.from(u8)))\n}\n\nexport const decode = (u16, loose = false, checked = false) => {\n  if (checked || isWellFormed(u16)) return decodeUCS2(u16)\n  if (!loose) throw new TypeError(E_STRICT)\n  return decodeUCS2(toWellFormed(Uint16Array.from(u16))) // cloned for replacement\n}\n\nexport function encode(str, loose = false, checked = false, swapped = false) {\n  const arr = new Uint16Array(str.length)\n  if (checked) return swapped ? encodeCheckedSwapped(str, arr) : encodeChecked(str, arr)\n  return swapped ? encodeUncheckedSwapped(str, arr, loose) : encodeUnchecked(str, arr, loose)\n}\n\n/* eslint-disable @exodus/mutable/no-param-reassign-prop-only */\n\n// Assumes checked length % 2 === 0, otherwise does not swap tail\nfunction swap16(u8) {\n  let i = 0\n  for (const last3 = u8.length - 3; i < last3; i += 4) {\n    const x0 = u8[i]\n    const x1 = u8[i + 1]\n    const x2 = u8[i + 2]\n    const x3 = u8[i + 3]\n    u8[i] = x1\n    u8[i + 1] = x0\n    u8[i + 2] = x3\n    u8[i + 3] = x2\n  }\n\n  for (const last = u8.length - 1; i < last; i += 2) {\n    const x0 = u8[i]\n    const x1 = u8[i + 1]\n    u8[i] = x1\n    u8[i + 1] = x0\n  }\n\n  return u8\n}\n\n// Splitting paths into small functions helps (at least on SpiderMonkey)\n\nconst encodeChecked = (str, arr) => encodeCharcodes(str, arr) // Same as encodeLatin1, but with Uint16Array\n\nfunction encodeCheckedSwapped(str, arr) {\n  // TODO: faster path for Hermes? See encodeCharcodes\n  const length = str.length\n  for (let i = 0; i < length; i++) {\n    const x = str.charCodeAt(i)\n    arr[i] = ((x & 0xff) << 8) | (x >> 8)\n  }\n\n  return arr\n}\n\n// lead: d800 - dbff, trail: dc00 - dfff\n\nfunction encodeUnchecked(str, arr, loose = false) {\n  // TODO: faster path for Hermes? See encodeCharcodes\n  const length = str.length\n  for (let i = 0; i < length; i++) {\n    const code = str.charCodeAt(i)\n    arr[i] = code\n    if (code >= 0xd8_00 && code < 0xe0_00) {\n      // An unexpected trail or a lead at the very end of input\n      if (code > 0xdb_ff || i + 1 >= length) {\n        if (!loose) throw new TypeError(E_STRICT_UNICODE)\n        arr[i] = replacementCodepoint\n      } else {\n        const next = str.charCodeAt(i + 1) // Process valid pairs immediately\n        if (next < 0xdc_00 || next >= 0xe0_00) {\n          if (!loose) throw new TypeError(E_STRICT_UNICODE)\n          arr[i] = replacementCodepoint\n        } else {\n          i++ // consume next\n          arr[i] = next\n        }\n      }\n    }\n  }\n\n  return arr\n}\n\nfunction encodeUncheckedSwapped(str, arr, loose = false) {\n  // TODO: faster path for Hermes? See encodeCharcodes\n  const length = str.length\n  for (let i = 0; i < length; i++) {\n    const code = str.charCodeAt(i)\n    arr[i] = ((code & 0xff) << 8) | (code >> 8)\n    if (code >= 0xd8_00 && code < 0xe0_00) {\n      // An unexpected trail or a lead at the very end of input\n      if (code > 0xdb_ff || i + 1 >= length) {\n        if (!loose) throw new TypeError(E_STRICT_UNICODE)\n        arr[i] = replacementCodepointSwapped\n      } else {\n        const next = str.charCodeAt(i + 1) // Process valid pairs immediately\n        if (next < 0xdc_00 || next >= 0xe0_00) {\n          if (!loose) throw new TypeError(E_STRICT_UNICODE)\n          arr[i] = replacementCodepointSwapped\n        } else {\n          i++ // consume next\n          arr[i] = ((next & 0xff) << 8) | (next >> 8)\n        }\n      }\n    }\n  }\n\n  return arr\n}\n\n// Only needed on Hermes, everything else has native impl\nexport function toWellFormed(u16) {\n  const length = u16.length\n  for (let i = 0; i < length; i++) {\n    const code = u16[i]\n    if (code >= 0xd8_00 && code < 0xe0_00) {\n      // An unexpected trail or a lead at the very end of input\n      if (code > 0xdb_ff || i + 1 >= length) {\n        u16[i] = replacementCodepoint\n      } else {\n        const next = u16[i + 1] // Process valid pairs immediately\n        if (next < 0xdc_00 || next >= 0xe0_00) {\n          u16[i] = replacementCodepoint\n        } else {\n          i++ // consume next\n        }\n      }\n    }\n  }\n\n  return u16\n}\n\n// Only needed on Hermes, everything else has native impl\nexport function isWellFormed(u16) {\n  const length = u16.length\n  let i = 0\n\n  const m = 0x80_00_80_00\n  const l = 0xd8_00\n  const h = 0xe0_00\n\n  // Speedup with u32, by skipping to the first surrogate\n  // Only implemented for aligned input for now, but almost all input is aligned (pooled Buffer or 0 offset)\n  if (length > 32 && u16.byteOffset % 4 === 0) {\n    const u32length = (u16.byteLength / 4) | 0\n    const u32 = new Uint32Array(u16.buffer, u16.byteOffset, u32length)\n    for (const last3 = u32length - 3; ; i += 4) {\n      if (i >= last3) break // loop is fast enough for moving this here to be _very_ useful, likely due to array access checks\n      const a = u32[i]\n      const b = u32[i + 1]\n      const c = u32[i + 2]\n      const d = u32[i + 3]\n      if (a & m || b & m || c & m || d & m) break // bitwise OR does not make this faster on Hermes\n    }\n\n    for (; i < u32length; i++) if (u32[i] & m) break\n    i *= 2\n  }\n\n  // An extra loop gives ~30-40% speedup e.g. on English text without surrogates but with other symbols above 0x80_00\n  for (const last3 = length - 3; ; i += 4) {\n    if (i >= last3) break\n    const a = u16[i]\n    const b = u16[i + 1]\n    const c = u16[i + 2]\n    const d = u16[i + 3]\n    if ((a >= l && a < h) || (b >= l && b < h) || (c >= l && c < h) || (d >= l && d < h)) break\n  }\n\n  for (; i < length; i++) {\n    const code = u16[i]\n    if (code >= l && code < h) {\n      // An unexpected trail or a lead at the very end of input\n      if (code >= 0xdc_00 || i + 1 >= length) return false\n      i++ // consume next\n      const next = u16[i] // Process valid pairs immediately\n      if (next < 0xdc_00 || next >= h) return false\n    }\n  }\n\n  return true\n}\n","import { assertU8, E_STRING, E_STRICT_UNICODE } from './fallback/_utils.js'\nimport { isDeno, isLE } from './fallback/platform.js'\nimport { E_STRICT, decodeApiDecoders } from './fallback/utf16.js'\n\nif (Buffer.TYPED_ARRAY_SUPPORT) throw new Error('Unexpected Buffer polyfill')\n\nconst { isWellFormed, toWellFormed } = String.prototype\nconst to8 = (a) => new Uint8Array(a.buffer, a.byteOffset, a.byteLength)\n\n// Unlike utf8, operates on Uint16Arrays by default\n\nfunction encode(str, loose = false, format = 'uint16') {\n  if (typeof str !== 'string') throw new TypeError(E_STRING)\n  if (format !== 'uint16' && format !== 'uint8-le' && format !== 'uint8-be') {\n    throw new TypeError('Unknown format')\n  }\n\n  if (loose) {\n    str = toWellFormed.call(str) // Buffer doesn't do this with utf16 encoding\n  } else if (!isWellFormed.call(str)) {\n    throw new TypeError(E_STRICT_UNICODE)\n  }\n\n  const ble = Buffer.from(str, 'utf-16le')\n\n  if (format === 'uint8-le') return to8(ble)\n  if (format === 'uint8-be') return to8(ble.swap16())\n  if (format === 'uint16') {\n    const b = ble.byteOffset % 2 === 0 ? ble : Buffer.from(ble) // it should be already aligned, but just in case\n    if (!isLE) b.swap16()\n    return new Uint16Array(b.buffer, b.byteOffset, b.byteLength / 2)\n  }\n\n  /* c8 ignore next */\n  throw new Error('Unreachable')\n}\n\n// Convert to Buffer view or a swapped Buffer copy\nconst swapped = (x, swap) => {\n  const b = Buffer.from(x.buffer, x.byteOffset, x.byteLength)\n  return swap ? Buffer.from(b).swap16() : b\n}\n\n// We skip TextDecoder on Node.js, as it's is somewhy significantly slower than Buffer for utf16\n// Also, it incorrectly misses replacements with Node.js is built without ICU, we fix that\nfunction decodeNode(input, loose = false, format = 'uint16') {\n  let ble\n  if (format === 'uint16') {\n    if (!(input instanceof Uint16Array)) throw new TypeError('Expected an Uint16Array')\n    ble = swapped(input, !isLE)\n  } else if (format === 'uint8-le' || format === 'uint8-be') {\n    assertU8(input)\n    if (input.byteLength % 2 !== 0) throw new TypeError('Expected even number of bytes')\n    ble = swapped(input, format === 'uint8-be')\n  } else {\n    throw new TypeError('Unknown format')\n  }\n\n  const str = ble.ucs2Slice(0, ble.byteLength)\n  if (loose) return toWellFormed.call(str)\n  if (isWellFormed.call(str)) return str\n  throw new TypeError(E_STRICT)\n}\n\nconst decode = isDeno ? decodeApiDecoders : decodeNode\n\nexport const utf16fromString = (str, format = 'uint16') => encode(str, false, format)\nexport const utf16fromStringLoose = (str, format = 'uint16') => encode(str, true, format)\nexport const utf16toString = (arr, format = 'uint16') => decode(arr, false, format)\nexport const utf16toStringLoose = (arr, format = 'uint16') => decode(arr, true, format)\n","export function assertEmptyRest(rest) {\n  if (Object.keys(rest).length > 0) throw new TypeError('Unexpected extra options')\n}\n\n// eslint-disable-next-line sonarjs/no-nested-template-literals\nconst makeMessage = (name, extra) => `Expected${name ? ` ${name} to be` : ''} an Uint8Array${extra}`\n\nconst TypedArray = Object.getPrototypeOf(Uint8Array)\n\nexport function assertTypedArray(arr) {\n  if (arr instanceof TypedArray) return\n  throw new TypeError('Expected a TypedArray instance')\n}\n\nexport function assertUint8(arr, options) {\n  if (!options) {\n    // fast path\n    if (arr instanceof Uint8Array) return\n    throw new TypeError('Expected an Uint8Array')\n  }\n\n  const { name, length, ...rest } = options\n  assertEmptyRest(rest)\n  if (arr instanceof Uint8Array && (length === undefined || arr.length === length)) return\n  throw new TypeError(makeMessage(name, length === undefined ? '' : ` of size ${Number(length)}`))\n}\n","import { assertTypedArray } from './assert.js'\n\nconst Buffer = globalThis.Buffer // Buffer is optional\n\nexport function typedView(arr, format) {\n  assertTypedArray(arr)\n  switch (format) {\n    case 'uint8':\n      if (arr.constructor === Uint8Array) return arr // fast path\n      return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength)\n    case 'buffer':\n      if (arr.constructor === Buffer && Buffer.isBuffer(arr)) return arr\n      return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength)\n  }\n\n  throw new TypeError('Unexpected format')\n}\n","import { E_STRICT_UNICODE } from './_utils.js'\nimport { isHermes } from './platform.js'\nimport { asciiPrefix, decodeLatin1, encodeAsciiPrefix } from './latin1.js'\n\nexport const E_STRICT = 'Input is not well-formed utf8'\n\nconst replacementPoint = 0xff_fd\nconst shouldUseEscapePath = isHermes // faster only on Hermes, js path beats it on normal engines\nconst { decodeURIComponent, escape } = globalThis\n\nexport function decodeFast(arr, loose) {\n  // Fast path for ASCII prefix, this is faster than all alternatives below\n  const prefix = decodeLatin1(arr, 0, asciiPrefix(arr)) // No native decoder to use, so decodeAscii is useless here\n  if (prefix.length === arr.length) return prefix\n\n  // This codepath gives a ~3x perf boost on Hermes\n  if (shouldUseEscapePath && escape && decodeURIComponent) {\n    const o = escape(decodeLatin1(arr, prefix.length, arr.length))\n    try {\n      return prefix + decodeURIComponent(o) // Latin1 to utf8\n    } catch {\n      if (!loose) throw new TypeError(E_STRICT)\n      // Ok, we have to use manual implementation for loose decoder\n    }\n  }\n\n  return prefix + decode(arr, loose, prefix.length)\n}\n\n// https://encoding.spec.whatwg.org/#utf-8-decoder\n// We are most likely in loose mode, for non-loose escape & decodeURIComponent solved everything\nexport function decode(arr, loose, start = 0) {\n  start |= 0\n  const end = arr.length\n  let out = ''\n  const chunkSize = 0x2_00 // far below MAX_ARGUMENTS_LENGTH in npmjs.com/buffer, we use smaller chunks\n  const tmpSize = Math.min(end - start, chunkSize + 1) // need 1 extra slot for last codepoint, which can be 2 charcodes\n  const tmp = new Array(tmpSize).fill(0)\n  let ti = 0\n\n  for (let i = start; i < end; i++) {\n    if (ti >= chunkSize) {\n      tmp.length = ti // can be larger by 1 if last codepoint is two charcodes\n      out += String.fromCharCode.apply(String, tmp)\n      if (tmp.length <= chunkSize) tmp.push(0) // restore 1 extra slot for last codepoint\n      ti = 0\n    }\n\n    const byte = arr[i]\n    if (byte < 0x80) {\n      tmp[ti++] = byte\n      // ascii fast path is in decodeFast(), this is called only on non-ascii input\n      // so we don't unroll this anymore\n    } else if (byte < 0xc2) {\n      if (!loose) throw new TypeError(E_STRICT)\n      tmp[ti++] = replacementPoint\n    } else if (byte < 0xe0) {\n      // need 1 more\n      if (i + 1 >= end) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        break\n      }\n\n      const byte1 = arr[i + 1]\n      if (byte1 < 0x80 || byte1 > 0xbf) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        continue\n      }\n\n      i++\n      tmp[ti++] = ((byte & 0x1f) << 6) | (byte1 & 0x3f)\n    } else if (byte < 0xf0) {\n      // need 2 more\n      if (i + 1 >= end) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        break\n      }\n\n      const lower = byte === 0xe0 ? 0xa0 : 0x80\n      const upper = byte === 0xed ? 0x9f : 0xbf\n      const byte1 = arr[i + 1]\n      if (byte1 < lower || byte1 > upper) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        continue\n      }\n\n      i++\n      if (i + 1 >= end) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        break\n      }\n\n      const byte2 = arr[i + 1]\n      if (byte2 < 0x80 || byte2 > 0xbf) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        continue\n      }\n\n      i++\n      tmp[ti++] = ((byte & 0xf) << 12) | ((byte1 & 0x3f) << 6) | (byte2 & 0x3f)\n    } else if (byte <= 0xf4) {\n      // need 3 more\n      if (i + 1 >= end) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        break\n      }\n\n      const lower = byte === 0xf0 ? 0x90 : 0x80\n      const upper = byte === 0xf4 ? 0x8f : 0xbf\n      const byte1 = arr[i + 1]\n      if (byte1 < lower || byte1 > upper) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        continue\n      }\n\n      i++\n      if (i + 1 >= end) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        break\n      }\n\n      const byte2 = arr[i + 1]\n      if (byte2 < 0x80 || byte2 > 0xbf) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        continue\n      }\n\n      i++\n      if (i + 1 >= end) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        break\n      }\n\n      const byte3 = arr[i + 1]\n      if (byte3 < 0x80 || byte3 > 0xbf) {\n        if (!loose) throw new TypeError(E_STRICT)\n        tmp[ti++] = replacementPoint\n        continue\n      }\n\n      i++\n      const codePoint =\n        ((byte & 0xf) << 18) | ((byte1 & 0x3f) << 12) | ((byte2 & 0x3f) << 6) | (byte3 & 0x3f)\n      if (codePoint > 0xff_ff) {\n        // split into char codes as String.fromCharCode is faster than String.fromCodePoint\n        const u = codePoint - 0x1_00_00\n        tmp[ti++] = 0xd8_00 + ((u >> 10) & 0x3_ff)\n        tmp[ti++] = 0xdc_00 + (u & 0x3_ff)\n      } else {\n        tmp[ti++] = codePoint\n      }\n      // eslint-disable-next-line sonarjs/no-duplicated-branches\n    } else {\n      if (!loose) throw new TypeError(E_STRICT)\n      tmp[ti++] = replacementPoint\n    }\n  }\n\n  if (ti === 0) return out\n  tmp.length = ti\n  return out + String.fromCharCode.apply(String, tmp)\n}\n\nexport function encode(string, loose) {\n  const length = string.length\n  let small = true\n  let bytes = new Uint8Array(length) // assume ascii\n\n  let i = encodeAsciiPrefix(bytes, string)\n  let p = i\n  for (; i < length; i++) {\n    let code = string.charCodeAt(i)\n    if (code < 0x80) {\n      bytes[p++] = code\n      // Unroll the loop a bit for faster ops\n      while (true) {\n        i++\n        if (i >= length) break\n        code = string.charCodeAt(i)\n        if (code >= 0x80) break\n        bytes[p++] = code\n        i++\n        if (i >= length) break\n        code = string.charCodeAt(i)\n        if (code >= 0x80) break\n        bytes[p++] = code\n        i++\n        if (i >= length) break\n        code = string.charCodeAt(i)\n        if (code >= 0x80) break\n        bytes[p++] = code\n        i++\n        if (i >= length) break\n        code = string.charCodeAt(i)\n        if (code >= 0x80) break\n        bytes[p++] = code\n      }\n\n      if (i >= length) break\n      // now, code is present and >= 0x80\n    }\n\n    if (small) {\n      // TODO: use resizable array buffers? will have to return a non-resizeable one\n      if (p !== i) /* c8 ignore next */ throw new Error('Unreachable') // Here, p === i (only when small is still true)\n      const bytesNew = new Uint8Array(p + (length - i) * 3) // maximium can be 3x of the string length in charcodes\n      bytesNew.set(bytes)\n      bytes = bytesNew\n      small = false\n    }\n\n    // surrogate, charcodes = [d800 + a & 3ff, dc00 + b & 3ff]; codePoint = 0x1_00_00 | (a << 10) | b\n    // lead: d800 - dbff\n    // trail: dc00 - dfff\n    if (code >= 0xd8_00 && code < 0xe0_00) {\n      // Can't be a valid trail as we already processed that below\n\n      if (code > 0xdb_ff || i + 1 >= length) {\n        // An unexpected trail or a lead at the very end of input\n        if (!loose) throw new TypeError(E_STRICT_UNICODE)\n        bytes[p++] = 0xef\n        bytes[p++] = 0xbf\n        bytes[p++] = 0xbd\n        continue\n      }\n\n      const next = string.charCodeAt(i + 1) // Process valid pairs immediately\n      if (next >= 0xdc_00 && next < 0xe0_00) {\n        // here, codePoint is always between 0x1_00_00 and 0x11_00_00, we encode as 4 bytes\n        const codePoint = (((code - 0xd8_00) << 10) | (next - 0xdc_00)) + 0x1_00_00\n        bytes[p++] = (codePoint >> 18) | 0xf0\n        bytes[p++] = ((codePoint >> 12) & 0x3f) | 0x80\n        bytes[p++] = ((codePoint >> 6) & 0x3f) | 0x80\n        bytes[p++] = (codePoint & 0x3f) | 0x80\n        i++ // consume next\n      } else {\n        // Next is not a trail, leave next unconsumed but process unmatched lead error\n        if (!loose) throw new TypeError(E_STRICT_UNICODE)\n        bytes[p++] = 0xef\n        bytes[p++] = 0xbf\n        bytes[p++] = 0xbd\n      }\n\n      continue\n    }\n\n    // We are left with a non-pair char code above ascii, it gets encoded to 2 or 3 bytes\n    if (code < 0x8_00) {\n      bytes[p++] = (code >> 6) | 0xc0\n      bytes[p++] = (code & 0x3f) | 0x80\n    } else {\n      bytes[p++] = (code >> 12) | 0xe0\n      bytes[p++] = ((code >> 6) & 0x3f) | 0x80\n      bytes[p++] = (code & 0x3f) | 0x80\n    }\n  }\n\n  return bytes.length === p ? bytes : bytes.slice(0, p)\n}\n","import { typedView } from './array.js'\nimport { assertU8, E_STRING, E_STRICT_UNICODE } from './fallback/_utils.js'\nimport { E_STRICT } from './fallback/utf8.js'\nimport { isAscii } from 'node:buffer'\n\nif (Buffer.TYPED_ARRAY_SUPPORT) throw new Error('Unexpected Buffer polyfill')\n\nlet decoderFatal\nconst decoderLoose = new TextDecoder('utf-8', { ignoreBOM: true })\nconst { isWellFormed } = String.prototype\nconst isDeno = !!globalThis.Deno\n\ntry {\n  decoderFatal = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true })\n} catch {\n  // Without ICU, Node.js doesn't support fatal option for utf-8\n}\n\nfunction encode(str, loose = false) {\n  if (typeof str !== 'string') throw new TypeError(E_STRING)\n  const strLength = str.length\n  if (strLength === 0) return new Uint8Array() // faster than Uint8Array.of\n  let res\n  if (strLength > 0x4_00 && !isDeno) {\n    // Faster for large strings\n    const byteLength = Buffer.byteLength(str)\n    res = Buffer.allocUnsafe(byteLength)\n    const ascii = byteLength === strLength\n    const written = ascii ? res.latin1Write(str) : res.utf8Write(str)\n    if (written !== byteLength) throw new Error('Failed to write all bytes') // safeguard just in case\n    if (ascii || loose) return res // no further checks needed\n  } else {\n    res = Buffer.from(str)\n    if (res.length === strLength || loose) return res\n  }\n\n  if (!isWellFormed.call(str)) throw new TypeError(E_STRICT_UNICODE)\n  return res\n}\n\nfunction decode(arr, loose = false) {\n  assertU8(arr)\n  const byteLength = arr.byteLength\n  if (byteLength === 0) return ''\n  if (byteLength > 0x6_00 && !(isDeno && loose) && isAscii(arr)) {\n    // On non-ascii strings, this loses ~10% * [relative position of the first non-ascii byte] (up to 10% total)\n    // On ascii strings, this wins 1.5x on loose = false and 1.3x on loose = true\n    // Only makes sense for large enough strings\n    const buf = Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength)\n    if (isDeno) return buf.toString() // Deno suffers from .latin1Slice\n    return buf.latin1Slice(0, arr.byteLength) // .latin1Slice is faster than .asciiSlice\n  }\n\n  if (loose) return decoderLoose.decode(arr)\n  if (decoderFatal) return decoderFatal.decode(arr)\n\n  // We are in an env without native fatal decoder support (non-fixed Node.js without ICU)\n  // Well, just recheck against encode if it contains replacement then, this is still faster than js impl\n  const str = decoderLoose.decode(arr)\n  if (str.includes('\\uFFFD') && !Buffer.from(str).equals(arr)) throw new TypeError(E_STRICT)\n  return str\n}\n\nexport const utf8fromString = (str, format = 'uint8') => typedView(encode(str, false), format)\nexport const utf8fromStringLoose = (str, format = 'uint8') => typedView(encode(str, true), format)\nexport const utf8toString = (arr) => decode(arr, false)\nexport const utf8toStringLoose = (arr) => decode(arr, true)\n","// See tests/encoding/fixtures/single-byte/dump.js for generator\n\nconst r = 0xff_fd\n\n/* eslint-disable unicorn/numeric-separators-style, @exodus/export-default/named */\n\n// Common ranges\n\n// prettier-ignore\nconst i2 = [189,148,0,0,63,0,116,64,0,68,0,78,0,78,0,0,63,64,114,117,0,0,123,0,0,128,149,0,149,0,0,132,0,117,0,0,32,0,85,33,0,37,0,47,0,47,0,0,32,33,83,86,0,0,92,0,0,97,118,0,118,0,0,101,474]\n// prettier-ignore\nconst iB = [[58,3424],[4,r],[29,3424],[4,r]]\nconst i9 = [[47], 78, [12], 83, 128, [17], 47, [12], 52, 97]\nconst w1 = [8236, 0, 8088, 0, 8090, 8097, 8090, 8090, 0, 8103]\nconst w2 = [8236, 0, 8088, 271, 8090, 8097, 8090, 8090, 574, 8103]\n// prettier-ignore\nconst w7 = [64,0,157,[4],39,68,109,62,67,0,0,82,75,68,0,175,75,86,105,92,108,144,114,115,0,120,[3],154,104,128,143,0,158,159,0,37,78,31,36,0,0,51,44,37,0,144,44,55,74,61,77,113,83,84,0,89,[3],123,73,97,112,0,127,128]\nconst w8 = [8071, 8071, 8073, 8073, 8077, 8061, 8061]\n// prettier-ignore\nconst k8b = [-22,910,879,879,899,880,880,894,876,893,[8,879],894,[4,878],864,859,884,882,861,877,881,876,873,875,846,815,815,835,816,816,830,812,829,[8,815],830,[4,814],800,795,820,818,797,813,817,812,809,811]\n// prettier-ignore\nconst k8a = [9344,9345,9354,9357,9360,9363,9366,9373,9380,9387,9394,9461,9464,9467,9470,[4,9473],8845,9484,8580,8580,8625,8652,8652,6,8838,20,21,25,88,[3,9392],942]\n\n// prettier-ignore\nconst maps = {\n  ibm866: [[48,912],[3,9441],...[29,62,122,122,109,107,120,101,106,111,109,107,31,34,65,56,39,10,69,102,102,96,89,109,105,98,81,108,102,102,97,97,84,82,75,75,98,96,13,0,123,118,125,128,111].map(x=>x+9266),[16,864],785,864,786,865,787,866,792,871,-72,8480,-67,8479,8218,-89,9378,-95],\n  'koi8-u': [...k8a,944,9391,944,944,[5,9391],996,944,[4,9391],846,848,9390,848,848,[5,9390],979,848,...k8b],\n  'koi8-r': [...k8a,[15,9391],846,[11,9390],...k8b],\n  macintosh: [68,68,69,70,77,81,86,90,88,89,90,88,89,90,91,89,90,90,91,89,90,90,91,92,90,91,92,90,94,92,93,93,8064,15,0,0,3,8061,16,56,6,0,8312,9,-4,8627,24,41,8558,0,8626,8626,-15,0,8524,8538,8535,775,8561,-17,-2,748,40,57,-1,-32,-22,8535,206,8579,8512,-28,-13,8029,-42,-11,-9,8,132,132,8003,8003,8010,8010,8004,8004,33,9459,39,159,8042,8145,8029,8029,64035,64035,8001,-42,7992,7995,8012,-35,-28,-38,-29,-33,[3,-29],-33,-27,-27,63503,-31,-24,-24,-27,60,464,485,-73,[3,479],-68,480,477,456],\n  'x-mac-cyrillic': [[32,912],8064,15,1006,0,3,8061,16,863,6,0,8312,855,934,8627,853,932,8558,0,8626,8626,930,0,987,849,844,923,845,924,845,924,844,923,920,836,-22,8535,206,8579,8512,-28,-13,8029,-42,832,911,831,910,902,8003,8003,8010,8010,8004,8004,33,8007,822,901,821,900,8250,804,883,880,[31,848],8109],\n  'windows-874': [8236,[4],8097,[11],...w8,[9],...iB],\n}\n\n// windows-1250 - windows-1258\n// prettier-ignore\n;[\n  [...w1,214,8110,206,215,239,234,0,...w8,0,8329,199,8095,191,200,224,219,0,550,566,158,0,95,[4],180,[4],204,0,0,553,143,[5],76,165,0,129,544,128,...i2],\n  [898,898,8088,976,8090,8097,8090,8090,8228,8103,895,8110,894,895,893,896,962,...w8,0,8329,959,8095,958,959,957,960,0,877,956,869,0,1003,0,0,857,0,858,[4],856,0,0,852,931,989,[3],921,8285,922,0,924,840,919,920,[64,848]],\n  [...w2,214,8110,198,0,239,0,0,...w8,580,8329,199,8095,183,0,224,217],\n  [8236,0,8088,271,8090,8097,8090,8090,0,8103,0,8110,[5],...w8,0,8329,0,8095,[5],740,740,[7],r,[4],8038,[4],720,[3],[3,720],0,720,0,[20,720],r,[44,720],r],\n  [...w2,214,8110,198,[4],...w8,580,8329,199,8095,183,0,0,217,0,...i9],\n  [...w2,0,8110,[5],...w8,580,8329,0,8095,[8],8198,[5],45,[15],61,[5],[20,1264],[5,1308],[7,r],[27,1264],r,r,7953,7953,r],\n  [8236,1533,8088,271,8090,8097,8090,8090,574,8103,1519,8110,198,1529,1546,1529,1567,...w8,1553,8329,1527,8095,183,8047,8047,1563,0,1387,[8],1556,[15],1377,[4],1376,1537,[22,1376],0,[4,1375],[4,1380],0,1379,0,[4,1378],[5],1373,1373,0,0,[4,1371],0,1370,1370,0,1369,0,1368,0,0,7953,7953,1491],\n  [...w1,0,8110,0,27,569,41,0,...w8,0,8329,0,8095,0,18,573,0,0,r,[3],r,0,0,48,0,172,[4],23,[8],...w7,474],\n  [...w2,0,8110,198,[4],...w8,580,8329,0,8095,183,0,0,217,[35],63,[8],564,[3],64,0,567,0,0,203,[7],210,549,[4],32,[8],533,[3],33,0,561,0,0,172,[7],179,8109],\n].forEach((m, i) => {\n  maps[`windows-${i + 1250}`] = m\n});\n\n// iso-8859-1 - iso-8859-16\n// prettier-ignore\n;[\n  [], // Actual Latin1 / Unicode subset, non-WHATWG, which maps iso-8859-1 to windows-1252\n  [99,566,158,0,152,180,0,0,183,180,185,205,0,207,204,0,84,553,143,0,137,165,528,0,168,165,170,190,544,192,...i2],\n  [133,566,0,0,r,126,0,0,135,180,115,136,0,r,204,0,118,[4],111,0,0,120,165,100,121,0,r,189,[3],r,0,69,66,[9],r,[4],75,0,0,68,[4],143,126,[4],r,0,38,35,[9],r,[4],44,0,0,37,[4],112,95,474],\n  [99,150,179,0,131,149,0,0,183,104,119,186,0,207,0,0,84,553,164,0,116,134,528,0,168,89,104,171,141,192,140,64,[6],103,68,0,78,0,74,0,0,91,64,116,122,99,[5],153,[3],139,140,0,33,[6],72,37,0,47,0,43,0,0,60,33,85,91,68,[5],122,[3],108,109,474],\n  [[12,864],0,[66,864],8230,[12,864],-86,864,864],\n  [[3,r],0,[7,r],1376,0,[13,r],1376,[3,r],1376,r,[26,1376],[5,r],[19,1376],[13,r]],\n  [8055,8055,0,8200,8202,[4],720,[3],r,8038,[4],[3,720],0,[3,720],0,720,0,[20,720],r,[44,720],r],\n  [r,[8],45,[15],61,[4],[32,r],7992,[27,1264],r,r,7953,7953,r],\n  i9, // non-WHATWG, which maps iso-8859-9 to windows-1254\n  [99,112,127,134,131,144,0,147,103,182,187,209,0,188,155,0,84,97,112,119,116,129,0,132,88,167,172,194,8024,173,140,64,[6],103,68,0,78,0,74,[4],116,122,[4],145,0,153,[6],33,[6],72,37,0,47,0,43,[4],85,91,[4],114,0,122,[5],57],\n  iB, // non-WHATWG, which maps iso-8859-11 to windows-874\n  null, // no 12\n  [8060,[3],8057,0,0,48,0,172,[4],23,[4],8040,[3],...w7,7962],\n  [7521,7521,0,102,102,7524,0,7640,0,7640,7520,7750,0,0,201,7534,7534,110,110,7564,7564,0,7583,7625,7582,7625,7589,7735,7623,7623,7586,[16],164,[6],7571,[6],152,[17],133,[6],7540,[6],121],\n  [[3],8200,0,186,0,185,[11],201,[3],198,[3],150,150,186],\n  [99,99,158,8200,8057,186,0,185,0,366,0,205,0,204,204,0,0,90,143,201,8040,0,0,198,84,351,0,150,150,186,189,[3],63,0,65,[10],64,114,[3],123,0,131,152,[4],59,316,[4],32,0,34,[10],33,83,[3],92,0,100,121,[4],28,285],\n].forEach((m, i) => {\n  if (m) maps[`iso-8859-${i + 1}`] = [[33], ...m]\n});\n\nexport default maps\n","import { asciiPrefix, decodeAscii, decodeLatin1 } from './latin1.js'\nimport encodings from './single-byte.encodings.js'\nimport { decode2string, nativeDecoder } from './platform.js'\n\nexport const E_STRICT = 'Input is not well-formed for this encoding'\nconst xUserDefined = 'x-user-defined'\nconst iso8i = 'iso-8859-8-i'\n\nexport const assertEncoding = (encoding) => {\n  if (Object.hasOwn(encodings, encoding) || encoding === xUserDefined || encoding === iso8i) return\n  throw new RangeError('Unsupported encoding')\n}\n\nconst r = 0xff_fd\n\nexport function getEncoding(encoding) {\n  assertEncoding(encoding)\n  if (encoding === xUserDefined) return Array.from({ length: 128 }, (_, i) => 0xf7_80 + i)\n  if (encoding === iso8i) encoding = 'iso-8859-8'\n  const enc = encodings[encoding]\n  const deltas = enc.flatMap((x) => (Array.isArray(x) ? new Array(x[0]).fill(x[1] ?? 0) : x))\n  return deltas.map((x, i) => (x === r ? x : x + 128 + i))\n}\n\nconst mappers = new Map()\nconst decoders = new Map()\nconst encmaps = new Map()\n\n// Used only on Node.js, no reason to optimize for anything else\n// E.g. avoiding .from and filling zero-initialized arr manually is faster on Hermes, but we avoid this codepath on Hermes completely\nexport function encodingMapper(encoding) {\n  const cached = mappers.get(encoding)\n  if (cached) return cached\n\n  const codes = getEncoding(encoding)\n  const incomplete = codes.includes(r)\n  let map\n  const mapper = (arr, start = 0) => {\n    if (!map) {\n      map = new Uint16Array(256).map((_, i) => i) // Unicode subset\n      map.set(Uint16Array.from(codes), 128)\n    }\n\n    const o = Uint16Array.from(start === 0 ? arr : arr.subarray(start)) // copy to modify in-place, also those are 16-bit now\n    let i = 0\n    for (const end7 = o.length - 7; i < end7; i += 8) {\n      o[i] = map[o[i]]\n      o[i + 1] = map[o[i + 1]]\n      o[i + 2] = map[o[i + 2]]\n      o[i + 3] = map[o[i + 3]]\n      o[i + 4] = map[o[i + 4]]\n      o[i + 5] = map[o[i + 5]]\n      o[i + 6] = map[o[i + 6]]\n      o[i + 7] = map[o[i + 7]]\n    }\n\n    for (const end = o.length; i < end; i++) o[i] = map[o[i]]\n    return o\n  }\n\n  mappers.set(encoding, { mapper, incomplete })\n  return { mapper, incomplete }\n}\n\nexport function encodingDecoder(encoding) {\n  const cached = decoders.get(encoding)\n  if (cached) return cached\n  const isLatin1 = encoding === 'iso-8859-1'\n  if (isLatin1 && !nativeDecoder) return (arr, loose = false) => decodeLatin1(arr) // native decoder is faster for ascii below\n\n  let strings\n  const codes = getEncoding(encoding)\n  const incomplete = codes.includes(r)\n  const decoder = (arr, loose = false) => {\n    if (!strings) {\n      const allCodes = Array.from({ length: 128 }, (_, i) => i).concat(codes)\n      while (allCodes.length < 256) allCodes.push(allCodes.length)\n      strings = allCodes.map((c) => String.fromCharCode(c))\n    }\n\n    const prefixLen = asciiPrefix(arr)\n    if (prefixLen === arr.length) return decodeAscii(arr)\n    if (isLatin1) return decodeLatin1(arr) // TODO: check if decodeAscii with subarray is faster for small prefixes too\n    const prefix = decodeLatin1(arr, 0, prefixLen) // TODO: check if decodeAscii with subarray is faster for small prefixes too\n    const suffix = decode2string(arr, prefix.length, arr.length, strings)\n    if (!loose && incomplete && suffix.includes('\\uFFFD')) throw new TypeError(E_STRICT)\n    return prefix + suffix\n  }\n\n  decoders.set(encoding, decoder)\n  return decoder\n}\n\nexport function encodeMap(encoding) {\n  const cached = encmaps.get(encoding)\n  if (cached) return cached\n\n  const codes = getEncoding(encoding)\n  let max = 128\n  while (codes.length < 128) codes.push(128 + codes.length)\n  for (const code of codes) if (code > max && code !== r) max = code\n  const map = new Uint8Array(max + 1) // < 10 KiB for all except macintosh, 63 KiB for macintosh\n  for (let i = 0; i < 128; i++) {\n    map[i] = i\n    if (codes[i] !== r) map[codes[i]] = 128 + i\n  }\n\n  encmaps.set(encoding, map)\n  return map\n}\n","import { isAscii } from 'node:buffer'\nimport { assertU8, toBuf, E_STRING } from './fallback/_utils.js'\nimport { isDeno, isLE } from './fallback/platform.js'\nimport { asciiPrefix } from './fallback/latin1.js'\nimport { encodingMapper, encodingDecoder, encodeMap, E_STRICT } from './fallback/single-byte.js'\n\nfunction latin1Prefix(arr, start) {\n  let p = start | 0\n  const length = arr.length\n  for (const len3 = length - 3; p < len3; p += 4) {\n    if ((arr[p] & 0xe0) === 0x80) return p\n    if ((arr[p + 1] & 0xe0) === 0x80) return p + 1\n    if ((arr[p + 2] & 0xe0) === 0x80) return p + 2\n    if ((arr[p + 3] & 0xe0) === 0x80) return p + 3\n  }\n\n  for (; p < length; p++) {\n    if ((arr[p] & 0xe0) === 0x80) return p\n  }\n\n  return length\n}\n\nexport function createSinglebyteDecoder(encoding, loose = false) {\n  if (typeof loose !== 'boolean') throw new TypeError('loose option should be boolean')\n  if (isDeno) {\n    const jsDecoder = encodingDecoder(encoding) // asserts\n    return (arr) => {\n      assertU8(arr)\n      if (arr.byteLength === 0) return ''\n      if (isAscii(arr)) return toBuf(arr).toString()\n      return jsDecoder(arr, loose) // somewhy faster on Deno anyway, TODO: optimize?\n    }\n  }\n\n  const isLatin1 = encoding === 'iso-8859-1'\n  const latin1path = encoding === 'windows-1252'\n  const { incomplete, mapper } = encodingMapper(encoding) // asserts\n  return (arr) => {\n    assertU8(arr)\n    if (arr.byteLength === 0) return ''\n    if (isLatin1 || isAscii(arr)) return toBuf(arr).latin1Slice() // .latin1Slice is faster than .asciiSlice\n\n    // Node.js TextDecoder is broken, so we can't use it. It's also slow anyway\n\n    let prefixBytes = asciiPrefix(arr)\n    let prefix = ''\n    if (latin1path) prefixBytes = latin1Prefix(arr, prefixBytes)\n    if (prefixBytes > 64 || prefixBytes === arr.length) {\n      prefix = toBuf(arr).latin1Slice(0, prefixBytes) // .latin1Slice is faster than .asciiSlice\n      if (prefixBytes === arr.length) return prefix\n    }\n\n    const b = toBuf(mapper(arr, prefix.length)) // prefix.length can mismatch prefixBytes\n    if (!isLE) b.swap16()\n    const suffix = b.ucs2Slice(0, b.byteLength)\n    if (!loose && incomplete && suffix.includes('\\uFFFD')) throw new TypeError(E_STRICT)\n    return prefix + suffix\n  }\n}\n\nconst NON_LATIN = /[^\\x00-\\xFF]/ // eslint-disable-line no-control-regex\n\nfunction encode(s, m) {\n  const len = s.length\n  let i = 0\n  const b = Buffer.from(s, 'utf-16le') // aligned\n  if (!isLE) b.swap16()\n  const x = new Uint16Array(b.buffer, b.byteOffset, b.byteLength / 2)\n  for (const len3 = len - 3; i < len3; i += 4) {\n    const x0 = x[i], x1 = x[i + 1], x2 = x[i + 2], x3 = x[i + 3] // prettier-ignore\n    const c0 = m[x0], c1 = m[x1], c2 = m[x2], c3 = m[x3] // prettier-ignore\n    if (!(c0 && c1 && c2 && c3) && ((!c0 && x0) || (!c1 && x1) || (!c2 && x2) || (!c3 && x3))) return null // prettier-ignore\n    x[i] = c0\n    x[i + 1] = c1\n    x[i + 2] = c2\n    x[i + 3] = c3\n  }\n\n  for (; i < len; i++) {\n    const x0 = x[i]\n    const c0 = m[x0]\n    if (!c0 && x0) return null\n    x[i] = c0\n  }\n\n  return new Uint8Array(x)\n}\n\nexport function createSinglebyteEncoder(encoding, { mode = 'fatal' } = {}) {\n  // TODO: replacement, truncate (replacement will need varying length)\n  if (mode !== 'fatal') throw new Error('Unsupported mode')\n  const m = encodeMap(encoding) // asserts\n  const isLatin1 = encoding === 'iso-8859-1'\n\n  return (s) => {\n    if (typeof s !== 'string') throw new TypeError(E_STRING)\n    if (isLatin1) {\n      if (NON_LATIN.test(s)) throw new TypeError(E_STRICT)\n      const b = Buffer.from(s, 'latin1')\n      return new Uint8Array(b.buffer, b.byteOffset, b.byteLength)\n    }\n\n    // Instead of an ASCII regex check, encode optimistically - this is faster\n    // Check for 8-bit string with a regex though, this is instant on 8-bit strings so doesn't hurt the ASCII fast path\n    if (!NON_LATIN.test(s)) {\n      const b = Buffer.from(s, 'utf8') // ascii/latin1 coerces, we need to check\n      if (b.length === s.length) return new Uint8Array(b.buffer, b.byteOffset, b.byteLength)\n    }\n\n    const res = encode(s, m)\n    if (!res) throw new TypeError(E_STRICT)\n    return res\n  }\n}\n\nexport const latin1toString = /* @__PURE__ */ createSinglebyteDecoder('iso-8859-1')\nexport const latin1fromString = /* @__PURE__ */ createSinglebyteEncoder('iso-8859-1')\nexport const windows1252toString = /* @__PURE__ */ createSinglebyteDecoder('windows-1252')\nexport const windows1252fromString = /* @__PURE__ */ createSinglebyteEncoder('windows-1252')\n","// See https://encoding.spec.whatwg.org/#names-and-labels\n\n/* eslint-disable @exodus/export-default/named */\n// prettier-ignore\nconst labels = {\n  'utf-8': ['unicode-1-1-utf-8', 'unicode11utf8', 'unicode20utf8', 'utf8', 'x-unicode20utf8'],\n  'utf-16be': ['unicodefffe'],\n  'utf-16le': ['csunicode', 'iso-10646-ucs-2', 'ucs-2', 'unicode', 'unicodefeff', 'utf-16'],\n  'iso-8859-2': ['iso-ir-101'],\n  'iso-8859-3': ['iso-ir-109'],\n  'iso-8859-4': ['iso-ir-110'],\n  'iso-8859-5': ['csisolatincyrillic', 'cyrillic', 'iso-ir-144'],\n  'iso-8859-6': ['arabic', 'asmo-708', 'csiso88596e', 'csiso88596i', 'csisolatinarabic', 'ecma-114', 'iso-8859-6-e', 'iso-8859-6-i', 'iso-ir-127'],\n  'iso-8859-7': ['csisolatingreek', 'ecma-118', 'elot_928', 'greek', 'greek8', 'iso-ir-126', 'sun_eu_greek'],\n  'iso-8859-8': ['csiso88598e', 'csisolatinhebrew', 'hebrew', 'iso-8859-8-e', 'iso-ir-138', 'visual'],\n  'iso-8859-8-i': ['csiso88598i', 'logical'],\n  'iso-8859-16': [],\n  'koi8-r': ['cskoi8r', 'koi', 'koi8', 'koi8_r'],\n  'koi8-u': ['koi8-ru'],\n  'windows-874': ['dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620'],\n  ibm866: ['866', 'cp866', 'csibm866'],\n  'x-mac-cyrillic': ['x-mac-ukrainian'],\n  macintosh: ['csmacintosh', 'mac', 'x-mac-roman'],\n  gbk: ['chinese', 'csgb2312', 'csiso58gb231280', 'gb2312', 'gb_2312', 'gb_2312-80', 'iso-ir-58', 'x-gbk'],\n  gb18030: [],\n  big5: ['big5-hkscs', 'cn-big5', 'csbig5', 'x-x-big5'],\n  'euc-jp': ['cseucpkdfmtjapanese', 'x-euc-jp'],\n  shift_jis: ['csshiftjis', 'ms932', 'ms_kanji', 'shift-jis', 'sjis', 'windows-31j', 'x-sjis'],\n  'euc-kr': ['cseuckr', 'csksc56011987', 'iso-ir-149', 'korean', 'ks_c_5601-1987', 'ks_c_5601-1989', 'ksc5601', 'ksc_5601', 'windows-949'],\n  'iso-2022-jp': ['csiso2022jp'],\n  replacement: ['csiso2022kr', 'hz-gb-2312', 'iso-2022-cn', 'iso-2022-cn-ext', 'iso-2022-kr'],\n  'x-user-defined': [],\n}\n\nfor (const i of [10, 13, 14, 15]) labels[`iso-8859-${i}`] = [`iso8859-${i}`, `iso8859${i}`]\nfor (const i of [2, 6, 7]) labels[`iso-8859-${i}`].push(`iso_8859-${i}:1987`)\nfor (const i of [3, 4, 5, 8]) labels[`iso-8859-${i}`].push(`iso_8859-${i}:1988`)\n// prettier-ignore\nfor (let i = 2; i < 9; i++) labels[`iso-8859-${i}`].push(`iso8859-${i}`, `iso8859${i}`, `iso_8859-${i}`)\nfor (let i = 2; i < 5; i++) labels[`iso-8859-${i}`].push(`csisolatin${i}`, `l${i}`, `latin${i}`)\nfor (let i = 0; i < 9; i++) labels[`windows-125${i}`] = [`cp125${i}`, `x-cp125${i}`]\n\n// prettier-ignore\nlabels['windows-1252'].push('ansi_x3.4-1968', 'ascii', 'cp819', 'csisolatin1', 'ibm819', 'iso-8859-1', 'iso-ir-100', 'iso8859-1', 'iso88591', 'iso_8859-1', 'iso_8859-1:1987', 'l1', 'latin1', 'us-ascii')\n// prettier-ignore\nlabels['windows-1254'].push('csisolatin5', 'iso-8859-9', 'iso-ir-148', 'iso8859-9', 'iso88599', 'iso_8859-9', 'iso_8859-9:1989', 'l5', 'latin5')\nlabels['iso-8859-10'].push('csisolatin6', 'iso-ir-157', 'l6', 'latin6')\nlabels['iso-8859-15'].push('csisolatin9', 'iso_8859-15', 'l9')\n\nexport default labels\n","// TODO: make this more strict against Symbol.toStringTag\n// Is not very significant though, anything faking Symbol.toStringTag could as well override\n// prototypes, which is not something we protect against\n\nfunction isAnyArrayBuffer(x) {\n  if (x instanceof ArrayBuffer) return true\n  if (globalThis.SharedArrayBuffer && x instanceof SharedArrayBuffer) return true\n  if (!x || typeof x.byteLength !== 'number') return false\n  const s = Object.prototype.toString.call(x)\n  return s === '[object ArrayBuffer]' || s === '[object SharedArrayBuffer]'\n}\n\nexport function fromSource(x) {\n  if (x instanceof Uint8Array) return x\n  if (ArrayBuffer.isView(x)) return new Uint8Array(x.buffer, x.byteOffset, x.byteLength)\n  if (isAnyArrayBuffer(x)) {\n    if ('detached' in x) return x.detached === true ? new Uint8Array() : new Uint8Array(x)\n    // Old engines without .detached, try-catch\n    try {\n      return new Uint8Array(x)\n    } catch {\n      return new Uint8Array()\n    }\n  }\n\n  throw new TypeError('Argument must be a SharedArrayBuffer, ArrayBuffer or ArrayBufferView')\n}\n\n// Warning: unlike whatwg-encoding, returns lowercased labels\n// Those are case-insensitive and that's how TextDecoder encoding getter normalizes them\nexport function getBOMEncoding(input) {\n  const u8 = fromSource(input) // asserts\n  if (u8.length >= 3 && u8[0] === 0xef && u8[1] === 0xbb && u8[2] === 0xbf) return 'utf-8'\n  if (u8.length < 2) return null\n  if (u8[0] === 0xff && u8[1] === 0xfe) return 'utf-16le'\n  if (u8[0] === 0xfe && u8[1] === 0xff) return 'utf-16be'\n  return null\n}\n","// Get a number of last bytes in an Uint8Array `u` ending at `len` that don't\n// form a codepoint yet, but can be a part of a single codepoint on more data\nexport function unfinishedBytes(u, len, enc) {\n  switch (enc) {\n    case 'utf-8': {\n      // 0-3\n      let p = 0\n      while (p < 2 && p < len && (u[len - p - 1] & 0xc0) === 0x80) p++ // go back 0-2 trailing bytes\n      if (p === len) return 0 // no space for lead\n      const l = u[len - p - 1]\n      if (l < 0xc2 || l > 0xf4) return 0 // not a lead\n      if (p === 0) return 1 // nothing to recheck, we have only lead, return it. 2-byte must return here\n      if (l < 0xe0 || (l < 0xf0 && p >= 2)) return 0 // 2-byte, or 3-byte or less and we already have 2 trailing\n      const lower = l === 0xf0 ? 0x90 : l === 0xe0 ? 0xa0 : 0x80\n      const upper = l === 0xf4 ? 0x8f : l === 0xed ? 0x9f : 0xbf\n      const n = u[len - p]\n      return n >= lower && n <= upper ? p + 1 : 0\n    }\n\n    case 'utf-16le':\n    case 'utf-16be': {\n      // 0-3\n      const p = len % 2 // uneven byte length adds 1\n      if (len < 2) return p\n      const l = len - p - 1\n      const last = enc === 'utf-16le' ? (u[l] << 8) ^ u[l - 1] : (u[l - 1] << 8) ^ u[l]\n      return last >= 0xd8_00 && last < 0xdc_00 ? p + 2 : p // lone lead adds 2\n    }\n  }\n\n  throw new Error('Unsupported encoding')\n}\n\n// Merge prefix `chunk` with `u` and return new combined prefix\n// For u.length < 3, fully consumes u and can return unfinished data,\n// otherwise returns a prefix with no unfinished bytes\nexport function mergePrefix(u, chunk, enc) {\n  if (u.length === 0) return chunk\n  if (u.length < 3) {\n    // No reason to bruteforce offsets, also it's possible this doesn't yet end the sequence\n    const a = new Uint8Array(u.length + chunk.length)\n    a.set(chunk)\n    a.set(u, chunk.length)\n    return a\n  }\n\n  // Slice off a small portion of u into prefix chunk so we can decode them separately without extending array size\n  const t = new Uint8Array(chunk.length + 3) // We have 1-3 bytes and need 1-3 more bytes\n  t.set(chunk)\n  t.set(u.subarray(0, 3), chunk.length)\n\n  // Stop at the first offset where unfinished bytes reaches 0 or fits into u\n  // If that doesn't happen (u too short), just concat chunk and u completely (above)\n  for (let i = 1; i <= 3; i++) {\n    const unfinished = unfinishedBytes(t, chunk.length + i, enc) // 0-3\n    if (unfinished <= i) {\n      // Always reachable at 3, but we still need 'unfinished' value for it\n      const add = i - unfinished // 0-3\n      return add > 0 ? t.subarray(0, chunk.length + add) : chunk\n    }\n  }\n\n  // Unreachable\n}\n","// We can't return native TextDecoder if it's present, as Node.js one is broken on windows-1252 and we fix that\n// We are also faster than Node.js built-in on both TextEncoder and TextDecoder\n\nimport { utf16toString, utf16toStringLoose } from '@exodus/bytes/utf16.js'\nimport { utf8fromStringLoose, utf8toString, utf8toStringLoose } from '@exodus/bytes/utf8.js'\nimport { createSinglebyteDecoder } from '@exodus/bytes/single-byte.js'\nimport labels from './encoding.labels.js'\nimport { fromSource, getBOMEncoding } from './encoding.api.js'\nimport { unfinishedBytes, mergePrefix } from './encoding.util.js'\n\nexport { getBOMEncoding } from './encoding.api.js'\n\nexport const E_ENCODING = 'Unknown encoding'\nconst E_MULTI = \"import '@exodus/bytes/encoding.js' for legacy multi-byte encodings support\"\nconst E_OPTIONS = 'The \"options\" argument must be of type object'\nconst replacementChar = '\\uFFFD'\nconst multibyteSet = new Set(['big5', 'euc-kr', 'euc-jp', 'iso-2022-jp', 'shift_jis', 'gbk', 'gb18030']) // prettier-ignore\nlet createMultibyteDecoder, multibyteEncoder\n\nlet labelsMap\n// Warning: unlike whatwg-encoding, returns lowercased labels\n// Those are case-insensitive and that's how TextDecoder encoding getter normalizes them\n// https://encoding.spec.whatwg.org/#names-and-labels\nexport function normalizeEncoding(label) {\n  // fast path\n  if (label === 'utf-8' || label === 'utf8' || label === 'UTF-8' || label === 'UTF8') return 'utf-8'\n  if (label === 'windows-1252' || label === 'ascii' || label === 'latin1') return 'windows-1252'\n  // full map\n  if (/[^\\w\\t\\n\\f\\r .:-]/i.test(label)) return null // must be ASCII (with ASCII whitespace)\n  const low = `${label}`.trim().toLowerCase()\n  if (Object.hasOwn(labels, low)) return low\n  if (!labelsMap) {\n    labelsMap = new Map()\n    for (const [name, aliases] of Object.entries(labels)) {\n      for (const alias of aliases) labelsMap.set(alias, name)\n    }\n  }\n\n  const mapped = labelsMap.get(low)\n  if (mapped) return mapped\n  return null\n}\n\nconst uppercasePrefixes = new Set(['utf', 'iso', 'koi', 'euc', 'ibm', 'gbk'])\n\n// Unlike normalizeEncoding, case-sensitive\n// https://encoding.spec.whatwg.org/#names-and-labels\nexport function labelToName(label) {\n  const enc = normalizeEncoding(label)\n  if (enc === 'utf-8') return 'UTF-8' // fast path\n  if (!enc) return enc\n  if (uppercasePrefixes.has(enc.slice(0, 3))) return enc.toUpperCase()\n  if (enc === 'big5') return 'Big5'\n  if (enc === 'shift_jis') return 'Shift_JIS'\n  return enc\n}\n\nexport const isMultibyte = (enc) => multibyteSet.has(enc)\nexport function setMultibyte(createDecoder, createEncoder) {\n  createMultibyteDecoder = createDecoder\n  multibyteEncoder = createEncoder\n}\n\nexport function getMultibyteEncoder() {\n  if (!multibyteEncoder) throw new Error(E_MULTI)\n  return multibyteEncoder\n}\n\nconst define = (obj, key, value) => Object.defineProperty(obj, key, { value, writable: false })\n\nfunction isAnyUint8Array(x) {\n  if (x instanceof Uint8Array) return true\n  if (!x || !ArrayBuffer.isView(x) || x.BYTES_PER_ELEMENT !== 1) return false\n  return Object.prototype.toString.call(x) === '[object Uint8Array]'\n}\n\nfunction unicodeDecoder(encoding, loose) {\n  if (encoding === 'utf-8') return loose ? utf8toStringLoose : utf8toString // likely\n  const form = encoding === 'utf-16le' ? 'uint8-le' : 'uint8-be'\n  return loose ? (u) => utf16toStringLoose(u, form) : (u) => utf16toString(u, form)\n}\n\nexport class TextDecoder {\n  #decode\n  #unicode\n  #multibyte\n  #chunk\n  #canBOM\n\n  constructor(encoding = 'utf-8', options = {}) {\n    if (typeof options !== 'object') throw new TypeError(E_OPTIONS)\n    const enc = normalizeEncoding(encoding)\n    if (!enc || enc === 'replacement') throw new RangeError(E_ENCODING)\n    define(this, 'encoding', enc)\n    define(this, 'fatal', !!options.fatal)\n    define(this, 'ignoreBOM', !!options.ignoreBOM)\n    this.#unicode = enc === 'utf-8' || enc === 'utf-16le' || enc === 'utf-16be'\n    this.#multibyte = !this.#unicode && isMultibyte(enc)\n    this.#canBOM = this.#unicode && !this.ignoreBOM\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'TextDecoder'\n  }\n\n  decode(input, options = {}) {\n    if (typeof options !== 'object') throw new TypeError(E_OPTIONS)\n    const stream = !!options.stream\n    let u = input === undefined ? new Uint8Array() : fromSource(input)\n    const empty = u.length === 0 // also can't be streaming after next line\n    if (empty && stream) return '' // no state change\n\n    if (this.#unicode) {\n      let prefix\n      if (this.#chunk) {\n        const merged = mergePrefix(u, this.#chunk, this.encoding)\n        if (u.length < 3) {\n          u = merged // might be unfinished, but fully consumed old u\n        } else {\n          prefix = merged // stops at complete chunk\n          const add = prefix.length - this.#chunk.length\n          if (add > 0) u = u.subarray(add)\n        }\n\n        this.#chunk = null\n      } else if (empty) {\n        this.#canBOM = !this.ignoreBOM // not streaming\n        return ''\n      }\n\n      // For non-stream utf-8 we don't have to do this as it matches utf8toStringLoose already\n      // For non-stream loose utf-16 we still have to do this as this API supports uneven byteLength unlike utf16toStringLoose\n      let suffix = ''\n      if (stream || (!this.fatal && this.encoding !== 'utf-8')) {\n        const trail = unfinishedBytes(u, u.byteLength, this.encoding)\n        if (trail > 0) {\n          if (stream) {\n            this.#chunk = Uint8Array.from(u.subarray(-trail)) // copy\n          } else {\n            // non-fatal mode as already checked\n            suffix = replacementChar\n          }\n\n          u = u.subarray(0, -trail)\n        }\n      }\n\n      let seenBOM = false\n      if (this.#canBOM) {\n        const bom = this.#findBom(prefix ?? u)\n        if (bom) {\n          seenBOM = true\n          if (prefix) {\n            prefix = prefix.subarray(bom)\n          } else {\n            u = u.subarray(bom)\n          }\n        }\n      } else if (!stream && !this.ignoreBOM) {\n        this.#canBOM = true\n      }\n\n      if (!this.#decode) this.#decode = unicodeDecoder(this.encoding, !this.fatal)\n      try {\n        const res = (prefix ? this.#decode(prefix) : '') + this.#decode(u) + suffix\n        // \"BOM seen\" is set on the current decode call only if it did not error, in \"serialize I/O queue\" after decoding\n        if (stream && (seenBOM || res.length > 0)) this.#canBOM = false\n        return res\n      } catch (err) {\n        this.#chunk = null // reset unfinished chunk on errors\n        // The correct way per spec seems to be not destroying the decoder state (aka BOM here) in stream mode\n        // See also multi-byte.js\n        throw err\n      }\n\n      // eslint-disable-next-line no-else-return\n    } else if (this.#multibyte) {\n      if (!createMultibyteDecoder) throw new Error(E_MULTI)\n      if (!this.#decode) this.#decode = createMultibyteDecoder(this.encoding, !this.fatal) // can contain state!\n      return this.#decode(u, stream)\n    } else {\n      if (!this.#decode) this.#decode = createSinglebyteDecoder(this.encoding, !this.fatal)\n      return this.#decode(u)\n    }\n  }\n\n  #findBom(u) {\n    switch (this.encoding) {\n      case 'utf-8':\n        return u.byteLength >= 3 && u[0] === 0xef && u[1] === 0xbb && u[2] === 0xbf ? 3 : 0\n      case 'utf-16le':\n        return u.byteLength >= 2 && u[0] === 0xff && u[1] === 0xfe ? 2 : 0\n      case 'utf-16be':\n        return u.byteLength >= 2 && u[0] === 0xfe && u[1] === 0xff ? 2 : 0\n    }\n\n    /* c8 ignore next */\n    throw new Error('Unreachable')\n  }\n}\n\nexport class TextEncoder {\n  constructor() {\n    define(this, 'encoding', 'utf-8')\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'TextEncoder'\n  }\n\n  encode(str = '') {\n    if (typeof str !== 'string') str = `${str}`\n    const res = utf8fromStringLoose(str)\n    // match new Uint8Array (per spec), which is non-pooled\n    return res.byteOffset === 0 && res.length === res.buffer.byteLength ? res : res.slice(0)\n  }\n\n  encodeInto(str, target) {\n    if (typeof str !== 'string') str = `${str}`\n    if (!isAnyUint8Array(target)) throw new TypeError('Target must be an Uint8Array')\n    if (target.buffer.detached) return { read: 0, written: 0 } // Until https://github.com/whatwg/encoding/issues/324 is resolved\n\n    const tlen = target.length\n    if (tlen < str.length) str = str.slice(0, tlen)\n    let u8 = utf8fromStringLoose(str)\n    let read\n    if (tlen >= u8.length) {\n      read = str.length\n    } else if (u8.length === str.length) {\n      if (u8.length > tlen) u8 = u8.subarray(0, tlen) // ascii can be truncated\n      read = u8.length\n    } else {\n      u8 = u8.subarray(0, tlen)\n      const unfinished = unfinishedBytes(u8, u8.length, 'utf-8')\n      if (unfinished > 0) u8 = u8.subarray(0, u8.length - unfinished)\n\n      // We can do this because loose str -> u8 -> str preserves length, unlike loose u8 -> str -> u8\n      // Each unpaired surrogate (1 charcode) is replaced with a single charcode\n      read = utf8toStringLoose(u8).length // FIXME: Converting back is very inefficient\n    }\n\n    try {\n      target.set(u8)\n    } catch {\n      return { read: 0, written: 0 } // see above, likely detached but no .detached property support\n    }\n\n    return { read, written: u8.length }\n  }\n}\n\nconst E_NO_STREAMS = 'TransformStream global not present in the environment'\n\n// https://encoding.spec.whatwg.org/#interface-textdecoderstream\nexport class TextDecoderStream {\n  constructor(encoding = 'utf-8', options = {}) {\n    if (!globalThis.TransformStream) throw new Error(E_NO_STREAMS)\n    const decoder = new TextDecoder(encoding, options)\n    const transform = new TransformStream({\n      transform: (chunk, controller) => {\n        const value = decoder.decode(fromSource(chunk), { stream: true })\n        if (value) controller.enqueue(value)\n      },\n      flush: (controller) => {\n        // https://streams.spec.whatwg.org/#dom-transformer-flush\n        const value = decoder.decode()\n        if (value) controller.enqueue(value)\n        // No need to call .terminate() (Node.js is wrong)\n      },\n    })\n\n    define(this, 'encoding', decoder.encoding)\n    define(this, 'fatal', decoder.fatal)\n    define(this, 'ignoreBOM', decoder.ignoreBOM)\n    define(this, 'readable', transform.readable)\n    define(this, 'writable', transform.writable)\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'TextDecoderStream'\n  }\n}\n\n// https://encoding.spec.whatwg.org/#interface-textencoderstream\n// Only UTF-8 per spec\nexport class TextEncoderStream {\n  constructor() {\n    if (!globalThis.TransformStream) throw new Error(E_NO_STREAMS)\n    let lead\n    const transform = new TransformStream({\n      // https://encoding.spec.whatwg.org/#encode-and-enqueue-a-chunk\n      // Not identical in code, but reuses loose mode to have identical behavior\n      transform: (chunk, controller) => {\n        let s = String(chunk) // DOMString, might contain unpaired surrogates\n        if (s.length === 0) return\n        if (lead) {\n          s = lead + s\n          lead = null\n        }\n\n        const last = s.charCodeAt(s.length - 1) // Can't come from previous lead due to length check\n        if ((last & 0xfc_00) === 0xd8_00) {\n          lead = s[s.length - 1]\n          s = s.slice(0, -1)\n        }\n\n        if (s) controller.enqueue(utf8fromStringLoose(s))\n      },\n      // https://encoding.spec.whatwg.org/#encode-and-flush\n      flush: (controller) => {\n        if (lead) controller.enqueue(Uint8Array.of(0xef, 0xbf, 0xbd))\n      },\n    })\n\n    define(this, 'encoding', 'utf-8')\n    define(this, 'readable', transform.readable)\n    define(this, 'writable', transform.writable)\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'TextEncoderStream'\n  }\n}\n\n// https://encoding.spec.whatwg.org/#decode\n// Warning: encoding sniffed from BOM takes preference over the supplied one\n// Warning: lossy, performs replacement, no option of throwing\n// Completely ignores encoding and even skips validation when BOM is found\n// Unlike TextDecoder public API, additionally supports 'replacement' encoding\nexport function legacyHookDecode(input, fallbackEncoding = 'utf-8') {\n  let u8 = fromSource(input)\n  const bomEncoding = getBOMEncoding(u8)\n  if (bomEncoding) u8 = u8.subarray(bomEncoding === 'utf-8' ? 3 : 2)\n  const enc = bomEncoding ?? normalizeEncoding(fallbackEncoding) // \"the byte order mark is more authoritative than anything else\"\n\n  if (enc === 'utf-8') return utf8toStringLoose(u8)\n  if (enc === 'utf-16le' || enc === 'utf-16be') {\n    let suffix = ''\n    if (u8.byteLength % 2 !== 0) {\n      suffix = replacementChar\n      u8 = u8.subarray(0, -unfinishedBytes(u8, u8.byteLength, enc))\n    }\n\n    return utf16toStringLoose(u8, enc === 'utf-16le' ? 'uint8-le' : 'uint8-be') + suffix\n  }\n\n  if (!Object.hasOwn(labels, enc)) throw new RangeError(E_ENCODING)\n\n  if (isMultibyte(enc)) {\n    if (!createMultibyteDecoder) throw new Error(E_MULTI)\n    return createMultibyteDecoder(enc, true)(u8)\n  }\n\n  // https://encoding.spec.whatwg.org/#replacement-decoder\n  // On non-streaming non-fatal case, it just replaces any non-empty input with a single replacement char\n  if (enc === 'replacement') return input.byteLength > 0 ? replacementChar : ''\n\n  return createSinglebyteDecoder(enc, true)(u8)\n}\n","export {\n  TextDecoder,\n  TextEncoder,\n  TextDecoderStream,\n  TextEncoderStream,\n  normalizeEncoding,\n  getBOMEncoding,\n  labelToName,\n  legacyHookDecode,\n} from './fallback/encoding.js'\n","\"use strict\";\nconst { getBOMEncoding, labelToName } = require(\"@exodus/bytes/encoding-lite.js\");\n\n// https://html.spec.whatwg.org/#encoding-sniffing-algorithm\nmodule.exports = (uint8Array, { xml = false, transportLayerEncodingLabel, defaultEncoding } = {}) => {\n  if (defaultEncoding === undefined) {\n    defaultEncoding = xml ? \"UTF-8\" : \"windows-1252\";\n  }\n\n  let encoding = labelToName(getBOMEncoding(uint8Array));\n\n  if (encoding === null && transportLayerEncodingLabel !== undefined) {\n    encoding = labelToName(transportLayerEncodingLabel);\n  }\n\n  if (encoding === null && !xml) {\n    encoding = prescanMetaCharset(uint8Array);\n  }\n\n  if (encoding === null) {\n    encoding = defaultEncoding;\n  }\n\n  return encoding;\n};\n\n// https://html.spec.whatwg.org/multipage/syntax.html#prescan-a-byte-stream-to-determine-its-encoding\nfunction prescanMetaCharset(uint8Array) {\n  const l = Math.min(uint8Array.byteLength, 1024);\n  for (let i = 0; i < l; i++) {\n    let c = uint8Array[i];\n    if (c === 0x3C) {\n      // \"<\"\n      const c1 = uint8Array[i + 1];\n      const c2 = uint8Array[i + 2];\n      const c3 = uint8Array[i + 3];\n      const c4 = uint8Array[i + 4];\n      const c5 = uint8Array[i + 5];\n      // !-- (comment start)\n      if (c1 === 0x21 && c2 === 0x2D && c3 === 0x2D) {\n        i += 4;\n        for (; i < l; i++) {\n          c = uint8Array[i];\n          const cMinus1 = uint8Array[i - 1];\n          const cMinus2 = uint8Array[i - 2];\n          // --> (comment end)\n          if (c === 0x3E && cMinus1 === 0x2D && cMinus2 === 0x2D) {\n            break;\n          }\n        }\n      } else if ((c1 === 0x4D || c1 === 0x6D) &&\n         (c2 === 0x45 || c2 === 0x65) &&\n         (c3 === 0x54 || c3 === 0x74) &&\n         (c4 === 0x41 || c4 === 0x61) &&\n         (isSpaceCharacter(c5) || c5 === 0x2F)) {\n        // \"meta\" + space or /\n        i += 6;\n        const attributeList = new Set();\n        let gotPragma = false;\n        let needPragma = null;\n        let charset = null;\n\n        let attrRes;\n        do {\n          attrRes = getAttribute(uint8Array, i, l);\n          if (attrRes.attr && !attributeList.has(attrRes.attr.name)) {\n            attributeList.add(attrRes.attr.name);\n            if (attrRes.attr.name === \"http-equiv\") {\n              gotPragma = attrRes.attr.value === \"content-type\";\n            } else if (attrRes.attr.name === \"content\" && !charset) {\n              charset = extractCharacterEncodingFromMeta(attrRes.attr.value);\n              if (charset !== null) {\n                needPragma = true;\n              }\n            } else if (attrRes.attr.name === \"charset\") {\n              charset = labelToName(attrRes.attr.value);\n              needPragma = false;\n            }\n          }\n          i = attrRes.i;\n        } while (attrRes.attr);\n\n        if (needPragma === null) {\n          continue;\n        }\n        if (needPragma === true && gotPragma === false) {\n          continue;\n        }\n        if (charset === null) {\n          continue;\n        }\n\n        if (charset === \"UTF-16LE\" || charset === \"UTF-16BE\") {\n          charset = \"UTF-8\";\n        }\n        if (charset === \"x-user-defined\") {\n          charset = \"windows-1252\";\n        }\n\n        return charset;\n      } else if ((c1 >= 0x41 && c1 <= 0x5A) || (c1 >= 0x61 && c1 <= 0x7A)) {\n        // a-z or A-Z\n        for (i += 2; i < l; i++) {\n          c = uint8Array[i];\n          // space or >\n          if (isSpaceCharacter(c) || c === 0x3E) {\n            break;\n          }\n        }\n        let attrRes;\n        do {\n          attrRes = getAttribute(uint8Array, i, l);\n          i = attrRes.i;\n        } while (attrRes.attr);\n      } else if (c1 === 0x21 || c1 === 0x2F || c1 === 0x3F) {\n        // ! or / or ?\n        for (i += 2; i < l; i++) {\n          c = uint8Array[i];\n          // >\n          if (c === 0x3E) {\n            break;\n          }\n        }\n      }\n    }\n  }\n  return null;\n}\n\n// https://html.spec.whatwg.org/multipage/syntax.html#concept-get-attributes-when-sniffing\nfunction getAttribute(uint8Array, i, l) {\n  for (; i < l; i++) {\n    let c = uint8Array[i];\n    // space or /\n    if (isSpaceCharacter(c) || c === 0x2F) {\n      continue;\n    }\n    // \">\"\n    if (c === 0x3E) {\n      break;\n    }\n    let name = \"\";\n    let value = \"\";\n    nameLoop:for (; i < l; i++) {\n      c = uint8Array[i];\n      // \"=\"\n      if (c === 0x3D && name !== \"\") {\n        i++;\n        break;\n      }\n      // space\n      if (isSpaceCharacter(c)) {\n        for (i++; i < l; i++) {\n          c = uint8Array[i];\n          // space\n          if (isSpaceCharacter(c)) {\n            continue;\n          }\n          // not \"=\"\n          if (c !== 0x3D) {\n            return { attr: { name, value }, i };\n          }\n\n          i++;\n          break nameLoop;\n        }\n        break;\n      }\n      // / or >\n      if (c === 0x2F || c === 0x3E) {\n        return { attr: { name, value }, i };\n      }\n      // A-Z\n      if (c >= 0x41 && c <= 0x5A) {\n        name += String.fromCharCode(c + 0x20); // lowercase\n      } else {\n        name += String.fromCharCode(c);\n      }\n    }\n    c = uint8Array[i];\n    // space\n    if (isSpaceCharacter(c)) {\n      for (i++; i < l; i++) {\n        c = uint8Array[i];\n        // space\n        if (isSpaceCharacter(c)) {\n          continue;\n        } else {\n          break;\n        }\n      }\n    }\n    // \" or '\n    if (c === 0x22 || c === 0x27) {\n      const quote = c;\n      for (i++; i < l; i++) {\n        c = uint8Array[i];\n\n        if (c === quote) {\n          i++;\n          return { attr: { name, value }, i };\n        }\n\n        // A-Z\n        if (c >= 0x41 && c <= 0x5A) {\n          value += String.fromCharCode(c + 0x20); // lowercase\n        } else {\n          value += String.fromCharCode(c);\n        }\n      }\n    }\n\n    // >\n    if (c === 0x3E) {\n      return { attr: { name, value }, i };\n    }\n\n    // A-Z\n    if (c >= 0x41 && c <= 0x5A) {\n      value += String.fromCharCode(c + 0x20); // lowercase\n    } else {\n      value += String.fromCharCode(c);\n    }\n\n    for (i++; i < l; i++) {\n      c = uint8Array[i];\n\n      // space or >\n      if (isSpaceCharacter(c) || c === 0x3E) {\n        return { attr: { name, value }, i };\n      }\n\n      // A-Z\n      if (c >= 0x41 && c <= 0x5A) {\n        value += String.fromCharCode(c + 0x20); // lowercase\n      } else {\n        value += String.fromCharCode(c);\n      }\n    }\n  }\n  return { i };\n}\n\nfunction extractCharacterEncodingFromMeta(string) {\n  let position = 0;\n\n  while (true) {\n    const indexOfCharset = string.substring(position).search(/charset/ui);\n\n    if (indexOfCharset === -1) {\n      return null;\n    }\n    let subPosition = position + indexOfCharset + \"charset\".length;\n\n    while (isSpaceCharacter(string[subPosition].charCodeAt(0))) {\n      ++subPosition;\n    }\n\n    if (string[subPosition] !== \"=\") {\n      position = subPosition - 1;\n      continue;\n    }\n\n    ++subPosition;\n\n    while (isSpaceCharacter(string[subPosition].charCodeAt(0))) {\n      ++subPosition;\n    }\n\n    position = subPosition;\n    break;\n  }\n\n  if (string[position] === \"\\\"\" || string[position] === \"'\") {\n    const nextIndex = string.indexOf(string[position], position + 1);\n\n    if (nextIndex !== -1) {\n      return labelToName(string.substring(position + 1, nextIndex));\n    }\n\n    // It is an unmatched quotation mark\n    return null;\n  }\n\n  if (string.length === position + 1) {\n    return null;\n  }\n\n  const indexOfASCIIWhitespaceOrSemicolon = string.substring(position + 1).search(/\\x09|\\x0A|\\x0C|\\x0D|\\x20|;/u);\n  const end = indexOfASCIIWhitespaceOrSemicolon === -1 ?\n    string.length :\n    position + indexOfASCIIWhitespaceOrSemicolon + 1;\n\n  return labelToName(string.substring(position, end));\n}\n\nfunction isSpaceCharacter(c) {\n  return c === 0x09 || c === 0x0A || c === 0x0C || c === 0x0D || c === 0x20;\n}\n","\"use strict\";\n\nfunction makeException(ErrorType, message, options) {\n  if (options.globals) {\n    ErrorType = options.globals[ErrorType.name];\n  }\n  return new ErrorType(`${options.context ? options.context : \"Value\"} ${message}.`);\n}\n\nfunction toNumber(value, options) {\n  if (typeof value === \"bigint\") {\n    throw makeException(TypeError, \"is a BigInt which cannot be converted to a number\", options);\n  }\n  if (!options.globals) {\n    return Number(value);\n  }\n  return options.globals.Number(value);\n}\n\n// Round x to the nearest integer, choosing the even integer if it lies halfway between two.\nfunction evenRound(x) {\n  // There are four cases for numbers with fractional part being .5:\n  //\n  // case |     x     | floor(x) | round(x) | expected | x <> 0 | x % 1 | x & 1 |   example\n  //   1  |  2n + 0.5 |  2n      |  2n + 1  |  2n      |   >    |  0.5  |   0   |  0.5 ->  0\n  //   2  |  2n + 1.5 |  2n + 1  |  2n + 2  |  2n + 2  |   >    |  0.5  |   1   |  1.5 ->  2\n  //   3  | -2n - 0.5 | -2n - 1  | -2n      | -2n      |   <    | -0.5  |   0   | -0.5 ->  0\n  //   4  | -2n - 1.5 | -2n - 2  | -2n - 1  | -2n - 2  |   <    | -0.5  |   1   | -1.5 -> -2\n  // (where n is a non-negative integer)\n  //\n  // Branch here for cases 1 and 4\n  if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||\n        (x < 0 && (x % 1) === -0.5 && (x & 1) === 1)) {\n    return censorNegativeZero(Math.floor(x));\n  }\n\n  return censorNegativeZero(Math.round(x));\n}\n\nfunction integerPart(n) {\n  return censorNegativeZero(Math.trunc(n));\n}\n\nfunction sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\nfunction modulo(x, y) {\n  // https://tc39.github.io/ecma262/#eqn-modulo\n  // Note that http://stackoverflow.com/a/4467559/3191 does NOT work for large modulos\n  const signMightNotMatch = x % y;\n  if (sign(y) !== sign(signMightNotMatch)) {\n    return signMightNotMatch + y;\n  }\n  return signMightNotMatch;\n}\n\nfunction censorNegativeZero(x) {\n  return x === 0 ? 0 : x;\n}\n\nfunction createIntegerConversion(bitLength, { unsigned }) {\n  let lowerBound, upperBound;\n  if (unsigned) {\n    lowerBound = 0;\n    upperBound = 2 ** bitLength - 1;\n  } else {\n    lowerBound = -(2 ** (bitLength - 1));\n    upperBound = 2 ** (bitLength - 1) - 1;\n  }\n\n  const twoToTheBitLength = 2 ** bitLength;\n  const twoToOneLessThanTheBitLength = 2 ** (bitLength - 1);\n\n  return (value, options = {}) => {\n    let x = toNumber(value, options);\n    x = censorNegativeZero(x);\n\n    if (options.enforceRange) {\n      if (!Number.isFinite(x)) {\n        throw makeException(TypeError, \"is not a finite number\", options);\n      }\n\n      x = integerPart(x);\n\n      if (x < lowerBound || x > upperBound) {\n        throw makeException(\n          TypeError,\n          `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,\n          options\n        );\n      }\n\n      return x;\n    }\n\n    if (!Number.isNaN(x) && options.clamp) {\n      x = Math.min(Math.max(x, lowerBound), upperBound);\n      x = evenRound(x);\n      return x;\n    }\n\n    if (!Number.isFinite(x) || x === 0) {\n      return 0;\n    }\n    x = integerPart(x);\n\n    // Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if\n    // possible. Hopefully it's an optimization for the non-64-bitLength cases too.\n    if (x >= lowerBound && x <= upperBound) {\n      return x;\n    }\n\n    // These will not work great for bitLength of 64, but oh well. See the README for more details.\n    x = modulo(x, twoToTheBitLength);\n    if (!unsigned && x >= twoToOneLessThanTheBitLength) {\n      return x - twoToTheBitLength;\n    }\n    return x;\n  };\n}\n\nfunction createLongLongConversion(bitLength, { unsigned }) {\n  const upperBound = Number.MAX_SAFE_INTEGER;\n  const lowerBound = unsigned ? 0 : Number.MIN_SAFE_INTEGER;\n  const asBigIntN = unsigned ? BigInt.asUintN : BigInt.asIntN;\n\n  return (value, options = {}) => {\n    let x = toNumber(value, options);\n    x = censorNegativeZero(x);\n\n    if (options.enforceRange) {\n      if (!Number.isFinite(x)) {\n        throw makeException(TypeError, \"is not a finite number\", options);\n      }\n\n      x = integerPart(x);\n\n      if (x < lowerBound || x > upperBound) {\n        throw makeException(\n          TypeError,\n          `is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`,\n          options\n        );\n      }\n\n      return x;\n    }\n\n    if (!Number.isNaN(x) && options.clamp) {\n      x = Math.min(Math.max(x, lowerBound), upperBound);\n      x = evenRound(x);\n      return x;\n    }\n\n    if (!Number.isFinite(x) || x === 0) {\n      return 0;\n    }\n\n    let xBigInt = BigInt(integerPart(x));\n    xBigInt = asBigIntN(bitLength, xBigInt);\n    return Number(xBigInt);\n  };\n}\n\nexports.any = value => {\n  return value;\n};\n\nexports.undefined = () => {\n  return undefined;\n};\n\nexports.boolean = value => {\n  return Boolean(value);\n};\n\nexports.byte = createIntegerConversion(8, { unsigned: false });\nexports.octet = createIntegerConversion(8, { unsigned: true });\n\nexports.short = createIntegerConversion(16, { unsigned: false });\nexports[\"unsigned short\"] = createIntegerConversion(16, { unsigned: true });\n\nexports.long = createIntegerConversion(32, { unsigned: false });\nexports[\"unsigned long\"] = createIntegerConversion(32, { unsigned: true });\n\nexports[\"long long\"] = createLongLongConversion(64, { unsigned: false });\nexports[\"unsigned long long\"] = createLongLongConversion(64, { unsigned: true });\n\nexports.double = (value, options = {}) => {\n  const x = toNumber(value, options);\n\n  if (!Number.isFinite(x)) {\n    throw makeException(TypeError, \"is not a finite floating-point value\", options);\n  }\n\n  return x;\n};\n\nexports[\"unrestricted double\"] = (value, options = {}) => {\n  const x = toNumber(value, options);\n\n  return x;\n};\n\nexports.float = (value, options = {}) => {\n  const x = toNumber(value, options);\n\n  if (!Number.isFinite(x)) {\n    throw makeException(TypeError, \"is not a finite floating-point value\", options);\n  }\n\n  if (Object.is(x, -0)) {\n    return x;\n  }\n\n  const y = Math.fround(x);\n\n  if (!Number.isFinite(y)) {\n    throw makeException(TypeError, \"is outside the range of a single-precision floating-point value\", options);\n  }\n\n  return y;\n};\n\nexports[\"unrestricted float\"] = (value, options = {}) => {\n  const x = toNumber(value, options);\n\n  if (isNaN(x)) {\n    return x;\n  }\n\n  if (Object.is(x, -0)) {\n    return x;\n  }\n\n  return Math.fround(x);\n};\n\nexports.DOMString = (value, options = {}) => {\n  if (options.treatNullAsEmptyString && value === null) {\n    return \"\";\n  }\n\n  if (typeof value === \"symbol\") {\n    throw makeException(TypeError, \"is a symbol, which cannot be converted to a string\", options);\n  }\n\n  const StringCtor = options.globals ? options.globals.String : String;\n  return StringCtor(value);\n};\n\nexports.ByteString = (value, options = {}) => {\n  const x = exports.DOMString(value, options);\n\n  // A Unicode regexp gives identical results here, but is ~5x slower on 16-bit strings:\n  // https://issues.chromium.org/issues/472892241\n  // eslint-disable-next-line require-unicode-regexp\n  if (/[^\\x00-\\xFF]/.test(x)) {\n    throw makeException(TypeError, \"is not a valid ByteString\", options);\n  }\n\n  return x;\n};\n\nexports.USVString = (value, options = {}) => {\n  return exports.DOMString(value, options).toWellFormed();\n};\n\nexports.object = (value, options = {}) => {\n  if (value === null || (typeof value !== \"object\" && typeof value !== \"function\")) {\n    throw makeException(TypeError, \"is not an object\", options);\n  }\n\n  return value;\n};\n\nconst abByteLengthGetter = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nconst sabByteLengthGetter = Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, \"byteLength\").get;\n\nfunction isNonSharedArrayBuffer(value) {\n  try {\n    abByteLengthGetter.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nfunction isSharedArrayBuffer(value) {\n  try {\n    sabByteLengthGetter.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nconst abResizableGetter = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"resizable\").get;\nconst sabGrowableGetter = Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, \"growable\").get;\n\nfunction isNonSharedArrayBufferResizable(value) {\n  try {\n    return abResizableGetter.call(value);\n  } catch {\n    return false;\n  }\n}\n\nfunction isSharedArrayBufferGrowable(value) {\n  try {\n    return sabGrowableGetter.call(value);\n  } catch {\n    return false;\n  }\n}\n\nfunction isArrayBufferDetached(value) {\n  try {\n    // eslint-disable-next-line no-new\n    new Uint8Array(value);\n    return false;\n  } catch {\n    return true;\n  }\n}\n\nexports.ArrayBuffer = (value, options = {}) => {\n  if (!isNonSharedArrayBuffer(value)) {\n    throw makeException(TypeError, \"is not an ArrayBuffer\", options);\n  }\n  if (!options.allowResizable && isNonSharedArrayBufferResizable(value)) {\n    throw makeException(TypeError, \"is a resizable ArrayBuffer\", options);\n  }\n  if (isArrayBufferDetached(value)) {\n    throw makeException(TypeError, \"is a detached ArrayBuffer\", options);\n  }\n\n  return value;\n};\n\nexports.SharedArrayBuffer = (value, options = {}) => {\n  if (!isSharedArrayBuffer(value)) {\n    throw makeException(TypeError, \"is not a SharedArrayBuffer\", options);\n  }\n  if (!options.allowResizable && isSharedArrayBufferGrowable(value)) {\n    throw makeException(TypeError, \"is a growable SharedArrayBuffer\", options);\n  }\n\n  return value;\n};\n\nconst dvByteLengthGetter =\n    Object.getOwnPropertyDescriptor(DataView.prototype, \"byteLength\").get;\nexports.DataView = (value, options = {}) => {\n  try {\n    dvByteLengthGetter.call(value);\n  } catch {\n    throw makeException(TypeError, \"is not a DataView\", options);\n  }\n  return exports.ArrayBufferView(value, options);\n};\n\n// Returns the unforgeable `TypedArray` constructor name or `undefined`,\n// if the `this` value isn't a valid `TypedArray` object.\n//\n// https://tc39.es/ecma262/#sec-get-%typedarray%.prototype-@@tostringtag\nconst typedArrayNameGetter = Object.getOwnPropertyDescriptor(\n  Object.getPrototypeOf(Uint8Array).prototype,\n  Symbol.toStringTag\n).get;\n[\n  Int8Array,\n  Int16Array,\n  Int32Array,\n  Uint8Array,\n  Uint16Array,\n  Uint32Array,\n  Uint8ClampedArray,\n  Float32Array,\n  Float64Array\n].forEach(func => {\n  const { name } = func;\n  const article = /^[AEIOU]/u.test(name) ? \"an\" : \"a\";\n  exports[name] = (value, options = {}) => {\n    if (!ArrayBuffer.isView(value) || typedArrayNameGetter.call(value) !== name) {\n      throw makeException(TypeError, `is not ${article} ${name} object`, options);\n    }\n    return exports.ArrayBufferView(value, options);\n  };\n});\n\n// Common definitions\n\nexports.ArrayBufferView = (value, options = {}) => {\n  if (!ArrayBuffer.isView(value)) {\n    throw makeException(TypeError, \"is not a view on an ArrayBuffer or SharedArrayBuffer\", options);\n  }\n\n  if (!options.allowShared && isSharedArrayBuffer(value.buffer)) {\n    throw makeException(TypeError, \"is a view on a SharedArrayBuffer, which is not allowed\", options);\n  }\n\n  if (!options.allowResizable) {\n    if (isNonSharedArrayBufferResizable(value.buffer)) {\n      throw makeException(TypeError, \"is a view on a resizable ArrayBuffer, which is not allowed\", options);\n    } else if (isSharedArrayBufferGrowable(value.buffer)) {\n      throw makeException(TypeError, \"is a view on a growable SharedArrayBuffer, which is not allowed\", options);\n    }\n  }\n\n  if (isArrayBufferDetached(value.buffer)) {\n    throw makeException(TypeError, \"is a view on a detached ArrayBuffer\", options);\n  }\n  return value;\n};\n\nexports.BufferSource = (value, options = {}) => {\n  if (ArrayBuffer.isView(value)) {\n    return exports.ArrayBufferView(value, options);\n  }\n\n  if (isNonSharedArrayBuffer(value)) {\n    return exports.ArrayBuffer(value, options);\n  } else if (options.allowShared && isSharedArrayBuffer(value)) {\n    return exports.SharedArrayBuffer(value, options);\n  }\n\n  if (options.allowShared) {\n    throw makeException(TypeError, \"is not an ArrayBuffer, SharedArrayBuffer, or a view on one\", options);\n  } else {\n    throw makeException(TypeError, \"is not an ArrayBuffer or a view on one\", options);\n  }\n};\n\nexports.DOMTimeStamp = exports[\"unsigned long long\"];\n","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n  return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nconst call = Function.call.bind(Function.call);\n\n// Like `Object.assign`, but using `[[GetOwnProperty]]` and `[[DefineOwnProperty]]`\n// instead of `[[Get]]` and `[[Set]]` and only allowing objects\nfunction define(target, source) {\n  for (const key of Reflect.ownKeys(source)) {\n    const descriptor = Reflect.getOwnPropertyDescriptor(source, key);\n    if (descriptor && !Reflect.defineProperty(target, key, descriptor)) {\n      throw new TypeError(`Cannot redefine property: ${String(key)}`);\n    }\n  }\n}\n\nfunction newObjectInRealm(globalObject, object) {\n  const ctorRegistry = initCtorRegistry(globalObject);\n  return Object.defineProperties(\n    Object.create(ctorRegistry[\"%Object.prototype%\"]),\n    Object.getOwnPropertyDescriptors(object)\n  );\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\nconst ctorRegistrySymbol = Symbol.for(\"[webidl2js] constructor registry\");\n\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction initCtorRegistry(globalObject) {\n  if (Object.hasOwn(globalObject, ctorRegistrySymbol)) {\n    return globalObject[ctorRegistrySymbol];\n  }\n\n  const ctorRegistry = Object.create(null);\n\n  // In addition to registering all the WebIDL2JS-generated types in the constructor registry,\n  // we also register a few intrinsics that we make use of in generated code, since they are not\n  // easy to grab from the globalObject variable.\n  ctorRegistry[\"%Object.prototype%\"] = globalObject.Object.prototype;\n  ctorRegistry[\"%IteratorPrototype%\"] = Object.getPrototypeOf(\n    Object.getPrototypeOf(new globalObject.Array()[Symbol.iterator]())\n  );\n\n  try {\n    ctorRegistry[\"%AsyncIteratorPrototype%\"] = Object.getPrototypeOf(\n      Object.getPrototypeOf(\n        globalObject.eval(\"(async function* () {})\").prototype\n      )\n    );\n  } catch {\n    ctorRegistry[\"%AsyncIteratorPrototype%\"] = AsyncIteratorPrototype;\n  }\n\n  globalObject[ctorRegistrySymbol] = ctorRegistry;\n  return ctorRegistry;\n}\n\nfunction getSameObject(wrapper, prop, creator) {\n  if (!wrapper[sameObjectCaches]) {\n    wrapper[sameObjectCaches] = Object.create(null);\n  }\n\n  if (prop in wrapper[sameObjectCaches]) {\n    return wrapper[sameObjectCaches][prop];\n  }\n\n  wrapper[sameObjectCaches][prop] = creator();\n  return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n  return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n  return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n  const wrapper = wrapperForImpl(impl);\n  return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n  const impl = implForWrapper(wrapper);\n  return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\n\nfunction isArrayIndexPropName(P) {\n  if (typeof P !== \"string\") {\n    return false;\n  }\n  const i = P >>> 0;\n  if (i === 2 ** 32 - 1) {\n    return false;\n  }\n  const s = `${i}`;\n  if (P !== s) {\n    return false;\n  }\n  return true;\n}\n\nconst arrayBufferByteLengthGetter =\n    Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nfunction isArrayBuffer(value) {\n  try {\n    arrayBufferByteLengthGetter.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nconst sharedArrayBufferByteLengthGetter =\n  Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, \"byteLength\").get;\nfunction isSharedArrayBuffer(value) {\n  try {\n    sharedArrayBufferByteLengthGetter.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nfunction iteratorResult([key, value], kind) {\n  let result;\n  switch (kind) {\n    case \"key\":\n      result = key;\n      break;\n    case \"value\":\n      result = value;\n      break;\n    case \"key+value\":\n      result = [key, value];\n      break;\n  }\n  return { value: result, done: false };\n}\n\nfunction ordinarySetWithOwnDescriptor(target, property, value, receiver, ownDesc) {\n  if (ownDesc === undefined) {\n    const parent = Reflect.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.set(parent, property, value, receiver);\n    }\n    ownDesc = { writable: true, enumerable: true, configurable: true, value: undefined };\n  }\n  if (isDataDescriptor(ownDesc)) {\n    if (!ownDesc.writable) {\n      return false;\n    }\n    if (!isObject(receiver)) {\n      return false;\n    }\n    const existingDesc = Reflect.getOwnPropertyDescriptor(receiver, property);\n    if (existingDesc !== undefined) {\n      if (isAccessorDescriptor(existingDesc)) {\n        return false;\n      }\n      if (existingDesc.writable === false) {\n        return false;\n      }\n      const valueDesc = { value };\n      return Reflect.defineProperty(receiver, property, valueDesc);\n    }\n\n    return Reflect.defineProperty(\n      receiver,\n      property,\n      { value, writable: true, enumerable: true, configurable: true }\n    );\n  }\n\n  const setter = ownDesc.set;\n  if (setter === undefined) {\n    return false;\n  }\n  call(setter, receiver, value);\n  return true;\n}\n\nfunction isDataDescriptor(desc) {\n  return Object.hasOwn(desc, \"value\") || Object.hasOwn(desc, \"writable\");\n}\n\nfunction isAccessorDescriptor(desc) {\n  return Object.hasOwn(desc, \"get\") || Object.hasOwn(desc, \"set\");\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nconst asyncIteratorNext = Symbol(\"async iterator get the next iteration result\");\nconst asyncIteratorReturn = Symbol(\"async iterator return steps\");\nconst asyncIteratorInit = Symbol(\"async iterator initialization steps\");\nconst asyncIteratorEOI = Symbol(\"async iterator end of iteration\");\n\nmodule.exports = exports = {\n  isObject,\n  define,\n  newObjectInRealm,\n  wrapperSymbol,\n  implSymbol,\n  getSameObject,\n  ctorRegistrySymbol,\n  initCtorRegistry,\n  wrapperForImpl,\n  implForWrapper,\n  tryWrapperForImpl,\n  tryImplForWrapper,\n  iterInternalSymbol,\n  isArrayBuffer,\n  isSharedArrayBuffer,\n  isArrayIndexPropName,\n  supportsPropertyIndex,\n  supportedPropertyIndices,\n  supportsPropertyName,\n  supportedPropertyNames,\n  indexedGet,\n  indexedSetNew,\n  indexedSetExisting,\n  namedGet,\n  namedSetNew,\n  namedSetExisting,\n  namedDelete,\n  asyncIteratorNext,\n  asyncIteratorReturn,\n  asyncIteratorInit,\n  asyncIteratorEOI,\n  iteratorResult,\n  ordinarySetWithOwnDescriptor\n};\n","import { nativeEncoder, nativeDecoder } from './platform.js'\nimport { encodeAscii, decodeAscii } from './latin1.js'\n\n// See https://datatracker.ietf.org/doc/html/rfc4648\n\nconst BASE64 = [...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/']\nconst BASE64URL = [...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_']\nconst BASE64_HELPERS = {}\nconst BASE64URL_HELPERS = {}\n\nexport const E_CHAR = 'Invalid character in base64 input'\nexport const E_PADDING = 'Invalid base64 padding'\nexport const E_LENGTH = 'Invalid base64 length'\nexport const E_LAST = 'Invalid last chunk'\n\n// We construct output by concatenating chars, this seems to be fine enough on modern JS engines\n// Expects a checked Uint8Array\nexport function toBase64(arr, isURL, padding) {\n  const fullChunks = (arr.length / 3) | 0\n  const fullChunksBytes = fullChunks * 3\n  let o = ''\n  let i = 0\n\n  const alphabet = isURL ? BASE64URL : BASE64\n  const helpers = isURL ? BASE64URL_HELPERS : BASE64_HELPERS\n  if (!helpers.pairs) {\n    helpers.pairs = []\n    if (nativeDecoder) {\n      // Lazy to save memory in case if this is not needed\n      helpers.codepairs = new Uint16Array(64 * 64)\n      const u16 = helpers.codepairs\n      const u8 = new Uint8Array(u16.buffer, u16.byteOffset, u16.byteLength) // write as 1-byte to ignore BE/LE difference\n      for (let i = 0; i < 64; i++) {\n        const ic = alphabet[i].charCodeAt(0)\n        for (let j = 0; j < 64; j++) u8[(i << 7) | (j << 1)] = u8[(j << 7) | ((i << 1) + 1)] = ic\n      }\n    } else {\n      const p = helpers.pairs\n      for (let i = 0; i < 64; i++) {\n        for (let j = 0; j < 64; j++) p.push(`${alphabet[i]}${alphabet[j]}`)\n      }\n    }\n  }\n\n  const { pairs, codepairs } = helpers\n\n  // Fast path for complete blocks\n  // This whole loop can be commented out, the algorithm won't change, it's just an optimization of the next loop\n  if (nativeDecoder) {\n    const oa = new Uint16Array(fullChunks * 2)\n    let j = 0\n    for (const last = arr.length - 11; i < last; i += 12, j += 8) {\n      const x0 = arr[i]\n      const x1 = arr[i + 1]\n      const x2 = arr[i + 2]\n      const x3 = arr[i + 3]\n      const x4 = arr[i + 4]\n      const x5 = arr[i + 5]\n      const x6 = arr[i + 6]\n      const x7 = arr[i + 7]\n      const x8 = arr[i + 8]\n      const x9 = arr[i + 9]\n      const x10 = arr[i + 10]\n      const x11 = arr[i + 11]\n      oa[j] = codepairs[(x0 << 4) | (x1 >> 4)]\n      oa[j + 1] = codepairs[((x1 & 0x0f) << 8) | x2]\n      oa[j + 2] = codepairs[(x3 << 4) | (x4 >> 4)]\n      oa[j + 3] = codepairs[((x4 & 0x0f) << 8) | x5]\n      oa[j + 4] = codepairs[(x6 << 4) | (x7 >> 4)]\n      oa[j + 5] = codepairs[((x7 & 0x0f) << 8) | x8]\n      oa[j + 6] = codepairs[(x9 << 4) | (x10 >> 4)]\n      oa[j + 7] = codepairs[((x10 & 0x0f) << 8) | x11]\n    }\n\n    // i < last here is equivalent to i < fullChunksBytes\n    for (const last = arr.length - 2; i < last; i += 3, j += 2) {\n      const a = arr[i]\n      const b = arr[i + 1]\n      const c = arr[i + 2]\n      oa[j] = codepairs[(a << 4) | (b >> 4)]\n      oa[j + 1] = codepairs[((b & 0x0f) << 8) | c]\n    }\n\n    o = decodeAscii(oa)\n  } else {\n    // This can be optimized by ~25% with templates on Hermes, but this codepath is not called on Hermes, it uses btoa\n    // Check git history for templates version\n    for (; i < fullChunksBytes; i += 3) {\n      const a = arr[i]\n      const b = arr[i + 1]\n      const c = arr[i + 2]\n      o += pairs[(a << 4) | (b >> 4)]\n      o += pairs[((b & 0x0f) << 8) | c]\n    }\n  }\n\n  // If we have something left, process it with a full algo\n  let carry = 0\n  let shift = 2 // First byte needs to be shifted by 2 to get 6 bits\n  const length = arr.length\n  for (; i < length; i++) {\n    const x = arr[i]\n    o += alphabet[carry | (x >> shift)] // shift >= 2, so this fits\n    if (shift === 6) {\n      shift = 0\n      o += alphabet[x & 0x3f]\n    }\n\n    carry = (x << (6 - shift)) & 0x3f\n    shift += 2 // Each byte prints 6 bits and leaves 2 bits\n  }\n\n  if (shift !== 2) o += alphabet[carry] // shift 2 means we have no carry left\n  if (padding) o += ['', '==', '='][length - fullChunksBytes]\n\n  return o\n}\n\n// TODO: can this be optimized? This only affects non-Hermes barebone engines though\nconst mapSize = nativeEncoder ? 128 : 65_536 // we have to store 64 KiB map or recheck everything if we can't decode to byte array\n\nexport function fromBase64(str, isURL) {\n  let inputLength = str.length\n  while (str[inputLength - 1] === '=') inputLength--\n  const paddingLength = str.length - inputLength\n  const tailLength = inputLength % 4\n  const mainLength = inputLength - tailLength // multiples of 4\n  if (tailLength === 1) throw new SyntaxError(E_LENGTH)\n  if (paddingLength > 3 || (paddingLength !== 0 && str.length % 4 !== 0)) {\n    throw new SyntaxError(E_PADDING)\n  }\n\n  const alphabet = isURL ? BASE64URL : BASE64\n  const helpers = isURL ? BASE64URL_HELPERS : BASE64_HELPERS\n\n  if (!helpers.fromMap) {\n    helpers.fromMap = new Int8Array(mapSize).fill(-1) // no regex input validation here, so we map all other bytes to -1 and recheck sign\n    alphabet.forEach((c, i) => (helpers.fromMap[c.charCodeAt(0)] = i))\n  }\n\n  const m = helpers.fromMap\n\n  const arr = new Uint8Array(Math.floor((inputLength * 3) / 4))\n  let at = 0\n  let i = 0\n\n  if (nativeEncoder) {\n    const codes = encodeAscii(str, E_CHAR)\n    for (; i < mainLength; i += 4) {\n      const c0 = codes[i]\n      const c1 = codes[i + 1]\n      const c2 = codes[i + 2]\n      const c3 = codes[i + 3]\n      const a = (m[c0] << 18) | (m[c1] << 12) | (m[c2] << 6) | m[c3]\n      if (a < 0) throw new SyntaxError(E_CHAR)\n      arr[at] = a >> 16\n      arr[at + 1] = (a >> 8) & 0xff\n      arr[at + 2] = a & 0xff\n      at += 3\n    }\n  } else {\n    for (; i < mainLength; i += 4) {\n      const c0 = str.charCodeAt(i)\n      const c1 = str.charCodeAt(i + 1)\n      const c2 = str.charCodeAt(i + 2)\n      const c3 = str.charCodeAt(i + 3)\n      const a = (m[c0] << 18) | (m[c1] << 12) | (m[c2] << 6) | m[c3]\n      if (a < 0) throw new SyntaxError(E_CHAR)\n      arr[at] = a >> 16\n      arr[at + 1] = (a >> 8) & 0xff\n      arr[at + 2] = a & 0xff\n      at += 3\n    }\n  }\n\n  // Can be 0, 2 or 3, verified by padding checks already\n  if (tailLength < 2) return arr // 0\n  const ab = (m[str.charCodeAt(i++)] << 6) | m[str.charCodeAt(i++)]\n  if (ab < 0) throw new SyntaxError(E_CHAR)\n  arr[at++] = ab >> 4\n  if (tailLength < 3) {\n    if (ab & 0xf) throw new SyntaxError(E_LAST)\n    return arr // 2\n  }\n\n  const c = m[str.charCodeAt(i++)]\n  if (c < 0) throw new SyntaxError(E_CHAR)\n  arr[at++] = ((ab << 4) & 0xff) | (c >> 2)\n  if (c & 0x3) throw new SyntaxError(E_LAST)\n  return arr // 3\n}\n","import { assertEmptyRest } from './assert.js'\nimport { typedView } from './array.js'\nimport { assertU8, E_STRING } from './fallback/_utils.js'\nimport { isHermes } from './fallback/platform.js'\nimport { decodeLatin1, encodeLatin1 } from './fallback/latin1.js'\nimport * as js from './fallback/base64.js'\n\n// See https://datatracker.ietf.org/doc/html/rfc4648\n\n// base64:    A-Za-z0-9+/ and = if padding not disabled\n// base64url: A-Za-z0-9_- and = if padding enabled\n\nconst { Buffer, atob, btoa } = globalThis // Buffer is optional, only used when native\nconst haveNativeBuffer = Buffer && !Buffer.TYPED_ARRAY_SUPPORT\nconst { toBase64: web64 } = Uint8Array.prototype // Modern engines have this\n\nconst { E_CHAR, E_PADDING, E_LENGTH, E_LAST } = js\n\n// faster only on Hermes (and a little in old Chrome), js path beats it on normal engines\nconst shouldUseBtoa = btoa && isHermes\nconst shouldUseAtob = atob && isHermes\n\n// For native Buffer codepaths only\nconst isBuffer = (x) => x.constructor === Buffer && Buffer.isBuffer(x)\nconst toBuffer = (x) => (isBuffer(x) ? x : Buffer.from(x.buffer, x.byteOffset, x.byteLength))\n\nfunction maybeUnpad(res, padding) {\n  if (padding) return res\n  const at = res.indexOf('=', res.length - 3)\n  return at === -1 ? res : res.slice(0, at)\n}\n\nfunction maybePad(res, padding) {\n  return padding && res.length % 4 !== 0 ? res + '='.repeat(4 - (res.length % 4)) : res\n}\n\nconst toUrl = (x) => x.replaceAll('+', '-').replaceAll('/', '_')\nconst haveWeb = (x) => web64 && x.toBase64 === web64\n\nexport function toBase64(x, { padding = true } = {}) {\n  assertU8(x)\n  if (haveWeb(x)) return padding ? x.toBase64() : x.toBase64({ omitPadding: !padding }) // Modern, optionless is slightly faster\n  if (haveNativeBuffer) return maybeUnpad(toBuffer(x).base64Slice(0, x.byteLength), padding) // Older Node.js\n  if (shouldUseBtoa) return maybeUnpad(btoa(decodeLatin1(x)), padding)\n  return js.toBase64(x, false, padding) // Fallback\n}\n\n// NOTE: base64url omits padding by default\nexport function toBase64url(x, { padding = false } = {}) {\n  assertU8(x)\n  if (haveWeb(x)) return x.toBase64({ alphabet: 'base64url', omitPadding: !padding }) // Modern\n  if (haveNativeBuffer) return maybePad(toBuffer(x).base64urlSlice(0, x.byteLength), padding) // Older Node.js\n  if (shouldUseBtoa) return maybeUnpad(toUrl(btoa(decodeLatin1(x))), padding)\n  return js.toBase64(x, true, padding) // Fallback\n}\n\n// Unlike Buffer.from(), throws on invalid input (non-base64 symbols and incomplete chunks)\n// Unlike Buffer.from() and Uint8Array.fromBase64(), does not allow spaces\n// NOTE: Always operates in strict mode for last chunk\n\n// By default accepts both padded and non-padded variants, only strict base64\nexport function fromBase64(str, options) {\n  if (typeof options === 'string') options = { format: options } // Compat due to usage, TODO: remove\n  if (!options) return fromBase64common(str, false, 'both', 'uint8', null)\n  const { format = 'uint8', padding = 'both', ...rest } = options\n  return fromBase64common(str, false, padding, format, rest)\n}\n\n// By default accepts only non-padded strict base64url\nexport function fromBase64url(str, options) {\n  if (!options) return fromBase64common(str, true, false, 'uint8', null)\n  const { format = 'uint8', padding = false, ...rest } = options\n  return fromBase64common(str, true, padding, format, rest)\n}\n\n// By default accepts both padded and non-padded variants, base64 or base64url\nexport function fromBase64any(str, { format = 'uint8', padding = 'both', ...rest } = {}) {\n  const isBase64url = !str.includes('+') && !str.includes('/') // likely to fail fast, as most input is non-url, also double scan is faster than regex\n  return fromBase64common(str, isBase64url, padding, format, rest)\n}\n\nfunction fromBase64common(str, isBase64url, padding, format, rest) {\n  if (typeof str !== 'string') throw new TypeError(E_STRING)\n  if (rest !== null) assertEmptyRest(rest)\n  const auto = padding === 'both' ? str.endsWith('=') : undefined\n  // Older JSC supporting Uint8Array.fromBase64 lacks proper checks\n  if (padding === true || auto === true) {\n    if (str.length % 4 !== 0) throw new SyntaxError(E_PADDING) // JSC misses this\n    if (str[str.length - 3] === '=') throw new SyntaxError(E_PADDING) // no more than two = at the end\n  } else if (padding === false || auto === false) {\n    if (str.length % 4 === 1) throw new SyntaxError(E_LENGTH) // JSC misses this in fromBase64\n    if (padding === false && str.endsWith('=')) {\n      throw new SyntaxError('Did not expect padding in base64 input') // inclusion is checked separately\n    }\n  } else {\n    throw new TypeError('Invalid padding option')\n  }\n\n  return typedView(fromBase64impl(str, isBase64url, padding), format)\n}\n\n// ASCII whitespace is U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, or U+0020 SPACE\nconst ASCII_WHITESPACE = /[\\t\\n\\f\\r ]/ // non-u for JSC perf\n\nfunction noWhitespaceSeen(str, arr) {\n  const at = str.indexOf('=', str.length - 3)\n  const paddingLength = at >= 0 ? str.length - at : 0\n  const chars = str.length - paddingLength\n  const e = chars % 4 // extra chars past blocks of 4\n  const b = arr.length - ((chars - e) / 4) * 3 // remaining bytes not covered by full blocks of chars\n  return (e === 0 && b === 0) || (e === 2 && b === 1) || (e === 3 && b === 2)\n}\n\nlet fromBase64impl\nif (Uint8Array.fromBase64) {\n  // NOTICE: this is actually slower than our JS impl in older JavaScriptCore and (slightly) in SpiderMonkey, but faster on V8 and new JavaScriptCore\n  fromBase64impl = (str, isBase64url, padding) => {\n    const alphabet = isBase64url ? 'base64url' : 'base64'\n\n    let arr\n    if (padding === true) {\n      // Padding is required from user, and we already checked that string length is divisible by 4\n      // Padding might still be wrong due to whitespace, but in that case native impl throws expected error\n      arr = Uint8Array.fromBase64(str, { alphabet, lastChunkHandling: 'strict' })\n    } else {\n      try {\n        const padded = str.length % 4 > 0 ? `${str}${'='.repeat(4 - (str.length % 4))}` : str\n        arr = Uint8Array.fromBase64(padded, { alphabet, lastChunkHandling: 'strict' })\n      } catch (err) {\n        // Normalize error: whitespace in input could have caused added padding to be invalid\n        // But reporting that as a padding error would be confusing\n        throw ASCII_WHITESPACE.test(str) ? new SyntaxError(E_CHAR) : err\n      }\n    }\n\n    // We don't allow whitespace in input, but that can be rechecked based on output length\n    // All other chars are checked natively\n    if (!noWhitespaceSeen(str, arr)) throw new SyntaxError(E_CHAR)\n    return arr\n  }\n} else if (haveNativeBuffer) {\n  fromBase64impl = (str, isBase64url, padding) => {\n    const arr = Buffer.from(str, 'base64')\n    // Rechecking by re-encoding is cheaper than regexes on Node.js\n    const got = isBase64url ? maybeUnpad(str, padding === false) : maybePad(str, padding !== true)\n    const valid = isBase64url ? arr.base64urlSlice(0, arr.length) : arr.base64Slice(0, arr.length)\n    if (got !== valid) throw new SyntaxError(E_PADDING)\n    return arr // fully checked\n  }\n} else if (shouldUseAtob) {\n  // atob is faster than manual parsing on Hermes\n  fromBase64impl = (str, isBase64url, padding) => {\n    let arr\n    if (isBase64url) {\n      if (/[\\t\\n\\f\\r +/]/.test(str)) throw new SyntaxError(E_CHAR) // atob verifies other invalid input\n      str = str.replaceAll('-', '+').replaceAll('_', '/') // from url to normal\n    }\n\n    try {\n      arr = encodeLatin1(atob(str))\n    } catch {\n      throw new SyntaxError(E_CHAR) // convert atob errors\n    }\n\n    if (!isBase64url && !noWhitespaceSeen(str, arr)) throw new SyntaxError(E_CHAR) // base64url checks input above\n\n    if (arr.length % 3 !== 0) {\n      // Check last chunk to be strict if it was incomplete\n      const expected = toBase64(arr.subarray(-(arr.length % 3))) // str is normalized to non-url already\n      const end = str.length % 4 === 0 ? str.slice(-4) : str.slice(-(str.length % 4)).padEnd(4, '=')\n      if (expected !== end) throw new SyntaxError(E_LAST)\n    }\n\n    return arr\n  }\n} else {\n  fromBase64impl = (str, isBase64url, padding) => js.fromBase64(str, isBase64url) // validated in js\n}\n","","module.exports = () => require('./multi-byte.encodings.json') // lazy-load\n","import { fromBase64url } from '@exodus/bytes/base64.js'\nimport { utf16toString } from '@exodus/bytes/utf16.js'\nimport loadEncodings from './multi-byte.encodings.cjs'\n\nexport const sizes = {\n  jis0208: 11_104,\n  jis0212: 7211,\n  'euc-kr': 23_750,\n  gb18030: 23_940,\n  big5: 19_782,\n}\n\n// This is huge. It's _much_ smaller than https://npmjs.com/text-encoding though\n// Exactly as mapped by the index table\n// 0,x - hole of x empty elements\n// n,c - continious [c, ...] of length n\n// $.. - references to common chunks\n// -{x} - same as 1,{x}\n\n// See tests/multi-byte.test.js to verify that this data decodes exactly into the encoding spec tables\n\nlet indices\nconst tables = new Map()\n/* eslint-disable @exodus/mutable/no-param-reassign-prop-only */\n\nfunction loadBase64(str) {\n  const x = fromBase64url(str)\n  const len = x.length\n  const len2 = len >> 1\n  const y = new Uint8Array(len)\n  let a = -1, b = 0 // prettier-ignore\n  for (let i = 0, j = 0; i < len; i += 2, j++) {\n    a = (a + x[j] + 1) & 0xff\n    b = (b + x[len2 + j]) & 0xff\n    y[i] = a\n    y[i + 1] = b\n  }\n\n  return y\n}\n\nfunction unwrap(res, t, pos) {\n  let code = 0\n  for (let i = 0; i < t.length; i++) {\n    let x = t[i]\n    if (typeof x === 'number') {\n      if (x === 0) {\n        pos += t[++i]\n      } else {\n        if (x < 0) {\n          code -= x\n          x = 1\n        } else {\n          code += t[++i]\n        }\n\n        for (let k = 0; k < x; k++, pos++, code++) {\n          if (code <= 0xff_ff) {\n            res[pos] = code\n          } else {\n            const c = String.fromCodePoint(code)\n            res[pos] = (c.charCodeAt(0) << 16) | c.charCodeAt(1)\n          }\n        }\n      }\n    } else if (x[0] === '$' && Object.hasOwn(indices, x)) {\n      pos = unwrap(res, indices[x], pos) // self-reference using shared chunks\n    } else {\n      let last\n      // splits by codepoints\n      for (const c of utf16toString(loadBase64(x), 'uint8-le')) {\n        last = c\n        res[pos++] = c.length === 1 ? c.charCodeAt(0) : (c.charCodeAt(0) << 16) | c.charCodeAt(1)\n      }\n\n      code = last.codePointAt(0) + 1\n    }\n  }\n\n  return pos\n}\n\nexport function getTable(id) {\n  const cached = tables.get(id)\n  if (cached) return cached\n\n  if (!indices) indices = loadEncodings() // lazy-load\n  if (!Object.hasOwn(indices, id)) throw new Error('Unknown encoding')\n  if (!indices[id]) throw new Error('Table already used (likely incorrect bundler dedupe)')\n\n  let res\n  if (id.endsWith('-ranges')) {\n    res = []\n    let a = 0, b = 0 // prettier-ignore\n    const idx = indices[id]\n    while (idx.length > 0) res.push([(a += idx.shift()), (b += idx.shift())]) // destroying, we remove it later anyway\n  } else if (id.endsWith('-katakana')) {\n    let a = -1\n    res = new Uint16Array(indices[id].map((x) => (a += x + 1)))\n  } else if (id === 'big5') {\n    res = new Uint32Array(sizes[id]) // single or double charcodes\n    unwrap(res, indices[id], 0)\n    // Pointer code updates are embedded into the table\n    // These are skipped in encoder as encoder uses only pointers >= (0xA1 - 0x81) * 157\n    res[1133] = 0xca_03_04\n    res[1135] = 0xca_03_0c\n    res[1164] = 0xea_03_04\n    res[1166] = 0xea_03_0c\n  } else {\n    if (!Object.hasOwn(sizes, id)) throw new Error('Unknown encoding')\n    res = new Uint16Array(sizes[id])\n    unwrap(res, indices[id], 0)\n  }\n\n  indices[id] = null // gc\n  tables.set(id, res)\n  return res\n}\n","import { E_STRING } from './_utils.js'\nimport { asciiPrefix, decodeAscii, decodeLatin1, decodeUCS2, encodeAscii } from './latin1.js'\nimport { getTable } from './multi-byte.table.js'\n\nexport const E_STRICT = 'Input is not well-formed for this encoding'\n\n/* Decoders */\n\n// If the decoder is not cleared properly, state can be preserved between non-streaming calls!\n// See comment about fatal stream\n\n// All except iso-2022-jp are ASCII supersets\n// When adding something that is not an ASCII superset, ajust the ASCII fast path\nconst mappers = {\n  // https://encoding.spec.whatwg.org/#euc-kr-decoder\n  'euc-kr': (err) => {\n    const euc = getTable('euc-kr')\n    let lead = 0\n    let oi = 0\n    let o16\n\n    const decodeLead = (b) => {\n      if (b < 0x41 || b > 0xfe) {\n        lead = 0\n        o16[oi++] = err()\n        if (b < 128) o16[oi++] = b\n      } else {\n        const p = euc[(lead - 0x81) * 190 + b - 0x41]\n        lead = 0\n        if (p) {\n          o16[oi++] = p\n        } else {\n          o16[oi++] = err()\n          if (b < 128) o16[oi++] = b\n        }\n      }\n    }\n\n    const decode = (arr, start, end, stream) => {\n      let i = start\n      o16 = new Uint16Array(end - start + (lead ? 1 : 0)) // there are pairs but they consume more than one byte\n      oi = 0\n\n      // Fast path\n      if (!lead) {\n        for (const last1 = end - 1; i < last1; ) {\n          const l = arr[i]\n          if (l < 128) {\n            o16[oi++] = l\n            i++\n          } else {\n            if (l === 0x80 || l === 0xff) break\n            const b = arr[i + 1]\n            if (b < 0x41 || b === 0xff) break\n            const p = euc[(l - 0x81) * 190 + b - 0x41]\n            if (!p) break\n            o16[oi++] = p\n            i += 2\n          }\n        }\n      }\n\n      if (lead && i < end) decodeLead(arr[i++])\n      while (i < end) {\n        const b = arr[i++]\n        if (b < 128) {\n          o16[oi++] = b\n        } else if (b === 0x80 || b === 0xff) {\n          o16[oi++] = err()\n        } else {\n          lead = b\n          if (i < end) decodeLead(arr[i++])\n        }\n      }\n\n      if (lead && !stream) {\n        lead = 0\n        o16[oi++] = err()\n      }\n\n      const res = decodeUCS2(o16, oi)\n      o16 = null\n      return res\n    }\n\n    return { decode, isAscii: () => lead === 0 }\n  },\n  // https://encoding.spec.whatwg.org/#euc-jp-decoder\n  'euc-jp': (err) => {\n    const jis0208 = getTable('jis0208')\n    const jis0212 = getTable('jis0212')\n    let j12 = false\n    let lead = 0\n    let oi = 0\n    let o16\n\n    const decodeLead = (b) => {\n      if (lead === 0x8e && b >= 0xa1 && b <= 0xdf) {\n        lead = 0\n        o16[oi++] = 0xfe_c0 + b\n      } else if (lead === 0x8f && b >= 0xa1 && b <= 0xfe) {\n        j12 = true\n        lead = b\n      } else {\n        let cp\n        if (lead >= 0xa1 && lead <= 0xfe && b >= 0xa1 && b <= 0xfe) {\n          cp = (j12 ? jis0212 : jis0208)[(lead - 0xa1) * 94 + b - 0xa1]\n        }\n\n        lead = 0\n        j12 = false\n        if (cp) {\n          o16[oi++] = cp\n        } else {\n          o16[oi++] = err()\n          if (b < 128) o16[oi++] = b\n        }\n      }\n    }\n\n    const decode = (arr, start, end, stream) => {\n      let i = start\n      o16 = new Uint16Array(end - start + (lead ? 1 : 0))\n      oi = 0\n\n      // Fast path, non-j12\n      // lead = 0 means j12 = 0\n      if (!lead) {\n        for (const last1 = end - 1; i < last1; ) {\n          const l = arr[i]\n          if (l < 128) {\n            o16[oi++] = l\n            i++\n          } else {\n            const b = arr[i + 1]\n            if (l === 0x8e && b >= 0xa1 && b <= 0xdf) {\n              o16[oi++] = 0xfe_c0 + b\n              i += 2\n            } else {\n              if (l < 0xa1 || l === 0xff || b < 0xa1 || b === 0xff) break\n              const cp = jis0208[(l - 0xa1) * 94 + b - 0xa1]\n              if (!cp) break\n              o16[oi++] = cp\n              i += 2\n            }\n          }\n        }\n      }\n\n      if (lead && i < end) decodeLead(arr[i++])\n      if (lead && i < end) decodeLead(arr[i++]) // could be two leads, but no more\n      while (i < end) {\n        const b = arr[i++]\n        if (b < 128) {\n          o16[oi++] = b\n        } else if ((b < 0xa1 && b !== 0x8e && b !== 0x8f) || b === 0xff) {\n          o16[oi++] = err()\n        } else {\n          lead = b\n          if (i < end) decodeLead(arr[i++])\n          if (lead && i < end) decodeLead(arr[i++]) // could be two leads\n        }\n      }\n\n      if (lead && !stream) {\n        lead = 0\n        j12 = false // can be true only when lead is non-zero\n        o16[oi++] = err()\n      }\n\n      const res = decodeUCS2(o16, oi)\n      o16 = null\n      return res\n    }\n\n    return { decode, isAscii: () => lead === 0 } // j12 can be true only when lead is non-zero\n  },\n  // https://encoding.spec.whatwg.org/#iso-2022-jp-decoder\n  'iso-2022-jp': (err) => {\n    const jis0208 = getTable('jis0208')\n    let dState = 1\n    let oState = 1\n    let lead = 0 // 0 or 0x21-0x7e\n    let out = false\n\n    const bytes = (pushback, b) => {\n      if (dState < 5 && b === 0x1b) {\n        dState = 6 // escape start\n        return\n      }\n\n      switch (dState) {\n        case 1:\n        case 2:\n          // ASCII, Roman (common)\n          out = false\n          if (dState === 2) {\n            if (b === 0x5c) return 0xa5\n            if (b === 0x7e) return 0x20_3e\n          }\n\n          if (b <= 0x7f && b !== 0x0e && b !== 0x0f) return b\n          return err()\n        case 3:\n          // Katakana\n          out = false\n          if (b >= 0x21 && b <= 0x5f) return 0xff_40 + b\n          return err()\n        case 4:\n          // Leading byte\n          out = false\n          if (b < 0x21 || b > 0x7e) return err()\n          lead = b\n          dState = 5\n          return\n        case 5:\n          // Trailing byte\n          out = false\n          if (b === 0x1b) {\n            dState = 6 // escape start\n            return err()\n          }\n\n          dState = 4\n          if (b >= 0x21 && b <= 0x7e) {\n            const cp = jis0208[(lead - 0x21) * 94 + b - 0x21]\n            if (cp) return cp\n          }\n\n          return err()\n        case 6:\n          // Escape start\n          if (b === 0x24 || b === 0x28) {\n            lead = b\n            dState = 7\n            return\n          }\n\n          out = false\n          dState = oState\n          pushback.push(b)\n          return err()\n        case 7: {\n          // Escape\n          const l = lead\n          lead = 0\n          let s\n          if (l === 0x28) {\n            // eslint-disable-next-line unicorn/prefer-switch\n            if (b === 0x42) {\n              s = 1\n            } else if (b === 0x4a) {\n              s = 2\n            } else if (b === 0x49) {\n              s = 3\n            }\n          } else if (l === 0x24 && (b === 0x40 || b === 0x42)) {\n            s = 4\n          }\n\n          if (s) {\n            dState = oState = s\n            const output = out\n            out = true\n            return output ? err() : undefined\n          }\n\n          out = false\n          dState = oState\n          pushback.push(b, l)\n          return err()\n        }\n      }\n    }\n\n    const eof = (pushback) => {\n      if (dState < 5) return null\n      out = false\n      switch (dState) {\n        case 5:\n          dState = 4\n          return err()\n        case 6:\n          dState = oState\n          return err()\n        case 7: {\n          dState = oState\n          pushback.push(lead)\n          lead = 0\n          return err()\n        }\n      }\n    }\n\n    const decode = (arr, start, end, stream) => {\n      const o16 = new Uint16Array(end - start + 2) // err in eof + lead from state\n      let oi = 0\n      let i = start\n      const pushback = [] // local and auto-cleared\n\n      // First, dump everything until EOF\n      // Same as the full loop, but without EOF handling\n      while (i < end || pushback.length > 0) {\n        const c = bytes(pushback, pushback.length > 0 ? pushback.pop() : arr[i++])\n        if (c !== undefined) o16[oi++] = c // 16-bit\n      }\n\n      // Then, dump EOF. This needs the same loop as the characters can be pushed back\n      if (!stream) {\n        while (i <= end || pushback.length > 0) {\n          if (i < end || pushback.length > 0) {\n            const c = bytes(pushback, pushback.length > 0 ? pushback.pop() : arr[i++])\n            if (c !== undefined) o16[oi++] = c // 16-bit\n          } else {\n            const c = eof(pushback)\n            if (c === null) break // clean exit\n            o16[oi++] = c\n          }\n        }\n      }\n\n      // Chrome and WebKit fail on this, we don't: completely destroy the old decoder state when finished streaming\n      // > If this’s do not flush is false, then set this’s decoder to a new instance of this’s encoding’s decoder,\n      // > Set this’s do not flush to options[\"stream\"]\n      if (!stream) {\n        dState = oState = 1\n        lead = 0\n        out = false\n      }\n\n      return decodeUCS2(o16, oi)\n    }\n\n    return { decode, isAscii: () => false }\n  },\n  // https://encoding.spec.whatwg.org/#shift_jis-decoder\n  shift_jis: (err) => {\n    const jis0208 = getTable('jis0208')\n    let lead = 0\n    let oi = 0\n    let o16\n\n    const decodeLead = (b) => {\n      const l = lead\n      lead = 0\n      if (b >= 0x40 && b <= 0xfc && b !== 0x7f) {\n        const p = (l - (l < 0xa0 ? 0x81 : 0xc1)) * 188 + b - (b < 0x7f ? 0x40 : 0x41)\n        if (p >= 8836 && p <= 10_715) {\n          o16[oi++] = 0xe0_00 - 8836 + p\n          return\n        }\n\n        const cp = jis0208[p]\n        if (cp) {\n          o16[oi++] = cp\n          return\n        }\n      }\n\n      o16[oi++] = err()\n      if (b < 128) o16[oi++] = b\n    }\n\n    const decode = (arr, start, end, stream) => {\n      o16 = new Uint16Array(end - start + (lead ? 1 : 0))\n      oi = 0\n      let i = start\n\n      // Fast path\n      if (!lead) {\n        for (const last1 = end - 1; i < last1; ) {\n          const l = arr[i]\n          if (l <= 0x80) {\n            o16[oi++] = l\n            i++\n          } else if (l >= 0xa1 && l <= 0xdf) {\n            o16[oi++] = 0xfe_c0 + l\n            i++\n          } else {\n            if (l === 0xa0 || l > 0xfc) break\n            const b = arr[i + 1]\n            if (b < 0x40 || b > 0xfc || b === 0x7f) break\n            const p = (l - (l < 0xa0 ? 0x81 : 0xc1)) * 188 + b - (b < 0x7f ? 0x40 : 0x41)\n            if (p >= 8836 && p <= 10_715) {\n              o16[oi++] = 0xe0_00 - 8836 + p\n              i += 2\n            } else {\n              const cp = jis0208[p]\n              if (!cp) break\n              o16[oi++] = cp\n              i += 2\n            }\n          }\n        }\n      }\n\n      if (lead && i < end) decodeLead(arr[i++])\n      while (i < end) {\n        const b = arr[i++]\n        if (b <= 0x80) {\n          o16[oi++] = b // 0x80 is allowed\n        } else if (b >= 0xa1 && b <= 0xdf) {\n          o16[oi++] = 0xfe_c0 + b\n        } else if (b === 0xa0 || b > 0xfc) {\n          o16[oi++] = err()\n        } else {\n          lead = b\n          if (i < end) decodeLead(arr[i++])\n        }\n      }\n\n      if (lead && !stream) {\n        lead = 0\n        o16[oi++] = err()\n      }\n\n      const res = decodeUCS2(o16, oi)\n      o16 = null\n      return res\n    }\n\n    return { decode, isAscii: () => lead === 0 }\n  },\n  // https://encoding.spec.whatwg.org/#gbk-decoder\n  gbk: (err) => mappers.gb18030(err), // 10.1.1. GBK’s decoder is gb18030’s decoder\n  // https://encoding.spec.whatwg.org/#gb18030-decoder\n  gb18030: (err) => {\n    const gb18030 = getTable('gb18030')\n    const gb18030r = getTable('gb18030-ranges')\n    let g1 = 0, g2 = 0, g3 = 0 // prettier-ignore\n    const index = (p) => {\n      if ((p > 39_419 && p < 189_000) || p > 1_237_575) return\n      if (p === 7457) return 0xe7_c7\n      let a = 0, b = 0 // prettier-ignore\n      for (const [c, d] of gb18030r) {\n        if (c > p) break\n        a = c\n        b = d\n      }\n\n      return b + p - a\n    }\n\n    // g1 is 0 or 0x81-0xfe\n    // g2 is 0 or 0x30-0x39\n    // g3 is 0 or 0x81-0xfe\n\n    const decode = (arr, start, end, stream) => {\n      const o16 = new Uint16Array(end - start + (g1 ? 3 : 0)) // even with pushback it's at most 1 char per byte\n      let oi = 0\n      let i = start\n      const pushback = [] // local and auto-cleared\n\n      // Fast path for 2-byte only\n      // pushback is always empty ad start, and g1 = 0 means g2 = g3 = 0\n      if (g1 === 0) {\n        for (const last1 = end - 1; i < last1; ) {\n          const b = arr[i]\n          if (b < 128) {\n            o16[oi++] = b\n            i++\n          } else if (b === 0x80) {\n            o16[oi++] = 0x20_ac\n            i++\n          } else {\n            if (b === 0xff) break\n            const n = arr[i + 1]\n            let cp\n            if (n < 0x7f) {\n              if (n < 0x40) break\n              cp = gb18030[(b - 0x81) * 190 + n - 0x40]\n            } else {\n              if (n === 0xff || n === 0x7f) break\n              cp = gb18030[(b - 0x81) * 190 + n - 0x41]\n            }\n\n            if (!cp) break\n            o16[oi++] = cp // 16-bit\n            i += 2\n          }\n        }\n      }\n\n      // First, dump everything until EOF\n      // Same as the full loop, but without EOF handling\n      while (i < end || pushback.length > 0) {\n        const b = pushback.length > 0 ? pushback.pop() : arr[i++]\n        if (g1) {\n          // g2 can be set only when g1 is set, g3 can be set only when g2 is set\n          // hence, 3 checks for g3 is faster than 3 checks for g1\n          if (g2) {\n            if (g3) {\n              if (b <= 0x39 && b >= 0x30) {\n                const p = index(\n                  (g1 - 0x81) * 12_600 + (g2 - 0x30) * 1260 + (g3 - 0x81) * 10 + b - 0x30\n                )\n                g1 = g2 = g3 = 0\n                if (p === undefined) {\n                  o16[oi++] = err()\n                } else if (p <= 0xff_ff) {\n                  o16[oi++] = p // Can validly return replacement\n                } else {\n                  const d = p - 0x1_00_00\n                  o16[oi++] = 0xd8_00 | (d >> 10)\n                  o16[oi++] = 0xdc_00 | (d & 0x3_ff)\n                }\n              } else {\n                pushback.push(b, g3, g2)\n                g1 = g2 = g3 = 0\n                o16[oi++] = err()\n              }\n            } else if (b >= 0x81 && b <= 0xfe) {\n              g3 = b\n            } else {\n              pushback.push(b, g2)\n              g1 = g2 = 0\n              o16[oi++] = err()\n            }\n          } else if (b <= 0x39 && b >= 0x30) {\n            g2 = b\n          } else {\n            let cp\n            if (b >= 0x40 && b <= 0xfe && b !== 0x7f) {\n              cp = gb18030[(g1 - 0x81) * 190 + b - (b < 0x7f ? 0x40 : 0x41)]\n            }\n\n            g1 = 0\n            if (cp) {\n              o16[oi++] = cp // 16-bit\n            } else {\n              o16[oi++] = err()\n              if (b < 128) o16[oi++] = b // can be processed immediately\n            }\n          }\n        } else if (b < 128) {\n          o16[oi++] = b\n        } else if (b === 0x80) {\n          o16[oi++] = 0x20_ac\n        } else if (b === 0xff) {\n          o16[oi++] = err()\n        } else {\n          g1 = b\n        }\n      }\n\n      // if g1 = 0 then g2 = g3 = 0\n      if (g1 && !stream) {\n        g1 = g2 = g3 = 0\n        o16[oi++] = err()\n      }\n\n      return decodeUCS2(o16, oi)\n    }\n\n    return { decode, isAscii: () => g1 === 0 } // if g1 = 0 then g2 = g3 = 0\n  },\n  // https://encoding.spec.whatwg.org/#big5\n  big5: (err) => {\n    // The only decoder which returns multiple codepoints per byte, also has non-charcode codepoints\n    // We store that as strings\n    const big5 = getTable('big5')\n    let lead = 0\n    let oi = 0\n    let o16\n\n    const decodeLead = (b) => {\n      if (b < 0x40 || (b > 0x7e && b < 0xa1) || b === 0xff) {\n        lead = 0\n        o16[oi++] = err()\n        if (b < 128) o16[oi++] = b\n      } else {\n        const p = big5[(lead - 0x81) * 157 + b - (b < 0x7f ? 0x40 : 0x62)]\n        lead = 0\n        if (p > 0x1_00_00) {\n          o16[oi++] = p >> 16\n          o16[oi++] = p & 0xff_ff\n        } else if (p) {\n          o16[oi++] = p\n        } else {\n          o16[oi++] = err()\n          if (b < 128) o16[oi++] = b\n        }\n      }\n    }\n\n    // eslint-disable-next-line sonarjs/no-identical-functions\n    const decode = (arr, start, end, stream) => {\n      let i = start\n      o16 = new Uint16Array(end - start + (lead ? 1 : 0)) // there are pairs but they consume more than one byte\n      oi = 0\n\n      // Fast path\n      if (!lead) {\n        for (const last1 = end - 1; i < last1; ) {\n          const l = arr[i]\n          if (l < 128) {\n            o16[oi++] = l\n            i++\n          } else {\n            if (l === 0x80 || l === 0xff) break\n            const b = arr[i + 1]\n            if (b < 0x40 || (b > 0x7e && b < 0xa1) || b === 0xff) break\n            const p = big5[(l - 0x81) * 157 + b - (b < 0x7f ? 0x40 : 0x62)]\n            if (p > 0x1_00_00) {\n              o16[oi++] = p >> 16\n              o16[oi++] = p & 0xff_ff\n            } else {\n              if (!p) break\n              o16[oi++] = p\n            }\n\n            i += 2\n          }\n        }\n      }\n\n      if (lead && i < end) decodeLead(arr[i++])\n      while (i < end) {\n        const b = arr[i++]\n        if (b < 128) {\n          o16[oi++] = b\n        } else if (b === 0x80 || b === 0xff) {\n          o16[oi++] = err()\n        } else {\n          lead = b\n          if (i < end) decodeLead(arr[i++])\n        }\n      }\n\n      if (lead && !stream) {\n        lead = 0\n        o16[oi++] = err()\n      }\n\n      const res = decodeUCS2(o16, oi)\n      o16 = null\n      return res\n    }\n\n    return { decode, isAscii: () => lead === 0 }\n  },\n}\n\nexport const isAsciiSuperset = (enc) => enc !== 'iso-2022-jp' // all others are ASCII supersets and can use fast path\n\nexport function multibyteDecoder(enc, loose = false) {\n  if (typeof loose !== 'boolean') throw new TypeError('loose option should be boolean')\n  if (!Object.hasOwn(mappers, enc)) throw new RangeError('Unsupported encoding')\n\n  // Input is assumed to be typechecked already\n  let mapper\n  const asciiSuperset = isAsciiSuperset(enc)\n  let streaming // because onErr is cached in mapper\n  const onErr = loose\n    ? () => 0xff_fd\n    : () => {\n        // The correct way per spec seems to be not destoying the decoder state in stream mode, even when fatal\n        // Decoders big5, euc-jp, euc-kr, shift_jis, gb18030 / gbk - all clear state before throwing unless EOF, so not affected\n        // iso-2022-jp is the only tricky one one where this !stream check matters in non-stream mode\n        if (!streaming) mapper = null // destroy state, effectively the same as 'do not flush' = false, but early\n        throw new TypeError(E_STRICT)\n      }\n\n  return (arr, stream = false) => {\n    let res = ''\n    if (asciiSuperset && (!mapper || mapper.isAscii?.())) {\n      const prefixLen = asciiPrefix(arr)\n      if (prefixLen === arr.length) return decodeAscii(arr) // ascii\n      res = decodeLatin1(arr, 0, prefixLen) // TODO: check if decodeAscii with subarray is faster for small prefixes too\n    }\n\n    streaming = stream // affects onErr\n    if (!mapper) mapper = mappers[enc](onErr)\n    return res + mapper.decode(arr, res.length, arr.length, stream)\n  }\n}\n\n/* Encoders */\n\nconst maps = new Map()\nconst e7 = [[148, 236], [149, 237], [150, 243]] // prettier-ignore\nconst e8 = [[30, 89], [38, 97], [43, 102], [44, 103], [50, 109], [67, 126], [84, 144], [100, 160]] // prettier-ignore\nconst preencoders = {\n  __proto__: null,\n  big5: (p) => ((((p / 157) | 0) + 0x81) << 8) | ((p % 157 < 0x3f ? 0x40 : 0x62) + (p % 157)),\n  shift_jis: (p) => {\n    const l = (p / 188) | 0\n    const t = p % 188\n    return ((l + (l < 0x1f ? 0x81 : 0xc1)) << 8) | ((t < 0x3f ? 0x40 : 0x41) + t)\n  },\n  'iso-2022-jp': (p) => ((((p / 94) | 0) + 0x21) << 8) | ((p % 94) + 0x21),\n  'euc-jp': (p) => ((((p / 94) | 0) + 0xa1) << 8) | ((p % 94) + 0xa1),\n  'euc-kr': (p) => ((((p / 190) | 0) + 0x81) << 8) | ((p % 190) + 0x41),\n  gb18030: (p) => ((((p / 190) | 0) + 0x81) << 8) | ((p % 190 < 0x3f ? 0x40 : 0x41) + (p % 190)),\n}\n\npreencoders.gbk = preencoders.gb18030\n\n// We accept that encoders use non-trivial amount of mem, for perf\n// most are are 128 KiB mem, big5 is 380 KiB, lazy-loaded at first use\nfunction getMap(id, size, ascii) {\n  const cached = maps.get(id)\n  if (cached) return cached\n  let tname = id\n  const sjis = id === 'shift_jis'\n  const iso2022jp = id === 'iso-2022-jp'\n  if (iso2022jp) tname = 'jis0208'\n  if (id === 'gbk') tname = 'gb18030'\n  if (id === 'euc-jp' || sjis) tname = 'jis0208'\n  const table = getTable(tname)\n  const map = new Uint16Array(size)\n  const enc = preencoders[id] || ((p) => p + 1)\n  for (let i = 0; i < table.length; i++) {\n    const c = table[i]\n    if (!c) continue\n    if (id === 'big5') {\n      if (i < 5024) continue // this also skips multi-codepoint strings\n      // In big5, all return first entries except for these\n      if (\n        map[c] &&\n        c !== 0x25_50 &&\n        c !== 0x25_5e &&\n        c !== 0x25_61 &&\n        c !== 0x25_6a &&\n        c !== 0x53_41 &&\n        c !== 0x53_45\n      ) {\n        continue\n      }\n    } else {\n      if (sjis && i >= 8272 && i <= 8835) continue\n      if (map[c]) continue\n    }\n\n    if (c > 0xff_ff) {\n      // always a single codepoint here\n      const s = String.fromCharCode(c >> 16, c & 0xff_ff)\n      map[s.codePointAt(0)] = enc(i)\n    } else {\n      map[c] = enc(i)\n    }\n  }\n\n  if (ascii) for (let i = 0; i < 0x80; i++) map[i] = i\n  if (sjis || id === 'euc-jp') {\n    if (sjis) map[0x80] = 0x80\n    const d = sjis ? 0xfe_c0 : 0x70_c0\n    for (let i = 0xff_61; i <= 0xff_9f; i++) map[i] = i - d\n    map[0x22_12] = map[0xff_0d]\n    map[0xa5] = 0x5c\n    map[0x20_3e] = 0x7e\n  } else if (tname === 'gb18030') {\n    if (id === 'gbk') map[0x20_ac] = 0x80\n    for (let i = 0xe7_8d; i <= 0xe7_93; i++) map[i] = i - 0x40_b4\n    for (const [a, b] of e7) map[0xe7_00 | a] = 0xa6_00 | b\n    for (const [a, b] of e8) map[0xe8_00 | a] = 0xfe_00 | b\n  }\n\n  maps.set(id, map)\n  return map\n}\n\nconst NON_LATIN = /[^\\x00-\\xFF]/ // eslint-disable-line no-control-regex\nlet gb18030r, katakana\n\nexport function multibyteEncoder(enc, onError) {\n  if (!Object.hasOwn(mappers, enc)) throw new RangeError('Unsupported encoding')\n  const size = enc === 'big5' ? 0x2_f8_a7 : 0x1_00_00 // for big5, max codepoint in table + 1\n  const iso2022jp = enc === 'iso-2022-jp'\n  const gb18030 = enc === 'gb18030'\n  const ascii = isAsciiSuperset(enc)\n  const width = iso2022jp ? 5 : gb18030 ? 4 : 2\n  const tailsize = iso2022jp ? 3 : 0\n  const map = getMap(enc, size, ascii)\n  if (gb18030 && !gb18030r) gb18030r = getTable('gb18030-ranges')\n  if (iso2022jp && !katakana) katakana = getTable('iso-2022-jp-katakana')\n  return (str) => {\n    if (typeof str !== 'string') throw new TypeError(E_STRING)\n    if (ascii && !NON_LATIN.test(str)) {\n      try {\n        return encodeAscii(str, E_STRICT)\n      } catch {}\n    }\n\n    const length = str.length\n    const u8 = new Uint8Array(length * width + tailsize)\n    let i = 0\n\n    if (ascii) {\n      while (i < length) {\n        const x = str.charCodeAt(i)\n        if (x >= 128) break\n        u8[i++] = x\n      }\n    }\n\n    // eslint-disable-next-line unicorn/consistent-function-scoping\n    const err = (code) => {\n      if (onError) return onError(code, u8, i)\n      throw new TypeError(E_STRICT)\n    }\n\n    if (!map || map.length < size) /* c8 ignore next */ throw new Error('Unreachable') // Important for perf\n\n    if (iso2022jp) {\n      let state = 0 // 0 = ASCII, 1 = Roman, 2 = jis0208\n      const restore = () => {\n        state = 0\n        u8[i++] = 0x1b\n        u8[i++] = 0x28\n        u8[i++] = 0x42\n      }\n\n      for (let j = 0; j < length; j++) {\n        let x = str.charCodeAt(j)\n        if (x >= 0xd8_00 && x < 0xe0_00) {\n          if (state === 2) restore()\n          if (x >= 0xdc_00 || j + 1 === length) {\n            i += err(x) // lone\n          } else {\n            const x1 = str.charCodeAt(j + 1)\n            if (x1 < 0xdc_00 || x1 >= 0xe0_00) {\n              i += err(x) // lone\n            } else {\n              j++ // consume x1\n              i += err(0x1_00_00 + ((x1 & 0x3_ff) | ((x & 0x3_ff) << 10)))\n            }\n          }\n        } else if (x < 0x80) {\n          if (state === 2 || (state === 1 && (x === 0x5c || x === 0x7e))) restore()\n          if (x === 0xe || x === 0xf || x === 0x1b) {\n            i += err(0xff_fd) // 12.2.2. step 3: This returns U+FFFD rather than codePoint to prevent attacks\n          } else {\n            u8[i++] = x\n          }\n        } else if (x === 0xa5 || x === 0x20_3e) {\n          if (state !== 1) {\n            state = 1\n            u8[i++] = 0x1b\n            u8[i++] = 0x28\n            u8[i++] = 0x4a\n          }\n\n          u8[i++] = x === 0xa5 ? 0x5c : 0x7e\n        } else {\n          if (x === 0x22_12) x = 0xff_0d\n          if (x >= 0xff_61 && x <= 0xff_9f) x = katakana[x - 0xff_61]\n          const e = map[x]\n          if (e) {\n            if (state !== 2) {\n              state = 2\n              u8[i++] = 0x1b\n              u8[i++] = 0x24\n              u8[i++] = 0x42\n            }\n\n            u8[i++] = e >> 8\n            u8[i++] = e & 0xff\n          } else {\n            if (state === 2) restore()\n            i += err(x)\n          }\n        }\n      }\n\n      if (state) restore()\n    } else if (gb18030) {\n      // Deduping this branch hurts other encoders perf\n      const encode = (cp) => {\n        let a = 0, b = 0 // prettier-ignore\n        for (const [c, d] of gb18030r) {\n          if (d > cp) break\n          a = c\n          b = d\n        }\n\n        let rp = cp === 0xe7_c7 ? 7457 : a + cp - b\n        u8[i++] = 0x81 + ((rp / 12_600) | 0)\n        rp %= 12_600\n        u8[i++] = 0x30 + ((rp / 1260) | 0)\n        rp %= 1260\n        u8[i++] = 0x81 + ((rp / 10) | 0)\n        u8[i++] = 0x30 + (rp % 10)\n      }\n\n      for (let j = i; j < length; j++) {\n        const x = str.charCodeAt(j)\n        if (x >= 0xd8_00 && x < 0xe0_00) {\n          if (x >= 0xdc_00 || j + 1 === length) {\n            i += err(x) // lone\n          } else {\n            const x1 = str.charCodeAt(j + 1)\n            if (x1 < 0xdc_00 || x1 >= 0xe0_00) {\n              i += err(x) // lone\n            } else {\n              j++ // consume x1\n              encode(0x1_00_00 + ((x1 & 0x3_ff) | ((x & 0x3_ff) << 10)))\n            }\n          }\n        } else {\n          const e = map[x]\n          if (e & 0xff_00) {\n            u8[i++] = e >> 8\n            u8[i++] = e & 0xff\n          } else if (e || x === 0) {\n            u8[i++] = e\n          } else if (x === 0xe5_e5) {\n            i += err(x)\n          } else {\n            encode(x)\n          }\n        }\n      }\n    } else {\n      const long =\n        enc === 'big5'\n          ? (x) => {\n              const e = map[x]\n              if (e & 0xff_00) {\n                u8[i++] = e >> 8\n                u8[i++] = e & 0xff\n              } else if (e || x === 0) {\n                u8[i++] = e\n              } else {\n                i += err(x)\n              }\n            }\n          : (x) => {\n              i += err(x)\n            }\n\n      for (let j = i; j < length; j++) {\n        const x = str.charCodeAt(j)\n        if (x >= 0xd8_00 && x < 0xe0_00) {\n          if (x >= 0xdc_00 || j + 1 === length) {\n            i += err(x) // lone\n          } else {\n            const x1 = str.charCodeAt(j + 1)\n            if (x1 < 0xdc_00 || x1 >= 0xe0_00) {\n              i += err(x) // lone\n            } else {\n              j++ // consume x1\n              long(0x1_00_00 + ((x1 & 0x3_ff) | ((x & 0x3_ff) << 10)))\n            }\n          }\n        } else {\n          const e = map[x]\n          if (e & 0xff_00) {\n            u8[i++] = e >> 8\n            u8[i++] = e & 0xff\n          } else if (e || x === 0) {\n            u8[i++] = e\n          } else {\n            i += err(x)\n          }\n        }\n      }\n    }\n\n    return i === u8.length ? u8 : u8.subarray(0, i)\n  }\n}\n","import { assertU8, toBuf } from './fallback/_utils.js'\nimport { isDeno } from './fallback/platform.js'\nimport { isAsciiSuperset, multibyteDecoder, multibyteEncoder } from './fallback/multi-byte.js'\nimport { isAscii } from 'node:buffer'\n\nexport function createMultibyteDecoder(encoding, loose = false) {\n  const jsDecoder = multibyteDecoder(encoding, loose) // asserts\n  let streaming = false\n  const asciiSuperset = isAsciiSuperset(encoding)\n  return (arr, stream = false) => {\n    assertU8(arr)\n    if (!streaming) {\n      if (arr.byteLength === 0) return ''\n      if (asciiSuperset && isAscii(arr)) {\n        if (isDeno) return toBuf(arr).toString()\n        return toBuf(arr).latin1Slice(0, arr.byteLength) // .latin1Slice is faster than .asciiSlice\n      }\n    }\n\n    streaming = stream\n    return jsDecoder(arr, stream)\n  }\n}\n\nexport function createMultibyteEncoder(encoding, { mode = 'fatal' } = {}) {\n  // TODO: replacement, truncate (replacement will need varying length)\n  if (mode !== 'fatal') throw new Error('Unsupported mode')\n  return multibyteEncoder(encoding) // asserts\n}\n","import { createMultibyteDecoder } from '@exodus/bytes/multi-byte.js'\nimport { multibyteEncoder } from './fallback/multi-byte.js'\nimport { setMultibyte } from './fallback/encoding.js'\n\nsetMultibyte(createMultibyteDecoder, multibyteEncoder)\n\nexport {\n  TextDecoder,\n  TextEncoder,\n  TextDecoderStream,\n  TextEncoderStream,\n  normalizeEncoding,\n  getBOMEncoding,\n  labelToName,\n  legacyHookDecode,\n} from './fallback/encoding.js'\n","import { decodeAscii, encodeLatin1 } from './latin1.js'\nimport { decode2string } from './platform.js'\n\nconst ERR = 'percentEncodeSet must be a string of unique increasing codepoints in range 0x20 - 0x7e'\nconst percentMap = new Map()\nlet hex, base\n\nexport function percentEncoder(set, spaceAsPlus = false) {\n  if (typeof set !== 'string' || /[^\\x20-\\x7E]/.test(set)) throw new TypeError(ERR)\n  if (typeof spaceAsPlus !== 'boolean') throw new TypeError('spaceAsPlus must be boolean')\n  const id = set + +spaceAsPlus\n  const cached = percentMap.get(id)\n  if (cached) return cached\n\n  const n = encodeLatin1(set).sort() // string checked above to be ascii\n  if (decodeAscii(n) !== set || new Set(n).size !== n.length) throw new TypeError(ERR)\n\n  if (!base) {\n    hex = Array.from({ length: 256 }, (_, i) => `%${i.toString(16).padStart(2, '0').toUpperCase()}`)\n    base = hex.map((h, i) => (i < 0x20 || i > 0x7e ? h : String.fromCharCode(i)))\n  }\n\n  const map = base.slice() // copy\n  for (const c of n) map[c] = hex[c]\n  if (spaceAsPlus) map[0x20] = '+' // overrides whatever percentEncodeSet thinks about it\n\n  // Input is not typechecked, for internal use only\n  const percentEncode = (u8, start = 0, end = u8.length) => decode2string(u8, start, end, map)\n  percentMap.set(id, percentEncode)\n  return percentEncode\n}\n","import { utf8fromStringLoose } from '@exodus/bytes/utf8.js'\nimport { createSinglebyteEncoder } from '@exodus/bytes/single-byte.js'\nimport {\n  isMultibyte,\n  getMultibyteEncoder,\n  normalizeEncoding,\n  E_ENCODING,\n} from './fallback/encoding.js'\nimport { percentEncoder } from './fallback/percent.js'\nimport { encodeMap } from './fallback/single-byte.js'\nimport { E_STRING } from './fallback/_utils.js'\n\n// https://url.spec.whatwg.org/#string-percent-encode-after-encoding\n// Codepoints below 0x20, 0x7F specifically, and above 0x7F (non-ASCII) are always encoded\n// > A C0 control is a code point in the range U+0000 NULL to U+001F INFORMATION SEPARATOR ONE, inclusive.\n// > The C0 control percent-encode set are the C0 controls and all code points greater than U+007E (~).\nexport function percentEncodeAfterEncoding(encoding, input, percentEncodeSet, spaceAsPlus = false) {\n  const enc = normalizeEncoding(encoding)\n  // Ref: https://encoding.spec.whatwg.org/#get-an-encoder\n  if (!enc || enc === 'replacement' || enc === 'utf-16le' || enc === 'utf-16be') {\n    throw new RangeError(E_ENCODING)\n  }\n\n  const percent = percentEncoder(percentEncodeSet, spaceAsPlus)\n  if (enc === 'utf-8') return percent(utf8fromStringLoose(input))\n\n  const multi = isMultibyte(enc)\n  const encoder = multi ? getMultibyteEncoder() : createSinglebyteEncoder\n  const fatal = encoder(enc)\n  try {\n    return percent(fatal(input))\n  } catch {}\n\n  let res = ''\n  let last = 0\n  if (multi) {\n    const rep = enc === 'gb18030' ? percent(fatal('\\uFFFD')) : `%26%23${0xff_fd}%3B` // only gb18030 can encode it\n    const escaping = encoder(enc, (cp, u, i) => {\n      res += percent(u, last, i)\n      res += cp >= 0xd8_00 && cp < 0xe0_00 ? rep : `%26%23${cp}%3B` // &#cp;\n      last = i\n      return 0 // no bytes emitted\n    })\n\n    const u = escaping(input) // has side effects on res\n    res += percent(u, last)\n  } else {\n    if (typeof input !== 'string') throw new TypeError(E_STRING) // all other paths have their own validation\n    const m = encodeMap(enc)\n    const len = input.length\n    const u = new Uint8Array(len)\n    for (let i = 0; i < len; i++) {\n      const x = input.charCodeAt(i)\n      const b = m[x]\n      if (!b && x) {\n        let cp = x\n        const i0 = i\n        if (x >= 0xd8_00 && x < 0xe0_00) {\n          cp = 0xff_fd\n          if (x < 0xdc_00 && i + 1 < len) {\n            const x1 = input.charCodeAt(i + 1)\n            if (x1 >= 0xdc_00 && x1 < 0xe0_00) {\n              cp = 0x1_00_00 + ((x1 & 0x3_ff) | ((x & 0x3_ff) << 10))\n              i++\n            }\n          }\n        }\n\n        res += `${percent(u, last, i0)}%26%23${cp}%3B` // &#cp;\n        last = i + 1 // skip current\n      } else {\n        u[i] = b\n      }\n    }\n\n    res += percent(u, last)\n  }\n\n  return res\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","\"use strict\";\n\nconst combiningMarks = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0CF3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{11002}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11082}\\u{110B0}-\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{11134}\\u{11145}\\u{11146}\\u{11173}\\u{11180}-\\u{11182}\\u{111B3}-\\u{111C0}\\u{111C9}-\\u{111CC}\\u{111CE}\\u{111CF}\\u{1122C}-\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}-\\u{112EA}\\u{11300}-\\u{11303}\\u{1133B}\\u{1133C}\\u{1133E}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11357}\\u{11362}\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113B8}-\\u{113C0}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}-\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11435}-\\u{11446}\\u{1145E}\\u{114B0}-\\u{114C3}\\u{115AF}-\\u{115B5}\\u{115B8}-\\u{115C0}\\u{115DC}\\u{115DD}\\u{11630}-\\u{11640}\\u{116AB}-\\u{116B7}\\u{1171D}-\\u{1172B}\\u{1182C}-\\u{1183A}\\u{11930}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{1193E}\\u{11940}\\u{11942}\\u{11943}\\u{119D1}-\\u{119D7}\\u{119DA}-\\u{119E0}\\u{119E4}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A39}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A5B}\\u{11A8A}-\\u{11A99}\\u{11B60}-\\u{11B67}\\u{11C2F}-\\u{11C36}\\u{11C38}-\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D8A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D97}\\u{11EF3}-\\u{11EF6}\\u{11F00}\\u{11F01}\\u{11F03}\\u{11F34}-\\u{11F3A}\\u{11F3E}-\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F51}-\\u{16F87}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{16FF0}\\u{16FF1}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D165}-\\u{1D169}\\u{1D16D}-\\u{1D172}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}\\u{1E6EF}\\u{1E6F5}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]/u;\nconst combiningClassVirama = /[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0BCD\\u0C4D\\u0CCD\\u0D3B\\u0D3C\\u0D4D\\u0DCA\\u0E3A\\u0EBA\\u0F84\\u1039\\u103A\\u1714\\u1715\\u1734\\u17D2\\u1A60\\u1B44\\u1BAA\\u1BAB\\u1BF2\\u1BF3\\u2D7F\\uA806\\uA82C\\uA8C4\\uA953\\uA9C0\\uAAF6\\uABED\\u{10A3F}\\u{11046}\\u{11070}\\u{1107F}\\u{110B9}\\u{11133}\\u{11134}\\u{111C0}\\u{11235}\\u{112EA}\\u{1134D}\\u{113CE}-\\u{113D0}\\u{11442}\\u{114C2}\\u{115BF}\\u{1163F}\\u{116B6}\\u{1172B}\\u{11839}\\u{1193D}\\u{1193E}\\u{119E0}\\u{11A34}\\u{11A47}\\u{11A99}\\u{11C3F}\\u{11D44}\\u{11D45}\\u{11D97}\\u{11F41}\\u{11F42}\\u{1612F}]/u;\nconst validZWNJ = /[\\u0620\\u0626\\u0628\\u062A-\\u062E\\u0633-\\u063F\\u0641-\\u0647\\u0649\\u064A\\u066E\\u066F\\u0678-\\u0687\\u069A-\\u06BF\\u06C1\\u06C2\\u06CC\\u06CE\\u06D0\\u06D1\\u06FA-\\u06FC\\u06FF\\u0712-\\u0714\\u071A-\\u071D\\u071F-\\u0727\\u0729\\u072B\\u072D\\u072E\\u074E-\\u0758\\u075C-\\u076A\\u076D-\\u0770\\u0772\\u0775-\\u0777\\u077A-\\u077F\\u07CA-\\u07EA\\u0841-\\u0845\\u0848\\u084A-\\u0853\\u0855\\u0860\\u0862-\\u0865\\u0868\\u0886\\u0889-\\u088D\\u088F\\u08A0-\\u08A9\\u08AF\\u08B0\\u08B3-\\u08B8\\u08BA-\\u08C8\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA872\\u{10AC0}-\\u{10AC4}\\u{10ACD}\\u{10AD3}-\\u{10ADC}\\u{10ADE}-\\u{10AE0}\\u{10AEB}-\\u{10AEE}\\u{10B80}\\u{10B82}\\u{10B86}-\\u{10B88}\\u{10B8A}\\u{10B8B}\\u{10B8D}\\u{10B90}\\u{10BAD}\\u{10BAE}\\u{10D00}-\\u{10D21}\\u{10D23}\\u{10EC3}\\u{10EC4}\\u{10EC6}\\u{10EC7}\\u{10F30}-\\u{10F32}\\u{10F34}-\\u{10F44}\\u{10F51}-\\u{10F53}\\u{10F70}-\\u{10F73}\\u{10F76}-\\u{10F81}\\u{10FB0}\\u{10FB2}\\u{10FB3}\\u{10FB8}\\u{10FBB}\\u{10FBC}\\u{10FBE}\\u{10FBF}\\u{10FC1}\\u{10FC4}\\u{10FCA}\\u{10FCB}\\u{1E900}-\\u{1E943}][\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11B60}\\u{11B62}-\\u{11B64}\\u{11B66}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13430}-\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}\\u{1E6EF}\\u{1E6F5}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*\\u200C[\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11B60}\\u{11B62}-\\u{11B64}\\u{11B66}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13430}-\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}\\u{1E6EF}\\u{1E6F5}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*[\\u0620\\u0622-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u0673\\u0675-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u077F\\u07CA-\\u07EA\\u0840-\\u0858\\u0860\\u0862-\\u0865\\u0867-\\u086A\\u0870-\\u0882\\u0886\\u0889-\\u088F\\u08A0-\\u08AC\\u08AE-\\u08C8\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA871\\u{10AC0}-\\u{10AC5}\\u{10AC7}\\u{10AC9}\\u{10ACA}\\u{10ACE}-\\u{10AD6}\\u{10AD8}-\\u{10AE1}\\u{10AE4}\\u{10AEB}-\\u{10AEF}\\u{10B80}-\\u{10B91}\\u{10BA9}-\\u{10BAE}\\u{10D01}-\\u{10D23}\\u{10EC2}-\\u{10EC4}\\u{10EC6}\\u{10EC7}\\u{10F30}-\\u{10F44}\\u{10F51}-\\u{10F54}\\u{10F70}-\\u{10F81}\\u{10FB0}\\u{10FB2}-\\u{10FB6}\\u{10FB8}-\\u{10FBF}\\u{10FC1}-\\u{10FC4}\\u{10FC9}\\u{10FCA}\\u{1E900}-\\u{1E943}]/u;\nconst bidiDomain = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS1LTR = /[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5C\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDC-\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B4E-\\u1B6A\\u1B74-\\u1B7F\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7DC\\uA7F1-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}-\\u{113BA}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}\\u{113CD}\\u{113CF}\\u{113D1}\\u{113D3}-\\u{113D5}\\u{113D7}\\u{113D8}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11700}-\\u{1171A}\\u{1171E}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11B61}\\u{11B65}\\u{11B67}\\u{11BC0}-\\u{11BE1}\\u{11BF0}-\\u{11BF9}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11DB0}-\\u{11DDB}\\u{11DE0}-\\u{11DE9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{1612A}-\\u{1612C}\\u{16130}-\\u{16139}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D79}\\u{16E40}-\\u{16E9A}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}-\\u{16FF6}\\u{17000}-\\u{18CD5}\\u{18CFF}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CCD6}-\\u{1CCEF}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D800}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}-\\u{1E5FA}\\u{1E5FF}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}\\u{1E6FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B81D}\\u{2B820}-\\u{2CEAD}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{33479}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]/u;\nconst bidiS1RTL = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088F\\u08A0-\\u08C9\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D4A}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS2 = /^[\\0-\\x08\\x0E-\\x1B!-@\\[-`\\{-\\x84\\x86-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02B9\\u02BA\\u02C2-\\u02CF\\u02D2-\\u02DF\\u02E5-\\u02ED\\u02EF-\\u036F\\u0374\\u0375\\u037E\\u0384\\u0385\\u0387\\u03F6\\u0483-\\u0489\\u058A\\u058D-\\u058F\\u0591-\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u070D\\u070F-\\u074A\\u074D-\\u07B1\\u07C0-\\u07FA\\u07FD-\\u082D\\u0830-\\u083E\\u0840-\\u085B\\u085E\\u0860-\\u086A\\u0870-\\u0891\\u0897-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09F2\\u09F3\\u09FB\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AF1\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0BF3-\\u0BFA\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C78-\\u0C7E\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E3F\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39-\\u0F3D\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1390-\\u1399\\u1400\\u169B\\u169C\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DB\\u17DD\\u17F0-\\u17F9\\u1800-\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1940\\u1944\\u1945\\u19DE-\\u19FF\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u200B-\\u200D\\u200F-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2070\\u2074-\\u207E\\u2080-\\u208E\\u20A0-\\u20C1\\u20D0-\\u20F0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u2150-\\u215F\\u2189-\\u218B\\u2190-\\u2335\\u237B-\\u2394\\u2396-\\u2429\\u2440-\\u244A\\u2460-\\u249B\\u24EA-\\u26AB\\u26AD-\\u27FF\\u2900-\\u2B73\\u2B76-\\u2BFF\\u2CE5-\\u2CEA\\u2CEF-\\u2CF1\\u2CF9-\\u2CFF\\u2D7F\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3001-\\u3004\\u3008-\\u3020\\u302A-\\u302D\\u3030\\u3036\\u3037\\u303D-\\u303F\\u3099-\\u309C\\u30A0\\u30FB\\u31C0-\\u31E5\\u31EF\\u321D\\u321E\\u3250-\\u325F\\u327C-\\u327E\\u32B1-\\u32BF\\u32CC-\\u32CF\\u3377-\\u337A\\u33DE\\u33DF\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA60D-\\uA60F\\uA66F-\\uA67F\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA700-\\uA721\\uA788\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA828-\\uA82C\\uA838\\uA839\\uA874-\\uA877\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uAB6A\\uAB6B\\uABE5\\uABE8\\uABED\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFDCF\\uFDF0-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFEFF\\uFF01-\\uFF20\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10101}\\u{10140}-\\u{1018C}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101FD}\\u{102E0}-\\u{102FB}\\u{10376}-\\u{1037A}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{1091F}-\\u{10939}\\u{1093F}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A38}-\\u{10A3A}\\u{10A3F}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE6}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B39}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D27}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D65}\\u{10D69}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAB}-\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10ED0}-\\u{10ED8}\\u{10EFA}-\\u{10F27}\\u{10F30}-\\u{10F59}\\u{10F70}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{11001}\\u{11038}-\\u{11046}\\u{11052}-\\u{11065}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{11660}-\\u{1166C}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11B60}\\u{11B62}-\\u{11B64}\\u{11B66}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{11FD5}-\\u{11FF1}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE2}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CC00}-\\u{1CCD5}\\u{1CCF0}-\\u{1CCFC}\\u{1CD00}-\\u{1CEB3}\\u{1CEBA}-\\u{1CED0}\\u{1CEE0}-\\u{1CEF0}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D1E9}\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D300}-\\u{1D356}\\u{1D6C1}\\u{1D6DB}\\u{1D6FB}\\u{1D715}\\u{1D735}\\u{1D74F}\\u{1D76F}\\u{1D789}\\u{1D7A9}\\u{1D7C3}\\u{1D7CE}-\\u{1D7FF}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E2FF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}\\u{1E6EF}\\u{1E6F5}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8D6}\\u{1E900}-\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F10F}\\u{1F12F}\\u{1F16A}-\\u{1F16F}\\u{1F1AD}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D8}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}-\\u{1F8BB}\\u{1F8C0}\\u{1F8C1}\\u{1F8D0}-\\u{1F8D8}\\u{1F900}-\\u{1FA57}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA8A}\\u{1FA8E}-\\u{1FAC6}\\u{1FAC8}\\u{1FACD}-\\u{1FADC}\\u{1FADF}-\\u{1FAEA}\\u{1FAEF}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBFA}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS3 = /[0-9\\xB2\\xB3\\xB9\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1CCF0}-\\u{1CCF9}\\u{1D7CE}-\\u{1D7FF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11B60}\\u{11B62}-\\u{11B64}\\u{11B66}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}\\u{1E6EF}\\u{1E6F5}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS4EN = /[0-9\\xB2\\xB3\\xB9\\u06F0-\\u06F9\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{1CCF0}-\\u{1CCF9}\\u{1D7CE}-\\u{1D7FF}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}]/u;\nconst bidiS4AN = /[\\u0600-\\u0605\\u0660-\\u0669\\u066B\\u066C\\u06DD\\u0890\\u0891\\u08E2\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D49}\\u{10E60}-\\u{10E7E}]/u;\nconst bidiS5 = /^[\\0-\\x08\\x0E-\\x1B!-\\x84\\x86-\\u0377\\u037A-\\u037F\\u0384-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u052F\\u0531-\\u0556\\u0559-\\u058A\\u058D-\\u058F\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0606\\u0607\\u0609\\u060A\\u060C\\u060E-\\u061A\\u064B-\\u065F\\u066A\\u0670\\u06D6-\\u06DC\\u06DE-\\u06E4\\u06E7-\\u06ED\\u06F0-\\u06F9\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07F6-\\u07F9\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A76\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AF1\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BFA\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5C\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C77-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDC-\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4F\\u0D54-\\u0D63\\u0D66-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E3A\\u0E3F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F97\\u0F99-\\u0FBC\\u0FBE-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u137C\\u1380-\\u1399\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1400-\\u167F\\u1681-\\u169C\\u16A0-\\u16F8\\u1700-\\u1715\\u171F-\\u1736\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1800-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1940\\u1944-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u19DE-\\u1A1B\\u1A1E-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B4C\\u1B4E-\\u1BF3\\u1BFC-\\u1C37\\u1C3B-\\u1C49\\u1C4D-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD0-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u200B-\\u200E\\u2010-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2071\\u2074-\\u208E\\u2090-\\u209C\\u20A0-\\u20C1\\u20D0-\\u20F0\\u2100-\\u218B\\u2190-\\u2429\\u2440-\\u244A\\u2460-\\u2B73\\u2B76-\\u2CF3\\u2CF9-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3001-\\u303F\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31E5\\u31EF-\\u321E\\u3220-\\uA48C\\uA490-\\uA4C6\\uA4D0-\\uA62B\\uA640-\\uA6F7\\uA700-\\uA7DC\\uA7F1-\\uA82C\\uA830-\\uA839\\uA840-\\uA877\\uA880-\\uA8C5\\uA8CE-\\uA8D9\\uA8E0-\\uA953\\uA95F-\\uA97C\\uA980-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAAC2\\uAADB-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB6B\\uAB70-\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1E\\uFB29\\uFBC3-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDCF\\uFDFD-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFEFF\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}-\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1018E}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101D0}-\\u{101FD}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E0}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{1037A}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{1091F}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10B39}-\\u{10B3F}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6E}\\u{10EAB}\\u{10EAC}\\u{10ED0}-\\u{10ED8}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{1104D}\\u{11052}-\\u{11075}\\u{1107F}-\\u{110C2}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11100}-\\u{11134}\\u{11136}-\\u{11147}\\u{11150}-\\u{11176}\\u{11180}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{11241}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112EA}\\u{112F0}-\\u{112F9}\\u{11300}-\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133B}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}-\\u{113C0}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}-\\u{113D5}\\u{113D7}\\u{113D8}\\u{113E1}\\u{113E2}\\u{11400}-\\u{1145B}\\u{1145D}-\\u{11461}\\u{11480}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B5}\\u{115B8}-\\u{115DD}\\u{11600}-\\u{11644}\\u{11650}-\\u{11659}\\u{11660}-\\u{1166C}\\u{11680}-\\u{116B9}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11700}-\\u{1171A}\\u{1171D}-\\u{1172B}\\u{11730}-\\u{11746}\\u{11800}-\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D7}\\u{119DA}-\\u{119E4}\\u{11A00}-\\u{11A47}\\u{11A50}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11B60}-\\u{11B67}\\u{11BC0}-\\u{11BE1}\\u{11BF0}-\\u{11BF9}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C36}\\u{11C38}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D47}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11DB0}-\\u{11DDB}\\u{11DE0}-\\u{11DE9}\\u{11EE0}-\\u{11EF8}\\u{11F00}-\\u{11F10}\\u{11F12}-\\u{11F3A}\\u{11F3E}-\\u{11F5A}\\u{11FB0}\\u{11FC0}-\\u{11FF1}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{13455}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{16139}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF0}-\\u{16AF5}\\u{16B00}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D79}\\u{16E40}-\\u{16E9A}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16F00}-\\u{16F4A}\\u{16F4F}-\\u{16F87}\\u{16F8F}-\\u{16F9F}\\u{16FE0}-\\u{16FE4}\\u{16FF0}-\\u{16FF6}\\u{17000}-\\u{18CD5}\\u{18CFF}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}-\\u{1BCA3}\\u{1CC00}-\\u{1CCFC}\\u{1CD00}-\\u{1CEB3}\\u{1CEBA}-\\u{1CED0}\\u{1CEE0}-\\u{1CEF0}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D300}-\\u{1D356}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D7CB}\\u{1D7CE}-\\u{1DA8B}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E030}-\\u{1E06D}\\u{1E08F}\\u{1E100}-\\u{1E12C}\\u{1E130}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AE}\\u{1E2C0}-\\u{1E2F9}\\u{1E2FF}\\u{1E4D0}-\\u{1E4F9}\\u{1E5D0}-\\u{1E5FA}\\u{1E5FF}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6F5}\\u{1E6FE}\\u{1E6FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F1AD}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D8}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}-\\u{1F8BB}\\u{1F8C0}\\u{1F8C1}\\u{1F8D0}-\\u{1F8D8}\\u{1F900}-\\u{1FA57}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA8A}\\u{1FA8E}-\\u{1FAC6}\\u{1FAC8}\\u{1FACD}-\\u{1FADC}\\u{1FADF}-\\u{1FAEA}\\u{1FAEF}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBFA}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B81D}\\u{2B820}-\\u{2CEAD}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{33479}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]*$/u;\nconst bidiS6 = /[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u06F0-\\u06F9\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5C\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDC-\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B4E-\\u1B6A\\u1B74-\\u1B7F\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u2488-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7DC\\uA7F1-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E1}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}-\\u{113BA}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}\\u{113CD}\\u{113CF}\\u{113D1}\\u{113D3}-\\u{113D5}\\u{113D7}\\u{113D8}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11700}-\\u{1171A}\\u{1171E}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11B61}\\u{11B65}\\u{11B67}\\u{11BC0}-\\u{11BE1}\\u{11BF0}-\\u{11BF9}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11DB0}-\\u{11DDB}\\u{11DE0}-\\u{11DE9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{1612A}-\\u{1612C}\\u{16130}-\\u{16139}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D79}\\u{16E40}-\\u{16E9A}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}-\\u{16FF6}\\u{17000}-\\u{18CD5}\\u{18CFF}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CCD6}-\\u{1CCF9}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D7CE}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}-\\u{1E5FA}\\u{1E5FF}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}\\u{1E6FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F100}-\\u{1F10A}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1FBF0}-\\u{1FBF9}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B81D}\\u{2B820}-\\u{2CEAD}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{33479}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11B60}\\u{11B62}-\\u{11B64}\\u{11B66}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}\\u{1E6EF}\\u{1E6F5}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\n\nmodule.exports = {\n    combiningMarks,\n  combiningClassVirama,\n  validZWNJ,\n  bidiDomain,\n  bidiS1LTR,\n  bidiS1RTL,\n  bidiS2,\n  bidiS3,\n  bidiS4EN,\n  bidiS4AN,\n  bidiS5,\n  bidiS6\n  };\n","","\"use strict\";\n\nmodule.exports.STATUS_MAPPING = {\n  mapped: 1,\n  valid: 2,\n  disallowed: 3,\n  deviation: 6,\n  ignored: 7\n};\n","\"use strict\";\n\nconst punycode = require(\"punycode/\");\nconst regexes = require(\"./lib/regexes.js\");\nconst mappingTable = require(\"./lib/mappingTable.json\");\nconst { STATUS_MAPPING } = require(\"./lib/statusMapping.js\");\n\nfunction containsNonASCII(str) {\n  return /[^\\x00-\\x7F]/u.test(str);\n}\n\nfunction findStatus(val) {\n  let start = 0;\n  let end = mappingTable.length - 1;\n\n  while (start <= end) {\n    const mid = Math.floor((start + end) / 2);\n\n    const target = mappingTable[mid];\n    const min = Array.isArray(target[0]) ? target[0][0] : target[0];\n    const max = Array.isArray(target[0]) ? target[0][1] : target[0];\n\n    if (min <= val && max >= val) {\n      return target.slice(1);\n    } else if (min > val) {\n      end = mid - 1;\n    } else {\n      start = mid + 1;\n    }\n  }\n\n  return null;\n}\n\nfunction mapChars(domainName, { transitionalProcessing }) {\n  let processed = \"\";\n\n  for (const ch of domainName) {\n    const [status, mapping] = findStatus(ch.codePointAt(0));\n\n    switch (status) {\n      case STATUS_MAPPING.disallowed:\n        processed += ch;\n        break;\n      case STATUS_MAPPING.ignored:\n        break;\n      case STATUS_MAPPING.mapped:\n        if (transitionalProcessing && ch === \"ẞ\") {\n          processed += \"ss\";\n        } else {\n          processed += mapping;\n        }\n        break;\n      case STATUS_MAPPING.deviation:\n        if (transitionalProcessing) {\n          processed += mapping;\n        } else {\n          processed += ch;\n        }\n        break;\n      case STATUS_MAPPING.valid:\n        processed += ch;\n        break;\n    }\n  }\n\n  return processed;\n}\n\nfunction validateLabel(label, {\n  checkHyphens,\n  checkBidi,\n  checkJoiners,\n  transitionalProcessing,\n  useSTD3ASCIIRules,\n  isBidi\n}) {\n  // \"must be satisfied for a non-empty label\"\n  if (label.length === 0) {\n    return true;\n  }\n\n  // \"1. The label must be in Unicode Normalization Form NFC.\"\n  if (label.normalize(\"NFC\") !== label) {\n    return false;\n  }\n\n  const codePoints = Array.from(label);\n\n  // \"2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character in both the\n  // third and fourth positions.\"\n  //\n  // \"3. If CheckHyphens, the label must neither begin nor end with a U+002D HYPHEN-MINUS character.\"\n  if (checkHyphens) {\n    if ((codePoints[2] === \"-\" && codePoints[3] === \"-\") ||\n        (label.startsWith(\"-\") || label.endsWith(\"-\"))) {\n      return false;\n    }\n  }\n\n  // \"4. If not CheckHyphens, the label must not begin with “xn--”.\"\n  if (!checkHyphens) {\n    if (label.startsWith(\"xn--\")) {\n      return false;\n    }\n  }\n\n  // \"5. The label must not contain a U+002E ( . ) FULL STOP.\"\n  if (label.includes(\".\")) {\n    return false;\n  }\n\n  // \"6. The label must not begin with a combining mark, that is: General_Category=Mark.\"\n  if (regexes.combiningMarks.test(codePoints[0])) {\n    return false;\n  }\n\n  // \"7. Each code point in the label must only have certain Status values according to Section 5\"\n  for (const ch of codePoints) {\n    const codePoint = ch.codePointAt(0);\n    const [status] = findStatus(codePoint);\n    if (transitionalProcessing) {\n      // \"For Transitional Processing (deprecated), each value must be valid.\"\n      if (status !== STATUS_MAPPING.valid) {\n        return false;\n      }\n    } else if (status !== STATUS_MAPPING.valid && status !== STATUS_MAPPING.deviation) {\n      // \"For Nontransitional Processing, each value must be either valid or deviation.\"\n      return false;\n    }\n    // \"In addition, if UseSTD3ASCIIRules=true and the code point is an ASCII code point (U+0000..U+007F), then it must\n    // be a lowercase letter (a-z), a digit (0-9), or a hyphen-minus (U+002D). (Note: This excludes uppercase ASCII\n    // A-Z which are mapped in UTS #46 and disallowed in IDNA2008.)\"\n    if (useSTD3ASCIIRules && codePoint <= 0x7F) {\n      if (!/^(?:[a-z]|[0-9]|-)$/u.test(ch)) {\n        return false;\n      }\n    }\n  }\n\n  // \"8. If CheckJoiners, the label must satisify the ContextJ rules\"\n  // https://tools.ietf.org/html/rfc5892#appendix-A\n  if (checkJoiners) {\n    let last = 0;\n    for (const [i, ch] of codePoints.entries()) {\n      if (ch === \"\\u200C\" || ch === \"\\u200D\") {\n        if (i > 0) {\n          if (regexes.combiningClassVirama.test(codePoints[i - 1])) {\n            continue;\n          }\n          if (ch === \"\\u200C\") {\n            // TODO: make this more efficient\n            const next = codePoints.indexOf(\"\\u200C\", i + 1);\n            const test = next < 0 ? codePoints.slice(last) : codePoints.slice(last, next);\n            if (regexes.validZWNJ.test(test.join(\"\"))) {\n              last = i + 1;\n              continue;\n            }\n          }\n        }\n        return false;\n      }\n    }\n  }\n\n  // \"9. If CheckBidi, and if the domain name is a Bidi domain name, then the label must satisfy...\"\n  // https://tools.ietf.org/html/rfc5893#section-2\n  if (checkBidi && isBidi) {\n    let rtl;\n\n    // 1\n    if (regexes.bidiS1LTR.test(codePoints[0])) {\n      rtl = false;\n    } else if (regexes.bidiS1RTL.test(codePoints[0])) {\n      rtl = true;\n    } else {\n      return false;\n    }\n\n    if (rtl) {\n      // 2-4\n      if (!regexes.bidiS2.test(label) ||\n          !regexes.bidiS3.test(label) ||\n          (regexes.bidiS4EN.test(label) && regexes.bidiS4AN.test(label))) {\n        return false;\n      }\n    } else if (!regexes.bidiS5.test(label) ||\n               !regexes.bidiS6.test(label)) { // 5-6\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction isBidiDomain(labels) {\n  const domain = labels.map(label => {\n    if (label.startsWith(\"xn--\")) {\n      try {\n        return punycode.decode(label.substring(4));\n      } catch {\n        return \"\";\n      }\n    }\n    return label;\n  }).join(\".\");\n  return regexes.bidiDomain.test(domain);\n}\n\nfunction processing(domainName, options) {\n  // 1. Map.\n  let string = mapChars(domainName, options);\n\n  // 2. Normalize.\n  string = string.normalize(\"NFC\");\n\n  // 3. Break.\n  const labels = string.split(\".\");\n  const isBidi = isBidiDomain(labels);\n\n  // 4. Convert/Validate.\n  let error = false;\n  for (const [i, origLabel] of labels.entries()) {\n    let label = origLabel;\n    let transitionalProcessingForThisLabel = options.transitionalProcessing;\n    if (label.startsWith(\"xn--\")) {\n      if (containsNonASCII(label)) {\n        error = true;\n        continue;\n      }\n\n      try {\n        label = punycode.decode(label.substring(4));\n      } catch {\n        if (!options.ignoreInvalidPunycode) {\n          error = true;\n          continue;\n        }\n      }\n      labels[i] = label;\n\n      if (label === \"\" || !containsNonASCII(label)) {\n        error = true;\n      }\n\n      transitionalProcessingForThisLabel = false;\n    }\n\n    // No need to validate if we already know there is an error.\n    if (error) {\n      continue;\n    }\n    const validation = validateLabel(label, {\n      ...options,\n      transitionalProcessing: transitionalProcessingForThisLabel,\n      isBidi\n    });\n    if (!validation) {\n      error = true;\n    }\n  }\n\n  return {\n    string: labels.join(\".\"),\n    error\n  };\n}\n\nfunction toASCII(domainName, {\n  checkHyphens = false,\n  checkBidi = false,\n  checkJoiners = false,\n  useSTD3ASCIIRules = false,\n  verifyDNSLength = false,\n  transitionalProcessing = false,\n  ignoreInvalidPunycode = false\n} = {}) {\n  const result = processing(domainName, {\n    checkHyphens,\n    checkBidi,\n    checkJoiners,\n    useSTD3ASCIIRules,\n    transitionalProcessing,\n    ignoreInvalidPunycode\n  });\n  let labels = result.string.split(\".\");\n  labels = labels.map(l => {\n    if (containsNonASCII(l)) {\n      try {\n        return `xn--${punycode.encode(l)}`;\n      } catch {\n        result.error = true;\n      }\n    }\n    return l;\n  });\n\n  if (verifyDNSLength) {\n    const total = labels.join(\".\").length;\n    if (total > 253 || total === 0) {\n      result.error = true;\n    }\n\n    for (let i = 0; i < labels.length; ++i) {\n      if (labels[i].length > 63 || labels[i].length === 0) {\n        result.error = true;\n        break;\n      }\n    }\n  }\n\n  if (result.error) {\n    return null;\n  }\n  return labels.join(\".\");\n}\n\nfunction toUnicode(domainName, {\n  checkHyphens = false,\n  checkBidi = false,\n  checkJoiners = false,\n  useSTD3ASCIIRules = false,\n  transitionalProcessing = false,\n  ignoreInvalidPunycode = false\n} = {}) {\n  const result = processing(domainName, {\n    checkHyphens,\n    checkBidi,\n    checkJoiners,\n    useSTD3ASCIIRules,\n    transitionalProcessing,\n    ignoreInvalidPunycode\n  });\n\n  return {\n    domain: result.string,\n    error: result.error\n  };\n}\n\nmodule.exports = {\n  toASCII,\n  toUnicode\n};\n","\"use strict\";\n\n// Note that we take code points as JS numbers, not JS strings.\n\nfunction isASCIIDigit(c) {\n  return c >= 0x30 && c <= 0x39;\n}\n\nfunction isASCIIAlpha(c) {\n  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\n}\n\nfunction isASCIIAlphanumeric(c) {\n  return isASCIIAlpha(c) || isASCIIDigit(c);\n}\n\nfunction isASCIIHex(c) {\n  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\n}\n\nmodule.exports = {\n  isASCIIDigit,\n  isASCIIAlpha,\n  isASCIIAlphanumeric,\n  isASCIIHex\n};\n","\"use strict\";\nconst utf8Encoder = new TextEncoder();\nconst utf8Decoder = new TextDecoder(\"utf-8\", { ignoreBOM: true });\n\nfunction utf8Encode(string) {\n  return utf8Encoder.encode(string);\n}\n\nfunction utf8DecodeWithoutBOM(bytes) {\n  return utf8Decoder.decode(bytes);\n}\n\nmodule.exports = {\n  utf8Encode,\n  utf8DecodeWithoutBOM\n};\n","\"use strict\";\nconst { isASCIIHex } = require(\"./infra\");\nconst { utf8Encode } = require(\"./encoding\");\n\nfunction p(char) {\n  return char.codePointAt(0);\n}\n\n// https://url.spec.whatwg.org/#percent-encode\nfunction percentEncode(c) {\n  let hex = c.toString(16).toUpperCase();\n  if (hex.length === 1) {\n    hex = `0${hex}`;\n  }\n\n  return `%${hex}`;\n}\n\n// https://url.spec.whatwg.org/#percent-decode\nfunction percentDecodeBytes(input) {\n  const output = new Uint8Array(input.byteLength);\n  let outputIndex = 0;\n  for (let i = 0; i < input.byteLength; ++i) {\n    const byte = input[i];\n    if (byte !== 0x25) {\n      output[outputIndex++] = byte;\n    } else if (byte === 0x25 && (!isASCIIHex(input[i + 1]) || !isASCIIHex(input[i + 2]))) {\n      output[outputIndex++] = byte;\n    } else {\n      const bytePoint = parseInt(String.fromCodePoint(input[i + 1], input[i + 2]), 16);\n      output[outputIndex++] = bytePoint;\n      i += 2;\n    }\n  }\n\n  return output.slice(0, outputIndex);\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\nfunction percentDecodeString(input) {\n  const bytes = utf8Encode(input);\n  return percentDecodeBytes(bytes);\n}\n\n// https://url.spec.whatwg.org/#c0-control-percent-encode-set\nfunction isC0ControlPercentEncode(c) {\n  return c <= 0x1F || c > 0x7E;\n}\n\n// https://url.spec.whatwg.org/#fragment-percent-encode-set\nconst extraFragmentPercentEncodeSet = new Set([p(\" \"), p(\"\\\"\"), p(\"<\"), p(\">\"), p(\"`\")]);\nfunction isFragmentPercentEncode(c) {\n  return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#query-percent-encode-set\nconst extraQueryPercentEncodeSet = new Set([p(\" \"), p(\"\\\"\"), p(\"#\"), p(\"<\"), p(\">\")]);\nconst extraQueryPercentEncodeChars = String.fromCodePoint(...[...extraQueryPercentEncodeSet].sort());\nfunction isQueryPercentEncode(c) {\n  return isC0ControlPercentEncode(c) || extraQueryPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#special-query-percent-encode-set\nconst extraSpecialQueryPercentEncodeSet = new Set([...extraQueryPercentEncodeSet, p(\"'\")]);\nconst extraSpecialQueryPercentEncodeChars = String.fromCodePoint(...[...extraSpecialQueryPercentEncodeSet].sort());\nfunction isSpecialQueryPercentEncode(c) {\n  return isC0ControlPercentEncode(c) || extraSpecialQueryPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#path-percent-encode-set\nconst extraPathPercentEncodeSet = new Set([p(\"?\"), p(\"`\"), p(\"{\"), p(\"}\"), p(\"^\")]);\nfunction isPathPercentEncode(c) {\n  return isQueryPercentEncode(c) || extraPathPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#userinfo-percent-encode-set\nconst extraUserinfoPercentEncodeSet =\n  new Set([p(\"/\"), p(\":\"), p(\";\"), p(\"=\"), p(\"@\"), p(\"[\"), p(\"\\\\\"), p(\"]\"), p(\"|\")]);\nfunction isUserinfoPercentEncode(c) {\n  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#component-percent-encode-set\nconst extraComponentPercentEncodeSet = new Set([p(\"$\"), p(\"%\"), p(\"&\"), p(\"+\"), p(\",\")]);\nfunction isComponentPercentEncode(c) {\n  return isUserinfoPercentEncode(c) || extraComponentPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set\nconst extraURLEncodedPercentEncodeSet = new Set([p(\"!\"), p(\"'\"), p(\"(\"), p(\")\"), p(\"~\")]);\nfunction isURLEncodedPercentEncode(c) {\n  return isComponentPercentEncode(c) || extraURLEncodedPercentEncodeSet.has(c);\n}\n\n// https://url.spec.whatwg.org/#code-point-percent-encode-after-encoding\n// https://url.spec.whatwg.org/#utf-8-percent-encode\n// Assuming encoding is always utf-8 allows us to trim one of the logic branches. TODO: support encoding.\n// The \"-Internal\" variant here has code points as JS strings. The external version used by other files has code points\n// as JS numbers, like the rest of the codebase.\nfunction utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate) {\n  const bytes = utf8Encode(codePoint);\n  let output = \"\";\n  for (const byte of bytes) {\n    // Our percentEncodePredicate operates on bytes, not code points, so this is slightly different from the spec.\n    if (!percentEncodePredicate(byte)) {\n      output += String.fromCharCode(byte);\n    } else {\n      output += percentEncode(byte);\n    }\n  }\n\n  return output;\n}\n\nfunction utf8PercentEncodeCodePoint(codePoint, percentEncodePredicate) {\n  return utf8PercentEncodeCodePointInternal(String.fromCodePoint(codePoint), percentEncodePredicate);\n}\n\n// https://url.spec.whatwg.org/#string-percent-encode-after-encoding\n// https://url.spec.whatwg.org/#string-utf-8-percent-encode\nfunction utf8PercentEncodeString(input, percentEncodePredicate, spaceAsPlus = false) {\n  let output = \"\";\n  for (const codePoint of input) {\n    if (spaceAsPlus && codePoint === \" \") {\n      output += \"+\";\n    } else {\n      output += utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate);\n    }\n  }\n  return output;\n}\n\nmodule.exports = {\n  isC0ControlPercentEncode,\n  isFragmentPercentEncode,\n  isQueryPercentEncode,\n  isSpecialQueryPercentEncode,\n  isPathPercentEncode,\n  isUserinfoPercentEncode,\n  isURLEncodedPercentEncode,\n  extraQueryPercentEncodeChars,\n  extraSpecialQueryPercentEncodeChars,\n  percentDecodeString,\n  percentDecodeBytes,\n  utf8PercentEncodeString,\n  utf8PercentEncodeCodePoint\n};\n","\"use strict\";\nrequire(\"@exodus/bytes/encoding.js\"); // for legacy multi-byte encodings\nconst { percentEncodeAfterEncoding } = require(\"@exodus/bytes/whatwg.js\");\nconst tr46 = require(\"tr46\");\n\nconst infra = require(\"./infra\");\nconst { utf8DecodeWithoutBOM } = require(\"./encoding\");\nconst { percentDecodeString, utf8PercentEncodeCodePoint, utf8PercentEncodeString,\n  isC0ControlPercentEncode, isFragmentPercentEncode,\n  extraQueryPercentEncodeChars, extraSpecialQueryPercentEncodeChars,\n  isPathPercentEncode, isUserinfoPercentEncode } = require(\"./percent-encoding\");\n\nfunction p(char) {\n  return char.codePointAt(0);\n}\n\nconst specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\nconst failure = Symbol(\"failure\");\n\nfunction countSymbols(str) {\n  return [...str].length;\n}\n\nfunction at(input, idx) {\n  const c = input[idx];\n  return isNaN(c) ? undefined : String.fromCodePoint(c);\n}\n\nfunction isSingleDot(buffer) {\n  return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\n}\n\nfunction isDoubleDot(buffer) {\n  buffer = buffer.toLowerCase();\n  return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\n}\n\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\n  return infra.isASCIIAlpha(cp1) && (cp2 === p(\":\") || cp2 === p(\"|\"));\n}\n\nfunction isWindowsDriveLetterString(string) {\n  return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\n}\n\nfunction isNormalizedWindowsDriveLetterString(string) {\n  return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\n}\n\nfunction containsForbiddenHostCodePoint(string) {\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|<|>|\\?|@|\\[|\\\\|\\]|\\^|\\|/u) !== -1;\n}\n\nfunction containsForbiddenDomainCodePoint(string) {\n  return containsForbiddenHostCodePoint(string) || string.search(/[\\u0000-\\u001F]|%|\\u007F/u) !== -1;\n}\n\nfunction isSpecialScheme(scheme) {\n  return specialSchemes[scheme] !== undefined;\n}\n\nfunction isSpecial(url) {\n  return isSpecialScheme(url.scheme);\n}\n\nfunction isNotSpecial(url) {\n  return !isSpecialScheme(url.scheme);\n}\n\nfunction defaultPort(scheme) {\n  return specialSchemes[scheme];\n}\n\nfunction parseIPv4Number(input) {\n  if (input === \"\") {\n    return failure;\n  }\n\n  let R = 10;\n\n  if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\n    input = input.substring(2);\n    R = 16;\n  } else if (input.length >= 2 && input.charAt(0) === \"0\") {\n    input = input.substring(1);\n    R = 8;\n  }\n\n  if (input === \"\") {\n    return 0;\n  }\n\n  let regex = /[^0-7]/u;\n  if (R === 10) {\n    regex = /[^0-9]/u;\n  }\n  if (R === 16) {\n    regex = /[^0-9A-Fa-f]/u;\n  }\n\n  if (regex.test(input)) {\n    return failure;\n  }\n\n  return parseInt(input, R);\n}\n\nfunction parseIPv4(input) {\n  const parts = input.split(\".\");\n  if (parts[parts.length - 1] === \"\") {\n    if (parts.length > 1) {\n      parts.pop();\n    }\n  }\n\n  if (parts.length > 4) {\n    return failure;\n  }\n\n  const numbers = [];\n  for (const part of parts) {\n    const n = parseIPv4Number(part);\n    if (n === failure) {\n      return failure;\n    }\n\n    numbers.push(n);\n  }\n\n  for (let i = 0; i < numbers.length - 1; ++i) {\n    if (numbers[i] > 255) {\n      return failure;\n    }\n  }\n  if (numbers[numbers.length - 1] >= 256 ** (5 - numbers.length)) {\n    return failure;\n  }\n\n  let ipv4 = numbers.pop();\n  let counter = 0;\n\n  for (const n of numbers) {\n    ipv4 += n * 256 ** (3 - counter);\n    ++counter;\n  }\n\n  return ipv4;\n}\n\nfunction serializeIPv4(address) {\n  let output = \"\";\n  let n = address;\n\n  for (let i = 1; i <= 4; ++i) {\n    output = String(n % 256) + output;\n    if (i !== 4) {\n      output = `.${output}`;\n    }\n    n = Math.floor(n / 256);\n  }\n\n  return output;\n}\n\nfunction parseIPv6(input) {\n  const address = [0, 0, 0, 0, 0, 0, 0, 0];\n  let pieceIndex = 0;\n  let compress = null;\n  let pointer = 0;\n\n  input = Array.from(input, c => c.codePointAt(0));\n\n  if (input[pointer] === p(\":\")) {\n    if (input[pointer + 1] !== p(\":\")) {\n      return failure;\n    }\n\n    pointer += 2;\n    ++pieceIndex;\n    compress = pieceIndex;\n  }\n\n  while (pointer < input.length) {\n    if (pieceIndex === 8) {\n      return failure;\n    }\n\n    if (input[pointer] === p(\":\")) {\n      if (compress !== null) {\n        return failure;\n      }\n      ++pointer;\n      ++pieceIndex;\n      compress = pieceIndex;\n      continue;\n    }\n\n    let value = 0;\n    let length = 0;\n\n    while (length < 4 && infra.isASCIIHex(input[pointer])) {\n      value = value * 0x10 + parseInt(at(input, pointer), 16);\n      ++pointer;\n      ++length;\n    }\n\n    if (input[pointer] === p(\".\")) {\n      if (length === 0) {\n        return failure;\n      }\n\n      pointer -= length;\n\n      if (pieceIndex > 6) {\n        return failure;\n      }\n\n      let numbersSeen = 0;\n\n      while (input[pointer] !== undefined) {\n        let ipv4Piece = null;\n\n        if (numbersSeen > 0) {\n          if (input[pointer] === p(\".\") && numbersSeen < 4) {\n            ++pointer;\n          } else {\n            return failure;\n          }\n        }\n\n        if (!infra.isASCIIDigit(input[pointer])) {\n          return failure;\n        }\n\n        while (infra.isASCIIDigit(input[pointer])) {\n          const number = parseInt(at(input, pointer));\n          if (ipv4Piece === null) {\n            ipv4Piece = number;\n          } else if (ipv4Piece === 0) {\n            return failure;\n          } else {\n            ipv4Piece = ipv4Piece * 10 + number;\n          }\n          if (ipv4Piece > 255) {\n            return failure;\n          }\n          ++pointer;\n        }\n\n        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\n\n        ++numbersSeen;\n\n        if (numbersSeen === 2 || numbersSeen === 4) {\n          ++pieceIndex;\n        }\n      }\n\n      if (numbersSeen !== 4) {\n        return failure;\n      }\n\n      break;\n    } else if (input[pointer] === p(\":\")) {\n      ++pointer;\n      if (input[pointer] === undefined) {\n        return failure;\n      }\n    } else if (input[pointer] !== undefined) {\n      return failure;\n    }\n\n    address[pieceIndex] = value;\n    ++pieceIndex;\n  }\n\n  if (compress !== null) {\n    let swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex !== 0 && swaps > 0) {\n      const temp = address[compress + swaps - 1];\n      address[compress + swaps - 1] = address[pieceIndex];\n      address[pieceIndex] = temp;\n      --pieceIndex;\n      --swaps;\n    }\n  } else if (compress === null && pieceIndex !== 8) {\n    return failure;\n  }\n\n  return address;\n}\n\nfunction serializeIPv6(address) {\n  let output = \"\";\n  const compress = findTheIPv6AddressCompressedPieceIndex(address);\n  let ignore0 = false;\n\n  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\n    if (ignore0 && address[pieceIndex] === 0) {\n      continue;\n    } else if (ignore0) {\n      ignore0 = false;\n    }\n\n    if (compress === pieceIndex) {\n      const separator = pieceIndex === 0 ? \"::\" : \":\";\n      output += separator;\n      ignore0 = true;\n      continue;\n    }\n\n    output += address[pieceIndex].toString(16);\n\n    if (pieceIndex !== 7) {\n      output += \":\";\n    }\n  }\n\n  return output;\n}\n\nfunction parseHost(input, isOpaque = false) {\n  if (input[0] === \"[\") {\n    if (input[input.length - 1] !== \"]\") {\n      return failure;\n    }\n\n    return parseIPv6(input.substring(1, input.length - 1));\n  }\n\n  if (isOpaque) {\n    return parseOpaqueHost(input);\n  }\n\n  const domain = utf8DecodeWithoutBOM(percentDecodeString(input));\n  const asciiDomain = domainToASCII(domain);\n  if (asciiDomain === failure) {\n    return failure;\n  }\n\n  if (endsInANumber(asciiDomain)) {\n    return parseIPv4(asciiDomain);\n  }\n\n  return asciiDomain;\n}\n\nfunction endsInANumber(input) {\n  const parts = input.split(\".\");\n  if (parts[parts.length - 1] === \"\") {\n    if (parts.length === 1) {\n      return false;\n    }\n    parts.pop();\n  }\n\n  const last = parts[parts.length - 1];\n  if (parseIPv4Number(last) !== failure) {\n    return true;\n  }\n\n  if (/^[0-9]+$/u.test(last)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction parseOpaqueHost(input) {\n  if (containsForbiddenHostCodePoint(input)) {\n    return failure;\n  }\n\n  return utf8PercentEncodeString(input, isC0ControlPercentEncode);\n}\n\nfunction findTheIPv6AddressCompressedPieceIndex(address) {\n  let longestIndex = null;\n  let longestSize = 1; // only find elements > 1\n  let foundIndex = null;\n  let foundSize = 0;\n\n  for (let pieceIndex = 0; pieceIndex < address.length; ++pieceIndex) {\n    if (address[pieceIndex] !== 0) {\n      if (foundSize > longestSize) {\n        longestIndex = foundIndex;\n        longestSize = foundSize;\n      }\n\n      foundIndex = null;\n      foundSize = 0;\n    } else {\n      if (foundIndex === null) {\n        foundIndex = pieceIndex;\n      }\n      ++foundSize;\n    }\n  }\n\n  if (foundSize > longestSize) {\n    return foundIndex;\n  }\n\n  return longestIndex;\n}\n\nfunction serializeHost(host) {\n  if (typeof host === \"number\") {\n    return serializeIPv4(host);\n  }\n\n  // IPv6 serializer\n  if (host instanceof Array) {\n    return `[${serializeIPv6(host)}]`;\n  }\n\n  return host;\n}\n\nfunction domainToASCII(domain, beStrict = false) {\n  const result = tr46.toASCII(domain, {\n    checkHyphens: beStrict,\n    checkBidi: true,\n    checkJoiners: true,\n    useSTD3ASCIIRules: beStrict,\n    transitionalProcessing: false,\n    verifyDNSLength: beStrict,\n    ignoreInvalidPunycode: false\n  });\n  if (result === null) {\n    return failure;\n  }\n\n  if (!beStrict) {\n    if (result === \"\") {\n      return failure;\n    }\n    if (containsForbiddenDomainCodePoint(result)) {\n      return failure;\n    }\n  }\n  return result;\n}\n\nfunction trimControlChars(string) {\n  // Avoid using regexp because of this V8 bug: https://issues.chromium.org/issues/42204424\n\n  let start = 0;\n  let end = string.length;\n  for (; start < end; ++start) {\n    if (string.charCodeAt(start) > 0x20) {\n      break;\n    }\n  }\n  for (; end > start; --end) {\n    if (string.charCodeAt(end - 1) > 0x20) {\n      break;\n    }\n  }\n  return string.substring(start, end);\n}\n\nfunction trimTabAndNewline(url) {\n  return url.replace(/\\u0009|\\u000A|\\u000D/ug, \"\");\n}\n\nfunction shortenPath(url) {\n  const { path } = url;\n  if (path.length === 0) {\n    return;\n  }\n  if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\n    return;\n  }\n\n  path.pop();\n}\n\nfunction includesCredentials(url) {\n  return url.username !== \"\" || url.password !== \"\";\n}\n\nfunction cannotHaveAUsernamePasswordPort(url) {\n  return url.host === null || url.host === \"\" || url.scheme === \"file\";\n}\n\nfunction hasAnOpaquePath(url) {\n  return typeof url.path === \"string\";\n}\n\nfunction isNormalizedWindowsDriveLetter(string) {\n  return /^[A-Za-z]:$/u.test(string);\n}\n\nfunction URLStateMachine(input, base, encoding, url, stateOverride) {\n  this.pointer = 0;\n  this.input = input;\n  this.base = base || null;\n  this.encoding = encoding || \"utf-8\";\n  this.stateOverride = stateOverride;\n  this.url = url;\n  this.failure = false;\n  this.parseError = false;\n\n  if (!this.url) {\n    this.url = {\n      scheme: \"\",\n      username: \"\",\n      password: \"\",\n      host: null,\n      port: null,\n      path: [],\n      query: null,\n      fragment: null\n    };\n\n    const res = trimControlChars(this.input);\n    if (res !== this.input) {\n      this.parseError = true;\n    }\n    this.input = res;\n  }\n\n  const res = trimTabAndNewline(this.input);\n  if (res !== this.input) {\n    this.parseError = true;\n  }\n  this.input = res;\n\n  this.state = stateOverride || \"scheme start\";\n\n  this.buffer = \"\";\n  this.atSignSeen = false;\n  this.insideBrackets = false;\n  this.passwordTokenSeen = false;\n\n  this.input = Array.from(this.input, c => c.codePointAt(0));\n\n  for (; this.pointer <= this.input.length; ++this.pointer) {\n    const c = this.input[this.pointer];\n    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\n\n    // exec state machine\n    const ret = this[`parse ${this.state}`](c, cStr);\n    if (!ret) {\n      break; // terminate algorithm\n    } else if (ret === failure) {\n      this.failure = true;\n      break;\n    }\n  }\n}\n\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\n  if (infra.isASCIIAlpha(c)) {\n    this.buffer += cStr.toLowerCase();\n    this.state = \"scheme\";\n  } else if (!this.stateOverride) {\n    this.state = \"no scheme\";\n    --this.pointer;\n  } else {\n    this.parseError = true;\n    return failure;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\n  if (infra.isASCIIAlphanumeric(c) || c === p(\"+\") || c === p(\"-\") || c === p(\".\")) {\n    this.buffer += cStr.toLowerCase();\n  } else if (c === p(\":\")) {\n    if (this.stateOverride) {\n      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\n        return false;\n      }\n\n      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\n        return false;\n      }\n\n      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\n        return false;\n      }\n\n      if (this.url.scheme === \"file\" && this.url.host === \"\") {\n        return false;\n      }\n    }\n    this.url.scheme = this.buffer;\n    if (this.stateOverride) {\n      if (this.url.port === defaultPort(this.url.scheme)) {\n        this.url.port = null;\n      }\n      return false;\n    }\n    this.buffer = \"\";\n    if (this.url.scheme === \"file\") {\n      if (this.input[this.pointer + 1] !== p(\"/\") || this.input[this.pointer + 2] !== p(\"/\")) {\n        this.parseError = true;\n      }\n      this.state = \"file\";\n    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\n      this.state = \"special relative or authority\";\n    } else if (isSpecial(this.url)) {\n      this.state = \"special authority slashes\";\n    } else if (this.input[this.pointer + 1] === p(\"/\")) {\n      this.state = \"path or authority\";\n      ++this.pointer;\n    } else {\n      this.url.path = \"\";\n      this.state = \"opaque path\";\n    }\n  } else if (!this.stateOverride) {\n    this.buffer = \"\";\n    this.state = \"no scheme\";\n    this.pointer = -1;\n  } else {\n    this.parseError = true;\n    return failure;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\n  if (this.base === null || (hasAnOpaquePath(this.base) && c !== p(\"#\"))) {\n    return failure;\n  } else if (hasAnOpaquePath(this.base) && c === p(\"#\")) {\n    this.url.scheme = this.base.scheme;\n    this.url.path = this.base.path;\n    this.url.query = this.base.query;\n    this.url.fragment = \"\";\n    this.state = \"fragment\";\n  } else if (this.base.scheme === \"file\") {\n    this.state = \"file\";\n    --this.pointer;\n  } else {\n    this.state = \"relative\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\n  if (c === p(\"/\") && this.input[this.pointer + 1] === p(\"/\")) {\n    this.state = \"special authority ignore slashes\";\n    ++this.pointer;\n  } else {\n    this.parseError = true;\n    this.state = \"relative\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\n  if (c === p(\"/\")) {\n    this.state = \"authority\";\n  } else {\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\n  this.url.scheme = this.base.scheme;\n  if (c === p(\"/\")) {\n    this.state = \"relative slash\";\n  } else if (isSpecial(this.url) && c === p(\"\\\\\")) {\n    this.parseError = true;\n    this.state = \"relative slash\";\n  } else {\n    this.url.username = this.base.username;\n    this.url.password = this.base.password;\n    this.url.host = this.base.host;\n    this.url.port = this.base.port;\n    this.url.path = this.base.path.slice();\n    this.url.query = this.base.query;\n    if (c === p(\"?\")) {\n      this.url.query = \"\";\n      this.state = \"query\";\n    } else if (c === p(\"#\")) {\n      this.url.fragment = \"\";\n      this.state = \"fragment\";\n    } else if (!isNaN(c)) {\n      this.url.query = null;\n      this.url.path.pop();\n      this.state = \"path\";\n      --this.pointer;\n    }\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\n  if (isSpecial(this.url) && (c === p(\"/\") || c === p(\"\\\\\"))) {\n    if (c === p(\"\\\\\")) {\n      this.parseError = true;\n    }\n    this.state = \"special authority ignore slashes\";\n  } else if (c === p(\"/\")) {\n    this.state = \"authority\";\n  } else {\n    this.url.username = this.base.username;\n    this.url.password = this.base.password;\n    this.url.host = this.base.host;\n    this.url.port = this.base.port;\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\n  if (c === p(\"/\") && this.input[this.pointer + 1] === p(\"/\")) {\n    this.state = \"special authority ignore slashes\";\n    ++this.pointer;\n  } else {\n    this.parseError = true;\n    this.state = \"special authority ignore slashes\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\n  if (c !== p(\"/\") && c !== p(\"\\\\\")) {\n    this.state = \"authority\";\n    --this.pointer;\n  } else {\n    this.parseError = true;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\n  if (c === p(\"@\")) {\n    this.parseError = true;\n    if (this.atSignSeen) {\n      this.buffer = `%40${this.buffer}`;\n    }\n    this.atSignSeen = true;\n\n    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\n    const len = countSymbols(this.buffer);\n    for (let pointer = 0; pointer < len; ++pointer) {\n      const codePoint = this.buffer.codePointAt(pointer);\n\n      if (codePoint === p(\":\") && !this.passwordTokenSeen) {\n        this.passwordTokenSeen = true;\n        continue;\n      }\n      const encodedCodePoints = utf8PercentEncodeCodePoint(codePoint, isUserinfoPercentEncode);\n      if (this.passwordTokenSeen) {\n        this.url.password += encodedCodePoints;\n      } else {\n        this.url.username += encodedCodePoints;\n      }\n    }\n    this.buffer = \"\";\n  } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n             (isSpecial(this.url) && c === p(\"\\\\\"))) {\n    if (this.atSignSeen && this.buffer === \"\") {\n      this.parseError = true;\n      return failure;\n    }\n    this.pointer -= countSymbols(this.buffer) + 1;\n    this.buffer = \"\";\n    this.state = \"host\";\n  } else {\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse hostname\"] =\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\n  if (this.stateOverride && this.url.scheme === \"file\") {\n    --this.pointer;\n    this.state = \"file host\";\n  } else if (c === p(\":\") && !this.insideBrackets) {\n    if (this.buffer === \"\") {\n      this.parseError = true;\n      return failure;\n    }\n\n    if (this.stateOverride === \"hostname\") {\n      return failure;\n    }\n\n    const host = parseHost(this.buffer, isNotSpecial(this.url));\n    if (host === failure) {\n      return failure;\n    }\n\n    this.url.host = host;\n    this.buffer = \"\";\n    this.state = \"port\";\n  } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n             (isSpecial(this.url) && c === p(\"\\\\\"))) {\n    --this.pointer;\n    if (isSpecial(this.url) && this.buffer === \"\") {\n      this.parseError = true;\n      return failure;\n    } else if (this.stateOverride && this.buffer === \"\" &&\n               (includesCredentials(this.url) || this.url.port !== null)) {\n      this.parseError = true;\n      return failure;\n    }\n\n    const host = parseHost(this.buffer, isNotSpecial(this.url));\n    if (host === failure) {\n      return failure;\n    }\n\n    this.url.host = host;\n    this.buffer = \"\";\n    this.state = \"path start\";\n    if (this.stateOverride) {\n      return false;\n    }\n  } else {\n    if (c === p(\"[\")) {\n      this.insideBrackets = true;\n    } else if (c === p(\"]\")) {\n      this.insideBrackets = false;\n    }\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\n  if (infra.isASCIIDigit(c)) {\n    this.buffer += cStr;\n  } else if (isNaN(c) || c === p(\"/\") || c === p(\"?\") || c === p(\"#\") ||\n             (isSpecial(this.url) && c === p(\"\\\\\")) ||\n             this.stateOverride) {\n    if (this.buffer !== \"\") {\n      const port = parseInt(this.buffer);\n      if (port > 2 ** 16 - 1) {\n        this.parseError = true;\n        return failure;\n      }\n      this.url.port = port === defaultPort(this.url.scheme) ? null : port;\n      this.buffer = \"\";\n      if (this.stateOverride) {\n        return false;\n      }\n    }\n    if (this.stateOverride) {\n      return failure;\n    }\n    this.state = \"path start\";\n    --this.pointer;\n  } else {\n    this.parseError = true;\n    return failure;\n  }\n\n  return true;\n};\n\nconst fileOtherwiseCodePoints = new Set([p(\"/\"), p(\"\\\\\"), p(\"?\"), p(\"#\")]);\n\nfunction startsWithWindowsDriveLetter(input, pointer) {\n  const length = input.length - pointer;\n  return length >= 2 &&\n    isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&\n    (length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));\n}\n\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\n  this.url.scheme = \"file\";\n  this.url.host = \"\";\n\n  if (c === p(\"/\") || c === p(\"\\\\\")) {\n    if (c === p(\"\\\\\")) {\n      this.parseError = true;\n    }\n    this.state = \"file slash\";\n  } else if (this.base !== null && this.base.scheme === \"file\") {\n    this.url.host = this.base.host;\n    this.url.path = this.base.path.slice();\n    this.url.query = this.base.query;\n    if (c === p(\"?\")) {\n      this.url.query = \"\";\n      this.state = \"query\";\n    } else if (c === p(\"#\")) {\n      this.url.fragment = \"\";\n      this.state = \"fragment\";\n    } else if (!isNaN(c)) {\n      this.url.query = null;\n      if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {\n        shortenPath(this.url);\n      } else {\n        this.parseError = true;\n        this.url.path = [];\n      }\n\n      this.state = \"path\";\n      --this.pointer;\n    }\n  } else {\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\n  if (c === p(\"/\") || c === p(\"\\\\\")) {\n    if (c === p(\"\\\\\")) {\n      this.parseError = true;\n    }\n    this.state = \"file host\";\n  } else {\n    if (this.base !== null && this.base.scheme === \"file\") {\n      if (!startsWithWindowsDriveLetter(this.input, this.pointer) &&\n          isNormalizedWindowsDriveLetterString(this.base.path[0])) {\n        this.url.path.push(this.base.path[0]);\n      }\n      this.url.host = this.base.host;\n    }\n    this.state = \"path\";\n    --this.pointer;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\n  if (isNaN(c) || c === p(\"/\") || c === p(\"\\\\\") || c === p(\"?\") || c === p(\"#\")) {\n    --this.pointer;\n    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\n      this.parseError = true;\n      this.state = \"path\";\n    } else if (this.buffer === \"\") {\n      this.url.host = \"\";\n      if (this.stateOverride) {\n        return false;\n      }\n      this.state = \"path start\";\n    } else {\n      let host = parseHost(this.buffer, isNotSpecial(this.url));\n      if (host === failure) {\n        return failure;\n      }\n      if (host === \"localhost\") {\n        host = \"\";\n      }\n      this.url.host = host;\n\n      if (this.stateOverride) {\n        return false;\n      }\n\n      this.buffer = \"\";\n      this.state = \"path start\";\n    }\n  } else {\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\n  if (isSpecial(this.url)) {\n    if (c === p(\"\\\\\")) {\n      this.parseError = true;\n    }\n    this.state = \"path\";\n\n    if (c !== p(\"/\") && c !== p(\"\\\\\")) {\n      --this.pointer;\n    }\n  } else if (!this.stateOverride && c === p(\"?\")) {\n    this.url.query = \"\";\n    this.state = \"query\";\n  } else if (!this.stateOverride && c === p(\"#\")) {\n    this.url.fragment = \"\";\n    this.state = \"fragment\";\n  } else if (c !== undefined) {\n    this.state = \"path\";\n    if (c !== p(\"/\")) {\n      --this.pointer;\n    }\n  } else if (this.stateOverride && this.url.host === null) {\n    this.url.path.push(\"\");\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\n  if (isNaN(c) || c === p(\"/\") || (isSpecial(this.url) && c === p(\"\\\\\")) ||\n      (!this.stateOverride && (c === p(\"?\") || c === p(\"#\")))) {\n    if (isSpecial(this.url) && c === p(\"\\\\\")) {\n      this.parseError = true;\n    }\n\n    if (isDoubleDot(this.buffer)) {\n      shortenPath(this.url);\n      if (c !== p(\"/\") && !(isSpecial(this.url) && c === p(\"\\\\\"))) {\n        this.url.path.push(\"\");\n      }\n    } else if (isSingleDot(this.buffer) && c !== p(\"/\") &&\n               !(isSpecial(this.url) && c === p(\"\\\\\"))) {\n      this.url.path.push(\"\");\n    } else if (!isSingleDot(this.buffer)) {\n      if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\n        this.buffer = `${this.buffer[0]}:`;\n      }\n      this.url.path.push(this.buffer);\n    }\n    this.buffer = \"\";\n    if (c === p(\"?\")) {\n      this.url.query = \"\";\n      this.state = \"query\";\n    }\n    if (c === p(\"#\")) {\n      this.url.fragment = \"\";\n      this.state = \"fragment\";\n    }\n  } else {\n    // TODO: If c is not a URL code point and not \"%\", parse error.\n\n    if (c === p(\"%\") &&\n      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n        !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    this.buffer += utf8PercentEncodeCodePoint(c, isPathPercentEncode);\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse opaque path\"] = function parseOpaquePath(c) {\n  if (c === p(\"?\")) {\n    this.url.query = \"\";\n    this.state = \"query\";\n  } else if (c === p(\"#\")) {\n    this.url.fragment = \"\";\n    this.state = \"fragment\";\n  } else if (c === p(\" \")) {\n    const remaining = this.input[this.pointer + 1];\n    if (remaining === p(\"?\") || remaining === p(\"#\")) {\n      this.url.path += \"%20\";\n    } else {\n      this.url.path += \" \";\n    }\n  } else {\n    // TODO: Add: not a URL code point\n    if (!isNaN(c) && c !== p(\"%\")) {\n      this.parseError = true;\n    }\n\n    if (c === p(\"%\") &&\n        (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n         !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    if (!isNaN(c)) {\n      this.url.path += utf8PercentEncodeCodePoint(c, isC0ControlPercentEncode);\n    }\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\n  if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\n    this.encoding = \"utf-8\";\n  }\n\n  if ((!this.stateOverride && c === p(\"#\")) || isNaN(c)) {\n    const percentEncodeSet = isSpecial(this.url) ? extraSpecialQueryPercentEncodeChars : extraQueryPercentEncodeChars;\n    this.url.query += percentEncodeAfterEncoding(\n      this.encoding,\n      this.buffer,\n      percentEncodeSet\n    );\n\n    this.buffer = \"\";\n\n    if (c === p(\"#\")) {\n      this.url.fragment = \"\";\n      this.state = \"fragment\";\n    }\n  } else if (!isNaN(c)) {\n    // TODO: If c is not a URL code point and not \"%\", parse error.\n\n    if (c === p(\"%\") &&\n      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n        !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    this.buffer += cStr;\n  }\n\n  return true;\n};\n\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\n  if (!isNaN(c)) {\n    // TODO: If c is not a URL code point and not \"%\", parse error.\n    if (c === p(\"%\") &&\n      (!infra.isASCIIHex(this.input[this.pointer + 1]) ||\n        !infra.isASCIIHex(this.input[this.pointer + 2]))) {\n      this.parseError = true;\n    }\n\n    this.url.fragment += utf8PercentEncodeCodePoint(c, isFragmentPercentEncode);\n  }\n\n  return true;\n};\n\nfunction serializeURL(url, excludeFragment) {\n  let output = `${url.scheme}:`;\n  if (url.host !== null) {\n    output += \"//\";\n\n    if (url.username !== \"\" || url.password !== \"\") {\n      output += url.username;\n      if (url.password !== \"\") {\n        output += `:${url.password}`;\n      }\n      output += \"@\";\n    }\n\n    output += serializeHost(url.host);\n\n    if (url.port !== null) {\n      output += `:${url.port}`;\n    }\n  }\n\n  if (url.host === null && !hasAnOpaquePath(url) && url.path.length > 1 && url.path[0] === \"\") {\n    output += \"/.\";\n  }\n  output += serializePath(url);\n\n  if (url.query !== null) {\n    output += `?${url.query}`;\n  }\n\n  if (!excludeFragment && url.fragment !== null) {\n    output += `#${url.fragment}`;\n  }\n\n  return output;\n}\n\nfunction serializeOrigin(tuple) {\n  let result = `${tuple.scheme}://`;\n  result += serializeHost(tuple.host);\n\n  if (tuple.port !== null) {\n    result += `:${tuple.port}`;\n  }\n\n  return result;\n}\n\nfunction serializePath(url) {\n  if (hasAnOpaquePath(url)) {\n    return url.path;\n  }\n\n  let output = \"\";\n  for (const segment of url.path) {\n    output += `/${segment}`;\n  }\n  return output;\n}\n\nmodule.exports.serializeURL = serializeURL;\n\nmodule.exports.serializePath = serializePath;\n\nmodule.exports.serializeURLOrigin = function (url) {\n  // https://url.spec.whatwg.org/#concept-url-origin\n  switch (url.scheme) {\n    case \"blob\": {\n      const pathURL = module.exports.parseURL(serializePath(url));\n      if (pathURL === null) {\n        return \"null\";\n      }\n      if (pathURL.scheme !== \"http\" && pathURL.scheme !== \"https\") {\n        return \"null\";\n      }\n      return module.exports.serializeURLOrigin(pathURL);\n    }\n    case \"ftp\":\n    case \"http\":\n    case \"https\":\n    case \"ws\":\n    case \"wss\":\n      return serializeOrigin({\n        scheme: url.scheme,\n        host: url.host,\n        port: url.port\n      });\n    case \"file\":\n      // The spec says:\n      // > Unfortunate as it is, this is left as an exercise to the reader. When in doubt, return a new opaque origin.\n      // Browsers tested so far:\n      // - Chrome says \"file://\", but treats file: URLs as cross-origin for most (all?) purposes; see e.g.\n      //   https://bugs.chromium.org/p/chromium/issues/detail?id=37586\n      // - Firefox says \"null\", but treats file: URLs as same-origin sometimes based on directory stuff; see\n      //   https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs\n      return \"null\";\n    default:\n      // serializing an opaque origin returns \"null\"\n      return \"null\";\n  }\n};\n\nmodule.exports.basicURLParse = function (input, options) {\n  if (options === undefined) {\n    options = {};\n  }\n\n  const usm = new URLStateMachine(input, options.baseURL, options.encoding, options.url, options.stateOverride);\n  if (usm.failure) {\n    return null;\n  }\n\n  return usm.url;\n};\n\nmodule.exports.setTheUsername = function (url, username) {\n  url.username = utf8PercentEncodeString(username, isUserinfoPercentEncode);\n};\n\nmodule.exports.setThePassword = function (url, password) {\n  url.password = utf8PercentEncodeString(password, isUserinfoPercentEncode);\n};\n\nmodule.exports.serializeHost = serializeHost;\n\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\n\nmodule.exports.hasAnOpaquePath = hasAnOpaquePath;\n\nmodule.exports.serializeInteger = function (integer) {\n  return String(integer);\n};\n\nmodule.exports.parseURL = function (input, options) {\n  if (options === undefined) {\n    options = {};\n  }\n\n  // We don't handle blobs, so this just delegates:\n  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encoding: options.encoding });\n};\n","\"use strict\";\nconst { utf8Encode, utf8DecodeWithoutBOM } = require(\"./encoding\");\nconst { percentDecodeBytes, utf8PercentEncodeString, isURLEncodedPercentEncode } = require(\"./percent-encoding\");\n\nfunction p(char) {\n  return char.codePointAt(0);\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-parser\nfunction parseUrlencoded(input) {\n  const sequences = strictlySplitByteSequence(input, p(\"&\"));\n  const output = [];\n  for (const bytes of sequences) {\n    if (bytes.length === 0) {\n      continue;\n    }\n\n    let name, value;\n    const indexOfEqual = bytes.indexOf(p(\"=\"));\n\n    if (indexOfEqual >= 0) {\n      name = bytes.slice(0, indexOfEqual);\n      value = bytes.slice(indexOfEqual + 1);\n    } else {\n      name = bytes;\n      value = new Uint8Array(0);\n    }\n\n    name = replaceByteInByteSequence(name, 0x2B, 0x20);\n    value = replaceByteInByteSequence(value, 0x2B, 0x20);\n\n    const nameString = utf8DecodeWithoutBOM(percentDecodeBytes(name));\n    const valueString = utf8DecodeWithoutBOM(percentDecodeBytes(value));\n\n    output.push([nameString, valueString]);\n  }\n  return output;\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-string-parser\nfunction parseUrlencodedString(input) {\n  return parseUrlencoded(utf8Encode(input));\n}\n\n// https://url.spec.whatwg.org/#concept-urlencoded-serializer\nfunction serializeUrlencoded(tuples) {\n  // TODO: accept and use encoding argument\n\n  let output = \"\";\n  for (const [i, tuple] of tuples.entries()) {\n    const name = utf8PercentEncodeString(tuple[0], isURLEncodedPercentEncode, true);\n    const value = utf8PercentEncodeString(tuple[1], isURLEncodedPercentEncode, true);\n\n    if (i !== 0) {\n      output += \"&\";\n    }\n    output += `${name}=${value}`;\n  }\n  return output;\n}\n\nfunction strictlySplitByteSequence(buf, cp) {\n  const list = [];\n  let last = 0;\n  let i = buf.indexOf(cp);\n  while (i >= 0) {\n    list.push(buf.slice(last, i));\n    last = i + 1;\n    i = buf.indexOf(cp, last);\n  }\n  if (last !== buf.length) {\n    list.push(buf.slice(last));\n  }\n  return list;\n}\n\nfunction replaceByteInByteSequence(buf, from, to) {\n  let i = buf.indexOf(from);\n  while (i >= 0) {\n    buf[i] = to;\n    i = buf.indexOf(from, i + 1);\n  }\n  return buf;\n}\n\nmodule.exports = {\n  parseUrlencodedString,\n  serializeUrlencoded\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (typeof value !== \"function\") {\n    throw new globalObject.TypeError(context + \" is not a function\");\n  }\n\n  function invokeTheCallbackFunction(...args) {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    for (let i = 0; i < args.length; i++) {\n      args[i] = utils.tryWrapperForImpl(args[i]);\n    }\n\n    callResult = Reflect.apply(value, thisArg, args);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  }\n\n  invokeTheCallbackFunction.construct = (...args) => {\n    for (let i = 0; i < args.length; i++) {\n      args[i] = utils.tryWrapperForImpl(args[i]);\n    }\n\n    let callResult = Reflect.construct(value, args);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\nconst urlencoded = require(\"./urlencoded\");\n\nexports.implementation = class URLSearchParamsImpl {\n  constructor(globalObject, constructorArgs, { doNotStripQMark = false }) {\n    let init = constructorArgs[0];\n    this._list = [];\n    this._url = null;\n\n    if (!doNotStripQMark && typeof init === \"string\" && init[0] === \"?\") {\n      init = init.slice(1);\n    }\n\n    if (Array.isArray(init)) {\n      for (const pair of init) {\n        if (pair.length !== 2) {\n          throw new TypeError(\"Failed to construct 'URLSearchParams': parameter 1 sequence's element does not \" +\n                              \"contain exactly two elements.\");\n        }\n        this._list.push([pair[0], pair[1]]);\n      }\n    } else if (typeof init === \"object\" && Object.getPrototypeOf(init) === null) {\n      for (const name of Object.keys(init)) {\n        const value = init[name];\n        this._list.push([name, value]);\n      }\n    } else {\n      this._list = urlencoded.parseUrlencodedString(init);\n    }\n  }\n\n  _updateSteps() {\n    if (this._url !== null) {\n      let serializedQuery = urlencoded.serializeUrlencoded(this._list);\n      if (serializedQuery === \"\") {\n        serializedQuery = null;\n      }\n\n      this._url._url.query = serializedQuery;\n    }\n  }\n\n  get size() {\n    return this._list.length;\n  }\n\n  append(name, value) {\n    this._list.push([name, value]);\n    this._updateSteps();\n  }\n\n  delete(name, value) {\n    let i = 0;\n    while (i < this._list.length) {\n      if (this._list[i][0] === name && (value === undefined || this._list[i][1] === value)) {\n        this._list.splice(i, 1);\n      } else {\n        i++;\n      }\n    }\n    this._updateSteps();\n  }\n\n  get(name) {\n    for (const tuple of this._list) {\n      if (tuple[0] === name) {\n        return tuple[1];\n      }\n    }\n    return null;\n  }\n\n  getAll(name) {\n    const output = [];\n    for (const tuple of this._list) {\n      if (tuple[0] === name) {\n        output.push(tuple[1]);\n      }\n    }\n    return output;\n  }\n\n  has(name, value) {\n    for (const tuple of this._list) {\n      if (tuple[0] === name && (value === undefined || tuple[1] === value)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  set(name, value) {\n    let found = false;\n    let i = 0;\n    while (i < this._list.length) {\n      if (this._list[i][0] === name) {\n        if (found) {\n          this._list.splice(i, 1);\n        } else {\n          found = true;\n          this._list[i][1] = value;\n          i++;\n        }\n      } else {\n        i++;\n      }\n    }\n    if (!found) {\n      this._list.push([name, value]);\n    }\n    this._updateSteps();\n  }\n\n  sort() {\n    this._list.sort((a, b) => {\n      if (a[0] < b[0]) {\n        return -1;\n      }\n      if (a[0] > b[0]) {\n        return 1;\n      }\n      return 0;\n    });\n\n    this._updateSteps();\n  }\n\n  [Symbol.iterator]() {\n    return this._list[Symbol.iterator]();\n  }\n\n  toString() {\n    return urlencoded.serializeUrlencoded(this._list);\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Function = require(\"./Function.js\");\nconst newObjectInRealm = utils.newObjectInRealm;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"URLSearchParams\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'URLSearchParams'.`);\n};\n\nexports.createDefaultIterator = (globalObject, target, kind) => {\n  const ctorRegistry = globalObject[ctorRegistrySymbol];\n  const iteratorPrototype = ctorRegistry[\"URLSearchParams Iterator\"];\n  const iterator = Object.create(iteratorPrototype);\n  Object.defineProperty(iterator, utils.iterInternalSymbol, {\n    value: { target, kind, index: 0 },\n    configurable: true\n  });\n  return iterator;\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"URLSearchParams\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class URLSearchParams {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          if (utils.isObject(curArg)) {\n            if (curArg[Symbol.iterator] !== undefined) {\n              if (!utils.isObject(curArg)) {\n                throw new globalObject.TypeError(\n                  \"Failed to construct 'URLSearchParams': parameter 1\" + \" sequence\" + \" is not an iterable object.\"\n                );\n              } else {\n                const V = [];\n                const tmp = curArg;\n                for (let nextItem of tmp) {\n                  if (!utils.isObject(nextItem)) {\n                    throw new globalObject.TypeError(\n                      \"Failed to construct 'URLSearchParams': parameter 1\" +\n                        \" sequence\" +\n                        \"'s element\" +\n                        \" is not an iterable object.\"\n                    );\n                  } else {\n                    const V = [];\n                    const tmp = nextItem;\n                    for (let nextItem of tmp) {\n                      nextItem = conversions[\"USVString\"](nextItem, {\n                        context:\n                          \"Failed to construct 'URLSearchParams': parameter 1\" +\n                          \" sequence\" +\n                          \"'s element\" +\n                          \"'s element\",\n                        globals: globalObject\n                      });\n\n                      V.push(nextItem);\n                    }\n                    nextItem = V;\n                  }\n\n                  V.push(nextItem);\n                }\n                curArg = V;\n              }\n            } else {\n              if (!utils.isObject(curArg)) {\n                throw new globalObject.TypeError(\n                  \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \" is not an object.\"\n                );\n              } else {\n                const result = Object.create(null);\n                for (const key of Reflect.ownKeys(curArg)) {\n                  const desc = Object.getOwnPropertyDescriptor(curArg, key);\n                  if (desc && desc.enumerable) {\n                    let typedKey = key;\n\n                    typedKey = conversions[\"USVString\"](typedKey, {\n                      context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s key\",\n                      globals: globalObject\n                    });\n\n                    let typedValue = curArg[key];\n\n                    typedValue = conversions[\"USVString\"](typedValue, {\n                      context: \"Failed to construct 'URLSearchParams': parameter 1\" + \" record\" + \"'s value\",\n                      globals: globalObject\n                    });\n\n                    result[typedKey] = typedValue;\n                  }\n                }\n                curArg = result;\n              }\n            }\n          } else {\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to construct 'URLSearchParams': parameter 1\",\n              globals: globalObject\n            });\n          }\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    append(name, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'append' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'append' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'append' on 'URLSearchParams': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'append' on 'URLSearchParams': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].append(...args));\n    }\n\n    delete(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'delete' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'delete' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'delete' on 'URLSearchParams': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'delete' on 'URLSearchParams': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].delete(...args));\n    }\n\n    get(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get' called on an object that is not a valid instance of URLSearchParams.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'get' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'get' on 'URLSearchParams': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].get(...args);\n    }\n\n    getAll(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getAll' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getAll' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'getAll' on 'URLSearchParams': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getAll(...args));\n    }\n\n    has(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'has' called on an object that is not a valid instance of URLSearchParams.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'has' on 'URLSearchParams': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'has' on 'URLSearchParams': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'has' on 'URLSearchParams': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].has(...args);\n    }\n\n    set(name, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set' called on an object that is not a valid instance of URLSearchParams.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'set' on 'URLSearchParams': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'set' on 'URLSearchParams': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'set' on 'URLSearchParams': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].set(...args));\n    }\n\n    sort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'sort' called on an object that is not a valid instance of URLSearchParams.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].sort());\n    }\n\n    toString() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toString' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n\n      return esValue[implSymbol].toString();\n    }\n\n    keys() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'keys' called on an object that is not a valid instance of URLSearchParams.\");\n      }\n      return exports.createDefaultIterator(globalObject, this, \"key\");\n    }\n\n    values() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\n          \"'values' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n      return exports.createDefaultIterator(globalObject, this, \"value\");\n    }\n\n    entries() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\n          \"'entries' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n      return exports.createDefaultIterator(globalObject, this, \"key+value\");\n    }\n\n    forEach(callback) {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\n          \"'forEach' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          \"Failed to execute 'forEach' on 'iterable': 1 argument required, but only 0 present.\"\n        );\n      }\n      callback = Function.convert(globalObject, callback, {\n        context: \"Failed to execute 'forEach' on 'iterable': The callback provided as parameter 1\"\n      });\n      const thisArg = arguments[1];\n      let pairs = Array.from(this[implSymbol]);\n      let i = 0;\n      while (i < pairs.length) {\n        const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n        callback.call(thisArg, value, key, this);\n        pairs = Array.from(this[implSymbol]);\n        i++;\n      }\n    }\n\n    get size() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get size' called on an object that is not a valid instance of URLSearchParams.\"\n        );\n      }\n\n      return esValue[implSymbol][\"size\"];\n    }\n  }\n  Object.defineProperties(URLSearchParams.prototype, {\n    append: { enumerable: true },\n    delete: { enumerable: true },\n    get: { enumerable: true },\n    getAll: { enumerable: true },\n    has: { enumerable: true },\n    set: { enumerable: true },\n    sort: { enumerable: true },\n    toString: { enumerable: true },\n    keys: { enumerable: true },\n    values: { enumerable: true },\n    entries: { enumerable: true },\n    forEach: { enumerable: true },\n    size: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"URLSearchParams\", configurable: true },\n    [Symbol.iterator]: { value: URLSearchParams.prototype.entries, configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = URLSearchParams;\n\n  ctorRegistry[\"URLSearchParams Iterator\"] = Object.create(ctorRegistry[\"%IteratorPrototype%\"], {\n    [Symbol.toStringTag]: {\n      configurable: true,\n      value: \"URLSearchParams Iterator\"\n    }\n  });\n  utils.define(ctorRegistry[\"URLSearchParams Iterator\"], {\n    next() {\n      const internal = this && this[utils.iterInternalSymbol];\n      if (!internal) {\n        throw new globalObject.TypeError(\"next() called on a value that is not a URLSearchParams iterator object\");\n      }\n\n      const { target, kind, index } = internal;\n      const values = Array.from(target[implSymbol]);\n      const len = values.length;\n      if (index >= len) {\n        return newObjectInRealm(globalObject, { value: undefined, done: true });\n      }\n\n      const pair = values[index];\n      internal.index = index + 1;\n      return newObjectInRealm(globalObject, utils.iteratorResult(pair.map(utils.tryWrapperForImpl), kind));\n    }\n  });\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: URLSearchParams\n  });\n};\n\nconst Impl = require(\"./URLSearchParams-impl.js\");\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\nconst urlencoded = require(\"./urlencoded\");\nconst URLSearchParams = require(\"./URLSearchParams\");\nconst URL = require(\"./URL\");\n\nexports.implementation = class URLImpl {\n  // Unlike the spec, we duplicate some code between the constructor and canParse, because we want to give useful error\n  // messages in the constructor that distinguish between the different causes of failure.\n  constructor(globalObject, [url, base]) {\n    let parsedBase = null;\n    if (base !== undefined) {\n      parsedBase = usm.basicURLParse(base);\n      if (parsedBase === null) {\n        throw new TypeError(`Invalid base URL: ${base}`);\n      }\n    }\n\n    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n    if (parsedURL === null) {\n      throw new TypeError(`Invalid URL: ${url}`);\n    }\n\n    const query = parsedURL.query !== null ? parsedURL.query : \"\";\n\n    this._url = parsedURL;\n\n    // We cannot invoke the \"new URLSearchParams object\" algorithm without going through the constructor, which strips\n    // question mark by default. Therefore the doNotStripQMark hack is used.\n    this._query = URLSearchParams.createImpl(globalObject, [query], { doNotStripQMark: true });\n    this._query._url = this;\n  }\n\n  static parse(globalObject, input, base) {\n    try {\n      return URL.createImpl(globalObject, [input, base]);\n    } catch {\n      return null;\n    }\n  }\n\n  static canParse(url, base) {\n    let parsedBase = null;\n    if (base !== undefined) {\n      parsedBase = usm.basicURLParse(base);\n      if (parsedBase === null) {\n        return false;\n      }\n    }\n\n    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n    if (parsedURL === null) {\n      return false;\n    }\n\n    return true;\n  }\n\n  get href() {\n    return usm.serializeURL(this._url);\n  }\n\n  set href(v) {\n    const parsedURL = usm.basicURLParse(v);\n    if (parsedURL === null) {\n      throw new TypeError(`Invalid URL: ${v}`);\n    }\n\n    this._url = parsedURL;\n\n    this._query._list.splice(0);\n    const { query } = parsedURL;\n    if (query !== null) {\n      this._query._list = urlencoded.parseUrlencodedString(query);\n    }\n  }\n\n  get origin() {\n    return usm.serializeURLOrigin(this._url);\n  }\n\n  get protocol() {\n    return `${this._url.scheme}:`;\n  }\n\n  set protocol(v) {\n    usm.basicURLParse(`${v}:`, { url: this._url, stateOverride: \"scheme start\" });\n  }\n\n  get username() {\n    return this._url.username;\n  }\n\n  set username(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setTheUsername(this._url, v);\n  }\n\n  get password() {\n    return this._url.password;\n  }\n\n  set password(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setThePassword(this._url, v);\n  }\n\n  get host() {\n    const url = this._url;\n\n    if (url.host === null) {\n      return \"\";\n    }\n\n    if (url.port === null) {\n      return usm.serializeHost(url.host);\n    }\n\n    return `${usm.serializeHost(url.host)}:${usm.serializeInteger(url.port)}`;\n  }\n\n  set host(v) {\n    if (usm.hasAnOpaquePath(this._url)) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n  }\n\n  get hostname() {\n    if (this._url.host === null) {\n      return \"\";\n    }\n\n    return usm.serializeHost(this._url.host);\n  }\n\n  set hostname(v) {\n    if (usm.hasAnOpaquePath(this._url)) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n  }\n\n  get port() {\n    if (this._url.port === null) {\n      return \"\";\n    }\n\n    return usm.serializeInteger(this._url.port);\n  }\n\n  set port(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    if (v === \"\") {\n      this._url.port = null;\n    } else {\n      usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n    }\n  }\n\n  get pathname() {\n    return usm.serializePath(this._url);\n  }\n\n  set pathname(v) {\n    if (usm.hasAnOpaquePath(this._url)) {\n      return;\n    }\n\n    this._url.path = [];\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n  }\n\n  get search() {\n    if (this._url.query === null || this._url.query === \"\") {\n      return \"\";\n    }\n\n    return `?${this._url.query}`;\n  }\n\n  set search(v) {\n    const url = this._url;\n\n    if (v === \"\") {\n      url.query = null;\n      this._query._list = [];\n      return;\n    }\n\n    const input = v[0] === \"?\" ? v.substring(1) : v;\n    url.query = \"\";\n    usm.basicURLParse(input, { url, stateOverride: \"query\" });\n    this._query._list = urlencoded.parseUrlencodedString(input);\n  }\n\n  get searchParams() {\n    return this._query;\n  }\n\n  get hash() {\n    if (this._url.fragment === null || this._url.fragment === \"\") {\n      return \"\";\n    }\n\n    return `#${this._url.fragment}`;\n  }\n\n  set hash(v) {\n    if (v === \"\") {\n      this._url.fragment = null;\n      return;\n    }\n\n    const input = v[0] === \"#\" ? v.substring(1) : v;\n    this._url.fragment = \"\";\n    usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n  }\n\n  toJSON() {\n    return this.href;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"URL\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'URL'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"URL\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class URL {\n    constructor(url) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'URL': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to construct 'URL': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to construct 'URL': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    toJSON() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'toJSON' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol].toJSON();\n    }\n\n    get href() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get href' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"href\"];\n    }\n\n    set href(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set href' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'href' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"href\"] = V;\n    }\n\n    toString() {\n      const esValue = this;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'toString' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"href\"];\n    }\n\n    get origin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get origin' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"origin\"];\n    }\n\n    get protocol() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get protocol' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"protocol\"];\n    }\n\n    set protocol(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set protocol' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'protocol' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"protocol\"] = V;\n    }\n\n    get username() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get username' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"username\"];\n    }\n\n    set username(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set username' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'username' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"username\"] = V;\n    }\n\n    get password() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get password' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"password\"];\n    }\n\n    set password(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set password' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'password' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"password\"] = V;\n    }\n\n    get host() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get host' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"host\"];\n    }\n\n    set host(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set host' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'host' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"host\"] = V;\n    }\n\n    get hostname() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get hostname' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"hostname\"];\n    }\n\n    set hostname(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set hostname' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'hostname' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"hostname\"] = V;\n    }\n\n    get port() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get port' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"port\"];\n    }\n\n    set port(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set port' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'port' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"port\"] = V;\n    }\n\n    get pathname() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get pathname' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"pathname\"];\n    }\n\n    set pathname(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set pathname' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'pathname' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"pathname\"] = V;\n    }\n\n    get search() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get search' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"search\"];\n    }\n\n    set search(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set search' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'search' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"search\"] = V;\n    }\n\n    get searchParams() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get searchParams' called on an object that is not a valid instance of URL.\");\n      }\n\n      return utils.getSameObject(this, \"searchParams\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"searchParams\"]);\n      });\n    }\n\n    get hash() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get hash' called on an object that is not a valid instance of URL.\");\n      }\n\n      return esValue[implSymbol][\"hash\"];\n    }\n\n    set hash(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set hash' called on an object that is not a valid instance of URL.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'hash' property on 'URL': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"hash\"] = V;\n    }\n\n    static parse(url) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'parse' on 'URL': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'parse' on 'URL': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'parse' on 'URL': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(Impl.implementation.parse(globalObject, ...args));\n    }\n\n    static canParse(url) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'canParse' on 'URL': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'canParse' on 'URL': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'canParse' on 'URL': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return Impl.implementation.canParse(...args);\n    }\n  }\n  Object.defineProperties(URL.prototype, {\n    toJSON: { enumerable: true },\n    href: { enumerable: true },\n    toString: { enumerable: true },\n    origin: { enumerable: true },\n    protocol: { enumerable: true },\n    username: { enumerable: true },\n    password: { enumerable: true },\n    host: { enumerable: true },\n    hostname: { enumerable: true },\n    port: { enumerable: true },\n    pathname: { enumerable: true },\n    search: { enumerable: true },\n    searchParams: { enumerable: true },\n    hash: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"URL\", configurable: true }\n  });\n  Object.defineProperties(URL, { parse: { enumerable: true }, canParse: { enumerable: true } });\n  ctorRegistry[interfaceName] = URL;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: URL\n  });\n\n  if (globalNames.includes(\"Window\")) {\n    Object.defineProperty(globalObject, \"webkitURL\", {\n      configurable: true,\n      writable: true,\n      value: URL\n    });\n  }\n};\n\nconst Impl = require(\"./URL-impl.js\");\n","\"use strict\";\n\nconst URL = require(\"./lib/URL\");\nconst URLSearchParams = require(\"./lib/URLSearchParams\");\n\nexports.URL = URL;\nexports.URLSearchParams = URLSearchParams;\n","\"use strict\";\n\nconst { URL, URLSearchParams } = require(\"./webidl2js-wrapper\");\nconst urlStateMachine = require(\"./lib/url-state-machine\");\nconst percentEncoding = require(\"./lib/percent-encoding\");\n\nconst sharedGlobalObject = { Array, Object, Promise, String, TypeError };\nURL.install(sharedGlobalObject, [\"Window\"]);\nURLSearchParams.install(sharedGlobalObject, [\"Window\"]);\n\nexports.URL = sharedGlobalObject.URL;\nexports.URLSearchParams = sharedGlobalObject.URLSearchParams;\n\nexports.parseURL = urlStateMachine.parseURL;\nexports.basicURLParse = urlStateMachine.basicURLParse;\nexports.serializeURL = urlStateMachine.serializeURL;\nexports.serializePath = urlStateMachine.serializePath;\nexports.serializeHost = urlStateMachine.serializeHost;\nexports.serializeInteger = urlStateMachine.serializeInteger;\nexports.serializeURLOrigin = urlStateMachine.serializeURLOrigin;\nexports.setTheUsername = urlStateMachine.setTheUsername;\nexports.setThePassword = urlStateMachine.setThePassword;\nexports.cannotHaveAUsernamePasswordPort = urlStateMachine.cannotHaveAUsernamePasswordPort;\nexports.hasAnOpaquePath = urlStateMachine.hasAnOpaquePath;\n\nexports.percentDecodeString = percentEncoding.percentDecodeString;\nexports.percentDecodeBytes = percentEncoding.percentDecodeBytes;\n","\"use strict\";\n\nexports.removeLeadingAndTrailingHTTPWhitespace = string => {\n  return string.replace(/^[ \\t\\n\\r]+/u, \"\").replace(/[ \\t\\n\\r]+$/u, \"\");\n};\n\nexports.removeTrailingHTTPWhitespace = string => {\n  return string.replace(/[ \\t\\n\\r]+$/u, \"\");\n};\n\nexports.isHTTPWhitespaceChar = char => {\n  return char === \" \" || char === \"\\t\" || char === \"\\n\" || char === \"\\r\";\n};\n\nexports.solelyContainsHTTPTokenCodePoints = string => {\n  return /^[-!#$%&'*+.^_`|~A-Za-z0-9]*$/u.test(string);\n};\n\nexports.soleyContainsHTTPQuotedStringTokenCodePoints = string => {\n  return /^[\\t\\u0020-\\u007E\\u0080-\\u00FF]*$/u.test(string);\n};\n\nexports.asciiLowercase = string => {\n  return string.replace(/[A-Z]/ug, l => l.toLowerCase());\n};\n\n// This variant only implements it with the extract-value flag set.\nexports.collectAnHTTPQuotedString = (input, position) => {\n  let value = \"\";\n\n  position++;\n\n  while (true) {\n    while (position < input.length && input[position] !== \"\\\"\" && input[position] !== \"\\\\\") {\n      value += input[position];\n      ++position;\n    }\n\n    if (position >= input.length) {\n      break;\n    }\n\n    const quoteOrBackslash = input[position];\n    ++position;\n\n    if (quoteOrBackslash === \"\\\\\") {\n      if (position >= input.length) {\n        value += \"\\\\\";\n        break;\n      }\n\n      value += input[position];\n      ++position;\n    } else {\n      break;\n    }\n  }\n\n  return [value, position];\n};\n","\"use strict\";\nconst {\n  asciiLowercase,\n  solelyContainsHTTPTokenCodePoints,\n  soleyContainsHTTPQuotedStringTokenCodePoints\n} = require(\"./utils.js\");\n\nmodule.exports = class MIMETypeParameters {\n  constructor(map) {\n    this._map = map;\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(name) {\n    name = asciiLowercase(String(name));\n    return this._map.get(name);\n  }\n\n  has(name) {\n    name = asciiLowercase(String(name));\n    return this._map.has(name);\n  }\n\n  set(name, value) {\n    name = asciiLowercase(String(name));\n    value = String(value);\n\n    if (!solelyContainsHTTPTokenCodePoints(name)) {\n      throw new Error(`Invalid MIME type parameter name \"${name}\": only HTTP token code points are valid.`);\n    }\n    if (!soleyContainsHTTPQuotedStringTokenCodePoints(value)) {\n      throw new Error(`Invalid MIME type parameter value \"${value}\": only HTTP quoted-string token code points are ` +\n                      `valid.`);\n    }\n\n    return this._map.set(name, value);\n  }\n\n  clear() {\n    this._map.clear();\n  }\n\n  delete(name) {\n    name = asciiLowercase(String(name));\n    return this._map.delete(name);\n  }\n\n  forEach(callbackFn, thisArg) {\n    this._map.forEach(callbackFn, thisArg);\n  }\n\n  keys() {\n    return this._map.keys();\n  }\n\n  values() {\n    return this._map.values();\n  }\n\n  entries() {\n    return this._map.entries();\n  }\n\n  [Symbol.iterator]() {\n    return this._map[Symbol.iterator]();\n  }\n};\n","\"use strict\";\nconst {\n  removeLeadingAndTrailingHTTPWhitespace,\n  removeTrailingHTTPWhitespace,\n  isHTTPWhitespaceChar,\n  solelyContainsHTTPTokenCodePoints,\n  soleyContainsHTTPQuotedStringTokenCodePoints,\n  asciiLowercase,\n  collectAnHTTPQuotedString\n} = require(\"./utils.js\");\n\nmodule.exports = input => {\n  input = removeLeadingAndTrailingHTTPWhitespace(input);\n\n  let position = 0;\n  let type = \"\";\n  while (position < input.length && input[position] !== \"/\") {\n    type += input[position];\n    ++position;\n  }\n\n  if (type.length === 0 || !solelyContainsHTTPTokenCodePoints(type)) {\n    return null;\n  }\n\n  if (position >= input.length) {\n    return null;\n  }\n\n  // Skips past \"/\"\n  ++position;\n\n  let subtype = \"\";\n  while (position < input.length && input[position] !== \";\") {\n    subtype += input[position];\n    ++position;\n  }\n\n  subtype = removeTrailingHTTPWhitespace(subtype);\n\n  if (subtype.length === 0 || !solelyContainsHTTPTokenCodePoints(subtype)) {\n    return null;\n  }\n\n  const mimeType = {\n    type: asciiLowercase(type),\n    subtype: asciiLowercase(subtype),\n    parameters: new Map()\n  };\n\n  while (position < input.length) {\n    // Skip past \";\"\n    ++position;\n\n    while (isHTTPWhitespaceChar(input[position])) {\n      ++position;\n    }\n\n    let parameterName = \"\";\n    while (position < input.length && input[position] !== \";\" && input[position] !== \"=\") {\n      parameterName += input[position];\n      ++position;\n    }\n    parameterName = asciiLowercase(parameterName);\n\n    if (position < input.length) {\n      if (input[position] === \";\") {\n        continue;\n      }\n\n      // Skip past \"=\"\n      ++position;\n    }\n\n    let parameterValue = null;\n    if (input[position] === \"\\\"\") {\n      [parameterValue, position] = collectAnHTTPQuotedString(input, position);\n\n      while (position < input.length && input[position] !== \";\") {\n        ++position;\n      }\n    } else {\n      parameterValue = \"\";\n      while (position < input.length && input[position] !== \";\") {\n        parameterValue += input[position];\n        ++position;\n      }\n\n      parameterValue = removeTrailingHTTPWhitespace(parameterValue);\n\n      if (parameterValue === \"\") {\n        continue;\n      }\n    }\n\n    if (parameterName.length > 0 &&\n        solelyContainsHTTPTokenCodePoints(parameterName) &&\n        soleyContainsHTTPQuotedStringTokenCodePoints(parameterValue) &&\n        !mimeType.parameters.has(parameterName)) {\n      mimeType.parameters.set(parameterName, parameterValue);\n    }\n  }\n\n  return mimeType;\n};\n","\"use strict\";\nconst { solelyContainsHTTPTokenCodePoints } = require(\"./utils.js\");\n\nmodule.exports = mimeType => {\n  let serialization = `${mimeType.type}/${mimeType.subtype}`;\n\n  if (mimeType.parameters.size === 0) {\n    return serialization;\n  }\n\n  for (let [name, value] of mimeType.parameters) {\n    serialization += \";\";\n    serialization += name;\n    serialization += \"=\";\n\n    if (!solelyContainsHTTPTokenCodePoints(value) || value.length === 0) {\n      value = value.replace(/([\"\\\\])/ug, \"\\\\$1\");\n      value = `\"${value}\"`;\n    }\n\n    serialization += value;\n  }\n\n  return serialization;\n};\n","\"use strict\";\nconst MIMETypeParameters = require(\"./mime-type-parameters.js\");\nconst parse = require(\"./parser.js\");\nconst serialize = require(\"./serializer.js\");\nconst {\n  asciiLowercase,\n  solelyContainsHTTPTokenCodePoints\n} = require(\"./utils.js\");\n\nmodule.exports = class MIMEType {\n  constructor(string) {\n    string = String(string);\n    const result = parse(string);\n    if (result === null) {\n      throw new Error(`Could not parse MIME type string \"${string}\"`);\n    }\n\n    this._type = result.type;\n    this._subtype = result.subtype;\n    this._parameters = new MIMETypeParameters(result.parameters);\n  }\n\n  static parse(string) {\n    try {\n      return new this(string);\n    } catch {\n      return null;\n    }\n  }\n\n  get essence() {\n    return `${this.type}/${this.subtype}`;\n  }\n\n  get type() {\n    return this._type;\n  }\n\n  set type(value) {\n    value = asciiLowercase(String(value));\n\n    if (value.length === 0) {\n      throw new Error(\"Invalid type: must be a non-empty string\");\n    }\n    if (!solelyContainsHTTPTokenCodePoints(value)) {\n      throw new Error(`Invalid type ${value}: must contain only HTTP token code points`);\n    }\n\n    this._type = value;\n  }\n\n  get subtype() {\n    return this._subtype;\n  }\n\n  set subtype(value) {\n    value = asciiLowercase(String(value));\n\n    if (value.length === 0) {\n      throw new Error(\"Invalid subtype: must be a non-empty string\");\n    }\n    if (!solelyContainsHTTPTokenCodePoints(value)) {\n      throw new Error(`Invalid subtype ${value}: must contain only HTTP token code points`);\n    }\n\n    this._subtype = value;\n  }\n\n  get parameters() {\n    return this._parameters;\n  }\n\n  toString() {\n    // The serialize function works on both \"MIME type records\" (i.e. the results of parse) and on this class, since\n    // this class's interface is identical.\n    return serialize(this);\n  }\n\n  isJavaScript({ prohibitParameters = false } = {}) {\n    switch (this._type) {\n      case \"text\": {\n        switch (this._subtype) {\n          case \"ecmascript\":\n          case \"javascript\":\n          case \"javascript1.0\":\n          case \"javascript1.1\":\n          case \"javascript1.2\":\n          case \"javascript1.3\":\n          case \"javascript1.4\":\n          case \"javascript1.5\":\n          case \"jscript\":\n          case \"livescript\":\n          case \"x-ecmascript\":\n          case \"x-javascript\": {\n            return !prohibitParameters || this._parameters.size === 0;\n          }\n          default: {\n            return false;\n          }\n        }\n      }\n      case \"application\": {\n        switch (this._subtype) {\n          case \"ecmascript\":\n          case \"javascript\":\n          case \"x-ecmascript\":\n          case \"x-javascript\": {\n            return !prohibitParameters || this._parameters.size === 0;\n          }\n          default: {\n            return false;\n          }\n        }\n      }\n      default: {\n        return false;\n      }\n    }\n  }\n  isXML() {\n    return (this._subtype === \"xml\" && (this._type === \"text\" || this._type === \"application\")) ||\n           this._subtype.endsWith(\"+xml\");\n  }\n  isHTML() {\n    return this._subtype === \"html\" && this._type === \"text\";\n  }\n};\n","\"use strict\";\nconst MIMEType = require(\"./mime-type.js\");\n\n// Normalize a MIME type input (string or MIMEType-like object) to a MIMEType.\n// Returns null if parsing fails (including for undefined input).\nfunction normalizeMIMEType(input) {\n  return MIMEType.parse(`${input}`);\n}\n\n// https://mimesniff.spec.whatwg.org/#xml-mime-type\nfunction isXMLMIMEType(mimeType) {\n  return mimeType.subtype.endsWith(\"+xml\") ||\n         (mimeType.type === \"text\" && mimeType.subtype === \"xml\") ||\n         (mimeType.type === \"application\" && mimeType.subtype === \"xml\");\n}\n\n// https://mimesniff.spec.whatwg.org/#html-mime-type\nfunction isHTMLMIMEType(mimeType) {\n  return mimeType.type === \"text\" && mimeType.subtype === \"html\";\n}\n\n// https://mimesniff.spec.whatwg.org/#resource-header\nconst RESOURCE_HEADER_LENGTH = 1445;\n\nfunction getResourceHeader(resource) {\n  if (resource.length <= RESOURCE_HEADER_LENGTH) {\n    return resource;\n  }\n  return resource.subarray(0, RESOURCE_HEADER_LENGTH);\n}\n\n// https://mimesniff.spec.whatwg.org/#image-mime-type\nfunction isImageMIMEType(mimeType) {\n  return mimeType.type === \"image\";\n}\n\n// https://mimesniff.spec.whatwg.org/#audio-or-video-mime-type\nfunction isAudioOrVideoMIMEType(mimeType) {\n  return mimeType.type === \"audio\" ||\n         mimeType.type === \"video\" ||\n         (mimeType.type === \"application\" && mimeType.subtype === \"ogg\");\n}\n\n// https://mimesniff.spec.whatwg.org/#whitespace-byte\nfunction isWhitespaceByte(byte) {\n  return byte === 0x09 || byte === 0x0A || byte === 0x0C || byte === 0x0D || byte === 0x20;\n}\n\n// https://mimesniff.spec.whatwg.org/#binary-data-byte\nfunction isBinaryDataByte(byte) {\n  return (byte >= 0x00 && byte <= 0x08) ||\n         byte === 0x0B ||\n         (byte >= 0x0E && byte <= 0x1A) ||\n         (byte >= 0x1C && byte <= 0x1F);\n}\n\n// https://mimesniff.spec.whatwg.org/#pattern-matching-algorithm\nfunction matchesSignature(resource, signature) {\n  const { pattern, mask, ignoredLeadingBytes, mimeType } = signature;\n\n  let s = 0;\n  if (ignoredLeadingBytes) {\n    while (s < resource.length && ignoredLeadingBytes(resource[s])) {\n      s++;\n    }\n  }\n\n  if (resource.length < s + pattern.length) {\n    return null;\n  }\n\n  for (let i = 0; i < pattern.length; i++) {\n    if ((resource[s + i] & mask[i]) !== (pattern[i] & mask[i])) {\n      return null;\n    }\n  }\n\n  return mimeType;\n}\n\n// https://mimesniff.spec.whatwg.org/#rules-for-identifying-an-unknown-mime-type\nconst step1Table = [\n  // <!DOCTYPE HTML TT\n  {\n    pattern: [0x3C, 0x21, 0x44, 0x4F, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x48, 0x54, 0x4D, 0x4C, 0x20],\n    mask: [0xFF, 0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <HTML TT\n  {\n    pattern: [0x3C, 0x48, 0x54, 0x4D, 0x4C, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <HEAD TT\n  {\n    pattern: [0x3C, 0x48, 0x45, 0x41, 0x44, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <SCRIPT TT\n  {\n    pattern: [0x3C, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <IFRAME TT\n  {\n    pattern: [0x3C, 0x49, 0x46, 0x52, 0x41, 0x4D, 0x45, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <H1 TT\n  {\n    pattern: [0x3C, 0x48, 0x31, 0x20],\n    mask: [0xFF, 0xDF, 0xFF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <DIV TT\n  {\n    pattern: [0x3C, 0x44, 0x49, 0x56, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <FONT TT\n  {\n    pattern: [0x3C, 0x46, 0x4F, 0x4E, 0x54, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <TABLE TT\n  {\n    pattern: [0x3C, 0x54, 0x41, 0x42, 0x4C, 0x45, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <A TT\n  {\n    pattern: [0x3C, 0x41, 0x20],\n    mask: [0xFF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <STYLE TT\n  {\n    pattern: [0x3C, 0x53, 0x54, 0x59, 0x4C, 0x45, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <TITLE TT\n  {\n    pattern: [0x3C, 0x54, 0x49, 0x54, 0x4C, 0x45, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <B TT\n  {\n    pattern: [0x3C, 0x42, 0x20],\n    mask: [0xFF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <BODY TT\n  {\n    pattern: [0x3C, 0x42, 0x4F, 0x44, 0x59, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <BR TT\n  {\n    pattern: [0x3C, 0x42, 0x52, 0x20],\n    mask: [0xFF, 0xDF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <P TT\n  {\n    pattern: [0x3C, 0x50, 0x20],\n    mask: [0xFF, 0xDF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <!-- TT\n  {\n    pattern: [0x3C, 0x21, 0x2D, 0x2D, 0x20],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xE1],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/html\"\n  },\n  // <?xml\n  {\n    pattern: [0x3C, 0x3F, 0x78, 0x6D, 0x6C],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    ignoredLeadingBytes: isWhitespaceByte,\n    mimeType: \"text/xml\"\n  },\n  // %PDF-\n  {\n    pattern: [0x25, 0x50, 0x44, 0x46, 0x2D],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"application/pdf\"\n  }\n];\n\n// https://mimesniff.spec.whatwg.org/#rules-for-identifying-an-unknown-mime-type\nconst step2Table = [\n  // %!PS-Adobe-\n  {\n    pattern: [0x25, 0x21, 0x50, 0x53, 0x2D, 0x41, 0x64, 0x6F, 0x62, 0x65, 0x2D],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"application/postscript\"\n  },\n  // UTF-16BE BOM\n  {\n    pattern: [0xFE, 0xFF, 0x00, 0x00],\n    mask: [0xFF, 0xFF, 0x00, 0x00],\n    mimeType: \"text/plain\"\n  },\n  // UTF-16LE BOM\n  {\n    pattern: [0xFF, 0xFE, 0x00, 0x00],\n    mask: [0xFF, 0xFF, 0x00, 0x00],\n    mimeType: \"text/plain\"\n  },\n  // UTF-8 BOM\n  {\n    pattern: [0xEF, 0xBB, 0xBF, 0x00],\n    mask: [0xFF, 0xFF, 0xFF, 0x00],\n    mimeType: \"text/plain\"\n  }\n];\n\n// https://mimesniff.spec.whatwg.org/#matching-an-image-type-pattern\nconst imageSignatures = [\n  { pattern: [0x00, 0x00, 0x01, 0x00], mask: [0xFF, 0xFF, 0xFF, 0xFF], mimeType: \"image/x-icon\" },\n  { pattern: [0x00, 0x00, 0x02, 0x00], mask: [0xFF, 0xFF, 0xFF, 0xFF], mimeType: \"image/x-icon\" },\n  { pattern: [0x42, 0x4D], mask: [0xFF, 0xFF], mimeType: \"image/bmp\" },\n  {\n    pattern: [0x47, 0x49, 0x46, 0x38, 0x37, 0x61],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"image/gif\"\n  },\n  {\n    pattern: [0x47, 0x49, 0x46, 0x38, 0x39, 0x61],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"image/gif\"\n  },\n  {\n    pattern: [0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x57, 0x45, 0x42, 0x50, 0x56, 0x50],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"image/webp\"\n  },\n  {\n    pattern: [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"image/png\"\n  },\n  { pattern: [0xFF, 0xD8, 0xFF], mask: [0xFF, 0xFF, 0xFF], mimeType: \"image/jpeg\" }\n];\n\n// https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern\nconst audioVideoSignatures = [\n  {\n    pattern: [0x46, 0x4F, 0x52, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x46, 0x46],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"audio/aiff\"\n  },\n  { pattern: [0x49, 0x44, 0x33], mask: [0xFF, 0xFF, 0xFF], mimeType: \"audio/mpeg\" },\n  {\n    pattern: [0x4F, 0x67, 0x67, 0x53, 0x00],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"application/ogg\"\n  },\n  {\n    pattern: [0x4D, 0x54, 0x68, 0x64, 0x00, 0x00, 0x00, 0x06],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"audio/midi\"\n  },\n  {\n    pattern: [0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x41, 0x56, 0x49, 0x20],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"video/avi\"\n  },\n  {\n    pattern: [0x52, 0x49, 0x46, 0x46, 0x00, 0x00, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"audio/wave\"\n  }\n];\n\n// https://mimesniff.spec.whatwg.org/#signature-for-mp4\nfunction matchMP4(resource) {\n  if (resource.length < 12) {\n    return null;\n  }\n  // Bytes 4-7 must be \"ftyp\"\n  if (resource[4] !== 0x66 || resource[5] !== 0x74 ||\n      resource[6] !== 0x79 || resource[7] !== 0x70) {\n    return null;\n  }\n  const length = (resource[0] << 24) | (resource[1] << 16) | (resource[2] << 8) | resource[3];\n  if (length < 12 || length > resource.length) {\n    return null;\n  }\n  const brand = String.fromCharCode(resource[8], resource[9], resource[10], resource[11]);\n  const mp4Brands = [\"mp41\", \"mp42\", \"isom\", \"iso2\", \"mmp4\", \"M4V \", \"M4A \", \"M4P \", \"avc1\"];\n  if (mp4Brands.includes(brand)) {\n    return \"video/mp4\";\n  }\n  for (let i = 16; i + 4 <= length && i + 4 <= resource.length; i += 4) {\n    const compat = String.fromCharCode(resource[i], resource[i + 1], resource[i + 2], resource[i + 3]);\n    if (mp4Brands.includes(compat)) {\n      return \"video/mp4\";\n    }\n  }\n  return null;\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-vint\n//\n// Note: The spec has a bug: it takes an \"iter\" parameter but never uses it, always starting from index 0.\n// See https://github.com/whatwg/mimesniff/issues/167. We implement the intended behavior.\n//\n// The spec algorithm also does extra processing which is not actually needed by its single caller:\n// https://github.com/whatwg/mimesniff/issues/146. We omit that processing.\nfunction parseVint(sequence, iter) {\n  let mask = 128;\n  const maxVintLength = 8;\n  let numberSize = 1;\n  while (numberSize < maxVintLength && numberSize < sequence.length) {\n    if ((sequence[iter] & mask) !== 0) {\n      break;\n    }\n    mask >>= 1;\n    ++numberSize;\n  }\n  return numberSize;\n}\n\n// https://mimesniff.spec.whatwg.org/#matching-a-padded-sequence\nfunction matchPaddedSequence(sequence, offset, pattern) {\n  // Skip leading 0x00 bytes\n  while (offset < sequence.length && sequence[offset] === 0x00) {\n    offset++;\n  }\n  // Check if pattern matches at current offset\n  if (sequence.length < offset + pattern.length) {\n    return false;\n  }\n  for (let i = 0; i < pattern.length; i++) {\n    if (sequence[offset + i] !== pattern[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\n// https://mimesniff.spec.whatwg.org/#signature-for-webm\nfunction matchWebM(resource) {\n  const { length } = resource;\n  // Step 3: If length < 4, return false\n  if (length < 4) {\n    return null;\n  }\n  // Step 4: Check EBML header 0x1A 0x45 0xDF 0xA3\n  if (resource[0] !== 0x1A || resource[1] !== 0x45 ||\n      resource[2] !== 0xDF || resource[3] !== 0xA3) {\n    return null;\n  }\n  // Step 5-6: Search for DocType element (0x42 0x82) in bytes 4-37\n  let iter = 4;\n  while (iter < length && iter < 38) {\n    if (iter + 1 < length && resource[iter] === 0x42 && resource[iter + 1] === 0x82) {\n      iter += 2;\n      if (iter >= length) {\n        break;\n      }\n      const numberSize = parseVint(resource, iter);\n      iter += numberSize;\n      if (iter >= length - 4) {\n        break;\n      }\n      // Match padded sequence \"webm\" (0x77 0x65 0x62 0x6D)\n      if (matchPaddedSequence(resource, iter, [0x77, 0x65, 0x62, 0x6D])) {\n        return \"video/webm\";\n      }\n    }\n    iter++;\n  }\n  return null;\n}\n\n// https://mimesniff.spec.whatwg.org/#signature-for-mp3-without-id3\n\n// Bitrate tables (kbps) indexed by bitrate-index (0-15)\n// https://mimesniff.spec.whatwg.org/#mp3-rates-table\nconst mp3Rates = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0];\nconst mp25Rates = [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0];\n\n// Sample rate table indexed by samplerate-index (0-3)\n// https://mimesniff.spec.whatwg.org/#mp3-sample-rate-table\nconst sampleRates = [44100, 48000, 32000, 0];\n\n// https://mimesniff.spec.whatwg.org/#match-an-mp3-header\nfunction matchMP3Header(sequence, s) {\n  const { length } = sequence;\n  // Step 1: If length < s + 4, return false\n  if (length < s + 4) {\n    return false;\n  }\n  // Step 2: If sequence[s] ≠ 0xFF or sequence[s+1] & 0xE0 ≠ 0xE0, return false\n  if (sequence[s] !== 0xFF || (sequence[s + 1] & 0xE0) !== 0xE0) {\n    return false;\n  }\n  // Step 3: Extract layer\n  const layer = (sequence[s + 1] & 0x06) >> 1;\n  // Step 4: If layer is 0, return false\n  if (layer === 0) {\n    return false;\n  }\n  // Step 5: Extract bit-rate index, return false if 15\n  const bitRate = (sequence[s + 2] & 0xF0) >> 4;\n  if (bitRate === 15) {\n    return false;\n  }\n  // Step 6: Extract sample-rate index, return false if 3\n  const sampleRate = (sequence[s + 2] & 0x0C) >> 2;\n  if (sampleRate === 3) {\n    return false;\n  }\n  // Step 9: Check final-layer (layer must be 3 for MP3)\n  const finalLayer = (4 - layer) & 0x03;\n  if (finalLayer !== 3) {\n    return false;\n  }\n  // Step 10: Return true\n  return true;\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-an-mp3-frame\nfunction parseMP3Frame(sequence, s) {\n  // Step 1: Extract version\n  const version = (sequence[s + 1] & 0x18) >> 3;\n  // Step 2: Extract bitrate-index\n  const bitrateIndex = (sequence[s + 2] & 0xF0) >> 4;\n  // Step 3+4: Get bitrate from appropriate table\n  const bitrate = (version & 0x01) !== 0 ? mp3Rates[bitrateIndex] : mp25Rates[bitrateIndex];\n  // Step 5: Extract samplerate-index\n  const samplerateIndex = (sequence[s + 2] & 0x0C) >> 2;\n  // Step 6: Get samplerate\n  const samplerate = sampleRates[samplerateIndex];\n  // Step 7: Extract pad\n  const pad = (sequence[s + 2] & 0x02) >> 1;\n\n  return { version, bitrate, samplerate, pad };\n}\n\n// https://mimesniff.spec.whatwg.org/#compute-an-mp3-frame-size\nfunction computeMP3FrameSize(version, bitrate, samplerate, pad) {\n  // Step 1: Determine scale based on version\n  const scale = version === 1 ? 72 : 144;\n  // Step 2: Compute size\n  let size = Math.floor((bitrate * 1000 * scale) / samplerate);\n  // Step 3: Add padding if present\n  if (pad !== 0) {\n    size += 1;\n  }\n  // Step 4: Return size\n  return size;\n}\n\n// https://mimesniff.spec.whatwg.org/#signature-for-mp3-without-id3\nfunction matchMP3WithoutID3(resource) {\n  const { length } = resource;\n  // Step 2: Let s be 0\n  let s = 0;\n  // Step 3: If match mp3 header returns false, return false\n  if (!matchMP3Header(resource, s)) {\n    return null;\n  }\n  // Step 4: Parse an mp3 frame\n  const { version, bitrate, samplerate, pad } = parseMP3Frame(resource, s);\n  // Step 5: Compute frame size\n  const skippedBytes = computeMP3FrameSize(version, bitrate, samplerate, pad);\n  // Step 6: If skipped-bytes < 4 or skipped-bytes > length - s, return false\n  if (skippedBytes < 4 || skippedBytes > length - s) {\n    return null;\n  }\n  // Step 7: Increment s by skipped-bytes\n  s += skippedBytes;\n  // Step 8: If match mp3 header returns false, return false; otherwise return true\n  if (!matchMP3Header(resource, s)) {\n    return null;\n  }\n  return \"audio/mpeg\";\n}\n\n// https://mimesniff.spec.whatwg.org/#matching-an-archive-type-pattern\nconst archiveSignatures = [\n  { pattern: [0x1F, 0x8B, 0x08], mask: [0xFF, 0xFF, 0xFF], mimeType: \"application/x-gzip\" },\n  { pattern: [0x50, 0x4B, 0x03, 0x04], mask: [0xFF, 0xFF, 0xFF, 0xFF], mimeType: \"application/zip\" },\n  {\n    pattern: [0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00],\n    mask: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],\n    mimeType: \"application/x-rar-compressed\"\n  }\n];\n\n// https://mimesniff.spec.whatwg.org/#matching-an-image-type-pattern\nfunction matchImageType(resource) {\n  for (const sig of imageSignatures) {\n    const result = matchesSignature(resource, sig);\n    if (result) {\n      return result;\n    }\n  }\n  return null;\n}\n\n// https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern\nfunction matchAudioOrVideoType(resource) {\n  for (const sig of audioVideoSignatures) {\n    const result = matchesSignature(resource, sig);\n    if (result) {\n      return result;\n    }\n  }\n  const mp4Result = matchMP4(resource);\n  if (mp4Result) {\n    return mp4Result;\n  }\n  const webmResult = matchWebM(resource);\n  if (webmResult) {\n    return webmResult;\n  }\n  const mp3Result = matchMP3WithoutID3(resource);\n  if (mp3Result) {\n    return mp3Result;\n  }\n  return null;\n}\n\n// https://mimesniff.spec.whatwg.org/#rules-for-text-or-binary\nfunction distinguishTextOrBinary(resourceHeader) {\n  // Step 1: Let length be the number of bytes in the resource header.\n  const { length } = resourceHeader;\n\n  // Step 2: If the first 2 bytes match a UTF-16 BOM, return \"text/plain\".\n  if (length >= 2) {\n    // UTF-16 BE BOM\n    if (resourceHeader[0] === 0xFE && resourceHeader[1] === 0xFF) {\n      return \"text/plain\";\n    }\n    // UTF-16 LE BOM\n    if (resourceHeader[0] === 0xFF && resourceHeader[1] === 0xFE) {\n      return \"text/plain\";\n    }\n  }\n\n  // Step 3: If the first 3 bytes match the UTF-8 BOM, return \"text/plain\".\n  if (length >= 3) {\n    if (resourceHeader[0] === 0xEF && resourceHeader[1] === 0xBB && resourceHeader[2] === 0xBF) {\n      return \"text/plain\";\n    }\n  }\n\n  // Step 4: If the resource header contains no binary data bytes, return \"text/plain\".\n  for (let i = 0; i < length; i++) {\n    if (isBinaryDataByte(resourceHeader[i])) {\n      // Step 5: Return \"application/octet-stream\".\n      return \"application/octet-stream\";\n    }\n  }\n\n  return \"text/plain\";\n}\n\n// https://mimesniff.spec.whatwg.org/#rules-for-identifying-an-unknown-mime-type\nfunction identifyAnUnknownMIMEType(resourceHeader, { sniffScriptable = false } = {}) {\n  // Step 1\n  if (sniffScriptable) {\n    for (const sig of step1Table) {\n      const result = matchesSignature(resourceHeader, sig);\n      if (result) {\n        return result;\n      }\n    }\n  }\n\n  // Step 2\n  for (const sig of step2Table) {\n    const result = matchesSignature(resourceHeader, sig);\n    if (result) {\n      return result;\n    }\n  }\n\n  // Step 3: image type pattern matching\n  for (const sig of imageSignatures) {\n    const result = matchesSignature(resourceHeader, sig);\n    if (result) {\n      return result;\n    }\n  }\n\n  // Step 4: audio/video type pattern matching\n  // https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern\n  for (const sig of audioVideoSignatures) {\n    const result = matchesSignature(resourceHeader, sig);\n    if (result) {\n      return result;\n    }\n  }\n  // Then check MP4, WebM, and MP3-without-ID3 signatures\n  const mp4Result = matchMP4(resourceHeader);\n  if (mp4Result) {\n    return mp4Result;\n  }\n  const webmResult = matchWebM(resourceHeader);\n  if (webmResult) {\n    return webmResult;\n  }\n  const mp3Result = matchMP3WithoutID3(resourceHeader);\n  if (mp3Result) {\n    return mp3Result;\n  }\n\n  // Step 5: archive type pattern matching\n  for (const sig of archiveSignatures) {\n    const result = matchesSignature(resourceHeader, sig);\n    if (result) {\n      return result;\n    }\n  }\n\n  // Step 6: If resource header contains no binary data bytes, return text/plain\n  for (let i = 0; i < resourceHeader.length; i++) {\n    if (isBinaryDataByte(resourceHeader[i])) {\n      // Step 7: return application/octet-stream\n      return \"application/octet-stream\";\n    }\n  }\n\n  return \"text/plain\";\n}\n\n// Apache bug values that trigger text/binary sniffing\n// https://mimesniff.spec.whatwg.org/#supplied-mime-type-detection-algorithm\nconst apacheBugValues = new Set([\n  \"text/plain\",\n  \"text/plain; charset=ISO-8859-1\",\n  \"text/plain; charset=iso-8859-1\",\n  \"text/plain; charset=UTF-8\"\n]);\n\n// https://mimesniff.spec.whatwg.org/#supplied-mime-type-detection-algorithm\nfunction detectSuppliedMIMEType({ contentTypeHeader, providedType }) {\n  let suppliedMIMEType = null;\n  let checkForApacheBug = false;\n\n  if (contentTypeHeader !== undefined) {\n    // Step 2: HTTP Content-Type header\n    suppliedMIMEType = normalizeMIMEType(contentTypeHeader);\n    if (suppliedMIMEType !== null && typeof contentTypeHeader === \"string\") {\n      checkForApacheBug = apacheBugValues.has(contentTypeHeader);\n    }\n  } else if (providedType !== undefined) {\n    // Steps 3-4: Filesystem or other protocol\n    suppliedMIMEType = normalizeMIMEType(providedType);\n  }\n  // Step 5: If parsing failed, suppliedMIMEType remains null (undefined per spec)\n\n  return { suppliedMIMEType, checkForApacheBug };\n}\n\n/**\n * Determine the computed MIME type of a resource.\n * https://mimesniff.spec.whatwg.org/#determining-the-computed-mime-type-of-a-resource\n *\n * @param {Uint8Array} resource - The resource bytes\n * @param {object} options - Options object\n * @param {string} options.contentTypeHeader - The Content-Type header value (for HTTP resources)\n * @param {string} options.providedType - MIME type from filesystem or other protocol (for non-HTTP resources)\n * @param {boolean} options.noSniff - Whether the X-Content-Type-Options: nosniff header was present\n * @param {function} options.isSupported - Predicate to check if an image/audio/video MIME type is supported\n * @returns {MIMEType} The computed MIME type\n */\nmodule.exports = function computedMIMEType(\n  resource,\n  { contentTypeHeader, providedType, noSniff = false, isSupported = () => true } = {}\n) {\n  const resourceHeader = getResourceHeader(resource);\n  const { suppliedMIMEType, checkForApacheBug } = detectSuppliedMIMEType({ contentTypeHeader, providedType });\n\n  // Step 1: If the supplied MIME type is an XML MIME type or HTML MIME type, return it\n  if (suppliedMIMEType !== null && (isXMLMIMEType(suppliedMIMEType) || isHTMLMIMEType(suppliedMIMEType))) {\n    return suppliedMIMEType;\n  }\n\n  // Step 2: If supplied MIME type is undefined, or its essence is \"unknown/unknown\",\n  // \"application/unknown\", or \"*/*\", execute rules for identifying an unknown MIME type\n  if (suppliedMIMEType === null ||\n      suppliedMIMEType.essence === \"unknown/unknown\" ||\n      suppliedMIMEType.essence === \"application/unknown\" ||\n      suppliedMIMEType.essence === \"*/*\") {\n    // sniff-scriptable flag is the inverse of no-sniff flag\n    return new MIMEType(identifyAnUnknownMIMEType(resourceHeader, { sniffScriptable: !noSniff }));\n  }\n\n  // Step 3: If the no-sniff flag is set, return the supplied MIME type\n  if (noSniff) {\n    return suppliedMIMEType;\n  }\n\n  // Step 4: If the check-for-apache-bug flag is set, execute rules for distinguishing\n  // if a resource is text or binary\n  if (checkForApacheBug) {\n    return new MIMEType(distinguishTextOrBinary(resourceHeader));\n  }\n\n  // Steps 5-6: If supplied MIME type is a supported image MIME type, execute image pattern matching\n  if (isImageMIMEType(suppliedMIMEType) && isSupported(suppliedMIMEType)) {\n    const imageResult = matchImageType(resourceHeader);\n    if (imageResult !== null) {\n      return new MIMEType(imageResult);\n    }\n  }\n\n  // Steps 7-8: If supplied MIME type is a supported audio/video type, execute audio/video matching\n  if (isAudioOrVideoMIMEType(suppliedMIMEType) && isSupported(suppliedMIMEType)) {\n    const avResult = matchAudioOrVideoType(resourceHeader);\n    if (avResult !== null) {\n      return new MIMEType(avResult);\n    }\n  }\n\n  // Step 9: Return the supplied MIME type\n  return suppliedMIMEType;\n};\n","\"use strict\";\n\nexports.MIMEType = require(\"./mime-type.js\");\nexports.computedMIMEType = require(\"./sniff.js\");\n","'use strict'\n\nmodule.exports = {\n  kClose: Symbol('close'),\n  kDestroy: Symbol('destroy'),\n  kDispatch: Symbol('dispatch'),\n  kUrl: Symbol('url'),\n  kWriting: Symbol('writing'),\n  kResuming: Symbol('resuming'),\n  kQueue: Symbol('queue'),\n  kConnect: Symbol('connect'),\n  kConnecting: Symbol('connecting'),\n  kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n  kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n  kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n  kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n  kKeepAlive: Symbol('keep alive'),\n  kHeadersTimeout: Symbol('headers timeout'),\n  kBodyTimeout: Symbol('body timeout'),\n  kServerName: Symbol('server name'),\n  kLocalAddress: Symbol('local address'),\n  kHost: Symbol('host'),\n  kNoRef: Symbol('no ref'),\n  kBodyUsed: Symbol('used'),\n  kBody: Symbol('abstracted request body'),\n  kRunning: Symbol('running'),\n  kBlocking: Symbol('blocking'),\n  kPending: Symbol('pending'),\n  kSize: Symbol('size'),\n  kBusy: Symbol('busy'),\n  kQueued: Symbol('queued'),\n  kFree: Symbol('free'),\n  kConnected: Symbol('connected'),\n  kClosed: Symbol('closed'),\n  kNeedDrain: Symbol('need drain'),\n  kReset: Symbol('reset'),\n  kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n  kResume: Symbol('resume'),\n  kOnError: Symbol('on error'),\n  kMaxHeadersSize: Symbol('max headers size'),\n  kRunningIdx: Symbol('running index'),\n  kPendingIdx: Symbol('pending index'),\n  kError: Symbol('error'),\n  kClients: Symbol('clients'),\n  kClient: Symbol('client'),\n  kParser: Symbol('parser'),\n  kOnDestroyed: Symbol('destroy callbacks'),\n  kPipelining: Symbol('pipelining'),\n  kSocket: Symbol('socket'),\n  kHostHeader: Symbol('host header'),\n  kConnector: Symbol('connector'),\n  kStrictContentLength: Symbol('strict content length'),\n  kMaxRedirections: Symbol('maxRedirections'),\n  kMaxRequests: Symbol('maxRequestsPerClient'),\n  kProxy: Symbol('proxy agent options'),\n  kCounter: Symbol('socket request counter'),\n  kMaxResponseSize: Symbol('max response size'),\n  kHTTP2Session: Symbol('http2Session'),\n  kHTTP2SessionState: Symbol('http2Session state'),\n  kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n  kConstruct: Symbol('constructable'),\n  kListeners: Symbol('listeners'),\n  kHTTPContext: Symbol('http context'),\n  kMaxConcurrentStreams: Symbol('max concurrent streams'),\n  kHTTP2InitialWindowSize: Symbol('http2 initial window size'),\n  kHTTP2ConnectionWindowSize: Symbol('http2 connection window size'),\n  kEnableConnectProtocol: Symbol('http2session connect protocol'),\n  kRemoteSettings: Symbol('http2session remote settings'),\n  kHTTP2Stream: Symbol('http2session client stream'),\n  kPingInterval: Symbol('ping interval'),\n  kNoProxyAgent: Symbol('no proxy agent'),\n  kHttpProxyAgent: Symbol('http proxy agent'),\n  kHttpsProxyAgent: Symbol('https proxy agent'),\n  kSocks5ProxyAgent: Symbol('socks5 proxy agent')\n}\n","'use strict'\n\n/**\n * This module offers an optimized timer implementation designed for scenarios\n * where high precision is not critical.\n *\n * The timer achieves faster performance by using a low-resolution approach,\n * with an accuracy target of within 500ms. This makes it particularly useful\n * for timers with delays of 1 second or more, where exact timing is less\n * crucial.\n *\n * It's important to note that Node.js timers are inherently imprecise, as\n * delays can occur due to the event loop being blocked by other operations.\n * Consequently, timers may trigger later than their scheduled time.\n */\n\n/**\n * The fastNow variable contains the internal fast timer clock value.\n *\n * @type {number}\n */\nlet fastNow = 0\n\n/**\n * RESOLUTION_MS represents the target resolution time in milliseconds.\n *\n * @type {number}\n * @default 1000\n */\nconst RESOLUTION_MS = 1e3\n\n/**\n * TICK_MS defines the desired interval in milliseconds between each tick.\n * The target value is set to half the resolution time, minus 1 ms, to account\n * for potential event loop overhead.\n *\n * @type {number}\n * @default 499\n */\nconst TICK_MS = (RESOLUTION_MS >> 1) - 1\n\n/**\n * fastNowTimeout is a Node.js timer used to manage and process\n * the FastTimers stored in the `fastTimers` array.\n *\n * @type {NodeJS.Timeout}\n */\nlet fastNowTimeout\n\n/**\n * The kFastTimer symbol is used to identify FastTimer instances.\n *\n * @type {Symbol}\n */\nconst kFastTimer = Symbol('kFastTimer')\n\n/**\n * The fastTimers array contains all active FastTimers.\n *\n * @type {FastTimer[]}\n */\nconst fastTimers = []\n\n/**\n * These constants represent the various states of a FastTimer.\n */\n\n/**\n * The `NOT_IN_LIST` constant indicates that the FastTimer is not included\n * in the `fastTimers` array. Timers with this status will not be processed\n * during the next tick by the `onTick` function.\n *\n * A FastTimer can be re-added to the `fastTimers` array by invoking the\n * `refresh` method on the FastTimer instance.\n *\n * @type {-2}\n */\nconst NOT_IN_LIST = -2\n\n/**\n * The `TO_BE_CLEARED` constant indicates that the FastTimer is scheduled\n * for removal from the `fastTimers` array. A FastTimer in this state will\n * be removed in the next tick by the `onTick` function and will no longer\n * be processed.\n *\n * This status is also set when the `clear` method is called on the FastTimer instance.\n *\n * @type {-1}\n */\nconst TO_BE_CLEARED = -1\n\n/**\n * The `PENDING` constant signifies that the FastTimer is awaiting processing\n * in the next tick by the `onTick` function. Timers with this status will have\n * their `_idleStart` value set and their status updated to `ACTIVE` in the next tick.\n *\n * @type {0}\n */\nconst PENDING = 0\n\n/**\n * The `ACTIVE` constant indicates that the FastTimer is active and waiting\n * for its timer to expire. During the next tick, the `onTick` function will\n * check if the timer has expired, and if so, it will execute the associated callback.\n *\n * @type {1}\n */\nconst ACTIVE = 1\n\n/**\n * The onTick function processes the fastTimers array.\n *\n * @returns {void}\n */\nfunction onTick () {\n  /**\n   * Increment the fastNow value by the TICK_MS value, despite the actual time\n   * that has passed since the last tick. This approach ensures independence\n   * from the system clock and delays caused by a blocked event loop.\n   *\n   * @type {number}\n   */\n  fastNow += TICK_MS\n\n  /**\n   * The `idx` variable is used to iterate over the `fastTimers` array.\n   * Expired timers are removed by replacing them with the last element in the array.\n   * Consequently, `idx` is only incremented when the current element is not removed.\n   *\n   * @type {number}\n   */\n  let idx = 0\n\n  /**\n   * The len variable will contain the length of the fastTimers array\n   * and will be decremented when a FastTimer should be removed from the\n   * fastTimers array.\n   *\n   * @type {number}\n   */\n  let len = fastTimers.length\n\n  while (idx < len) {\n    /**\n     * @type {FastTimer}\n     */\n    const timer = fastTimers[idx]\n\n    // If the timer is in the ACTIVE state and the timer has expired, it will\n    // be processed in the next tick.\n    if (timer._state === PENDING) {\n      // Set the _idleStart value to the fastNow value minus the TICK_MS value\n      // to account for the time the timer was in the PENDING state.\n      timer._idleStart = fastNow - TICK_MS\n      timer._state = ACTIVE\n    } else if (\n      timer._state === ACTIVE &&\n      fastNow >= timer._idleStart + timer._idleTimeout\n    ) {\n      timer._state = TO_BE_CLEARED\n      timer._idleStart = -1\n      timer._onTimeout(timer._timerArg)\n    }\n\n    if (timer._state === TO_BE_CLEARED) {\n      timer._state = NOT_IN_LIST\n\n      // Move the last element to the current index and decrement len if it is\n      // not the only element in the array.\n      if (--len !== 0) {\n        fastTimers[idx] = fastTimers[len]\n      }\n    } else {\n      ++idx\n    }\n  }\n\n  // Set the length of the fastTimers array to the new length and thus\n  // removing the excess FastTimers elements from the array.\n  fastTimers.length = len\n\n  // If there are still active FastTimers in the array, refresh the Timer.\n  // If there are no active FastTimers, the timer will be refreshed again\n  // when a new FastTimer is instantiated.\n  if (fastTimers.length !== 0) {\n    refreshTimeout()\n  }\n}\n\nfunction refreshTimeout () {\n  // If the fastNowTimeout is already set and the Timer has the refresh()-\n  // method available, call it to refresh the timer.\n  // Some timer objects returned by setTimeout may not have a .refresh()\n  // method (e.g. mocked timers in tests).\n  if (fastNowTimeout?.refresh) {\n    fastNowTimeout.refresh()\n    // fastNowTimeout is not instantiated yet or refresh is not availabe,\n    // create a new Timer.\n  } else {\n    clearTimeout(fastNowTimeout)\n    fastNowTimeout = setTimeout(onTick, TICK_MS)\n    // If the Timer has an unref method, call it to allow the process to exit,\n    // if there are no other active handles. When using fake timers or mocked\n    // environments (like Jest), .unref() may not be defined,\n    fastNowTimeout?.unref()\n  }\n}\n\n/**\n * The `FastTimer` class is a data structure designed to store and manage\n * timer information.\n */\nclass FastTimer {\n  [kFastTimer] = true\n\n  /**\n   * The state of the timer, which can be one of the following:\n   * - NOT_IN_LIST (-2)\n   * - TO_BE_CLEARED (-1)\n   * - PENDING (0)\n   * - ACTIVE (1)\n   *\n   * @type {-2|-1|0|1}\n   * @private\n   */\n  _state = NOT_IN_LIST\n\n  /**\n   * The number of milliseconds to wait before calling the callback.\n   *\n   * @type {number}\n   * @private\n   */\n  _idleTimeout = -1\n\n  /**\n   * The time in milliseconds when the timer was started. This value is used to\n   * calculate when the timer should expire.\n   *\n   * @type {number}\n   * @default -1\n   * @private\n   */\n  _idleStart = -1\n\n  /**\n   * The function to be executed when the timer expires.\n   * @type {Function}\n   * @private\n   */\n  _onTimeout\n\n  /**\n   * The argument to be passed to the callback when the timer expires.\n   *\n   * @type {*}\n   * @private\n   */\n  _timerArg\n\n  /**\n   * @constructor\n   * @param {Function} callback A function to be executed after the timer\n   * expires.\n   * @param {number} delay The time, in milliseconds that the timer should wait\n   * before the specified function or code is executed.\n   * @param {*} arg\n   */\n  constructor (callback, delay, arg) {\n    this._onTimeout = callback\n    this._idleTimeout = delay\n    this._timerArg = arg\n\n    this.refresh()\n  }\n\n  /**\n   * Sets the timer's start time to the current time, and reschedules the timer\n   * to call its callback at the previously specified duration adjusted to the\n   * current time.\n   * Using this on a timer that has already called its callback will reactivate\n   * the timer.\n   *\n   * @returns {void}\n   */\n  refresh () {\n    // In the special case that the timer is not in the list of active timers,\n    // add it back to the array to be processed in the next tick by the onTick\n    // function.\n    if (this._state === NOT_IN_LIST) {\n      fastTimers.push(this)\n    }\n\n    // If the timer is the only active timer, refresh the fastNowTimeout for\n    // better resolution.\n    if (!fastNowTimeout || fastTimers.length === 1) {\n      refreshTimeout()\n    }\n\n    // Setting the state to PENDING will cause the timer to be reset in the\n    // next tick by the onTick function.\n    this._state = PENDING\n  }\n\n  /**\n   * The `clear` method cancels the timer, preventing it from executing.\n   *\n   * @returns {void}\n   * @private\n   */\n  clear () {\n    // Set the state to TO_BE_CLEARED to mark the timer for removal in the next\n    // tick by the onTick function.\n    this._state = TO_BE_CLEARED\n\n    // Reset the _idleStart value to -1 to indicate that the timer is no longer\n    // active.\n    this._idleStart = -1\n  }\n}\n\n/**\n * This module exports a setTimeout and clearTimeout function that can be\n * used as a drop-in replacement for the native functions.\n */\nmodule.exports = {\n  /**\n   * The setTimeout() method sets a timer which executes a function once the\n   * timer expires.\n   * @param {Function} callback A function to be executed after the timer\n   * expires.\n   * @param {number} delay The time, in milliseconds that the timer should\n   * wait before the specified function or code is executed.\n   * @param {*} [arg] An optional argument to be passed to the callback function\n   * when the timer expires.\n   * @returns {NodeJS.Timeout|FastTimer}\n   */\n  setTimeout (callback, delay, arg) {\n    // If the delay is less than or equal to the RESOLUTION_MS value return a\n    // native Node.js Timer instance.\n    return delay <= RESOLUTION_MS\n      ? setTimeout(callback, delay, arg)\n      : new FastTimer(callback, delay, arg)\n  },\n  /**\n   * The clearTimeout method cancels an instantiated Timer previously created\n   * by calling setTimeout.\n   *\n   * @param {NodeJS.Timeout|FastTimer} timeout\n   */\n  clearTimeout (timeout) {\n    // If the timeout is a FastTimer, call its own clear method.\n    if (timeout[kFastTimer]) {\n      /**\n       * @type {FastTimer}\n       */\n      timeout.clear()\n      // Otherwise it is an instance of a native NodeJS.Timeout, so call the\n      // Node.js native clearTimeout function.\n    } else {\n      clearTimeout(timeout)\n    }\n  },\n  /**\n   * The setFastTimeout() method sets a fastTimer which executes a function once\n   * the timer expires.\n   * @param {Function} callback A function to be executed after the timer\n   * expires.\n   * @param {number} delay The time, in milliseconds that the timer should\n   * wait before the specified function or code is executed.\n   * @param {*} [arg] An optional argument to be passed to the callback function\n   * when the timer expires.\n   * @returns {FastTimer}\n   */\n  setFastTimeout (callback, delay, arg) {\n    return new FastTimer(callback, delay, arg)\n  },\n  /**\n   * The clearTimeout method cancels an instantiated FastTimer previously\n   * created by calling setFastTimeout.\n   *\n   * @param {FastTimer} timeout\n   */\n  clearFastTimeout (timeout) {\n    timeout.clear()\n  },\n  /**\n   * The now method returns the value of the internal fast timer clock.\n   *\n   * @returns {number}\n   */\n  now () {\n    return fastNow\n  },\n  /**\n   * Trigger the onTick function to process the fastTimers array.\n   * Exported for testing purposes only.\n   * Marking as deprecated to discourage any use outside of testing.\n   * @deprecated\n   * @param {number} [delay=0] The delay in milliseconds to add to the now value.\n   */\n  tick (delay = 0) {\n    fastNow += delay - RESOLUTION_MS + 1\n    onTick()\n    onTick()\n  },\n  /**\n   * Reset FastTimers.\n   * Exported for testing purposes only.\n   * Marking as deprecated to discourage any use outside of testing.\n   * @deprecated\n   */\n  reset () {\n    fastNow = 0\n    fastTimers.length = 0\n    clearTimeout(fastNowTimeout)\n    fastNowTimeout = null\n  },\n  /**\n   * Exporting for testing purposes only.\n   * Marking as deprecated to discourage any use outside of testing.\n   * @deprecated\n   */\n  kFastTimer\n}\n","'use strict'\n\nconst kUndiciError = Symbol.for('undici.error.UND_ERR')\nclass UndiciError extends Error {\n  constructor (message, options) {\n    super(message, options)\n    this.name = 'UndiciError'\n    this.code = 'UND_ERR'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kUndiciError] === true\n  }\n\n  get [kUndiciError] () {\n    return true\n  }\n}\n\nconst kConnectTimeoutError = Symbol.for('undici.error.UND_ERR_CONNECT_TIMEOUT')\nclass ConnectTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ConnectTimeoutError'\n    this.message = message || 'Connect Timeout Error'\n    this.code = 'UND_ERR_CONNECT_TIMEOUT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kConnectTimeoutError] === true\n  }\n\n  get [kConnectTimeoutError] () {\n    return true\n  }\n}\n\nconst kHeadersTimeoutError = Symbol.for('undici.error.UND_ERR_HEADERS_TIMEOUT')\nclass HeadersTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'HeadersTimeoutError'\n    this.message = message || 'Headers Timeout Error'\n    this.code = 'UND_ERR_HEADERS_TIMEOUT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kHeadersTimeoutError] === true\n  }\n\n  get [kHeadersTimeoutError] () {\n    return true\n  }\n}\n\nconst kHeadersOverflowError = Symbol.for('undici.error.UND_ERR_HEADERS_OVERFLOW')\nclass HeadersOverflowError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'HeadersOverflowError'\n    this.message = message || 'Headers Overflow Error'\n    this.code = 'UND_ERR_HEADERS_OVERFLOW'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kHeadersOverflowError] === true\n  }\n\n  get [kHeadersOverflowError] () {\n    return true\n  }\n}\n\nconst kBodyTimeoutError = Symbol.for('undici.error.UND_ERR_BODY_TIMEOUT')\nclass BodyTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'BodyTimeoutError'\n    this.message = message || 'Body Timeout Error'\n    this.code = 'UND_ERR_BODY_TIMEOUT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kBodyTimeoutError] === true\n  }\n\n  get [kBodyTimeoutError] () {\n    return true\n  }\n}\n\nconst kInvalidArgumentError = Symbol.for('undici.error.UND_ERR_INVALID_ARG')\nclass InvalidArgumentError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InvalidArgumentError'\n    this.message = message || 'Invalid Argument Error'\n    this.code = 'UND_ERR_INVALID_ARG'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kInvalidArgumentError] === true\n  }\n\n  get [kInvalidArgumentError] () {\n    return true\n  }\n}\n\nconst kInvalidReturnValueError = Symbol.for('undici.error.UND_ERR_INVALID_RETURN_VALUE')\nclass InvalidReturnValueError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InvalidReturnValueError'\n    this.message = message || 'Invalid Return Value Error'\n    this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kInvalidReturnValueError] === true\n  }\n\n  get [kInvalidReturnValueError] () {\n    return true\n  }\n}\n\nconst kAbortError = Symbol.for('undici.error.UND_ERR_ABORT')\nclass AbortError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'AbortError'\n    this.message = message || 'The operation was aborted'\n    this.code = 'UND_ERR_ABORT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kAbortError] === true\n  }\n\n  get [kAbortError] () {\n    return true\n  }\n}\n\nconst kRequestAbortedError = Symbol.for('undici.error.UND_ERR_ABORTED')\nclass RequestAbortedError extends AbortError {\n  constructor (message) {\n    super(message)\n    this.name = 'AbortError'\n    this.message = message || 'Request aborted'\n    this.code = 'UND_ERR_ABORTED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kRequestAbortedError] === true\n  }\n\n  get [kRequestAbortedError] () {\n    return true\n  }\n}\n\nconst kInformationalError = Symbol.for('undici.error.UND_ERR_INFO')\nclass InformationalError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InformationalError'\n    this.message = message || 'Request information'\n    this.code = 'UND_ERR_INFO'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kInformationalError] === true\n  }\n\n  get [kInformationalError] () {\n    return true\n  }\n}\n\nconst kRequestContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH')\nclass RequestContentLengthMismatchError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'RequestContentLengthMismatchError'\n    this.message = message || 'Request body length does not match content-length header'\n    this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kRequestContentLengthMismatchError] === true\n  }\n\n  get [kRequestContentLengthMismatchError] () {\n    return true\n  }\n}\n\nconst kResponseContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH')\nclass ResponseContentLengthMismatchError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ResponseContentLengthMismatchError'\n    this.message = message || 'Response body length does not match content-length header'\n    this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kResponseContentLengthMismatchError] === true\n  }\n\n  get [kResponseContentLengthMismatchError] () {\n    return true\n  }\n}\n\nconst kClientDestroyedError = Symbol.for('undici.error.UND_ERR_DESTROYED')\nclass ClientDestroyedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ClientDestroyedError'\n    this.message = message || 'The client is destroyed'\n    this.code = 'UND_ERR_DESTROYED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kClientDestroyedError] === true\n  }\n\n  get [kClientDestroyedError] () {\n    return true\n  }\n}\n\nconst kClientClosedError = Symbol.for('undici.error.UND_ERR_CLOSED')\nclass ClientClosedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ClientClosedError'\n    this.message = message || 'The client is closed'\n    this.code = 'UND_ERR_CLOSED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kClientClosedError] === true\n  }\n\n  get [kClientClosedError] () {\n    return true\n  }\n}\n\nconst kSocketError = Symbol.for('undici.error.UND_ERR_SOCKET')\nclass SocketError extends UndiciError {\n  constructor (message, socket) {\n    super(message)\n    this.name = 'SocketError'\n    this.message = message || 'Socket error'\n    this.code = 'UND_ERR_SOCKET'\n    this.socket = socket\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kSocketError] === true\n  }\n\n  get [kSocketError] () {\n    return true\n  }\n}\n\nconst kNotSupportedError = Symbol.for('undici.error.UND_ERR_NOT_SUPPORTED')\nclass NotSupportedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'NotSupportedError'\n    this.message = message || 'Not supported error'\n    this.code = 'UND_ERR_NOT_SUPPORTED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kNotSupportedError] === true\n  }\n\n  get [kNotSupportedError] () {\n    return true\n  }\n}\n\nconst kBalancedPoolMissingUpstreamError = Symbol.for('undici.error.UND_ERR_BPL_MISSING_UPSTREAM')\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'MissingUpstreamError'\n    this.message = message || 'No upstream has been added to the BalancedPool'\n    this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kBalancedPoolMissingUpstreamError] === true\n  }\n\n  get [kBalancedPoolMissingUpstreamError] () {\n    return true\n  }\n}\n\nconst kHTTPParserError = Symbol.for('undici.error.UND_ERR_HTTP_PARSER')\nclass HTTPParserError extends Error {\n  constructor (message, code, data) {\n    super(message)\n    this.name = 'HTTPParserError'\n    this.code = code ? `HPE_${code}` : undefined\n    this.data = data ? data.toString() : undefined\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kHTTPParserError] === true\n  }\n\n  get [kHTTPParserError] () {\n    return true\n  }\n}\n\nconst kResponseExceededMaxSizeError = Symbol.for('undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE')\nclass ResponseExceededMaxSizeError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ResponseExceededMaxSizeError'\n    this.message = message || 'Response content exceeded max size'\n    this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kResponseExceededMaxSizeError] === true\n  }\n\n  get [kResponseExceededMaxSizeError] () {\n    return true\n  }\n}\n\nconst kRequestRetryError = Symbol.for('undici.error.UND_ERR_REQ_RETRY')\nclass RequestRetryError extends UndiciError {\n  constructor (message, code, { headers, data }) {\n    super(message)\n    this.name = 'RequestRetryError'\n    this.message = message || 'Request retry error'\n    this.code = 'UND_ERR_REQ_RETRY'\n    this.statusCode = code\n    this.data = data\n    this.headers = headers\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kRequestRetryError] === true\n  }\n\n  get [kRequestRetryError] () {\n    return true\n  }\n}\n\nconst kResponseError = Symbol.for('undici.error.UND_ERR_RESPONSE')\nclass ResponseError extends UndiciError {\n  constructor (message, code, { headers, body }) {\n    super(message)\n    this.name = 'ResponseError'\n    this.message = message || 'Response error'\n    this.code = 'UND_ERR_RESPONSE'\n    this.statusCode = code\n    this.body = body\n    this.headers = headers\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kResponseError] === true\n  }\n\n  get [kResponseError] () {\n    return true\n  }\n}\n\nconst kSecureProxyConnectionError = Symbol.for('undici.error.UND_ERR_PRX_TLS')\nclass SecureProxyConnectionError extends UndiciError {\n  constructor (cause, message, options = {}) {\n    super(message, { cause, ...options })\n    this.name = 'SecureProxyConnectionError'\n    this.message = message || 'Secure Proxy Connection failed'\n    this.code = 'UND_ERR_PRX_TLS'\n    this.cause = cause\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kSecureProxyConnectionError] === true\n  }\n\n  get [kSecureProxyConnectionError] () {\n    return true\n  }\n}\n\nconst kMaxOriginsReachedError = Symbol.for('undici.error.UND_ERR_MAX_ORIGINS_REACHED')\nclass MaxOriginsReachedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'MaxOriginsReachedError'\n    this.message = message || 'Maximum allowed origins reached'\n    this.code = 'UND_ERR_MAX_ORIGINS_REACHED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kMaxOriginsReachedError] === true\n  }\n\n  get [kMaxOriginsReachedError] () {\n    return true\n  }\n}\n\nclass Socks5ProxyError extends UndiciError {\n  constructor (message, code) {\n    super(message)\n    this.name = 'Socks5ProxyError'\n    this.message = message || 'SOCKS5 proxy error'\n    this.code = code || 'UND_ERR_SOCKS5'\n  }\n}\n\nconst kMessageSizeExceededError = Symbol.for('undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED')\nclass MessageSizeExceededError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'MessageSizeExceededError'\n    this.message = message || 'Max decompressed message size exceeded'\n    this.code = 'UND_ERR_WS_MESSAGE_SIZE_EXCEEDED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kMessageSizeExceededError] === true\n  }\n\n  get [kMessageSizeExceededError] () {\n    return true\n  }\n}\n\nmodule.exports = {\n  AbortError,\n  HTTPParserError,\n  UndiciError,\n  HeadersTimeoutError,\n  HeadersOverflowError,\n  BodyTimeoutError,\n  RequestContentLengthMismatchError,\n  ConnectTimeoutError,\n  InvalidArgumentError,\n  InvalidReturnValueError,\n  RequestAbortedError,\n  ClientDestroyedError,\n  ClientClosedError,\n  InformationalError,\n  SocketError,\n  NotSupportedError,\n  ResponseContentLengthMismatchError,\n  BalancedPoolMissingUpstreamError,\n  ResponseExceededMaxSizeError,\n  RequestRetryError,\n  ResponseError,\n  SecureProxyConnectionError,\n  MaxOriginsReachedError,\n  Socks5ProxyError,\n  MessageSizeExceededError\n}\n","'use strict'\n\n/**\n * @see https://developer.mozilla.org/docs/Web/HTTP/Headers\n */\nconst wellknownHeaderNames = /** @type {const} */ ([\n  'Accept',\n  'Accept-Encoding',\n  'Accept-Language',\n  'Accept-Ranges',\n  'Access-Control-Allow-Credentials',\n  'Access-Control-Allow-Headers',\n  'Access-Control-Allow-Methods',\n  'Access-Control-Allow-Origin',\n  'Access-Control-Expose-Headers',\n  'Access-Control-Max-Age',\n  'Access-Control-Request-Headers',\n  'Access-Control-Request-Method',\n  'Age',\n  'Allow',\n  'Alt-Svc',\n  'Alt-Used',\n  'Authorization',\n  'Cache-Control',\n  'Clear-Site-Data',\n  'Connection',\n  'Content-Disposition',\n  'Content-Encoding',\n  'Content-Language',\n  'Content-Length',\n  'Content-Location',\n  'Content-Range',\n  'Content-Security-Policy',\n  'Content-Security-Policy-Report-Only',\n  'Content-Type',\n  'Cookie',\n  'Cross-Origin-Embedder-Policy',\n  'Cross-Origin-Opener-Policy',\n  'Cross-Origin-Resource-Policy',\n  'Date',\n  'Device-Memory',\n  'Downlink',\n  'ECT',\n  'ETag',\n  'Expect',\n  'Expect-CT',\n  'Expires',\n  'Forwarded',\n  'From',\n  'Host',\n  'If-Match',\n  'If-Modified-Since',\n  'If-None-Match',\n  'If-Range',\n  'If-Unmodified-Since',\n  'Keep-Alive',\n  'Last-Modified',\n  'Link',\n  'Location',\n  'Max-Forwards',\n  'Origin',\n  'Permissions-Policy',\n  'Pragma',\n  'Proxy-Authenticate',\n  'Proxy-Authorization',\n  'RTT',\n  'Range',\n  'Referer',\n  'Referrer-Policy',\n  'Refresh',\n  'Retry-After',\n  'Sec-WebSocket-Accept',\n  'Sec-WebSocket-Extensions',\n  'Sec-WebSocket-Key',\n  'Sec-WebSocket-Protocol',\n  'Sec-WebSocket-Version',\n  'Server',\n  'Server-Timing',\n  'Service-Worker-Allowed',\n  'Service-Worker-Navigation-Preload',\n  'Set-Cookie',\n  'SourceMap',\n  'Strict-Transport-Security',\n  'Supports-Loading-Mode',\n  'TE',\n  'Timing-Allow-Origin',\n  'Trailer',\n  'Transfer-Encoding',\n  'Upgrade',\n  'Upgrade-Insecure-Requests',\n  'User-Agent',\n  'Vary',\n  'Via',\n  'WWW-Authenticate',\n  'X-Content-Type-Options',\n  'X-DNS-Prefetch-Control',\n  'X-Frame-Options',\n  'X-Permitted-Cross-Domain-Policies',\n  'X-Powered-By',\n  'X-Requested-With',\n  'X-XSS-Protection'\n])\n\n/** @type {Record<typeof wellknownHeaderNames[number]|Lowercase<typeof wellknownHeaderNames[number]>, string>} */\nconst headerNameLowerCasedRecord = {}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\n/**\n * @type {Record<Lowercase<typeof wellknownHeaderNames[number]>, Buffer>}\n */\nconst wellknownHeaderNameBuffers = {}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(wellknownHeaderNameBuffers, null)\n\n/**\n * @param {string} header Lowercased header\n * @returns {Buffer}\n */\nfunction getHeaderNameAsBuffer (header) {\n  let buffer = wellknownHeaderNameBuffers[header]\n\n  if (buffer === undefined) {\n    buffer = Buffer.from(header)\n  }\n\n  return buffer\n}\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n  const key = wellknownHeaderNames[i]\n  const lowerCasedKey = key.toLowerCase()\n  headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n    lowerCasedKey\n}\n\nmodule.exports = {\n  wellknownHeaderNames,\n  headerNameLowerCasedRecord,\n  getHeaderNameAsBuffer\n}\n","'use strict'\n\nconst {\n  wellknownHeaderNames,\n  headerNameLowerCasedRecord\n} = require('./constants')\n\nclass TstNode {\n  /** @type {any} */\n  value = null\n  /** @type {null | TstNode} */\n  left = null\n  /** @type {null | TstNode} */\n  middle = null\n  /** @type {null | TstNode} */\n  right = null\n  /** @type {number} */\n  code\n  /**\n   * @param {string} key\n   * @param {any} value\n   * @param {number} index\n   */\n  constructor (key, value, index) {\n    if (index === undefined || index >= key.length) {\n      throw new TypeError('Unreachable')\n    }\n    const code = this.code = key.charCodeAt(index)\n    // check code is ascii string\n    if (code > 0x7F) {\n      throw new TypeError('key must be ascii string')\n    }\n    if (key.length !== ++index) {\n      this.middle = new TstNode(key, value, index)\n    } else {\n      this.value = value\n    }\n  }\n\n  /**\n   * @param {string} key\n   * @param {any} value\n   * @returns {void}\n   */\n  add (key, value) {\n    const length = key.length\n    if (length === 0) {\n      throw new TypeError('Unreachable')\n    }\n    let index = 0\n    /**\n     * @type {TstNode}\n     */\n    let node = this\n    while (true) {\n      const code = key.charCodeAt(index)\n      // check code is ascii string\n      if (code > 0x7F) {\n        throw new TypeError('key must be ascii string')\n      }\n      if (node.code === code) {\n        if (length === ++index) {\n          node.value = value\n          break\n        } else if (node.middle !== null) {\n          node = node.middle\n        } else {\n          node.middle = new TstNode(key, value, index)\n          break\n        }\n      } else if (node.code < code) {\n        if (node.left !== null) {\n          node = node.left\n        } else {\n          node.left = new TstNode(key, value, index)\n          break\n        }\n      } else if (node.right !== null) {\n        node = node.right\n      } else {\n        node.right = new TstNode(key, value, index)\n        break\n      }\n    }\n  }\n\n  /**\n   * @param {Uint8Array} key\n   * @returns {TstNode | null}\n   */\n  search (key) {\n    const keylength = key.length\n    let index = 0\n    /**\n     * @type {TstNode|null}\n     */\n    let node = this\n    while (node !== null && index < keylength) {\n      let code = key[index]\n      // A-Z\n      // First check if it is bigger than 0x5a.\n      // Lowercase letters have higher char codes than uppercase ones.\n      // Also we assume that headers will mostly contain lowercase characters.\n      if (code <= 0x5a && code >= 0x41) {\n        // Lowercase for uppercase.\n        code |= 32\n      }\n      while (node !== null) {\n        if (code === node.code) {\n          if (keylength === ++index) {\n            // Returns Node since it is the last key.\n            return node\n          }\n          node = node.middle\n          break\n        }\n        node = node.code < code ? node.left : node.right\n      }\n    }\n    return null\n  }\n}\n\nclass TernarySearchTree {\n  /** @type {TstNode | null} */\n  node = null\n\n  /**\n   * @param {string} key\n   * @param {any} value\n   * @returns {void}\n   * */\n  insert (key, value) {\n    if (this.node === null) {\n      this.node = new TstNode(key, value, 0)\n    } else {\n      this.node.add(key, value)\n    }\n  }\n\n  /**\n   * @param {Uint8Array} key\n   * @returns {any}\n   */\n  lookup (key) {\n    return this.node?.search(key)?.value ?? null\n  }\n}\n\nconst tree = new TernarySearchTree()\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n  const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]]\n  tree.insert(key, key)\n}\n\nmodule.exports = {\n  TernarySearchTree,\n  tree\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst { kDestroyed, kBodyUsed, kListeners, kBody } = require('./symbols')\nconst { IncomingMessage } = require('node:http')\nconst stream = require('node:stream')\nconst net = require('node:net')\nconst { stringify } = require('node:querystring')\nconst { EventEmitter: EE } = require('node:events')\nconst timers = require('../util/timers')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\nconst { headerNameLowerCasedRecord } = require('./constants')\nconst { tree } = require('./tree')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.', 2).map(v => Number(v))\n\nclass BodyAsyncIterable {\n  constructor (body) {\n    this[kBody] = body\n    this[kBodyUsed] = false\n  }\n\n  async * [Symbol.asyncIterator] () {\n    assert(!this[kBodyUsed], 'disturbed')\n    this[kBodyUsed] = true\n    yield * this[kBody]\n  }\n}\n\nfunction noop () {}\n\n/**\n * @param {*} body\n * @returns {*}\n */\nfunction wrapRequestBody (body) {\n  if (isStream(body)) {\n    // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n    // so that it can be dispatched again?\n    // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n    if (bodyLength(body) === 0) {\n      body\n        .on('data', function () {\n          assert(false)\n        })\n    }\n\n    if (typeof body.readableDidRead !== 'boolean') {\n      body[kBodyUsed] = false\n      EE.prototype.on.call(body, 'data', function () {\n        this[kBodyUsed] = true\n      })\n    }\n\n    return body\n  } else if (body && typeof body.pipeTo === 'function') {\n    // TODO (fix): We can't access ReadableStream internal state\n    // to determine whether or not it has been disturbed. This is just\n    // a workaround.\n    return new BodyAsyncIterable(body)\n  } else if (body && isFormDataLike(body)) {\n    return body\n  } else if (\n    body &&\n    typeof body !== 'string' &&\n    !ArrayBuffer.isView(body) &&\n    isIterable(body)\n  ) {\n    // TODO: Should we allow re-using iterable if !this.opts.idempotent\n    // or through some other flag?\n    return new BodyAsyncIterable(body)\n  } else {\n    return body\n  }\n}\n\n/**\n * @param {*} obj\n * @returns {obj is import('node:stream').Stream}\n */\nfunction isStream (obj) {\n  return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n/**\n * @param {*} object\n * @returns {object is Blob}\n * based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\n */\nfunction isBlobLike (object) {\n  if (object === null) {\n    return false\n  } else if (object instanceof Blob) {\n    return true\n  } else if (typeof object !== 'object') {\n    return false\n  } else {\n    const sTag = object[Symbol.toStringTag]\n\n    return (sTag === 'Blob' || sTag === 'File') && (\n      ('stream' in object && typeof object.stream === 'function') ||\n      ('arrayBuffer' in object && typeof object.arrayBuffer === 'function')\n    )\n  }\n}\n\n/**\n * @param {string} url The path to check for query strings or fragments.\n * @returns {boolean} Returns true if the path contains a query string or fragment.\n */\nfunction pathHasQueryOrFragment (url) {\n  return (\n    url.includes('?') ||\n    url.includes('#')\n  )\n}\n\n/**\n * @param {string} url The URL to add the query params to\n * @param {import('node:querystring').ParsedUrlQueryInput} queryParams The object to serialize into a URL query string\n * @returns {string} The URL with the query params added\n */\nfunction serializePathWithQuery (url, queryParams) {\n  if (pathHasQueryOrFragment(url)) {\n    throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n  }\n\n  const stringified = stringify(queryParams)\n\n  if (stringified) {\n    url += '?' + stringified\n  }\n\n  return url\n}\n\n/**\n * @param {number|string|undefined} port\n * @returns {boolean}\n */\nfunction isValidPort (port) {\n  const value = parseInt(port, 10)\n  return (\n    value === Number(port) &&\n    value >= 0 &&\n    value <= 65535\n  )\n}\n\n/**\n * Check if the value is a valid http or https prefixed string.\n *\n * @param {string} value\n * @returns {boolean}\n */\nfunction isHttpOrHttpsPrefixed (value) {\n  return (\n    value != null &&\n    value[0] === 'h' &&\n    value[1] === 't' &&\n    value[2] === 't' &&\n    value[3] === 'p' &&\n    (\n      value[4] === ':' ||\n      (\n        value[4] === 's' &&\n        value[5] === ':'\n      )\n    )\n  )\n}\n\n/**\n * @param {string|URL|Record<string,string>} url\n * @returns {URL}\n */\nfunction parseURL (url) {\n  if (typeof url === 'string') {\n    /**\n     * @type {URL}\n     */\n    url = new URL(url)\n\n    if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n    }\n\n    return url\n  }\n\n  if (!url || typeof url !== 'object') {\n    throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n  }\n\n  if (!(url instanceof URL)) {\n    if (url.port != null && url.port !== '' && isValidPort(url.port) === false) {\n      throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n    }\n\n    if (url.path != null && typeof url.path !== 'string') {\n      throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n    }\n\n    if (url.pathname != null && typeof url.pathname !== 'string') {\n      throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n    }\n\n    if (url.hostname != null && typeof url.hostname !== 'string') {\n      throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n    }\n\n    if (url.origin != null && typeof url.origin !== 'string') {\n      throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n    }\n\n    if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n    }\n\n    const port = url.port != null\n      ? url.port\n      : (url.protocol === 'https:' ? 443 : 80)\n    let origin = url.origin != null\n      ? url.origin\n      : `${url.protocol || ''}//${url.hostname || ''}:${port}`\n    let path = url.path != null\n      ? url.path\n      : `${url.pathname || ''}${url.search || ''}`\n\n    if (origin[origin.length - 1] === '/') {\n      origin = origin.slice(0, origin.length - 1)\n    }\n\n    if (path && path[0] !== '/') {\n      path = `/${path}`\n    }\n    // new URL(path, origin) is unsafe when `path` contains an absolute URL\n    // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n    // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n    // If first parameter is an absolute URL, a given second param will be ignored.\n    return new URL(`${origin}${path}`)\n  }\n\n  if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n    throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n  }\n\n  return url\n}\n\n/**\n * @param {string|URL|Record<string, string>} url\n * @returns {URL}\n */\nfunction parseOrigin (url) {\n  url = parseURL(url)\n\n  if (url.pathname !== '/' || url.search || url.hash) {\n    throw new InvalidArgumentError('invalid url')\n  }\n\n  return url\n}\n\n/**\n * @param {string} host\n * @returns {string}\n */\nfunction getHostname (host) {\n  if (host[0] === '[') {\n    const idx = host.indexOf(']')\n\n    assert(idx !== -1)\n    return host.substring(1, idx)\n  }\n\n  const idx = host.indexOf(':')\n  if (idx === -1) return host\n\n  return host.substring(0, idx)\n}\n\n/**\n * IP addresses are not valid server names per RFC6066\n * Currently, the only server names supported are DNS hostnames\n * @param {string|null} host\n * @returns {string|null}\n */\nfunction getServerName (host) {\n  if (!host) {\n    return null\n  }\n\n  assert(typeof host === 'string')\n\n  const servername = getHostname(host)\n  if (net.isIP(servername)) {\n    return ''\n  }\n\n  return servername\n}\n\n/**\n * @function\n * @template T\n * @param {T} obj\n * @returns {T}\n */\nfunction deepClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\n/**\n * @param {*} obj\n * @returns {obj is AsyncIterable}\n */\nfunction isAsyncIterable (obj) {\n  return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\n/**\n * @param {*} obj\n * @returns {obj is Iterable}\n */\nfunction isIterable (obj) {\n  return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\n/**\n * Checks whether an object has a safe Symbol.iterator — i.e. one that is\n * either own or inherited from a non-Object.prototype chain.  This prevents\n * prototype-pollution attacks from injecting a fake iterator on\n * Object.prototype.\n * @param {object} obj\n * @returns {boolean}\n */\nfunction hasSafeIterator (obj) {\n  const prototype = Object.getPrototypeOf(obj)\n  const ownIterator = Object.prototype.hasOwnProperty.call(obj, Symbol.iterator)\n  return ownIterator || (prototype != null && prototype !== Object.prototype && typeof obj[Symbol.iterator] === 'function')\n}\n\n/**\n * @param {Blob|Buffer|import ('stream').Stream} body\n * @returns {number|null}\n */\nfunction bodyLength (body) {\n  if (body == null) {\n    return 0\n  } else if (isStream(body)) {\n    const state = body._readableState\n    return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n      ? state.length\n      : null\n  } else if (isBlobLike(body)) {\n    return body.size != null ? body.size : null\n  } else if (isBuffer(body)) {\n    return body.byteLength\n  }\n\n  return null\n}\n\n/**\n * @param {import ('stream').Stream} body\n * @returns {boolean}\n */\nfunction isDestroyed (body) {\n  return body && !!(body.destroyed || body[kDestroyed] || (stream.isDestroyed?.(body)))\n}\n\n/**\n * @param {import ('stream').Stream} stream\n * @param {Error} [err]\n * @returns {void}\n */\nfunction destroy (stream, err) {\n  if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n    return\n  }\n\n  if (typeof stream.destroy === 'function') {\n    if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n      // See: https://github.com/nodejs/node/pull/38505/files\n      stream.socket = null\n    }\n\n    stream.destroy(err)\n  } else if (err) {\n    queueMicrotask(() => {\n      stream.emit('error', err)\n    })\n  }\n\n  if (stream.destroyed !== true) {\n    stream[kDestroyed] = true\n  }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\n/**\n * @param {string} val\n * @returns {number | null}\n */\nfunction parseKeepAliveTimeout (val) {\n  const m = val.match(KEEPALIVE_TIMEOUT_EXPR)\n  return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n  return typeof value === 'string'\n    ? headerNameLowerCasedRecord[value] ?? value.toLowerCase()\n    : tree.lookup(value) ?? value.toString('latin1').toLowerCase()\n}\n\n/**\n * Receive the buffer as a string and return its lowercase value.\n * @param {Buffer} value Header name\n * @returns {string}\n */\nfunction bufferToLowerCasedHeaderName (value) {\n  return tree.lookup(value) ?? value.toString('latin1').toLowerCase()\n}\n\n/**\n * @param {(Buffer | string)[]} headers\n * @param {Record<string, string | string[]>} [obj]\n * @returns {Record<string, string | string[]>}\n */\nfunction parseHeaders (headers, obj) {\n  if (obj === undefined) obj = {}\n\n  for (let i = 0; i < headers.length; i += 2) {\n    const key = headerNameToString(headers[i])\n    let val = obj[key]\n\n    if (val !== undefined) {\n      if (!Object.hasOwn(obj, key)) {\n        const headersValue = typeof headers[i + 1] === 'string'\n          ? headers[i + 1]\n          : Array.isArray(headers[i + 1])\n            ? headers[i + 1].map(x => x.toString('latin1'))\n            : headers[i + 1].toString('latin1')\n\n        if (key === '__proto__') {\n          Object.defineProperty(obj, key, {\n            value: headersValue,\n            enumerable: true,\n            configurable: true,\n            writable: true\n          })\n        } else {\n          obj[key] = headersValue\n        }\n      } else {\n        if (typeof val === 'string') {\n          val = [val]\n          obj[key] = val\n        }\n        val.push(headers[i + 1].toString('latin1'))\n      }\n    } else {\n      const headersValue = typeof headers[i + 1] === 'string'\n        ? headers[i + 1]\n        : Array.isArray(headers[i + 1])\n          ? headers[i + 1].map(x => x.toString('latin1'))\n          : headers[i + 1].toString('latin1')\n\n      obj[key] = headersValue\n    }\n  }\n\n  return obj\n}\n\n/**\n * @param {Buffer[]} headers\n * @returns {string[]}\n */\nfunction parseRawHeaders (headers) {\n  const headersLength = headers.length\n  /**\n   * @type {string[]}\n   */\n  const ret = new Array(headersLength)\n\n  let key\n  let val\n\n  for (let n = 0; n < headersLength; n += 2) {\n    key = headers[n]\n    val = headers[n + 1]\n\n    typeof key !== 'string' && (key = key.toString())\n    typeof val !== 'string' && (val = val.toString('latin1'))\n\n    ret[n] = key\n    ret[n + 1] = val\n  }\n\n  return ret\n}\n\n/**\n * @param {string[]} headers\n * @param {Buffer[]} headers\n */\nfunction encodeRawHeaders (headers) {\n  if (!Array.isArray(headers)) {\n    throw new TypeError('expected headers to be an array')\n  }\n  return headers.map(x => Buffer.from(x))\n}\n\n/**\n * @param {*} buffer\n * @returns {buffer is Buffer}\n */\nfunction isBuffer (buffer) {\n  // See, https://github.com/mcollina/undici/pull/319\n  return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\n/**\n * Asserts that the handler object is a request handler.\n *\n * @param {object} handler\n * @param {string} method\n * @param {string} [upgrade]\n * @returns {asserts handler is import('../api/api-request').RequestHandler}\n */\nfunction assertRequestHandler (handler, method, upgrade) {\n  if (!handler || typeof handler !== 'object') {\n    throw new InvalidArgumentError('handler must be an object')\n  }\n\n  if (typeof handler.onRequestStart === 'function') {\n    // TODO (fix): More checks...\n    return\n  }\n\n  if (typeof handler.onConnect !== 'function') {\n    throw new InvalidArgumentError('invalid onConnect method')\n  }\n\n  if (typeof handler.onError !== 'function') {\n    throw new InvalidArgumentError('invalid onError method')\n  }\n\n  if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n    throw new InvalidArgumentError('invalid onBodySent method')\n  }\n\n  if (upgrade || method === 'CONNECT') {\n    if (typeof handler.onUpgrade !== 'function') {\n      throw new InvalidArgumentError('invalid onUpgrade method')\n    }\n  } else {\n    if (typeof handler.onHeaders !== 'function') {\n      throw new InvalidArgumentError('invalid onHeaders method')\n    }\n\n    if (typeof handler.onData !== 'function') {\n      throw new InvalidArgumentError('invalid onData method')\n    }\n\n    if (typeof handler.onComplete !== 'function') {\n      throw new InvalidArgumentError('invalid onComplete method')\n    }\n  }\n}\n\n/**\n * A body is disturbed if it has been read from and it cannot be re-used without\n * losing state or data.\n * @param {import('node:stream').Readable} body\n * @returns {boolean}\n */\nfunction isDisturbed (body) {\n  // TODO (fix): Why is body[kBodyUsed] needed?\n  return !!(body && (stream.isDisturbed(body) || body[kBodyUsed]))\n}\n\n/**\n * @typedef {object} SocketInfo\n * @property {string} [localAddress]\n * @property {number} [localPort]\n * @property {string} [remoteAddress]\n * @property {number} [remotePort]\n * @property {string} [remoteFamily]\n * @property {number} [timeout]\n * @property {number} bytesWritten\n * @property {number} bytesRead\n */\n\n/**\n * @param {import('net').Socket} socket\n * @returns {SocketInfo}\n */\nfunction getSocketInfo (socket) {\n  return {\n    localAddress: socket.localAddress,\n    localPort: socket.localPort,\n    remoteAddress: socket.remoteAddress,\n    remotePort: socket.remotePort,\n    remoteFamily: socket.remoteFamily,\n    timeout: socket.timeout,\n    bytesWritten: socket.bytesWritten,\n    bytesRead: socket.bytesRead\n  }\n}\n\n/**\n * @param {Iterable} iterable\n * @returns {ReadableStream}\n */\nfunction ReadableStreamFrom (iterable) {\n  // We cannot use ReadableStream.from here because it does not return a byte stream.\n\n  let iterator\n  return new ReadableStream(\n    {\n      start () {\n        iterator = iterable[Symbol.asyncIterator]()\n      },\n      pull (controller) {\n        return iterator.next().then(({ done, value }) => {\n          if (done) {\n            return queueMicrotask(() => {\n              controller.close()\n              controller.byobRequest?.respond(0)\n            })\n          } else {\n            const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n            if (buf.byteLength) {\n              return controller.enqueue(new Uint8Array(buf))\n            } else {\n              return this.pull(controller)\n            }\n          }\n        })\n      },\n      cancel () {\n        return iterator.return()\n      },\n      type: 'bytes'\n    }\n  )\n}\n\n/**\n * The object should be a FormData instance and contains all the required\n * methods.\n * @param {*} object\n * @returns {object is FormData}\n */\nfunction isFormDataLike (object) {\n  return (\n    object &&\n    typeof object === 'object' &&\n    typeof object.append === 'function' &&\n    typeof object.delete === 'function' &&\n    typeof object.get === 'function' &&\n    typeof object.getAll === 'function' &&\n    typeof object.has === 'function' &&\n    typeof object.set === 'function' &&\n    object[Symbol.toStringTag] === 'FormData'\n  )\n}\n\nfunction addAbortListener (signal, listener) {\n  if ('addEventListener' in signal) {\n    signal.addEventListener('abort', listener, { once: true })\n    return () => signal.removeEventListener('abort', listener)\n  }\n  signal.once('abort', listener)\n  return () => signal.removeListener('abort', listener)\n}\n\nconst validTokenChars = new Uint8Array([\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0-15\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16-31\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32-47 (!\"#$%&'()*+,-./)\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48-63 (0-9:;<=>?)\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64-79 (@A-O)\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80-95 (P-Z[\\]^_)\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96-111 (`a-o)\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, // 112-127 (p-z{|}~)\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 128-143\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 144-159\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 160-175\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 176-191\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 192-207\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 208-223\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 224-239\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // 240-255\n])\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n * @returns {boolean}\n */\nfunction isTokenCharCode (c) {\n  return (validTokenChars[c] === 1)\n}\n\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * @param {string} characters\n * @returns {boolean}\n */\nfunction isValidHTTPToken (characters) {\n  if (characters.length >= 12) return tokenRegExp.test(characters)\n  if (characters.length === 0) return false\n\n  for (let i = 0; i < characters.length; i++) {\n    if (validTokenChars[characters.charCodeAt(i)] !== 1) {\n      return false\n    }\n  }\n  return true\n}\n\n// headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Matches if val contains an invalid field-vchar\n *  field-value    = *( field-content / obs-fold )\n *  field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n *  field-vchar    = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n/**\n * @param {string} characters\n * @returns {boolean}\n */\nfunction isValidHeaderValue (characters) {\n  return !headerCharRegex.test(characters)\n}\n\nconst rangeHeaderRegex = /^bytes (\\d+)-(\\d+)\\/(\\d+)?$/\n\n/**\n * @typedef {object} RangeHeader\n * @property {number} start\n * @property {number | null} end\n * @property {number | null} size\n */\n\n/**\n * Parse accordingly to RFC 9110\n * @see https://www.rfc-editor.org/rfc/rfc9110#field.content-range\n * @param {string} [range]\n * @returns {RangeHeader|null}\n */\nfunction parseRangeHeader (range) {\n  if (range == null || range === '') return { start: 0, end: null, size: null }\n\n  const m = range ? range.match(rangeHeaderRegex) : null\n  return m\n    ? {\n        start: parseInt(m[1]),\n        end: m[2] ? parseInt(m[2]) : null,\n        size: m[3] ? parseInt(m[3]) : null\n      }\n    : null\n}\n\n/**\n * @template {import(\"events\").EventEmitter} T\n * @param {T} obj\n * @param {string} name\n * @param {(...args: any[]) => void} listener\n * @returns {T}\n */\nfunction addListener (obj, name, listener) {\n  const listeners = (obj[kListeners] ??= [])\n  listeners.push([name, listener])\n  obj.on(name, listener)\n  return obj\n}\n\n/**\n * @template {import(\"events\").EventEmitter} T\n * @param {T} obj\n * @returns {T}\n */\nfunction removeAllListeners (obj) {\n  if (obj[kListeners] != null) {\n    for (const [name, listener] of obj[kListeners]) {\n      obj.removeListener(name, listener)\n    }\n    obj[kListeners] = null\n  }\n  return obj\n}\n\n/**\n * @param {import ('../dispatcher/client')} client\n * @param {import ('../core/request')} request\n * @param {Error} err\n */\nfunction errorRequest (client, request, err) {\n  try {\n    request.onError(err)\n    assert(request.aborted)\n  } catch (err) {\n    client.emit('error', err)\n  }\n}\n\n/**\n * @param {WeakRef<net.Socket>} socketWeakRef\n * @param {object} opts\n * @param {number} opts.timeout\n * @param {string} opts.hostname\n * @param {number} opts.port\n * @returns {() => void}\n */\nconst setupConnectTimeout = process.platform === 'win32'\n  ? (socketWeakRef, opts) => {\n      if (!opts.timeout) {\n        return noop\n      }\n\n      let s1 = null\n      let s2 = null\n      const fastTimer = timers.setFastTimeout(() => {\n      // setImmediate is added to make sure that we prioritize socket error events over timeouts\n        s1 = setImmediate(() => {\n        // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n          s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts))\n        })\n      }, opts.timeout)\n      return () => {\n        timers.clearFastTimeout(fastTimer)\n        clearImmediate(s1)\n        clearImmediate(s2)\n      }\n    }\n  : (socketWeakRef, opts) => {\n      if (!opts.timeout) {\n        return noop\n      }\n\n      let s1 = null\n      const fastTimer = timers.setFastTimeout(() => {\n      // setImmediate is added to make sure that we prioritize socket error events over timeouts\n        s1 = setImmediate(() => {\n          onConnectTimeout(socketWeakRef.deref(), opts)\n        })\n      }, opts.timeout)\n      return () => {\n        timers.clearFastTimeout(fastTimer)\n        clearImmediate(s1)\n      }\n    }\n\n/**\n * @param {net.Socket} socket\n * @param {object} opts\n * @param {number} opts.timeout\n * @param {string} opts.hostname\n * @param {number} opts.port\n */\nfunction onConnectTimeout (socket, opts) {\n  // The socket could be already garbage collected\n  if (socket == null) {\n    return\n  }\n\n  let message = 'Connect Timeout Error'\n  if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {\n    message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},`\n  } else {\n    message += ` (attempted address: ${opts.hostname}:${opts.port},`\n  }\n\n  message += ` timeout: ${opts.timeout}ms)`\n\n  destroy(socket, new ConnectTimeoutError(message))\n}\n\n/**\n * @param {string} urlString\n * @returns {string}\n */\nfunction getProtocolFromUrlString (urlString) {\n  if (\n    urlString[0] === 'h' &&\n    urlString[1] === 't' &&\n    urlString[2] === 't' &&\n    urlString[3] === 'p'\n  ) {\n    switch (urlString[4]) {\n      case ':':\n        return 'http:'\n      case 's':\n        if (urlString[5] === ':') {\n          return 'https:'\n        }\n    }\n  }\n  // fallback if none of the usual suspects\n  return urlString.slice(0, urlString.indexOf(':') + 1)\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nconst normalizedMethodRecordsBase = {\n  delete: 'DELETE',\n  DELETE: 'DELETE',\n  get: 'GET',\n  GET: 'GET',\n  head: 'HEAD',\n  HEAD: 'HEAD',\n  options: 'OPTIONS',\n  OPTIONS: 'OPTIONS',\n  post: 'POST',\n  POST: 'POST',\n  put: 'PUT',\n  PUT: 'PUT'\n}\n\nconst normalizedMethodRecords = {\n  ...normalizedMethodRecordsBase,\n  patch: 'patch',\n  PATCH: 'PATCH'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizedMethodRecordsBase, null)\nObject.setPrototypeOf(normalizedMethodRecords, null)\n\nmodule.exports = {\n  kEnumerableProperty,\n  isDisturbed,\n  isBlobLike,\n  parseOrigin,\n  parseURL,\n  getServerName,\n  isStream,\n  isIterable,\n  hasSafeIterator,\n  isAsyncIterable,\n  isDestroyed,\n  headerNameToString,\n  bufferToLowerCasedHeaderName,\n  addListener,\n  removeAllListeners,\n  errorRequest,\n  parseRawHeaders,\n  encodeRawHeaders,\n  parseHeaders,\n  parseKeepAliveTimeout,\n  destroy,\n  bodyLength,\n  deepClone,\n  ReadableStreamFrom,\n  isBuffer,\n  assertRequestHandler,\n  getSocketInfo,\n  isFormDataLike,\n  pathHasQueryOrFragment,\n  serializePathWithQuery,\n  addAbortListener,\n  isValidHTTPToken,\n  isValidHeaderValue,\n  isTokenCharCode,\n  parseRangeHeader,\n  normalizedMethodRecordsBase,\n  normalizedMethodRecords,\n  isValidPort,\n  isHttpOrHttpsPrefixed,\n  nodeMajor,\n  nodeMinor,\n  safeHTTPMethods: Object.freeze(['GET', 'HEAD', 'OPTIONS', 'TRACE']),\n  wrapRequestBody,\n  setupConnectTimeout,\n  getProtocolFromUrlString\n}\n","'use strict'\n\nconst {\n  kConnected,\n  kPending,\n  kRunning,\n  kSize,\n  kFree,\n  kQueued\n} = require('../core/symbols')\n\nclass ClientStats {\n  constructor (client) {\n    this.connected = client[kConnected]\n    this.pending = client[kPending]\n    this.running = client[kRunning]\n    this.size = client[kSize]\n  }\n}\n\nclass PoolStats {\n  constructor (pool) {\n    this.connected = pool[kConnected]\n    this.free = pool[kFree]\n    this.pending = pool[kPending]\n    this.queued = pool[kQueued]\n    this.running = pool[kRunning]\n    this.size = pool[kSize]\n  }\n}\n\nmodule.exports = { ClientStats, PoolStats }\n","'use strict'\n\nconst diagnosticsChannel = require('node:diagnostics_channel')\nconst util = require('node:util')\n\nconst undiciDebugLog = util.debuglog('undici')\nconst fetchDebuglog = util.debuglog('fetch')\nconst websocketDebuglog = util.debuglog('websocket')\n\nconst channels = {\n  // Client\n  beforeConnect: diagnosticsChannel.channel('undici:client:beforeConnect'),\n  connected: diagnosticsChannel.channel('undici:client:connected'),\n  connectError: diagnosticsChannel.channel('undici:client:connectError'),\n  sendHeaders: diagnosticsChannel.channel('undici:client:sendHeaders'),\n  // Request\n  create: diagnosticsChannel.channel('undici:request:create'),\n  bodySent: diagnosticsChannel.channel('undici:request:bodySent'),\n  bodyChunkSent: diagnosticsChannel.channel('undici:request:bodyChunkSent'),\n  bodyChunkReceived: diagnosticsChannel.channel('undici:request:bodyChunkReceived'),\n  headers: diagnosticsChannel.channel('undici:request:headers'),\n  trailers: diagnosticsChannel.channel('undici:request:trailers'),\n  error: diagnosticsChannel.channel('undici:request:error'),\n  // WebSocket\n  open: diagnosticsChannel.channel('undici:websocket:open'),\n  close: diagnosticsChannel.channel('undici:websocket:close'),\n  socketError: diagnosticsChannel.channel('undici:websocket:socket_error'),\n  ping: diagnosticsChannel.channel('undici:websocket:ping'),\n  pong: diagnosticsChannel.channel('undici:websocket:pong'),\n  // ProxyAgent\n  proxyConnected: diagnosticsChannel.channel('undici:proxy:connected')\n}\n\nlet isTrackingClientEvents = false\n\nfunction trackClientEvents (debugLog = undiciDebugLog) {\n  if (isTrackingClientEvents) {\n    return\n  }\n\n  // Check if any of the channels already have subscribers to prevent duplicate subscriptions\n  // This can happen when both Node.js built-in undici and undici as a dependency are present\n  if (channels.beforeConnect.hasSubscribers || channels.connected.hasSubscribers ||\n      channels.connectError.hasSubscribers || channels.sendHeaders.hasSubscribers) {\n    isTrackingClientEvents = true\n    return\n  }\n\n  isTrackingClientEvents = true\n\n  diagnosticsChannel.subscribe('undici:client:beforeConnect',\n    evt => {\n      const {\n        connectParams: { version, protocol, port, host }\n      } = evt\n      debugLog(\n        'connecting to %s%s using %s%s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version\n      )\n    })\n\n  diagnosticsChannel.subscribe('undici:client:connected',\n    evt => {\n      const {\n        connectParams: { version, protocol, port, host }\n      } = evt\n      debugLog(\n        'connected to %s%s using %s%s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version\n      )\n    })\n\n  diagnosticsChannel.subscribe('undici:client:connectError',\n    evt => {\n      const {\n        connectParams: { version, protocol, port, host },\n        error\n      } = evt\n      debugLog(\n        'connection to %s%s using %s%s errored - %s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version,\n        error.message\n      )\n    })\n\n  diagnosticsChannel.subscribe('undici:client:sendHeaders',\n    evt => {\n      const {\n        request: { method, path, origin }\n      } = evt\n      debugLog('sending request to %s %s%s', method, origin, path)\n    })\n}\n\nlet isTrackingRequestEvents = false\n\nfunction trackRequestEvents (debugLog = undiciDebugLog) {\n  if (isTrackingRequestEvents) {\n    return\n  }\n\n  // Check if any of the channels already have subscribers to prevent duplicate subscriptions\n  // This can happen when both Node.js built-in undici and undici as a dependency are present\n  if (channels.headers.hasSubscribers || channels.trailers.hasSubscribers ||\n      channels.error.hasSubscribers) {\n    isTrackingRequestEvents = true\n    return\n  }\n\n  isTrackingRequestEvents = true\n\n  diagnosticsChannel.subscribe('undici:request:headers',\n    evt => {\n      const {\n        request: { method, path, origin },\n        response: { statusCode }\n      } = evt\n      debugLog(\n        'received response to %s %s%s - HTTP %d',\n        method,\n        origin,\n        path,\n        statusCode\n      )\n    })\n\n  diagnosticsChannel.subscribe('undici:request:trailers',\n    evt => {\n      const {\n        request: { method, path, origin }\n      } = evt\n      debugLog('trailers received from %s %s%s', method, origin, path)\n    })\n\n  diagnosticsChannel.subscribe('undici:request:error',\n    evt => {\n      const {\n        request: { method, path, origin },\n        error\n      } = evt\n      debugLog(\n        'request to %s %s%s errored - %s',\n        method,\n        origin,\n        path,\n        error.message\n      )\n    })\n}\n\nlet isTrackingWebSocketEvents = false\n\nfunction trackWebSocketEvents (debugLog = websocketDebuglog) {\n  if (isTrackingWebSocketEvents) {\n    return\n  }\n\n  // Check if any of the channels already have subscribers to prevent duplicate subscriptions\n  // This can happen when both Node.js built-in undici and undici as a dependency are present\n  if (channels.open.hasSubscribers || channels.close.hasSubscribers ||\n      channels.socketError.hasSubscribers || channels.ping.hasSubscribers ||\n      channels.pong.hasSubscribers) {\n    isTrackingWebSocketEvents = true\n    return\n  }\n\n  isTrackingWebSocketEvents = true\n\n  diagnosticsChannel.subscribe('undici:websocket:open',\n    evt => {\n      if (evt.address != null) {\n        const { address, port } = evt.address\n        debugLog('connection opened %s%s', address, port ? `:${port}` : '')\n      } else {\n        debugLog('connection opened')\n      }\n    })\n\n  diagnosticsChannel.subscribe('undici:websocket:close',\n    evt => {\n      const { websocket, code, reason } = evt\n      debugLog(\n        'closed connection to %s - %s %s',\n        websocket.url,\n        code,\n        reason\n      )\n    })\n\n  diagnosticsChannel.subscribe('undici:websocket:socket_error',\n    err => {\n      debugLog('connection errored - %s', err.message)\n    })\n\n  diagnosticsChannel.subscribe('undici:websocket:ping',\n    evt => {\n      debugLog('ping received')\n    })\n\n  diagnosticsChannel.subscribe('undici:websocket:pong',\n    evt => {\n      debugLog('pong received')\n    })\n}\n\nif (undiciDebugLog.enabled || fetchDebuglog.enabled) {\n  trackClientEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog)\n  trackRequestEvents(fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog)\n}\n\nif (websocketDebuglog.enabled) {\n  trackClientEvents(undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog)\n  trackWebSocketEvents(websocketDebuglog)\n}\n\nmodule.exports = {\n  channels\n}\n","'use strict'\n\nconst {\n  InvalidArgumentError,\n  NotSupportedError\n} = require('./errors')\nconst assert = require('node:assert')\nconst {\n  isValidHTTPToken,\n  isValidHeaderValue,\n  isStream,\n  destroy,\n  isBuffer,\n  isFormDataLike,\n  isIterable,\n  hasSafeIterator,\n  isBlobLike,\n  serializePathWithQuery,\n  assertRequestHandler,\n  getServerName,\n  normalizedMethodRecords,\n  getProtocolFromUrlString\n} = require('./util')\nconst { channels } = require('./diagnostics.js')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nfunction isValidContentLengthHeaderValue (val) {\n  if (typeof val !== 'string' || val.length === 0) {\n    return false\n  }\n\n  for (let i = 0; i < val.length; i++) {\n    const charCode = val.charCodeAt(i)\n    if (charCode < 48 || charCode > 57) {\n      return false\n    }\n  }\n\n  return true\n}\n\nconst kHandler = Symbol('handler')\n\nclass Request {\n  constructor (origin, {\n    path,\n    method,\n    body,\n    headers,\n    query,\n    idempotent,\n    blocking,\n    upgrade,\n    headersTimeout,\n    bodyTimeout,\n    reset,\n    expectContinue,\n    servername,\n    throwOnError,\n    maxRedirections,\n    typeOfService\n  }, handler) {\n    if (typeof path !== 'string') {\n      throw new InvalidArgumentError('path must be a string')\n    } else if (\n      path[0] !== '/' &&\n      !(path.startsWith('http://') || path.startsWith('https://')) &&\n      method !== 'CONNECT'\n    ) {\n      throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n    } else if (invalidPathRegex.test(path)) {\n      throw new InvalidArgumentError('invalid request path')\n    }\n\n    if (typeof method !== 'string') {\n      throw new InvalidArgumentError('method must be a string')\n    } else if (normalizedMethodRecords[method] === undefined && !isValidHTTPToken(method)) {\n      throw new InvalidArgumentError('invalid request method')\n    }\n\n    if (upgrade && typeof upgrade !== 'string') {\n      throw new InvalidArgumentError('upgrade must be a string')\n    }\n\n    if (upgrade && !isValidHeaderValue(upgrade)) {\n      throw new InvalidArgumentError('invalid upgrade header')\n    }\n\n    if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n      throw new InvalidArgumentError('invalid headersTimeout')\n    }\n\n    if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n      throw new InvalidArgumentError('invalid bodyTimeout')\n    }\n\n    if (reset != null && typeof reset !== 'boolean') {\n      throw new InvalidArgumentError('invalid reset')\n    }\n\n    if (expectContinue != null && typeof expectContinue !== 'boolean') {\n      throw new InvalidArgumentError('invalid expectContinue')\n    }\n\n    if (throwOnError != null) {\n      throw new InvalidArgumentError('invalid throwOnError')\n    }\n\n    if (maxRedirections != null && maxRedirections !== 0) {\n      throw new InvalidArgumentError('maxRedirections is not supported, use the redirect interceptor')\n    }\n\n    if (typeOfService != null && (!Number.isInteger(typeOfService) || typeOfService < 0 || typeOfService > 255)) {\n      throw new InvalidArgumentError('typeOfService must be an integer between 0 and 255')\n    }\n\n    this.headersTimeout = headersTimeout\n\n    this.bodyTimeout = bodyTimeout\n\n    this.method = method\n\n    this.typeOfService = typeOfService ?? 0\n\n    this.abort = null\n\n    if (body == null) {\n      this.body = null\n    } else if (isStream(body)) {\n      this.body = body\n\n      const rState = this.body._readableState\n      if (!rState || !rState.autoDestroy) {\n        this.endHandler = function autoDestroy () {\n          destroy(this)\n        }\n        this.body.on('end', this.endHandler)\n      }\n\n      this.errorHandler = err => {\n        if (this.abort) {\n          this.abort(err)\n        } else {\n          this.error = err\n        }\n      }\n      this.body.on('error', this.errorHandler)\n    } else if (isBuffer(body)) {\n      this.body = body.byteLength ? body : null\n    } else if (ArrayBuffer.isView(body)) {\n      this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n    } else if (body instanceof ArrayBuffer) {\n      this.body = body.byteLength ? Buffer.from(body) : null\n    } else if (typeof body === 'string') {\n      this.body = body.length ? Buffer.from(body) : null\n    } else if (isFormDataLike(body) || isIterable(body) || isBlobLike(body)) {\n      this.body = body\n    } else {\n      throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n    }\n\n    this.completed = false\n    this.aborted = false\n\n    this.upgrade = upgrade || null\n\n    this.path = query ? serializePathWithQuery(path, query) : path\n\n    // TODO: shall we maybe standardize it to an URL object?\n    this.origin = origin\n\n    this.protocol = getProtocolFromUrlString(origin)\n\n    this.idempotent = idempotent == null\n      ? method === 'HEAD' || method === 'GET'\n      : idempotent\n\n    this.blocking = blocking ?? this.method !== 'HEAD'\n\n    this.reset = reset == null ? null : reset\n\n    this.host = null\n\n    this.contentLength = null\n\n    this.contentType = null\n\n    this.headers = []\n\n    // Only for H2\n    this.expectContinue = expectContinue != null ? expectContinue : false\n\n    if (Array.isArray(headers)) {\n      if (headers.length % 2 !== 0) {\n        throw new InvalidArgumentError('headers array must be even')\n      }\n      for (let i = 0; i < headers.length; i += 2) {\n        processHeader(this, headers[i], headers[i + 1])\n      }\n    } else if (headers && typeof headers === 'object') {\n      if (hasSafeIterator(headers)) {\n        for (const header of headers) {\n          if (!Array.isArray(header) || header.length !== 2) {\n            throw new InvalidArgumentError('headers must be in key-value pair format')\n          }\n          processHeader(this, header[0], header[1])\n        }\n      } else {\n        const keys = Object.keys(headers)\n        for (let i = 0; i < keys.length; ++i) {\n          processHeader(this, keys[i], headers[keys[i]])\n        }\n      }\n    } else if (headers != null) {\n      throw new InvalidArgumentError('headers must be an object or an array')\n    }\n\n    assertRequestHandler(handler, method, upgrade)\n\n    this.servername = servername || getServerName(this.host) || null\n\n    this[kHandler] = handler\n\n    if (channels.create.hasSubscribers) {\n      channels.create.publish({ request: this })\n    }\n  }\n\n  onBodySent (chunk) {\n    if (channels.bodyChunkSent.hasSubscribers) {\n      channels.bodyChunkSent.publish({ request: this, chunk })\n    }\n    if (this[kHandler].onBodySent) {\n      try {\n        return this[kHandler].onBodySent(chunk)\n      } catch (err) {\n        this.abort(err)\n      }\n    }\n  }\n\n  onRequestSent () {\n    if (channels.bodySent.hasSubscribers) {\n      channels.bodySent.publish({ request: this })\n    }\n\n    if (this[kHandler].onRequestSent) {\n      try {\n        return this[kHandler].onRequestSent()\n      } catch (err) {\n        this.abort(err)\n      }\n    }\n  }\n\n  onConnect (abort) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    if (this.error) {\n      abort(this.error)\n    } else {\n      this.abort = abort\n      return this[kHandler].onConnect(abort)\n    }\n  }\n\n  onResponseStarted () {\n    return this[kHandler].onResponseStarted?.()\n  }\n\n  onHeaders (statusCode, headers, resume, statusText) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    if (channels.headers.hasSubscribers) {\n      channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n    }\n\n    try {\n      return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n    } catch (err) {\n      this.abort(err)\n    }\n  }\n\n  onData (chunk) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    if (channels.bodyChunkReceived.hasSubscribers) {\n      channels.bodyChunkReceived.publish({ request: this, chunk })\n    }\n    try {\n      return this[kHandler].onData(chunk)\n    } catch (err) {\n      this.abort(err)\n      return false\n    }\n  }\n\n  onUpgrade (statusCode, headers, socket) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    return this[kHandler].onUpgrade(statusCode, headers, socket)\n  }\n\n  onComplete (trailers) {\n    this.onFinally()\n\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    this.completed = true\n    if (channels.trailers.hasSubscribers) {\n      channels.trailers.publish({ request: this, trailers })\n    }\n\n    try {\n      return this[kHandler].onComplete(trailers)\n    } catch (err) {\n      // TODO (fix): This might be a bad idea?\n      this.onError(err)\n    }\n  }\n\n  onError (error) {\n    this.onFinally()\n\n    if (channels.error.hasSubscribers) {\n      channels.error.publish({ request: this, error })\n    }\n\n    if (this.aborted) {\n      return\n    }\n    this.aborted = true\n\n    return this[kHandler].onError(error)\n  }\n\n  onFinally () {\n    if (this.errorHandler) {\n      this.body.off('error', this.errorHandler)\n      this.errorHandler = null\n    }\n\n    if (this.endHandler) {\n      this.body.off('end', this.endHandler)\n      this.endHandler = null\n    }\n  }\n\n  addHeader (key, value) {\n    processHeader(this, key, value)\n    return this\n  }\n}\n\nfunction processHeader (request, key, val) {\n  if (val && (typeof val === 'object' && !Array.isArray(val))) {\n    throw new InvalidArgumentError(`invalid ${key} header`)\n  } else if (val === undefined) {\n    return\n  }\n\n  let headerName = headerNameLowerCasedRecord[key]\n\n  if (headerName === undefined) {\n    headerName = key.toLowerCase()\n    if (headerNameLowerCasedRecord[headerName] === undefined && !isValidHTTPToken(headerName)) {\n      throw new InvalidArgumentError('invalid header key')\n    }\n  }\n\n  if (Array.isArray(val)) {\n    const arr = []\n    for (let i = 0; i < val.length; i++) {\n      if (typeof val[i] === 'string') {\n        if (!isValidHeaderValue(val[i])) {\n          throw new InvalidArgumentError(`invalid ${key} header`)\n        }\n        arr.push(val[i])\n      } else if (val[i] === null) {\n        arr.push('')\n      } else if (typeof val[i] === 'object') {\n        throw new InvalidArgumentError(`invalid ${key} header`)\n      } else {\n        arr.push(`${val[i]}`)\n      }\n    }\n    val = arr\n  } else if (typeof val === 'string') {\n    if (!isValidHeaderValue(val)) {\n      throw new InvalidArgumentError(`invalid ${key} header`)\n    }\n  } else if (val === null) {\n    val = ''\n  } else {\n    val = `${val}`\n  }\n\n  if (headerName === 'host') {\n    if (request.host !== null) {\n      throw new InvalidArgumentError('duplicate host header')\n    }\n    if (typeof val !== 'string') {\n      throw new InvalidArgumentError('invalid host header')\n    }\n    // Consumed by Client\n    request.host = val\n  } else if (headerName === 'content-length') {\n    if (request.contentLength !== null) {\n      throw new InvalidArgumentError('duplicate content-length header')\n    }\n    if (!isValidContentLengthHeaderValue(val)) {\n      throw new InvalidArgumentError('invalid content-length header')\n    }\n    request.contentLength = parseInt(val, 10)\n  } else if (request.contentType === null && headerName === 'content-type') {\n    request.contentType = val\n    request.headers.push(key, val)\n  } else if (headerName === 'transfer-encoding' || headerName === 'keep-alive' || headerName === 'upgrade') {\n    throw new InvalidArgumentError(`invalid ${headerName} header`)\n  } else if (headerName === 'connection') {\n    // Per RFC 7230 Section 6.1, Connection header can contain\n    // a comma-separated list of connection option tokens (header names)\n    const value = typeof val === 'string' ? val : null\n    if (value === null) {\n      throw new InvalidArgumentError('invalid connection header')\n    }\n\n    for (const token of value.toLowerCase().split(',')) {\n      const trimmed = token.trim()\n      if (!isValidHTTPToken(trimmed)) {\n        throw new InvalidArgumentError('invalid connection header')\n      }\n      if (trimmed === 'close') {\n        request.reset = true\n      }\n    }\n  } else if (headerName === 'expect') {\n    throw new NotSupportedError('expect header not supported')\n  } else {\n    request.headers.push(key, val)\n  }\n}\n\nmodule.exports = Request\n","'use strict'\n\nconst { InvalidArgumentError } = require('../core/errors')\n\nmodule.exports = class WrapHandler {\n  #handler\n\n  constructor (handler) {\n    this.#handler = handler\n  }\n\n  static wrap (handler) {\n    // TODO (fix): More checks...\n    return handler.onRequestStart ? handler : new WrapHandler(handler)\n  }\n\n  // Unwrap Interface\n\n  onConnect (abort, context) {\n    return this.#handler.onConnect?.(abort, context)\n  }\n\n  onResponseStarted () {\n    return this.#handler.onResponseStarted?.()\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    return this.#handler.onHeaders?.(statusCode, rawHeaders, resume, statusMessage)\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    return this.#handler.onUpgrade?.(statusCode, rawHeaders, socket)\n  }\n\n  onData (data) {\n    return this.#handler.onData?.(data)\n  }\n\n  onComplete (trailers) {\n    return this.#handler.onComplete?.(trailers)\n  }\n\n  onError (err) {\n    if (!this.#handler.onError) {\n      throw err\n    }\n\n    return this.#handler.onError?.(err)\n  }\n\n  // Wrap Interface\n\n  onRequestStart (controller, context) {\n    this.#handler.onConnect?.((reason) => controller.abort(reason), context)\n  }\n\n  onRequestUpgrade (controller, statusCode, headers, socket) {\n    const rawHeaders = []\n    for (const [key, val] of Object.entries(headers)) {\n      rawHeaders.push(Buffer.from(key, 'latin1'), toRawHeaderValue(val))\n    }\n\n    this.#handler.onUpgrade?.(statusCode, rawHeaders, socket)\n  }\n\n  onResponseStart (controller, statusCode, headers, statusMessage) {\n    const rawHeaders = []\n    for (const [key, val] of Object.entries(headers)) {\n      rawHeaders.push(Buffer.from(key, 'latin1'), toRawHeaderValue(val))\n    }\n\n    if (this.#handler.onHeaders?.(statusCode, rawHeaders, () => controller.resume(), statusMessage) === false) {\n      controller.pause()\n    }\n  }\n\n  onResponseData (controller, data) {\n    if (this.#handler.onData?.(data) === false) {\n      controller.pause()\n    }\n  }\n\n  onResponseEnd (controller, trailers) {\n    const rawTrailers = []\n    for (const [key, val] of Object.entries(trailers)) {\n      rawTrailers.push(Buffer.from(key, 'latin1'), toRawHeaderValue(val))\n    }\n\n    this.#handler.onComplete?.(rawTrailers)\n  }\n\n  onResponseError (controller, err) {\n    if (!this.#handler.onError) {\n      throw new InvalidArgumentError('invalid onError method')\n    }\n\n    this.#handler.onError?.(err)\n  }\n}\n\nfunction toRawHeaderValue (value) {\n  return Array.isArray(value)\n    ? value.map((item) => Buffer.from(item, 'latin1'))\n    : Buffer.from(value, 'latin1')\n}\n","'use strict'\nconst EventEmitter = require('node:events')\nconst WrapHandler = require('../handler/wrap-handler')\n\nconst wrapInterceptor = (dispatch) => (opts, handler) => dispatch(opts, WrapHandler.wrap(handler))\n\nclass Dispatcher extends EventEmitter {\n  dispatch () {\n    throw new Error('not implemented')\n  }\n\n  close () {\n    throw new Error('not implemented')\n  }\n\n  destroy () {\n    throw new Error('not implemented')\n  }\n\n  compose (...args) {\n    // So we handle [interceptor1, interceptor2] or interceptor1, interceptor2, ...\n    const interceptors = Array.isArray(args[0]) ? args[0] : args\n    let dispatch = this.dispatch.bind(this)\n\n    for (const interceptor of interceptors) {\n      if (interceptor == null) {\n        continue\n      }\n\n      if (typeof interceptor !== 'function') {\n        throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`)\n      }\n\n      dispatch = interceptor(dispatch)\n      dispatch = wrapInterceptor(dispatch)\n\n      if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) {\n        throw new TypeError('invalid interceptor')\n      }\n    }\n\n    return new Proxy(this, {\n      get: (target, key) => key === 'dispatch' ? dispatch : target[key]\n    })\n  }\n}\n\nmodule.exports = Dispatcher\n","'use strict'\n\nconst { parseHeaders } = require('../core/util')\nconst { InvalidArgumentError } = require('../core/errors')\n\nconst kResume = Symbol('resume')\n\nclass UnwrapController {\n  #paused = false\n  #reason = null\n  #aborted = false\n  #abort\n\n  [kResume] = null\n\n  rawHeaders = null\n  rawTrailers = null\n\n  constructor (abort) {\n    this.#abort = abort\n  }\n\n  pause () {\n    this.#paused = true\n  }\n\n  resume () {\n    if (this.#paused) {\n      this.#paused = false\n      this[kResume]?.()\n    }\n  }\n\n  abort (reason) {\n    if (!this.#aborted) {\n      this.#aborted = true\n      this.#reason = reason\n      this.#abort(reason)\n    }\n  }\n\n  get aborted () {\n    return this.#aborted\n  }\n\n  get reason () {\n    return this.#reason\n  }\n\n  get paused () {\n    return this.#paused\n  }\n}\n\nmodule.exports = class UnwrapHandler {\n  #handler\n  #controller\n\n  constructor (handler) {\n    this.#handler = handler\n  }\n\n  static unwrap (handler) {\n    // TODO (fix): More checks...\n    return !handler.onRequestStart ? handler : new UnwrapHandler(handler)\n  }\n\n  onConnect (abort, context) {\n    this.#controller = new UnwrapController(abort)\n    this.#handler.onRequestStart?.(this.#controller, context)\n  }\n\n  onResponseStarted () {\n    return this.#handler.onResponseStarted?.()\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    this.#controller.rawHeaders = rawHeaders\n    this.#handler.onRequestUpgrade?.(this.#controller, statusCode, parseHeaders(rawHeaders), socket)\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    this.#controller[kResume] = resume\n    this.#controller.rawHeaders = rawHeaders\n    this.#handler.onResponseStart?.(this.#controller, statusCode, parseHeaders(rawHeaders), statusMessage)\n    return !this.#controller.paused\n  }\n\n  onData (data) {\n    this.#handler.onResponseData?.(this.#controller, data)\n    return !this.#controller.paused\n  }\n\n  onComplete (rawTrailers) {\n    this.#controller.rawTrailers = rawTrailers\n    this.#handler.onResponseEnd?.(this.#controller, parseHeaders(rawTrailers))\n  }\n\n  onError (err) {\n    if (!this.#handler.onResponseError) {\n      throw new InvalidArgumentError('invalid onError method')\n    }\n\n    this.#handler.onResponseError?.(this.#controller, err)\n  }\n}\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst UnwrapHandler = require('../handler/unwrap-handler')\nconst {\n  ClientDestroyedError,\n  ClientClosedError,\n  InvalidArgumentError\n} = require('../core/errors')\nconst { kDestroy, kClose, kClosed, kDestroyed, kDispatch } = require('../core/symbols')\n\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kWebSocketOptions = Symbol('webSocketOptions')\n\nclass DispatcherBase extends Dispatcher {\n  /** @type {boolean} */\n  [kDestroyed] = false;\n\n  /** @type {Array<Function|null} */\n  [kOnDestroyed] = null;\n\n  /** @type {boolean} */\n  [kClosed] = false;\n\n  /** @type {Array<Function>|null} */\n  [kOnClosed] = null\n\n  /**\n   * @param {import('../../types/dispatcher').DispatcherOptions} [opts]\n   */\n  constructor (opts) {\n    super()\n    this[kWebSocketOptions] = opts?.webSocket ?? {}\n  }\n\n  /**\n   * @returns {import('../../types/dispatcher').WebSocketOptions}\n   */\n  get webSocketOptions () {\n    return {\n      maxFragments: this[kWebSocketOptions].maxFragments ?? 131072,\n      maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024 // 128 MB default\n    }\n  }\n\n  /** @returns {boolean} */\n  get destroyed () {\n    return this[kDestroyed]\n  }\n\n  /** @returns {boolean} */\n  get closed () {\n    return this[kClosed]\n  }\n\n  close (callback) {\n    if (callback === undefined) {\n      return new Promise((resolve, reject) => {\n        this.close((err, data) => {\n          return err ? reject(err) : resolve(data)\n        })\n      })\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    if (this[kDestroyed]) {\n      const err = new ClientDestroyedError()\n      queueMicrotask(() => callback(err, null))\n      return\n    }\n\n    if (this[kClosed]) {\n      if (this[kOnClosed]) {\n        this[kOnClosed].push(callback)\n      } else {\n        queueMicrotask(() => callback(null, null))\n      }\n      return\n    }\n\n    this[kClosed] = true\n    this[kOnClosed] ??= []\n    this[kOnClosed].push(callback)\n\n    const onClosed = () => {\n      const callbacks = this[kOnClosed]\n      this[kOnClosed] = null\n      for (let i = 0; i < callbacks.length; i++) {\n        callbacks[i](null, null)\n      }\n    }\n\n    // Should not error.\n    this[kClose]()\n      .then(() => this.destroy())\n      .then(() => queueMicrotask(onClosed))\n  }\n\n  destroy (err, callback) {\n    if (typeof err === 'function') {\n      callback = err\n      err = null\n    }\n\n    if (callback === undefined) {\n      return new Promise((resolve, reject) => {\n        this.destroy(err, (err, data) => {\n          return err ? reject(err) : resolve(data)\n        })\n      })\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    if (this[kDestroyed]) {\n      if (this[kOnDestroyed]) {\n        this[kOnDestroyed].push(callback)\n      } else {\n        queueMicrotask(() => callback(null, null))\n      }\n      return\n    }\n\n    if (!err) {\n      err = new ClientDestroyedError()\n    }\n\n    this[kDestroyed] = true\n    this[kOnDestroyed] ??= []\n    this[kOnDestroyed].push(callback)\n\n    const onDestroyed = () => {\n      const callbacks = this[kOnDestroyed]\n      this[kOnDestroyed] = null\n      for (let i = 0; i < callbacks.length; i++) {\n        callbacks[i](null, null)\n      }\n    }\n\n    // Should not error.\n    this[kDestroy](err)\n      .then(() => queueMicrotask(onDestroyed))\n  }\n\n  dispatch (opts, handler) {\n    if (!handler || typeof handler !== 'object') {\n      throw new InvalidArgumentError('handler must be an object')\n    }\n\n    handler = UnwrapHandler.unwrap(handler)\n\n    try {\n      if (!opts || typeof opts !== 'object') {\n        throw new InvalidArgumentError('opts must be an object.')\n      }\n\n      if (this[kDestroyed] || this[kOnDestroyed]) {\n        throw new ClientDestroyedError()\n      }\n\n      if (this[kClosed]) {\n        throw new ClientClosedError()\n      }\n\n      return this[kDispatch](opts, handler)\n    } catch (err) {\n      if (typeof handler.onError !== 'function') {\n        throw err\n      }\n\n      handler.onError(err)\n\n      return false\n    }\n  }\n}\n\nmodule.exports = DispatcherBase\n","'use strict'\n\nconst net = require('node:net')\nconst assert = require('node:assert')\nconst util = require('./util')\nconst { InvalidArgumentError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nconst SessionCache = class WeakSessionCache {\n  constructor (maxCachedSessions) {\n    this._maxCachedSessions = maxCachedSessions\n    this._sessionCache = new Map()\n    this._sessionRegistry = new FinalizationRegistry((key) => {\n      if (this._sessionCache.size < this._maxCachedSessions) {\n        return\n      }\n\n      const ref = this._sessionCache.get(key)\n      if (ref !== undefined && ref.deref() === undefined) {\n        this._sessionCache.delete(key)\n      }\n    })\n  }\n\n  get (sessionKey) {\n    const ref = this._sessionCache.get(sessionKey)\n    return ref ? ref.deref() : null\n  }\n\n  set (sessionKey, session) {\n    if (this._maxCachedSessions === 0) {\n      return\n    }\n\n    if (this._sessionCache.has(sessionKey)) {\n      this._sessionCache.delete(sessionKey)\n    } else if (this._sessionCache.size >= this._maxCachedSessions) {\n      for (const [key, ref] of this._sessionCache) {\n        if (ref.deref() === undefined) {\n          this._sessionCache.delete(key)\n          return\n        }\n      }\n\n      const oldest = this._sessionCache.keys().next()\n      if (!oldest.done) {\n        this._sessionCache.delete(oldest.value)\n      }\n    }\n\n    this._sessionCache.set(sessionKey, new WeakRef(session))\n    this._sessionRegistry.register(session, sessionKey)\n  }\n}\n\nfunction buildConnector ({ allowH2, useH2c, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) {\n  if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n    throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n  }\n\n  const options = { path: socketPath, ...opts }\n  const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n  timeout = timeout == null ? 10e3 : timeout\n  allowH2 = allowH2 != null ? allowH2 : false\n  return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n    let socket\n    if (protocol === 'https:') {\n      if (!tls) {\n        tls = require('node:tls')\n      }\n      servername = servername || options.servername || util.getServerName(host) || null\n\n      const sessionKey = servername || hostname\n      assert(sessionKey)\n\n      const session = customSession || sessionCache.get(sessionKey) || null\n\n      port = port || 443\n\n      socket = tls.connect({\n        highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n        ...options,\n        servername,\n        session,\n        localAddress,\n        ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n        socket: httpSocket, // upgrade socket connection\n        port,\n        host: hostname\n      })\n\n      socket\n        .on('session', function (session) {\n          // TODO (fix): Can a session become invalid once established? Don't think so?\n          sessionCache.set(sessionKey, session)\n        })\n    } else {\n      assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n\n      port = port || 80\n\n      socket = net.connect({\n        highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n        ...options,\n        localAddress,\n        port,\n        host: hostname\n      })\n      if (useH2c === true) {\n        socket.alpnProtocol = 'h2'\n      }\n    }\n\n    // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n    if (options.keepAlive == null || options.keepAlive) {\n      const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n      socket.setKeepAlive(true, keepAliveInitialDelay)\n    }\n\n    const clearConnectTimeout = util.setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port })\n\n    socket\n      .setNoDelay(true)\n      .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n        queueMicrotask(clearConnectTimeout)\n\n        if (callback) {\n          const cb = callback\n          callback = null\n          cb(null, this)\n        }\n      })\n      .on('error', function (err) {\n        queueMicrotask(clearConnectTimeout)\n\n        if (callback) {\n          const cb = callback\n          callback = null\n          cb(err)\n        }\n      })\n\n    return socket\n  }\n}\n\nmodule.exports = buildConnector\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = enumToMap;\nfunction enumToMap(obj, filter = [], exceptions = []) {\n    const emptyFilter = (filter?.length ?? 0) === 0;\n    const emptyExceptions = (exceptions?.length ?? 0) === 0;\n    return Object.fromEntries(Object.entries(obj).filter(([, value]) => {\n        return (typeof value === 'number' &&\n            (emptyFilter || filter.includes(value)) &&\n            (emptyExceptions || !exceptions.includes(value)));\n    }));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.MINOR = exports.MAJOR = exports.HTAB_SP_VCHAR_OBS_TEXT = exports.QUOTED_STRING = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.HEX = exports.URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.STATUSES_HTTP = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.HEADER_STATE = exports.FINISH = exports.STATUSES = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// Emums\nexports.ERROR = {\n    OK: 0,\n    INTERNAL: 1,\n    STRICT: 2,\n    CR_EXPECTED: 25,\n    LF_EXPECTED: 3,\n    UNEXPECTED_CONTENT_LENGTH: 4,\n    UNEXPECTED_SPACE: 30,\n    CLOSED_CONNECTION: 5,\n    INVALID_METHOD: 6,\n    INVALID_URL: 7,\n    INVALID_CONSTANT: 8,\n    INVALID_VERSION: 9,\n    INVALID_HEADER_TOKEN: 10,\n    INVALID_CONTENT_LENGTH: 11,\n    INVALID_CHUNK_SIZE: 12,\n    INVALID_STATUS: 13,\n    INVALID_EOF_STATE: 14,\n    INVALID_TRANSFER_ENCODING: 15,\n    CB_MESSAGE_BEGIN: 16,\n    CB_HEADERS_COMPLETE: 17,\n    CB_MESSAGE_COMPLETE: 18,\n    CB_CHUNK_HEADER: 19,\n    CB_CHUNK_COMPLETE: 20,\n    PAUSED: 21,\n    PAUSED_UPGRADE: 22,\n    PAUSED_H2_UPGRADE: 23,\n    USER: 24,\n    CB_URL_COMPLETE: 26,\n    CB_STATUS_COMPLETE: 27,\n    CB_METHOD_COMPLETE: 32,\n    CB_VERSION_COMPLETE: 33,\n    CB_HEADER_FIELD_COMPLETE: 28,\n    CB_HEADER_VALUE_COMPLETE: 29,\n    CB_CHUNK_EXTENSION_NAME_COMPLETE: 34,\n    CB_CHUNK_EXTENSION_VALUE_COMPLETE: 35,\n    CB_RESET: 31,\n    CB_PROTOCOL_COMPLETE: 38,\n};\nexports.TYPE = {\n    BOTH: 0, // default\n    REQUEST: 1,\n    RESPONSE: 2,\n};\nexports.FLAGS = {\n    CONNECTION_KEEP_ALIVE: 1 << 0,\n    CONNECTION_CLOSE: 1 << 1,\n    CONNECTION_UPGRADE: 1 << 2,\n    CHUNKED: 1 << 3,\n    UPGRADE: 1 << 4,\n    CONTENT_LENGTH: 1 << 5,\n    SKIPBODY: 1 << 6,\n    TRAILING: 1 << 7,\n    // 1 << 8 is unused\n    TRANSFER_ENCODING: 1 << 9,\n};\nexports.LENIENT_FLAGS = {\n    HEADERS: 1 << 0,\n    CHUNKED_LENGTH: 1 << 1,\n    KEEP_ALIVE: 1 << 2,\n    TRANSFER_ENCODING: 1 << 3,\n    VERSION: 1 << 4,\n    DATA_AFTER_CLOSE: 1 << 5,\n    OPTIONAL_LF_AFTER_CR: 1 << 6,\n    OPTIONAL_CRLF_AFTER_CHUNK: 1 << 7,\n    OPTIONAL_CR_BEFORE_LF: 1 << 8,\n    SPACES_AFTER_CHUNK_SIZE: 1 << 9,\n};\nexports.METHODS = {\n    'DELETE': 0,\n    'GET': 1,\n    'HEAD': 2,\n    'POST': 3,\n    'PUT': 4,\n    /* pathological */\n    'CONNECT': 5,\n    'OPTIONS': 6,\n    'TRACE': 7,\n    /* WebDAV */\n    'COPY': 8,\n    'LOCK': 9,\n    'MKCOL': 10,\n    'MOVE': 11,\n    'PROPFIND': 12,\n    'PROPPATCH': 13,\n    'SEARCH': 14,\n    'UNLOCK': 15,\n    'BIND': 16,\n    'REBIND': 17,\n    'UNBIND': 18,\n    'ACL': 19,\n    /* subversion */\n    'REPORT': 20,\n    'MKACTIVITY': 21,\n    'CHECKOUT': 22,\n    'MERGE': 23,\n    /* upnp */\n    'M-SEARCH': 24,\n    'NOTIFY': 25,\n    'SUBSCRIBE': 26,\n    'UNSUBSCRIBE': 27,\n    /* RFC-5789 */\n    'PATCH': 28,\n    'PURGE': 29,\n    /* CalDAV */\n    'MKCALENDAR': 30,\n    /* RFC-2068, section 19.6.1.2 */\n    'LINK': 31,\n    'UNLINK': 32,\n    /* icecast */\n    'SOURCE': 33,\n    /* RFC-7540, section 11.6 */\n    'PRI': 34,\n    /* RFC-2326 RTSP */\n    'DESCRIBE': 35,\n    'ANNOUNCE': 36,\n    'SETUP': 37,\n    'PLAY': 38,\n    'PAUSE': 39,\n    'TEARDOWN': 40,\n    'GET_PARAMETER': 41,\n    'SET_PARAMETER': 42,\n    'REDIRECT': 43,\n    'RECORD': 44,\n    /* RAOP */\n    'FLUSH': 45,\n    /* DRAFT https://www.ietf.org/archive/id/draft-ietf-httpbis-safe-method-w-body-02.html */\n    'QUERY': 46,\n};\nexports.STATUSES = {\n    CONTINUE: 100,\n    SWITCHING_PROTOCOLS: 101,\n    PROCESSING: 102,\n    EARLY_HINTS: 103,\n    RESPONSE_IS_STALE: 110, // Unofficial\n    REVALIDATION_FAILED: 111, // Unofficial\n    DISCONNECTED_OPERATION: 112, // Unofficial\n    HEURISTIC_EXPIRATION: 113, // Unofficial\n    MISCELLANEOUS_WARNING: 199, // Unofficial\n    OK: 200,\n    CREATED: 201,\n    ACCEPTED: 202,\n    NON_AUTHORITATIVE_INFORMATION: 203,\n    NO_CONTENT: 204,\n    RESET_CONTENT: 205,\n    PARTIAL_CONTENT: 206,\n    MULTI_STATUS: 207,\n    ALREADY_REPORTED: 208,\n    TRANSFORMATION_APPLIED: 214, // Unofficial\n    IM_USED: 226,\n    MISCELLANEOUS_PERSISTENT_WARNING: 299, // Unofficial\n    MULTIPLE_CHOICES: 300,\n    MOVED_PERMANENTLY: 301,\n    FOUND: 302,\n    SEE_OTHER: 303,\n    NOT_MODIFIED: 304,\n    USE_PROXY: 305,\n    SWITCH_PROXY: 306, // No longer used\n    TEMPORARY_REDIRECT: 307,\n    PERMANENT_REDIRECT: 308,\n    BAD_REQUEST: 400,\n    UNAUTHORIZED: 401,\n    PAYMENT_REQUIRED: 402,\n    FORBIDDEN: 403,\n    NOT_FOUND: 404,\n    METHOD_NOT_ALLOWED: 405,\n    NOT_ACCEPTABLE: 406,\n    PROXY_AUTHENTICATION_REQUIRED: 407,\n    REQUEST_TIMEOUT: 408,\n    CONFLICT: 409,\n    GONE: 410,\n    LENGTH_REQUIRED: 411,\n    PRECONDITION_FAILED: 412,\n    PAYLOAD_TOO_LARGE: 413,\n    URI_TOO_LONG: 414,\n    UNSUPPORTED_MEDIA_TYPE: 415,\n    RANGE_NOT_SATISFIABLE: 416,\n    EXPECTATION_FAILED: 417,\n    IM_A_TEAPOT: 418,\n    PAGE_EXPIRED: 419, // Unofficial\n    ENHANCE_YOUR_CALM: 420, // Unofficial\n    MISDIRECTED_REQUEST: 421,\n    UNPROCESSABLE_ENTITY: 422,\n    LOCKED: 423,\n    FAILED_DEPENDENCY: 424,\n    TOO_EARLY: 425,\n    UPGRADE_REQUIRED: 426,\n    PRECONDITION_REQUIRED: 428,\n    TOO_MANY_REQUESTS: 429,\n    REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL: 430, // Unofficial\n    REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\n    LOGIN_TIMEOUT: 440, // Unofficial\n    NO_RESPONSE: 444, // Unofficial\n    RETRY_WITH: 449, // Unofficial\n    BLOCKED_BY_PARENTAL_CONTROL: 450, // Unofficial\n    UNAVAILABLE_FOR_LEGAL_REASONS: 451,\n    CLIENT_CLOSED_LOAD_BALANCED_REQUEST: 460, // Unofficial\n    INVALID_X_FORWARDED_FOR: 463, // Unofficial\n    REQUEST_HEADER_TOO_LARGE: 494, // Unofficial\n    SSL_CERTIFICATE_ERROR: 495, // Unofficial\n    SSL_CERTIFICATE_REQUIRED: 496, // Unofficial\n    HTTP_REQUEST_SENT_TO_HTTPS_PORT: 497, // Unofficial\n    INVALID_TOKEN: 498, // Unofficial\n    CLIENT_CLOSED_REQUEST: 499, // Unofficial\n    INTERNAL_SERVER_ERROR: 500,\n    NOT_IMPLEMENTED: 501,\n    BAD_GATEWAY: 502,\n    SERVICE_UNAVAILABLE: 503,\n    GATEWAY_TIMEOUT: 504,\n    HTTP_VERSION_NOT_SUPPORTED: 505,\n    VARIANT_ALSO_NEGOTIATES: 506,\n    INSUFFICIENT_STORAGE: 507,\n    LOOP_DETECTED: 508,\n    BANDWIDTH_LIMIT_EXCEEDED: 509,\n    NOT_EXTENDED: 510,\n    NETWORK_AUTHENTICATION_REQUIRED: 511,\n    WEB_SERVER_UNKNOWN_ERROR: 520, // Unofficial\n    WEB_SERVER_IS_DOWN: 521, // Unofficial\n    CONNECTION_TIMEOUT: 522, // Unofficial\n    ORIGIN_IS_UNREACHABLE: 523, // Unofficial\n    TIMEOUT_OCCURED: 524, // Unofficial\n    SSL_HANDSHAKE_FAILED: 525, // Unofficial\n    INVALID_SSL_CERTIFICATE: 526, // Unofficial\n    RAILGUN_ERROR: 527, // Unofficial\n    SITE_IS_OVERLOADED: 529, // Unofficial\n    SITE_IS_FROZEN: 530, // Unofficial\n    IDENTITY_PROVIDER_AUTHENTICATION_ERROR: 561, // Unofficial\n    NETWORK_READ_TIMEOUT: 598, // Unofficial\n    NETWORK_CONNECT_TIMEOUT: 599, // Unofficial\n};\nexports.FINISH = {\n    SAFE: 0,\n    SAFE_WITH_CB: 1,\n    UNSAFE: 2,\n};\nexports.HEADER_STATE = {\n    GENERAL: 0,\n    CONNECTION: 1,\n    CONTENT_LENGTH: 2,\n    TRANSFER_ENCODING: 3,\n    UPGRADE: 4,\n    CONNECTION_KEEP_ALIVE: 5,\n    CONNECTION_CLOSE: 6,\n    CONNECTION_UPGRADE: 7,\n    TRANSFER_ENCODING_CHUNKED: 8,\n};\n// C headers\nexports.METHODS_HTTP = [\n    exports.METHODS.DELETE,\n    exports.METHODS.GET,\n    exports.METHODS.HEAD,\n    exports.METHODS.POST,\n    exports.METHODS.PUT,\n    exports.METHODS.CONNECT,\n    exports.METHODS.OPTIONS,\n    exports.METHODS.TRACE,\n    exports.METHODS.COPY,\n    exports.METHODS.LOCK,\n    exports.METHODS.MKCOL,\n    exports.METHODS.MOVE,\n    exports.METHODS.PROPFIND,\n    exports.METHODS.PROPPATCH,\n    exports.METHODS.SEARCH,\n    exports.METHODS.UNLOCK,\n    exports.METHODS.BIND,\n    exports.METHODS.REBIND,\n    exports.METHODS.UNBIND,\n    exports.METHODS.ACL,\n    exports.METHODS.REPORT,\n    exports.METHODS.MKACTIVITY,\n    exports.METHODS.CHECKOUT,\n    exports.METHODS.MERGE,\n    exports.METHODS['M-SEARCH'],\n    exports.METHODS.NOTIFY,\n    exports.METHODS.SUBSCRIBE,\n    exports.METHODS.UNSUBSCRIBE,\n    exports.METHODS.PATCH,\n    exports.METHODS.PURGE,\n    exports.METHODS.MKCALENDAR,\n    exports.METHODS.LINK,\n    exports.METHODS.UNLINK,\n    exports.METHODS.PRI,\n    // TODO(indutny): should we allow it with HTTP?\n    exports.METHODS.SOURCE,\n    exports.METHODS.QUERY,\n];\nexports.METHODS_ICE = [\n    exports.METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n    exports.METHODS.OPTIONS,\n    exports.METHODS.DESCRIBE,\n    exports.METHODS.ANNOUNCE,\n    exports.METHODS.SETUP,\n    exports.METHODS.PLAY,\n    exports.METHODS.PAUSE,\n    exports.METHODS.TEARDOWN,\n    exports.METHODS.GET_PARAMETER,\n    exports.METHODS.SET_PARAMETER,\n    exports.METHODS.REDIRECT,\n    exports.METHODS.RECORD,\n    exports.METHODS.FLUSH,\n    // For AirPlay\n    exports.METHODS.GET,\n    exports.METHODS.POST,\n];\nexports.METHOD_MAP = (0, utils_1.enumToMap)(exports.METHODS);\nexports.H_METHOD_MAP = Object.fromEntries(Object.entries(exports.METHODS).filter(([k]) => k.startsWith('H')));\nexports.STATUSES_HTTP = [\n    exports.STATUSES.CONTINUE,\n    exports.STATUSES.SWITCHING_PROTOCOLS,\n    exports.STATUSES.PROCESSING,\n    exports.STATUSES.EARLY_HINTS,\n    exports.STATUSES.RESPONSE_IS_STALE,\n    exports.STATUSES.REVALIDATION_FAILED,\n    exports.STATUSES.DISCONNECTED_OPERATION,\n    exports.STATUSES.HEURISTIC_EXPIRATION,\n    exports.STATUSES.MISCELLANEOUS_WARNING,\n    exports.STATUSES.OK,\n    exports.STATUSES.CREATED,\n    exports.STATUSES.ACCEPTED,\n    exports.STATUSES.NON_AUTHORITATIVE_INFORMATION,\n    exports.STATUSES.NO_CONTENT,\n    exports.STATUSES.RESET_CONTENT,\n    exports.STATUSES.PARTIAL_CONTENT,\n    exports.STATUSES.MULTI_STATUS,\n    exports.STATUSES.ALREADY_REPORTED,\n    exports.STATUSES.TRANSFORMATION_APPLIED,\n    exports.STATUSES.IM_USED,\n    exports.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING,\n    exports.STATUSES.MULTIPLE_CHOICES,\n    exports.STATUSES.MOVED_PERMANENTLY,\n    exports.STATUSES.FOUND,\n    exports.STATUSES.SEE_OTHER,\n    exports.STATUSES.NOT_MODIFIED,\n    exports.STATUSES.USE_PROXY,\n    exports.STATUSES.SWITCH_PROXY,\n    exports.STATUSES.TEMPORARY_REDIRECT,\n    exports.STATUSES.PERMANENT_REDIRECT,\n    exports.STATUSES.BAD_REQUEST,\n    exports.STATUSES.UNAUTHORIZED,\n    exports.STATUSES.PAYMENT_REQUIRED,\n    exports.STATUSES.FORBIDDEN,\n    exports.STATUSES.NOT_FOUND,\n    exports.STATUSES.METHOD_NOT_ALLOWED,\n    exports.STATUSES.NOT_ACCEPTABLE,\n    exports.STATUSES.PROXY_AUTHENTICATION_REQUIRED,\n    exports.STATUSES.REQUEST_TIMEOUT,\n    exports.STATUSES.CONFLICT,\n    exports.STATUSES.GONE,\n    exports.STATUSES.LENGTH_REQUIRED,\n    exports.STATUSES.PRECONDITION_FAILED,\n    exports.STATUSES.PAYLOAD_TOO_LARGE,\n    exports.STATUSES.URI_TOO_LONG,\n    exports.STATUSES.UNSUPPORTED_MEDIA_TYPE,\n    exports.STATUSES.RANGE_NOT_SATISFIABLE,\n    exports.STATUSES.EXPECTATION_FAILED,\n    exports.STATUSES.IM_A_TEAPOT,\n    exports.STATUSES.PAGE_EXPIRED,\n    exports.STATUSES.ENHANCE_YOUR_CALM,\n    exports.STATUSES.MISDIRECTED_REQUEST,\n    exports.STATUSES.UNPROCESSABLE_ENTITY,\n    exports.STATUSES.LOCKED,\n    exports.STATUSES.FAILED_DEPENDENCY,\n    exports.STATUSES.TOO_EARLY,\n    exports.STATUSES.UPGRADE_REQUIRED,\n    exports.STATUSES.PRECONDITION_REQUIRED,\n    exports.STATUSES.TOO_MANY_REQUESTS,\n    exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL,\n    exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE,\n    exports.STATUSES.LOGIN_TIMEOUT,\n    exports.STATUSES.NO_RESPONSE,\n    exports.STATUSES.RETRY_WITH,\n    exports.STATUSES.BLOCKED_BY_PARENTAL_CONTROL,\n    exports.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS,\n    exports.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST,\n    exports.STATUSES.INVALID_X_FORWARDED_FOR,\n    exports.STATUSES.REQUEST_HEADER_TOO_LARGE,\n    exports.STATUSES.SSL_CERTIFICATE_ERROR,\n    exports.STATUSES.SSL_CERTIFICATE_REQUIRED,\n    exports.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT,\n    exports.STATUSES.INVALID_TOKEN,\n    exports.STATUSES.CLIENT_CLOSED_REQUEST,\n    exports.STATUSES.INTERNAL_SERVER_ERROR,\n    exports.STATUSES.NOT_IMPLEMENTED,\n    exports.STATUSES.BAD_GATEWAY,\n    exports.STATUSES.SERVICE_UNAVAILABLE,\n    exports.STATUSES.GATEWAY_TIMEOUT,\n    exports.STATUSES.HTTP_VERSION_NOT_SUPPORTED,\n    exports.STATUSES.VARIANT_ALSO_NEGOTIATES,\n    exports.STATUSES.INSUFFICIENT_STORAGE,\n    exports.STATUSES.LOOP_DETECTED,\n    exports.STATUSES.BANDWIDTH_LIMIT_EXCEEDED,\n    exports.STATUSES.NOT_EXTENDED,\n    exports.STATUSES.NETWORK_AUTHENTICATION_REQUIRED,\n    exports.STATUSES.WEB_SERVER_UNKNOWN_ERROR,\n    exports.STATUSES.WEB_SERVER_IS_DOWN,\n    exports.STATUSES.CONNECTION_TIMEOUT,\n    exports.STATUSES.ORIGIN_IS_UNREACHABLE,\n    exports.STATUSES.TIMEOUT_OCCURED,\n    exports.STATUSES.SSL_HANDSHAKE_FAILED,\n    exports.STATUSES.INVALID_SSL_CERTIFICATE,\n    exports.STATUSES.RAILGUN_ERROR,\n    exports.STATUSES.SITE_IS_OVERLOADED,\n    exports.STATUSES.SITE_IS_FROZEN,\n    exports.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR,\n    exports.STATUSES.NETWORK_READ_TIMEOUT,\n    exports.STATUSES.NETWORK_CONNECT_TIMEOUT,\n];\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n    // Upper case\n    exports.ALPHA.push(String.fromCharCode(i));\n    // Lower case\n    exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n    A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n    a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n    .concat(exports.MARK)\n    .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.URL_CHAR = [\n    '!', '\"', '$', '%', '&', '\\'',\n    '(', ')', '*', '+', ',', '-', '.', '/',\n    ':', ';', '<', '=', '>',\n    '@', '[', '\\\\', ']', '^', '_',\n    '`',\n    '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n *        token       = 1*<any CHAR except CTLs or separators>\n *     separators     = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *                    | \",\" | \";\" | \":\" | \"\\\" | <\">\n *                    | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *                    | \"{\" | \"}\" | SP | HT\n */\nexports.TOKEN = [\n    '!', '#', '$', '%', '&', '\\'',\n    '*', '+', '-', '.',\n    '^', '_', '`',\n    '|', '~',\n].concat(exports.ALPHANUM);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n    if (i !== 127) {\n        exports.HEADER_CHARS.push(i);\n    }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.QUOTED_STRING = ['\\t', ' '];\nfor (let i = 0x21; i <= 0xff; i++) {\n    if (i !== 0x22 && i !== 0x5c) { // All characters in ASCII except \\ and \"\n        exports.QUOTED_STRING.push(i);\n    }\n}\nexports.HTAB_SP_VCHAR_OBS_TEXT = ['\\t', ' '];\n// VCHAR: https://tools.ietf.org/html/rfc5234#appendix-B.1\nfor (let i = 0x21; i <= 0x7E; i++) {\n    exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);\n}\n// OBS_TEXT: https://datatracker.ietf.org/doc/html/rfc9110#name-collected-abnf\nfor (let i = 0x80; i <= 0xff; i++) {\n    exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);\n}\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nexports.SPECIAL_HEADERS = {\n    'connection': exports.HEADER_STATE.CONNECTION,\n    'content-length': exports.HEADER_STATE.CONTENT_LENGTH,\n    'proxy-connection': exports.HEADER_STATE.CONNECTION,\n    'transfer-encoding': exports.HEADER_STATE.TRANSFER_ENCODING,\n    'upgrade': exports.HEADER_STATE.UPGRADE,\n};\nexports.default = {\n    ERROR: exports.ERROR,\n    TYPE: exports.TYPE,\n    FLAGS: exports.FLAGS,\n    LENIENT_FLAGS: exports.LENIENT_FLAGS,\n    METHODS: exports.METHODS,\n    STATUSES: exports.STATUSES,\n    FINISH: exports.FINISH,\n    HEADER_STATE: exports.HEADER_STATE,\n    ALPHA: exports.ALPHA,\n    NUM_MAP: exports.NUM_MAP,\n    HEX_MAP: exports.HEX_MAP,\n    NUM: exports.NUM,\n    ALPHANUM: exports.ALPHANUM,\n    MARK: exports.MARK,\n    USERINFO_CHARS: exports.USERINFO_CHARS,\n    URL_CHAR: exports.URL_CHAR,\n    HEX: exports.HEX,\n    TOKEN: exports.TOKEN,\n    HEADER_CHARS: exports.HEADER_CHARS,\n    CONNECTION_TOKEN_CHARS: exports.CONNECTION_TOKEN_CHARS,\n    QUOTED_STRING: exports.QUOTED_STRING,\n    HTAB_SP_VCHAR_OBS_TEXT: exports.HTAB_SP_VCHAR_OBS_TEXT,\n    MAJOR: exports.MAJOR,\n    MINOR: exports.MINOR,\n    SPECIAL_HEADERS: exports.SPECIAL_HEADERS,\n    METHODS_HTTP: exports.METHODS_HTTP,\n    METHODS_ICE: exports.METHODS_ICE,\n    METHODS_RTSP: exports.METHODS_RTSP,\n    METHOD_MAP: exports.METHOD_MAP,\n    H_METHOD_MAP: exports.H_METHOD_MAP,\n    STATUSES_HTTP: exports.STATUSES_HTTP,\n};\n","'use strict'\n\nconst { Buffer } = require('node:buffer')\n\nconst wasmBase64 = 'AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsg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c3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw=='\n\nlet wasmBuffer\n\nObject.defineProperty(module, 'exports', {\n  get: () => {\n    return wasmBuffer\n      ? wasmBuffer\n      : (wasmBuffer = Buffer.from(wasmBase64, 'base64'))\n  }\n})\n","'use strict'\n\nconst { Buffer } = require('node:buffer')\n\nconst wasmBase64 = 'AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEH51ABqLQAARw0yIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyGAgsgA0EANgIAIAZBAWohAUErDDILQcABIQIgASAERg2EAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH21ABqLQAARw0xIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyFAgsgA0EANgIAIAZBAWohAUEsDDELQb8BIQIgASAERg2DAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0wIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyEAgsgA0EANgIAIAZBAWohAUERDDALQb4BIQIgASAERg2CAiADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHy1ABqLQAARw0vIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyDAgsgA0EANgIAIAZBAWohAUEuDC8LIAEgBEYEQEG9ASECDIICCwJAAkACQAJAAkAgAS0AAEHBAGsOFQA0NDQ0NDQ0NDQ0ATQ0AjQ0AzQ0BDQLIAFBAWohAUGbASECDOwBCyABQQFqIQFBnAEhAgzrAQsgAUEBaiEBQZ0BIQIM6gELIAFBAWohAUGiASECDOkBCyABQQFqIQFBpAEhAgzoAQsgASAERgRAQbwBIQIMgQILAkACQCABLQAAQdIAaw4DADABMAsgAUEBaiEBQaMBIQIM6AELIAFBAWohAUEEDC0LQbsBIQIgASAERg3/ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHw1ABqLQAARw0sIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyAAgsgA0EANgIAIAZBAWohAUEdDCwLIAEgBEYEQEG6ASECDP8BCwJAAkAgAS0AAEHJAGsOBwEuLi4uLgAuCyABQQFqIQFBoQEhAgzmAQsgAUEBaiEBQSIMKwsgASAERgRAQbkBIQIM/gELIAEtAABB0ABHDSsgAUEBaiEBQaABIQIM5AELIAEgBEYEQEG4ASECDP0BCwJAAkAgAS0AAEHGAGsOCwAsLCwsLCwsLCwBLAsgAUEBaiEBQZ4BIQIM5AELIAFBAWohAUGfASECDOMBC0G3ASECIAEgBEYN+wEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB7NQAai0AAEcNKCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM/AELIANBADYCACAGQQFqIQFBDQwoC0G2ASECIAEgBEYN+gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBodUAai0AAEcNJyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+wELIANBADYCACAGQQFqIQFBDAwnC0G1ASECIAEgBEYN+QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB6tQAai0AAEcNJiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+gELIANBADYCACAGQQFqIQFBAwwmC0G0ASECIAEgBEYN+AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB6NQAai0AAEcNJSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+QELIANBADYCACAGQQFqIQFBJgwlCyABIARGBEBBswEhAgz4AQsCQAJAIAEtAABB1ABrDgIAAScLIAFBAWohAUGZASECDN8BCyABQQFqIQFBmgEhAgzeAQtBsgEhAiABIARGDfYBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQebUAGotAABHDSMgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPcBCyADQQA2AgAgBkEBaiEBQScMIwtBsQEhAiABIARGDfUBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQeTUAGotAABHDSIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPYBCyADQQA2AgAgBkEBaiEBQRwMIgtBsAEhAiABIARGDfQBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQd7UAGotAABHDSEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPUBCyADQQA2AgAgBkEBaiEBQQYMIQtBrwEhAiABIARGDfMBIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQdnUAGotAABHDSAgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPQBCyADQQA2AgAgBkEBaiEBQRkMIAsgASAERgRAQa4BIQIM8wELAkACQAJAAkAgAS0AAEEtaw4jACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkASQkJCQkAiQkJAMkCyABQQFqIQFBjgEhAgzcAQsgAUEBaiEBQY8BIQIM2wELIAFBAWohAUGUASECDNoBCyABQQFqIQFBlQEhAgzZAQtBrQEhAiABIARGDfEBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQdfUAGotAABHDR4gAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPIBCyADQQA2AgAgBkEBaiEBQQsMHgsgASAERgRAQawBIQIM8QELAkACQCABLQAAQcEAaw4DACABIAsgAUEBaiEBQZABIQIM2AELIAFBAWohAUGTASECDNcBCyABIARGBEBBqwEhAgzwAQsCQAJAIAEtAABBwQBrDg8AHx8fHx8fHx8fHx8fHwEfCyABQQFqIQFBkQEhAgzXAQsgAUEBaiEBQZIBIQIM1gELIAEgBEYEQEGqASECDO8BCyABLQAAQcwARw0cIAFBAWohAUEKDBsLQakBIQIgASAERg3tASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHR1ABqLQAARw0aIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzuAQsgA0EANgIAIAZBAWohAUEeDBoLQagBIQIgASAERg3sASADKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEHK1ABqLQAARw0ZIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAztAQsgA0EANgIAIAZBAWohAUEVDBkLQacBIQIgASAERg3rASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHH1ABqLQAARw0YIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw=='\n\nlet wasmBuffer\n\nObject.defineProperty(module, 'exports', {\n  get: () => {\n    return wasmBuffer\n      ? wasmBuffer\n      : (wasmBuffer = Buffer.from(wasmBase64, 'base64'))\n  }\n})\n","'use strict'\n\nconst corsSafeListedMethods = /** @type {const} */ (['GET', 'HEAD', 'POST'])\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = /** @type {const} */ ([101, 204, 205, 304])\n\nconst redirectStatus = /** @type {const} */ ([301, 302, 303, 307, 308])\nconst redirectStatusSet = new Set(redirectStatus)\n\n/**\n * @see https://fetch.spec.whatwg.org/#block-bad-port\n */\nconst badPorts = /** @type {const} */ ([\n  '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n  '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n  '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n  '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n  '2049', '3659', '4045', '4190', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6679',\n  '6697', '10080'\n])\nconst badPortsSet = new Set(badPorts)\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header\n */\nconst referrerPolicyTokens = /** @type {const} */ ([\n  'no-referrer',\n  'no-referrer-when-downgrade',\n  'same-origin',\n  'origin',\n  'strict-origin',\n  'origin-when-cross-origin',\n  'strict-origin-when-cross-origin',\n  'unsafe-url'\n])\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\n */\nconst referrerPolicy = /** @type {const} */ ([\n  '',\n  ...referrerPolicyTokens\n])\nconst referrerPolicyTokensSet = new Set(referrerPolicyTokens)\n\nconst requestRedirect = /** @type {const} */ (['follow', 'manual', 'error'])\n\nconst safeMethods = /** @type {const} */ (['GET', 'HEAD', 'OPTIONS', 'TRACE'])\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = /** @type {const} */ (['navigate', 'same-origin', 'no-cors', 'cors'])\n\nconst requestCredentials = /** @type {const} */ (['omit', 'same-origin', 'include'])\n\nconst requestCache = /** @type {const} */ ([\n  'default',\n  'no-store',\n  'reload',\n  'no-cache',\n  'force-cache',\n  'only-if-cached'\n])\n\n/**\n * @see https://fetch.spec.whatwg.org/#request-body-header-name\n */\nconst requestBodyHeader = /** @type {const} */ ([\n  'content-encoding',\n  'content-language',\n  'content-location',\n  'content-type',\n  // See https://github.com/nodejs/undici/issues/2021\n  // 'Content-Length' is a forbidden header name, which is typically\n  // removed in the Headers implementation. However, undici doesn't\n  // filter out headers, so we add it here.\n  'content-length'\n])\n\n/**\n * @see https://fetch.spec.whatwg.org/#enumdef-requestduplex\n */\nconst requestDuplex = /** @type {const} */ ([\n  'half'\n])\n\n/**\n * @see http://fetch.spec.whatwg.org/#forbidden-method\n */\nconst forbiddenMethods = /** @type {const} */ (['CONNECT', 'TRACE', 'TRACK'])\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = /** @type {const} */ ([\n  'audio',\n  'audioworklet',\n  'font',\n  'image',\n  'manifest',\n  'paintworklet',\n  'script',\n  'style',\n  'track',\n  'video',\n  'xslt',\n  ''\n])\nconst subresourceSet = new Set(subresource)\n\nmodule.exports = {\n  subresource,\n  forbiddenMethods,\n  requestBodyHeader,\n  referrerPolicy,\n  requestRedirect,\n  requestMode,\n  requestCredentials,\n  requestCache,\n  redirectStatus,\n  corsSafeListedMethods,\n  nullBodyStatus,\n  safeMethods,\n  badPorts,\n  requestDuplex,\n  subresourceSet,\n  badPortsSet,\n  redirectStatusSet,\n  corsSafeListedMethodsSet,\n  safeMethodsSet,\n  forbiddenMethodsSet,\n  referrerPolicyTokens: referrerPolicyTokensSet\n}\n","'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n  return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n  if (newOrigin === undefined) {\n    Object.defineProperty(globalThis, globalOrigin, {\n      value: undefined,\n      writable: true,\n      enumerable: false,\n      configurable: false\n    })\n\n    return\n  }\n\n  const parsedURL = new URL(newOrigin)\n\n  if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n    throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n  }\n\n  Object.defineProperty(globalThis, globalOrigin, {\n    value: parsedURL,\n    writable: true,\n    enumerable: false,\n    configurable: false\n  })\n}\n\nmodule.exports = {\n  getGlobalOrigin,\n  setGlobalOrigin\n}\n","'use strict'\n\nconst textDecoder = new TextDecoder()\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Uint8Array} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n  if (buffer.length === 0) {\n    return ''\n  }\n\n  // 1. Let buffer be the result of peeking three bytes from\n  //    ioQueue, converted to a byte sequence.\n\n  // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n  //    bytes from ioQueue. (Do nothing with those bytes.)\n  if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n    buffer = buffer.subarray(3)\n  }\n\n  // 3. Process a queue with an instance of UTF-8’s\n  //    decoder, ioQueue, output, and \"replacement\".\n  const output = textDecoder.decode(buffer)\n\n  // 4. Return output.\n  return output\n}\n\nmodule.exports = {\n  utf8DecodeBytes\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst { utf8DecodeBytes } = require('../../encoding')\n\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n * @returns {string}\n *\n * @see https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n  // 1. Let result be the empty string.\n  let result = ''\n\n  // 2. While position doesn’t point past the end of input and the\n  // code point at position within input meets the condition condition:\n  while (position.position < input.length && condition(input[position.position])) {\n    // 1. Append that code point to the end of result.\n    result += input[position.position]\n\n    // 2. Advance position by 1.\n    position.position++\n  }\n\n  // 3. Return result.\n  return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n * @returns {string}\n *\n * @see https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n  const idx = input.indexOf(char, position.position)\n  const start = position.position\n\n  if (idx === -1) {\n    position.position = input.length\n    return input.slice(start)\n  }\n\n  position.position = idx\n  return input.slice(start, position.position)\n}\n\nconst ASCII_WHITESPACE_REPLACE_REGEX = /[\\u0009\\u000A\\u000C\\u000D\\u0020]/g // eslint-disable-line no-control-regex\n\n/**\n * @param {string} data\n * @returns {Uint8Array | 'failure'}\n *\n * @see https://infra.spec.whatwg.org/#forgiving-base64-decode\n */\nfunction forgivingBase64 (data) {\n  // 1. Remove all ASCII whitespace from data.\n  data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, '')\n\n  let dataLength = data.length\n  // 2. If data’s code point length divides by 4 leaving\n  // no remainder, then:\n  if (dataLength % 4 === 0) {\n    // 1. If data ends with one or two U+003D (=) code points,\n    // then remove them from data.\n    if (data.charCodeAt(dataLength - 1) === 0x003D) {\n      --dataLength\n      if (data.charCodeAt(dataLength - 1) === 0x003D) {\n        --dataLength\n      }\n    }\n  }\n\n  // 3. If data’s code point length divides by 4 leaving\n  // a remainder of 1, then return failure.\n  if (dataLength % 4 === 1) {\n    return 'failure'\n  }\n\n  // 4. If data contains a code point that is not one of\n  //  U+002B (+)\n  //  U+002F (/)\n  //  ASCII alphanumeric\n  // then return failure.\n  if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) {\n    return 'failure'\n  }\n\n  const buffer = Buffer.from(data, 'base64')\n  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\n/**\n * @param {number} char\n * @returns {boolean}\n *\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n */\nfunction isASCIIWhitespace (char) {\n  return (\n    char === 0x09 || // \\t\n    char === 0x0a || // \\n\n    char === 0x0c || // \\f\n    char === 0x0d || // \\r\n    char === 0x20    // space\n  )\n}\n\n/**\n * @param {Uint8Array} input\n * @returns {string}\n *\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n */\nfunction isomorphicDecode (input) {\n  // 1. To isomorphic decode a byte sequence input, return a string whose code point\n  //    length is equal to input’s length and whose code points have the same values\n  //    as the values of input’s bytes, in the same order.\n  const length = input.length\n  if ((2 << 15) - 1 > length) {\n    return String.fromCharCode.apply(null, input)\n  }\n  let result = ''\n  let i = 0\n  let addition = (2 << 15) - 1\n  while (i < length) {\n    if (i + addition > length) {\n      addition = length - i\n    }\n    result += String.fromCharCode.apply(null, input.subarray(i, i += addition))\n  }\n  return result\n}\n\nconst invalidIsomorphicEncodeValueRegex = /[^\\x00-\\xFF]/ // eslint-disable-line no-control-regex\n\n/**\n * @param {string} input\n * @returns {string}\n *\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n */\nfunction isomorphicEncode (input) {\n  // 1. Assert: input contains no code points greater than U+00FF.\n  assert(!invalidIsomorphicEncodeValueRegex.test(input))\n\n  // 2. Return a byte sequence whose length is equal to input’s code\n  //    point length and whose bytes have the same values as the\n  //    values of input’s code points, in the same order\n  return input\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n  return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @param {string} str\n * @param {boolean} [leading=true]\n * @param {boolean} [trailing=true]\n * @returns {string}\n *\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n  return removeChars(str, leading, trailing, isASCIIWhitespace)\n}\n\n/**\n * @param {string} str\n * @param {boolean} leading\n * @param {boolean} trailing\n * @param {(charCode: number) => boolean} predicate\n * @returns {string}\n */\nfunction removeChars (str, leading, trailing, predicate) {\n  let lead = 0\n  let trail = str.length - 1\n\n  if (leading) {\n    while (lead < str.length && predicate(str.charCodeAt(lead))) lead++\n  }\n\n  if (trailing) {\n    while (trail > 0 && predicate(str.charCodeAt(trail))) trail--\n  }\n\n  return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1)\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n  // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).\n  const result = JSON.stringify(value)\n\n  // 2. If result is undefined, then throw a TypeError.\n  if (result === undefined) {\n    throw new TypeError('Value is not JSON serializable')\n  }\n\n  // 3. Assert: result is a string.\n  assert(typeof result === 'string')\n\n  // 4. Return result.\n  return result\n}\n\nmodule.exports = {\n  collectASequenceOfCodePoints,\n  collectASequenceOfCodePointsFast,\n  forgivingBase64,\n  isASCIIWhitespace,\n  isomorphicDecode,\n  isomorphicEncode,\n  parseJSONFromBytes,\n  removeASCIIWhitespace,\n  removeChars,\n  serializeJavascriptValueToJSONString\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst { forgivingBase64, collectASequenceOfCodePoints, collectASequenceOfCodePointsFast, isomorphicDecode, removeASCIIWhitespace, removeChars } = require('../infra')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u\nconst HTTP_WHITESPACE_REGEX = /[\\u000A\\u000D\\u0009\\u0020]/u // eslint-disable-line\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /^[\\u0009\\u0020-\\u007E\\u0080-\\u00FF]+$/u // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n  // 1. Assert: dataURL’s scheme is \"data\".\n  assert(dataURL.protocol === 'data:')\n\n  // 2. Let input be the result of running the URL\n  // serializer on dataURL with exclude fragment\n  // set to true.\n  let input = URLSerializer(dataURL, true)\n\n  // 3. Remove the leading \"data:\" string from input.\n  input = input.slice(5)\n\n  // 4. Let position point at the start of input.\n  const position = { position: 0 }\n\n  // 5. Let mimeType be the result of collecting a\n  // sequence of code points that are not equal\n  // to U+002C (,), given position.\n  let mimeType = collectASequenceOfCodePointsFast(\n    ',',\n    input,\n    position\n  )\n\n  // 6. Strip leading and trailing ASCII whitespace\n  // from mimeType.\n  // Undici implementation note: we need to store the\n  // length because if the mimetype has spaces removed,\n  // the wrong amount will be sliced from the input in\n  // step #9\n  const mimeTypeLength = mimeType.length\n  mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n  // 7. If position is past the end of input, then\n  // return failure\n  if (position.position >= input.length) {\n    return 'failure'\n  }\n\n  // 8. Advance position by 1.\n  position.position++\n\n  // 9. Let encodedBody be the remainder of input.\n  const encodedBody = input.slice(mimeTypeLength + 1)\n\n  // 10. Let body be the percent-decoding of encodedBody.\n  let body = stringPercentDecode(encodedBody)\n\n  // 11. If mimeType ends with U+003B (;), followed by\n  // zero or more U+0020 SPACE, followed by an ASCII\n  // case-insensitive match for \"base64\", then:\n  if (/;(?:\\u0020*)base64$/ui.test(mimeType)) {\n    // 1. Let stringBody be the isomorphic decode of body.\n    const stringBody = isomorphicDecode(body)\n\n    // 2. Set body to the forgiving-base64 decode of\n    // stringBody.\n    body = forgivingBase64(stringBody)\n\n    // 3. If body is failure, then return failure.\n    if (body === 'failure') {\n      return 'failure'\n    }\n\n    // 4. Remove the last 6 code points from mimeType.\n    mimeType = mimeType.slice(0, -6)\n\n    // 5. Remove trailing U+0020 SPACE code points from mimeType,\n    // if any.\n    mimeType = mimeType.replace(/(\\u0020+)$/u, '')\n\n    // 6. Remove the last U+003B (;) code point from mimeType.\n    mimeType = mimeType.slice(0, -1)\n  }\n\n  // 12. If mimeType starts with U+003B (;), then prepend\n  // \"text/plain\" to mimeType.\n  if (mimeType.startsWith(';')) {\n    mimeType = 'text/plain' + mimeType\n  }\n\n  // 13. Let mimeTypeRecord be the result of parsing\n  // mimeType.\n  let mimeTypeRecord = parseMIMEType(mimeType)\n\n  // 14. If mimeTypeRecord is failure, then set\n  // mimeTypeRecord to text/plain;charset=US-ASCII.\n  if (mimeTypeRecord === 'failure') {\n    mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n  }\n\n  // 15. Return a new data: URL struct whose MIME\n  // type is mimeTypeRecord and body is body.\n  // https://fetch.spec.whatwg.org/#data-url-struct\n  return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n  if (!excludeFragment) {\n    return url.href\n  }\n\n  const href = url.href\n  const hashLength = url.hash.length\n\n  const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n\n  if (!hashLength && href.endsWith('#')) {\n    return serialized.slice(0, -1)\n  }\n\n  return serialized\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n  // 1. Let bytes be the UTF-8 encoding of input.\n  const bytes = encoder.encode(input)\n\n  // 2. Return the percent-decoding of bytes.\n  return percentDecode(bytes)\n}\n\n/**\n * @param {number} byte\n */\nfunction isHexCharByte (byte) {\n  // 0-9 A-F a-f\n  return (byte >= 0x30 && byte <= 0x39) || (byte >= 0x41 && byte <= 0x46) || (byte >= 0x61 && byte <= 0x66)\n}\n\n/**\n * @param {number} byte\n */\nfunction hexByteToNumber (byte) {\n  return (\n    // 0-9\n    byte >= 0x30 && byte <= 0x39\n      ? (byte - 48)\n    // Convert to uppercase\n    // ((byte & 0xDF) - 65) + 10\n      : ((byte & 0xDF) - 55)\n  )\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n  const length = input.length\n  // 1. Let output be an empty byte sequence.\n  /** @type {Uint8Array} */\n  const output = new Uint8Array(length)\n  let j = 0\n  let i = 0\n  // 2. For each byte byte in input:\n  while (i < length) {\n    const byte = input[i]\n\n    // 1. If byte is not 0x25 (%), then append byte to output.\n    if (byte !== 0x25) {\n      output[j++] = byte\n\n    // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n    // after byte in input are not in the ranges\n    // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n    // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n    // to output.\n    } else if (\n      byte === 0x25 &&\n      !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2]))\n    ) {\n      output[j++] = 0x25\n\n    // 3. Otherwise:\n    } else {\n      // 1. Let bytePoint be the two bytes after byte in input,\n      // decoded, and then interpreted as hexadecimal number.\n      // 2. Append a byte whose value is bytePoint to output.\n      output[j++] = (hexByteToNumber(input[i + 1]) << 4) | hexByteToNumber(input[i + 2])\n\n      // 3. Skip the next two bytes in input.\n      i += 2\n    }\n    ++i\n  }\n\n  // 3. Return output.\n  return length === j ? output : output.subarray(0, j)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n  // 1. Remove any leading and trailing HTTP whitespace\n  // from input.\n  input = removeHTTPWhitespace(input, true, true)\n\n  // 2. Let position be a position variable for input,\n  // initially pointing at the start of input.\n  const position = { position: 0 }\n\n  // 3. Let type be the result of collecting a sequence\n  // of code points that are not U+002F (/) from\n  // input, given position.\n  const type = collectASequenceOfCodePointsFast(\n    '/',\n    input,\n    position\n  )\n\n  // 4. If type is the empty string or does not solely\n  // contain HTTP token code points, then return failure.\n  // https://mimesniff.spec.whatwg.org/#http-token-code-point\n  if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n    return 'failure'\n  }\n\n  // 5. If position is past the end of input, then return\n  // failure\n  if (position.position >= input.length) {\n    return 'failure'\n  }\n\n  // 6. Advance position by 1. (This skips past U+002F (/).)\n  position.position++\n\n  // 7. Let subtype be the result of collecting a sequence of\n  // code points that are not U+003B (;) from input, given\n  // position.\n  let subtype = collectASequenceOfCodePointsFast(\n    ';',\n    input,\n    position\n  )\n\n  // 8. Remove any trailing HTTP whitespace from subtype.\n  subtype = removeHTTPWhitespace(subtype, false, true)\n\n  // 9. If subtype is the empty string or does not solely\n  // contain HTTP token code points, then return failure.\n  if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n    return 'failure'\n  }\n\n  const typeLowercase = type.toLowerCase()\n  const subtypeLowercase = subtype.toLowerCase()\n\n  // 10. Let mimeType be a new MIME type record whose type\n  // is type, in ASCII lowercase, and subtype is subtype,\n  // in ASCII lowercase.\n  // https://mimesniff.spec.whatwg.org/#mime-type\n  const mimeType = {\n    type: typeLowercase,\n    subtype: subtypeLowercase,\n    /** @type {Map<string, string>} */\n    parameters: new Map(),\n    // https://mimesniff.spec.whatwg.org/#mime-type-essence\n    essence: `${typeLowercase}/${subtypeLowercase}`\n  }\n\n  // 11. While position is not past the end of input:\n  while (position.position < input.length) {\n    // 1. Advance position by 1. (This skips past U+003B (;).)\n    position.position++\n\n    // 2. Collect a sequence of code points that are HTTP\n    // whitespace from input given position.\n    collectASequenceOfCodePoints(\n      // https://fetch.spec.whatwg.org/#http-whitespace\n      char => HTTP_WHITESPACE_REGEX.test(char),\n      input,\n      position\n    )\n\n    // 3. Let parameterName be the result of collecting a\n    // sequence of code points that are not U+003B (;)\n    // or U+003D (=) from input, given position.\n    let parameterName = collectASequenceOfCodePoints(\n      (char) => char !== ';' && char !== '=',\n      input,\n      position\n    )\n\n    // 4. Set parameterName to parameterName, in ASCII\n    // lowercase.\n    parameterName = parameterName.toLowerCase()\n\n    // 5. If position is not past the end of input, then:\n    if (position.position < input.length) {\n      // 1. If the code point at position within input is\n      // U+003B (;), then continue.\n      if (input[position.position] === ';') {\n        continue\n      }\n\n      // 2. Advance position by 1. (This skips past U+003D (=).)\n      position.position++\n    }\n\n    // 6. If position is past the end of input, then break.\n    if (position.position >= input.length) {\n      break\n    }\n\n    // 7. Let parameterValue be null.\n    let parameterValue = null\n\n    // 8. If the code point at position within input is\n    // U+0022 (\"), then:\n    if (input[position.position] === '\"') {\n      // 1. Set parameterValue to the result of collecting\n      // an HTTP quoted string from input, given position\n      // and the extract-value flag.\n      parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n      // 2. Collect a sequence of code points that are not\n      // U+003B (;) from input, given position.\n      collectASequenceOfCodePointsFast(\n        ';',\n        input,\n        position\n      )\n\n    // 9. Otherwise:\n    } else {\n      // 1. Set parameterValue to the result of collecting\n      // a sequence of code points that are not U+003B (;)\n      // from input, given position.\n      parameterValue = collectASequenceOfCodePointsFast(\n        ';',\n        input,\n        position\n      )\n\n      // 2. Remove any trailing HTTP whitespace from parameterValue.\n      parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n      // 3. If parameterValue is the empty string, then continue.\n      if (parameterValue.length === 0) {\n        continue\n      }\n    }\n\n    // 10. If all of the following are true\n    // - parameterName is not the empty string\n    // - parameterName solely contains HTTP token code points\n    // - parameterValue solely contains HTTP quoted-string token code points\n    // - mimeType’s parameters[parameterName] does not exist\n    // then set mimeType’s parameters[parameterName] to parameterValue.\n    if (\n      parameterName.length !== 0 &&\n      HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n      (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n      !mimeType.parameters.has(parameterName)\n    ) {\n      mimeType.parameters.set(parameterName, parameterValue)\n    }\n  }\n\n  // 12. Return mimeType.\n  return mimeType\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean} [extractValue=false]\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue = false) {\n  // 1. Let positionStart be position.\n  const positionStart = position.position\n\n  // 2. Let value be the empty string.\n  let value = ''\n\n  // 3. Assert: the code point at position within input\n  // is U+0022 (\").\n  assert(input[position.position] === '\"')\n\n  // 4. Advance position by 1.\n  position.position++\n\n  // 5. While true:\n  while (true) {\n    // 1. Append the result of collecting a sequence of code points\n    // that are not U+0022 (\") or U+005C (\\) from input, given\n    // position, to value.\n    value += collectASequenceOfCodePoints(\n      (char) => char !== '\"' && char !== '\\\\',\n      input,\n      position\n    )\n\n    // 2. If position is past the end of input, then break.\n    if (position.position >= input.length) {\n      break\n    }\n\n    // 3. Let quoteOrBackslash be the code point at position within\n    // input.\n    const quoteOrBackslash = input[position.position]\n\n    // 4. Advance position by 1.\n    position.position++\n\n    // 5. If quoteOrBackslash is U+005C (\\), then:\n    if (quoteOrBackslash === '\\\\') {\n      // 1. If position is past the end of input, then append\n      // U+005C (\\) to value and break.\n      if (position.position >= input.length) {\n        value += '\\\\'\n        break\n      }\n\n      // 2. Append the code point at position within input to value.\n      value += input[position.position]\n\n      // 3. Advance position by 1.\n      position.position++\n\n    // 6. Otherwise:\n    } else {\n      // 1. Assert: quoteOrBackslash is U+0022 (\").\n      assert(quoteOrBackslash === '\"')\n\n      // 2. Break.\n      break\n    }\n  }\n\n  // 6. If the extract-value flag is set, then return value.\n  if (extractValue) {\n    return value\n  }\n\n  // 7. Return the code points from positionStart to position,\n  // inclusive, within input.\n  return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n  assert(mimeType !== 'failure')\n  const { parameters, essence } = mimeType\n\n  // 1. Let serialization be the concatenation of mimeType’s\n  //    type, U+002F (/), and mimeType’s subtype.\n  let serialization = essence\n\n  // 2. For each name → value of mimeType’s parameters:\n  for (let [name, value] of parameters.entries()) {\n    // 1. Append U+003B (;) to serialization.\n    serialization += ';'\n\n    // 2. Append name to serialization.\n    serialization += name\n\n    // 3. Append U+003D (=) to serialization.\n    serialization += '='\n\n    // 4. If value does not solely contain HTTP token code\n    //    points or value is the empty string, then:\n    if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n      // 1. Precede each occurrence of U+0022 (\") or\n      //    U+005C (\\) in value with U+005C (\\).\n      value = value.replace(/[\\\\\"]/ug, '\\\\$&')\n\n      // 2. Prepend U+0022 (\") to value.\n      value = '\"' + value\n\n      // 3. Append U+0022 (\") to value.\n      value += '\"'\n    }\n\n    // 5. Append value to serialization.\n    serialization += value\n  }\n\n  // 3. Return serialization.\n  return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {number} char\n */\nfunction isHTTPWhiteSpace (char) {\n  // \"\\r\\n\\t \"\n  return char === 0x00d || char === 0x00a || char === 0x009 || char === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n * @param {boolean} [leading=true]\n * @param {boolean} [trailing=true]\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n  return removeChars(str, leading, trailing, isHTTPWhiteSpace)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#minimize-a-supported-mime-type\n * @param {Exclude<ReturnType<typeof parseMIMEType>, 'failure'>} mimeType\n */\nfunction minimizeSupportedMimeType (mimeType) {\n  switch (mimeType.essence) {\n    case 'application/ecmascript':\n    case 'application/javascript':\n    case 'application/x-ecmascript':\n    case 'application/x-javascript':\n    case 'text/ecmascript':\n    case 'text/javascript':\n    case 'text/javascript1.0':\n    case 'text/javascript1.1':\n    case 'text/javascript1.2':\n    case 'text/javascript1.3':\n    case 'text/javascript1.4':\n    case 'text/javascript1.5':\n    case 'text/jscript':\n    case 'text/livescript':\n    case 'text/x-ecmascript':\n    case 'text/x-javascript':\n      // 1. If mimeType is a JavaScript MIME type, then return \"text/javascript\".\n      return 'text/javascript'\n    case 'application/json':\n    case 'text/json':\n      // 2. If mimeType is a JSON MIME type, then return \"application/json\".\n      return 'application/json'\n    case 'image/svg+xml':\n      // 3. If mimeType’s essence is \"image/svg+xml\", then return \"image/svg+xml\".\n      return 'image/svg+xml'\n    case 'text/xml':\n    case 'application/xml':\n      // 4. If mimeType is an XML MIME type, then return \"application/xml\".\n      return 'application/xml'\n  }\n\n  // 2. If mimeType is a JSON MIME type, then return \"application/json\".\n  if (mimeType.subtype.endsWith('+json')) {\n    return 'application/json'\n  }\n\n  // 4. If mimeType is an XML MIME type, then return \"application/xml\".\n  if (mimeType.subtype.endsWith('+xml')) {\n    return 'application/xml'\n  }\n\n  // 5. If mimeType is supported by the user agent, then return mimeType’s essence.\n  // Technically, node doesn't support any mimetypes.\n\n  // 6. Return the empty string.\n  return ''\n}\n\nmodule.exports = {\n  dataURLProcessor,\n  URLSerializer,\n  stringPercentDecode,\n  parseMIMEType,\n  collectAnHTTPQuotedString,\n  serializeAMimeType,\n  removeHTTPWhitespace,\n  minimizeSupportedMimeType,\n  HTTP_TOKEN_CODEPOINTS\n}\n","'use strict'\n\n/** @typedef {`node:${string}`} NodeModuleName */\n\n/** @type {Record<NodeModuleName, () => any>} */\nconst lazyLoaders = {\n  __proto__: null,\n  'node:crypto': () => require('node:crypto'),\n  'node:sqlite': () => require('node:sqlite'),\n  'node:worker_threads': () => require('node:worker_threads'),\n  'node:zlib': () => require('node:zlib')\n}\n\n/**\n * @param {NodeModuleName} moduleName\n * @returns {boolean}\n */\nfunction detectRuntimeFeatureByNodeModule (moduleName) {\n  try {\n    lazyLoaders[moduleName]()\n    return true\n  } catch (err) {\n    if (err.code !== 'ERR_UNKNOWN_BUILTIN_MODULE' && err.code !== 'ERR_NO_CRYPTO') {\n      throw err\n    }\n    return false\n  }\n}\n\n/**\n * @param {NodeModuleName} moduleName\n * @param {string} property\n * @returns {boolean}\n */\nfunction detectRuntimeFeatureByExportedProperty (moduleName, property) {\n  const module = lazyLoaders[moduleName]()\n  return typeof module[property] !== 'undefined'\n}\n\nconst runtimeFeaturesByExportedProperty = /** @type {const} */ (['markAsUncloneable', 'zstd'])\n\n/** @type {Record<RuntimeFeatureByExportedProperty, [NodeModuleName, string]>} */\nconst exportedPropertyLookup = {\n  markAsUncloneable: ['node:worker_threads', 'markAsUncloneable'],\n  zstd: ['node:zlib', 'createZstdDecompress']\n}\n\n/** @typedef {typeof runtimeFeaturesByExportedProperty[number]} RuntimeFeatureByExportedProperty */\n\nconst runtimeFeaturesAsNodeModule = /** @type {const} */ (['crypto', 'sqlite'])\n/** @typedef {typeof runtimeFeaturesAsNodeModule[number]} RuntimeFeatureByNodeModule */\n\nconst features = /** @type {const} */ ([\n  ...runtimeFeaturesAsNodeModule,\n  ...runtimeFeaturesByExportedProperty\n])\n\n/** @typedef {typeof features[number]} Feature */\n\n/**\n * @param {Feature} feature\n * @returns {boolean}\n */\nfunction detectRuntimeFeature (feature) {\n  if (runtimeFeaturesAsNodeModule.includes(/** @type {RuntimeFeatureByNodeModule} */ (feature))) {\n    return detectRuntimeFeatureByNodeModule(`node:${feature}`)\n  } else if (runtimeFeaturesByExportedProperty.includes(/** @type {RuntimeFeatureByExportedProperty} */ (feature))) {\n    const [moduleName, property] = exportedPropertyLookup[feature]\n    return detectRuntimeFeatureByExportedProperty(moduleName, property)\n  }\n  throw new TypeError(`unknown feature: ${feature}`)\n}\n\n/**\n * @class\n * @name RuntimeFeatures\n */\nclass RuntimeFeatures {\n  /** @type {Map<Feature, boolean>} */\n  #map = new Map()\n\n  /**\n   * Clears all cached feature detections.\n   */\n  clear () {\n    this.#map.clear()\n  }\n\n  /**\n   * @param {Feature} feature\n   * @returns {boolean}\n   */\n  has (feature) {\n    return (\n      this.#map.get(feature) ?? this.#detectRuntimeFeature(feature)\n    )\n  }\n\n  /**\n   * @param {Feature} feature\n   * @param {boolean} value\n   */\n  set (feature, value) {\n    if (features.includes(feature) === false) {\n      throw new TypeError(`unknown feature: ${feature}`)\n    }\n    this.#map.set(feature, value)\n  }\n\n  /**\n   * @param {Feature} feature\n   * @returns {boolean}\n   */\n  #detectRuntimeFeature (feature) {\n    const result = detectRuntimeFeature(feature)\n    this.#map.set(feature, result)\n    return result\n  }\n}\n\nconst instance = new RuntimeFeatures()\n\nmodule.exports.runtimeFeatures = instance\nmodule.exports.default = instance\n","'use strict'\n\nconst assert = require('node:assert')\nconst { types, inspect } = require('node:util')\nconst { runtimeFeatures } = require('../../util/runtime-features')\n\nconst UNDEFINED = 1\nconst BOOLEAN = 2\nconst STRING = 3\nconst SYMBOL = 4\nconst NUMBER = 5\nconst BIGINT = 6\nconst NULL = 7\nconst OBJECT = 8 // function and object\n\nconst FunctionPrototypeSymbolHasInstance = Function.call.bind(Function.prototype[Symbol.hasInstance])\n\n/** @type {import('../../../types/webidl').Webidl} */\nconst webidl = {\n  converters: {},\n  util: {},\n  errors: {},\n  is: {}\n}\n\n/**\n * @description Instantiate an error.\n *\n * @param {Object} opts\n * @param {string} opts.header\n * @param {string} opts.message\n * @returns {TypeError}\n */\nwebidl.errors.exception = function (message) {\n  return new TypeError(`${message.header}: ${message.message}`)\n}\n\n/**\n * @description Instantiate an error when conversion from one type to another has failed.\n *\n * @param {Object} opts\n * @param {string} opts.prefix\n * @param {string} opts.argument\n * @param {string[]} opts.types\n * @returns {TypeError}\n */\nwebidl.errors.conversionFailed = function (opts) {\n  const plural = opts.types.length === 1 ? '' : ' one of'\n  const message =\n    `${opts.argument} could not be converted to` +\n    `${plural}: ${opts.types.join(', ')}.`\n\n  return webidl.errors.exception({\n    header: opts.prefix,\n    message\n  })\n}\n\n/**\n * @description Instantiate an error when an invalid argument is provided\n *\n * @param {Object} context\n * @param {string} context.prefix\n * @param {string} context.value\n * @param {string} context.type\n * @returns {TypeError}\n */\nwebidl.errors.invalidArgument = function (context) {\n  return webidl.errors.exception({\n    header: context.prefix,\n    message: `\"${context.value}\" is an invalid ${context.type}.`\n  })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I) {\n  if (!FunctionPrototypeSymbolHasInstance(I, V)) {\n    const err = new TypeError('Illegal invocation')\n    err.code = 'ERR_INVALID_THIS' // node compat.\n    throw err\n  }\n}\n\nwebidl.brandCheckMultiple = function (List) {\n  const prototypes = List.map((c) => webidl.util.MakeTypeAssertion(c))\n\n  return (V) => {\n    if (prototypes.every(typeCheck => !typeCheck(V))) {\n      const err = new TypeError('Illegal invocation')\n      err.code = 'ERR_INVALID_THIS' // node compat.\n      throw err\n    }\n  }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n  if (length < min) {\n    throw webidl.errors.exception({\n      message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n               `but${length ? ' only' : ''} ${length} found.`,\n      header: ctx\n    })\n  }\n}\n\nwebidl.illegalConstructor = function () {\n  throw webidl.errors.exception({\n    header: 'TypeError',\n    message: 'Illegal constructor'\n  })\n}\n\nwebidl.util.MakeTypeAssertion = function (I) {\n  return (O) => FunctionPrototypeSymbolHasInstance(I, O)\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n  switch (typeof V) {\n    case 'undefined': return UNDEFINED\n    case 'boolean': return BOOLEAN\n    case 'string': return STRING\n    case 'symbol': return SYMBOL\n    case 'number': return NUMBER\n    case 'bigint': return BIGINT\n    case 'function':\n    case 'object': {\n      if (V === null) {\n        return NULL\n      }\n\n      return OBJECT\n    }\n  }\n}\n\nwebidl.util.Types = {\n  UNDEFINED,\n  BOOLEAN,\n  STRING,\n  SYMBOL,\n  NUMBER,\n  BIGINT,\n  NULL,\n  OBJECT\n}\n\nwebidl.util.TypeValueToString = function (o) {\n  switch (webidl.util.Type(o)) {\n    case UNDEFINED: return 'Undefined'\n    case BOOLEAN: return 'Boolean'\n    case STRING: return 'String'\n    case SYMBOL: return 'Symbol'\n    case NUMBER: return 'Number'\n    case BIGINT: return 'BigInt'\n    case NULL: return 'Null'\n    case OBJECT: return 'Object'\n  }\n}\n\nwebidl.util.markAsUncloneable = runtimeFeatures.has('markAsUncloneable')\n  ? require('node:worker_threads').markAsUncloneable\n  : () => {}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, flags) {\n  let upperBound\n  let lowerBound\n\n  // 1. If bitLength is 64, then:\n  if (bitLength === 64) {\n    // 1. Let upperBound be 2^53 − 1.\n    upperBound = Math.pow(2, 53) - 1\n\n    // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n    if (signedness === 'unsigned') {\n      lowerBound = 0\n    } else {\n      // 3. Otherwise let lowerBound be −2^53 + 1.\n      lowerBound = Math.pow(-2, 53) + 1\n    }\n  } else if (signedness === 'unsigned') {\n    // 2. Otherwise, if signedness is \"unsigned\", then:\n\n    // 1. Let lowerBound be 0.\n    lowerBound = 0\n\n    // 2. Let upperBound be 2^bitLength − 1.\n    upperBound = Math.pow(2, bitLength) - 1\n  } else {\n    // 3. Otherwise:\n\n    // 1. Let lowerBound be -2^(bitLength − 1).\n    lowerBound = -Math.pow(2, bitLength - 1)\n\n    // 2. Let upperBound be 2^(bitLength − 1) − 1.\n    upperBound = Math.pow(2, bitLength - 1) - 1\n  }\n\n  // 4. Let x be ? ToNumber(V).\n  let x = Number(V)\n\n  // 5. If x is −0, then set x to +0.\n  if (x === 0) {\n    x = 0\n  }\n\n  // 6. If the conversion is to an IDL type associated\n  //    with the [EnforceRange] extended attribute, then:\n  if (webidl.util.HasFlag(flags, webidl.attributes.EnforceRange)) {\n    // 1. If x is NaN, +∞, or −∞, then throw a TypeError.\n    if (\n      Number.isNaN(x) ||\n      x === Number.POSITIVE_INFINITY ||\n      x === Number.NEGATIVE_INFINITY\n    ) {\n      throw webidl.errors.exception({\n        header: 'Integer conversion',\n        message: `Could not convert ${webidl.util.Stringify(V)} to an integer.`\n      })\n    }\n\n    // 2. Set x to IntegerPart(x).\n    x = webidl.util.IntegerPart(x)\n\n    // 3. If x < lowerBound or x > upperBound, then\n    //    throw a TypeError.\n    if (x < lowerBound || x > upperBound) {\n      throw webidl.errors.exception({\n        header: 'Integer conversion',\n        message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n      })\n    }\n\n    // 4. Return x.\n    return x\n  }\n\n  // 7. If x is not NaN and the conversion is to an IDL\n  //    type associated with the [Clamp] extended\n  //    attribute, then:\n  if (!Number.isNaN(x) && webidl.util.HasFlag(flags, webidl.attributes.Clamp)) {\n    // 1. Set x to min(max(x, lowerBound), upperBound).\n    x = Math.min(Math.max(x, lowerBound), upperBound)\n\n    // 2. Round x to the nearest integer, choosing the\n    //    even integer if it lies halfway between two,\n    //    and choosing +0 rather than −0.\n    if (Math.floor(x) % 2 === 0) {\n      x = Math.floor(x)\n    } else {\n      x = Math.ceil(x)\n    }\n\n    // 3. Return x.\n    return x\n  }\n\n  // 8. If x is NaN, +0, +∞, or −∞, then return +0.\n  if (\n    Number.isNaN(x) ||\n    (x === 0 && Object.is(0, x)) ||\n    x === Number.POSITIVE_INFINITY ||\n    x === Number.NEGATIVE_INFINITY\n  ) {\n    return 0\n  }\n\n  // 9. Set x to IntegerPart(x).\n  x = webidl.util.IntegerPart(x)\n\n  // 10. Set x to x modulo 2^bitLength.\n  x = x % Math.pow(2, bitLength)\n\n  // 11. If signedness is \"signed\" and x ≥ 2^(bitLength − 1),\n  //    then return x − 2^bitLength.\n  if (signedness === 'signed' && x >= Math.pow(2, bitLength - 1)) {\n    return x - Math.pow(2, bitLength)\n  }\n\n  // 12. Otherwise, return x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n  // 1. Let r be floor(abs(n)).\n  const r = Math.floor(Math.abs(n))\n\n  // 2. If n < 0, then return -1 × r.\n  if (n < 0) {\n    return -1 * r\n  }\n\n  // 3. Otherwise, return r.\n  return r\n}\n\nwebidl.util.Stringify = function (V) {\n  const type = webidl.util.Type(V)\n\n  switch (type) {\n    case SYMBOL:\n      return `Symbol(${V.description})`\n    case OBJECT:\n      return inspect(V)\n    case STRING:\n      return `\"${V}\"`\n    case BIGINT:\n      return `${V}n`\n    default:\n      return `${V}`\n  }\n}\n\nwebidl.util.IsResizableArrayBuffer = function (V) {\n  if (types.isArrayBuffer(V)) {\n    return V.resizable\n  }\n\n  if (types.isSharedArrayBuffer(V)) {\n    return V.growable\n  }\n\n  throw webidl.errors.exception({\n    header: 'IsResizableArrayBuffer',\n    message: `\"${webidl.util.Stringify(V)}\" is not an array buffer.`\n  })\n}\n\nwebidl.util.HasFlag = function (flags, attributes) {\n  return typeof flags === 'number' && (flags & attributes) === attributes\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n  return (V, prefix, argument, Iterable) => {\n    // 1. If Type(V) is not Object, throw a TypeError.\n    if (webidl.util.Type(V) !== OBJECT) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.`\n      })\n    }\n\n    // 2. Let method be ? GetMethod(V, @@iterator).\n    /** @type {Generator} */\n    const method = typeof Iterable === 'function' ? Iterable() : V?.[Symbol.iterator]?.()\n    const seq = []\n    let index = 0\n\n    // 3. If method is undefined, throw a TypeError.\n    if (\n      method === undefined ||\n      typeof method.next !== 'function'\n    ) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} is not iterable.`\n      })\n    }\n\n    // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n    while (true) {\n      const { done, value } = method.next()\n\n      if (done) {\n        break\n      }\n\n      seq.push(converter(value, prefix, `${argument}[${index++}]`))\n    }\n\n    return seq\n  }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n  return (O, prefix, argument) => {\n    // 1. If Type(O) is not Object, throw a TypeError.\n    if (webidl.util.Type(O) !== OBJECT) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} (\"${webidl.util.TypeValueToString(O)}\") is not an Object.`\n      })\n    }\n\n    // 2. Let result be a new empty instance of record<K, V>.\n    const result = {}\n\n    if (!types.isProxy(O)) {\n      // 1. Let desc be ? O.[[GetOwnProperty]](key).\n      const keys = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)]\n\n      for (const key of keys) {\n        const keyName = webidl.util.Stringify(key)\n\n        // 1. Let typedKey be key converted to an IDL value of type K.\n        const typedKey = keyConverter(key, prefix, `Key ${keyName} in ${argument}`)\n\n        // 2. Let value be ? Get(O, key).\n        // 3. Let typedValue be value converted to an IDL value of type V.\n        const typedValue = valueConverter(O[key], prefix, `${argument}[${keyName}]`)\n\n        // 4. Set result[typedKey] to typedValue.\n        result[typedKey] = typedValue\n      }\n\n      // 5. Return result.\n      return result\n    }\n\n    // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n    const keys = Reflect.ownKeys(O)\n\n    // 4. For each key of keys.\n    for (const key of keys) {\n      // 1. Let desc be ? O.[[GetOwnProperty]](key).\n      const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n      // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n      if (desc?.enumerable) {\n        // 1. Let typedKey be key converted to an IDL value of type K.\n        const typedKey = keyConverter(key, prefix, argument)\n\n        // 2. Let value be ? Get(O, key).\n        // 3. Let typedValue be value converted to an IDL value of type V.\n        const typedValue = valueConverter(O[key], prefix, argument)\n\n        // 4. Set result[typedKey] to typedValue.\n        result[typedKey] = typedValue\n      }\n    }\n\n    // 5. Return result.\n    return result\n  }\n}\n\nwebidl.interfaceConverter = function (TypeCheck, name) {\n  return (V, prefix, argument) => {\n    if (!TypeCheck(V)) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `Expected ${argument} (\"${webidl.util.Stringify(V)}\") to be an instance of ${name}.`\n      })\n    }\n\n    return V\n  }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n  // \"For each dictionary member member declared on dictionary, in lexicographical order:\"\n  converters.sort((a, b) => (a.key > b.key) - (a.key < b.key))\n\n  return (dictionary, prefix, argument) => {\n    const dict = {}\n\n    if (dictionary != null && webidl.util.Type(dictionary) !== OBJECT) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n      })\n    }\n\n    for (const options of converters) {\n      const { key, defaultValue, required, converter } = options\n\n      if (required === true) {\n        if (dictionary == null || !Object.hasOwn(dictionary, key)) {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: `Missing required key \"${key}\".`\n          })\n        }\n      }\n\n      let value = dictionary?.[key]\n      const hasDefault = defaultValue !== undefined\n\n      // Only use defaultValue if value is undefined and\n      // a defaultValue options was provided.\n      if (hasDefault && value === undefined) {\n        value = defaultValue()\n      }\n\n      // A key can be optional and have no default value.\n      // When this happens, do not perform a conversion,\n      // and do not assign the key a value.\n      if (required || hasDefault || value !== undefined) {\n        value = converter(value, prefix, `${argument}.${key}`)\n\n        if (\n          options.allowedValues &&\n          !options.allowedValues.includes(value)\n        ) {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n          })\n        }\n\n        dict[key] = value\n      }\n    }\n\n    return dict\n  }\n}\n\nwebidl.nullableConverter = function (converter) {\n  return (V, prefix, argument) => {\n    if (V === null) {\n      return V\n    }\n\n    return converter(V, prefix, argument)\n  }\n}\n\n/**\n * @param {*} value\n * @returns {boolean}\n */\nwebidl.is.USVString = function (value) {\n  return (\n    typeof value === 'string' &&\n    value.isWellFormed()\n  )\n}\n\nwebidl.is.ReadableStream = webidl.util.MakeTypeAssertion(ReadableStream)\nwebidl.is.Blob = webidl.util.MakeTypeAssertion(Blob)\nwebidl.is.URLSearchParams = webidl.util.MakeTypeAssertion(URLSearchParams)\nwebidl.is.File = webidl.util.MakeTypeAssertion(File)\nwebidl.is.URL = webidl.util.MakeTypeAssertion(URL)\nwebidl.is.AbortSignal = webidl.util.MakeTypeAssertion(AbortSignal)\nwebidl.is.MessagePort = webidl.util.MakeTypeAssertion(MessagePort)\n\nwebidl.is.BufferSource = function (V) {\n  return types.isArrayBuffer(V) || (\n    ArrayBuffer.isView(V) &&\n    types.isArrayBuffer(V.buffer)\n  )\n}\n\n// https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy\nwebidl.util.getCopyOfBytesHeldByBufferSource = function (bufferSource) {\n  // 1. Let jsBufferSource be the result of converting bufferSource to a JavaScript value.\n  const jsBufferSource = bufferSource\n\n  // 2. Let jsArrayBuffer be jsBufferSource.\n  let jsArrayBuffer = jsBufferSource\n\n  // 3. Let offset be 0.\n  let offset = 0\n\n  // 4. Let length be 0.\n  let length = 0\n\n  // 5. If jsBufferSource has a [[ViewedArrayBuffer]] internal slot, then:\n  if (types.isTypedArray(jsBufferSource) || types.isDataView(jsBufferSource)) {\n    // 5.1. Set jsArrayBuffer to jsBufferSource.[[ViewedArrayBuffer]].\n    jsArrayBuffer = jsBufferSource.buffer\n\n    // 5.2. Set offset to jsBufferSource.[[ByteOffset]].\n    offset = jsBufferSource.byteOffset\n\n    // 5.3. Set length to jsBufferSource.[[ByteLength]].\n    length = jsBufferSource.byteLength\n  } else {\n    // 6. Otherwise:\n\n    // 6.1. Assert: jsBufferSource is an ArrayBuffer or SharedArrayBuffer object.\n    assert(types.isAnyArrayBuffer(jsBufferSource))\n\n    // 6.2. Set length to jsBufferSource.[[ArrayBufferByteLength]].\n    length = jsBufferSource.byteLength\n  }\n\n  // 7. If IsDetachedBuffer(jsArrayBuffer) is true, then return the empty byte sequence.\n  if (jsArrayBuffer.detached) {\n    return new Uint8Array(0)\n  }\n\n  // 8. Let bytes be a new byte sequence of length equal to length.\n  const bytes = new Uint8Array(length)\n\n  // 9. For i in the range offset to offset + length − 1, inclusive,\n  //    set bytes[i − offset] to GetValueFromBuffer(jsArrayBuffer, i, Uint8, true, Unordered).\n  const view = new Uint8Array(jsArrayBuffer, offset, length)\n  bytes.set(view)\n\n  // 10. Return bytes.\n  return bytes\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, prefix, argument, flags) {\n  // 1. If V is null and the conversion is to an IDL type\n  //    associated with the [LegacyNullToEmptyString]\n  //    extended attribute, then return the DOMString value\n  //    that represents the empty string.\n  if (V === null && webidl.util.HasFlag(flags, webidl.attributes.LegacyNullToEmptyString)) {\n    return ''\n  }\n\n  // 2. Let x be ? ToString(V).\n  if (typeof V === 'symbol') {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} is a symbol, which cannot be converted to a DOMString.`\n    })\n  }\n\n  // 3. Return the IDL DOMString value that represents the\n  //    same sequence of code units as the one the\n  //    ECMAScript String value x represents.\n  return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V, prefix, argument) {\n  // 1. Let x be ? ToString(V).\n  if (typeof V === 'symbol') {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} is a symbol, which cannot be converted to a ByteString.`\n    })\n  }\n\n  const x = String(V)\n\n  // 2. If the value of any element of x is greater than\n  //    255, then throw a TypeError.\n  for (let index = 0; index < x.length; index++) {\n    if (x.charCodeAt(index) > 255) {\n      throw new TypeError(\n        'Cannot convert argument to a ByteString because the character at ' +\n        `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n      )\n    }\n  }\n\n  // 3. Return an IDL ByteString value whose length is the\n  //    length of x, and where the value of each element is\n  //    the value of the corresponding element of x.\n  return x\n}\n\n/**\n * @param {unknown} value\n * @returns {string}\n * @see https://webidl.spec.whatwg.org/#es-USVString\n */\nwebidl.converters.USVString = function (value) {\n  // TODO: rewrite this so we can control the errors thrown\n  if (typeof value === 'string') {\n    return value.toWellFormed()\n  }\n  return `${value}`.toWellFormed()\n}\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n  // 1. Let x be the result of computing ToBoolean(V).\n  // https://262.ecma-international.org/10.0/index.html#table-10\n  const x = Boolean(V)\n\n  // 2. Return the IDL boolean value that is the one that represents\n  //    the same truth value as the ECMAScript Boolean value x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n  const x = webidl.util.ConvertToInt(V, 64, 'signed', 0, prefix, argument)\n\n  // 2. Return the IDL long long value that represents\n  //    the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 64, 'unsigned', 0, prefix, argument)\n\n  // 2. Return the IDL unsigned long long value that\n  //    represents the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 32, 'unsigned', 0, prefix, argument)\n\n  // 2. Return the IDL unsigned long value that\n  //    represents the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, prefix, argument, flags) {\n  // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 16, 'unsigned', flags, prefix, argument)\n\n  // 2. Return the IDL unsigned short value that represents\n  //    the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, prefix, argument, flags) {\n  // 1. If V is not an Object, or V does not have an\n  //    [[ArrayBufferData]] internal slot, then throw a\n  //    TypeError.\n  // 2. If IsSharedArrayBuffer(V) is true, then throw a\n  //    TypeError.\n  // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n  if (\n    webidl.util.Type(V) !== OBJECT ||\n    !types.isArrayBuffer(V)\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n      types: ['ArrayBuffer']\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V) is true, then throw a\n  //    TypeError.\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a resizable ArrayBuffer.`\n    })\n  }\n\n  // 4. Return the IDL ArrayBuffer value that is a\n  //    reference to the same object as V.\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#idl-SharedArrayBuffer\nwebidl.converters.SharedArrayBuffer = function (V, prefix, argument, flags) {\n  // 1. If V is not an Object, or V does not have an\n  //    [[ArrayBufferData]] internal slot, then throw a\n  //    TypeError.\n  // 2. If IsSharedArrayBuffer(V) is false, then throw a\n  //    TypeError.\n  // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n  if (\n    webidl.util.Type(V) !== OBJECT ||\n    !types.isSharedArrayBuffer(V)\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n      types: ['SharedArrayBuffer']\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V) is true, then throw a\n  //    TypeError.\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a resizable SharedArrayBuffer.`\n    })\n  }\n\n  // 4. Return the IDL SharedArrayBuffer value that is a\n  //    reference to the same object as V.\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#dfn-typed-array-type\nwebidl.converters.TypedArray = function (V, T, prefix, argument, flags) {\n  // 1. Let T be the IDL type V is being converted to.\n\n  // 2. If Type(V) is not Object, or V does not have a\n  //    [[TypedArrayName]] internal slot with a value\n  //    equal to T’s name, then throw a TypeError.\n  if (\n    webidl.util.Type(V) !== OBJECT ||\n    !types.isTypedArray(V) ||\n    V.constructor.name !== T.name\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n      types: [T.name]\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a view on a shared array buffer.`\n    })\n  }\n\n  // 4. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a view on a resizable array buffer.`\n    })\n  }\n\n  // 5. Return the IDL value of type T that is a reference\n  //    to the same object as V.\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#idl-DataView\nwebidl.converters.DataView = function (V, prefix, argument, flags) {\n  // 1. If Type(V) is not Object, or V does not have a\n  //    [[DataView]] internal slot, then throw a TypeError.\n  if (webidl.util.Type(V) !== OBJECT || !types.isDataView(V)) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n      types: ['DataView']\n    })\n  }\n\n  // 2. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n  //    then throw a TypeError.\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a view on a shared array buffer.`\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a view on a resizable array buffer.`\n    })\n  }\n\n  // 4. Return the IDL DataView value that is a reference\n  //    to the same object as V.\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#ArrayBufferView\nwebidl.converters.ArrayBufferView = function (V, prefix, argument, flags) {\n  if (\n    webidl.util.Type(V) !== OBJECT ||\n    !types.isArrayBufferView(V)\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n      types: ['ArrayBufferView']\n    })\n  }\n\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowShared) && types.isSharedArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a view on a shared array buffer.`\n    })\n  }\n\n  if (!webidl.util.HasFlag(flags, webidl.attributes.AllowResizable) && webidl.util.IsResizableArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a view on a resizable array buffer.`\n    })\n  }\n\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, prefix, argument, flags) {\n  if (types.isArrayBuffer(V)) {\n    return webidl.converters.ArrayBuffer(V, prefix, argument, flags)\n  }\n\n  if (types.isArrayBufferView(V)) {\n    flags &= ~webidl.attributes.AllowShared\n\n    return webidl.converters.ArrayBufferView(V, prefix, argument, flags)\n  }\n\n  // Make this explicit for easier debugging\n  if (types.isSharedArrayBuffer(V)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} cannot be a SharedArrayBuffer.`\n    })\n  }\n\n  throw webidl.errors.conversionFailed({\n    prefix,\n    argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n    types: ['ArrayBuffer', 'ArrayBufferView']\n  })\n}\n\n// https://webidl.spec.whatwg.org/#AllowSharedBufferSource\nwebidl.converters.AllowSharedBufferSource = function (V, prefix, argument, flags) {\n  if (types.isArrayBuffer(V)) {\n    return webidl.converters.ArrayBuffer(V, prefix, argument, flags)\n  }\n\n  if (types.isSharedArrayBuffer(V)) {\n    return webidl.converters.SharedArrayBuffer(V, prefix, argument, flags)\n  }\n\n  if (types.isArrayBufferView(V)) {\n    flags |= webidl.attributes.AllowShared\n    return webidl.converters.ArrayBufferView(V, prefix, argument, flags)\n  }\n\n  throw webidl.errors.conversionFailed({\n    prefix,\n    argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n    types: ['ArrayBuffer', 'SharedArrayBuffer', 'ArrayBufferView']\n  })\n}\n\nwebidl.converters['sequence<ByteString>'] = webidl.sequenceConverter(\n  webidl.converters.ByteString\n)\n\nwebidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter(\n  webidl.converters['sequence<ByteString>']\n)\n\nwebidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter(\n  webidl.converters.ByteString,\n  webidl.converters.ByteString\n)\n\nwebidl.converters.Blob = webidl.interfaceConverter(webidl.is.Blob, 'Blob')\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n  webidl.is.AbortSignal,\n  'AbortSignal'\n)\n\n/**\n * [LegacyTreatNonObjectAsNull]\n * callback EventHandlerNonNull = any (Event event);\n * typedef EventHandlerNonNull? EventHandler;\n * @param {*} V\n */\nwebidl.converters.EventHandlerNonNull = function (V) {\n  if (webidl.util.Type(V) !== OBJECT) {\n    return null\n  }\n\n  // [I]f the value is not an object, it will be converted to null, and if the value is not callable,\n  // it will be converted to a callback function value that does nothing when called.\n  if (typeof V === 'function') {\n    return V\n  }\n\n  return () => {}\n}\n\nwebidl.attributes = {\n  Clamp: 1 << 0,\n  EnforceRange: 1 << 1,\n  AllowShared: 1 << 2,\n  AllowResizable: 1 << 3,\n  LegacyNullToEmptyString: 1 << 4\n}\n\nmodule.exports = {\n  webidl\n}\n","'use strict'\n\nconst { Transform } = require('node:stream')\nconst zlib = require('node:zlib')\nconst { redirectStatusSet, referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { collectAnHTTPQuotedString, parseMIMEType } = require('./data-url')\nconst { performance } = require('node:perf_hooks')\nconst { ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require('../../core/util')\nconst assert = require('node:assert')\nconst { isUint8Array } = require('node:util/types')\nconst { webidl } = require('../webidl')\nconst { isomorphicEncode, collectASequenceOfCodePoints, removeChars } = require('../infra')\n\nfunction responseURL (response) {\n  // https://fetch.spec.whatwg.org/#responses\n  // A response has an associated URL. It is a pointer to the last URL\n  // in response’s URL list and null if response’s URL list is empty.\n  const urlList = response.urlList\n  const length = urlList.length\n  return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n  // 1. If response’s status is not a redirect status, then return null.\n  if (!redirectStatusSet.has(response.status)) {\n    return null\n  }\n\n  // 2. Let location be the result of extracting header list values given\n  // `Location` and response’s header list.\n  let location = response.headersList.get('location', true)\n\n  // 3. If location is a header value, then set location to the result of\n  //    parsing location with response’s URL.\n  if (location !== null && isValidHeaderValue(location)) {\n    if (!isValidEncodedURL(location)) {\n      // Some websites respond location header in UTF-8 form without encoding them as ASCII\n      // and major browsers redirect them to correctly UTF-8 encoded addresses.\n      // Here, we handle that behavior in the same way.\n      location = normalizeBinaryStringToUtf8(location)\n    }\n    location = new URL(location, responseURL(response))\n  }\n\n  // 4. If location is a URL whose fragment is null, then set location’s\n  // fragment to requestFragment.\n  if (location && !location.hash) {\n    location.hash = requestFragment\n  }\n\n  // 5. Return location.\n  return location\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc1738#section-2.2\n * @param {string} url\n * @returns {boolean}\n */\nfunction isValidEncodedURL (url) {\n  for (let i = 0; i < url.length; ++i) {\n    const code = url.charCodeAt(i)\n\n    if (\n      code > 0x7E || // Non-US-ASCII + DEL\n      code < 0x20 // Control characters NUL - US\n    ) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * If string contains non-ASCII characters, assumes it's UTF-8 encoded and decodes it.\n * Since UTF-8 is a superset of ASCII, this will work for ASCII strings as well.\n * @param {string} value\n * @returns {string}\n */\nfunction normalizeBinaryStringToUtf8 (value) {\n  return Buffer.from(value, 'binary').toString('utf8')\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n  return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n  // 1. Let url be request’s current URL.\n  const url = requestCurrentURL(request)\n\n  // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,\n  // then return blocked.\n  if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n    return 'blocked'\n  }\n\n  // 3. Return allowed.\n  return 'allowed'\n}\n\nfunction isErrorLike (object) {\n  return object instanceof Error || (\n    object?.constructor?.name === 'Error' ||\n    object?.constructor?.name === 'DOMException'\n  )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n  for (let i = 0; i < statusText.length; ++i) {\n    const c = statusText.charCodeAt(i)\n    if (\n      !(\n        (\n          c === 0x09 || // HTAB\n          (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n          (c >= 0x80 && c <= 0xff)\n        ) // obs-text\n      )\n    ) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nconst isValidHeaderName = isValidHTTPToken\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n  // - Has no leading or trailing HTTP tab or space bytes.\n  // - Contains no 0x00 (NUL) or HTTP newline bytes.\n  return (\n    potentialValue[0] === '\\t' ||\n    potentialValue[0] === ' ' ||\n    potentialValue[potentialValue.length - 1] === '\\t' ||\n    potentialValue[potentialValue.length - 1] === ' ' ||\n    potentialValue.includes('\\n') ||\n    potentialValue.includes('\\r') ||\n    potentialValue.includes('\\0')\n  ) === false\n}\n\n/**\n * Parse a referrer policy from a Referrer-Policy header\n * @see https://w3c.github.io/webappsec-referrer-policy/#parse-referrer-policy-from-header\n */\nfunction parseReferrerPolicy (actualResponse) {\n  // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.\n  const policyHeader = (actualResponse.headersList.get('referrer-policy', true) ?? '').split(',')\n\n  // 2. Let policy be the empty string.\n  let policy = ''\n\n  // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n\n  // Note: As the referrer-policy can contain multiple policies\n  // separated by comma, we need to loop through all of them\n  // and pick the first valid one.\n  // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n  if (policyHeader.length) {\n    // The right-most policy takes precedence.\n    // The left-most policy is the fallback.\n    for (let i = policyHeader.length; i !== 0; i--) {\n      const token = policyHeader[i - 1].trim()\n      if (referrerPolicyTokens.has(token)) {\n        policy = token\n        break\n      }\n    }\n  }\n\n  // 4. Return policy.\n  return policy\n}\n\n/**\n * Given a request request and a response actualResponse, this algorithm\n * updates request’s referrer policy according to the Referrer-Policy\n * header (if any) in actualResponse.\n * @see https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\n * @param {import('./request').Request} request\n * @param {import('./response').Response} actualResponse\n */\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n  // 1. Let policy be the result of executing § 8.1 Parse a referrer policy\n  // from a Referrer-Policy header on actualResponse.\n  const policy = parseReferrerPolicy(actualResponse)\n\n  // 2. If policy is not the empty string, then set request’s referrer policy to policy.\n  if (policy !== '') {\n    request.referrerPolicy = policy\n  }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n  // TODO\n  return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n  // TODO\n  return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n  // TODO\n  return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n  //  TODO\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n  //  1. Assert: r’s url is a potentially trustworthy URL.\n  //  TODO\n\n  //  2. Let header be a Structured Header whose value is a token.\n  let header = null\n\n  //  3. Set header’s value to r’s mode.\n  header = httpRequest.mode\n\n  //  4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.\n  httpRequest.headersList.set('sec-fetch-mode', header, true)\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n  //  TODO\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n  //  TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n  // 1. Let serializedOrigin be the result of byte-serializing a request origin\n  //    with request.\n  // TODO: implement \"byte-serializing a request origin\"\n  let serializedOrigin = request.origin\n\n  // - \"'client' is changed to an origin during fetching.\"\n  //   This doesn't happen in undici (in most cases) because undici, by default,\n  //   has no concept of origin.\n  // - request.origin can also be set to request.client.origin (client being\n  //   an environment settings object), which is undefined without using\n  //   setGlobalOrigin.\n  if (serializedOrigin === 'client' || serializedOrigin === undefined) {\n    return\n  }\n\n  // 2. If request’s response tainting is \"cors\" or request’s mode is \"websocket\",\n  //    then append (`Origin`, serializedOrigin) to request’s header list.\n  // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:\n  if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n    request.headersList.append('origin', serializedOrigin, true)\n  } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n    // 1. Switch on request’s referrer policy:\n    switch (request.referrerPolicy) {\n      case 'no-referrer':\n        // Set serializedOrigin to `null`.\n        serializedOrigin = null\n        break\n      case 'no-referrer-when-downgrade':\n      case 'strict-origin':\n      case 'strict-origin-when-cross-origin':\n        // If request’s origin is a tuple origin, its scheme is \"https\", and\n        // request’s current URL’s scheme is not \"https\", then set\n        // serializedOrigin to `null`.\n        if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n          serializedOrigin = null\n        }\n        break\n      case 'same-origin':\n        // If request’s origin is not same origin with request’s current URL’s\n        // origin, then set serializedOrigin to `null`.\n        if (!sameOrigin(request, requestCurrentURL(request))) {\n          serializedOrigin = null\n        }\n        break\n      default:\n        // Do nothing.\n    }\n\n    // 2. Append (`Origin`, serializedOrigin) to request’s header list.\n    request.headersList.append('origin', serializedOrigin, true)\n  }\n}\n\n// https://w3c.github.io/hr-time/#dfn-coarsen-time\nfunction coarsenTime (timestamp, crossOriginIsolatedCapability) {\n  // TODO\n  return timestamp\n}\n\n// https://fetch.spec.whatwg.org/#clamp-and-coarsen-connection-timing-info\nfunction clampAndCoarsenConnectionTimingInfo (connectionTimingInfo, defaultStartTime, crossOriginIsolatedCapability) {\n  if (!connectionTimingInfo?.startTime || connectionTimingInfo.startTime < defaultStartTime) {\n    return {\n      domainLookupStartTime: defaultStartTime,\n      domainLookupEndTime: defaultStartTime,\n      connectionStartTime: defaultStartTime,\n      connectionEndTime: defaultStartTime,\n      secureConnectionStartTime: defaultStartTime,\n      ALPNNegotiatedProtocol: connectionTimingInfo?.ALPNNegotiatedProtocol\n    }\n  }\n\n  return {\n    domainLookupStartTime: coarsenTime(connectionTimingInfo.domainLookupStartTime, crossOriginIsolatedCapability),\n    domainLookupEndTime: coarsenTime(connectionTimingInfo.domainLookupEndTime, crossOriginIsolatedCapability),\n    connectionStartTime: coarsenTime(connectionTimingInfo.connectionStartTime, crossOriginIsolatedCapability),\n    connectionEndTime: coarsenTime(connectionTimingInfo.connectionEndTime, crossOriginIsolatedCapability),\n    secureConnectionStartTime: coarsenTime(connectionTimingInfo.secureConnectionStartTime, crossOriginIsolatedCapability),\n    ALPNNegotiatedProtocol: connectionTimingInfo.ALPNNegotiatedProtocol\n  }\n}\n\n// https://w3c.github.io/hr-time/#dfn-coarsened-shared-current-time\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n  return coarsenTime(performance.now(), crossOriginIsolatedCapability)\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n  return {\n    startTime: timingInfo.startTime ?? 0,\n    redirectStartTime: 0,\n    redirectEndTime: 0,\n    postRedirectStartTime: timingInfo.startTime ?? 0,\n    finalServiceWorkerStartTime: 0,\n    finalNetworkResponseStartTime: 0,\n    finalNetworkRequestStartTime: 0,\n    endTime: 0,\n    encodedBodySize: 0,\n    decodedBodySize: 0,\n    finalConnectionTimingInfo: null\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n  // Note: the fetch spec doesn't make use of embedder policy or CSP list\n  return {\n    referrerPolicy: 'strict-origin-when-cross-origin'\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n  return {\n    referrerPolicy: policyContainer.referrerPolicy\n  }\n}\n\n/**\n * Determine request’s Referrer\n *\n * @see https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\n */\nfunction determineRequestsReferrer (request) {\n  // Given a request request, we can determine the correct referrer information\n  // to send by examining its referrer policy as detailed in the following\n  // steps, which return either no referrer or a URL:\n\n  // 1. Let policy be request's referrer policy.\n  const policy = request.referrerPolicy\n\n  // Note: policy cannot (shouldn't) be null or an empty string.\n  assert(policy)\n\n  // 2. Let environment be request’s client.\n\n  let referrerSource = null\n\n  // 3. Switch on request’s referrer:\n\n  // \"client\"\n  if (request.referrer === 'client') {\n    // Note: node isn't a browser and doesn't implement document/iframes,\n    // so we bypass this step and replace it with our own.\n\n    const globalOrigin = getGlobalOrigin()\n\n    if (!globalOrigin || globalOrigin.origin === 'null') {\n      return 'no-referrer'\n    }\n\n    // Note: we need to clone it as it's mutated\n    referrerSource = new URL(globalOrigin)\n  // a URL\n  } else if (webidl.is.URL(request.referrer)) {\n    // Let referrerSource be request’s referrer.\n    referrerSource = request.referrer\n  }\n\n  // 4. Let request’s referrerURL be the result of stripping referrerSource for\n  //    use as a referrer.\n  let referrerURL = stripURLForReferrer(referrerSource)\n\n  // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n  //    a referrer, with the origin-only flag set to true.\n  const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n  // 6. If the result of serializing referrerURL is a string whose length is\n  //    greater than 4096, set referrerURL to referrerOrigin.\n  if (referrerURL.toString().length > 4096) {\n    referrerURL = referrerOrigin\n  }\n\n  // 7. The user agent MAY alter referrerURL or referrerOrigin at this point\n  // to enforce arbitrary policy considerations in the interests of minimizing\n  // data leakage. For example, the user agent could strip the URL down to an\n  // origin, modify its host, replace it with an empty string, etc.\n\n  // 8. Execute the switch statements corresponding to the value of policy:\n  switch (policy) {\n    case 'no-referrer':\n      // Return no referrer\n      return 'no-referrer'\n    case 'origin':\n      // Return referrerOrigin\n      if (referrerOrigin != null) {\n        return referrerOrigin\n      }\n      return stripURLForReferrer(referrerSource, true)\n    case 'unsafe-url':\n      // Return referrerURL.\n      return referrerURL\n    case 'strict-origin': {\n      const currentURL = requestCurrentURL(request)\n\n      // 1. If referrerURL is a potentially trustworthy URL and request’s\n      //    current URL is not a potentially trustworthy URL, then return no\n      //    referrer.\n      if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n        return 'no-referrer'\n      }\n      // 2. Return referrerOrigin\n      return referrerOrigin\n    }\n    case 'strict-origin-when-cross-origin': {\n      const currentURL = requestCurrentURL(request)\n\n      // 1. If the origin of referrerURL and the origin of request’s current\n      //    URL are the same, then return referrerURL.\n      if (sameOrigin(referrerURL, currentURL)) {\n        return referrerURL\n      }\n\n      // 2. If referrerURL is a potentially trustworthy URL and request’s\n      //    current URL is not a potentially trustworthy URL, then return no\n      //    referrer.\n      if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n        return 'no-referrer'\n      }\n\n      // 3. Return referrerOrigin.\n      return referrerOrigin\n    }\n    case 'same-origin':\n      // 1. If the origin of referrerURL and the origin of request’s current\n      // URL are the same, then return referrerURL.\n      if (sameOrigin(request, referrerURL)) {\n        return referrerURL\n      }\n      // 2. Return no referrer.\n      return 'no-referrer'\n    case 'origin-when-cross-origin':\n      // 1. If the origin of referrerURL and the origin of request’s current\n      // URL are the same, then return referrerURL.\n      if (sameOrigin(request, referrerURL)) {\n        return referrerURL\n      }\n      // 2. Return referrerOrigin.\n      return referrerOrigin\n    case 'no-referrer-when-downgrade': {\n      const currentURL = requestCurrentURL(request)\n\n      // 1. If referrerURL is a potentially trustworthy URL and request’s\n      //    current URL is not a potentially trustworthy URL, then return no\n      //    referrer.\n      if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n        return 'no-referrer'\n      }\n      // 2. Return referrerURL.\n      return referrerURL\n    }\n  }\n}\n\n/**\n * Certain portions of URLs must not be included when sending a URL as the\n * value of a `Referer` header: a URLs fragment, username, and password\n * components must be stripped from the URL before it’s sent out. This\n * algorithm accepts a origin-only flag, which defaults to false. If set to\n * true, the algorithm will additionally remove the URL’s path and query\n * components, leaving only the scheme, host, and port.\n *\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean} [originOnly=false]\n */\nfunction stripURLForReferrer (url, originOnly = false) {\n  // 1. Assert: url is a URL.\n  assert(webidl.is.URL(url))\n\n  // Note: Create a new URL instance to avoid mutating the original URL.\n  url = new URL(url)\n\n  // 2. If url’s scheme is a local scheme, then return no referrer.\n  if (urlIsLocal(url)) {\n    return 'no-referrer'\n  }\n\n  // 3. Set url’s username to the empty string.\n  url.username = ''\n\n  // 4. Set url’s password to the empty string.\n  url.password = ''\n\n  // 5. Set url’s fragment to null.\n  url.hash = ''\n\n  // 6. If the origin-only flag is true, then:\n  if (originOnly === true) {\n    // 1. Set url’s path to « the empty string ».\n    url.pathname = ''\n\n    // 2. Set url’s query to null.\n    url.search = ''\n  }\n\n  // 7. Return url.\n  return url\n}\n\nconst isPotentialleTrustworthyIPv4 = RegExp.prototype.test\n  .bind(/^127\\.(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)\\.){2}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)$/)\n\nconst isPotentiallyTrustworthyIPv6 = RegExp.prototype.test\n  .bind(/^(?:(?:0{1,4}:){7}|(?:0{1,4}:){1,6}:|::)0{0,3}1$/)\n\n/**\n * Check if host matches one of the CIDR notations 127.0.0.0/8 or ::1/128.\n *\n * @param {string} origin\n * @returns {boolean}\n */\nfunction isOriginIPPotentiallyTrustworthy (origin) {\n  // IPv6\n  if (origin.includes(':')) {\n    // Remove brackets from IPv6 addresses\n    if (origin[0] === '[' && origin[origin.length - 1] === ']') {\n      origin = origin.slice(1, -1)\n    }\n    return isPotentiallyTrustworthyIPv6(origin)\n  }\n\n  // IPv4\n  return isPotentialleTrustworthyIPv4(origin)\n}\n\n/**\n * A potentially trustworthy origin is one which a user agent can generally\n * trust as delivering data securely.\n *\n * Return value `true` means `Potentially Trustworthy`.\n * Return value `false` means `Not Trustworthy`.\n *\n * @see https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy\n * @param {string} origin\n * @returns {boolean}\n */\nfunction isOriginPotentiallyTrustworthy (origin) {\n  // 1. If origin is an opaque origin, return \"Not Trustworthy\".\n  if (origin == null || origin === 'null') {\n    return false\n  }\n\n  // 2. Assert: origin is a tuple origin.\n  origin = new URL(origin)\n\n  // 3. If origin’s scheme is either \"https\" or \"wss\",\n  //    return \"Potentially Trustworthy\".\n  if (origin.protocol === 'https:' || origin.protocol === 'wss:') {\n    return true\n  }\n\n  // 4. If origin’s host matches one of the CIDR notations 127.0.0.0/8 or\n  // ::1/128 [RFC4632], return \"Potentially Trustworthy\".\n  if (isOriginIPPotentiallyTrustworthy(origin.hostname)) {\n    return true\n  }\n\n  // 5. If the user agent conforms to the name resolution rules in\n  //    [let-localhost-be-localhost] and one of the following is true:\n\n  //    origin’s host is \"localhost\" or \"localhost.\"\n  if (origin.hostname === 'localhost' || origin.hostname === 'localhost.') {\n    return true\n  }\n\n  //    origin’s host ends with \".localhost\" or \".localhost.\"\n  if (origin.hostname.endsWith('.localhost') || origin.hostname.endsWith('.localhost.')) {\n    return true\n  }\n\n  // 6. If origin’s scheme is \"file\", return \"Potentially Trustworthy\".\n  if (origin.protocol === 'file:') {\n    return true\n  }\n\n  // 7. If origin’s scheme component is one which the user agent considers to\n  // be authenticated, return \"Potentially Trustworthy\".\n\n  // 8. If origin has been configured as a trustworthy origin, return\n  //    \"Potentially Trustworthy\".\n\n  // 9. Return \"Not Trustworthy\".\n  return false\n}\n\n/**\n * A potentially trustworthy URL is one which either inherits context from its\n * creator (about:blank, about:srcdoc, data) or one whose origin is a\n * potentially trustworthy origin.\n *\n * Return value `true` means `Potentially Trustworthy`.\n * Return value `false` means `Not Trustworthy`.\n *\n * @see https://www.w3.org/TR/secure-contexts/#is-url-trustworthy\n * @param {URL} url\n * @returns {boolean}\n */\nfunction isURLPotentiallyTrustworthy (url) {\n  // Given a URL record (url), the following algorithm returns \"Potentially\n  // Trustworthy\" or \"Not Trustworthy\" as appropriate:\n  if (!webidl.is.URL(url)) {\n    return false\n  }\n\n  // 1. If url is \"about:blank\" or \"about:srcdoc\",\n  //    return \"Potentially Trustworthy\".\n  if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n    return true\n  }\n\n  // 2. If url’s scheme is \"data\", return \"Potentially Trustworthy\".\n  if (url.protocol === 'data:') return true\n\n  // Note: The origin of blob: URLs is the origin of the context in which they\n  // were created. Therefore, blobs created in a trustworthy origin will\n  // themselves be potentially trustworthy.\n  if (url.protocol === 'blob:') return true\n\n  // 3. Return the result of executing § 3.1 Is origin potentially trustworthy?\n  // on url’s origin.\n  return isOriginPotentiallyTrustworthy(url.origin)\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n  // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n  // 1. If A and B are the same opaque origin, then return true.\n  if (A.origin === B.origin && A.origin === 'null') {\n    return true\n  }\n\n  // 2. If A and B are both tuple origins and their schemes,\n  //    hosts, and port are identical, then return true.\n  if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n    return true\n  }\n\n  // 3. Return false.\n  return false\n}\n\nfunction isAborted (fetchParams) {\n  return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n  return fetchParams.controller.state === 'aborted' ||\n    fetchParams.controller.state === 'terminated'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n  return normalizedMethodRecordsBase[method.toLowerCase()] ?? method\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {string} name name of the instance\n * @param {((target: any) => any)} kInternalIterator\n * @param {string | number} [keyIndex]\n * @param {string | number} [valueIndex]\n */\nfunction createIterator (name, kInternalIterator, keyIndex = 0, valueIndex = 1) {\n  class FastIterableIterator {\n    /** @type {any} */\n    #target\n    /** @type {'key' | 'value' | 'key+value'} */\n    #kind\n    /** @type {number} */\n    #index\n\n    /**\n     * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object\n     * @param {unknown} target\n     * @param {'key' | 'value' | 'key+value'} kind\n     */\n    constructor (target, kind) {\n      this.#target = target\n      this.#kind = kind\n      this.#index = 0\n    }\n\n    next () {\n      // 1. Let interface be the interface for which the iterator prototype object exists.\n      // 2. Let thisValue be the this value.\n      // 3. Let object be ? ToObject(thisValue).\n      // 4. If object is a platform object, then perform a security\n      //    check, passing:\n      // 5. If object is not a default iterator object for interface,\n      //    then throw a TypeError.\n      if (typeof this !== 'object' || this === null || !(#target in this)) {\n        throw new TypeError(\n          `'next' called on an object that does not implement interface ${name} Iterator.`\n        )\n      }\n\n      // 6. Let index be object’s index.\n      // 7. Let kind be object’s kind.\n      // 8. Let values be object’s target's value pairs to iterate over.\n      const index = this.#index\n      const values = kInternalIterator(this.#target)\n\n      // 9. Let len be the length of values.\n      const len = values.length\n\n      // 10. If index is greater than or equal to len, then return\n      //     CreateIterResultObject(undefined, true).\n      if (index >= len) {\n        return {\n          value: undefined,\n          done: true\n        }\n      }\n\n      // 11. Let pair be the entry in values at index index.\n      const { [keyIndex]: key, [valueIndex]: value } = values[index]\n\n      // 12. Set object’s index to index + 1.\n      this.#index = index + 1\n\n      // 13. Return the iterator result for pair and kind.\n\n      // https://webidl.spec.whatwg.org/#iterator-result\n\n      // 1. Let result be a value determined by the value of kind:\n      let result\n      switch (this.#kind) {\n        case 'key':\n          // 1. Let idlKey be pair’s key.\n          // 2. Let key be the result of converting idlKey to an\n          //    ECMAScript value.\n          // 3. result is key.\n          result = key\n          break\n        case 'value':\n          // 1. Let idlValue be pair’s value.\n          // 2. Let value be the result of converting idlValue to\n          //    an ECMAScript value.\n          // 3. result is value.\n          result = value\n          break\n        case 'key+value':\n          // 1. Let idlKey be pair’s key.\n          // 2. Let idlValue be pair’s value.\n          // 3. Let key be the result of converting idlKey to an\n          //    ECMAScript value.\n          // 4. Let value be the result of converting idlValue to\n          //    an ECMAScript value.\n          // 5. Let array be ! ArrayCreate(2).\n          // 6. Call ! CreateDataProperty(array, \"0\", key).\n          // 7. Call ! CreateDataProperty(array, \"1\", value).\n          // 8. result is array.\n          result = [key, value]\n          break\n      }\n\n      // 2. Return CreateIterResultObject(result, false).\n      return {\n        value: result,\n        done: false\n      }\n    }\n  }\n\n  // https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n  // @ts-ignore\n  delete FastIterableIterator.prototype.constructor\n\n  Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype)\n\n  Object.defineProperties(FastIterableIterator.prototype, {\n    [Symbol.toStringTag]: {\n      writable: false,\n      enumerable: false,\n      configurable: true,\n      value: `${name} Iterator`\n    },\n    next: { writable: true, enumerable: true, configurable: true }\n  })\n\n  /**\n   * @param {unknown} target\n   * @param {'key' | 'value' | 'key+value'} kind\n   * @returns {IterableIterator<any>}\n   */\n  return function (target, kind) {\n    return new FastIterableIterator(target, kind)\n  }\n}\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {string} name name of the instance\n * @param {any} object class\n * @param {(target: any) => any} kInternalIterator\n * @param {string | number} [keyIndex]\n * @param {string | number} [valueIndex]\n */\nfunction iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) {\n  const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex)\n\n  const properties = {\n    keys: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function keys () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'key')\n      }\n    },\n    values: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function values () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'value')\n      }\n    },\n    entries: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function entries () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'key+value')\n      }\n    },\n    forEach: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function forEach (callbackfn, thisArg = globalThis) {\n        webidl.brandCheck(this, object)\n        webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`)\n        if (typeof callbackfn !== 'function') {\n          throw new TypeError(\n            `Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`\n          )\n        }\n        for (const { 0: key, 1: value } of makeIterator(this, 'key+value')) {\n          callbackfn.call(thisArg, value, key, this)\n        }\n      }\n    }\n  }\n\n  return Object.defineProperties(object.prototype, {\n    ...properties,\n    [Symbol.iterator]: {\n      writable: true,\n      enumerable: false,\n      configurable: true,\n      value: properties.entries.value\n    }\n  })\n}\n\n/**\n * @param {import('./body').ExtractBodyResult} body\n * @param {(bytes: Uint8Array) => void} processBody\n * @param {(error: Error) => void} processBodyError\n * @returns {void}\n *\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nfunction fullyReadBody (body, processBody, processBodyError) {\n  // 1. If taskDestination is null, then set taskDestination to\n  //    the result of starting a new parallel queue.\n\n  // 2. Let successSteps given a byte sequence bytes be to queue a\n  //    fetch task to run processBody given bytes, with taskDestination.\n  const successSteps = processBody\n\n  // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n  //    with taskDestination.\n  const errorSteps = processBodyError\n\n  try {\n  // 4. Let reader be the result of getting a reader for body’s stream.\n  //    If that threw an exception, then run errorSteps with that\n  //    exception and return.\n    const reader = body.stream.getReader()\n\n    // 5. Read all bytes from reader, given successSteps and errorSteps.\n    readAllBytes(reader, successSteps, errorSteps)\n  } catch (e) {\n    errorSteps(e)\n  }\n}\n\n/**\n * @param {ReadableStreamController<Uint8Array>} controller\n */\nfunction readableStreamClose (controller) {\n  try {\n    controller.close()\n    controller.byobRequest?.respond(0)\n  } catch (err) {\n    // TODO: add comment explaining why this error occurs.\n    if (!err.message.includes('Controller is already closed') && !err.message.includes('ReadableStream is already closed')) {\n      throw err\n    }\n  }\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStream<Uint8Array<ArrayBuffer>>} reader\n * @param {(bytes: Uint8Array) => void} successSteps\n * @param {(error: Error) => void} failureSteps\n * @returns {Promise<void>}\n */\nasync function readAllBytes (reader, successSteps, failureSteps) {\n  try {\n    const bytes = []\n    let byteLength = 0\n\n    do {\n      const { done, value: chunk } = await reader.read()\n\n      if (done) {\n        // 1. Call successSteps with bytes.\n        successSteps(Buffer.concat(bytes, byteLength))\n        return\n      }\n\n      // 1. If chunk is not a Uint8Array object, call failureSteps\n      //    with a TypeError and abort these steps.\n      if (!isUint8Array(chunk)) {\n        failureSteps(new TypeError('Received non-Uint8Array chunk'))\n        return\n      }\n\n      // 2. Append the bytes represented by chunk to bytes.\n      bytes.push(chunk)\n      byteLength += chunk.length\n\n    // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n    } while (true)\n  } catch (e) {\n    // 1. Call failureSteps with e.\n    failureSteps(e)\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n * @returns {boolean}\n */\nfunction urlIsLocal (url) {\n  assert('protocol' in url) // ensure it's a url object\n\n  const protocol = url.protocol\n\n  // A URL is local if its scheme is a local scheme.\n  // A local scheme is \"about\", \"blob\", or \"data\".\n  return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n * @returns {boolean}\n */\nfunction urlHasHttpsScheme (url) {\n  return (\n    (\n      typeof url === 'string' &&\n      url[5] === ':' &&\n      url[0] === 'h' &&\n      url[1] === 't' &&\n      url[2] === 't' &&\n      url[3] === 'p' &&\n      url[4] === 's'\n    ) ||\n    url.protocol === 'https:'\n  )\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n  assert('protocol' in url) // ensure it's a url object\n\n  const protocol = url.protocol\n\n  return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * @typedef {Object} RangeHeaderValue\n * @property {number|null} rangeStartValue\n * @property {number|null} rangeEndValue\n */\n\n/**\n * @see https://fetch.spec.whatwg.org/#simple-range-header-value\n * @param {string} value\n * @param {boolean} allowWhitespace\n * @return {RangeHeaderValue|'failure'}\n */\nfunction simpleRangeHeaderValue (value, allowWhitespace) {\n  // 1. Let data be the isomorphic decoding of value.\n  // Note: isomorphic decoding takes a sequence of bytes (ie. a Uint8Array) and turns it into a string,\n  // nothing more. We obviously don't need to do that if value is a string already.\n  const data = value\n\n  // 2. If data does not start with \"bytes\", then return failure.\n  if (!data.startsWith('bytes')) {\n    return 'failure'\n  }\n\n  // 3. Let position be a position variable for data, initially pointing at the 5th code point of data.\n  const position = { position: 5 }\n\n  // 4. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space,\n  //    from data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 5. If the code point at position within data is not U+003D (=), then return failure.\n  if (data.charCodeAt(position.position) !== 0x3D) {\n    return 'failure'\n  }\n\n  // 6. Advance position by 1.\n  position.position++\n\n  // 7. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space, from\n  //    data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 8. Let rangeStart be the result of collecting a sequence of code points that are ASCII digits,\n  //    from data given position.\n  const rangeStart = collectASequenceOfCodePoints(\n    (char) => {\n      const code = char.charCodeAt(0)\n\n      return code >= 0x30 && code <= 0x39\n    },\n    data,\n    position\n  )\n\n  // 9. Let rangeStartValue be rangeStart, interpreted as decimal number, if rangeStart is not the\n  //    empty string; otherwise null.\n  const rangeStartValue = rangeStart.length ? Number(rangeStart) : null\n\n  // 10. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space,\n  //     from data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 11. If the code point at position within data is not U+002D (-), then return failure.\n  if (data.charCodeAt(position.position) !== 0x2D) {\n    return 'failure'\n  }\n\n  // 12. Advance position by 1.\n  position.position++\n\n  // 13. If allowWhitespace is true, collect a sequence of code points that are HTTP tab\n  //     or space, from data given position.\n  // Note from Khafra: its the same step as in #8 again lol\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 14. Let rangeEnd be the result of collecting a sequence of code points that are\n  //     ASCII digits, from data given position.\n  // Note from Khafra: you wouldn't guess it, but this is also the same step as #8\n  const rangeEnd = collectASequenceOfCodePoints(\n    (char) => {\n      const code = char.charCodeAt(0)\n\n      return code >= 0x30 && code <= 0x39\n    },\n    data,\n    position\n  )\n\n  // 15. Let rangeEndValue be rangeEnd, interpreted as decimal number, if rangeEnd\n  //     is not the empty string; otherwise null.\n  // Note from Khafra: THE SAME STEP, AGAIN!!!\n  // Note: why interpret as a decimal if we only collect ascii digits?\n  const rangeEndValue = rangeEnd.length ? Number(rangeEnd) : null\n\n  // 16. If position is not past the end of data, then return failure.\n  if (position.position < data.length) {\n    return 'failure'\n  }\n\n  // 17. If rangeEndValue and rangeStartValue are null, then return failure.\n  if (rangeEndValue === null && rangeStartValue === null) {\n    return 'failure'\n  }\n\n  // 18. If rangeStartValue and rangeEndValue are numbers, and rangeStartValue is\n  //     greater than rangeEndValue, then return failure.\n  // Note: ... when can they not be numbers?\n  if (rangeStartValue > rangeEndValue) {\n    return 'failure'\n  }\n\n  // 19. Return (rangeStartValue, rangeEndValue).\n  return { rangeStartValue, rangeEndValue }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#build-a-content-range\n * @param {number} rangeStart\n * @param {number} rangeEnd\n * @param {number} fullLength\n */\nfunction buildContentRange (rangeStart, rangeEnd, fullLength) {\n  // 1. Let contentRange be `bytes `.\n  let contentRange = 'bytes '\n\n  // 2. Append rangeStart, serialized and isomorphic encoded, to contentRange.\n  contentRange += isomorphicEncode(`${rangeStart}`)\n\n  // 3. Append 0x2D (-) to contentRange.\n  contentRange += '-'\n\n  // 4. Append rangeEnd, serialized and isomorphic encoded to contentRange.\n  contentRange += isomorphicEncode(`${rangeEnd}`)\n\n  // 5. Append 0x2F (/) to contentRange.\n  contentRange += '/'\n\n  // 6. Append fullLength, serialized and isomorphic encoded to contentRange.\n  contentRange += isomorphicEncode(`${fullLength}`)\n\n  // 7. Return contentRange.\n  return contentRange\n}\n\n// A Stream, which pipes the response to zlib.createInflate() or\n// zlib.createInflateRaw() depending on the first byte of the Buffer.\n// If the lower byte of the first byte is 0x08, then the stream is\n// interpreted as a zlib stream, otherwise it's interpreted as a\n// raw deflate stream.\nclass InflateStream extends Transform {\n  #zlibOptions\n\n  /** @param {zlib.ZlibOptions} [zlibOptions] */\n  constructor (zlibOptions) {\n    super()\n    this.#zlibOptions = zlibOptions\n  }\n\n  _transform (chunk, encoding, callback) {\n    if (!this._inflateStream) {\n      if (chunk.length === 0) {\n        callback()\n        return\n      }\n      this._inflateStream = (chunk[0] & 0x0F) === 0x08\n        ? zlib.createInflate(this.#zlibOptions)\n        : zlib.createInflateRaw(this.#zlibOptions)\n\n      this._inflateStream.on('data', this.push.bind(this))\n      this._inflateStream.on('end', () => this.push(null))\n      this._inflateStream.on('error', (err) => this.destroy(err))\n    }\n\n    this._inflateStream.write(chunk, encoding, callback)\n  }\n\n  _final (callback) {\n    if (this._inflateStream) {\n      this._inflateStream.end()\n      this._inflateStream = null\n    }\n    callback()\n  }\n}\n\n/**\n * @param {zlib.ZlibOptions} [zlibOptions]\n * @returns {InflateStream}\n */\nfunction createInflate (zlibOptions) {\n  return new InflateStream(zlibOptions)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-extract-mime-type\n * @param {import('./headers').HeadersList} headers\n */\nfunction extractMimeType (headers) {\n  // 1. Let charset be null.\n  let charset = null\n\n  // 2. Let essence be null.\n  let essence = null\n\n  // 3. Let mimeType be null.\n  let mimeType = null\n\n  // 4. Let values be the result of getting, decoding, and splitting `Content-Type` from headers.\n  const values = getDecodeSplit('content-type', headers)\n\n  // 5. If values is null, then return failure.\n  if (values === null) {\n    return 'failure'\n  }\n\n  // 6. For each value of values:\n  for (const value of values) {\n    // 6.1. Let temporaryMimeType be the result of parsing value.\n    const temporaryMimeType = parseMIMEType(value)\n\n    // 6.2. If temporaryMimeType is failure or its essence is \"*/*\", then continue.\n    if (temporaryMimeType === 'failure' || temporaryMimeType.essence === '*/*') {\n      continue\n    }\n\n    // 6.3. Set mimeType to temporaryMimeType.\n    mimeType = temporaryMimeType\n\n    // 6.4. If mimeType’s essence is not essence, then:\n    if (mimeType.essence !== essence) {\n      // 6.4.1. Set charset to null.\n      charset = null\n\n      // 6.4.2. If mimeType’s parameters[\"charset\"] exists, then set charset to\n      //        mimeType’s parameters[\"charset\"].\n      if (mimeType.parameters.has('charset')) {\n        charset = mimeType.parameters.get('charset')\n      }\n\n      // 6.4.3. Set essence to mimeType’s essence.\n      essence = mimeType.essence\n    } else if (!mimeType.parameters.has('charset') && charset !== null) {\n      // 6.5. Otherwise, if mimeType’s parameters[\"charset\"] does not exist, and\n      //      charset is non-null, set mimeType’s parameters[\"charset\"] to charset.\n      mimeType.parameters.set('charset', charset)\n    }\n  }\n\n  // 7. If mimeType is null, then return failure.\n  if (mimeType == null) {\n    return 'failure'\n  }\n\n  // 8. Return mimeType.\n  return mimeType\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value-get-decode-and-split\n * @param {string|null} value\n */\nfunction gettingDecodingSplitting (value) {\n  // 1. Let input be the result of isomorphic decoding value.\n  const input = value\n\n  // 2. Let position be a position variable for input, initially pointing at the start of input.\n  const position = { position: 0 }\n\n  // 3. Let values be a list of strings, initially empty.\n  const values = []\n\n  // 4. Let temporaryValue be the empty string.\n  let temporaryValue = ''\n\n  // 5. While position is not past the end of input:\n  while (position.position < input.length) {\n    // 5.1. Append the result of collecting a sequence of code points that are not U+0022 (\")\n    //      or U+002C (,) from input, given position, to temporaryValue.\n    temporaryValue += collectASequenceOfCodePoints(\n      (char) => char !== '\"' && char !== ',',\n      input,\n      position\n    )\n\n    // 5.2. If position is not past the end of input, then:\n    if (position.position < input.length) {\n      // 5.2.1. If the code point at position within input is U+0022 (\"), then:\n      if (input.charCodeAt(position.position) === 0x22) {\n        // 5.2.1.1. Append the result of collecting an HTTP quoted string from input, given position, to temporaryValue.\n        temporaryValue += collectAnHTTPQuotedString(\n          input,\n          position\n        )\n\n        // 5.2.1.2. If position is not past the end of input, then continue.\n        if (position.position < input.length) {\n          continue\n        }\n      } else {\n        // 5.2.2. Otherwise:\n\n        // 5.2.2.1. Assert: the code point at position within input is U+002C (,).\n        assert(input.charCodeAt(position.position) === 0x2C)\n\n        // 5.2.2.2. Advance position by 1.\n        position.position++\n      }\n    }\n\n    // 5.3. Remove all HTTP tab or space from the start and end of temporaryValue.\n    temporaryValue = removeChars(temporaryValue, true, true, (char) => char === 0x9 || char === 0x20)\n\n    // 5.4. Append temporaryValue to values.\n    values.push(temporaryValue)\n\n    // 5.6. Set temporaryValue to the empty string.\n    temporaryValue = ''\n  }\n\n  // 6. Return values.\n  return values\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-list-get-decode-split\n * @param {string} name lowercase header name\n * @param {import('./headers').HeadersList} list\n */\nfunction getDecodeSplit (name, list) {\n  // 1. Let value be the result of getting name from list.\n  const value = list.get(name, true)\n\n  // 2. If value is null, then return null.\n  if (value === null) {\n    return null\n  }\n\n  // 3. Return the result of getting, decoding, and splitting value.\n  return gettingDecodingSplitting(value)\n}\n\nfunction hasAuthenticationEntry (request) {\n  return false\n}\n\n/**\n * @see https://url.spec.whatwg.org/#include-credentials\n * @param {URL} url\n */\nfunction includesCredentials (url) {\n  // A URL includes credentials if its username or password is not the empty string.\n  return !!(url.username || url.password)\n}\n\n/**\n * @see https://html.spec.whatwg.org/multipage/document-sequences.html#traversable-navigable\n * @param {object|string} navigable\n */\nfunction isTraversableNavigable (navigable) {\n  // Returns true only if we have an actual traversable navigable object\n  // that can prompt the user for credentials. In Node.js, this will always\n  // be false since there's no Window object or navigable.\n  return navigable != null && navigable !== 'client' && navigable !== 'no-traversable'\n}\n\nclass EnvironmentSettingsObjectBase {\n  get baseUrl () {\n    return getGlobalOrigin()\n  }\n\n  get origin () {\n    return this.baseUrl?.origin\n  }\n\n  policyContainer = makePolicyContainer()\n}\n\nclass EnvironmentSettingsObject {\n  settingsObject = new EnvironmentSettingsObjectBase()\n}\n\nconst environmentSettingsObject = new EnvironmentSettingsObject()\n\nmodule.exports = {\n  isAborted,\n  isCancelled,\n  isValidEncodedURL,\n  ReadableStreamFrom,\n  tryUpgradeRequestToAPotentiallyTrustworthyURL,\n  clampAndCoarsenConnectionTimingInfo,\n  coarsenedSharedCurrentTime,\n  determineRequestsReferrer,\n  makePolicyContainer,\n  clonePolicyContainer,\n  appendFetchMetadata,\n  appendRequestOriginHeader,\n  TAOCheck,\n  corsCheck,\n  crossOriginResourcePolicyCheck,\n  createOpaqueTimingInfo,\n  setRequestReferrerPolicyOnRedirect,\n  isValidHTTPToken,\n  requestBadPort,\n  requestCurrentURL,\n  responseURL,\n  responseLocationURL,\n  isURLPotentiallyTrustworthy,\n  isValidReasonPhrase,\n  sameOrigin,\n  normalizeMethod,\n  iteratorMixin,\n  createIterator,\n  isValidHeaderName,\n  isValidHeaderValue,\n  isErrorLike,\n  fullyReadBody,\n  readableStreamClose,\n  urlIsLocal,\n  urlHasHttpsScheme,\n  urlIsHttpHttpsScheme,\n  readAllBytes,\n  simpleRangeHeaderValue,\n  buildContentRange,\n  createInflate,\n  extractMimeType,\n  getDecodeSplit,\n  environmentSettingsObject,\n  isOriginIPPotentiallyTrustworthy,\n  hasAuthenticationEntry,\n  includesCredentials,\n  isTraversableNavigable\n}\n","'use strict'\n\nconst { iteratorMixin } = require('./util')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { webidl } = require('../webidl')\nconst nodeUtil = require('node:util')\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n  #state = []\n\n  constructor (form = undefined) {\n    webidl.util.markAsUncloneable(this)\n\n    if (form !== undefined) {\n      throw webidl.errors.conversionFailed({\n        prefix: 'FormData constructor',\n        argument: 'Argument 1',\n        types: ['undefined']\n      })\n    }\n  }\n\n  append (name, value, filename = undefined) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.append'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    name = webidl.converters.USVString(name)\n\n    if (arguments.length === 3 || webidl.is.Blob(value)) {\n      value = webidl.converters.Blob(value, prefix, 'value')\n\n      if (filename !== undefined) {\n        filename = webidl.converters.USVString(filename)\n      }\n    } else {\n      value = webidl.converters.USVString(value)\n    }\n\n    // 1. Let value be value if given; otherwise blobValue.\n\n    // 2. Let entry be the result of creating an entry with\n    // name, value, and filename if given.\n    const entry = makeEntry(name, value, filename)\n\n    // 3. Append entry to this’s entry list.\n    this.#state.push(entry)\n  }\n\n  delete (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name)\n\n    // The delete(name) method steps are to remove all entries whose name\n    // is name from this’s entry list.\n    this.#state = this.#state.filter(entry => entry.name !== name)\n  }\n\n  get (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.get'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name)\n\n    // 1. If there is no entry whose name is name in this’s entry list,\n    // then return null.\n    const idx = this.#state.findIndex((entry) => entry.name === name)\n    if (idx === -1) {\n      return null\n    }\n\n    // 2. Return the value of the first entry whose name is name from\n    // this’s entry list.\n    return this.#state[idx].value\n  }\n\n  getAll (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.getAll'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name)\n\n    // 1. If there is no entry whose name is name in this’s entry list,\n    // then return the empty list.\n    // 2. Return the values of all entries whose name is name, in order,\n    // from this’s entry list.\n    return this.#state\n      .filter((entry) => entry.name === name)\n      .map((entry) => entry.value)\n  }\n\n  has (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.has'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name)\n\n    // The has(name) method steps are to return true if there is an entry\n    // whose name is name in this’s entry list; otherwise false.\n    return this.#state.findIndex((entry) => entry.name === name) !== -1\n  }\n\n  set (name, value, filename = undefined) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.set'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    name = webidl.converters.USVString(name)\n\n    if (arguments.length === 3 || webidl.is.Blob(value)) {\n      value = webidl.converters.Blob(value, prefix, 'value')\n\n      if (filename !== undefined) {\n        filename = webidl.converters.USVString(filename)\n      }\n    } else {\n      value = webidl.converters.USVString(value)\n    }\n\n    // The set(name, value) and set(name, blobValue, filename) method steps\n    // are:\n\n    // 1. Let value be value if given; otherwise blobValue.\n\n    // 2. Let entry be the result of creating an entry with name, value, and\n    // filename if given.\n    const entry = makeEntry(name, value, filename)\n\n    // 3. If there are entries in this’s entry list whose name is name, then\n    // replace the first such entry with entry and remove the others.\n    const idx = this.#state.findIndex((entry) => entry.name === name)\n    if (idx !== -1) {\n      this.#state = [\n        ...this.#state.slice(0, idx),\n        entry,\n        ...this.#state.slice(idx + 1).filter((entry) => entry.name !== name)\n      ]\n    } else {\n      // 4. Otherwise, append entry to this’s entry list.\n      this.#state.push(entry)\n    }\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    const state = this.#state.reduce((a, b) => {\n      if (a[b.name]) {\n        if (Array.isArray(a[b.name])) {\n          a[b.name].push(b.value)\n        } else {\n          a[b.name] = [a[b.name], b.value]\n        }\n      } else {\n        a[b.name] = b.value\n      }\n\n      return a\n    }, { __proto__: null })\n\n    options.depth ??= depth\n    options.colors ??= true\n\n    const output = nodeUtil.formatWithOptions(options, state)\n\n    // remove [Object null prototype]\n    return `FormData ${output.slice(output.indexOf(']') + 2)}`\n  }\n\n  /**\n   * @param {FormData} formData\n   */\n  static getFormDataState (formData) {\n    return formData.#state\n  }\n\n  /**\n   * @param {FormData} formData\n   * @param {any[]} newState\n   */\n  static setFormDataState (formData, newState) {\n    formData.#state = newState\n  }\n}\n\nconst { getFormDataState, setFormDataState } = FormData\nReflect.deleteProperty(FormData, 'getFormDataState')\nReflect.deleteProperty(FormData, 'setFormDataState')\n\niteratorMixin('FormData', FormData, getFormDataState, 'name', 'value')\n\nObject.defineProperties(FormData.prototype, {\n  append: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  get: kEnumerableProperty,\n  getAll: kEnumerableProperty,\n  has: kEnumerableProperty,\n  set: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'FormData',\n    configurable: true\n  }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n  // 1. Set name to the result of converting name into a scalar value string.\n  // Note: This operation was done by the webidl converter USVString.\n\n  // 2. If value is a string, then set value to the result of converting\n  //    value into a scalar value string.\n  if (typeof value === 'string') {\n    // Note: This operation was done by the webidl converter USVString.\n  } else {\n    // 3. Otherwise:\n\n    // 1. If value is not a File object, then set value to a new File object,\n    //    representing the same bytes, whose name attribute value is \"blob\"\n    if (!webidl.is.File(value)) {\n      value = new File([value], 'blob', { type: value.type })\n    }\n\n    // 2. If filename is given, then set value to a new File object,\n    //    representing the same bytes, whose name attribute is filename.\n    if (filename !== undefined) {\n      /** @type {FilePropertyBag} */\n      const options = {\n        type: value.type,\n        lastModified: value.lastModified\n      }\n\n      value = new File([value], filename, options)\n    }\n  }\n\n  // 4. Return an entry whose name is name and whose value is value.\n  return { name, value }\n}\n\nwebidl.is.FormData = webidl.util.MakeTypeAssertion(FormData)\n\nmodule.exports = { FormData, makeEntry, setFormDataState }\n","'use strict'\n\nconst { bufferToLowerCasedHeaderName } = require('../../core/util')\nconst { HTTP_TOKEN_CODEPOINTS } = require('./data-url')\nconst { makeEntry } = require('./formdata')\nconst { webidl } = require('../webidl')\nconst assert = require('node:assert')\nconst { isomorphicDecode } = require('../infra')\n\nconst dd = Buffer.from('--')\nconst decoder = new TextDecoder()\nconst decoderIgnoreBOM = new TextDecoder('utf-8', { ignoreBOM: true })\n\n/**\n * @param {string} chars\n */\nfunction isAsciiString (chars) {\n  for (let i = 0; i < chars.length; ++i) {\n    if ((chars.charCodeAt(i) & ~0x7F) !== 0) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-boundary\n * @param {string} boundary\n */\nfunction validateBoundary (boundary) {\n  const length = boundary.length\n\n  // - its length is greater or equal to 27 and lesser or equal to 70, and\n  if (length < 27 || length > 70) {\n    return false\n  }\n\n  // - it is composed by bytes in the ranges 0x30 to 0x39, 0x41 to 0x5A, or\n  //   0x61 to 0x7A, inclusive (ASCII alphanumeric), or which are 0x27 ('),\n  //   0x2D (-) or 0x5F (_).\n  for (let i = 0; i < length; ++i) {\n    const cp = boundary.charCodeAt(i)\n\n    if (!(\n      (cp >= 0x30 && cp <= 0x39) ||\n      (cp >= 0x41 && cp <= 0x5a) ||\n      (cp >= 0x61 && cp <= 0x7a) ||\n      cp === 0x27 ||\n      cp === 0x2d ||\n      cp === 0x5f\n    )) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-parser\n * @param {Buffer} input\n * @param {ReturnType<import('./data-url')['parseMIMEType']>} mimeType\n */\nfunction multipartFormDataParser (input, mimeType) {\n  // 1. Assert: mimeType’s essence is \"multipart/form-data\".\n  assert(mimeType !== 'failure' && mimeType.essence === 'multipart/form-data')\n\n  const boundaryString = mimeType.parameters.get('boundary')\n\n  // 2. If mimeType’s parameters[\"boundary\"] does not exist, return failure.\n  //    Otherwise, let boundary be the result of UTF-8 decoding mimeType’s\n  //    parameters[\"boundary\"].\n  if (boundaryString === undefined) {\n    throw parsingError('missing boundary in content-type header')\n  }\n\n  const boundary = Buffer.from(`--${boundaryString}`, 'utf8')\n\n  // 3. Let entry list be an empty entry list.\n  const entryList = []\n\n  // 4. Let position be a pointer to a byte in input, initially pointing at\n  //    the first byte.\n  const position = { position: 0 }\n\n  // Note: Per RFC 2046 Section 5.1.1, we must ignore anything before the\n  // first boundary delimiter line (preamble). Search for the first boundary.\n  const firstBoundaryIndex = input.indexOf(boundary)\n\n  if (firstBoundaryIndex === -1) {\n    throw parsingError('no boundary found in multipart body')\n  }\n\n  // Start parsing from the first boundary, ignoring any preamble\n  position.position = firstBoundaryIndex\n\n  // 5. While true:\n  while (true) {\n    // 5.1. If position points to a sequence of bytes starting with 0x2D 0x2D\n    //      (`--`) followed by boundary, advance position by 2 + the length of\n    //      boundary. Otherwise, return failure.\n    // Note: boundary is padded with 2 dashes already, no need to add 2.\n    if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) {\n      position.position += boundary.length\n    } else {\n      throw parsingError('expected a value starting with -- and the boundary')\n    }\n\n    // 5.2. If position points to the sequence of bytes 0x2D 0x2D 0x0D 0x0A\n    //      (`--` followed by CR LF) followed by the end of input, return entry list.\n    // Note: Per RFC 2046 Section 5.1.1, we must ignore anything after the\n    // final boundary delimiter (epilogue). Check for -- or --CRLF and return\n    // regardless of what follows.\n    if (bufferStartsWith(input, dd, position)) {\n      // Found closing boundary delimiter (--), ignore any epilogue\n      return entryList\n    }\n\n    // 5.3. If position does not point to a sequence of bytes starting with 0x0D\n    //      0x0A (CR LF), return failure.\n    if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {\n      throw parsingError('expected CRLF')\n    }\n\n    // 5.4. Advance position by 2. (This skips past the newline.)\n    position.position += 2\n\n    // 5.5. Let name, filename and contentType be the result of parsing\n    //      multipart/form-data headers on input and position, if the result\n    //      is not failure. Otherwise, return failure.\n    const result = parseMultipartFormDataHeaders(input, position)\n\n    let { name, filename, contentType, encoding } = result\n\n    // 5.6. Advance position by 2. (This skips past the empty line that marks\n    //      the end of the headers.)\n    position.position += 2\n\n    // 5.7. Let body be the empty byte sequence.\n    let body\n\n    // 5.8. Body loop: While position is not past the end of input:\n    // TODO: the steps here are completely wrong\n    {\n      const boundaryIndex = input.indexOf(boundary.subarray(2), position.position)\n\n      if (boundaryIndex === -1) {\n        throw parsingError('expected boundary after body')\n      }\n\n      body = input.subarray(position.position, boundaryIndex - 4)\n\n      position.position += body.length\n\n      // Note: position must be advanced by the body's length before being\n      // decoded, otherwise the parsing will fail.\n      if (encoding === 'base64') {\n        body = Buffer.from(body.toString(), 'base64')\n      }\n    }\n\n    // 5.9. If position does not point to a sequence of bytes starting with\n    //      0x0D 0x0A (CR LF), return failure. Otherwise, advance position by 2.\n    if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {\n      throw parsingError('expected CRLF')\n    } else {\n      position.position += 2\n    }\n\n    // 5.10. If filename is not null:\n    let value\n\n    if (filename !== null) {\n      // 5.10.1. If contentType is null, set contentType to \"text/plain\".\n      contentType ??= 'text/plain'\n\n      // 5.10.2. If contentType is not an ASCII string, set contentType to the empty string.\n\n      // Note: `buffer.isAscii` can be used at zero-cost, but converting a string to a buffer is a high overhead.\n      // Content-Type is a relatively small string, so it is faster to use `String#charCodeAt`.\n      if (!isAsciiString(contentType)) {\n        contentType = ''\n      }\n\n      // 5.10.3. Let value be a new File object with name filename, type contentType, and body body.\n      value = new File([body], filename, { type: contentType })\n    } else {\n      // 5.11. Otherwise:\n\n      // 5.11.1. Let value be the UTF-8 decoding without BOM of body.\n      value = decoderIgnoreBOM.decode(Buffer.from(body))\n    }\n\n    // 5.12. Assert: name is a scalar value string and value is either a scalar value string or a File object.\n    assert(webidl.is.USVString(name))\n    assert((typeof value === 'string' && webidl.is.USVString(value)) || webidl.is.File(value))\n\n    // 5.13. Create an entry with name and value, and append it to entry list.\n    entryList.push(makeEntry(name, value, filename))\n  }\n}\n\n/**\n * Parses content-disposition attributes (e.g., name=\"value\" or filename*=utf-8''encoded)\n * @param {Buffer} input\n * @param {{ position: number }} position\n * @returns {{ name: string, value: string, extended: boolean } | null}\n */\nfunction parseContentDispositionAttribute (input, position) {\n  // Skip leading semicolon and whitespace\n  if (input[position.position] === 0x3b /* ; */) {\n    position.position++\n  }\n\n  // Skip whitespace\n  collectASequenceOfBytes(\n    (char) => char === 0x20 || char === 0x09,\n    input,\n    position\n  )\n\n  // Collect attribute name (token characters)\n  const attributeName = collectASequenceOfBytes(\n    (char) => isToken(char) && char !== 0x3d && char !== 0x2a, // not = or *\n    input,\n    position\n  )\n\n  if (attributeName.length === 0) {\n    return null\n  }\n\n  const attrNameStr = attributeName.toString('ascii').toLowerCase()\n\n  // Check for extended notation (attribute*)\n  const isExtended = input[position.position] === 0x2a /* * */\n  if (isExtended) {\n    position.position++ // skip *\n  }\n\n  // Expect = sign\n  if (input[position.position] !== 0x3d /* = */) {\n    return null\n  }\n  position.position++ // skip =\n\n  // Skip whitespace\n  collectASequenceOfBytes(\n    (char) => char === 0x20 || char === 0x09,\n    input,\n    position\n  )\n\n  let value\n\n  if (isExtended) {\n    // Extended attribute format: charset'language'encoded-value\n    const headerValue = collectASequenceOfBytes(\n      (char) => char !== 0x20 && char !== 0x0d && char !== 0x0a && char !== 0x3b, // not space, CRLF, or ;\n      input,\n      position\n    )\n\n    // Check for utf-8'' prefix (case insensitive)\n    if (\n      (headerValue[0] !== 0x75 && headerValue[0] !== 0x55) || // u or U\n      (headerValue[1] !== 0x74 && headerValue[1] !== 0x54) || // t or T\n      (headerValue[2] !== 0x66 && headerValue[2] !== 0x46) || // f or F\n      headerValue[3] !== 0x2d || // -\n      headerValue[4] !== 0x38 // 8\n    ) {\n      throw parsingError('unknown encoding, expected utf-8\\'\\'')\n    }\n\n    // Skip utf-8'' and decode the rest\n    value = decodeURIComponent(decoder.decode(headerValue.subarray(7)))\n  } else if (input[position.position] === 0x22 /* \" */) {\n    // Quoted string\n    position.position++ // skip opening quote\n\n    const quotedValue = collectASequenceOfBytes(\n      (char) => char !== 0x0a && char !== 0x0d && char !== 0x22, // not LF, CR, or \"\n      input,\n      position\n    )\n\n    if (input[position.position] !== 0x22) {\n      throw parsingError('Closing quote not found')\n    }\n    position.position++ // skip closing quote\n\n    value = decoder.decode(quotedValue)\n      .replace(/%0A/ig, '\\n')\n      .replace(/%0D/ig, '\\r')\n      .replace(/%22/g, '\"')\n  } else {\n    // Token value (no quotes)\n    const tokenValue = collectASequenceOfBytes(\n      (char) => isToken(char) && char !== 0x3b, // not ;\n      input,\n      position\n    )\n\n    value = decoder.decode(tokenValue)\n  }\n\n  return { name: attrNameStr, value, extended: isExtended }\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#parse-multipart-form-data-headers\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction parseMultipartFormDataHeaders (input, position) {\n  // 1. Let name, filename and contentType be null.\n  let name = null\n  let filename = null\n  let contentType = null\n  let encoding = null\n\n  // 2. While true:\n  while (true) {\n    // 2.1. If position points to a sequence of bytes starting with 0x0D 0x0A (CR LF):\n    if (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) {\n      // 2.1.1. If name is null, return failure.\n      if (name === null) {\n        throw parsingError('header name is null')\n      }\n\n      // 2.1.2. Return name, filename and contentType.\n      return { name, filename, contentType, encoding }\n    }\n\n    // 2.2. Let header name be the result of collecting a sequence of bytes that are\n    //      not 0x0A (LF), 0x0D (CR) or 0x3A (:), given position.\n    let headerName = collectASequenceOfBytes(\n      (char) => char !== 0x0a && char !== 0x0d && char !== 0x3a,\n      input,\n      position\n    )\n\n    // 2.3. Remove any HTTP tab or space bytes from the start or end of header name.\n    headerName = removeChars(headerName, true, true, (char) => char === 0x9 || char === 0x20)\n\n    // 2.4. If header name does not match the field-name token production, return failure.\n    if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) {\n      throw parsingError('header name does not match the field-name token production')\n    }\n\n    // 2.5. If the byte at position is not 0x3A (:), return failure.\n    if (input[position.position] !== 0x3a) {\n      throw parsingError('expected :')\n    }\n\n    // 2.6. Advance position by 1.\n    position.position++\n\n    // 2.7. Collect a sequence of bytes that are HTTP tab or space bytes given position.\n    //      (Do nothing with those bytes.)\n    collectASequenceOfBytes(\n      (char) => char === 0x20 || char === 0x09,\n      input,\n      position\n    )\n\n    // 2.8. Byte-lowercase header name and switch on the result:\n    switch (bufferToLowerCasedHeaderName(headerName)) {\n      case 'content-disposition': {\n        name = filename = null\n        // Track whether filename was set from the extended (RFC 5987) form so\n        // a subsequent legacy `filename` attribute does not override it.\n        let filenameIsExtended = false\n\n        // Collect the disposition type (should be \"form-data\")\n        const dispositionType = collectASequenceOfBytes(\n          (char) => isToken(char),\n          input,\n          position\n        )\n\n        if (dispositionType.toString('ascii').toLowerCase() !== 'form-data') {\n          throw parsingError('expected form-data for content-disposition header')\n        }\n\n        // Parse attributes recursively until CRLF\n        while (\n          position.position < input.length &&\n          (input[position.position] !== 0x0d ||\n          input[position.position + 1] !== 0x0a)\n        ) {\n          const attribute = parseContentDispositionAttribute(input, position)\n\n          if (!attribute) {\n            break\n          }\n\n          if (attribute.name === 'name') {\n            name = attribute.value\n          } else if (attribute.name === 'filename') {\n            // Per RFC 5987 §4.1, when both legacy and extended forms of the\n            // same parameter are present, the extended (filename*) form takes\n            // precedence regardless of the order they appear in.\n            if (attribute.extended) {\n              filename = attribute.value\n              filenameIsExtended = true\n            } else if (!filenameIsExtended) {\n              filename = attribute.value\n            }\n          }\n        }\n\n        if (name === null) {\n          throw parsingError('name attribute is required in content-disposition header')\n        }\n\n        break\n      }\n      case 'content-type': {\n        // 1. Let header value be the result of collecting a sequence of bytes that are\n        //    not 0x0A (LF) or 0x0D (CR), given position.\n        let headerValue = collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n\n        // 2. Remove any HTTP tab or space bytes from the end of header value.\n        headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)\n\n        // 3. Set contentType to the isomorphic decoding of header value.\n        contentType = isomorphicDecode(headerValue)\n\n        break\n      }\n      case 'content-transfer-encoding': {\n        let headerValue = collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n\n        headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)\n\n        encoding = isomorphicDecode(headerValue)\n\n        break\n      }\n      default: {\n        // Collect a sequence of bytes that are not 0x0A (LF) or 0x0D (CR), given position.\n        // (Do nothing with those bytes.)\n        collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n      }\n    }\n\n    // 2.9. If position does not point to a sequence of bytes starting with 0x0D 0x0A\n    //      (CR LF), return failure. Otherwise, advance position by 2 (past the newline).\n    if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {\n      throw parsingError('expected CRLF')\n    } else {\n      position.position += 2\n    }\n  }\n}\n\n/**\n * @param {(char: number) => boolean} condition\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfBytes (condition, input, position) {\n  let start = position.position\n\n  while (start < input.length && condition(input[start])) {\n    ++start\n  }\n\n  return input.subarray(position.position, (position.position = start))\n}\n\n/**\n * @param {Buffer} buf\n * @param {boolean} leading\n * @param {boolean} trailing\n * @param {(charCode: number) => boolean} predicate\n * @returns {Buffer}\n */\nfunction removeChars (buf, leading, trailing, predicate) {\n  let lead = 0\n  let trail = buf.length - 1\n\n  if (leading) {\n    while (lead < buf.length && predicate(buf[lead])) lead++\n  }\n\n  if (trailing) {\n    while (trail > 0 && predicate(buf[trail])) trail--\n  }\n\n  return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1)\n}\n\n/**\n * Checks if {@param buffer} starts with {@param start}\n * @param {Buffer} buffer\n * @param {Buffer} start\n * @param {{ position: number }} position\n */\nfunction bufferStartsWith (buffer, start, position) {\n  if (buffer.length < start.length) {\n    return false\n  }\n\n  for (let i = 0; i < start.length; i++) {\n    if (start[i] !== buffer[position.position + i]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nfunction parsingError (cause) {\n  return new TypeError('Failed to parse body as FormData.', { cause: new TypeError(cause) })\n}\n\n/**\n * CTL            = <any US-ASCII control character\n *                  (octets 0 - 31) and DEL (127)>\n * @param {number} char\n */\nfunction isCTL (char) {\n  return char <= 0x1f || char === 0x7f\n}\n\n/**\n * tspecials :=  \"(\" / \")\" / \"<\" / \">\" / \"@\" /\n *                \",\" / \";\" / \":\" / \"\\\" / <\">\n *                \"/\" / \"[\" / \"]\" / \"?\" / \"=\"\n *                ; Must be in quoted-string,\n *                ; to use within parameter values\n * @param {number} char\n */\nfunction isTSpecial (char) {\n  return (\n    char === 0x28 || // (\n    char === 0x29 || // )\n    char === 0x3c || // <\n    char === 0x3e || // >\n    char === 0x40 || // @\n    char === 0x2c || // ,\n    char === 0x3b || // ;\n    char === 0x3a || // :\n    char === 0x5c || // \\\n    char === 0x22 || // \"\n    char === 0x2f || // /\n    char === 0x5b || // [\n    char === 0x5d || // ]\n    char === 0x3f || // ?\n    char === 0x3d    // +\n  )\n}\n\n/**\n * token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,\n *          or tspecials>\n * @param {number} char\n */\nfunction isToken (char) {\n  return (\n    char <= 0x7f &&  // ascii\n    char !== 0x20 && // space\n    char !== 0x09 &&\n    !isCTL(char) &&\n    !isTSpecial(char)\n  )\n}\n\nmodule.exports = {\n  multipartFormDataParser,\n  validateBoundary\n}\n","'use strict'\n\n/**\n * @template {*} T\n * @typedef {Object} DeferredPromise\n * @property {Promise<T>} promise\n * @property {(value?: T) => void} resolve\n * @property {(reason?: any) => void} reject\n */\n\n/**\n * @template {*} T\n * @returns {DeferredPromise<T>} An object containing a promise and its resolve/reject methods.\n */\nfunction createDeferredPromise () {\n  let res\n  let rej\n  const promise = new Promise((resolve, reject) => {\n    res = resolve\n    rej = reject\n  })\n\n  return { promise, resolve: res, reject: rej }\n}\n\nmodule.exports = {\n  createDeferredPromise\n}\n","'use strict'\n\nconst util = require('../../core/util')\nconst {\n  ReadableStreamFrom,\n  readableStreamClose,\n  fullyReadBody,\n  extractMimeType\n} = require('./util')\nconst { FormData, setFormDataState } = require('./formdata')\nconst { webidl } = require('../webidl')\nconst assert = require('node:assert')\nconst { isErrored, isDisturbed } = require('node:stream')\nconst { isUint8Array } = require('node:util/types')\nconst { serializeAMimeType } = require('./data-url')\nconst { multipartFormDataParser } = require('./formdata-parser')\nconst { createDeferredPromise } = require('../../util/promise')\nconst { parseJSONFromBytes } = require('../infra')\nconst { utf8DecodeBytes } = require('../../encoding')\nconst { runtimeFeatures } = require('../../util/runtime-features.js')\n\nconst random = runtimeFeatures.has('crypto')\n  ? require('node:crypto').randomInt\n  : (max) => Math.floor(Math.random() * max)\n\nconst textEncoder = new TextEncoder()\nfunction noop () {}\n\nconst streamRegistry = new FinalizationRegistry((weakRef) => {\n  const stream = weakRef.deref()\n  if (stream && !stream.locked && !isDisturbed(stream) && !isErrored(stream)) {\n    stream.cancel('Response object has been garbage collected').catch(noop)\n  }\n})\n\n/**\n * Extract a body with type from a byte sequence or BodyInit object\n *\n * @param {import('../../../types').BodyInit} object - The BodyInit object to extract from\n * @param {boolean} [keepalive=false] - If true, indicates that the body\n * @returns {[{stream: ReadableStream, source: any, length: number | null}, string | null]} - Returns a tuple containing the body and its type\n *\n * @see https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n */\nfunction extractBody (object, keepalive = false) {\n  // 1. Let stream be null.\n  let stream = null\n  let controller = null\n\n  // 2. If object is a ReadableStream object, then set stream to object.\n  if (webidl.is.ReadableStream(object)) {\n    stream = object\n  } else if (webidl.is.Blob(object)) {\n    // 3. Otherwise, if object is a Blob object, set stream to the\n    //    result of running object’s get stream.\n    stream = object.stream()\n  } else {\n    // 4. Otherwise, set stream to a new ReadableStream object, and set\n    //    up stream with byte reading support.\n    stream = new ReadableStream({\n      pull () {},\n      start (c) {\n        controller = c\n      },\n      cancel () {},\n      type: 'bytes'\n    })\n  }\n\n  // 5. Assert: stream is a ReadableStream object.\n  assert(webidl.is.ReadableStream(stream))\n\n  // 6. Let action be null.\n  let action = null\n\n  // 7. Let source be null.\n  let source = null\n\n  // 8. Let length be null.\n  let length = null\n\n  // 9. Let type be null.\n  let type = null\n\n  // 10. Switch on object:\n  if (typeof object === 'string') {\n    // Set source to the UTF-8 encoding of object.\n    // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n    source = object\n\n    // Set type to `text/plain;charset=UTF-8`.\n    type = 'text/plain;charset=UTF-8'\n  } else if (webidl.is.URLSearchParams(object)) {\n    // URLSearchParams\n\n    // spec says to run application/x-www-form-urlencoded on body.list\n    // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n    // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n    // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n    // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.\n    source = object.toString()\n\n    // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n    type = 'application/x-www-form-urlencoded;charset=UTF-8'\n  } else if (webidl.is.BufferSource(object)) {\n    // Set source to a copy of the bytes held by object.\n    source = webidl.util.getCopyOfBytesHeldByBufferSource(object)\n  } else if (webidl.is.FormData(object)) {\n    const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`\n    const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n    /*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n    const formdataEscape = (str) =>\n      str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n    const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n    // Set action to this step: run the multipart/form-data\n    // encoding algorithm, with object’s entry list and UTF-8.\n    // - This ensures that the body is immutable and can't be changed afterwords\n    // - That the content-length is calculated in advance.\n    // - And that all parts are pre-encoded and ready to be sent.\n\n    const blobParts = []\n    const rn = new Uint8Array([13, 10]) // '\\r\\n'\n    length = 0\n    let hasUnknownSizeValue = false\n\n    for (const [name, value] of object) {\n      if (typeof value === 'string') {\n        const chunk = textEncoder.encode(prefix +\n          `; name=\"${formdataEscape(normalizeLinefeeds(name))}\"` +\n          `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n        blobParts.push(chunk)\n        length += chunk.byteLength\n      } else {\n        const chunk = textEncoder.encode(`${prefix}; name=\"${formdataEscape(normalizeLinefeeds(name))}\"` +\n          (value.name ? `; filename=\"${formdataEscape(value.name)}\"` : '') + '\\r\\n' +\n          `Content-Type: ${\n            value.type || 'application/octet-stream'\n          }\\r\\n\\r\\n`)\n        blobParts.push(chunk, value, rn)\n        if (typeof value.size === 'number') {\n          length += chunk.byteLength + value.size + rn.byteLength\n        } else {\n          hasUnknownSizeValue = true\n        }\n      }\n    }\n\n    // CRLF is appended to the body to function with legacy servers and match other implementations.\n    // https://github.com/curl/curl/blob/3434c6b46e682452973972e8313613dfa58cd690/lib/mime.c#L1029-L1030\n    // https://github.com/form-data/form-data/issues/63\n    const chunk = textEncoder.encode(`--${boundary}--\\r\\n`)\n    blobParts.push(chunk)\n    length += chunk.byteLength\n    if (hasUnknownSizeValue) {\n      length = null\n    }\n\n    // Set source to object.\n    source = object\n\n    action = async function * () {\n      for (const part of blobParts) {\n        if (part.stream) {\n          yield * part.stream()\n        } else {\n          yield part\n        }\n      }\n    }\n\n    // Set type to `multipart/form-data; boundary=`,\n    // followed by the multipart/form-data boundary string generated\n    // by the multipart/form-data encoding algorithm.\n    type = `multipart/form-data; boundary=${boundary}`\n  } else if (webidl.is.Blob(object)) {\n    // Blob\n\n    // Set source to object.\n    source = object\n\n    // Set length to object’s size.\n    length = object.size\n\n    // If object’s type attribute is not the empty byte sequence, set\n    // type to its value.\n    if (object.type) {\n      type = object.type\n    }\n  } else if (typeof object[Symbol.asyncIterator] === 'function') {\n    // If keepalive is true, then throw a TypeError.\n    if (keepalive) {\n      throw new TypeError('keepalive')\n    }\n\n    // If object is disturbed or locked, then throw a TypeError.\n    if (util.isDisturbed(object) || object.locked) {\n      throw new TypeError(\n        'Response body object should not be disturbed or locked'\n      )\n    }\n\n    stream =\n      webidl.is.ReadableStream(object) ? object : ReadableStreamFrom(object)\n  }\n\n  // 11. If source is a byte sequence, then set action to a\n  // step that returns source and length to source’s length.\n  if (typeof source === 'string' || isUint8Array(source)) {\n    action = () => {\n      length = typeof source === 'string' ? Buffer.byteLength(source) : source.length\n      return source\n    }\n  }\n\n  // 12. If action is non-null, then run these steps in parallel:\n  if (action != null) {\n    ;(async () => {\n      // 1. Run action.\n      const result = action()\n\n      // 2. Whenever one or more bytes are available and stream is not errored,\n      //    enqueue the result of creating a Uint8Array from the available bytes into stream.\n      const iterator = result?.[Symbol.asyncIterator]?.()\n      if (iterator) {\n        for await (const bytes of iterator) {\n          if (isErrored(stream)) break\n          if (bytes.length) {\n            controller.enqueue(new Uint8Array(bytes))\n          }\n        }\n      } else if (result?.length && !isErrored(stream)) {\n        controller.enqueue(typeof result === 'string' ? textEncoder.encode(result) : new Uint8Array(result))\n      }\n\n      // 3. When running action is done, close stream.\n      queueMicrotask(() => readableStreamClose(controller))\n    })()\n  }\n\n  // 13. Let body be a body whose stream is stream, source is source,\n  // and length is length.\n  const body = { stream, source, length }\n\n  // 14. Return (body, type).\n  return [body, type]\n}\n\n/**\n * @typedef {object} ExtractBodyResult\n * @property {ReadableStream<Uint8Array<ArrayBuffer>>} stream - The ReadableStream containing the body data\n * @property {any} source - The original source of the body data\n * @property {number | null} length - The length of the body data, or null\n */\n\n/**\n * Safely extract a body with type from a byte sequence or BodyInit object.\n *\n * @param {import('../../../types').BodyInit} object - The BodyInit object to extract from\n * @param {boolean} [keepalive=false] - If true, indicates that the body\n * @returns {[ExtractBodyResult, string | null]} - Returns a tuple containing the body and its type\n *\n * @see https://fetch.spec.whatwg.org/#bodyinit-safely-extract\n */\nfunction safelyExtractBody (object, keepalive = false) {\n  // To safely extract a body and a `Content-Type` value from\n  // a byte sequence or BodyInit object object, run these steps:\n\n  // 1. If object is a ReadableStream object, then:\n  if (webidl.is.ReadableStream(object)) {\n    // Assert: object is neither disturbed nor locked.\n    assert(!util.isDisturbed(object), 'The body has already been consumed.')\n    assert(!object.locked, 'The stream is locked.')\n  }\n\n  // 2. Return the results of extracting object.\n  return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n  // To clone a body body, run these steps:\n\n  // https://fetch.spec.whatwg.org/#concept-body-clone\n\n  // 1. Let « out1, out2 » be the result of teeing body’s stream.\n  const { 0: out1, 1: out2 } = body.stream.tee()\n\n  // 2. Set body’s stream to out1.\n  body.stream = out1\n\n  // 3. Return a body whose stream is out2 and other members are copied from body.\n  return {\n    stream: out2,\n    length: body.length,\n    source: body.source\n  }\n}\n\nfunction bodyMixinMethods (instance, getInternalState) {\n  const methods = {\n    blob () {\n      // The blob() method steps are to return the result of\n      // running consume body with this and the following step\n      // given a byte sequence bytes: return a Blob whose\n      // contents are bytes and whose type attribute is this’s\n      // MIME type.\n      return consumeBody(this, (bytes) => {\n        let mimeType = bodyMimeType(getInternalState(this))\n\n        if (mimeType === null) {\n          mimeType = ''\n        } else if (mimeType) {\n          mimeType = serializeAMimeType(mimeType)\n        }\n\n        // Return a Blob whose contents are bytes and type attribute\n        // is mimeType.\n        return new Blob([bytes], { type: mimeType })\n      }, instance, getInternalState)\n    },\n\n    arrayBuffer () {\n      // The arrayBuffer() method steps are to return the result\n      // of running consume body with this and the following step\n      // given a byte sequence bytes: return a new ArrayBuffer\n      // whose contents are bytes.\n      return consumeBody(this, (bytes) => {\n        return new Uint8Array(bytes).buffer\n      }, instance, getInternalState)\n    },\n\n    text () {\n      // The text() method steps are to return the result of running\n      // consume body with this and UTF-8 decode.\n      return consumeBody(this, utf8DecodeBytes, instance, getInternalState)\n    },\n\n    json () {\n      // The json() method steps are to return the result of running\n      // consume body with this and parse JSON from bytes.\n      return consumeBody(this, parseJSONFromBytes, instance, getInternalState)\n    },\n\n    formData () {\n      // The formData() method steps are to return the result of running\n      // consume body with this and the following step given a byte sequence bytes:\n      return consumeBody(this, (value) => {\n        // 1. Let mimeType be the result of get the MIME type with this.\n        const mimeType = bodyMimeType(getInternalState(this))\n\n        // 2. If mimeType is non-null, then switch on mimeType’s essence and run\n        //    the corresponding steps:\n        if (mimeType !== null) {\n          switch (mimeType.essence) {\n            case 'multipart/form-data': {\n              // 1. ... [long step]\n              // 2. If that fails for some reason, then throw a TypeError.\n              const parsed = multipartFormDataParser(value, mimeType)\n\n              // 3. Return a new FormData object, appending each entry,\n              //    resulting from the parsing operation, to its entry list.\n              const fd = new FormData()\n              setFormDataState(fd, parsed)\n\n              return fd\n            }\n            case 'application/x-www-form-urlencoded': {\n              // 1. Let entries be the result of parsing bytes.\n              const entries = new URLSearchParams(value.toString())\n\n              // 2. If entries is failure, then throw a TypeError.\n\n              // 3. Return a new FormData object whose entry list is entries.\n              const fd = new FormData()\n\n              for (const [name, value] of entries) {\n                fd.append(name, value)\n              }\n\n              return fd\n            }\n          }\n        }\n\n        // 3. Throw a TypeError.\n        throw new TypeError(\n          'Content-Type was not one of \"multipart/form-data\" or \"application/x-www-form-urlencoded\".'\n        )\n      }, instance, getInternalState)\n    },\n\n    bytes () {\n      // The bytes() method steps are to return the result of running consume body\n      // with this and the following step given a byte sequence bytes: return the\n      // result of creating a Uint8Array from bytes in this’s relevant realm.\n      return consumeBody(this, (bytes) => {\n        return new Uint8Array(bytes)\n      }, instance, getInternalState)\n    }\n  }\n\n  return methods\n}\n\nfunction mixinBody (prototype, getInternalState) {\n  Object.assign(prototype.prototype, bodyMixinMethods(prototype, getInternalState))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {any} object internal state\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {any} instance\n * @param {(target: any) => any} getInternalState\n */\nfunction consumeBody (object, convertBytesToJSValue, instance, getInternalState) {\n  try {\n    webidl.brandCheck(object, instance)\n  } catch (e) {\n    return Promise.reject(e)\n  }\n\n  object = getInternalState(object)\n\n  // 1. If object is unusable, then return a promise rejected\n  //    with a TypeError.\n  if (bodyUnusable(object)) {\n    return Promise.reject(new TypeError('Body is unusable: Body has already been read'))\n  }\n\n  // 2. Let promise be a new promise.\n  const promise = createDeferredPromise()\n\n  // 3. Let errorSteps given error be to reject promise with error.\n  const errorSteps = promise.reject\n\n  // 4. Let successSteps given a byte sequence data be to resolve\n  //    promise with the result of running convertBytesToJSValue\n  //    with data. If that threw an exception, then run errorSteps\n  //    with that exception.\n  const successSteps = (data) => {\n    try {\n      promise.resolve(convertBytesToJSValue(data))\n    } catch (e) {\n      errorSteps(e)\n    }\n  }\n\n  // 5. If object’s body is null, then run successSteps with an\n  //    empty byte sequence.\n  if (object.body == null) {\n    successSteps(Buffer.allocUnsafe(0))\n    return promise.promise\n  }\n\n  // 6. Otherwise, fully read object’s body given successSteps,\n  //    errorSteps, and object’s relevant global object.\n  fullyReadBody(object.body, successSteps, errorSteps)\n\n  // 7. Return promise.\n  return promise.promise\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-unusable\n * @param {any} object internal state\n */\nfunction bodyUnusable (object) {\n  const body = object.body\n\n  // An object including the Body interface mixin is\n  // said to be unusable if its body is non-null and\n  // its body’s stream is disturbed or locked.\n  return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {any} requestOrResponse internal state\n */\nfunction bodyMimeType (requestOrResponse) {\n  // 1. Let headers be null.\n  // 2. If requestOrResponse is a Request object, then set headers to requestOrResponse’s request’s header list.\n  // 3. Otherwise, set headers to requestOrResponse’s response’s header list.\n  /** @type {import('./headers').HeadersList} */\n  const headers = requestOrResponse.headersList\n\n  // 4. Let mimeType be the result of extracting a MIME type from headers.\n  const mimeType = extractMimeType(headers)\n\n  // 5. If mimeType is failure, then return null.\n  if (mimeType === 'failure') {\n    return null\n  }\n\n  // 6. Return mimeType.\n  return mimeType\n}\n\nmodule.exports = {\n  extractBody,\n  safelyExtractBody,\n  cloneBody,\n  mixinBody,\n  streamRegistry,\n  bodyUnusable\n}\n","'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('node:assert')\nconst util = require('../core/util.js')\nconst { channels } = require('../core/diagnostics.js')\nconst timers = require('../util/timers.js')\nconst {\n  RequestContentLengthMismatchError,\n  ResponseContentLengthMismatchError,\n  RequestAbortedError,\n  HeadersTimeoutError,\n  HeadersOverflowError,\n  SocketError,\n  InformationalError,\n  BodyTimeoutError,\n  HTTPParserError,\n  ResponseExceededMaxSizeError\n} = require('../core/errors.js')\nconst {\n  kUrl,\n  kReset,\n  kClient,\n  kParser,\n  kBlocking,\n  kRunning,\n  kPending,\n  kSize,\n  kWriting,\n  kQueue,\n  kNoRef,\n  kKeepAliveDefaultTimeout,\n  kHostHeader,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kPipelining,\n  kSocket,\n  kKeepAliveTimeoutValue,\n  kMaxHeadersSize,\n  kKeepAliveMaxTimeout,\n  kKeepAliveTimeoutThreshold,\n  kHeadersTimeout,\n  kBodyTimeout,\n  kStrictContentLength,\n  kMaxRequests,\n  kCounter,\n  kMaxResponseSize,\n  kOnError,\n  kResume,\n  kHTTPContext,\n  kClosed\n} = require('../core/symbols.js')\n\nconst constants = require('../llhttp/constants.js')\nconst EMPTY_BUF = Buffer.alloc(0)\nconst FastBuffer = Buffer[Symbol.species]\nconst removeAllListeners = util.removeAllListeners\nconst kIdleSocketValidation = Symbol('kIdleSocketValidation')\nconst kIdleSocketValidationTimeout = Symbol('kIdleSocketValidationTimeout')\nconst kSocketUsed = Symbol('kSocketUsed')\n\nlet extractBody\n\nfunction lazyllhttp () {\n  const llhttpWasmData = process.env.JEST_WORKER_ID ? require('../llhttp/llhttp-wasm.js') : undefined\n\n  let mod\n\n  // We disable wasm SIMD on ppc64 as it seems to be broken on Power 9 architectures.\n  let useWasmSIMD = process.arch !== 'ppc64'\n  // The Env Variable UNDICI_NO_WASM_SIMD allows explicitly overriding the default behavior\n  if (process.env.UNDICI_NO_WASM_SIMD === '1') {\n    useWasmSIMD = false\n  } else if (process.env.UNDICI_NO_WASM_SIMD === '0') {\n    useWasmSIMD = true\n  }\n\n  if (useWasmSIMD) {\n    try {\n      mod = new WebAssembly.Module(require('../llhttp/llhttp_simd-wasm.js'))\n    } catch {\n    }\n  }\n\n  if (!mod) {\n    // We could check if the error was caused by the simd option not\n    // being enabled, but the occurring of this other error\n    // * https://github.com/emscripten-core/emscripten/issues/11495\n    // got me to remove that check to avoid breaking Node 12.\n    mod = new WebAssembly.Module(llhttpWasmData || require('../llhttp/llhttp-wasm.js'))\n  }\n\n  return new WebAssembly.Instance(mod, {\n    env: {\n      /**\n       * @param {number} p\n       * @param {number} at\n       * @param {number} len\n       * @returns {number}\n       */\n      wasm_on_url: (p, at, len) => {\n        return 0\n      },\n      /**\n       * @param {number} p\n       * @param {number} at\n       * @param {number} len\n       * @returns {number}\n       */\n      wasm_on_status: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len))\n      },\n      /**\n       * @param {number} p\n       * @returns {number}\n       */\n      wasm_on_message_begin: (p) => {\n        assert(currentParser.ptr === p)\n        return currentParser.onMessageBegin()\n      },\n      /**\n       * @param {number} p\n       * @param {number} at\n       * @param {number} len\n       * @returns {number}\n       */\n      wasm_on_header_field: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len))\n      },\n      /**\n       * @param {number} p\n       * @param {number} at\n       * @param {number} len\n       * @returns {number}\n       */\n      wasm_on_header_value: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len))\n      },\n      /**\n       * @param {number} p\n       * @param {number} statusCode\n       * @param {0|1} upgrade\n       * @param {0|1} shouldKeepAlive\n       * @returns {number}\n       */\n      wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n        assert(currentParser.ptr === p)\n        return currentParser.onHeadersComplete(statusCode, upgrade === 1, shouldKeepAlive === 1)\n      },\n      /**\n       * @param {number} p\n       * @param {number} at\n       * @param {number} len\n       * @returns {number}\n       */\n      wasm_on_body: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len))\n      },\n      /**\n       * @param {number} p\n       * @returns {number}\n       */\n      wasm_on_message_complete: (p) => {\n        assert(currentParser.ptr === p)\n        return currentParser.onMessageComplete()\n      }\n\n    }\n  })\n}\n\nlet llhttpInstance = null\n\n/**\n * @type {Parser|null}\n */\nlet currentParser = null\nlet currentBufferRef = null\n/**\n * @type {number}\n */\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst USE_NATIVE_TIMER = 0\nconst USE_FAST_TIMER = 1\n\n// Use fast timers for headers and body to take eventual event loop\n// latency into account.\nconst TIMEOUT_HEADERS = 2 | USE_FAST_TIMER\nconst TIMEOUT_BODY = 4 | USE_FAST_TIMER\n\n// Use native timers to ignore event loop latency for keep-alive\n// handling.\nconst TIMEOUT_KEEP_ALIVE = 8 | USE_NATIVE_TIMER\n\nclass Parser {\n  /**\n     * @param {import('./client.js')} client\n     * @param {import('net').Socket} socket\n     * @param {*} llhttp\n     */\n  constructor (client, socket, { exports }) {\n    this.llhttp = exports\n    this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n    this.client = client\n    /**\n     * @type {import('net').Socket}\n     */\n    this.socket = socket\n    this.timeout = null\n    this.timeoutWeakRef = new WeakRef(this)\n    this.timeoutValue = null\n    this.timeoutType = null\n    this.statusCode = 0\n    this.statusText = ''\n    this.upgrade = false\n    this.headers = []\n    this.headersSize = 0\n    this.headersMaxSize = client[kMaxHeadersSize]\n    this.shouldKeepAlive = false\n    this.paused = false\n    this.resume = this.resume.bind(this)\n\n    this.bytesRead = 0\n\n    this.keepAlive = ''\n    this.contentLength = ''\n    this.connection = ''\n    this.maxResponseSize = client[kMaxResponseSize]\n  }\n\n  setTimeout (delay, type) {\n    // If the existing timer and the new timer are of different timer type\n    // (fast or native) or have different delay, we need to clear the existing\n    // timer and set a new one.\n    if (\n      delay !== this.timeoutValue ||\n      (type & USE_FAST_TIMER) ^ (this.timeoutType & USE_FAST_TIMER)\n    ) {\n      // If a timeout is already set, clear it with clearTimeout of the fast\n      // timer implementation, as it can clear fast and native timers.\n      if (this.timeout) {\n        timers.clearTimeout(this.timeout)\n        this.timeout = null\n      }\n\n      if (delay) {\n        if (type & USE_FAST_TIMER) {\n          this.timeout = timers.setFastTimeout(onParserTimeout, delay, this.timeoutWeakRef)\n        } else {\n          this.timeout = setTimeout(onParserTimeout, delay, this.timeoutWeakRef)\n          this.timeout?.unref()\n        }\n      }\n\n      this.timeoutValue = delay\n    } else if (this.timeout) {\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    this.timeoutType = type\n  }\n\n  resume () {\n    if (this.socket.destroyed || !this.paused) {\n      return\n    }\n\n    assert(this.ptr != null)\n    assert(currentParser === null)\n\n    this.llhttp.llhttp_resume(this.ptr)\n\n    assert(this.timeoutType === TIMEOUT_BODY)\n    if (this.timeout) {\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    this.paused = false\n    this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n    this.readMore()\n  }\n\n  readMore () {\n    while (!this.paused && this.ptr) {\n      const chunk = this.socket.read()\n      if (chunk === null) {\n        break\n      }\n      this.execute(chunk)\n    }\n  }\n\n  /**\n   * @param {Buffer} chunk\n   */\n  execute (chunk) {\n    assert(currentParser === null)\n    assert(this.ptr != null)\n    assert(!this.paused)\n\n    const { socket, llhttp } = this\n\n    // Allocate a new buffer if the current buffer is too small.\n    if (chunk.length > currentBufferSize) {\n      if (currentBufferPtr) {\n        llhttp.free(currentBufferPtr)\n      }\n      // Allocate a buffer that is a multiple of 4096 bytes.\n      currentBufferSize = Math.ceil(chunk.length / 4096) * 4096\n      currentBufferPtr = llhttp.malloc(currentBufferSize)\n    }\n\n    new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(chunk)\n\n    // Call `execute` on the wasm parser.\n    // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n    // and finally the length of bytes to parse.\n    // The return value is an error code or `constants.ERROR.OK`.\n    try {\n      let ret\n\n      try {\n        currentBufferRef = chunk\n        currentParser = this\n        ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, chunk.length)\n      } finally {\n        currentParser = null\n        currentBufferRef = null\n      }\n\n      if (ret !== constants.ERROR.OK) {\n        const data = chunk.subarray(llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr)\n\n        if (ret === constants.ERROR.PAUSED_UPGRADE) {\n          this.onUpgrade(data)\n        } else if (ret === constants.ERROR.PAUSED) {\n          this.paused = true\n          socket.unshift(data)\n        } else {\n          throw this.createError(ret, data)\n        }\n      }\n    } catch (err) {\n      util.destroy(socket, err)\n    }\n  }\n\n  finish () {\n    assert(currentParser === null)\n    assert(this.ptr != null)\n    assert(!this.paused)\n\n    const { llhttp } = this\n\n    let ret\n\n    try {\n      currentParser = this\n      ret = llhttp.llhttp_finish(this.ptr)\n    } finally {\n      currentParser = null\n    }\n\n    if (ret === constants.ERROR.OK) {\n      return null\n    }\n\n    if (ret === constants.ERROR.PAUSED || ret === constants.ERROR.PAUSED_UPGRADE) {\n      this.paused = true\n      return null\n    }\n\n    return this.createError(ret, EMPTY_BUF)\n  }\n\n  createError (ret, data) {\n    const { llhttp, contentLength, bytesRead } = this\n\n    if (contentLength && bytesRead !== parseInt(contentLength, 10)) {\n      return new ResponseContentLengthMismatchError()\n    }\n\n    const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n    let message = ''\n    if (ptr) {\n      const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n      message =\n        'Response does not match the HTTP/1.1 protocol (' +\n        Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n        ')'\n    }\n\n    return new HTTPParserError(message, constants.ERROR[ret], data)\n  }\n\n  destroy () {\n    assert(currentParser === null)\n    assert(this.ptr != null)\n\n    this.llhttp.llhttp_free(this.ptr)\n    this.ptr = null\n\n    this.timeout && timers.clearTimeout(this.timeout)\n    this.timeout = null\n    this.timeoutValue = null\n    this.timeoutType = null\n\n    this.paused = false\n  }\n\n  /**\n   * @param {Buffer} buf\n   * @returns {0}\n   */\n  onStatus (buf) {\n    this.statusText = buf.toString()\n    return 0\n  }\n\n  /**\n   * @returns {0|-1}\n   */\n  onMessageBegin () {\n    const { socket, client } = this\n\n    if (socket.destroyed) {\n      return -1\n    }\n\n    if (client[kRunning] === 0) {\n      util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n    if (!request) {\n      return -1\n    }\n    request.onResponseStarted()\n\n    return 0\n  }\n\n  /**\n   * @param {Buffer} buf\n   * @returns {number}\n   */\n  onHeaderField (buf) {\n    const len = this.headers.length\n\n    if ((len & 1) === 0) {\n      this.headers.push(buf)\n    } else {\n      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n    }\n\n    this.trackHeader(buf.length)\n\n    return 0\n  }\n\n  /**\n   * @param {Buffer} buf\n   * @returns {number}\n   */\n  onHeaderValue (buf) {\n    let len = this.headers.length\n\n    if ((len & 1) === 1) {\n      this.headers.push(buf)\n      len += 1\n    } else {\n      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n    }\n\n    const key = this.headers[len - 2]\n    if (key.length === 10) {\n      const headerName = util.bufferToLowerCasedHeaderName(key)\n      if (headerName === 'keep-alive') {\n        this.keepAlive += buf.toString()\n      } else if (headerName === 'connection') {\n        this.connection += buf.toString()\n      }\n    } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === 'content-length') {\n      this.contentLength += buf.toString()\n    }\n\n    this.trackHeader(buf.length)\n\n    return 0\n  }\n\n  /**\n   * @param {number} len\n   */\n  trackHeader (len) {\n    this.headersSize += len\n    if (this.headersSize >= this.headersMaxSize) {\n      util.destroy(this.socket, new HeadersOverflowError())\n    }\n  }\n\n  /**\n   * @param {Buffer} head\n   */\n  onUpgrade (head) {\n    const { upgrade, client, socket, headers, statusCode } = this\n\n    assert(upgrade)\n    assert(client[kSocket] === socket)\n    assert(!socket.destroyed)\n    assert(!this.paused)\n    assert((headers.length & 1) === 0)\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n    assert(request.upgrade || request.method === 'CONNECT')\n\n    this.statusCode = 0\n    this.statusText = ''\n    this.shouldKeepAlive = false\n\n    this.headers = []\n    this.headersSize = 0\n\n    socket.unshift(head)\n\n    socket[kParser].destroy()\n    socket[kParser] = null\n\n    socket[kClient] = null\n    socket[kError] = null\n\n    removeAllListeners(socket)\n\n    client[kSocket] = null\n    client[kHTTPContext] = null // TODO (fix): This is hacky...\n    client[kQueue][client[kRunningIdx]++] = null\n    client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n    try {\n      request.onUpgrade(statusCode, headers, socket)\n    } catch (err) {\n      util.destroy(socket, err)\n    }\n\n    client[kResume]()\n  }\n\n  /**\n   * @param {number} statusCode\n   * @param {boolean} upgrade\n   * @param {boolean} shouldKeepAlive\n   * @returns {number}\n   */\n  onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n    const { client, socket, headers, statusText } = this\n\n    if (socket.destroyed) {\n      return -1\n    }\n\n    if (client[kRunning] === 0) {\n      util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n\n    if (!request) {\n      return -1\n    }\n\n    assert(!this.upgrade)\n    assert(this.statusCode < 200)\n\n    if (statusCode === 100) {\n      util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    /* this can only happen if server is misbehaving */\n    if (upgrade && !request.upgrade) {\n      util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    assert(this.timeoutType === TIMEOUT_HEADERS)\n\n    this.statusCode = statusCode\n    this.shouldKeepAlive = (\n      shouldKeepAlive ||\n      // Override llhttp value which does not allow keepAlive for HEAD.\n      (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n    )\n\n    if (this.statusCode >= 200) {\n      const bodyTimeout = request.bodyTimeout != null\n        ? request.bodyTimeout\n        : client[kBodyTimeout]\n      this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n    } else if (this.timeout) {\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    if (request.method === 'CONNECT') {\n      assert(client[kRunning] === 1)\n      this.upgrade = true\n      return 2\n    }\n\n    if (upgrade) {\n      assert(client[kRunning] === 1)\n      this.upgrade = true\n      return 2\n    }\n\n    assert((this.headers.length & 1) === 0)\n    this.headers = []\n    this.headersSize = 0\n\n    if (this.shouldKeepAlive && client[kPipelining]) {\n      const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n      if (keepAliveTimeout != null) {\n        const timeout = Math.min(\n          keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n          client[kKeepAliveMaxTimeout]\n        )\n        if (timeout <= 0) {\n          socket[kReset] = true\n        } else {\n          client[kKeepAliveTimeoutValue] = timeout\n        }\n      } else {\n        client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n      }\n    } else {\n      // Stop more requests from being dispatched.\n      socket[kReset] = true\n    }\n\n    const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n    if (request.aborted) {\n      return -1\n    }\n\n    if (request.method === 'HEAD') {\n      return 1\n    }\n\n    if (statusCode < 200) {\n      return 1\n    }\n\n    if (socket[kBlocking]) {\n      socket[kBlocking] = false\n      client[kResume]()\n    }\n\n    return pause ? constants.ERROR.PAUSED : 0\n  }\n\n  /**\n   * @param {Buffer} buf\n   * @returns {number}\n   */\n  onBody (buf) {\n    const { client, socket, statusCode, maxResponseSize } = this\n\n    if (socket.destroyed) {\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n\n    assert(this.timeoutType === TIMEOUT_BODY)\n    if (this.timeout) {\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    assert(statusCode >= 200)\n\n    if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n      util.destroy(socket, new ResponseExceededMaxSizeError())\n      return -1\n    }\n\n    this.bytesRead += buf.length\n\n    if (request.onData(buf) === false) {\n      return constants.ERROR.PAUSED\n    }\n\n    return 0\n  }\n\n  /**\n   * @returns {number}\n   */\n  onMessageComplete () {\n    const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n    if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n      return -1\n    }\n\n    if (upgrade) {\n      return 0\n    }\n\n    assert(statusCode >= 100)\n    assert((this.headers.length & 1) === 0)\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n\n    this.statusCode = 0\n    this.statusText = ''\n    this.bytesRead = 0\n    this.contentLength = ''\n    this.keepAlive = ''\n    this.connection = ''\n\n    this.headers = []\n    this.headersSize = 0\n\n    if (statusCode < 200) {\n      return 0\n    }\n\n    if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n      util.destroy(socket, new ResponseContentLengthMismatchError())\n      return -1\n    }\n\n    request.onComplete(headers)\n\n    client[kQueue][client[kRunningIdx]++] = null\n    socket[kSocketUsed] = client[kPending] === 0\n\n    if (socket[kWriting]) {\n      assert(client[kRunning] === 0)\n      // Response completed before request.\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (!shouldKeepAlive) {\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (socket[kReset] && client[kRunning] === 0) {\n      // Destroy socket once all requests have completed.\n      // The request at the tail of the pipeline is the one\n      // that requested reset and no further requests should\n      // have been queued since then.\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (client[kPipelining] == null || client[kPipelining] === 1) {\n      // We must wait a full event loop cycle to reuse this socket to make sure\n      // that non-spec compliant servers are not closing the connection even if they\n      // said they won't.\n      setImmediate(client[kResume])\n    } else {\n      client[kResume]()\n    }\n\n    return 0\n  }\n}\n\nfunction onParserTimeout (parserWeakRef) {\n  const parser = parserWeakRef.deref()\n  if (!parser) {\n    return\n  }\n\n  const { socket, timeoutType, client, paused } = parser\n\n  if (timeoutType === TIMEOUT_HEADERS) {\n    if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n      assert(!paused, 'cannot be paused while waiting for headers')\n      util.destroy(socket, new HeadersTimeoutError())\n    }\n  } else if (timeoutType === TIMEOUT_BODY) {\n    if (!paused) {\n      util.destroy(socket, new BodyTimeoutError())\n    }\n  } else if (timeoutType === TIMEOUT_KEEP_ALIVE) {\n    assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n    util.destroy(socket, new InformationalError('socket idle timeout'))\n  }\n}\n\n/**\n * @param {import ('./client.js')} client\n * @param {import('net').Socket} socket\n * @returns\n */\nfunction connectH1 (client, socket) {\n  client[kSocket] = socket\n\n  if (!llhttpInstance) {\n    llhttpInstance = lazyllhttp()\n  }\n\n  if (socket.errored) {\n    throw socket.errored\n  }\n\n  if (socket.destroyed) {\n    throw new SocketError('destroyed')\n  }\n\n  socket[kNoRef] = false\n  socket[kWriting] = false\n  socket[kReset] = false\n  socket[kBlocking] = false\n  socket[kIdleSocketValidation] = 0\n  socket[kIdleSocketValidationTimeout] = null\n  socket[kSocketUsed] = false\n  socket[kParser] = new Parser(client, socket, llhttpInstance)\n\n  util.addListener(socket, 'error', onHttpSocketError)\n  util.addListener(socket, 'readable', onHttpSocketReadable)\n  util.addListener(socket, 'end', onHttpSocketEnd)\n  util.addListener(socket, 'close', onHttpSocketClose)\n\n  socket[kClosed] = false\n  socket.on('close', onSocketClose)\n\n  return {\n    version: 'h1',\n    defaultPipelining: 1,\n    write (request) {\n      return writeH1(client, request)\n    },\n    resume () {\n      resumeH1(client)\n    },\n    /**\n     * @param {Error|undefined} err\n     * @param {() => void} callback\n     */\n    destroy (err, callback) {\n      if (socket[kClosed]) {\n        queueMicrotask(callback)\n      } else {\n        socket.on('close', callback)\n        socket.destroy(err)\n      }\n    },\n    /**\n     * @returns {boolean}\n     */\n    get destroyed () {\n      return socket.destroyed\n    },\n    /**\n     * @param {import('../core/request.js')} request\n     * @returns {boolean}\n     */\n    busy (request) {\n      if (socket[kWriting] || socket[kReset] || socket[kBlocking] || socket[kIdleSocketValidation] === 1) {\n        return true\n      }\n\n      if (request) {\n        if (client[kRunning] > 0 && !request.idempotent) {\n          // Non-idempotent request cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          return true\n        }\n\n        if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n          // Don't dispatch an upgrade until all preceding requests have completed.\n          // A misbehaving server might upgrade the connection before all pipelined\n          // request has completed.\n          return true\n        }\n\n        if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n          (util.isStream(request.body) || util.isAsyncIterable(request.body) || util.isFormDataLike(request.body))) {\n          // Request with stream or iterator body can error while other requests\n          // are inflight and indirectly error those as well.\n          // Ensure this doesn't happen by waiting for inflight\n          // to complete before dispatching.\n\n          // Request with stream or iterator body cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          return true\n        }\n      }\n\n      return false\n    }\n  }\n}\n\nfunction onHttpSocketError (err) {\n  assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n  const parser = this[kParser]\n\n  // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n  // to the user.\n  if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n    const parserErr = parser.finish()\n    if (parserErr) {\n      this[kError] = parserErr\n      this[kClient][kOnError](parserErr)\n    }\n    return\n  }\n\n  this[kError] = err\n\n  this[kClient][kOnError](err)\n}\n\nfunction onHttpSocketReadable () {\n  this[kParser]?.readMore()\n}\n\nfunction onHttpSocketEnd () {\n  const parser = this[kParser]\n\n  if (parser.statusCode && !parser.shouldKeepAlive) {\n    const parserErr = parser.finish()\n    if (parserErr) {\n      util.destroy(this, parserErr)\n    }\n    return\n  }\n\n  util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onHttpSocketClose () {\n  const parser = this[kParser]\n\n  clearIdleSocketValidation(this)\n\n  if (parser) {\n    if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n      this[kError] = parser.finish() || this[kError]\n    }\n\n    this[kParser].destroy()\n    this[kParser] = null\n  }\n\n  const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n  const client = this[kClient]\n\n  client[kSocket] = null\n  client[kHTTPContext] = null // TODO (fix): This is hacky...\n\n  if (client.destroyed) {\n    assert(client[kPending] === 0)\n\n    // Fail entire queue.\n    const requests = client[kQueue].splice(client[kRunningIdx])\n    for (let i = 0; i < requests.length; i++) {\n      const request = requests[i]\n      util.errorRequest(client, request, err)\n    }\n  } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n    // Fail head of pipeline.\n    const request = client[kQueue][client[kRunningIdx]]\n    client[kQueue][client[kRunningIdx]++] = null\n\n    util.errorRequest(client, request, err)\n  }\n\n  client[kPendingIdx] = client[kRunningIdx]\n\n  assert(client[kRunning] === 0)\n\n  client.emit('disconnect', client[kUrl], [client], err)\n\n  client[kResume]()\n}\n\nfunction onSocketClose () {\n  this[kClosed] = true\n}\n\nfunction clearIdleSocketValidation (socket) {\n  if (socket[kIdleSocketValidationTimeout]) {\n    clearTimeout(socket[kIdleSocketValidationTimeout])\n    socket[kIdleSocketValidationTimeout] = null\n  }\n\n  socket[kIdleSocketValidation] = 0\n}\n\nfunction scheduleIdleSocketValidation (client, socket) {\n  socket[kIdleSocketValidation] = 1\n  socket[kIdleSocketValidationTimeout] = setTimeout(() => {\n    socket[kIdleSocketValidationTimeout] = null\n    socket[kIdleSocketValidation] = 2\n\n    if (client[kSocket] === socket && !socket.destroyed) {\n      client[kResume]()\n    }\n  }, 0)\n  socket[kIdleSocketValidationTimeout].unref?.()\n}\n\n/**\n * @param {import('./client.js')} client\n */\nfunction resumeH1 (client) {\n  const socket = client[kSocket]\n\n  if (socket && !socket.destroyed) {\n    if (client[kSize] === 0) {\n      if (!socket[kNoRef] && socket.unref) {\n        socket.unref()\n        socket[kNoRef] = true\n      }\n    } else if (socket[kNoRef] && socket.ref) {\n      socket.ref()\n      socket[kNoRef] = false\n    }\n\n    if (client[kRunning] === 0 && client[kPending] > 0 && socket[kSocketUsed]) {\n      if (socket[kIdleSocketValidation] === 0) {\n        scheduleIdleSocketValidation(client, socket)\n        socket[kParser].readMore()\n        if (socket.destroyed) {\n          return\n        }\n        return\n      }\n\n      if (socket[kIdleSocketValidation] === 1) {\n        socket[kParser].readMore()\n        if (socket.destroyed) {\n          return\n        }\n        return\n      }\n    }\n\n    if (client[kRunning] === 0) {\n      socket[kParser].readMore()\n      if (socket.destroyed) {\n        return\n      }\n    }\n\n    if (client[kSize] === 0) {\n      if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) {\n        socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE)\n      }\n    } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n      if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n        const request = client[kQueue][client[kRunningIdx]]\n        const headersTimeout = request.headersTimeout != null\n          ? request.headersTimeout\n          : client[kHeadersTimeout]\n        socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n      }\n    }\n  }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n  return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\n/**\n * @param {import('./client.js')} client\n * @param {import('../core/request.js')} request\n * @returns\n */\nfunction writeH1 (client, request) {\n  const { method, path, host, upgrade, blocking, reset } = request\n\n  let { body, headers, contentLength } = request\n\n  // https://tools.ietf.org/html/rfc7231#section-4.3.1\n  // https://tools.ietf.org/html/rfc7231#section-4.3.2\n  // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n  // Sending a payload body on a request that does not\n  // expect it can cause undefined behavior on some\n  // servers and corrupt connection state. Do not\n  // re-use the connection for further requests.\n\n  const expectsPayload = (\n    method === 'PUT' ||\n    method === 'POST' ||\n    method === 'PATCH' ||\n    method === 'QUERY' ||\n    method === 'PROPFIND' ||\n    method === 'PROPPATCH'\n  )\n\n  if (util.isFormDataLike(body)) {\n    if (!extractBody) {\n      extractBody = require('../web/fetch/body.js').extractBody\n    }\n\n    const [bodyStream, contentType] = extractBody(body)\n    if (request.contentType == null) {\n      headers.push('content-type', contentType)\n    }\n    body = bodyStream.stream\n    contentLength = bodyStream.length\n  } else if (util.isBlobLike(body) && request.contentType == null && body.type) {\n    headers.push('content-type', body.type)\n  }\n\n  if (body && typeof body.read === 'function') {\n    // Try to read EOF in order to get length.\n    body.read(0)\n  }\n\n  const bodyLength = util.bodyLength(body)\n\n  contentLength = bodyLength ?? contentLength\n\n  if (contentLength === null) {\n    contentLength = request.contentLength\n  }\n\n  if (contentLength === 0 && !expectsPayload) {\n    // https://tools.ietf.org/html/rfc7230#section-3.3.2\n    // A user agent SHOULD NOT send a Content-Length header field when\n    // the request message does not contain a payload body and the method\n    // semantics do not anticipate such a body.\n\n    contentLength = null\n  }\n\n  // https://github.com/nodejs/undici/issues/2046\n  // A user agent may send a Content-Length header with 0 value, this should be allowed.\n  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n    if (client[kStrictContentLength]) {\n      util.errorRequest(client, request, new RequestContentLengthMismatchError())\n      return false\n    }\n\n    process.emitWarning(new RequestContentLengthMismatchError())\n  }\n\n  const socket = client[kSocket]\n  clearIdleSocketValidation(socket)\n\n  /**\n   * @param {Error} [err]\n   * @returns {void}\n   */\n  const abort = (err) => {\n    if (request.aborted || request.completed) {\n      return\n    }\n\n    util.errorRequest(client, request, err || new RequestAbortedError())\n\n    util.destroy(body)\n    util.destroy(socket, new InformationalError('aborted'))\n  }\n\n  try {\n    request.onConnect(abort)\n  } catch (err) {\n    util.errorRequest(client, request, err)\n  }\n\n  if (request.aborted) {\n    return false\n  }\n\n  if (method === 'HEAD') {\n    // https://github.com/mcollina/undici/issues/258\n    // Close after a HEAD request to interop with misbehaving servers\n    // that may send a body in the response.\n\n    socket[kReset] = true\n  }\n\n  if (upgrade || method === 'CONNECT') {\n    // On CONNECT or upgrade, block pipeline from dispatching further\n    // requests on this connection.\n\n    socket[kReset] = true\n  }\n\n  if (reset != null) {\n    socket[kReset] = reset\n  }\n\n  if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n    socket[kReset] = true\n  }\n\n  if (blocking) {\n    socket[kBlocking] = true\n  }\n\n  if (socket.setTypeOfService) {\n    socket.setTypeOfService(request.typeOfService)\n  }\n\n  let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n  if (typeof host === 'string') {\n    header += `host: ${host}\\r\\n`\n  } else {\n    header += client[kHostHeader]\n  }\n\n  if (upgrade) {\n    header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n  } else if (client[kPipelining] && !socket[kReset]) {\n    header += 'connection: keep-alive\\r\\n'\n  } else {\n    header += 'connection: close\\r\\n'\n  }\n\n  if (Array.isArray(headers)) {\n    for (let n = 0; n < headers.length; n += 2) {\n      const key = headers[n + 0]\n      const val = headers[n + 1]\n\n      if (Array.isArray(val)) {\n        for (let i = 0; i < val.length; i++) {\n          header += `${key}: ${val[i]}\\r\\n`\n        }\n      } else {\n        header += `${key}: ${val}\\r\\n`\n      }\n    }\n  }\n\n  if (channels.sendHeaders.hasSubscribers) {\n    channels.sendHeaders.publish({ request, headers: header, socket })\n  }\n\n  if (!body || bodyLength === 0) {\n    writeBuffer(abort, null, client, request, socket, contentLength, header, expectsPayload)\n  } else if (util.isBuffer(body)) {\n    writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload)\n  } else if (util.isBlobLike(body)) {\n    if (typeof body.stream === 'function') {\n      writeIterable(abort, body.stream(), client, request, socket, contentLength, header, expectsPayload)\n    } else {\n      writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload)\n    }\n  } else if (util.isStream(body)) {\n    writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload)\n  } else if (util.isIterable(body)) {\n    writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload)\n  } else {\n    assert(false)\n  }\n\n  return true\n}\n\n/**\n * @param {AbortCallback} abort\n * @param {import('stream').Stream} body\n * @param {import('./client.js')} client\n * @param {import('../core/request.js')} request\n * @param {import('net').Socket} socket\n * @param {number} contentLength\n * @param {string} header\n * @param {boolean} expectsPayload\n */\nfunction writeStream (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n  let finished = false\n\n  const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })\n\n  /**\n   * @param {Buffer} chunk\n   * @returns {void}\n   */\n  const onData = function (chunk) {\n    if (finished) {\n      return\n    }\n\n    try {\n      if (!writer.write(chunk) && this.pause) {\n        this.pause()\n      }\n    } catch (err) {\n      util.destroy(this, err)\n    }\n  }\n\n  /**\n   * @returns {void}\n   */\n  const onDrain = function () {\n    if (finished) {\n      return\n    }\n\n    if (body.resume) {\n      body.resume()\n    }\n  }\n\n  /**\n   * @returns {void}\n   */\n  const onClose = function () {\n    // 'close' might be emitted *before* 'error' for\n    // broken streams. Wait a tick to avoid this case.\n    queueMicrotask(() => {\n      // It's only safe to remove 'error' listener after\n      // 'close'.\n      body.removeListener('error', onFinished)\n    })\n\n    if (!finished) {\n      const err = new RequestAbortedError()\n      queueMicrotask(() => onFinished(err))\n    }\n  }\n\n  /**\n   * @param {Error} [err]\n   * @returns\n   */\n  const onFinished = function (err) {\n    if (finished) {\n      return\n    }\n\n    finished = true\n\n    assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n    socket\n      .off('drain', onDrain)\n      .off('error', onFinished)\n\n    body\n      .removeListener('data', onData)\n      .removeListener('end', onFinished)\n      .removeListener('close', onClose)\n\n    if (!err) {\n      try {\n        writer.end()\n      } catch (er) {\n        err = er\n      }\n    }\n\n    writer.destroy(err)\n\n    if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n      util.destroy(body, err)\n    } else {\n      util.destroy(body)\n    }\n  }\n\n  body\n    .on('data', onData)\n    .on('end', onFinished)\n    .on('error', onFinished)\n    .on('close', onClose)\n\n  if (body.resume) {\n    body.resume()\n  }\n\n  socket\n    .on('drain', onDrain)\n    .on('error', onFinished)\n\n  if (body.errorEmitted ?? body.errored) {\n    setImmediate(onFinished, body.errored)\n  } else if (body.endEmitted ?? body.readableEnded) {\n    setImmediate(onFinished, null)\n  }\n\n  if (body.closeEmitted ?? body.closed) {\n    setImmediate(onClose)\n  }\n}\n\n/**\n * @typedef AbortCallback\n * @type {Function}\n * @param {Error} [err]\n * @returns {void}\n */\n\n/**\n * @param {AbortCallback} abort\n * @param {Uint8Array|null} body\n * @param {import('./client.js')} client\n * @param {import('../core/request.js')} request\n * @param {import('net').Socket} socket\n * @param {number} contentLength\n * @param {string} header\n * @param {boolean} expectsPayload\n * @returns {void}\n */\nfunction writeBuffer (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  try {\n    if (!body) {\n      if (contentLength === 0) {\n        socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n      } else {\n        assert(contentLength === null, 'no body must not have content length')\n        socket.write(`${header}\\r\\n`, 'latin1')\n      }\n    } else if (util.isBuffer(body)) {\n      assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n      socket.cork()\n      socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n      socket.write(body)\n      socket.uncork()\n      request.onBodySent(body)\n\n      if (!expectsPayload && request.reset !== false) {\n        socket[kReset] = true\n      }\n    }\n    request.onRequestSent()\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\n/**\n * @param {AbortCallback} abort\n * @param {Blob} body\n * @param {import('./client.js')} client\n * @param {import('../core/request.js')} request\n * @param {import('net').Socket} socket\n * @param {number} contentLength\n * @param {string} header\n * @param {boolean} expectsPayload\n * @returns {Promise<void>}\n */\nasync function writeBlob (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  assert(contentLength === body.size, 'blob body must have content length')\n\n  try {\n    if (contentLength != null && contentLength !== body.size) {\n      throw new RequestContentLengthMismatchError()\n    }\n\n    const buffer = Buffer.from(await body.arrayBuffer())\n\n    socket.cork()\n    socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n    socket.write(buffer)\n    socket.uncork()\n\n    request.onBodySent(buffer)\n    request.onRequestSent()\n\n    if (!expectsPayload && request.reset !== false) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\n/**\n * @param {AbortCallback} abort\n * @param {Iterable} body\n * @param {import('./client.js')} client\n * @param {import('../core/request.js')} request\n * @param {import('net').Socket} socket\n * @param {number} contentLength\n * @param {string} header\n * @param {boolean} expectsPayload\n * @returns {Promise<void>}\n */\nasync function writeIterable (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n  let callback = null\n  function onDrain () {\n    if (callback) {\n      const cb = callback\n      callback = null\n      cb()\n    }\n  }\n\n  const waitForDrain = () => new Promise((resolve, reject) => {\n    assert(callback === null)\n\n    if (socket[kError]) {\n      reject(socket[kError])\n    } else {\n      callback = resolve\n    }\n  })\n\n  socket\n    .on('close', onDrain)\n    .on('drain', onDrain)\n\n  const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })\n  try {\n    // It's up to the user to somehow abort the async iterable.\n    for await (const chunk of body) {\n      if (socket[kError]) {\n        throw socket[kError]\n      }\n\n      if (!writer.write(chunk)) {\n        await waitForDrain()\n      }\n    }\n\n    writer.end()\n  } catch (err) {\n    writer.destroy(err)\n  } finally {\n    socket\n      .off('close', onDrain)\n      .off('drain', onDrain)\n  }\n}\n\nclass AsyncWriter {\n  /**\n   *\n   * @param {object} arg\n   * @param {AbortCallback} arg.abort\n   * @param {import('net').Socket} arg.socket\n   * @param {import('../core/request.js')} arg.request\n   * @param {number} arg.contentLength\n   * @param {import('./client.js')} arg.client\n   * @param {boolean} arg.expectsPayload\n   * @param {string} arg.header\n   */\n  constructor ({ abort, socket, request, contentLength, client, expectsPayload, header }) {\n    this.socket = socket\n    this.request = request\n    this.contentLength = contentLength\n    this.client = client\n    this.bytesWritten = 0\n    this.expectsPayload = expectsPayload\n    this.header = header\n    this.abort = abort\n\n    socket[kWriting] = true\n  }\n\n  /**\n   * @param {Buffer} chunk\n   * @returns\n   */\n  write (chunk) {\n    const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n    if (socket[kError]) {\n      throw socket[kError]\n    }\n\n    if (socket.destroyed) {\n      return false\n    }\n\n    const len = Buffer.byteLength(chunk)\n    if (!len) {\n      return true\n    }\n\n    // We should defer writing chunks.\n    if (contentLength !== null && bytesWritten + len > contentLength) {\n      if (client[kStrictContentLength]) {\n        throw new RequestContentLengthMismatchError()\n      }\n\n      process.emitWarning(new RequestContentLengthMismatchError())\n    }\n\n    socket.cork()\n\n    if (bytesWritten === 0) {\n      if (!expectsPayload && request.reset !== false) {\n        socket[kReset] = true\n      }\n\n      if (contentLength === null) {\n        socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n      } else {\n        socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n      }\n    }\n\n    if (contentLength === null) {\n      socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n    }\n\n    this.bytesWritten += len\n\n    const ret = socket.write(chunk)\n\n    socket.uncork()\n\n    request.onBodySent(chunk)\n\n    if (!ret) {\n      if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n        if (socket[kParser].timeout.refresh) {\n          socket[kParser].timeout.refresh()\n        }\n      }\n    }\n\n    return ret\n  }\n\n  /**\n   * @returns {void}\n   */\n  end () {\n    const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n    request.onRequestSent()\n\n    socket[kWriting] = false\n\n    if (socket[kError]) {\n      throw socket[kError]\n    }\n\n    if (socket.destroyed) {\n      return\n    }\n\n    if (bytesWritten === 0) {\n      if (expectsPayload) {\n        // https://tools.ietf.org/html/rfc7230#section-3.3.2\n        // A user agent SHOULD send a Content-Length in a request message when\n        // no Transfer-Encoding is sent and the request method defines a meaning\n        // for an enclosed payload body.\n\n        socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n      } else {\n        socket.write(`${header}\\r\\n`, 'latin1')\n      }\n    } else if (contentLength === null) {\n      socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n    }\n\n    if (contentLength !== null && bytesWritten !== contentLength) {\n      if (client[kStrictContentLength]) {\n        throw new RequestContentLengthMismatchError()\n      } else {\n        process.emitWarning(new RequestContentLengthMismatchError())\n      }\n    }\n\n    if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n      if (socket[kParser].timeout.refresh) {\n        socket[kParser].timeout.refresh()\n      }\n    }\n\n    client[kResume]()\n  }\n\n  /**\n   * @param {Error} [err]\n   * @returns {void}\n   */\n  destroy (err) {\n    const { socket, client, abort } = this\n\n    socket[kWriting] = false\n\n    if (err) {\n      assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n      abort(err)\n    }\n  }\n}\n\nmodule.exports = connectH1\n","'use strict'\n\nconst assert = require('node:assert')\nconst { pipeline } = require('node:stream')\nconst util = require('../core/util.js')\nconst {\n  RequestContentLengthMismatchError,\n  RequestAbortedError,\n  SocketError,\n  InformationalError,\n  InvalidArgumentError\n} = require('../core/errors.js')\nconst {\n  kUrl,\n  kReset,\n  kClient,\n  kRunning,\n  kPending,\n  kQueue,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kSocket,\n  kStrictContentLength,\n  kOnError,\n  kMaxConcurrentStreams,\n  kPingInterval,\n  kHTTP2Session,\n  kHTTP2InitialWindowSize,\n  kHTTP2ConnectionWindowSize,\n  kResume,\n  kSize,\n  kHTTPContext,\n  kClosed,\n  kBodyTimeout,\n  kEnableConnectProtocol,\n  kRemoteSettings,\n  kHTTP2Stream,\n  kHTTP2SessionState\n} = require('../core/symbols.js')\nconst { channels } = require('../core/diagnostics.js')\n\nconst kOpenStreams = Symbol('open streams')\n\nlet extractBody\n\n/** @type {import('http2')} */\nlet http2\ntry {\n  http2 = require('node:http2')\n} catch {\n  // @ts-ignore\n  http2 = { constants: {} }\n}\n\nconst {\n  constants: {\n    HTTP2_HEADER_AUTHORITY,\n    HTTP2_HEADER_METHOD,\n    HTTP2_HEADER_PATH,\n    HTTP2_HEADER_SCHEME,\n    HTTP2_HEADER_CONTENT_LENGTH,\n    HTTP2_HEADER_EXPECT,\n    HTTP2_HEADER_STATUS,\n    HTTP2_HEADER_PROTOCOL,\n    NGHTTP2_REFUSED_STREAM,\n    NGHTTP2_CANCEL\n  }\n} = http2\n\nfunction parseH2Headers (headers) {\n  const result = []\n\n  for (const [name, value] of Object.entries(headers)) {\n    // h2 may concat the header value by array\n    // e.g. Set-Cookie\n    if (Array.isArray(value)) {\n      for (const subvalue of value) {\n        // we need to provide each header value of header name\n        // because the headers handler expect name-value pair\n        result.push(Buffer.from(name), Buffer.from(subvalue))\n      }\n    } else {\n      result.push(Buffer.from(name), Buffer.from(value))\n    }\n  }\n\n  return result\n}\n\nfunction connectH2 (client, socket) {\n  client[kSocket] = socket\n\n  const http2InitialWindowSize = client[kHTTP2InitialWindowSize]\n  const http2ConnectionWindowSize = client[kHTTP2ConnectionWindowSize]\n\n  const session = http2.connect(client[kUrl], {\n    createConnection: () => socket,\n    peerMaxConcurrentStreams: client[kMaxConcurrentStreams],\n    settings: {\n      // TODO(metcoder95): add support for PUSH\n      enablePush: false,\n      ...(http2InitialWindowSize != null ? { initialWindowSize: http2InitialWindowSize } : null)\n    }\n  })\n\n  client[kSocket] = socket\n  session[kOpenStreams] = 0\n  session[kClient] = client\n  session[kSocket] = socket\n  session[kHTTP2SessionState] = {\n    ping: {\n      interval: client[kPingInterval] === 0 ? null : setInterval(onHttp2SendPing, client[kPingInterval], session).unref()\n    }\n  }\n  // We set it to true by default in a best-effort; however once connected to an H2 server\n  // we will check if extended CONNECT protocol is supported or not\n  // and set this value accordingly.\n  session[kEnableConnectProtocol] = false\n  // States whether or not we have received the remote settings from the server\n  session[kRemoteSettings] = false\n\n  // Apply connection-level flow control once connected (if supported).\n  if (http2ConnectionWindowSize) {\n    util.addListener(session, 'connect', applyConnectionWindowSize.bind(session, http2ConnectionWindowSize))\n  }\n\n  util.addListener(session, 'error', onHttp2SessionError)\n  util.addListener(session, 'frameError', onHttp2FrameError)\n  util.addListener(session, 'end', onHttp2SessionEnd)\n  util.addListener(session, 'goaway', onHttp2SessionGoAway)\n  util.addListener(session, 'close', onHttp2SessionClose)\n  util.addListener(session, 'remoteSettings', onHttp2RemoteSettings)\n  // TODO (@metcoder95): implement SETTINGS support\n  // util.addListener(session, 'localSettings', onHttp2RemoteSettings)\n\n  session.unref()\n\n  client[kHTTP2Session] = session\n  socket[kHTTP2Session] = session\n\n  util.addListener(socket, 'error', onHttp2SocketError)\n  util.addListener(socket, 'end', onHttp2SocketEnd)\n  util.addListener(socket, 'close', onHttp2SocketClose)\n\n  socket[kClosed] = false\n  socket.on('close', onSocketClose)\n\n  return {\n    version: 'h2',\n    defaultPipelining: Infinity,\n    /**\n     * @param {import('../core/request.js')} request\n     * @returns {boolean}\n    */\n    write (request) {\n      return writeH2(client, request)\n    },\n    /**\n     * @returns {void}\n     */\n    resume () {\n      resumeH2(client)\n    },\n    /**\n     * @param {Error | null} err\n     * @param {() => void} callback\n     */\n    destroy (err, callback) {\n      if (socket[kClosed]) {\n        queueMicrotask(callback)\n      } else {\n        socket.destroy(err).on('close', callback)\n      }\n    },\n    /**\n     * @type {boolean}\n     */\n    get destroyed () {\n      return socket.destroyed\n    },\n    /**\n     * @param {import('../core/request.js')} request\n     * @returns {boolean}\n    */\n    busy (request) {\n      if (request != null) {\n        if (client[kRunning] > 0) {\n          // We are already processing requests\n\n          // Non-idempotent request cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          if (request.idempotent === false) return true\n          // Don't dispatch an upgrade until all preceding requests have completed.\n          // Possibly, we do not have remote settings confirmed yet.\n          if ((request.upgrade === 'websocket' || request.method === 'CONNECT') && session[kRemoteSettings] === false) return true\n          // Request with stream or iterator body can error while other requests\n          // are inflight and indirectly error those as well.\n          // Ensure this doesn't happen by waiting for inflight\n          // to complete before dispatching.\n\n          // Request with stream or iterator body cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          if (util.bodyLength(request.body) !== 0 &&\n            (util.isStream(request.body) || util.isAsyncIterable(request.body) || util.isFormDataLike(request.body))) return true\n        } else {\n          return (request.upgrade === 'websocket' || request.method === 'CONNECT') && session[kRemoteSettings] === false\n        }\n      }\n\n      return false\n    }\n  }\n}\n\nfunction resumeH2 (client) {\n  const socket = client[kSocket]\n\n  if (socket?.destroyed === false) {\n    if (client[kSize] === 0 || client[kMaxConcurrentStreams] === 0) {\n      socket.unref()\n      client[kHTTP2Session].unref()\n    } else {\n      socket.ref()\n      client[kHTTP2Session].ref()\n    }\n  }\n}\n\nfunction applyConnectionWindowSize (connectionWindowSize) {\n  try {\n    if (typeof this.setLocalWindowSize === 'function') {\n      this.setLocalWindowSize(connectionWindowSize)\n    }\n  } catch {\n    // Best-effort only.\n  }\n}\n\nfunction onHttp2RemoteSettings (settings) {\n  // Fallbacks are a safe bet, remote setting will always override\n  this[kClient][kMaxConcurrentStreams] = settings.maxConcurrentStreams ?? this[kClient][kMaxConcurrentStreams]\n  /**\n   * From RFC-8441\n   * A sender MUST NOT send a SETTINGS_ENABLE_CONNECT_PROTOCOL parameter\n   * with the value of 0 after previously sending a value of 1.\n   */\n  // Note: Cannot be tested in Node, it does not supports disabling the extended CONNECT protocol once enabled\n  if (this[kRemoteSettings] === true && this[kEnableConnectProtocol] === true && settings.enableConnectProtocol === false) {\n    const err = new InformationalError('HTTP/2: Server disabled extended CONNECT protocol against RFC-8441')\n    this[kSocket][kError] = err\n    this[kClient][kOnError](err)\n    return\n  }\n\n  this[kEnableConnectProtocol] = settings.enableConnectProtocol ?? this[kEnableConnectProtocol]\n  this[kRemoteSettings] = true\n  this[kClient][kResume]()\n}\n\nfunction onHttp2SendPing (session) {\n  const state = session[kHTTP2SessionState]\n  if ((session.closed || session.destroyed) && state.ping.interval != null) {\n    clearInterval(state.ping.interval)\n    state.ping.interval = null\n    return\n  }\n\n  // If no ping sent, do nothing\n  session.ping(onPing.bind(session))\n\n  function onPing (err, duration) {\n    const client = this[kClient]\n    const socket = this[kClient]\n\n    if (err != null) {\n      const error = new InformationalError(`HTTP/2: \"PING\" errored - type ${err.message}`)\n      socket[kError] = error\n      client[kOnError](error)\n    } else {\n      client.emit('ping', duration)\n    }\n  }\n}\n\nfunction onHttp2SessionError (err) {\n  assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n  this[kSocket][kError] = err\n  this[kClient][kOnError](err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n  if (id === 0) {\n    const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n    this[kSocket][kError] = err\n    this[kClient][kOnError](err)\n  }\n}\n\nfunction onHttp2SessionEnd () {\n  const err = new SocketError('other side closed', util.getSocketInfo(this[kSocket]))\n  this.destroy(err)\n  util.destroy(this[kSocket], err)\n}\n\n/**\n * This is the root cause of #3011\n * We need to handle GOAWAY frames properly, and trigger the session close\n * along with the socket right away\n *\n * @this {import('http2').ClientHttp2Session}\n * @param {number} errorCode\n */\nfunction onHttp2SessionGoAway (errorCode) {\n  // TODO(mcollina): Verify if GOAWAY implements the spec correctly:\n  // https://datatracker.ietf.org/doc/html/rfc7540#section-6.8\n  // Specifically, we do not verify the \"valid\" stream id.\n\n  const err = this[kError] || new SocketError(`HTTP/2: \"GOAWAY\" frame received with code ${errorCode}`, util.getSocketInfo(this[kSocket]))\n  const client = this[kClient]\n\n  client[kSocket] = null\n  client[kHTTPContext] = null\n\n  // this is an HTTP2 session\n  this.close()\n  this[kHTTP2Session] = null\n\n  util.destroy(this[kSocket], err)\n\n  // Fail head of pipeline.\n  if (client[kRunningIdx] < client[kQueue].length) {\n    const request = client[kQueue][client[kRunningIdx]]\n    client[kQueue][client[kRunningIdx]++] = null\n    util.errorRequest(client, request, err)\n    client[kPendingIdx] = client[kRunningIdx]\n  }\n\n  assert(client[kRunning] === 0)\n\n  client.emit('disconnect', client[kUrl], [client], err)\n  client.emit('connectionError', client[kUrl], [client], err)\n\n  client[kResume]()\n}\n\nfunction onHttp2SessionClose () {\n  const { [kClient]: client, [kHTTP2SessionState]: state } = this\n  const { [kSocket]: socket } = client\n\n  const err = this[kSocket][kError] || this[kError] || new SocketError('closed', util.getSocketInfo(socket))\n\n  client[kSocket] = null\n  client[kHTTPContext] = null\n\n  if (state.ping.interval != null) {\n    clearInterval(state.ping.interval)\n    state.ping.interval = null\n  }\n\n  if (client.destroyed) {\n    assert(client[kPending] === 0)\n\n    // Fail entire queue.\n    const requests = client[kQueue].splice(client[kRunningIdx])\n    for (let i = 0; i < requests.length; i++) {\n      const request = requests[i]\n      util.errorRequest(client, request, err)\n    }\n  }\n}\n\nfunction onHttp2SocketClose () {\n  const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n  const client = this[kHTTP2Session][kClient]\n\n  client[kSocket] = null\n  client[kHTTPContext] = null\n\n  if (this[kHTTP2Session] !== null) {\n    this[kHTTP2Session].destroy(err)\n  }\n\n  client[kPendingIdx] = client[kRunningIdx]\n\n  assert(client[kRunning] === 0)\n\n  client.emit('disconnect', client[kUrl], [client], err)\n\n  client[kResume]()\n}\n\nfunction onHttp2SocketError (err) {\n  assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n  this[kError] = err\n\n  this[kClient][kOnError](err)\n}\n\nfunction onHttp2SocketEnd () {\n  util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n  this[kClosed] = true\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n  return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction writeH2 (client, request) {\n  const requestTimeout = request.bodyTimeout ?? client[kBodyTimeout]\n  const session = client[kHTTP2Session]\n  const { method, path, host, upgrade, expectContinue, signal, protocol, headers: reqHeaders } = request\n  let { body } = request\n\n  if (upgrade != null && upgrade !== 'websocket') {\n    util.errorRequest(client, request, new InvalidArgumentError(`Custom upgrade \"${upgrade}\" not supported over HTTP/2`))\n    return false\n  }\n\n  const headers = {}\n  for (let n = 0; n < reqHeaders.length; n += 2) {\n    const key = reqHeaders[n + 0]\n    const val = reqHeaders[n + 1]\n\n    if (key === 'cookie') {\n      if (headers[key] != null) {\n        headers[key] = Array.isArray(headers[key]) ? (headers[key].push(val), headers[key]) : [headers[key], val]\n      } else {\n        headers[key] = val\n      }\n\n      continue\n    }\n\n    if (Array.isArray(val)) {\n      for (let i = 0; i < val.length; i++) {\n        if (headers[key]) {\n          headers[key] += `, ${val[i]}`\n        } else {\n          headers[key] = val[i]\n        }\n      }\n    } else if (headers[key]) {\n      headers[key] += `, ${val}`\n    } else {\n      headers[key] = val\n    }\n  }\n\n  /** @type {import('node:http2').ClientHttp2Stream} */\n  let stream = null\n\n  const { hostname, port } = client[kUrl]\n\n  headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ''}`\n  headers[HTTP2_HEADER_METHOD] = method\n\n  const abort = (err) => {\n    if (request.aborted || request.completed) {\n      return\n    }\n\n    err = err || new RequestAbortedError()\n\n    util.errorRequest(client, request, err)\n\n    if (stream != null) {\n      // Some chunks might still come after abort,\n      // let's ignore them\n      stream.removeAllListeners('data')\n\n      // On Abort, we close the stream to send RST_STREAM frame\n      stream.close()\n\n      // We move the running index to the next request\n      client[kOnError](err)\n      client[kResume]()\n    }\n\n    // We do not destroy the socket as we can continue using the session\n    // the stream gets destroyed and the session remains to create new streams\n    util.destroy(body, err)\n  }\n\n  try {\n    // We are already connected, streams are pending.\n    // We can call on connect, and wait for abort\n    request.onConnect(abort)\n  } catch (err) {\n    util.errorRequest(client, request, err)\n  }\n\n  if (request.aborted) {\n    return false\n  }\n\n  if (upgrade || method === 'CONNECT') {\n    session.ref()\n\n    if (upgrade === 'websocket') {\n      // We cannot upgrade to websocket if extended CONNECT protocol is not supported\n      if (session[kEnableConnectProtocol] === false) {\n        util.errorRequest(client, request, new InformationalError('HTTP/2: Extended CONNECT protocol not supported by server'))\n        session.unref()\n        return false\n      }\n\n      // We force the method to CONNECT\n      // as per RFC-8441\n      // https://datatracker.ietf.org/doc/html/rfc8441#section-4\n      headers[HTTP2_HEADER_METHOD] = 'CONNECT'\n      headers[HTTP2_HEADER_PROTOCOL] = 'websocket'\n      // :path and :scheme headers must be omitted when sending CONNECT but set if extended-CONNECT\n      headers[HTTP2_HEADER_PATH] = path\n\n      if (protocol === 'ws:' || protocol === 'wss:') {\n        headers[HTTP2_HEADER_SCHEME] = protocol === 'ws:' ? 'http' : 'https'\n      } else {\n        headers[HTTP2_HEADER_SCHEME] = protocol === 'http:' ? 'http' : 'https'\n      }\n\n      stream = session.request(headers, { endStream: false, signal })\n      stream[kHTTP2Stream] = true\n\n      stream.once('response', (headers, _flags) => {\n        const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n        request.onUpgrade(statusCode, parseH2Headers(realHeaders), stream)\n\n        ++session[kOpenStreams]\n        client[kQueue][client[kRunningIdx]++] = null\n      })\n\n      stream.on('error', () => {\n        if (stream.rstCode === NGHTTP2_REFUSED_STREAM || stream.rstCode === NGHTTP2_CANCEL) {\n          // NGHTTP2_REFUSED_STREAM (7) or NGHTTP2_CANCEL (8)\n          // We do not treat those as errors as the server might\n          // not support websockets and refuse the stream\n          abort(new InformationalError(`HTTP/2: \"stream error\" received - code ${stream.rstCode}`))\n        }\n      })\n\n      stream.once('close', () => {\n        session[kOpenStreams] -= 1\n        if (session[kOpenStreams] === 0) session.unref()\n      })\n\n      stream.setTimeout(requestTimeout)\n      return true\n    }\n\n    // TODO: consolidate once we support CONNECT properly\n    // NOTE: We are already connected, streams are pending, first request\n    // will create a new stream. We trigger a request to create the stream and wait until\n    // `ready` event is triggered\n    // We disabled endStream to allow the user to write to the stream\n    stream = session.request(headers, { endStream: false, signal })\n    stream[kHTTP2Stream] = true\n    stream.on('response', headers => {\n      const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n      request.onUpgrade(statusCode, parseH2Headers(realHeaders), stream)\n      ++session[kOpenStreams]\n      client[kQueue][client[kRunningIdx]++] = null\n    })\n    stream.once('close', () => {\n      session[kOpenStreams] -= 1\n      if (session[kOpenStreams] === 0) session.unref()\n    })\n    stream.setTimeout(requestTimeout)\n\n    return true\n  }\n\n  // https://tools.ietf.org/html/rfc7540#section-8.3\n  // :path and :scheme headers must be omitted when sending CONNECT\n  headers[HTTP2_HEADER_PATH] = path\n  headers[HTTP2_HEADER_SCHEME] = protocol === 'http:' ? 'http' : 'https'\n\n  // https://tools.ietf.org/html/rfc7231#section-4.3.1\n  // https://tools.ietf.org/html/rfc7231#section-4.3.2\n  // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n  // Sending a payload body on a request that does not\n  // expect it can cause undefined behavior on some\n  // servers and corrupt connection state. Do not\n  // re-use the connection for further requests.\n\n  const expectsPayload = (\n    method === 'PUT' ||\n    method === 'POST' ||\n    method === 'PATCH'\n  )\n\n  if (body && typeof body.read === 'function') {\n    // Try to read EOF in order to get length.\n    body.read(0)\n  }\n\n  let contentLength = util.bodyLength(body)\n\n  if (util.isFormDataLike(body)) {\n    extractBody ??= require('../web/fetch/body.js').extractBody\n\n    const [bodyStream, contentType] = extractBody(body)\n    headers['content-type'] = contentType\n\n    body = bodyStream.stream\n    contentLength = bodyStream.length\n  }\n\n  if (contentLength == null) {\n    contentLength = request.contentLength\n  }\n\n  if (!expectsPayload) {\n    // https://tools.ietf.org/html/rfc7230#section-3.3.2\n    // A user agent SHOULD NOT send a Content-Length header field when\n    // the request message does not contain a payload body and the method\n    // semantics do not anticipate such a body.\n    // And for methods that don't expect a payload, omit Content-Length.\n    contentLength = null\n  }\n\n  // https://github.com/nodejs/undici/issues/2046\n  // A user agent may send a Content-Length header with 0 value, this should be allowed.\n  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n    if (client[kStrictContentLength]) {\n      util.errorRequest(client, request, new RequestContentLengthMismatchError())\n      return false\n    }\n\n    process.emitWarning(new RequestContentLengthMismatchError())\n  }\n\n  if (contentLength != null) {\n    assert(body || contentLength === 0, 'no body must not have content length')\n    headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n  }\n\n  session.ref()\n\n  if (channels.sendHeaders.hasSubscribers) {\n    let header = ''\n    for (const key in headers) {\n      header += `${key}: ${headers[key]}\\r\\n`\n    }\n    channels.sendHeaders.publish({ request, headers: header, socket: session[kSocket] })\n  }\n\n  // TODO(metcoder95): add support for sending trailers\n  const shouldEndStream = method === 'GET' || method === 'HEAD' || body === null\n  if (expectContinue) {\n    headers[HTTP2_HEADER_EXPECT] = '100-continue'\n    stream = session.request(headers, { endStream: shouldEndStream, signal })\n    stream[kHTTP2Stream] = true\n\n    stream.once('continue', writeBodyH2)\n  } else {\n    stream = session.request(headers, {\n      endStream: shouldEndStream,\n      signal\n    })\n    stream[kHTTP2Stream] = true\n\n    writeBodyH2()\n  }\n\n  // Increment counter as we have new streams open\n  ++session[kOpenStreams]\n  stream.setTimeout(requestTimeout)\n\n  // Track whether we received a response (headers)\n  let responseReceived = false\n\n  stream.once('response', headers => {\n    const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n    request.onResponseStarted()\n    responseReceived = true\n\n    // Due to the stream nature, it is possible we face a race condition\n    // where the stream has been assigned, but the request has been aborted\n    // the request remains in-flight and headers hasn't been received yet\n    // for those scenarios, best effort is to destroy the stream immediately\n    // as there's no value to keep it open.\n    if (request.aborted) {\n      stream.removeAllListeners('data')\n      return\n    }\n\n    if (request.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), '') === false) {\n      stream.pause()\n    }\n\n    stream.on('data', (chunk) => {\n      if (request.aborted || request.completed) {\n        return\n      }\n\n      if (request.onData(chunk) === false) {\n        stream.pause()\n      }\n    })\n  })\n\n  stream.once('end', () => {\n    stream.removeAllListeners('data')\n    // If we received a response, this is a normal completion\n    if (responseReceived) {\n      if (!request.aborted && !request.completed) {\n        request.onComplete({})\n      }\n\n      client[kQueue][client[kRunningIdx]++] = null\n      client[kResume]()\n    } else {\n      // Stream ended without receiving a response - this is an error\n      // (e.g., server destroyed the stream before sending headers)\n      abort(new InformationalError('HTTP/2: stream half-closed (remote)'))\n      client[kQueue][client[kRunningIdx]++] = null\n      client[kPendingIdx] = client[kRunningIdx]\n      client[kResume]()\n    }\n  })\n\n  stream.once('close', () => {\n    stream.removeAllListeners('data')\n    session[kOpenStreams] -= 1\n    if (session[kOpenStreams] === 0) {\n      session.unref()\n    }\n  })\n\n  stream.once('error', function (err) {\n    stream.removeAllListeners('data')\n    abort(err)\n  })\n\n  stream.once('frameError', (type, code) => {\n    stream.removeAllListeners('data')\n    abort(new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`))\n  })\n\n  stream.on('aborted', () => {\n    stream.removeAllListeners('data')\n  })\n\n  stream.on('timeout', () => {\n    const err = new InformationalError(`HTTP/2: \"stream timeout after ${requestTimeout}\"`)\n    stream.removeAllListeners('data')\n    session[kOpenStreams] -= 1\n\n    if (session[kOpenStreams] === 0) {\n      session.unref()\n    }\n\n    abort(err)\n  })\n\n  stream.once('trailers', trailers => {\n    if (request.aborted || request.completed) {\n      return\n    }\n\n    stream.removeAllListeners('data')\n    request.onComplete(trailers)\n  })\n\n  return true\n\n  function writeBodyH2 () {\n    if (!body || contentLength === 0) {\n      writeBuffer(\n        abort,\n        stream,\n        null,\n        client,\n        request,\n        client[kSocket],\n        contentLength,\n        expectsPayload\n      )\n    } else if (util.isBuffer(body)) {\n      writeBuffer(\n        abort,\n        stream,\n        body,\n        client,\n        request,\n        client[kSocket],\n        contentLength,\n        expectsPayload\n      )\n    } else if (util.isBlobLike(body)) {\n      if (typeof body.stream === 'function') {\n        writeIterable(\n          abort,\n          stream,\n          body.stream(),\n          client,\n          request,\n          client[kSocket],\n          contentLength,\n          expectsPayload\n        )\n      } else {\n        writeBlob(\n          abort,\n          stream,\n          body,\n          client,\n          request,\n          client[kSocket],\n          contentLength,\n          expectsPayload\n        )\n      }\n    } else if (util.isStream(body)) {\n      writeStream(\n        abort,\n        client[kSocket],\n        expectsPayload,\n        stream,\n        body,\n        client,\n        request,\n        contentLength\n      )\n    } else if (util.isIterable(body)) {\n      writeIterable(\n        abort,\n        stream,\n        body,\n        client,\n        request,\n        client[kSocket],\n        contentLength,\n        expectsPayload\n      )\n    } else {\n      assert(false)\n    }\n  }\n}\n\nfunction writeBuffer (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {\n  try {\n    if (body != null && util.isBuffer(body)) {\n      assert(contentLength === body.byteLength, 'buffer body must have content length')\n      h2stream.cork()\n      h2stream.write(body)\n      h2stream.uncork()\n      h2stream.end()\n\n      request.onBodySent(body)\n    }\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    request.onRequestSent()\n    client[kResume]()\n  } catch (error) {\n    abort(error)\n  }\n}\n\nfunction writeStream (abort, socket, expectsPayload, h2stream, body, client, request, contentLength) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n  // For HTTP/2, is enough to pipe the stream\n  const pipe = pipeline(\n    body,\n    h2stream,\n    (err) => {\n      if (err) {\n        util.destroy(pipe, err)\n        abort(err)\n      } else {\n        util.removeAllListeners(pipe)\n        request.onRequestSent()\n\n        if (!expectsPayload) {\n          socket[kReset] = true\n        }\n\n        client[kResume]()\n      }\n    }\n  )\n\n  util.addListener(pipe, 'data', onPipeData)\n\n  function onPipeData (chunk) {\n    request.onBodySent(chunk)\n  }\n}\n\nasync function writeBlob (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {\n  assert(contentLength === body.size, 'blob body must have content length')\n\n  try {\n    if (contentLength != null && contentLength !== body.size) {\n      throw new RequestContentLengthMismatchError()\n    }\n\n    const buffer = Buffer.from(await body.arrayBuffer())\n\n    h2stream.cork()\n    h2stream.write(buffer)\n    h2stream.uncork()\n    h2stream.end()\n\n    request.onBodySent(buffer)\n    request.onRequestSent()\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\nasync function writeIterable (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n  let callback = null\n  function onDrain () {\n    if (callback) {\n      const cb = callback\n      callback = null\n      cb()\n    }\n  }\n\n  const waitForDrain = () => new Promise((resolve, reject) => {\n    assert(callback === null)\n\n    if (socket[kError]) {\n      reject(socket[kError])\n    } else {\n      callback = resolve\n    }\n  })\n\n  h2stream\n    .on('close', onDrain)\n    .on('drain', onDrain)\n\n  try {\n    // It's up to the user to somehow abort the async iterable.\n    for await (const chunk of body) {\n      if (socket[kError]) {\n        throw socket[kError]\n      }\n\n      const res = h2stream.write(chunk)\n      request.onBodySent(chunk)\n      if (!res) {\n        await waitForDrain()\n      }\n    }\n\n    h2stream.end()\n\n    request.onRequestSent()\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  } finally {\n    h2stream\n      .off('close', onDrain)\n      .off('drain', onDrain)\n  }\n}\n\nmodule.exports = connectH2\n","'use strict'\n\nconst assert = require('node:assert')\nconst net = require('node:net')\nconst http = require('node:http')\nconst util = require('../core/util.js')\nconst { ClientStats } = require('../util/stats.js')\nconst { channels } = require('../core/diagnostics.js')\nconst Request = require('../core/request.js')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n  InvalidArgumentError,\n  InformationalError,\n  ClientDestroyedError\n} = require('../core/errors.js')\nconst buildConnector = require('../core/connect.js')\nconst {\n  kUrl,\n  kServerName,\n  kClient,\n  kBusy,\n  kConnect,\n  kResuming,\n  kRunning,\n  kPending,\n  kSize,\n  kQueue,\n  kConnected,\n  kConnecting,\n  kNeedDrain,\n  kKeepAliveDefaultTimeout,\n  kHostHeader,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kPipelining,\n  kKeepAliveTimeoutValue,\n  kMaxHeadersSize,\n  kKeepAliveMaxTimeout,\n  kKeepAliveTimeoutThreshold,\n  kHeadersTimeout,\n  kBodyTimeout,\n  kStrictContentLength,\n  kConnector,\n  kMaxRequests,\n  kCounter,\n  kClose,\n  kDestroy,\n  kDispatch,\n  kLocalAddress,\n  kMaxResponseSize,\n  kOnError,\n  kHTTPContext,\n  kMaxConcurrentStreams,\n  kHTTP2InitialWindowSize,\n  kHTTP2ConnectionWindowSize,\n  kResume,\n  kPingInterval\n} = require('../core/symbols.js')\nconst connectH1 = require('./client-h1.js')\nconst connectH2 = require('./client-h2.js')\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst getDefaultNodeMaxHeaderSize = http &&\n  http.maxHeaderSize &&\n  Number.isInteger(http.maxHeaderSize) &&\n  http.maxHeaderSize > 0\n  ? () => http.maxHeaderSize\n  : () => { throw new InvalidArgumentError('http module not available or http.maxHeaderSize invalid') }\n\nconst noop = () => { }\n\nfunction getPipelining (client) {\n  return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1\n}\n\n/**\n * @type {import('../../types/client.js').default}\n */\nclass Client extends DispatcherBase {\n  /**\n   *\n   * @param {string|URL} url\n   * @param {import('../../types/client.js').Client.Options} options\n   */\n  constructor (url, {\n    maxHeaderSize,\n    headersTimeout,\n    socketTimeout,\n    requestTimeout,\n    connectTimeout,\n    bodyTimeout,\n    idleTimeout,\n    keepAlive,\n    keepAliveTimeout,\n    maxKeepAliveTimeout,\n    keepAliveMaxTimeout,\n    keepAliveTimeoutThreshold,\n    socketPath,\n    pipelining,\n    tls,\n    strictContentLength,\n    maxCachedSessions,\n    connect,\n    maxRequestsPerClient,\n    localAddress,\n    maxResponseSize,\n    autoSelectFamily,\n    autoSelectFamilyAttemptTimeout,\n    // h2\n    maxConcurrentStreams,\n    allowH2,\n    useH2c,\n    initialWindowSize,\n    connectionWindowSize,\n    pingInterval,\n    webSocket\n  } = {}) {\n    if (keepAlive !== undefined) {\n      throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n    }\n\n    if (socketTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n    }\n\n    if (requestTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n    }\n\n    if (idleTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n    }\n\n    if (maxKeepAliveTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n    }\n\n    if (maxHeaderSize != null) {\n      if (!Number.isInteger(maxHeaderSize) || maxHeaderSize < 1) {\n        throw new InvalidArgumentError('invalid maxHeaderSize')\n      }\n    } else {\n      // If maxHeaderSize is not provided, use the default value from the http module\n      // or if that is not available, throw an error.\n      maxHeaderSize = getDefaultNodeMaxHeaderSize()\n    }\n\n    if (socketPath != null && typeof socketPath !== 'string') {\n      throw new InvalidArgumentError('invalid socketPath')\n    }\n\n    if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n      throw new InvalidArgumentError('invalid connectTimeout')\n    }\n\n    if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n      throw new InvalidArgumentError('invalid keepAliveTimeout')\n    }\n\n    if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n      throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n    }\n\n    if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n      throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n    }\n\n    if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n      throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n    }\n\n    if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n      throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n      throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n    }\n\n    if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n      throw new InvalidArgumentError('localAddress must be valid string IP address')\n    }\n\n    if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n      throw new InvalidArgumentError('maxResponseSize must be a positive number')\n    }\n\n    if (\n      autoSelectFamilyAttemptTimeout != null &&\n      (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n    ) {\n      throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n    }\n\n    // h2\n    if (allowH2 != null && typeof allowH2 !== 'boolean') {\n      throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n    }\n\n    if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n      throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0')\n    }\n\n    if (useH2c != null && typeof useH2c !== 'boolean') {\n      throw new InvalidArgumentError('useH2c must be a valid boolean value')\n    }\n\n    if (initialWindowSize != null && (!Number.isInteger(initialWindowSize) || initialWindowSize < 1)) {\n      throw new InvalidArgumentError('initialWindowSize must be a positive integer, greater than 0')\n    }\n\n    if (connectionWindowSize != null && (!Number.isInteger(connectionWindowSize) || connectionWindowSize < 1)) {\n      throw new InvalidArgumentError('connectionWindowSize must be a positive integer, greater than 0')\n    }\n\n    if (pingInterval != null && (typeof pingInterval !== 'number' || !Number.isInteger(pingInterval) || pingInterval < 0)) {\n      throw new InvalidArgumentError('pingInterval must be a positive integer, greater or equal to 0')\n    }\n\n    super({ webSocket })\n\n    if (typeof connect !== 'function') {\n      connect = buildConnector({\n        ...tls,\n        maxCachedSessions,\n        allowH2,\n        useH2c,\n        socketPath,\n        timeout: connectTimeout,\n        ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n        ...connect\n      })\n    } else {\n      const customConnect = connect\n      connect = (opts, callback) => customConnect({\n        ...opts,\n        ...(socketPath != null ? { socketPath } : null),\n        ...(allowH2 != null ? { allowH2 } : null)\n      }, callback)\n    }\n\n    this[kUrl] = util.parseOrigin(url)\n    this[kConnector] = connect\n    this[kPipelining] = pipelining != null ? pipelining : 1\n    this[kMaxHeadersSize] = maxHeaderSize\n    this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n    this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n    this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold\n    this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n    this[kServerName] = null\n    this[kLocalAddress] = localAddress != null ? localAddress : null\n    this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n    this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n    this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n    this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n    this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n    this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n    this[kMaxRequests] = maxRequestsPerClient\n    this[kClosedResolve] = null\n    this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n    this[kHTTPContext] = null\n    // h2\n    this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n    // HTTP/2 window sizes are set to higher defaults than Node.js core for better performance:\n    // - initialWindowSize: 262144 (256KB) vs Node.js default 65535 (64KB - 1)\n    //   Allows more data to be sent before requiring acknowledgment, improving throughput\n    //   especially on high-latency networks. This matches common production HTTP/2 servers.\n    // - connectionWindowSize: 524288 (512KB) vs Node.js default (none set)\n    //   Provides better flow control for the entire connection across multiple streams.\n    this[kHTTP2InitialWindowSize] = initialWindowSize != null ? initialWindowSize : 262144\n    this[kHTTP2ConnectionWindowSize] = connectionWindowSize != null ? connectionWindowSize : 524288\n    this[kPingInterval] = pingInterval != null ? pingInterval : 60e3 // Default ping interval for h2 - 1 minute\n\n    // kQueue is built up of 3 sections separated by\n    // the kRunningIdx and kPendingIdx indices.\n    // |   complete   |   running   |   pending   |\n    //                ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n    // kRunningIdx points to the first running element.\n    // kPendingIdx points to the first pending element.\n    // This implements a fast queue with an amortized\n    // time of O(1).\n\n    this[kQueue] = []\n    this[kRunningIdx] = 0\n    this[kPendingIdx] = 0\n\n    this[kResume] = (sync) => resume(this, sync)\n    this[kOnError] = (err) => onError(this, err)\n  }\n\n  get pipelining () {\n    return this[kPipelining]\n  }\n\n  set pipelining (value) {\n    this[kPipelining] = value\n    this[kResume](true)\n  }\n\n  get stats () {\n    return new ClientStats(this)\n  }\n\n  get [kPending] () {\n    return this[kQueue].length - this[kPendingIdx]\n  }\n\n  get [kRunning] () {\n    return this[kPendingIdx] - this[kRunningIdx]\n  }\n\n  get [kSize] () {\n    return this[kQueue].length - this[kRunningIdx]\n  }\n\n  get [kConnected] () {\n    return !!this[kHTTPContext] && !this[kConnecting] && !this[kHTTPContext].destroyed\n  }\n\n  get [kBusy] () {\n    return Boolean(\n      this[kHTTPContext]?.busy(null) ||\n      (this[kSize] >= (getPipelining(this) || 1)) ||\n      this[kPending] > 0\n    )\n  }\n\n  [kConnect] (cb) {\n    connect(this)\n    this.once('connect', cb)\n  }\n\n  [kDispatch] (opts, handler) {\n    const request = new Request(this[kUrl].origin, opts, handler)\n\n    this[kQueue].push(request)\n    if (this[kResuming]) {\n      // Do nothing.\n    } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n      // Wait a tick in case stream/iterator is ended in the same tick.\n      this[kResuming] = 1\n      queueMicrotask(() => resume(this))\n    } else {\n      this[kResume](true)\n    }\n\n    if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n      this[kNeedDrain] = 2\n    }\n\n    return this[kNeedDrain] < 2\n  }\n\n  [kClose] () {\n    // TODO: for H2 we need to gracefully flush the remaining enqueued\n    // request and close each stream.\n    return new Promise((resolve) => {\n      if (this[kSize]) {\n        this[kClosedResolve] = resolve\n      } else {\n        resolve(null)\n      }\n    })\n  }\n\n  [kDestroy] (err) {\n    return new Promise((resolve) => {\n      const requests = this[kQueue].splice(this[kPendingIdx])\n      for (let i = 0; i < requests.length; i++) {\n        const request = requests[i]\n        util.errorRequest(this, request, err)\n      }\n\n      const callback = () => {\n        if (this[kClosedResolve]) {\n          // TODO (fix): Should we error here with ClientDestroyedError?\n          this[kClosedResolve]()\n          this[kClosedResolve] = null\n        }\n        resolve(null)\n      }\n\n      if (this[kHTTPContext]) {\n        this[kHTTPContext].destroy(err, callback)\n        this[kHTTPContext] = null\n      } else {\n        queueMicrotask(callback)\n      }\n\n      this[kResume]()\n    })\n  }\n}\n\nfunction onError (client, err) {\n  if (\n    client[kRunning] === 0 &&\n    err.code !== 'UND_ERR_INFO' &&\n    err.code !== 'UND_ERR_SOCKET'\n  ) {\n    // Error is not caused by running request and not a recoverable\n    // socket error.\n\n    assert(client[kPendingIdx] === client[kRunningIdx])\n\n    const requests = client[kQueue].splice(client[kRunningIdx])\n\n    for (let i = 0; i < requests.length; i++) {\n      const request = requests[i]\n      util.errorRequest(client, request, err)\n    }\n    assert(client[kSize] === 0)\n  }\n}\n\n/**\n * @param {Client} client\n * @returns {void}\n */\nfunction connect (client) {\n  assert(!client[kConnecting])\n  assert(!client[kHTTPContext])\n\n  let { host, hostname, protocol, port } = client[kUrl]\n\n  // Resolve ipv6\n  if (hostname[0] === '[') {\n    const idx = hostname.indexOf(']')\n\n    assert(idx !== -1)\n    const ip = hostname.substring(1, idx)\n\n    assert(net.isIPv6(ip))\n    hostname = ip\n  }\n\n  client[kConnecting] = true\n\n  if (channels.beforeConnect.hasSubscribers) {\n    channels.beforeConnect.publish({\n      connectParams: {\n        host,\n        hostname,\n        protocol,\n        port,\n        version: client[kHTTPContext]?.version,\n        servername: client[kServerName],\n        localAddress: client[kLocalAddress]\n      },\n      connector: client[kConnector]\n    })\n  }\n\n  try {\n    client[kConnector]({\n      host,\n      hostname,\n      protocol,\n      port,\n      servername: client[kServerName],\n      localAddress: client[kLocalAddress]\n    }, (err, socket) => {\n      if (err) {\n        handleConnectError(client, err, { host, hostname, protocol, port })\n        client[kResume]()\n        return\n      }\n\n      if (client.destroyed) {\n        util.destroy(socket.on('error', noop), new ClientDestroyedError())\n        client[kResume]()\n        return\n      }\n\n      assert(socket)\n\n      try {\n        client[kHTTPContext] = socket.alpnProtocol === 'h2'\n          ? connectH2(client, socket)\n          : connectH1(client, socket)\n      } catch (err) {\n        socket.destroy().on('error', noop)\n        handleConnectError(client, err, { host, hostname, protocol, port })\n        client[kResume]()\n        return\n      }\n\n      client[kConnecting] = false\n\n      socket[kCounter] = 0\n      socket[kMaxRequests] = client[kMaxRequests]\n      socket[kClient] = client\n      socket[kError] = null\n\n      if (channels.connected.hasSubscribers) {\n        channels.connected.publish({\n          connectParams: {\n            host,\n            hostname,\n            protocol,\n            port,\n            version: client[kHTTPContext]?.version,\n            servername: client[kServerName],\n            localAddress: client[kLocalAddress]\n          },\n          connector: client[kConnector],\n          socket\n        })\n      }\n\n      client.emit('connect', client[kUrl], [client])\n      client[kResume]()\n    })\n  } catch (err) {\n    handleConnectError(client, err, { host, hostname, protocol, port })\n    client[kResume]()\n  }\n}\n\nfunction handleConnectError (client, err, { host, hostname, protocol, port }) {\n  if (client.destroyed) {\n    return\n  }\n\n  client[kConnecting] = false\n\n  if (channels.connectError.hasSubscribers) {\n    channels.connectError.publish({\n      connectParams: {\n        host,\n        hostname,\n        protocol,\n        port,\n        version: client[kHTTPContext]?.version,\n        servername: client[kServerName],\n        localAddress: client[kLocalAddress]\n      },\n      connector: client[kConnector],\n      error: err\n    })\n  }\n\n  if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n    assert(client[kRunning] === 0)\n    while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n      const request = client[kQueue][client[kPendingIdx]++]\n      util.errorRequest(client, request, err)\n    }\n  } else {\n    onError(client, err)\n  }\n\n  client.emit('connectionError', client[kUrl], [client], err)\n}\n\nfunction emitDrain (client) {\n  client[kNeedDrain] = 0\n  client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n  if (client[kResuming] === 2) {\n    return\n  }\n\n  client[kResuming] = 2\n\n  _resume(client, sync)\n  client[kResuming] = 0\n\n  if (client[kRunningIdx] > 256) {\n    client[kQueue].splice(0, client[kRunningIdx])\n    client[kPendingIdx] -= client[kRunningIdx]\n    client[kRunningIdx] = 0\n  }\n}\n\nfunction _resume (client, sync) {\n  while (true) {\n    if (client.destroyed) {\n      assert(client[kPending] === 0)\n      return\n    }\n\n    if (client[kClosedResolve] && !client[kSize]) {\n      client[kClosedResolve]()\n      client[kClosedResolve] = null\n      return\n    }\n\n    if (client[kHTTPContext]) {\n      client[kHTTPContext].resume()\n    }\n\n    if (client[kBusy]) {\n      client[kNeedDrain] = 2\n    } else if (client[kNeedDrain] === 2) {\n      if (sync) {\n        client[kNeedDrain] = 1\n        queueMicrotask(() => emitDrain(client))\n      } else {\n        emitDrain(client)\n      }\n      continue\n    }\n\n    if (client[kPending] === 0) {\n      return\n    }\n\n    if (client[kRunning] >= (getPipelining(client) || 1)) {\n      return\n    }\n\n    const request = client[kQueue][client[kPendingIdx]]\n\n    if (request === null) {\n      return\n    }\n\n    if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n      if (client[kRunning] > 0) {\n        return\n      }\n\n      client[kServerName] = request.servername\n      client[kHTTPContext]?.destroy(new InformationalError('servername changed'), () => {\n        client[kHTTPContext] = null\n        resume(client)\n      })\n    }\n\n    if (client[kConnecting]) {\n      return\n    }\n\n    if (!client[kHTTPContext]) {\n      connect(client)\n      return\n    }\n\n    if (client[kHTTPContext].destroyed) {\n      return\n    }\n\n    if (client[kHTTPContext].busy(request)) {\n      return\n    }\n\n    if (!request.aborted && client[kHTTPContext].write(request)) {\n      client[kPendingIdx]++\n    } else {\n      client[kQueue].splice(client[kPendingIdx], 1)\n    }\n  }\n}\n\nmodule.exports = Client\n","'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048\nconst kMask = kSize - 1\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n//  head                                                       tail\n//    |                                                          |\n//    v                                                          v\n// +-----------+ <-----\\       +-----------+ <------\\         +-----------+\n// |  [null]   |        \\----- |   next    |         \\------- |   next    |\n// +-----------+               +-----------+                  +-----------+\n// |   item    | <-- bottom    |   item    | <-- bottom       | undefined |\n// |   item    |               |   item    |                  | undefined |\n// |   item    |               |   item    |                  | undefined |\n// |   item    |               |   item    |                  | undefined |\n// |   item    |               |   item    |       bottom --> |   item    |\n// |   item    |               |   item    |                  |   item    |\n// |    ...    |               |    ...    |                  |    ...    |\n// |   item    |               |   item    |                  |   item    |\n// |   item    |               |   item    |                  |   item    |\n// | undefined | <-- top       |   item    |                  |   item    |\n// | undefined |               |   item    |                  |   item    |\n// | undefined |               | undefined | <-- top  top --> | undefined |\n// +-----------+               +-----------+                  +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n//  head   tail                                 head   tail\n//    |     |                                     |     |\n//    v     v                                     v     v\n// +-----------+                               +-----------+\n// |  [null]   |                               |  [null]   |\n// +-----------+                               +-----------+\n// | undefined |                               |   item    |\n// | undefined |                               |   item    |\n// |   item    | <-- bottom            top --> | undefined |\n// |   item    |                               | undefined |\n// | undefined | <-- top            bottom --> |   item    |\n// | undefined |                               |   item    |\n// +-----------+                               +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\n/**\n * @type {FixedCircularBuffer}\n * @template T\n */\nclass FixedCircularBuffer {\n  /** @type {number} */\n  bottom = 0\n  /** @type {number} */\n  top = 0\n  /** @type {Array<T|undefined>} */\n  list = new Array(kSize).fill(undefined)\n  /** @type {T|null} */\n  next = null\n\n  /** @returns {boolean} */\n  isEmpty () {\n    return this.top === this.bottom\n  }\n\n  /** @returns {boolean} */\n  isFull () {\n    return ((this.top + 1) & kMask) === this.bottom\n  }\n\n  /**\n   * @param {T} data\n   * @returns {void}\n   */\n  push (data) {\n    this.list[this.top] = data\n    this.top = (this.top + 1) & kMask\n  }\n\n  /** @returns {T|null} */\n  shift () {\n    const nextItem = this.list[this.bottom]\n    if (nextItem === undefined) { return null }\n    this.list[this.bottom] = undefined\n    this.bottom = (this.bottom + 1) & kMask\n    return nextItem\n  }\n}\n\n/**\n * @template T\n */\nmodule.exports = class FixedQueue {\n  constructor () {\n    /** @type {FixedCircularBuffer<T>} */\n    this.head = this.tail = new FixedCircularBuffer()\n  }\n\n  /** @returns {boolean} */\n  isEmpty () {\n    return this.head.isEmpty()\n  }\n\n  /** @param {T} data */\n  push (data) {\n    if (this.head.isFull()) {\n      // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n      // and sets it as the new main queue.\n      this.head = this.head.next = new FixedCircularBuffer()\n    }\n    this.head.push(data)\n  }\n\n  /** @returns {T|null} */\n  shift () {\n    const tail = this.tail\n    const next = tail.shift()\n    if (tail.isEmpty() && tail.next !== null) {\n      // If there is another queue, it forms the new tail.\n      this.tail = tail.next\n      tail.next = null\n    }\n    return next\n  }\n}\n","'use strict'\n\nconst { PoolStats } = require('../util/stats.js')\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('../core/symbols')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\n\nclass PoolBase extends DispatcherBase {\n  [kQueue] = new FixedQueue();\n\n  [kQueued] = 0;\n\n  [kClients] = [];\n\n  [kNeedDrain] = false;\n\n  [kOnDrain] (client, origin, targets) {\n    const queue = this[kQueue]\n\n    let needDrain = false\n\n    while (!needDrain) {\n      const item = queue.shift()\n      if (!item) {\n        break\n      }\n      this[kQueued]--\n      needDrain = !client.dispatch(item.opts, item.handler)\n    }\n\n    client[kNeedDrain] = needDrain\n\n    if (!needDrain && this[kNeedDrain]) {\n      this[kNeedDrain] = false\n      this.emit('drain', origin, [this, ...targets])\n    }\n\n    if (this[kClosedResolve] && queue.isEmpty()) {\n      const closeAll = []\n      for (let i = 0; i < this[kClients].length; i++) {\n        const client = this[kClients][i]\n        if (!client.destroyed) {\n          closeAll.push(client.close())\n        }\n      }\n      return Promise.all(closeAll)\n        .then(this[kClosedResolve])\n    }\n  }\n\n  [kOnConnect] = (origin, targets) => {\n    this.emit('connect', origin, [this, ...targets])\n  };\n\n  [kOnDisconnect] = (origin, targets, err) => {\n    this.emit('disconnect', origin, [this, ...targets], err)\n  };\n\n  [kOnConnectionError] = (origin, targets, err) => {\n    this.emit('connectionError', origin, [this, ...targets], err)\n  }\n\n  get [kBusy] () {\n    return this[kNeedDrain]\n  }\n\n  get [kConnected] () {\n    let ret = 0\n    for (const { [kConnected]: connected } of this[kClients]) {\n      ret += connected\n    }\n    return ret\n  }\n\n  get [kFree] () {\n    let ret = 0\n    for (const { [kConnected]: connected, [kNeedDrain]: needDrain } of this[kClients]) {\n      ret += connected && !needDrain\n    }\n    return ret\n  }\n\n  get [kPending] () {\n    let ret = this[kQueued]\n    for (const { [kPending]: pending } of this[kClients]) {\n      ret += pending\n    }\n    return ret\n  }\n\n  get [kRunning] () {\n    let ret = 0\n    for (const { [kRunning]: running } of this[kClients]) {\n      ret += running\n    }\n    return ret\n  }\n\n  get [kSize] () {\n    let ret = this[kQueued]\n    for (const { [kSize]: size } of this[kClients]) {\n      ret += size\n    }\n    return ret\n  }\n\n  get stats () {\n    return new PoolStats(this)\n  }\n\n  [kClose] () {\n    if (this[kQueue].isEmpty()) {\n      const closeAll = []\n      for (let i = 0; i < this[kClients].length; i++) {\n        const client = this[kClients][i]\n        if (!client.destroyed) {\n          closeAll.push(client.close())\n        }\n      }\n      return Promise.all(closeAll)\n    } else {\n      return new Promise((resolve) => {\n        this[kClosedResolve] = resolve\n      })\n    }\n  }\n\n  [kDestroy] (err) {\n    while (true) {\n      const item = this[kQueue].shift()\n      if (!item) {\n        break\n      }\n      item.handler.onError(err)\n    }\n\n    const destroyAll = new Array(this[kClients].length)\n    for (let i = 0; i < this[kClients].length; i++) {\n      destroyAll[i] = this[kClients][i].destroy(err)\n    }\n    return Promise.all(destroyAll)\n  }\n\n  [kDispatch] (opts, handler) {\n    const dispatcher = this[kGetDispatcher]()\n\n    if (!dispatcher) {\n      this[kNeedDrain] = true\n      this[kQueue].push({ opts, handler })\n      this[kQueued]++\n    } else if (!dispatcher.dispatch(opts, handler)) {\n      dispatcher[kNeedDrain] = true\n      this[kNeedDrain] = !this[kGetDispatcher]()\n    }\n\n    return !this[kNeedDrain]\n  }\n\n  [kAddClient] (client) {\n    client\n      .on('drain', this[kOnDrain].bind(this, client))\n      .on('connect', this[kOnConnect])\n      .on('disconnect', this[kOnDisconnect])\n      .on('connectionError', this[kOnConnectionError])\n\n    this[kClients].push(client)\n\n    if (this[kNeedDrain]) {\n      queueMicrotask(() => {\n        if (this[kNeedDrain]) {\n          this[kOnDrain](client, client[kUrl], [client, this])\n        }\n      })\n    }\n\n    return this\n  }\n\n  [kRemoveClient] (client) {\n    client.close(() => {\n      const idx = this[kClients].indexOf(client)\n      if (idx !== -1) {\n        this[kClients].splice(idx, 1)\n      }\n    })\n\n    this[kNeedDrain] = this[kClients].some(dispatcher => (\n      !dispatcher[kNeedDrain] &&\n      dispatcher.closed !== true &&\n      dispatcher.destroyed !== true\n    ))\n  }\n}\n\nmodule.exports = {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kRemoveClient,\n  kGetDispatcher\n}\n","'use strict'\n\nconst {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kGetDispatcher,\n  kRemoveClient\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n  InvalidArgumentError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { kUrl } = require('../core/symbols')\nconst buildConnector = require('../core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n  return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n  constructor (origin, {\n    connections,\n    factory = defaultFactory,\n    connect,\n    connectTimeout,\n    tls,\n    maxCachedSessions,\n    socketPath,\n    autoSelectFamily,\n    autoSelectFamilyAttemptTimeout,\n    allowH2,\n    clientTtl,\n    ...options\n  } = {}) {\n    if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n      throw new InvalidArgumentError('invalid connections')\n    }\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (typeof connect !== 'function') {\n      connect = buildConnector({\n        ...tls,\n        maxCachedSessions,\n        allowH2,\n        socketPath,\n        timeout: connectTimeout,\n        ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n        ...connect\n      })\n    }\n\n    super(options)\n\n    this[kConnections] = connections || null\n    this[kUrl] = util.parseOrigin(origin)\n    this[kOptions] = { ...util.deepClone(options), connect, allowH2, clientTtl, socketPath }\n    this[kOptions].interceptors = options.interceptors\n      ? { ...options.interceptors }\n      : undefined\n    this[kFactory] = factory\n\n    this.on('connect', (origin, targets) => {\n      if (clientTtl != null && clientTtl > 0) {\n        for (const target of targets) {\n          Object.assign(target, { ttl: Date.now() })\n        }\n      }\n    })\n\n    this.on('connectionError', (origin, targets, error) => {\n      // If a connection error occurs, we remove the client from the pool,\n      // and emit a connectionError event. They will not be re-used.\n      // Fixes https://github.com/nodejs/undici/issues/3895\n      for (const target of targets) {\n        // Do not use kRemoveClient here, as it will close the client,\n        // but the client cannot be closed in this state.\n        const idx = this[kClients].indexOf(target)\n        if (idx !== -1) {\n          this[kClients].splice(idx, 1)\n        }\n      }\n    })\n  }\n\n  [kGetDispatcher] () {\n    const clientTtlOption = this[kOptions].clientTtl\n    for (const client of this[kClients]) {\n      // check ttl of client and if it's stale, remove it from the pool\n      if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && ((Date.now() - client.ttl) > clientTtlOption)) {\n        this[kRemoveClient](client)\n      } else if (!client[kNeedDrain]) {\n        return client\n      }\n    }\n\n    if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n      const dispatcher = this[kFactory](this[kUrl], this[kOptions])\n      this[kAddClient](dispatcher)\n      return dispatcher\n    }\n  }\n}\n\nmodule.exports = Pool\n","'use strict'\n\nconst {\n  BalancedPoolMissingUpstreamError,\n  InvalidArgumentError\n} = require('../core/errors')\nconst {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kRemoveClient,\n  kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl } = require('../core/symbols')\nconst util = require('../core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\n/**\n * Calculate the greatest common divisor of two numbers by\n * using the Euclidean algorithm.\n *\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction getGreatestCommonDivisor (a, b) {\n  if (a === 0) return b\n\n  while (b !== 0) {\n    const t = b\n    b = a % b\n    a = t\n  }\n  return a\n}\n\nfunction defaultFactory (origin, opts) {\n  return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n  constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    super(opts)\n\n    this[kOptions] = { ...util.deepClone(opts) }\n    this[kOptions].interceptors = opts.interceptors\n      ? { ...opts.interceptors }\n      : undefined\n    this[kIndex] = -1\n    this[kCurrentWeight] = 0\n\n    this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n    this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n    if (!Array.isArray(upstreams)) {\n      upstreams = [upstreams]\n    }\n\n    this[kFactory] = factory\n\n    for (const upstream of upstreams) {\n      this.addUpstream(upstream)\n    }\n    this._updateBalancedPoolStats()\n  }\n\n  addUpstream (upstream) {\n    const upstreamOrigin = util.parseOrigin(upstream).origin\n\n    if (this[kClients].find((pool) => (\n      pool[kUrl].origin === upstreamOrigin &&\n      pool.closed !== true &&\n      pool.destroyed !== true\n    ))) {\n      return this\n    }\n    const pool = this[kFactory](upstreamOrigin, this[kOptions])\n\n    this[kAddClient](pool)\n    pool.on('connect', () => {\n      pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n    })\n\n    pool.on('connectionError', () => {\n      pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n      this._updateBalancedPoolStats()\n    })\n\n    pool.on('disconnect', (...args) => {\n      const err = args[2]\n      if (err && err.code === 'UND_ERR_SOCKET') {\n        // decrease the weight of the pool.\n        pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n        this._updateBalancedPoolStats()\n      }\n    })\n\n    for (const client of this[kClients]) {\n      client[kWeight] = this[kMaxWeightPerServer]\n    }\n\n    this._updateBalancedPoolStats()\n\n    return this\n  }\n\n  _updateBalancedPoolStats () {\n    let result = 0\n    for (let i = 0; i < this[kClients].length; i++) {\n      result = getGreatestCommonDivisor(this[kClients][i][kWeight], result)\n    }\n\n    this[kGreatestCommonDivisor] = result\n  }\n\n  removeUpstream (upstream) {\n    const upstreamOrigin = util.parseOrigin(upstream).origin\n\n    const pool = this[kClients].find((pool) => (\n      pool[kUrl].origin === upstreamOrigin &&\n      pool.closed !== true &&\n      pool.destroyed !== true\n    ))\n\n    if (pool) {\n      this[kRemoveClient](pool)\n    }\n\n    return this\n  }\n\n  getUpstream (upstream) {\n    const upstreamOrigin = util.parseOrigin(upstream).origin\n\n    return this[kClients].find((pool) => (\n      pool[kUrl].origin === upstreamOrigin &&\n      pool.closed !== true &&\n      pool.destroyed !== true\n    ))\n  }\n\n  get upstreams () {\n    return this[kClients]\n      .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n      .map((p) => p[kUrl].origin)\n  }\n\n  [kGetDispatcher] () {\n    // We validate that pools is greater than 0,\n    // otherwise we would have to wait until an upstream\n    // is added, which might never happen.\n    if (this[kClients].length === 0) {\n      throw new BalancedPoolMissingUpstreamError()\n    }\n\n    const dispatcher = this[kClients].find(dispatcher => (\n      !dispatcher[kNeedDrain] &&\n      dispatcher.closed !== true &&\n      dispatcher.destroyed !== true\n    ))\n\n    if (!dispatcher) {\n      return\n    }\n\n    const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n    if (allClientsBusy) {\n      return\n    }\n\n    let counter = 0\n\n    let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n    while (counter++ < this[kClients].length) {\n      this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n      const pool = this[kClients][this[kIndex]]\n\n      // find pool index with the largest weight\n      if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n        maxWeightIndex = this[kIndex]\n      }\n\n      // decrease the current weight every `this[kClients].length`.\n      if (this[kIndex] === 0) {\n        // Set the current weight to the next lower weight.\n        this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n        if (this[kCurrentWeight] <= 0) {\n          this[kCurrentWeight] = this[kMaxWeightPerServer]\n        }\n      }\n      if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n        return pool\n      }\n    }\n\n    this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n    this[kIndex] = maxWeightIndex\n    return this[kClients][maxWeightIndex]\n  }\n}\n\nmodule.exports = BalancedPool\n","'use strict'\n\nconst {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kGetDispatcher,\n  kRemoveClient\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n  InvalidArgumentError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { kUrl } = require('../core/symbols')\nconst buildConnector = require('../core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\nconst kIndex = Symbol('index')\n\nfunction defaultFactory (origin, opts) {\n  return new Client(origin, opts)\n}\n\nclass RoundRobinPool extends PoolBase {\n  constructor (origin, {\n    connections,\n    factory = defaultFactory,\n    connect,\n    connectTimeout,\n    tls,\n    maxCachedSessions,\n    socketPath,\n    autoSelectFamily,\n    autoSelectFamilyAttemptTimeout,\n    allowH2,\n    clientTtl,\n    ...options\n  } = {}) {\n    if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n      throw new InvalidArgumentError('invalid connections')\n    }\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (typeof connect !== 'function') {\n      connect = buildConnector({\n        ...tls,\n        maxCachedSessions,\n        allowH2,\n        socketPath,\n        timeout: connectTimeout,\n        ...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n        ...connect\n      })\n    }\n\n    super()\n\n    this[kConnections] = connections || null\n    this[kUrl] = util.parseOrigin(origin)\n    this[kOptions] = { ...util.deepClone(options), connect, allowH2, clientTtl, socketPath }\n    this[kOptions].interceptors = options.interceptors\n      ? { ...options.interceptors }\n      : undefined\n    this[kFactory] = factory\n    this[kIndex] = -1\n\n    this.on('connect', (origin, targets) => {\n      if (clientTtl != null && clientTtl > 0) {\n        for (const target of targets) {\n          Object.assign(target, { ttl: Date.now() })\n        }\n      }\n    })\n\n    this.on('connectionError', (origin, targets, error) => {\n      for (const target of targets) {\n        const idx = this[kClients].indexOf(target)\n        if (idx !== -1) {\n          this[kClients].splice(idx, 1)\n        }\n      }\n    })\n  }\n\n  [kGetDispatcher] () {\n    const clientTtlOption = this[kOptions].clientTtl\n    const clientsLength = this[kClients].length\n\n    // If we have no clients yet, create one\n    if (clientsLength === 0) {\n      const dispatcher = this[kFactory](this[kUrl], this[kOptions])\n      this[kAddClient](dispatcher)\n      return dispatcher\n    }\n\n    // Round-robin through existing clients\n    let checked = 0\n    while (checked < clientsLength) {\n      this[kIndex] = (this[kIndex] + 1) % clientsLength\n      const client = this[kClients][this[kIndex]]\n\n      // Check if client is stale (TTL expired)\n      if (clientTtlOption != null && clientTtlOption > 0 && client.ttl && ((Date.now() - client.ttl) > clientTtlOption)) {\n        this[kRemoveClient](client)\n        checked++\n        continue\n      }\n\n      // Return client if it's not draining\n      if (!client[kNeedDrain]) {\n        return client\n      }\n\n      checked++\n    }\n\n    // All clients are busy, create a new one if we haven't reached the limit\n    if (!this[kConnections] || clientsLength < this[kConnections]) {\n      const dispatcher = this[kFactory](this[kUrl], this[kOptions])\n      this[kAddClient](dispatcher)\n      return dispatcher\n    }\n  }\n}\n\nmodule.exports = RoundRobinPool\n","'use strict'\n\nconst { InvalidArgumentError, MaxOriginsReachedError } = require('../core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kUrl } = require('../core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('../core/util')\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kOptions = Symbol('options')\nconst kOrigins = Symbol('origins')\n\nfunction defaultFactory (origin, opts) {\n  return opts && opts.connections === 1\n    ? new Client(origin, opts)\n    : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n  constructor ({ factory = defaultFactory, maxOrigins = Infinity, connect, ...options } = {}) {\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (typeof maxOrigins !== 'number' || Number.isNaN(maxOrigins) || maxOrigins <= 0) {\n      throw new InvalidArgumentError('maxOrigins must be a number greater than 0')\n    }\n\n    super(options)\n\n    if (connect && typeof connect !== 'function') {\n      connect = { ...connect }\n    }\n\n    this[kOptions] = { ...util.deepClone(options), maxOrigins, connect }\n    this[kFactory] = factory\n    this[kClients] = new Map()\n    this[kOrigins] = new Set()\n\n    this[kOnDrain] = (origin, targets) => {\n      this.emit('drain', origin, [this, ...targets])\n    }\n\n    this[kOnConnect] = (origin, targets) => {\n      this.emit('connect', origin, [this, ...targets])\n    }\n\n    this[kOnDisconnect] = (origin, targets, err) => {\n      this.emit('disconnect', origin, [this, ...targets], err)\n    }\n\n    this[kOnConnectionError] = (origin, targets, err) => {\n      this.emit('connectionError', origin, [this, ...targets], err)\n    }\n  }\n\n  get [kRunning] () {\n    let ret = 0\n    for (const { dispatcher } of this[kClients].values()) {\n      ret += dispatcher[kRunning]\n    }\n    return ret\n  }\n\n  [kDispatch] (opts, handler) {\n    let key\n    if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n      key = String(opts.origin)\n    } else {\n      throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n    }\n\n    if (this[kOrigins].size >= this[kOptions].maxOrigins && !this[kOrigins].has(key)) {\n      throw new MaxOriginsReachedError()\n    }\n\n    const result = this[kClients].get(key)\n    let dispatcher = result && result.dispatcher\n    if (!dispatcher) {\n      const closeClientIfUnused = (connected) => {\n        const result = this[kClients].get(key)\n        if (result) {\n          if (connected) result.count -= 1\n          if (result.count <= 0) {\n            this[kClients].delete(key)\n            if (!result.dispatcher.destroyed) {\n              result.dispatcher.close()\n            }\n          }\n          this[kOrigins].delete(key)\n        }\n      }\n      dispatcher = this[kFactory](opts.origin, this[kOptions])\n        .on('drain', this[kOnDrain])\n        .on('connect', (origin, targets) => {\n          const result = this[kClients].get(key)\n          if (result) {\n            result.count += 1\n          }\n          this[kOnConnect](origin, targets)\n        })\n        .on('disconnect', (origin, targets, err) => {\n          closeClientIfUnused(true)\n          this[kOnDisconnect](origin, targets, err)\n        })\n        .on('connectionError', (origin, targets, err) => {\n          closeClientIfUnused(false)\n          this[kOnConnectionError](origin, targets, err)\n        })\n\n      this[kClients].set(key, { count: 0, dispatcher })\n      this[kOrigins].add(key)\n    }\n\n    return dispatcher.dispatch(opts, handler)\n  }\n\n  [kClose] () {\n    const closePromises = []\n    for (const { dispatcher } of this[kClients].values()) {\n      closePromises.push(dispatcher.close())\n    }\n    this[kClients].clear()\n\n    return Promise.all(closePromises)\n  }\n\n  [kDestroy] (err) {\n    const destroyPromises = []\n    for (const { dispatcher } of this[kClients].values()) {\n      destroyPromises.push(dispatcher.destroy(err))\n    }\n    this[kClients].clear()\n\n    return Promise.all(destroyPromises)\n  }\n\n  get stats () {\n    const allClientStats = {}\n    for (const { dispatcher } of this[kClients].values()) {\n      if (dispatcher.stats) {\n        allClientStats[dispatcher[kUrl].origin] = dispatcher.stats\n      }\n    }\n    return allClientStats\n  }\n}\n\nmodule.exports = Agent\n","'use strict'\n\nconst { Buffer } = require('node:buffer')\nconst net = require('node:net')\nconst { InvalidArgumentError } = require('./errors')\n\n/**\n * Parse an address and determine its type\n * @param {string} address - The address to parse\n * @returns {{type: number, buffer: Buffer}} Address type and buffer\n */\nfunction parseAddress (address) {\n  // Check if it's an IPv4 address\n  if (net.isIPv4(address)) {\n    const parts = address.split('.').map(Number)\n    return {\n      type: 0x01, // IPv4\n      buffer: Buffer.from(parts)\n    }\n  }\n\n  // Check if it's an IPv6 address\n  if (net.isIPv6(address)) {\n    return {\n      type: 0x04, // IPv6\n      buffer: parseIPv6(address)\n    }\n  }\n\n  // Otherwise, treat as domain name\n  const domainBuffer = Buffer.from(address, 'utf8')\n  if (domainBuffer.length > 255) {\n    throw new InvalidArgumentError('Domain name too long (max 255 bytes)')\n  }\n\n  return {\n    type: 0x03, // Domain\n    buffer: Buffer.concat([Buffer.from([domainBuffer.length]), domainBuffer])\n  }\n}\n\n/**\n * Parse IPv6 address to buffer\n * @param {string} address - IPv6 address string\n * @returns {Buffer} 16-byte buffer\n */\nfunction parseIPv6 (address) {\n  const buffer = Buffer.alloc(16)\n  let normalizedAddress = address\n\n  // Expand an embedded IPv4 tail into the last two IPv6 groups.\n  if (address.includes('.')) {\n    const lastColonIndex = address.lastIndexOf(':')\n    const ipv4Part = address.slice(lastColonIndex + 1)\n\n    if (net.isIPv4(ipv4Part)) {\n      const octets = ipv4Part.split('.').map(Number)\n      const high = ((octets[0] << 8) | octets[1]).toString(16)\n      const low = ((octets[2] << 8) | octets[3]).toString(16)\n      normalizedAddress = `${address.slice(0, lastColonIndex)}:${high}:${low}`\n    }\n  }\n\n  // Handle compressed notation (::)\n  const doubleColonIndex = normalizedAddress.indexOf('::')\n  if (doubleColonIndex !== -1) {\n    const before = normalizedAddress.slice(0, doubleColonIndex)\n    const after = normalizedAddress.slice(doubleColonIndex + 2)\n    const beforeParts = before === '' ? [] : before.split(':')\n    const afterParts = after === '' ? [] : after.split(':')\n\n    let bufferIndex = 0\n    for (const part of beforeParts) {\n      buffer.writeUInt16BE(parseInt(part, 16), bufferIndex)\n      bufferIndex += 2\n    }\n    bufferIndex = 16 - afterParts.length * 2\n    for (const part of afterParts) {\n      buffer.writeUInt16BE(parseInt(part, 16), bufferIndex)\n      bufferIndex += 2\n    }\n  } else {\n    const parts = normalizedAddress.split(':')\n    for (let i = 0; i < parts.length; i++) {\n      buffer.writeUInt16BE(parseInt(parts[i], 16), i * 2)\n    }\n  }\n\n  return buffer\n}\n\n/**\n * Build a SOCKS5 address buffer\n * @param {number} type - Address type (1=IPv4, 3=Domain, 4=IPv6)\n * @param {Buffer} addressBuffer - The address data\n * @param {number} port - Port number\n * @returns {Buffer} Complete address buffer including type, address, and port\n */\nfunction buildAddressBuffer (type, addressBuffer, port) {\n  const portBuffer = Buffer.allocUnsafe(2)\n  portBuffer.writeUInt16BE(port, 0)\n\n  return Buffer.concat([\n    Buffer.from([type]),\n    addressBuffer,\n    portBuffer\n  ])\n}\n\n/**\n * Parse address from SOCKS5 response\n * @param {Buffer} buffer - Buffer containing the address\n * @param {number} offset - Starting offset in buffer\n * @returns {{address: string, port: number, bytesRead: number}}\n */\nfunction parseResponseAddress (buffer, offset = 0) {\n  if (buffer.length < offset + 1) {\n    throw new InvalidArgumentError('Buffer too small to contain address type')\n  }\n\n  const addressType = buffer[offset]\n  let address\n  let currentOffset = offset + 1\n\n  switch (addressType) {\n    case 0x01: { // IPv4\n      if (buffer.length < currentOffset + 6) {\n        throw new InvalidArgumentError('Buffer too small for IPv4 address')\n      }\n      address = Array.from(buffer.subarray(currentOffset, currentOffset + 4)).join('.')\n      currentOffset += 4\n      break\n    }\n\n    case 0x03: { // Domain\n      if (buffer.length < currentOffset + 1) {\n        throw new InvalidArgumentError('Buffer too small for domain length')\n      }\n      const domainLength = buffer[currentOffset]\n      currentOffset += 1\n\n      if (buffer.length < currentOffset + domainLength + 2) {\n        throw new InvalidArgumentError('Buffer too small for domain address')\n      }\n      address = buffer.subarray(currentOffset, currentOffset + domainLength).toString('utf8')\n      currentOffset += domainLength\n      break\n    }\n\n    case 0x04: { // IPv6\n      if (buffer.length < currentOffset + 18) {\n        throw new InvalidArgumentError('Buffer too small for IPv6 address')\n      }\n      // Convert buffer to IPv6 string\n      const parts = []\n      for (let i = 0; i < 8; i++) {\n        const value = buffer.readUInt16BE(currentOffset + i * 2)\n        parts.push(value.toString(16))\n      }\n      address = parts.join(':')\n      currentOffset += 16\n      break\n    }\n\n    default:\n      throw new InvalidArgumentError(`Invalid address type: ${addressType}`)\n  }\n\n  // Parse port\n  if (buffer.length < currentOffset + 2) {\n    throw new InvalidArgumentError('Buffer too small for port')\n  }\n  const port = buffer.readUInt16BE(currentOffset)\n  currentOffset += 2\n\n  return {\n    address,\n    port,\n    bytesRead: currentOffset - offset\n  }\n}\n\n/**\n * Create error for SOCKS5 reply code\n * @param {number} replyCode - SOCKS5 reply code\n * @returns {Error} Appropriate error object\n */\nfunction createReplyError (replyCode) {\n  const messages = {\n    0x01: 'General SOCKS server failure',\n    0x02: 'Connection not allowed by ruleset',\n    0x03: 'Network unreachable',\n    0x04: 'Host unreachable',\n    0x05: 'Connection refused',\n    0x06: 'TTL expired',\n    0x07: 'Command not supported',\n    0x08: 'Address type not supported'\n  }\n\n  const message = messages[replyCode] || `Unknown SOCKS5 error code: ${replyCode}`\n  const error = new Error(message)\n  error.code = `SOCKS5_${replyCode}`\n  return error\n}\n\nmodule.exports = {\n  parseAddress,\n  parseIPv6,\n  buildAddressBuffer,\n  parseResponseAddress,\n  createReplyError\n}\n","'use strict'\n\nconst { EventEmitter } = require('node:events')\nconst { Buffer } = require('node:buffer')\nconst { InvalidArgumentError, Socks5ProxyError } = require('./errors')\nconst { debuglog } = require('node:util')\nconst { parseAddress } = require('./socks5-utils')\n\nconst debug = debuglog('undici:socks5')\nconst EMPTY_BUFFER = Buffer.alloc(0)\n\n// SOCKS5 constants\nconst SOCKS_VERSION = 0x05\n\n// Authentication methods\nconst AUTH_METHODS = {\n  NO_AUTH: 0x00,\n  GSSAPI: 0x01,\n  USERNAME_PASSWORD: 0x02,\n  NO_ACCEPTABLE: 0xFF\n}\n\n// SOCKS5 commands\nconst COMMANDS = {\n  CONNECT: 0x01,\n  BIND: 0x02,\n  UDP_ASSOCIATE: 0x03\n}\n\n// Address types\nconst ADDRESS_TYPES = {\n  IPV4: 0x01,\n  DOMAIN: 0x03,\n  IPV6: 0x04\n}\n\n// Reply codes\nconst REPLY_CODES = {\n  SUCCEEDED: 0x00,\n  GENERAL_FAILURE: 0x01,\n  CONNECTION_NOT_ALLOWED: 0x02,\n  NETWORK_UNREACHABLE: 0x03,\n  HOST_UNREACHABLE: 0x04,\n  CONNECTION_REFUSED: 0x05,\n  TTL_EXPIRED: 0x06,\n  COMMAND_NOT_SUPPORTED: 0x07,\n  ADDRESS_TYPE_NOT_SUPPORTED: 0x08\n}\n\n// State machine states\nconst STATES = {\n  INITIAL: 'initial',\n  HANDSHAKING: 'handshaking',\n  AUTHENTICATING: 'authenticating',\n  AUTHENTICATED: 'authenticated',\n  CONNECTING: 'connecting',\n  CONNECTED: 'connected',\n  ERROR: 'error',\n  CLOSED: 'closed'\n}\n\n/**\n * SOCKS5 client implementation\n * Handles SOCKS5 protocol negotiation and connection establishment\n */\nclass Socks5Client extends EventEmitter {\n  constructor (socket, options = {}) {\n    super()\n\n    if (!socket) {\n      throw new InvalidArgumentError('socket is required')\n    }\n\n    this.socket = socket\n    this.options = options\n    this.state = STATES.INITIAL\n    this.buffer = EMPTY_BUFFER\n    this.onSocketData = this.onData.bind(this)\n    this.onSocketError = this.onError.bind(this)\n    this.onSocketClose = this.onClose.bind(this)\n\n    // Authentication settings\n    this.authMethods = []\n    if (options.username && options.password) {\n      this.authMethods.push(AUTH_METHODS.USERNAME_PASSWORD)\n    }\n    this.authMethods.push(AUTH_METHODS.NO_AUTH)\n\n    // Socket event handlers\n    this.socket.on('data', this.onSocketData)\n    this.socket.on('error', this.onSocketError)\n    this.socket.on('close', this.onSocketClose)\n  }\n\n  /**\n   * Handle incoming data from the socket\n   */\n  onData (data) {\n    debug('received data', data.length, 'bytes in state', this.state)\n    this.buffer = Buffer.concat([this.buffer, data])\n\n    try {\n      switch (this.state) {\n        case STATES.HANDSHAKING:\n          this.handleHandshakeResponse()\n          break\n        case STATES.AUTHENTICATING:\n          this.handleAuthResponse()\n          break\n        case STATES.CONNECTING:\n          this.handleConnectResponse()\n          break\n      }\n    } catch (err) {\n      this.onError(err)\n    }\n  }\n\n  /**\n   * Handle socket errors\n   */\n  onError (err) {\n    debug('socket error', err)\n    this.state = STATES.ERROR\n    this.emit('error', err)\n    this.destroy()\n  }\n\n  /**\n   * Handle socket close\n   */\n  onClose () {\n    debug('socket closed')\n    this.state = STATES.CLOSED\n    this.emit('close')\n  }\n\n  /**\n   * Destroy the client and underlying socket\n   */\n  destroy () {\n    if (this.socket && !this.socket.destroyed) {\n      this.socket.destroy()\n    }\n  }\n\n  markAuthenticated () {\n    this.state = STATES.AUTHENTICATED\n    this.emit('authenticated')\n  }\n\n  /**\n   * Start the SOCKS5 handshake\n   */\n  handshake () {\n    if (this.state !== STATES.INITIAL) {\n      throw new InvalidArgumentError('Handshake already started')\n    }\n\n    debug('starting handshake with', this.authMethods.length, 'auth methods')\n    this.state = STATES.HANDSHAKING\n\n    // Build handshake request\n    // +----+----------+----------+\n    // |VER | NMETHODS | METHODS  |\n    // +----+----------+----------+\n    // | 1  |    1     | 1 to 255 |\n    // +----+----------+----------+\n    const request = Buffer.alloc(2 + this.authMethods.length)\n    request[0] = SOCKS_VERSION\n    request[1] = this.authMethods.length\n    this.authMethods.forEach((method, i) => {\n      request[2 + i] = method\n    })\n\n    this.socket.write(request)\n  }\n\n  /**\n   * Handle handshake response from server\n   */\n  handleHandshakeResponse () {\n    if (this.buffer.length < 2) {\n      return // Not enough data yet\n    }\n\n    const version = this.buffer[0]\n    const method = this.buffer[1]\n\n    if (version !== SOCKS_VERSION) {\n      throw new Socks5ProxyError(`Invalid SOCKS version: ${version}`, 'UND_ERR_SOCKS5_VERSION')\n    }\n\n    if (method === AUTH_METHODS.NO_ACCEPTABLE) {\n      throw new Socks5ProxyError('No acceptable authentication method', 'UND_ERR_SOCKS5_AUTH_REJECTED')\n    }\n\n    this.buffer = this.buffer.subarray(2)\n    debug('server selected auth method', method)\n\n    if (method === AUTH_METHODS.NO_AUTH) {\n      this.markAuthenticated()\n    } else if (method === AUTH_METHODS.USERNAME_PASSWORD) {\n      this.state = STATES.AUTHENTICATING\n      this.sendAuthRequest()\n    } else {\n      throw new Socks5ProxyError(`Unsupported authentication method: ${method}`, 'UND_ERR_SOCKS5_AUTH_METHOD')\n    }\n  }\n\n  /**\n   * Send username/password authentication request\n   */\n  sendAuthRequest () {\n    const { username, password } = this.options\n\n    if (!username || !password) {\n      throw new InvalidArgumentError('Username and password required for authentication')\n    }\n\n    debug('sending username/password auth')\n\n    // Username/Password authentication request (RFC 1929)\n    // +----+------+----------+------+----------+\n    // |VER | ULEN |  UNAME   | PLEN |  PASSWD  |\n    // +----+------+----------+------+----------+\n    // | 1  |  1   | 1 to 255 |  1   | 1 to 255 |\n    // +----+------+----------+------+----------+\n    const usernameBuffer = Buffer.from(username)\n    const passwordBuffer = Buffer.from(password)\n\n    if (usernameBuffer.length > 255 || passwordBuffer.length > 255) {\n      throw new InvalidArgumentError('Username or password too long')\n    }\n\n    const request = Buffer.alloc(3 + usernameBuffer.length + passwordBuffer.length)\n    request[0] = 0x01 // Sub-negotiation version\n    request[1] = usernameBuffer.length\n    usernameBuffer.copy(request, 2)\n    request[2 + usernameBuffer.length] = passwordBuffer.length\n    passwordBuffer.copy(request, 3 + usernameBuffer.length)\n\n    this.socket.write(request)\n  }\n\n  /**\n   * Handle authentication response\n   */\n  handleAuthResponse () {\n    if (this.buffer.length < 2) {\n      return // Not enough data yet\n    }\n\n    const version = this.buffer[0]\n    const status = this.buffer[1]\n\n    if (version !== 0x01) {\n      throw new Socks5ProxyError(`Invalid auth sub-negotiation version: ${version}`, 'UND_ERR_SOCKS5_AUTH_VERSION')\n    }\n\n    if (status !== 0x00) {\n      throw new Socks5ProxyError('Authentication failed', 'UND_ERR_SOCKS5_AUTH_FAILED')\n    }\n\n    this.buffer = this.buffer.subarray(2)\n    debug('authentication successful')\n    this.markAuthenticated()\n  }\n\n  /**\n   * Send CONNECT command\n   * @param {string} address - Target address (IP or domain)\n   * @param {number} port - Target port\n   */\n  connect (address, port) {\n    if (this.state === STATES.CONNECTING || this.state === STATES.CONNECTED) {\n      throw new InvalidArgumentError('Connection already in progress')\n    }\n\n    if (this.state !== STATES.AUTHENTICATED) {\n      throw new InvalidArgumentError('Client must be authenticated before CONNECT')\n    }\n\n    debug('connecting to', address, port)\n    this.state = STATES.CONNECTING\n\n    const request = this.buildConnectRequest(COMMANDS.CONNECT, address, port)\n    this.socket.write(request)\n  }\n\n  /**\n   * Build a SOCKS5 request\n   */\n  buildConnectRequest (command, address, port) {\n    // Parse address to determine type and buffer\n    const { type: addressType, buffer: addressBuffer } = parseAddress(address)\n\n    // Build request\n    // +----+-----+-------+------+----------+----------+\n    // |VER | CMD |  RSV  | ATYP | DST.ADDR | DST.PORT |\n    // +----+-----+-------+------+----------+----------+\n    // | 1  |  1  | X'00' |  1   | Variable |    2     |\n    // +----+-----+-------+------+----------+----------+\n    const request = Buffer.alloc(4 + addressBuffer.length + 2)\n    request[0] = SOCKS_VERSION\n    request[1] = command\n    request[2] = 0x00 // Reserved\n    request[3] = addressType\n    addressBuffer.copy(request, 4)\n    request.writeUInt16BE(port, 4 + addressBuffer.length)\n\n    return request\n  }\n\n  /**\n   * Handle CONNECT response\n   */\n  handleConnectResponse () {\n    if (this.buffer.length < 4) {\n      return // Not enough data for header\n    }\n\n    const version = this.buffer[0]\n    const reply = this.buffer[1]\n    const addressType = this.buffer[3]\n\n    if (version !== SOCKS_VERSION) {\n      throw new Socks5ProxyError(`Invalid SOCKS version in reply: ${version}`, 'UND_ERR_SOCKS5_REPLY_VERSION')\n    }\n\n    // Calculate the expected response length\n    let responseLength = 4 // VER + REP + RSV + ATYP\n    if (addressType === ADDRESS_TYPES.IPV4) {\n      responseLength += 4 + 2 // IPv4 + port\n    } else if (addressType === ADDRESS_TYPES.DOMAIN) {\n      if (this.buffer.length < 5) {\n        return // Need domain length byte\n      }\n      responseLength += 1 + this.buffer[4] + 2 // length byte + domain + port\n    } else if (addressType === ADDRESS_TYPES.IPV6) {\n      responseLength += 16 + 2 // IPv6 + port\n    } else {\n      throw new Socks5ProxyError(`Invalid address type in reply: ${addressType}`, 'UND_ERR_SOCKS5_ADDR_TYPE')\n    }\n\n    if (this.buffer.length < responseLength) {\n      return // Not enough data for full response\n    }\n\n    if (reply !== REPLY_CODES.SUCCEEDED) {\n      const errorMessage = this.getReplyErrorMessage(reply)\n      throw new Socks5ProxyError(`SOCKS5 connection failed: ${errorMessage}`, `UND_ERR_SOCKS5_REPLY_${reply}`)\n    }\n\n    // Parse bound address and port\n    let boundAddress\n    let offset = 4\n\n    if (addressType === ADDRESS_TYPES.IPV4) {\n      boundAddress = Array.from(this.buffer.subarray(offset, offset + 4)).join('.')\n      offset += 4\n    } else if (addressType === ADDRESS_TYPES.DOMAIN) {\n      const domainLength = this.buffer[offset]\n      offset += 1\n      boundAddress = this.buffer.subarray(offset, offset + domainLength).toString()\n      offset += domainLength\n    } else if (addressType === ADDRESS_TYPES.IPV6) {\n      // Parse IPv6 address from 16-byte buffer\n      const parts = []\n      for (let i = 0; i < 8; i++) {\n        const value = this.buffer.readUInt16BE(offset + i * 2)\n        parts.push(value.toString(16))\n      }\n      boundAddress = parts.join(':')\n      offset += 16\n    }\n\n    const boundPort = this.buffer.readUInt16BE(offset)\n\n    this.buffer = EMPTY_BUFFER\n    this.state = STATES.CONNECTED\n    this.socket.removeListener('data', this.onSocketData)\n\n    debug('connected, bound address:', boundAddress, 'port:', boundPort)\n    this.emit('connected', { address: boundAddress, port: boundPort })\n  }\n\n  /**\n   * Get human-readable error message for reply code\n   */\n  getReplyErrorMessage (reply) {\n    switch (reply) {\n      case REPLY_CODES.GENERAL_FAILURE:\n        return 'General SOCKS server failure'\n      case REPLY_CODES.CONNECTION_NOT_ALLOWED:\n        return 'Connection not allowed by ruleset'\n      case REPLY_CODES.NETWORK_UNREACHABLE:\n        return 'Network unreachable'\n      case REPLY_CODES.HOST_UNREACHABLE:\n        return 'Host unreachable'\n      case REPLY_CODES.CONNECTION_REFUSED:\n        return 'Connection refused'\n      case REPLY_CODES.TTL_EXPIRED:\n        return 'TTL expired'\n      case REPLY_CODES.COMMAND_NOT_SUPPORTED:\n        return 'Command not supported'\n      case REPLY_CODES.ADDRESS_TYPE_NOT_SUPPORTED:\n        return 'Address type not supported'\n      default:\n        return `Unknown error code: ${reply}`\n    }\n  }\n}\n\nmodule.exports = {\n  Socks5Client,\n  AUTH_METHODS,\n  COMMANDS,\n  ADDRESS_TYPES,\n  REPLY_CODES,\n  STATES\n}\n","'use strict'\n\nconst { URL } = require('node:url')\n\nlet tls // include tls conditionally since it is not always available\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { Socks5Client, STATES } = require('../core/socks5-client')\nconst { kDispatch, kClose, kDestroy } = require('../core/symbols')\nconst Pool = require('./pool')\nconst buildConnector = require('../core/connect')\nconst { debuglog } = require('node:util')\n\nconst debug = debuglog('undici:socks5-proxy')\n\nconst kProxyUrl = Symbol('proxy url')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kProxyAuth = Symbol('proxy auth')\nconst kProxyProtocol = Symbol('proxy protocol')\nconst kPools = Symbol('pools')\nconst kConnector = Symbol('connector')\nconst kRequestTls = Symbol('request tls settings')\n\n// Static flag to ensure warning is only emitted once per process\nlet experimentalWarningEmitted = false\n\n/**\n * SOCKS5 proxy agent for dispatching requests through a SOCKS5 proxy\n */\nclass Socks5ProxyAgent extends DispatcherBase {\n  constructor (proxyUrl, options = {}) {\n    super()\n\n    // Emit experimental warning only once\n    if (!experimentalWarningEmitted) {\n      process.emitWarning(\n        'SOCKS5 proxy support is experimental and subject to change',\n        'ExperimentalWarning'\n      )\n      experimentalWarningEmitted = true\n    }\n\n    if (!proxyUrl) {\n      throw new InvalidArgumentError('Proxy URL is mandatory')\n    }\n\n    // Parse proxy URL\n    const url = typeof proxyUrl === 'string' ? new URL(proxyUrl) : proxyUrl\n\n    if (url.protocol !== 'socks5:' && url.protocol !== 'socks:') {\n      throw new InvalidArgumentError('Proxy URL must use socks5:// or socks:// protocol')\n    }\n\n    this[kProxyUrl] = url\n    this[kProxyHeaders] = options.headers || {}\n    this[kProxyProtocol] = options.proxyTls ? 'https:' : 'http:'\n    this[kRequestTls] = options.requestTls\n\n    // Extract auth from URL or options\n    this[kProxyAuth] = {\n      username: options.username || (url.username ? decodeURIComponent(url.username) : null),\n      password: options.password || (url.password ? decodeURIComponent(url.password) : null)\n    }\n\n    // Create connector for proxy connection\n    this[kConnector] = options.connect || buildConnector({\n      ...options.proxyTls,\n      servername: options.proxyTls?.servername || url.hostname\n    })\n\n    // Pools for the actual HTTP connections (with SOCKS5 tunnel connect function), keyed by origin\n    this[kPools] = new Map()\n  }\n\n  /**\n   * Create a SOCKS5 connection to the proxy\n   */\n  async createSocks5Connection (targetHost, targetPort) {\n    const proxyHost = this[kProxyUrl].hostname\n    const proxyPort = parseInt(this[kProxyUrl].port) || 1080\n\n    debug('creating SOCKS5 connection to', proxyHost, proxyPort)\n\n    // Connect to the SOCKS5 proxy\n    const socket = await new Promise((resolve, reject) => {\n      this[kConnector]({\n        hostname: proxyHost,\n        host: proxyHost,\n        port: proxyPort,\n        protocol: this[kProxyProtocol]\n      }, (err, socket) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve(socket)\n        }\n      })\n    })\n\n    // Create SOCKS5 client\n    const socks5Client = new Socks5Client(socket, this[kProxyAuth])\n\n    // Handle SOCKS5 errors\n    socks5Client.on('error', (err) => {\n      debug('SOCKS5 error:', err)\n      socket.destroy()\n    })\n\n    // Perform SOCKS5 handshake\n    await socks5Client.handshake()\n\n    // Wait for authentication (if required)\n    await new Promise((resolve, reject) => {\n      const timeout = setTimeout(() => {\n        reject(new Error('SOCKS5 authentication timeout'))\n      }, 5000)\n\n      const onAuthenticated = () => {\n        clearTimeout(timeout)\n        socks5Client.removeListener('error', onError)\n        resolve()\n      }\n\n      const onError = (err) => {\n        clearTimeout(timeout)\n        socks5Client.removeListener('authenticated', onAuthenticated)\n        reject(err)\n      }\n\n      // Check if already authenticated (for NO_AUTH method)\n      if (socks5Client.state === STATES.AUTHENTICATED) {\n        clearTimeout(timeout)\n        resolve()\n      } else {\n        socks5Client.once('authenticated', onAuthenticated)\n        socks5Client.once('error', onError)\n      }\n    })\n\n    // Send CONNECT command\n    await socks5Client.connect(targetHost, targetPort)\n\n    // Wait for connection\n    await new Promise((resolve, reject) => {\n      const timeout = setTimeout(() => {\n        reject(new Error('SOCKS5 connection timeout'))\n      }, 5000)\n\n      const onConnected = (info) => {\n        debug('SOCKS5 tunnel established to', targetHost, targetPort, 'via', info)\n        clearTimeout(timeout)\n        socks5Client.removeListener('error', onError)\n        resolve()\n      }\n\n      const onError = (err) => {\n        clearTimeout(timeout)\n        socks5Client.removeListener('connected', onConnected)\n        reject(err)\n      }\n\n      socks5Client.once('connected', onConnected)\n      socks5Client.once('error', onError)\n    })\n\n    return socket\n  }\n\n  /**\n   * Dispatch a request through the SOCKS5 proxy\n   */\n  [kDispatch] (opts, handler) {\n    const { origin } = opts\n\n    debug('dispatching request to', origin, 'via SOCKS5')\n\n    try {\n      const originKey = String(origin)\n      let pool = this[kPools].get(originKey)\n      // Create a Pool per origin so requests are not routed to the wrong host\n      if (!pool || pool.destroyed || pool.closed) {\n        pool = new Pool(origin, {\n          pipelining: opts.pipelining,\n          connections: opts.connections,\n          connect: async (connectOpts, callback) => {\n            try {\n              const url = new URL(origin)\n              const targetHost = url.hostname\n              const targetPort = parseInt(url.port) || (url.protocol === 'https:' ? 443 : 80)\n\n              debug('establishing SOCKS5 connection to', targetHost, targetPort)\n\n              // Create SOCKS5 tunnel\n              const socket = await this.createSocks5Connection(targetHost, targetPort)\n\n              // Handle TLS if needed\n              let finalSocket = socket\n              if (url.protocol === 'https:') {\n                if (!tls) {\n                  tls = require('node:tls')\n                }\n                debug('upgrading to TLS')\n                finalSocket = tls.connect({\n                  ...this[kRequestTls],\n                  socket,\n                  servername: this[kRequestTls]?.servername || targetHost\n                })\n\n                await new Promise((resolve, reject) => {\n                  finalSocket.once('secureConnect', resolve)\n                  finalSocket.once('error', reject)\n                })\n              }\n\n              callback(null, finalSocket)\n            } catch (err) {\n              debug('SOCKS5 connection error:', err)\n              callback(err)\n            }\n          }\n        })\n        this[kPools].set(originKey, pool)\n      }\n\n      // Dispatch the request through the per-origin pool\n      return pool[kDispatch](opts, handler)\n    } catch (err) {\n      debug('dispatch error:', err)\n      if (typeof handler.onResponseError === 'function') {\n        handler.onResponseError(null, err)\n        return false\n      } else if (typeof handler.onError === 'function') {\n        handler.onError(err)\n        return false\n      } else {\n        throw err\n      }\n    }\n  }\n\n  async [kClose] () {\n    const closePromises = []\n    for (const pool of this[kPools].values()) {\n      closePromises.push(pool.close())\n    }\n    this[kPools].clear()\n    await Promise.all(closePromises)\n  }\n\n  async [kDestroy] (err) {\n    const destroyPromises = []\n    for (const pool of this[kPools].values()) {\n      destroyPromises.push(pool.destroy(err))\n    }\n    this[kPools].clear()\n    await Promise.all(destroyPromises)\n  }\n}\n\nmodule.exports = Socks5ProxyAgent\n","'use strict'\n\nconst { kProxy, kClose, kDestroy, kDispatch } = require('../core/symbols')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require('../core/errors')\nconst buildConnector = require('../core/connect')\nconst Client = require('./client')\nconst { channels } = require('../core/diagnostics')\nconst Socks5ProxyAgent = require('./socks5-proxy-agent')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\nconst kTunnelProxy = Symbol('tunnel proxy')\n\nfunction defaultProtocolPort (protocol) {\n  return protocol === 'https:' ? 443 : 80\n}\n\nfunction defaultFactory (origin, opts) {\n  return new Pool(origin, opts)\n}\n\nconst noop = () => {}\n\nfunction defaultAgentFactory (origin, opts) {\n  if (opts.connections === 1) {\n    return new Client(origin, opts)\n  }\n  return new Pool(origin, opts)\n}\n\nclass Http1ProxyWrapper extends DispatcherBase {\n  #client\n\n  constructor (proxyUrl, { headers = {}, connect, factory }) {\n    if (!proxyUrl) {\n      throw new InvalidArgumentError('Proxy URL is mandatory')\n    }\n\n    super()\n\n    this[kProxyHeaders] = headers\n    if (factory) {\n      this.#client = factory(proxyUrl, { connect })\n    } else {\n      this.#client = new Client(proxyUrl, { connect })\n    }\n  }\n\n  [kDispatch] (opts, handler) {\n    const onHeaders = handler.onHeaders\n    handler.onHeaders = function (statusCode, data, resume) {\n      if (statusCode === 407) {\n        if (typeof handler.onError === 'function') {\n          handler.onError(new InvalidArgumentError('Proxy Authentication Required (407)'))\n        }\n        return\n      }\n      if (onHeaders) onHeaders.call(this, statusCode, data, resume)\n    }\n\n    // Rewrite request as an HTTP1 Proxy request, without tunneling.\n    const {\n      origin,\n      path = '/',\n      headers = {}\n    } = opts\n\n    opts.path = origin + path\n\n    if (!('host' in headers) && !('Host' in headers)) {\n      const { host } = new URL(origin)\n      headers.host = host\n    }\n    opts.headers = { ...this[kProxyHeaders], ...headers }\n\n    return this.#client[kDispatch](opts, handler)\n  }\n\n  [kClose] () {\n    return this.#client.close()\n  }\n\n  [kDestroy] (err) {\n    return this.#client.destroy(err)\n  }\n}\n\nclass ProxyAgent extends DispatcherBase {\n  constructor (opts) {\n    if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) {\n      throw new InvalidArgumentError('Proxy uri is mandatory')\n    }\n\n    const { clientFactory = defaultFactory } = opts\n    if (typeof clientFactory !== 'function') {\n      throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n    }\n\n    const { proxyTunnel = true } = opts\n\n    super()\n\n    const url = this.#getUrl(opts)\n    const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url\n\n    this[kProxy] = { uri: href, protocol }\n    this[kRequestTls] = opts.requestTls\n    this[kProxyTls] = opts.proxyTls\n    this[kProxyHeaders] = opts.headers || {}\n    this[kTunnelProxy] = proxyTunnel\n\n    if (opts.auth && opts.token) {\n      throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n    } else if (opts.auth) {\n      /* @deprecated in favour of opts.token */\n      this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n    } else if (opts.token) {\n      this[kProxyHeaders]['proxy-authorization'] = opts.token\n    } else if (username && password) {\n      this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n    }\n\n    const connect = buildConnector({ ...opts.proxyTls })\n    this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n\n    const agentFactory = opts.factory || defaultAgentFactory\n    const factory = (origin, options) => {\n      const { protocol } = new URL(origin)\n\n      // Handle SOCKS5 proxy\n      if (this[kProxy].protocol === 'socks5:' || this[kProxy].protocol === 'socks:') {\n        return new Socks5ProxyAgent(this[kProxy].uri, {\n          headers: this[kProxyHeaders],\n          connect,\n          factory: agentFactory,\n          username: opts.username || username,\n          password: opts.password || password,\n          proxyTls: opts.proxyTls,\n          requestTls: opts.requestTls\n        })\n      }\n\n      if (!this[kTunnelProxy] && protocol === 'http:' && this[kProxy].protocol === 'http:') {\n        return new Http1ProxyWrapper(this[kProxy].uri, {\n          headers: this[kProxyHeaders],\n          connect,\n          factory: agentFactory\n        })\n      }\n      return agentFactory(origin, options)\n    }\n\n    // For SOCKS5 proxies, we don't need a client to the proxy itself\n    // The SOCKS5 connection is handled within Socks5ProxyAgent\n    if (protocol === 'socks5:' || protocol === 'socks:') {\n      this[kClient] = null\n    } else {\n      this[kClient] = clientFactory(url, { connect })\n    }\n\n    this[kAgent] = new Agent({\n      ...opts,\n      factory,\n      connect: async (opts, callback) => {\n        // SOCKS5 proxies handle their own connections via Socks5ProxyAgent,\n        // so this connect function should never be called for them.\n        if (!this[kClient]) {\n          callback(new InvalidArgumentError('Cannot establish tunnel connection without a proxy client'))\n          return\n        }\n\n        let requestedPath = opts.host\n        if (!opts.port) {\n          requestedPath += `:${defaultProtocolPort(opts.protocol)}`\n        }\n        try {\n          const connectParams = {\n            origin,\n            port,\n            path: requestedPath,\n            signal: opts.signal,\n            headers: {\n              ...this[kProxyHeaders],\n              host: opts.host,\n              ...(opts.connections == null || opts.connections > 0 ? { 'proxy-connection': 'keep-alive' } : {})\n            },\n            servername: this[kProxyTls]?.servername || proxyHostname\n          }\n          const { socket, statusCode } = await this[kClient].connect(connectParams)\n          if (statusCode !== 200) {\n            socket.on('error', noop).destroy()\n            callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n            return\n          }\n\n          if (channels.proxyConnected.hasSubscribers) {\n            channels.proxyConnected.publish({\n              socket,\n              connectParams\n            })\n          }\n\n          if (opts.protocol !== 'https:') {\n            callback(null, socket)\n            return\n          }\n          let servername\n          if (this[kRequestTls]) {\n            servername = this[kRequestTls].servername\n          } else {\n            servername = opts.servername\n          }\n          this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n        } catch (err) {\n          if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n            // Throw a custom error to avoid loop in client.js#connect\n            callback(new SecureProxyConnectionError(err))\n          } else {\n            callback(err)\n          }\n        }\n      }\n    })\n  }\n\n  dispatch (opts, handler) {\n    const headers = buildHeaders(opts.headers)\n    throwIfProxyAuthIsSent(headers)\n\n    if (headers && !('host' in headers) && !('Host' in headers)) {\n      const { host } = new URL(opts.origin)\n      headers.host = host\n    }\n\n    return this[kAgent].dispatch(\n      {\n        ...opts,\n        headers\n      },\n      handler\n    )\n  }\n\n  /**\n   * @param {import('../../types/proxy-agent').ProxyAgent.Options | string | URL} opts\n   * @returns {URL}\n   */\n  #getUrl (opts) {\n    if (typeof opts === 'string') {\n      return new URL(opts)\n    } else if (opts instanceof URL) {\n      return opts\n    } else {\n      return new URL(opts.uri)\n    }\n  }\n\n  [kClose] () {\n    const promises = [this[kAgent].close()]\n    if (this[kClient]) {\n      promises.push(this[kClient].close())\n    }\n    return Promise.all(promises)\n  }\n\n  [kDestroy] () {\n    const promises = [this[kAgent].destroy()]\n    if (this[kClient]) {\n      promises.push(this[kClient].destroy())\n    }\n    return Promise.all(promises)\n  }\n}\n\n/**\n * @param {string[] | Record<string, string>} headers\n * @returns {Record<string, string>}\n */\nfunction buildHeaders (headers) {\n  // When using undici.fetch, the headers list is stored\n  // as an array.\n  if (Array.isArray(headers)) {\n    /** @type {Record<string, string>} */\n    const headersPair = {}\n\n    for (let i = 0; i < headers.length; i += 2) {\n      headersPair[headers[i]] = headers[i + 1]\n    }\n\n    return headersPair\n  }\n\n  return headers\n}\n\n/**\n * @param {Record<string, string>} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n  const existProxyAuth = headers && Object.keys(headers)\n    .find((key) => key.toLowerCase() === 'proxy-authorization')\n  if (existProxyAuth) {\n    throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n  }\n}\n\nmodule.exports = ProxyAgent\n","'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require('../core/symbols')\nconst ProxyAgent = require('./proxy-agent')\nconst Agent = require('./agent')\n\nconst DEFAULT_PORTS = {\n  'http:': 80,\n  'https:': 443\n}\n\nclass EnvHttpProxyAgent extends DispatcherBase {\n  #noProxyValue = null\n  #noProxyEntries = null\n  #opts = null\n\n  constructor (opts = {}) {\n    super()\n    this.#opts = opts\n\n    const { httpProxy, httpsProxy, noProxy, ...agentOpts } = opts\n\n    this[kNoProxyAgent] = new Agent(agentOpts)\n\n    const HTTP_PROXY = httpProxy ?? process.env.http_proxy ?? process.env.HTTP_PROXY\n    if (HTTP_PROXY) {\n      this[kHttpProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTP_PROXY })\n    } else {\n      this[kHttpProxyAgent] = this[kNoProxyAgent]\n    }\n\n    const HTTPS_PROXY = httpsProxy ?? process.env.https_proxy ?? process.env.HTTPS_PROXY\n    if (HTTPS_PROXY) {\n      this[kHttpsProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTPS_PROXY })\n    } else {\n      this[kHttpsProxyAgent] = this[kHttpProxyAgent]\n    }\n\n    this.#parseNoProxy()\n  }\n\n  [kDispatch] (opts, handler) {\n    const url = new URL(opts.origin)\n    const agent = this.#getProxyAgentForUrl(url)\n    return agent.dispatch(opts, handler)\n  }\n\n  [kClose] () {\n    return Promise.all([\n      this[kNoProxyAgent].close(),\n      !this[kHttpProxyAgent][kClosed] && this[kHttpProxyAgent].close(),\n      !this[kHttpsProxyAgent][kClosed] && this[kHttpsProxyAgent].close()\n    ])\n  }\n\n  [kDestroy] (err) {\n    return Promise.all([\n      this[kNoProxyAgent].destroy(err),\n      !this[kHttpProxyAgent][kDestroyed] && this[kHttpProxyAgent].destroy(err),\n      !this[kHttpsProxyAgent][kDestroyed] && this[kHttpsProxyAgent].destroy(err)\n    ])\n  }\n\n  #getProxyAgentForUrl (url) {\n    let { protocol, host: hostname, port } = url\n\n    // Stripping ports in this way instead of using parsedUrl.hostname to make\n    // sure that the brackets around IPv6 addresses are kept.\n    hostname = hostname.replace(/:\\d*$/, '').toLowerCase()\n    port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0\n    if (!this.#shouldProxy(hostname, port)) {\n      return this[kNoProxyAgent]\n    }\n    if (protocol === 'https:') {\n      return this[kHttpsProxyAgent]\n    }\n    return this[kHttpProxyAgent]\n  }\n\n  #shouldProxy (hostname, port) {\n    if (this.#noProxyChanged) {\n      this.#parseNoProxy()\n    }\n\n    if (this.#noProxyEntries.length === 0) {\n      return true // Always proxy if NO_PROXY is not set or empty.\n    }\n    if (this.#noProxyValue === '*') {\n      return false // Never proxy if wildcard is set.\n    }\n\n    for (let i = 0; i < this.#noProxyEntries.length; i++) {\n      const entry = this.#noProxyEntries[i]\n      if (entry.port && entry.port !== port) {\n        continue // Skip if ports don't match.\n      }\n      // Don't proxy if the hostname is equal with the no_proxy host.\n      if (hostname === entry.hostname) {\n        return false\n      }\n      // Don't proxy if the hostname is the subdomain of the no_proxy host.\n      // Reference - https://github.com/denoland/deno/blob/6fbce91e40cc07fc6da74068e5cc56fdd40f7b4c/ext/fetch/proxy.rs#L485\n      if (hostname.slice(-(entry.hostname.length + 1)) === `.${entry.hostname}`) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  #parseNoProxy () {\n    const noProxyValue = this.#opts.noProxy ?? this.#noProxyEnv\n    const noProxySplit = noProxyValue.split(/[,\\s]/)\n    const noProxyEntries = []\n\n    for (let i = 0; i < noProxySplit.length; i++) {\n      const entry = noProxySplit[i]\n      if (!entry) {\n        continue\n      }\n      const parsed = entry.match(/^(.+):(\\d+)$/)\n      noProxyEntries.push({\n        // strip leading dot or asterisk with dot\n        hostname: (parsed ? parsed[1] : entry).replace(/^\\*?\\./, '').toLowerCase(),\n        port: parsed ? Number.parseInt(parsed[2], 10) : 0\n      })\n    }\n\n    this.#noProxyValue = noProxyValue\n    this.#noProxyEntries = noProxyEntries\n  }\n\n  get #noProxyChanged () {\n    if (this.#opts.noProxy !== undefined) {\n      return false\n    }\n    return this.#noProxyValue !== this.#noProxyEnv\n  }\n\n  get #noProxyEnv () {\n    return process.env.no_proxy ?? process.env.NO_PROXY ?? ''\n  }\n}\n\nmodule.exports = EnvHttpProxyAgent\n","'use strict'\nconst assert = require('node:assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst WrapHandler = require('./wrap-handler')\nconst {\n  isDisturbed,\n  parseRangeHeader,\n  wrapRequestBody\n} = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n  const retryTime = new Date(retryAfter).getTime()\n  return isNaN(retryTime) ? 0 : retryTime - Date.now()\n}\n\nclass RetryHandler {\n  constructor (opts, { dispatch, handler }) {\n    const { retryOptions, ...dispatchOpts } = opts\n    const {\n      // Retry scoped\n      retry: retryFn,\n      maxRetries,\n      maxTimeout,\n      minTimeout,\n      timeoutFactor,\n      // Response scoped\n      methods,\n      errorCodes,\n      retryAfter,\n      statusCodes,\n      throwOnError\n    } = retryOptions ?? {}\n\n    this.error = null\n    this.dispatch = dispatch\n    this.handler = WrapHandler.wrap(handler)\n    this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) }\n    this.retryOpts = {\n      throwOnError: throwOnError ?? true,\n      retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n      retryAfter: retryAfter ?? true,\n      maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n      minTimeout: minTimeout ?? 500, // .5s\n      timeoutFactor: timeoutFactor ?? 2,\n      maxRetries: maxRetries ?? 5,\n      // What errors we should retry\n      methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n      // Indicates which errors to retry\n      statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n      // List of errors to retry\n      errorCodes: errorCodes ?? [\n        'ECONNRESET',\n        'ECONNREFUSED',\n        'ENOTFOUND',\n        'ENETDOWN',\n        'ENETUNREACH',\n        'EHOSTDOWN',\n        'EHOSTUNREACH',\n        'EPIPE',\n        'UND_ERR_SOCKET'\n      ]\n    }\n\n    this.retryCount = 0\n    this.retryCountCheckpoint = 0\n    this.headersSent = false\n    this.start = 0\n    this.end = null\n    this.etag = null\n  }\n\n  onResponseStartWithRetry (controller, statusCode, headers, statusMessage, err) {\n    if (this.retryOpts.throwOnError) {\n      // Preserve old behavior for status codes that are not eligible for retry\n      if (this.retryOpts.statusCodes.includes(statusCode) === false) {\n        this.headersSent = true\n        this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage)\n      } else {\n        this.error = err\n      }\n\n      return\n    }\n\n    if (isDisturbed(this.opts.body)) {\n      this.headersSent = true\n      this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage)\n      return\n    }\n\n    function shouldRetry (passedErr) {\n      if (passedErr) {\n        this.headersSent = true\n        this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage)\n        controller.resume()\n        return\n      }\n\n      this.error = err\n      controller.resume()\n    }\n\n    controller.pause()\n    this.retryOpts.retry(\n      err,\n      {\n        state: { counter: this.retryCount },\n        opts: { retryOptions: this.retryOpts, ...this.opts }\n      },\n      shouldRetry.bind(this)\n    )\n  }\n\n  onRequestStart (controller, context) {\n    if (!this.headersSent) {\n      this.handler.onRequestStart?.(controller, context)\n    }\n  }\n\n  onRequestUpgrade (controller, statusCode, headers, socket) {\n    this.handler.onRequestUpgrade?.(controller, statusCode, headers, socket)\n  }\n\n  static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n    const { statusCode, code, headers } = err\n    const { method, retryOptions } = opts\n    const {\n      maxRetries,\n      minTimeout,\n      maxTimeout,\n      timeoutFactor,\n      statusCodes,\n      errorCodes,\n      methods\n    } = retryOptions\n    const { counter } = state\n\n    // Any code that is not a Undici's originated and allowed to retry\n    if (code && code !== 'UND_ERR_REQ_RETRY' && !errorCodes.includes(code)) {\n      cb(err)\n      return\n    }\n\n    // If a set of method are provided and the current method is not in the list\n    if (Array.isArray(methods) && !methods.includes(method)) {\n      cb(err)\n      return\n    }\n\n    // If a set of status code are provided and the current status code is not in the list\n    if (\n      statusCode != null &&\n      Array.isArray(statusCodes) &&\n      !statusCodes.includes(statusCode)\n    ) {\n      cb(err)\n      return\n    }\n\n    // If we reached the max number of retries\n    if (counter > maxRetries) {\n      cb(err)\n      return\n    }\n\n    let retryAfterHeader = headers?.['retry-after']\n    if (retryAfterHeader) {\n      retryAfterHeader = Number(retryAfterHeader)\n      retryAfterHeader = Number.isNaN(retryAfterHeader)\n        ? calculateRetryAfterHeader(headers['retry-after'])\n        : retryAfterHeader * 1e3 // Retry-After is in seconds\n    }\n\n    const retryTimeout =\n      retryAfterHeader > 0\n        ? Math.min(retryAfterHeader, maxTimeout)\n        : Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout)\n\n    setTimeout(() => cb(null), retryTimeout)\n  }\n\n  onResponseStart (controller, statusCode, headers, statusMessage) {\n    this.error = null\n    this.retryCount += 1\n\n    if (statusCode >= 300) {\n      const err = new RequestRetryError('Request failed', statusCode, {\n        headers,\n        data: {\n          count: this.retryCount\n        }\n      })\n\n      this.onResponseStartWithRetry(controller, statusCode, headers, statusMessage, err)\n      return\n    }\n\n    // Checkpoint for resume from where we left it\n    if (this.headersSent) {\n      // Only Partial Content 206 supposed to provide Content-Range,\n      // any other status code that partially consumed the payload\n      // should not be retried because it would result in downstream\n      // wrongly concatenate multiple responses.\n      if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) {\n        throw new RequestRetryError('server does not support the range header and the payload was partially consumed', statusCode, {\n          headers,\n          data: { count: this.retryCount }\n        })\n      }\n\n      const contentRange = parseRangeHeader(headers['content-range'])\n      // If no content range\n      if (!contentRange) {\n        // We always throw here as we want to indicate that we entred unexpected path\n        throw new RequestRetryError('Content-Range mismatch', statusCode, {\n          headers,\n          data: { count: this.retryCount }\n        })\n      }\n\n      // Let's start with a weak etag check\n      if (this.etag != null && this.etag !== headers.etag) {\n        // We always throw here as we want to indicate that we entred unexpected path\n        throw new RequestRetryError('ETag mismatch', statusCode, {\n          headers,\n          data: { count: this.retryCount }\n        })\n      }\n\n      const { start, size, end = size ? size - 1 : null } = contentRange\n\n      assert(this.start === start, 'content-range mismatch')\n      assert(this.end == null || this.end === end, 'content-range mismatch')\n\n      return\n    }\n\n    if (this.end == null) {\n      if (statusCode === 206) {\n        // First time we receive 206\n        const range = parseRangeHeader(headers['content-range'])\n\n        if (range == null) {\n          this.headersSent = true\n          this.handler.onResponseStart?.(\n            controller,\n            statusCode,\n            headers,\n            statusMessage\n          )\n          return\n        }\n\n        const { start, size, end = size ? size - 1 : null } = range\n        assert(\n          start != null && Number.isFinite(start),\n          'content-range mismatch'\n        )\n        assert(end != null && Number.isFinite(end), 'invalid content-length')\n\n        this.start = start\n        this.end = end\n      }\n\n      // We make our best to checkpoint the body for further range headers\n      if (this.end == null) {\n        const contentLength = headers['content-length']\n        this.end = contentLength != null ? Number(contentLength) - 1 : null\n      }\n\n      assert(Number.isFinite(this.start))\n      assert(\n        this.end == null || Number.isFinite(this.end),\n        'invalid content-length'\n      )\n\n      this.resume = true\n      this.etag = headers.etag != null ? headers.etag : null\n\n      // Weak etags are not useful for comparison nor cache\n      // for instance not safe to assume if the response is byte-per-byte\n      // equal\n      if (\n        this.etag != null &&\n        this.etag[0] === 'W' &&\n        this.etag[1] === '/'\n      ) {\n        this.etag = null\n      }\n\n      this.headersSent = true\n      this.handler.onResponseStart?.(\n        controller,\n        statusCode,\n        headers,\n        statusMessage\n      )\n    } else {\n      throw new RequestRetryError('Request failed', statusCode, {\n        headers,\n        data: { count: this.retryCount }\n      })\n    }\n  }\n\n  onResponseData (controller, chunk) {\n    if (this.error) {\n      return\n    }\n\n    this.start += chunk.length\n\n    this.handler.onResponseData?.(controller, chunk)\n  }\n\n  onResponseEnd (controller, trailers) {\n    if (this.error && this.retryOpts.throwOnError) {\n      throw this.error\n    }\n\n    if (!this.error) {\n      this.retryCount = 0\n      return this.handler.onResponseEnd?.(controller, trailers)\n    }\n\n    this.retry(controller)\n  }\n\n  retry (controller) {\n    if (this.start !== 0) {\n      const headers = { range: `bytes=${this.start}-${this.end ?? ''}` }\n\n      // Weak etag check - weak etags will make comparison algorithms never match\n      if (this.etag != null) {\n        headers['if-match'] = this.etag\n      }\n\n      this.opts = {\n        ...this.opts,\n        headers: {\n          ...this.opts.headers,\n          ...headers\n        }\n      }\n    }\n\n    try {\n      this.retryCountCheckpoint = this.retryCount\n      this.dispatch(this.opts, this)\n    } catch (err) {\n      this.handler.onResponseError?.(controller, err)\n    }\n  }\n\n  onResponseError (controller, err) {\n    if (controller?.aborted || isDisturbed(this.opts.body)) {\n      this.handler.onResponseError?.(controller, err)\n      return\n    }\n\n    function shouldRetry (returnedErr) {\n      if (!returnedErr) {\n        this.retry(controller)\n        return\n      }\n\n      this.handler?.onResponseError?.(controller, returnedErr)\n    }\n\n    // We reconcile in case of a mix between network errors\n    // and server error response\n    if (this.retryCount - this.retryCountCheckpoint > 0) {\n      // We count the difference between the last checkpoint and the current retry count\n      this.retryCount =\n        this.retryCountCheckpoint +\n        (this.retryCount - this.retryCountCheckpoint)\n    } else {\n      this.retryCount += 1\n    }\n\n    this.retryOpts.retry(\n      err,\n      {\n        state: { counter: this.retryCount },\n        opts: { retryOptions: this.retryOpts, ...this.opts }\n      },\n      shouldRetry.bind(this)\n    )\n  }\n}\n\nmodule.exports = RetryHandler\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst RetryHandler = require('../handler/retry-handler')\n\nclass RetryAgent extends Dispatcher {\n  #agent = null\n  #options = null\n  constructor (agent, options = {}) {\n    super(options)\n    this.#agent = agent\n    this.#options = options\n  }\n\n  dispatch (opts, handler) {\n    const retry = new RetryHandler({\n      ...opts,\n      retryOptions: this.#options\n    }, {\n      dispatch: this.#agent.dispatch.bind(this.#agent),\n      handler\n    })\n    return this.#agent.dispatch(opts, retry)\n  }\n\n  close () {\n    return this.#agent.close()\n  }\n\n  destroy () {\n    return this.#agent.destroy()\n  }\n}\n\nmodule.exports = RetryAgent\n","'use strict'\n\nconst { InvalidArgumentError } = require('../core/errors')\nconst Client = require('./client')\n\nclass H2CClient extends Client {\n  constructor (origin, clientOpts) {\n    if (typeof origin === 'string') {\n      origin = new URL(origin)\n    }\n\n    if (origin.protocol !== 'http:') {\n      throw new InvalidArgumentError(\n        'h2c-client: Only h2c protocol is supported'\n      )\n    }\n\n    const { maxConcurrentStreams, pipelining, ...opts } =\n            clientOpts ?? {}\n    let defaultMaxConcurrentStreams = 100\n    let defaultPipelining = 100\n\n    if (\n      maxConcurrentStreams != null &&\n            Number.isInteger(maxConcurrentStreams) &&\n            maxConcurrentStreams > 0\n    ) {\n      defaultMaxConcurrentStreams = maxConcurrentStreams\n    }\n\n    if (pipelining != null && Number.isInteger(pipelining) && pipelining > 0) {\n      defaultPipelining = pipelining\n    }\n\n    if (defaultPipelining > defaultMaxConcurrentStreams) {\n      throw new InvalidArgumentError(\n        'h2c-client: pipelining cannot be greater than maxConcurrentStreams'\n      )\n    }\n\n    super(origin, {\n      ...opts,\n      maxConcurrentStreams: defaultMaxConcurrentStreams,\n      pipelining: defaultPipelining,\n      allowH2: true,\n      useH2c: true\n    })\n  }\n}\n\nmodule.exports = H2CClient\n","'use strict'\n\nconst assert = require('node:assert')\nconst { Readable } = require('node:stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom } = require('../core/util')\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('kAbort')\nconst kContentType = Symbol('kContentType')\nconst kContentLength = Symbol('kContentLength')\nconst kUsed = Symbol('kUsed')\nconst kBytesRead = Symbol('kBytesRead')\n\nconst noop = () => {}\n\n/**\n * @class\n * @extends {Readable}\n * @see https://fetch.spec.whatwg.org/#body\n */\nclass BodyReadable extends Readable {\n  /**\n   * @param {object} opts\n   * @param {(this: Readable, size: number) => void} opts.resume\n   * @param {() => (void | null)} opts.abort\n   * @param {string} [opts.contentType = '']\n   * @param {number} [opts.contentLength]\n   * @param {number} [opts.highWaterMark = 64 * 1024]\n   */\n  constructor ({\n    resume,\n    abort,\n    contentType = '',\n    contentLength,\n    highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n  }) {\n    super({\n      autoDestroy: true,\n      read: resume,\n      highWaterMark\n    })\n\n    this._readableState.dataEmitted = false\n\n    this[kAbort] = abort\n\n    /** @type {Consume | null} */\n    this[kConsume] = null\n\n    /** @type {number} */\n    this[kBytesRead] = 0\n\n    /** @type {ReadableStream|null} */\n    this[kBody] = null\n\n    /** @type {boolean} */\n    this[kUsed] = false\n\n    /** @type {string} */\n    this[kContentType] = contentType\n\n    /** @type {number|null} */\n    this[kContentLength] = Number.isFinite(contentLength) ? contentLength : null\n\n    /**\n     * Is stream being consumed through Readable API?\n     * This is an optimization so that we avoid checking\n     * for 'data' and 'readable' listeners in the hot path\n     * inside push().\n     *\n     * @type {boolean}\n     */\n    this[kReading] = false\n  }\n\n  /**\n   * @param {Error|null} err\n   * @param {(error:(Error|null)) => void} callback\n   * @returns {void}\n   */\n  _destroy (err, callback) {\n    if (!err && !this._readableState.endEmitted) {\n      err = new RequestAbortedError()\n    }\n\n    if (err) {\n      this[kAbort]()\n    }\n\n    // Workaround for Node \"bug\". If the stream is destroyed in same\n    // tick as it is created, then a user who is waiting for a\n    // promise (i.e micro tick) for installing an 'error' listener will\n    // never get a chance and will always encounter an unhandled exception.\n    if (!this[kUsed]) {\n      setImmediate(callback, err)\n    } else {\n      callback(err)\n    }\n  }\n\n  /**\n   * @param {string|symbol} event\n   * @param {(...args: any[]) => void} listener\n   * @returns {this}\n   */\n  on (event, listener) {\n    if (event === 'data' || event === 'readable') {\n      this[kReading] = true\n      this[kUsed] = true\n    }\n    return super.on(event, listener)\n  }\n\n  /**\n   * @param {string|symbol} event\n   * @param {(...args: any[]) => void} listener\n   * @returns {this}\n   */\n  addListener (event, listener) {\n    return this.on(event, listener)\n  }\n\n  /**\n   * @param {string|symbol} event\n   * @param {(...args: any[]) => void} listener\n   * @returns {this}\n   */\n  off (event, listener) {\n    const ret = super.off(event, listener)\n    if (event === 'data' || event === 'readable') {\n      this[kReading] = (\n        this.listenerCount('data') > 0 ||\n        this.listenerCount('readable') > 0\n      )\n    }\n    return ret\n  }\n\n  /**\n   * @param {string|symbol} event\n   * @param {(...args: any[]) => void} listener\n   * @returns {this}\n   */\n  removeListener (event, listener) {\n    return this.off(event, listener)\n  }\n\n  /**\n   * @param {Buffer|null} chunk\n   * @returns {boolean}\n   */\n  push (chunk) {\n    if (chunk) {\n      this[kBytesRead] += chunk.length\n      if (this[kConsume]) {\n        consumePush(this[kConsume], chunk)\n        return this[kReading] ? super.push(chunk) : true\n      }\n    }\n\n    return super.push(chunk)\n  }\n\n  /**\n   * Consumes and returns the body as a string.\n   *\n   * @see https://fetch.spec.whatwg.org/#dom-body-text\n   * @returns {Promise<string>}\n   */\n  text () {\n    return consume(this, 'text')\n  }\n\n  /**\n   * Consumes and returns the body as a JavaScript Object.\n   *\n   * @see https://fetch.spec.whatwg.org/#dom-body-json\n   * @returns {Promise<unknown>}\n   */\n  json () {\n    return consume(this, 'json')\n  }\n\n  /**\n   * Consumes and returns the body as a Blob\n   *\n   * @see https://fetch.spec.whatwg.org/#dom-body-blob\n   * @returns {Promise<Blob>}\n   */\n  blob () {\n    return consume(this, 'blob')\n  }\n\n  /**\n   * Consumes and returns the body as an Uint8Array.\n   *\n   * @see https://fetch.spec.whatwg.org/#dom-body-bytes\n   * @returns {Promise<Uint8Array>}\n   */\n  bytes () {\n    return consume(this, 'bytes')\n  }\n\n  /**\n   * Consumes and returns the body as an ArrayBuffer.\n   *\n   * @see https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n   * @returns {Promise<ArrayBuffer>}\n   */\n  arrayBuffer () {\n    return consume(this, 'arrayBuffer')\n  }\n\n  /**\n   * Not implemented\n   *\n   * @see https://fetch.spec.whatwg.org/#dom-body-formdata\n   * @throws {NotSupportedError}\n   */\n  async formData () {\n    // TODO: Implement.\n    throw new NotSupportedError()\n  }\n\n  /**\n   * Returns true if the body is not null and the body has been consumed.\n   * Otherwise, returns false.\n   *\n   * @see https://fetch.spec.whatwg.org/#dom-body-bodyused\n   * @readonly\n   * @returns {boolean}\n   */\n  get bodyUsed () {\n    return util.isDisturbed(this)\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#dom-body-body\n   * @readonly\n   * @returns {ReadableStream}\n   */\n  get body () {\n    if (!this[kBody]) {\n      this[kBody] = ReadableStreamFrom(this)\n      if (this[kConsume]) {\n        // TODO: Is this the best way to force a lock?\n        this[kBody].getReader() // Ensure stream is locked.\n        assert(this[kBody].locked)\n      }\n    }\n    return this[kBody]\n  }\n\n  /**\n   * Dumps the response body by reading `limit` number of bytes.\n   * @param {object} opts\n   * @param {number} [opts.limit = 131072] Number of bytes to read.\n   * @param {AbortSignal} [opts.signal] An AbortSignal to cancel the dump.\n   * @returns {Promise<null>}\n   */\n  dump (opts) {\n    const signal = opts?.signal\n\n    if (signal != null && (typeof signal !== 'object' || !('aborted' in signal))) {\n      return Promise.reject(new InvalidArgumentError('signal must be an AbortSignal'))\n    }\n\n    const limit = opts?.limit && Number.isFinite(opts.limit)\n      ? opts.limit\n      : 128 * 1024\n\n    if (signal?.aborted) {\n      return Promise.reject(signal.reason ?? new AbortError())\n    }\n\n    if (this._readableState.closeEmitted) {\n      return Promise.resolve(null)\n    }\n\n    return new Promise((resolve, reject) => {\n      if (\n        (this[kContentLength] && (this[kContentLength] > limit)) ||\n        this[kBytesRead] > limit\n      ) {\n        this.destroy(new AbortError())\n      }\n\n      if (signal) {\n        const onAbort = () => {\n          this.destroy(signal.reason ?? new AbortError())\n        }\n        signal.addEventListener('abort', onAbort)\n        this\n          .on('close', function () {\n            signal.removeEventListener('abort', onAbort)\n            if (signal.aborted) {\n              reject(signal.reason ?? new AbortError())\n            } else {\n              resolve(null)\n            }\n          })\n      } else {\n        this.on('close', resolve)\n      }\n\n      this\n        .on('error', noop)\n        .on('data', () => {\n          if (this[kBytesRead] > limit) {\n            this.destroy()\n          }\n        })\n        .resume()\n    })\n  }\n\n  /**\n   * @param {BufferEncoding} encoding\n   * @returns {this}\n   */\n  setEncoding (encoding) {\n    if (Buffer.isEncoding(encoding)) {\n      this._readableState.encoding = encoding\n    }\n    return this\n  }\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestream-locked\n * @param {BodyReadable} bodyReadable\n * @returns {boolean}\n */\nfunction isLocked (bodyReadable) {\n  // Consume is an implicit lock.\n  return bodyReadable[kBody]?.locked === true || bodyReadable[kConsume] !== null\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-unusable\n * @param {BodyReadable} bodyReadable\n * @returns {boolean}\n */\nfunction isUnusable (bodyReadable) {\n  return util.isDisturbed(bodyReadable) || isLocked(bodyReadable)\n}\n\n/**\n * @typedef {'text' | 'json' | 'blob' | 'bytes' | 'arrayBuffer'} ConsumeType\n */\n\n/**\n * @template {ConsumeType} T\n * @typedef {T extends 'text' ? string :\n *           T extends 'json' ? unknown :\n *           T extends 'blob' ? Blob :\n *           T extends 'arrayBuffer' ? ArrayBuffer :\n *           T extends 'bytes' ? Uint8Array :\n *           never\n * } ConsumeReturnType\n */\n/**\n * @typedef {object} Consume\n * @property {ConsumeType} type\n * @property {BodyReadable} stream\n * @property {((value?: any) => void)} resolve\n * @property {((err: Error) => void)} reject\n * @property {number} length\n * @property {Buffer[]} body\n */\n\n/**\n * @template {ConsumeType} T\n * @param {BodyReadable} stream\n * @param {T} type\n * @returns {Promise<ConsumeReturnType<T>>}\n */\nfunction consume (stream, type) {\n  assert(!stream[kConsume])\n\n  return new Promise((resolve, reject) => {\n    if (isUnusable(stream)) {\n      const rState = stream._readableState\n      if (rState.destroyed && rState.closeEmitted === false) {\n        stream\n          .on('error', reject)\n          .on('close', () => {\n            reject(new TypeError('unusable'))\n          })\n      } else {\n        reject(rState.errored ?? new TypeError('unusable'))\n      }\n    } else {\n      queueMicrotask(() => {\n        stream[kConsume] = {\n          type,\n          stream,\n          resolve,\n          reject,\n          length: 0,\n          body: []\n        }\n\n        stream\n          .on('error', function (err) {\n            consumeFinish(this[kConsume], err)\n          })\n          .on('close', function () {\n            if (this[kConsume].body !== null) {\n              consumeFinish(this[kConsume], new RequestAbortedError())\n            }\n          })\n\n        consumeStart(stream[kConsume])\n      })\n    }\n  })\n}\n\n/**\n * @param {Consume} consume\n * @returns {void}\n */\nfunction consumeStart (consume) {\n  if (consume.body === null) {\n    return\n  }\n\n  const { _readableState: state } = consume.stream\n\n  if (state.bufferIndex) {\n    const start = state.bufferIndex\n    const end = state.buffer.length\n    for (let n = start; n < end; n++) {\n      consumePush(consume, state.buffer[n])\n    }\n  } else {\n    for (const chunk of state.buffer) {\n      consumePush(consume, chunk)\n    }\n  }\n\n  if (state.endEmitted) {\n    consumeEnd(this[kConsume], this._readableState.encoding)\n  } else {\n    consume.stream.on('end', function () {\n      consumeEnd(this[kConsume], this._readableState.encoding)\n    })\n  }\n\n  consume.stream.resume()\n\n  while (consume.stream.read() != null) {\n    // Loop\n  }\n}\n\n/**\n * @param {Buffer[]} chunks\n * @param {number} length\n * @param {BufferEncoding} [encoding='utf8']\n * @returns {string}\n */\nfunction chunksDecode (chunks, length, encoding) {\n  if (chunks.length === 0 || length === 0) {\n    return ''\n  }\n  const buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, length)\n  const bufferLength = buffer.length\n\n  // Skip BOM.\n  const start =\n    bufferLength > 2 &&\n    buffer[0] === 0xef &&\n    buffer[1] === 0xbb &&\n    buffer[2] === 0xbf\n      ? 3\n      : 0\n  if (!encoding || encoding === 'utf8' || encoding === 'utf-8') {\n    return buffer.utf8Slice(start, bufferLength)\n  } else {\n    return buffer.subarray(start, bufferLength).toString(encoding)\n  }\n}\n\n/**\n * @param {Buffer[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\nfunction chunksConcat (chunks, length) {\n  if (chunks.length === 0 || length === 0) {\n    return new Uint8Array(0)\n  }\n  if (chunks.length === 1) {\n    // fast-path\n    return new Uint8Array(chunks[0])\n  }\n  const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer)\n\n  let offset = 0\n  for (let i = 0; i < chunks.length; ++i) {\n    const chunk = chunks[i]\n    buffer.set(chunk, offset)\n    offset += chunk.length\n  }\n\n  return buffer\n}\n\n/**\n * @param {Consume} consume\n * @param {BufferEncoding} encoding\n * @returns {void}\n */\nfunction consumeEnd (consume, encoding) {\n  const { type, body, resolve, stream, length } = consume\n\n  try {\n    if (type === 'text') {\n      resolve(chunksDecode(body, length, encoding))\n    } else if (type === 'json') {\n      resolve(JSON.parse(chunksDecode(body, length, encoding)))\n    } else if (type === 'arrayBuffer') {\n      resolve(chunksConcat(body, length).buffer)\n    } else if (type === 'blob') {\n      resolve(new Blob(body, { type: stream[kContentType] }))\n    } else if (type === 'bytes') {\n      resolve(chunksConcat(body, length))\n    }\n\n    consumeFinish(consume)\n  } catch (err) {\n    stream.destroy(err)\n  }\n}\n\n/**\n * @param {Consume} consume\n * @param {Buffer} chunk\n * @returns {void}\n */\nfunction consumePush (consume, chunk) {\n  consume.length += chunk.length\n  consume.body.push(chunk)\n}\n\n/**\n * @param {Consume} consume\n * @param {Error} [err]\n * @returns {void}\n */\nfunction consumeFinish (consume, err) {\n  if (consume.body === null) {\n    return\n  }\n\n  if (err) {\n    consume.reject(err)\n  } else {\n    consume.resolve()\n  }\n\n  // Reset the consume object to allow for garbage collection.\n  consume.type = null\n  consume.stream = null\n  consume.resolve = null\n  consume.reject = null\n  consume.length = 0\n  consume.body = null\n}\n\nmodule.exports = {\n  Readable: BodyReadable,\n  chunksDecode\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst { AsyncResource } = require('node:async_hooks')\nconst { Readable } = require('./readable')\nconst { InvalidArgumentError, RequestAbortedError } = require('../core/errors')\nconst util = require('../core/util')\n\nfunction noop () {}\n\nclass RequestHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    const { signal, method, opaque, body, onInfo, responseHeaders, highWaterMark } = opts\n\n    try {\n      if (typeof callback !== 'function') {\n        throw new InvalidArgumentError('invalid callback')\n      }\n\n      if (highWaterMark != null && (!Number.isFinite(highWaterMark) || highWaterMark < 0)) {\n        throw new InvalidArgumentError('invalid highWaterMark')\n      }\n\n      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n      }\n\n      if (method === 'CONNECT') {\n        throw new InvalidArgumentError('invalid method')\n      }\n\n      if (onInfo && typeof onInfo !== 'function') {\n        throw new InvalidArgumentError('invalid onInfo callback')\n      }\n\n      super('UNDICI_REQUEST')\n    } catch (err) {\n      if (util.isStream(body)) {\n        util.destroy(body.on('error', noop), err)\n      }\n      throw err\n    }\n\n    this.method = method\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.callback = callback\n    this.res = null\n    this.abort = null\n    this.body = body\n    this.trailers = {}\n    this.context = null\n    this.onInfo = onInfo || null\n    this.highWaterMark = highWaterMark\n    this.reason = null\n    this.removeAbortListener = null\n\n    if (signal?.aborted) {\n      this.reason = signal.reason ?? new RequestAbortedError()\n    } else if (signal) {\n      this.removeAbortListener = util.addAbortListener(signal, () => {\n        this.reason = signal.reason ?? new RequestAbortedError()\n        if (this.res) {\n          util.destroy(this.res.on('error', noop), this.reason)\n        } else if (this.abort) {\n          this.abort(this.reason)\n        }\n      })\n    }\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n    const contentType = parsedHeaders['content-type']\n    const contentLength = parsedHeaders['content-length']\n    const res = new Readable({\n      resume,\n      abort,\n      contentType,\n      contentLength: this.method !== 'HEAD' && contentLength\n        ? Number(contentLength)\n        : null,\n      highWaterMark\n    })\n\n    if (this.removeAbortListener) {\n      res.on('close', this.removeAbortListener)\n      this.removeAbortListener = null\n    }\n\n    this.callback = null\n    this.res = res\n    if (callback !== null) {\n      try {\n        this.runInAsyncScope(callback, null, null, {\n          statusCode,\n          statusText: statusMessage,\n          headers,\n          trailers: this.trailers,\n          opaque,\n          body: res,\n          context\n        })\n      } catch (err) {\n        // If the callback throws synchronously, we need to handle it\n        // Remove reference to res to allow res being garbage collected\n        this.res = null\n\n        // Destroy the response stream\n        util.destroy(res.on('error', noop), err)\n\n        // Use queueMicrotask to re-throw the error so it reaches uncaughtException\n        queueMicrotask(() => {\n          throw err\n        })\n      }\n    }\n  }\n\n  onData (chunk) {\n    return this.res.push(chunk)\n  }\n\n  onComplete (trailers) {\n    util.parseHeaders(trailers, this.trailers)\n    this.res.push(null)\n  }\n\n  onError (err) {\n    const { res, callback, body, opaque } = this\n\n    if (callback) {\n      // TODO: Does this need queueMicrotask?\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n\n    if (res) {\n      this.res = null\n      // Ensure all queued handlers are invoked before destroying res.\n      queueMicrotask(() => {\n        util.destroy(res.on('error', noop), err)\n      })\n    }\n\n    if (body) {\n      this.body = null\n\n      if (util.isStream(body)) {\n        body.on('error', noop)\n        util.destroy(body, err)\n      }\n    }\n\n    if (this.removeAbortListener) {\n      this.removeAbortListener()\n      this.removeAbortListener = null\n    }\n  }\n}\n\nfunction request (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      request.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const handler = new RequestHandler(opts, callback)\n\n    this.dispatch(opts, handler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n","'use strict'\n\nconst { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n  if (self.abort) {\n    self.abort(self[kSignal]?.reason)\n  } else {\n    self.reason = self[kSignal]?.reason ?? new RequestAbortedError()\n  }\n  removeSignal(self)\n}\n\nfunction addSignal (self, signal) {\n  self.reason = null\n\n  self[kSignal] = null\n  self[kListener] = null\n\n  if (!signal) {\n    return\n  }\n\n  if (signal.aborted) {\n    abort(self)\n    return\n  }\n\n  self[kSignal] = signal\n  self[kListener] = () => {\n    abort(self)\n  }\n\n  addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n  if (!self[kSignal]) {\n    return\n  }\n\n  if ('removeEventListener' in self[kSignal]) {\n    self[kSignal].removeEventListener('abort', self[kListener])\n  } else {\n    self[kSignal].removeListener('abort', self[kListener])\n  }\n\n  self[kSignal] = null\n  self[kListener] = null\n}\n\nmodule.exports = {\n  addSignal,\n  removeSignal\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst { finished } = require('node:stream')\nconst { AsyncResource } = require('node:async_hooks')\nconst { InvalidArgumentError, InvalidReturnValueError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nfunction noop () {}\n\nclass StreamHandler extends AsyncResource {\n  constructor (opts, factory, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    const { signal, method, opaque, body, onInfo, responseHeaders } = opts\n\n    try {\n      if (typeof callback !== 'function') {\n        throw new InvalidArgumentError('invalid callback')\n      }\n\n      if (typeof factory !== 'function') {\n        throw new InvalidArgumentError('invalid factory')\n      }\n\n      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n      }\n\n      if (method === 'CONNECT') {\n        throw new InvalidArgumentError('invalid method')\n      }\n\n      if (onInfo && typeof onInfo !== 'function') {\n        throw new InvalidArgumentError('invalid onInfo callback')\n      }\n\n      super('UNDICI_STREAM')\n    } catch (err) {\n      if (util.isStream(body)) {\n        util.destroy(body.on('error', noop), err)\n      }\n      throw err\n    }\n\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.factory = factory\n    this.callback = callback\n    this.res = null\n    this.abort = null\n    this.context = null\n    this.trailers = null\n    this.body = body\n    this.onInfo = onInfo || null\n\n    if (util.isStream(body)) {\n      body.on('error', (err) => {\n        this.onError(err)\n      })\n    }\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const { factory, opaque, context, responseHeaders } = this\n\n    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    this.factory = null\n\n    if (factory === null) {\n      return\n    }\n\n    const res = this.runInAsyncScope(factory, null, {\n      statusCode,\n      headers,\n      opaque,\n      context\n    })\n\n    if (\n      !res ||\n      typeof res.write !== 'function' ||\n      typeof res.end !== 'function' ||\n      typeof res.on !== 'function'\n    ) {\n      throw new InvalidReturnValueError('expected Writable')\n    }\n\n    // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n    finished(res, { readable: false }, (err) => {\n      const { callback, res, opaque, trailers, abort } = this\n\n      this.res = null\n      if (err || !res?.readable) {\n        util.destroy(res, err)\n      }\n\n      this.callback = null\n      this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n      if (err) {\n        abort()\n      }\n    })\n\n    res.on('drain', resume)\n\n    this.res = res\n\n    const needDrain = res.writableNeedDrain !== undefined\n      ? res.writableNeedDrain\n      : res._writableState?.needDrain\n\n    return needDrain !== true\n  }\n\n  onData (chunk) {\n    const { res } = this\n\n    return res ? res.write(chunk) : true\n  }\n\n  onComplete (trailers) {\n    const { res } = this\n\n    removeSignal(this)\n\n    if (!res) {\n      return\n    }\n\n    this.trailers = util.parseHeaders(trailers)\n\n    res.end()\n  }\n\n  onError (err) {\n    const { res, callback, opaque, body } = this\n\n    removeSignal(this)\n\n    this.factory = null\n\n    if (res) {\n      this.res = null\n      util.destroy(res, err)\n    } else if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n\n    if (body) {\n      this.body = null\n      util.destroy(body, err)\n    }\n  }\n}\n\nfunction stream (opts, factory, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      stream.call(this, opts, factory, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const handler = new StreamHandler(opts, factory, callback)\n\n    this.dispatch(opts, handler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = stream\n","'use strict'\n\nconst {\n  Readable,\n  Duplex,\n  PassThrough\n} = require('node:stream')\nconst assert = require('node:assert')\nconst { AsyncResource } = require('node:async_hooks')\nconst {\n  InvalidArgumentError,\n  InvalidReturnValueError,\n  RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nfunction noop () {}\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n  constructor () {\n    super({ autoDestroy: true })\n\n    this[kResume] = null\n  }\n\n  _read () {\n    const { [kResume]: resume } = this\n\n    if (resume) {\n      this[kResume] = null\n      resume()\n    }\n  }\n\n  _destroy (err, callback) {\n    this._read()\n\n    callback(err)\n  }\n}\n\nclass PipelineResponse extends Readable {\n  constructor (resume) {\n    super({ autoDestroy: true })\n    this[kResume] = resume\n  }\n\n  _read () {\n    this[kResume]()\n  }\n\n  _destroy (err, callback) {\n    if (!err && !this._readableState.endEmitted) {\n      err = new RequestAbortedError()\n    }\n\n    callback(err)\n  }\n}\n\nclass PipelineHandler extends AsyncResource {\n  constructor (opts, handler) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof handler !== 'function') {\n      throw new InvalidArgumentError('invalid handler')\n    }\n\n    const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    if (method === 'CONNECT') {\n      throw new InvalidArgumentError('invalid method')\n    }\n\n    if (onInfo && typeof onInfo !== 'function') {\n      throw new InvalidArgumentError('invalid onInfo callback')\n    }\n\n    super('UNDICI_PIPELINE')\n\n    this.opaque = opaque || null\n    this.responseHeaders = responseHeaders || null\n    this.handler = handler\n    this.abort = null\n    this.context = null\n    this.onInfo = onInfo || null\n\n    this.req = new PipelineRequest().on('error', noop)\n\n    this.ret = new Duplex({\n      readableObjectMode: opts.objectMode,\n      autoDestroy: true,\n      read: () => {\n        const { body } = this\n\n        if (body?.resume) {\n          body.resume()\n        }\n      },\n      write: (chunk, encoding, callback) => {\n        const { req } = this\n\n        if (req.push(chunk, encoding) || req._readableState.destroyed) {\n          callback()\n        } else {\n          req[kResume] = callback\n        }\n      },\n      destroy: (err, callback) => {\n        const { body, req, res, ret, abort } = this\n\n        if (!err && !ret._readableState.endEmitted) {\n          err = new RequestAbortedError()\n        }\n\n        if (abort && err) {\n          abort()\n        }\n\n        util.destroy(body, err)\n        util.destroy(req, err)\n        util.destroy(res, err)\n\n        removeSignal(this)\n\n        callback(err)\n      }\n    }).on('prefinish', () => {\n      const { req } = this\n\n      // Node < 15 does not call _final in same tick.\n      req.push(null)\n    })\n\n    this.res = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    const { res } = this\n\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(!res, 'pipeline cannot be retried')\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume) {\n    const { opaque, handler, context } = this\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    this.res = new PipelineResponse(resume)\n\n    let body\n    try {\n      this.handler = null\n      const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n      body = this.runInAsyncScope(handler, null, {\n        statusCode,\n        headers,\n        opaque,\n        body: this.res,\n        context\n      })\n    } catch (err) {\n      this.res.on('error', noop)\n      throw err\n    }\n\n    if (!body || typeof body.on !== 'function') {\n      throw new InvalidReturnValueError('expected Readable')\n    }\n\n    body\n      .on('data', (chunk) => {\n        const { ret, body } = this\n\n        if (!ret.push(chunk) && body.pause) {\n          body.pause()\n        }\n      })\n      .on('error', (err) => {\n        const { ret } = this\n\n        util.destroy(ret, err)\n      })\n      .on('end', () => {\n        const { ret } = this\n\n        ret.push(null)\n      })\n      .on('close', () => {\n        const { ret } = this\n\n        if (!ret._readableState.ended) {\n          util.destroy(ret, new RequestAbortedError())\n        }\n      })\n\n    this.body = body\n  }\n\n  onData (chunk) {\n    const { res } = this\n    return res.push(chunk)\n  }\n\n  onComplete (trailers) {\n    const { res } = this\n    res.push(null)\n  }\n\n  onError (err) {\n    const { ret } = this\n    this.handler = null\n    util.destroy(ret, err)\n  }\n}\n\nfunction pipeline (opts, handler) {\n  try {\n    const pipelineHandler = new PipelineHandler(opts, handler)\n    this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n    return pipelineHandler.ret\n  } catch (err) {\n    return new PassThrough().destroy(err)\n  }\n}\n\nmodule.exports = pipeline\n","'use strict'\n\nconst { InvalidArgumentError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('node:async_hooks')\nconst assert = require('node:assert')\nconst util = require('../core/util')\nconst { kHTTP2Stream } = require('../core/symbols')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass UpgradeHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    const { signal, opaque, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    super('UNDICI_UPGRADE')\n\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.callback = callback\n    this.abort = null\n    this.context = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = null\n  }\n\n  onHeaders () {\n    throw new SocketError('bad upgrade', null)\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    assert(socket[kHTTP2Stream] === true ? statusCode === 200 : statusCode === 101)\n\n    const { callback, opaque, context } = this\n\n    removeSignal(this)\n\n    this.callback = null\n    const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n    this.runInAsyncScope(callback, null, null, {\n      headers,\n      socket,\n      opaque,\n      context\n    })\n  }\n\n  onError (err) {\n    const { callback, opaque } = this\n\n    removeSignal(this)\n\n    if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n  }\n}\n\nfunction upgrade (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      upgrade.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const upgradeHandler = new UpgradeHandler(opts, callback)\n    const upgradeOpts = {\n      ...opts,\n      method: opts.method || 'GET',\n      upgrade: opts.protocol || 'Websocket'\n    }\n\n    this.dispatch(upgradeOpts, upgradeHandler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = upgrade\n","'use strict'\n\nconst assert = require('node:assert')\nconst { AsyncResource } = require('node:async_hooks')\nconst { InvalidArgumentError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    const { signal, opaque, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    super('UNDICI_CONNECT')\n\n    this.opaque = opaque || null\n    this.responseHeaders = responseHeaders || null\n    this.callback = callback\n    this.abort = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders () {\n    throw new SocketError('bad connect', null)\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    const { callback, opaque, context } = this\n\n    removeSignal(this)\n\n    this.callback = null\n\n    let headers = rawHeaders\n    // Indicates is an HTTP2Session\n    if (headers != null) {\n      headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n    }\n\n    this.runInAsyncScope(callback, null, null, {\n      statusCode,\n      headers,\n      socket,\n      opaque,\n      context\n    })\n  }\n\n  onError (err) {\n    const { callback, opaque } = this\n\n    removeSignal(this)\n\n    if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n  }\n}\n\nfunction connect (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      connect.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const connectHandler = new ConnectHandler(opts, callback)\n    const connectOptions = { ...opts, method: 'CONNECT' }\n\n    this.dispatch(connectOptions, connectHandler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = connect\n","'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n","'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nconst kMockNotMatchedError = Symbol.for('undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED')\n\n/**\n * The request does not match any registered mock dispatches.\n */\nclass MockNotMatchedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'MockNotMatchedError'\n    this.message = message || 'The request does not match any registered mock dispatches'\n    this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kMockNotMatchedError] === true\n  }\n\n  get [kMockNotMatchedError] () {\n    return true\n  }\n}\n\nmodule.exports = {\n  MockNotMatchedError\n}\n","'use strict'\n\nmodule.exports = {\n  kAgent: Symbol('agent'),\n  kOptions: Symbol('options'),\n  kFactory: Symbol('factory'),\n  kDispatches: Symbol('dispatches'),\n  kDispatchKey: Symbol('dispatch key'),\n  kDefaultHeaders: Symbol('default headers'),\n  kDefaultTrailers: Symbol('default trailers'),\n  kContentLength: Symbol('content length'),\n  kMockAgent: Symbol('mock agent'),\n  kMockAgentSet: Symbol('mock agent set'),\n  kMockAgentGet: Symbol('mock agent get'),\n  kMockDispatch: Symbol('mock dispatch'),\n  kClose: Symbol('close'),\n  kOriginalClose: Symbol('original agent close'),\n  kOriginalDispatch: Symbol('original dispatch'),\n  kOrigin: Symbol('origin'),\n  kIsMockActive: Symbol('is mock active'),\n  kNetConnect: Symbol('net connect'),\n  kGetNetConnect: Symbol('get net connect'),\n  kConnected: Symbol('connected'),\n  kIgnoreTrailingSlash: Symbol('ignore trailing slash'),\n  kMockAgentMockCallHistoryInstance: Symbol('mock agent mock call history name'),\n  kMockAgentRegisterCallHistory: Symbol('mock agent register mock call history'),\n  kMockAgentAddCallHistoryLog: Symbol('mock agent add call history log'),\n  kMockAgentIsCallHistoryEnabled: Symbol('mock agent is call history enabled'),\n  kMockAgentAcceptsNonStandardSearchParameters: Symbol('mock agent accepts non standard search parameters'),\n  kMockCallHistoryAddLog: Symbol('mock call history add log'),\n  kTotalDispatchCount: Symbol('total dispatch count')\n}\n","'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n  kDispatches,\n  kMockAgent,\n  kOriginalDispatch,\n  kOrigin,\n  kGetNetConnect,\n  kTotalDispatchCount\n} = require('./mock-symbols')\nconst { serializePathWithQuery } = require('../core/util')\nconst { STATUS_CODES } = require('node:http')\nconst {\n  types: {\n    isPromise\n  }\n} = require('node:util')\nconst { InvalidArgumentError } = require('../core/errors')\n\nfunction matchValue (match, value) {\n  if (typeof match === 'string') {\n    return match === value\n  }\n  if (match instanceof RegExp) {\n    return match.test(value)\n  }\n  if (typeof match === 'function') {\n    return match(value) === true\n  }\n  return false\n}\n\nfunction lowerCaseEntries (headers) {\n  return Object.fromEntries(\n    Object.entries(headers).map(([headerName, headerValue]) => {\n      return [headerName.toLocaleLowerCase(), headerValue]\n    })\n  )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record<string, string>} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n  if (Array.isArray(headers)) {\n    for (let i = 0; i < headers.length; i += 2) {\n      if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n        return headers[i + 1]\n      }\n    }\n\n    return undefined\n  } else if (typeof headers.get === 'function') {\n    return headers.get(key)\n  } else {\n    return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n  }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n  const clone = headers.slice()\n  const entries = []\n  for (let index = 0; index < clone.length; index += 2) {\n    entries.push([clone[index], clone[index + 1]])\n  }\n  return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n  if (typeof mockDispatch.headers === 'function') {\n    if (Array.isArray(headers)) { // fetch HeadersList\n      headers = buildHeadersFromArray(headers)\n    }\n    return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n  }\n  if (typeof mockDispatch.headers === 'undefined') {\n    return true\n  }\n  if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n    return false\n  }\n\n  for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n    const headerValue = getHeaderByName(headers, matchHeaderName)\n\n    if (!matchValue(matchHeaderValue, headerValue)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction normalizeSearchParams (query) {\n  if (typeof query !== 'string') {\n    return query\n  }\n\n  const originalQp = new URLSearchParams(query)\n  const normalizedQp = new URLSearchParams()\n\n  for (let [key, value] of originalQp.entries()) {\n    key = key.replace('[]', '')\n\n    const valueRepresentsString = /^(['\"]).*\\1$/.test(value)\n    if (valueRepresentsString) {\n      normalizedQp.append(key, value)\n      continue\n    }\n\n    if (value.includes(',')) {\n      const values = value.split(',')\n      for (const v of values) {\n        normalizedQp.append(key, v)\n      }\n      continue\n    }\n\n    normalizedQp.append(key, value)\n  }\n\n  return normalizedQp\n}\n\nfunction safeUrl (path) {\n  if (typeof path !== 'string') {\n    return path\n  }\n  const pathSegments = path.split('?', 3)\n  if (pathSegments.length !== 2) {\n    return path\n  }\n\n  const qp = new URLSearchParams(pathSegments.pop())\n  qp.sort()\n  return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n  const pathMatch = matchValue(mockDispatch.path, path)\n  const methodMatch = matchValue(mockDispatch.method, method)\n  const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n  const headersMatch = matchHeaders(mockDispatch, headers)\n  return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n  if (Buffer.isBuffer(data)) {\n    return data\n  } else if (data instanceof Uint8Array) {\n    return data\n  } else if (data instanceof ArrayBuffer) {\n    return data\n  } else if (typeof data === 'object') {\n    return JSON.stringify(data)\n  } else if (data) {\n    return data.toString()\n  } else {\n    return ''\n  }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n  const basePath = key.query ? serializePathWithQuery(key.path, key.query) : key.path\n  const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n  const resolvedPathWithoutTrailingSlash = removeTrailingSlash(resolvedPath)\n\n  // Match path\n  let matchedMockDispatches = mockDispatches\n    .filter(({ consumed }) => !consumed)\n    .filter(({ path, ignoreTrailingSlash }) => {\n      return ignoreTrailingSlash\n        ? matchValue(removeTrailingSlash(safeUrl(path)), resolvedPathWithoutTrailingSlash)\n        : matchValue(safeUrl(path), resolvedPath)\n    })\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n  }\n\n  // Match method\n  matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}' on path '${resolvedPath}'`)\n  }\n\n  // Match body\n  matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}' on path '${resolvedPath}'`)\n  }\n\n  // Match headers\n  matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n  if (matchedMockDispatches.length === 0) {\n    const headers = typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers\n    throw new MockNotMatchedError(`Mock dispatch not matched for headers '${headers}' on path '${resolvedPath}'`)\n  }\n\n  return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data, opts) {\n  const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false, ...opts }\n  const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n  const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n  mockDispatches.push(newMockDispatch)\n  // Track total number of intercepts ever registered for better error messages\n  mockDispatches[kTotalDispatchCount] = (mockDispatches[kTotalDispatchCount] || 0) + 1\n  return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n  const index = mockDispatches.findIndex(dispatch => {\n    if (!dispatch.consumed) {\n      return false\n    }\n    return matchKey(dispatch, key)\n  })\n  if (index !== -1) {\n    mockDispatches.splice(index, 1)\n  }\n}\n\n/**\n * @param {string} path Path to remove trailing slash from\n */\nfunction removeTrailingSlash (path) {\n  while (path.endsWith('/')) {\n    path = path.slice(0, -1)\n  }\n\n  if (path.length === 0) {\n    path = '/'\n  }\n\n  return path\n}\n\nfunction buildKey (opts) {\n  const { path, method, body, headers, query } = opts\n\n  return {\n    path,\n    method,\n    body,\n    headers,\n    query\n  }\n}\n\nfunction generateKeyValues (data) {\n  const keys = Object.keys(data)\n  const result = []\n  for (let i = 0; i < keys.length; ++i) {\n    const key = keys[i]\n    const value = data[key]\n    const name = Buffer.from(`${key}`)\n    if (Array.isArray(value)) {\n      for (let j = 0; j < value.length; ++j) {\n        result.push(name, Buffer.from(`${value[j]}`))\n      }\n    } else {\n      result.push(name, Buffer.from(`${value}`))\n    }\n  }\n  return result\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n  return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n  const buffers = []\n  for await (const data of body) {\n    buffers.push(data)\n  }\n  return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n  // Get mock dispatch from built key\n  const key = buildKey(opts)\n  const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n  mockDispatch.timesInvoked++\n\n  // Here's where we resolve a callback if a callback is present for the dispatch data.\n  if (mockDispatch.data.callback) {\n    mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n  }\n\n  // Parse mockDispatch data\n  const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n  const { timesInvoked, times } = mockDispatch\n\n  // If it's used up and not persistent, mark as consumed\n  mockDispatch.consumed = !persist && timesInvoked >= times\n  mockDispatch.pending = timesInvoked < times\n\n  // If specified, trigger dispatch error\n  if (error !== null) {\n    deleteMockDispatch(this[kDispatches], key)\n    handler.onError(error)\n    return true\n  }\n\n  // Track whether the request has been aborted\n  let aborted = false\n  let timer = null\n\n  function abort (err) {\n    if (aborted) {\n      return\n    }\n    aborted = true\n\n    // Clear the pending delayed response if any\n    if (timer !== null) {\n      clearTimeout(timer)\n      timer = null\n    }\n\n    // Notify the handler of the abort\n    handler.onError(err)\n  }\n\n  // Call onConnect to allow the handler to register the abort callback\n  handler.onConnect?.(abort, null)\n\n  // Handle the request with a delay if necessary\n  if (typeof delay === 'number' && delay > 0) {\n    timer = setTimeout(() => {\n      timer = null\n      handleReply(this[kDispatches])\n    }, delay)\n  } else {\n    handleReply(this[kDispatches])\n  }\n\n  function handleReply (mockDispatches, _data = data) {\n    // Don't send response if the request was aborted\n    if (aborted) {\n      return\n    }\n\n    // fetch's HeadersList is a 1D string array\n    const optsHeaders = Array.isArray(opts.headers)\n      ? buildHeadersFromArray(opts.headers)\n      : opts.headers\n    const body = typeof _data === 'function'\n      ? _data({ ...opts, headers: optsHeaders })\n      : _data\n\n    // util.types.isPromise is likely needed for jest.\n    if (isPromise(body)) {\n      // If handleReply is asynchronous, throwing an error\n      // in the callback will reject the promise, rather than\n      // synchronously throw the error, which breaks some tests.\n      // Rather, we wait for the callback to resolve if it is a\n      // promise, and then re-run handleReply with the new body.\n      return body.then((newData) => handleReply(mockDispatches, newData))\n    }\n\n    // Check again if aborted after async body resolution\n    if (aborted) {\n      return\n    }\n\n    const responseData = getResponseData(body)\n    const responseHeaders = generateKeyValues(headers)\n    const responseTrailers = generateKeyValues(trailers)\n\n    handler.onHeaders?.(statusCode, responseHeaders, resume, getStatusText(statusCode))\n    handler.onData?.(Buffer.from(responseData))\n    handler.onComplete?.(responseTrailers)\n    deleteMockDispatch(mockDispatches, key)\n  }\n\n  function resume () {}\n\n  return true\n}\n\nfunction buildMockDispatch () {\n  const agent = this[kMockAgent]\n  const origin = this[kOrigin]\n  const originalDispatch = this[kOriginalDispatch]\n\n  return function dispatch (opts, handler) {\n    if (agent.isMockActive) {\n      try {\n        mockDispatch.call(this, opts, handler)\n      } catch (error) {\n        if (error.code === 'UND_MOCK_ERR_MOCK_NOT_MATCHED') {\n          const netConnect = agent[kGetNetConnect]()\n          const totalInterceptsCount = this[kDispatches][kTotalDispatchCount] || this[kDispatches].length\n          const pendingInterceptsCount = this[kDispatches].filter(({ consumed }) => !consumed).length\n          const interceptsMessage = `, ${pendingInterceptsCount} interceptor(s) remaining out of ${totalInterceptsCount} defined`\n          if (netConnect === false) {\n            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)${interceptsMessage}`)\n          }\n          if (checkNetConnect(netConnect, origin)) {\n            originalDispatch.call(this, opts, handler)\n          } else {\n            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)${interceptsMessage}`)\n          }\n        } else {\n          throw error\n        }\n      }\n    } else {\n      originalDispatch.call(this, opts, handler)\n    }\n  }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n  const url = new URL(origin)\n  if (netConnect === true) {\n    return true\n  } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n    return true\n  }\n  return false\n}\n\nfunction normalizeOrigin (origin) {\n  if (typeof origin !== 'string' && !(origin instanceof URL)) {\n    return origin\n  }\n\n  if (origin instanceof URL) {\n    return origin.origin\n  }\n\n  return origin.toLowerCase()\n}\n\nfunction buildAndValidateMockOptions (opts) {\n  const { agent, ...mockOptions } = opts\n\n  if ('enableCallHistory' in mockOptions && typeof mockOptions.enableCallHistory !== 'boolean') {\n    throw new InvalidArgumentError('options.enableCallHistory must to be a boolean')\n  }\n\n  if ('acceptNonStandardSearchParameters' in mockOptions && typeof mockOptions.acceptNonStandardSearchParameters !== 'boolean') {\n    throw new InvalidArgumentError('options.acceptNonStandardSearchParameters must to be a boolean')\n  }\n\n  if ('ignoreTrailingSlash' in mockOptions && typeof mockOptions.ignoreTrailingSlash !== 'boolean') {\n    throw new InvalidArgumentError('options.ignoreTrailingSlash must to be a boolean')\n  }\n\n  return mockOptions\n}\n\nmodule.exports = {\n  getResponseData,\n  getMockDispatch,\n  addMockDispatch,\n  deleteMockDispatch,\n  buildKey,\n  generateKeyValues,\n  matchValue,\n  getResponse,\n  getStatusText,\n  mockDispatch,\n  buildMockDispatch,\n  checkNetConnect,\n  buildAndValidateMockOptions,\n  getHeaderByName,\n  buildHeadersFromArray,\n  normalizeSearchParams,\n  normalizeOrigin\n}\n","'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kDispatchKey,\n  kDefaultHeaders,\n  kDefaultTrailers,\n  kContentLength,\n  kMockDispatch,\n  kIgnoreTrailingSlash\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { serializePathWithQuery } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n  constructor (mockDispatch) {\n    this[kMockDispatch] = mockDispatch\n  }\n\n  /**\n   * Delay a reply by a set amount in ms.\n   */\n  delay (waitInMs) {\n    if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n      throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n    }\n\n    this[kMockDispatch].delay = waitInMs\n    return this\n  }\n\n  /**\n   * For a defined reply, never mark as consumed.\n   */\n  persist () {\n    this[kMockDispatch].persist = true\n    return this\n  }\n\n  /**\n   * Allow one to define a reply for a set amount of matching requests.\n   */\n  times (repeatTimes) {\n    if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n      throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n    }\n\n    this[kMockDispatch].times = repeatTimes\n    return this\n  }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n  constructor (opts, mockDispatches) {\n    if (typeof opts !== 'object') {\n      throw new InvalidArgumentError('opts must be an object')\n    }\n    if (typeof opts.path === 'undefined') {\n      throw new InvalidArgumentError('opts.path must be defined')\n    }\n    if (typeof opts.method === 'undefined') {\n      opts.method = 'GET'\n    }\n    // See https://github.com/nodejs/undici/issues/1245\n    // As per RFC 3986, clients are not supposed to send URI\n    // fragments to servers when they retrieve a document,\n    if (typeof opts.path === 'string') {\n      if (opts.query) {\n        opts.path = serializePathWithQuery(opts.path, opts.query)\n      } else {\n        // Matches https://github.com/nodejs/undici/blob/main/lib/web/fetch/index.js#L1811\n        const parsedURL = new URL(opts.path, 'data://')\n        opts.path = parsedURL.pathname + parsedURL.search\n      }\n    }\n    if (typeof opts.method === 'string') {\n      opts.method = opts.method.toUpperCase()\n    }\n\n    this[kDispatchKey] = buildKey(opts)\n    this[kDispatches] = mockDispatches\n    this[kIgnoreTrailingSlash] = opts.ignoreTrailingSlash ?? false\n    this[kDefaultHeaders] = {}\n    this[kDefaultTrailers] = {}\n    this[kContentLength] = false\n  }\n\n  createMockScopeDispatchData ({ statusCode, data, responseOptions }) {\n    const responseData = getResponseData(data)\n    const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n    const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n    const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n    return { statusCode, data, headers, trailers }\n  }\n\n  validateReplyParameters (replyParameters) {\n    if (typeof replyParameters.statusCode === 'undefined') {\n      throw new InvalidArgumentError('statusCode must be defined')\n    }\n    if (typeof replyParameters.responseOptions !== 'object' || replyParameters.responseOptions === null) {\n      throw new InvalidArgumentError('responseOptions must be an object')\n    }\n  }\n\n  /**\n   * Mock an undici request with a defined reply.\n   */\n  reply (replyOptionsCallbackOrStatusCode) {\n    // Values of reply aren't available right now as they\n    // can only be available when the reply callback is invoked.\n    if (typeof replyOptionsCallbackOrStatusCode === 'function') {\n      // We'll first wrap the provided callback in another function,\n      // this function will properly resolve the data from the callback\n      // when invoked.\n      const wrappedDefaultsCallback = (opts) => {\n        // Our reply options callback contains the parameter for statusCode, data and options.\n        const resolvedData = replyOptionsCallbackOrStatusCode(opts)\n\n        // Check if it is in the right format\n        if (typeof resolvedData !== 'object' || resolvedData === null) {\n          throw new InvalidArgumentError('reply options callback must return an object')\n        }\n\n        const replyParameters = { data: '', responseOptions: {}, ...resolvedData }\n        this.validateReplyParameters(replyParameters)\n        // Since the values can be obtained immediately we return them\n        // from this higher order function that will be resolved later.\n        return {\n          ...this.createMockScopeDispatchData(replyParameters)\n        }\n      }\n\n      // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n      const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback, { ignoreTrailingSlash: this[kIgnoreTrailingSlash] })\n      return new MockScope(newMockDispatch)\n    }\n\n    // We can have either one or three parameters, if we get here,\n    // we should have 1-3 parameters. So we spread the arguments of\n    // this function to obtain the parameters, since replyData will always\n    // just be the statusCode.\n    const replyParameters = {\n      statusCode: replyOptionsCallbackOrStatusCode,\n      data: arguments[1] === undefined ? '' : arguments[1],\n      responseOptions: arguments[2] === undefined ? {} : arguments[2]\n    }\n    this.validateReplyParameters(replyParameters)\n\n    // Send in-already provided data like usual\n    const dispatchData = this.createMockScopeDispatchData(replyParameters)\n    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData, { ignoreTrailingSlash: this[kIgnoreTrailingSlash] })\n    return new MockScope(newMockDispatch)\n  }\n\n  /**\n   * Mock an undici request with a defined error.\n   */\n  replyWithError (error) {\n    if (typeof error === 'undefined') {\n      throw new InvalidArgumentError('error must be defined')\n    }\n\n    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }, { ignoreTrailingSlash: this[kIgnoreTrailingSlash] })\n    return new MockScope(newMockDispatch)\n  }\n\n  /**\n   * Set default reply headers on the interceptor for subsequent replies\n   */\n  defaultReplyHeaders (headers) {\n    if (typeof headers === 'undefined') {\n      throw new InvalidArgumentError('headers must be defined')\n    }\n\n    this[kDefaultHeaders] = headers\n    return this\n  }\n\n  /**\n   * Set default reply trailers on the interceptor for subsequent replies\n   */\n  defaultReplyTrailers (trailers) {\n    if (typeof trailers === 'undefined') {\n      throw new InvalidArgumentError('trailers must be defined')\n    }\n\n    this[kDefaultTrailers] = trailers\n    return this\n  }\n\n  /**\n   * Set reply content length header for replies on the interceptor\n   */\n  replyContentLength () {\n    this[kContentLength] = true\n    return this\n  }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n","'use strict'\n\nconst { promisify } = require('node:util')\nconst Client = require('../dispatcher/client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kMockAgent,\n  kClose,\n  kOriginalClose,\n  kOrigin,\n  kOriginalDispatch,\n  kConnected,\n  kIgnoreTrailingSlash\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n  constructor (origin, opts) {\n    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n\n    super(origin, opts)\n\n    this[kMockAgent] = opts.agent\n    this[kOrigin] = origin\n    this[kIgnoreTrailingSlash] = opts.ignoreTrailingSlash ?? false\n    this[kDispatches] = []\n    this[kConnected] = 1\n    this[kOriginalDispatch] = this.dispatch\n    this[kOriginalClose] = this.close.bind(this)\n\n    this.dispatch = buildMockDispatch.call(this)\n    this.close = this[kClose]\n  }\n\n  get [Symbols.kConnected] () {\n    return this[kConnected]\n  }\n\n  /**\n   * Sets up the base interceptor for mocking replies from undici.\n   */\n  intercept (opts) {\n    return new MockInterceptor(\n      opts && { ignoreTrailingSlash: this[kIgnoreTrailingSlash], ...opts },\n      this[kDispatches]\n    )\n  }\n\n  cleanMocks () {\n    this[kDispatches] = []\n  }\n\n  async [kClose] () {\n    await promisify(this[kOriginalClose])()\n    this[kConnected] = 0\n    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n  }\n}\n\nmodule.exports = MockClient\n","'use strict'\n\nconst { kMockCallHistoryAddLog } = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\nfunction handleFilterCallsWithOptions (criteria, options, handler, store, allLogs) {\n  switch (options.operator) {\n    case 'OR':\n      store.push(...handler(criteria, allLogs))\n\n      return store\n    case 'AND':\n      return handler(criteria, store)\n    default:\n      // guard -- should never happens because buildAndValidateFilterCallsOptions is called before\n      throw new InvalidArgumentError('options.operator must to be a case insensitive string equal to \\'OR\\' or \\'AND\\'')\n  }\n}\n\nfunction buildAndValidateFilterCallsOptions (options = {}) {\n  const finalOptions = {}\n\n  if ('operator' in options) {\n    if (typeof options.operator !== 'string' || (options.operator.toUpperCase() !== 'OR' && options.operator.toUpperCase() !== 'AND')) {\n      throw new InvalidArgumentError('options.operator must to be a case insensitive string equal to \\'OR\\' or \\'AND\\'')\n    }\n\n    return {\n      ...finalOptions,\n      operator: options.operator.toUpperCase()\n    }\n  }\n\n  return finalOptions\n}\n\nfunction makeFilterCalls (parameterName) {\n  return (parameterValue, logs) => {\n    if (typeof parameterValue === 'string' || parameterValue == null) {\n      return logs.filter((log) => {\n        return log[parameterName] === parameterValue\n      })\n    }\n    if (parameterValue instanceof RegExp) {\n      return logs.filter((log) => {\n        return parameterValue.test(log[parameterName])\n      })\n    }\n\n    throw new InvalidArgumentError(`${parameterName} parameter should be one of string, regexp, undefined or null`)\n  }\n}\nfunction computeUrlWithMaybeSearchParameters (requestInit) {\n  // path can contains query url parameters\n  // or query can contains query url parameters\n  try {\n    const url = new URL(requestInit.path, requestInit.origin)\n\n    // requestInit.path contains query url parameters\n    // requestInit.query is then undefined\n    if (url.search.length !== 0) {\n      return url\n    }\n\n    // requestInit.query can be populated here\n    url.search = new URLSearchParams(requestInit.query).toString()\n\n    return url\n  } catch (error) {\n    throw new InvalidArgumentError('An error occurred when computing MockCallHistoryLog.url', { cause: error })\n  }\n}\n\nclass MockCallHistoryLog {\n  constructor (requestInit = {}) {\n    this.body = requestInit.body\n    this.headers = requestInit.headers\n    this.method = requestInit.method\n\n    const url = computeUrlWithMaybeSearchParameters(requestInit)\n\n    this.fullUrl = url.toString()\n    this.origin = url.origin\n    this.path = url.pathname\n    this.searchParams = Object.fromEntries(url.searchParams)\n    this.protocol = url.protocol\n    this.host = url.host\n    this.port = url.port\n    this.hash = url.hash\n  }\n\n  toMap () {\n    return new Map([\n      ['protocol', this.protocol],\n      ['host', this.host],\n      ['port', this.port],\n      ['origin', this.origin],\n      ['path', this.path],\n      ['hash', this.hash],\n      ['searchParams', this.searchParams],\n      ['fullUrl', this.fullUrl],\n      ['method', this.method],\n      ['body', this.body],\n      ['headers', this.headers]]\n    )\n  }\n\n  toString () {\n    const options = { betweenKeyValueSeparator: '->', betweenPairSeparator: '|' }\n    let result = ''\n\n    this.toMap().forEach((value, key) => {\n      if (typeof value === 'string' || value === undefined || value === null) {\n        result = `${result}${key}${options.betweenKeyValueSeparator}${value}${options.betweenPairSeparator}`\n      }\n      if ((typeof value === 'object' && value !== null) || Array.isArray(value)) {\n        result = `${result}${key}${options.betweenKeyValueSeparator}${JSON.stringify(value)}${options.betweenPairSeparator}`\n      }\n      // maybe miss something for non Record / Array headers and searchParams here\n    })\n\n    // delete last betweenPairSeparator\n    return result.slice(0, -1)\n  }\n}\n\nclass MockCallHistory {\n  logs = []\n\n  calls () {\n    return this.logs\n  }\n\n  firstCall () {\n    return this.logs.at(0)\n  }\n\n  lastCall () {\n    return this.logs.at(-1)\n  }\n\n  nthCall (number) {\n    if (typeof number !== 'number') {\n      throw new InvalidArgumentError('nthCall must be called with a number')\n    }\n    if (!Number.isInteger(number)) {\n      throw new InvalidArgumentError('nthCall must be called with an integer')\n    }\n    if (Math.sign(number) !== 1) {\n      throw new InvalidArgumentError('nthCall must be called with a positive value. use firstCall or lastCall instead')\n    }\n\n    // non zero based index. this is more human readable\n    return this.logs.at(number - 1)\n  }\n\n  filterCalls (criteria, options) {\n    // perf\n    if (this.logs.length === 0) {\n      return this.logs\n    }\n    if (typeof criteria === 'function') {\n      return this.logs.filter(criteria)\n    }\n    if (criteria instanceof RegExp) {\n      return this.logs.filter((log) => {\n        return criteria.test(log.toString())\n      })\n    }\n    if (typeof criteria === 'object' && criteria !== null) {\n      // no criteria - returning all logs\n      if (Object.keys(criteria).length === 0) {\n        return this.logs\n      }\n\n      const finalOptions = { operator: 'OR', ...buildAndValidateFilterCallsOptions(options) }\n\n      let maybeDuplicatedLogsFiltered = finalOptions.operator === 'AND' ? this.logs : []\n      if ('protocol' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.protocol, finalOptions, this.filterCallsByProtocol, maybeDuplicatedLogsFiltered, this.logs)\n      }\n      if ('host' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.host, finalOptions, this.filterCallsByHost, maybeDuplicatedLogsFiltered, this.logs)\n      }\n      if ('port' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.port, finalOptions, this.filterCallsByPort, maybeDuplicatedLogsFiltered, this.logs)\n      }\n      if ('origin' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.origin, finalOptions, this.filterCallsByOrigin, maybeDuplicatedLogsFiltered, this.logs)\n      }\n      if ('path' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.path, finalOptions, this.filterCallsByPath, maybeDuplicatedLogsFiltered, this.logs)\n      }\n      if ('hash' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.hash, finalOptions, this.filterCallsByHash, maybeDuplicatedLogsFiltered, this.logs)\n      }\n      if ('fullUrl' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.fullUrl, finalOptions, this.filterCallsByFullUrl, maybeDuplicatedLogsFiltered, this.logs)\n      }\n      if ('method' in criteria) {\n        maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.method, finalOptions, this.filterCallsByMethod, maybeDuplicatedLogsFiltered, this.logs)\n      }\n\n      const uniqLogsFiltered = [...new Set(maybeDuplicatedLogsFiltered)]\n\n      return uniqLogsFiltered\n    }\n\n    throw new InvalidArgumentError('criteria parameter should be one of function, regexp, or object')\n  }\n\n  filterCallsByProtocol = makeFilterCalls.call(this, 'protocol')\n\n  filterCallsByHost = makeFilterCalls.call(this, 'host')\n\n  filterCallsByPort = makeFilterCalls.call(this, 'port')\n\n  filterCallsByOrigin = makeFilterCalls.call(this, 'origin')\n\n  filterCallsByPath = makeFilterCalls.call(this, 'path')\n\n  filterCallsByHash = makeFilterCalls.call(this, 'hash')\n\n  filterCallsByFullUrl = makeFilterCalls.call(this, 'fullUrl')\n\n  filterCallsByMethod = makeFilterCalls.call(this, 'method')\n\n  clear () {\n    this.logs = []\n  }\n\n  [kMockCallHistoryAddLog] (requestInit) {\n    const log = new MockCallHistoryLog(requestInit)\n\n    this.logs.push(log)\n\n    return log\n  }\n\n  * [Symbol.iterator] () {\n    for (const log of this.calls()) {\n      yield log\n    }\n  }\n}\n\nmodule.exports.MockCallHistory = MockCallHistory\nmodule.exports.MockCallHistoryLog = MockCallHistoryLog\n","'use strict'\n\nconst { promisify } = require('node:util')\nconst Pool = require('../dispatcher/pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kMockAgent,\n  kClose,\n  kOriginalClose,\n  kOrigin,\n  kOriginalDispatch,\n  kConnected,\n  kIgnoreTrailingSlash\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n  constructor (origin, opts) {\n    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n\n    super(origin, opts)\n\n    this[kMockAgent] = opts.agent\n    this[kOrigin] = origin\n    this[kIgnoreTrailingSlash] = opts.ignoreTrailingSlash ?? false\n    this[kDispatches] = []\n    this[kConnected] = 1\n    this[kOriginalDispatch] = this.dispatch\n    this[kOriginalClose] = this.close.bind(this)\n\n    this.dispatch = buildMockDispatch.call(this)\n    this.close = this[kClose]\n  }\n\n  get [Symbols.kConnected] () {\n    return this[kConnected]\n  }\n\n  /**\n   * Sets up the base interceptor for mocking replies from undici.\n   */\n  intercept (opts) {\n    return new MockInterceptor(\n      opts && { ignoreTrailingSlash: this[kIgnoreTrailingSlash], ...opts },\n      this[kDispatches]\n    )\n  }\n\n  cleanMocks () {\n    this[kDispatches] = []\n  }\n\n  async [kClose] () {\n    await promisify(this[kOriginalClose])()\n    this[kConnected] = 0\n    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n  }\n}\n\nmodule.exports = MockPool\n","'use strict'\n\nconst { Transform } = require('node:stream')\nconst { Console } = require('node:console')\n\nconst PERSISTENT = process.versions.icu ? '✅' : 'Y '\nconst NOT_PERSISTENT = process.versions.icu ? '❌' : 'N '\n\n/**\n * Gets the output of `console.table(…)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n  constructor ({ disableColors } = {}) {\n    this.transform = new Transform({\n      transform (chunk, _enc, cb) {\n        cb(null, chunk)\n      }\n    })\n\n    this.logger = new Console({\n      stdout: this.transform,\n      inspectOptions: {\n        colors: !disableColors && !process.env.CI\n      }\n    })\n  }\n\n  format (pendingInterceptors) {\n    const withPrettyHeaders = pendingInterceptors.map(\n      ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n        Method: method,\n        Origin: origin,\n        Path: path,\n        'Status code': statusCode,\n        Persistent: persist ? PERSISTENT : NOT_PERSISTENT,\n        Invocations: timesInvoked,\n        Remaining: persist ? Infinity : times - timesInvoked\n      }))\n\n    this.logger.table(withPrettyHeaders)\n    return this.transform.read().toString()\n  }\n}\n","'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../dispatcher/agent')\nconst {\n  kAgent,\n  kMockAgentSet,\n  kMockAgentGet,\n  kDispatches,\n  kIsMockActive,\n  kNetConnect,\n  kGetNetConnect,\n  kOptions,\n  kFactory,\n  kMockAgentRegisterCallHistory,\n  kMockAgentIsCallHistoryEnabled,\n  kMockAgentAddCallHistoryLog,\n  kMockAgentMockCallHistoryInstance,\n  kMockAgentAcceptsNonStandardSearchParameters,\n  kMockCallHistoryAddLog,\n  kIgnoreTrailingSlash\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, normalizeSearchParams, buildAndValidateMockOptions, normalizeOrigin } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher/dispatcher')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\nconst { MockCallHistory } = require('./mock-call-history')\n\nclass MockAgent extends Dispatcher {\n  constructor (opts = {}) {\n    super(opts)\n\n    const mockOptions = buildAndValidateMockOptions(opts)\n\n    this[kNetConnect] = true\n    this[kIsMockActive] = true\n    this[kMockAgentIsCallHistoryEnabled] = mockOptions.enableCallHistory ?? false\n    this[kMockAgentAcceptsNonStandardSearchParameters] = mockOptions.acceptNonStandardSearchParameters ?? false\n    this[kIgnoreTrailingSlash] = mockOptions.ignoreTrailingSlash ?? false\n\n    // Instantiate Agent and encapsulate\n    if (opts?.agent && typeof opts.agent.dispatch !== 'function') {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n    const agent = opts?.agent ? opts.agent : new Agent(opts)\n    this[kAgent] = agent\n\n    this[kClients] = agent[kClients]\n    this[kOptions] = mockOptions\n\n    if (this[kMockAgentIsCallHistoryEnabled]) {\n      this[kMockAgentRegisterCallHistory]()\n    }\n  }\n\n  get (origin) {\n    // Normalize origin to handle URL objects and case-insensitive hostnames\n    const normalizedOrigin = normalizeOrigin(origin)\n    const originKey = this[kIgnoreTrailingSlash] ? normalizedOrigin.replace(/\\/$/, '') : normalizedOrigin\n\n    let dispatcher = this[kMockAgentGet](originKey)\n\n    if (!dispatcher) {\n      dispatcher = this[kFactory](originKey)\n      this[kMockAgentSet](originKey, dispatcher)\n    }\n    return dispatcher\n  }\n\n  dispatch (opts, handler) {\n    opts.origin = normalizeOrigin(opts.origin)\n\n    // Call MockAgent.get to perform additional setup before dispatching as normal\n    this.get(opts.origin)\n\n    this[kMockAgentAddCallHistoryLog](opts)\n\n    const acceptNonStandardSearchParameters = this[kMockAgentAcceptsNonStandardSearchParameters]\n\n    const dispatchOpts = { ...opts }\n\n    if (acceptNonStandardSearchParameters && dispatchOpts.path) {\n      const [path, searchParams] = dispatchOpts.path.split('?')\n      const normalizedSearchParams = normalizeSearchParams(searchParams, acceptNonStandardSearchParameters)\n      dispatchOpts.path = `${path}?${normalizedSearchParams}`\n    }\n\n    return this[kAgent].dispatch(dispatchOpts, handler)\n  }\n\n  async close () {\n    this.clearCallHistory()\n    await this[kAgent].close()\n    this[kClients].clear()\n  }\n\n  deactivate () {\n    this[kIsMockActive] = false\n  }\n\n  activate () {\n    this[kIsMockActive] = true\n  }\n\n  enableNetConnect (matcher) {\n    if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n      if (Array.isArray(this[kNetConnect])) {\n        this[kNetConnect].push(matcher)\n      } else {\n        this[kNetConnect] = [matcher]\n      }\n    } else if (typeof matcher === 'undefined') {\n      this[kNetConnect] = true\n    } else {\n      throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n    }\n  }\n\n  disableNetConnect () {\n    this[kNetConnect] = false\n  }\n\n  enableCallHistory () {\n    this[kMockAgentIsCallHistoryEnabled] = true\n\n    return this\n  }\n\n  disableCallHistory () {\n    this[kMockAgentIsCallHistoryEnabled] = false\n\n    return this\n  }\n\n  getCallHistory () {\n    return this[kMockAgentMockCallHistoryInstance]\n  }\n\n  clearCallHistory () {\n    if (this[kMockAgentMockCallHistoryInstance] !== undefined) {\n      this[kMockAgentMockCallHistoryInstance].clear()\n    }\n  }\n\n  // This is required to bypass issues caused by using global symbols - see:\n  // https://github.com/nodejs/undici/issues/1447\n  get isMockActive () {\n    return this[kIsMockActive]\n  }\n\n  [kMockAgentRegisterCallHistory] () {\n    if (this[kMockAgentMockCallHistoryInstance] === undefined) {\n      this[kMockAgentMockCallHistoryInstance] = new MockCallHistory()\n    }\n  }\n\n  [kMockAgentAddCallHistoryLog] (opts) {\n    if (this[kMockAgentIsCallHistoryEnabled]) {\n      // additional setup when enableCallHistory class method is used after mockAgent instantiation\n      this[kMockAgentRegisterCallHistory]()\n\n      // add call history log on every call (intercepted or not)\n      this[kMockAgentMockCallHistoryInstance][kMockCallHistoryAddLog](opts)\n    }\n  }\n\n  [kMockAgentSet] (origin, dispatcher) {\n    this[kClients].set(origin, { count: 0, dispatcher })\n  }\n\n  [kFactory] (origin) {\n    const mockOptions = Object.assign({ agent: this }, this[kOptions])\n    return this[kOptions] && this[kOptions].connections === 1\n      ? new MockClient(origin, mockOptions)\n      : new MockPool(origin, mockOptions)\n  }\n\n  [kMockAgentGet] (origin) {\n    // First check if we can immediately find it\n    const result = this[kClients].get(origin)\n    if (result?.dispatcher) {\n      return result.dispatcher\n    }\n\n    // If the origin is not a string create a dummy parent pool and return to user\n    if (typeof origin !== 'string') {\n      const dispatcher = this[kFactory]('http://localhost:9999')\n      this[kMockAgentSet](origin, dispatcher)\n      return dispatcher\n    }\n\n    // If we match, create a pool and assign the same dispatches\n    for (const [keyMatcher, result] of Array.from(this[kClients])) {\n      if (result && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n        const dispatcher = this[kFactory](origin)\n        this[kMockAgentSet](origin, dispatcher)\n        dispatcher[kDispatches] = result.dispatcher[kDispatches]\n        return dispatcher\n      }\n    }\n  }\n\n  [kGetNetConnect] () {\n    return this[kNetConnect]\n  }\n\n  pendingInterceptors () {\n    const mockAgentClients = this[kClients]\n\n    return Array.from(mockAgentClients.entries())\n      .flatMap(([origin, result]) => result.dispatcher[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n      .filter(({ pending }) => pending)\n  }\n\n  assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n    const pending = this.pendingInterceptors()\n\n    if (pending.length === 0) {\n      return\n    }\n\n    throw new UndiciError(\n      pending.length === 1\n        ? `1 interceptor is pending:\\n\\n${pendingInterceptorsFormatter.format(pending)}`.trim()\n        : `${pending.length} interceptors are pending:\\n\\n${pendingInterceptorsFormatter.format(pending)}`.trim()\n    )\n  }\n}\n\nmodule.exports = MockAgent\n","'use strict'\n\nconst { InvalidArgumentError } = require('../core/errors')\nconst { runtimeFeatures } = require('../util/runtime-features.js')\n\n/**\n * @typedef {Object} HeaderFilters\n * @property {Set<string>} ignore - Set of headers to ignore for matching\n * @property {Set<string>} exclude - Set of headers to exclude from matching\n * @property {Set<string>} match - Set of headers to match (empty means match\n */\n\n/**\n * Creates cached header sets for performance\n *\n * @param {import('./snapshot-recorder').SnapshotRecorderMatchOptions} matchOptions - Matching options for headers\n * @returns {HeaderFilters} - Cached sets for ignore, exclude, and match headers\n */\nfunction createHeaderFilters (matchOptions = {}) {\n  const { ignoreHeaders = [], excludeHeaders = [], matchHeaders = [], caseSensitive = false } = matchOptions\n\n  return {\n    ignore: new Set(ignoreHeaders.map(header => caseSensitive ? header : header.toLowerCase())),\n    exclude: new Set(excludeHeaders.map(header => caseSensitive ? header : header.toLowerCase())),\n    match: new Set(matchHeaders.map(header => caseSensitive ? header : header.toLowerCase()))\n  }\n}\n\nconst crypto = runtimeFeatures.has('crypto')\n  ? require('node:crypto')\n  : null\n\n/**\n * @callback HashIdFunction\n * @param {string} value - The value to hash\n * @returns {string} - The base64url encoded hash of the value\n */\n\n/**\n * Generates a hash for a given value\n * @type {HashIdFunction}\n */\nconst hashId = crypto?.hash\n  ? (value) => crypto.hash('sha256', value, 'base64url')\n  : (value) => Buffer.from(value).toString('base64url')\n\n/**\n * @typedef {(url: string) => boolean} IsUrlExcluded Checks if a URL matches any of the exclude patterns\n */\n\n/** @typedef {{[key: Lowercase<string>]: string}} NormalizedHeaders */\n/** @typedef {Array<string>} UndiciHeaders */\n/** @typedef {Record<string, string|string[]>} Headers */\n\n/**\n * @param {*} headers\n * @returns {headers is UndiciHeaders}\n */\nfunction isUndiciHeaders (headers) {\n  return Array.isArray(headers) && (headers.length & 1) === 0\n}\n\n/**\n * Factory function to create a URL exclusion checker\n * @param {Array<string| RegExp>} [excludePatterns=[]] - Array of patterns to exclude\n * @returns {IsUrlExcluded} - A function that checks if a URL matches any of the exclude patterns\n */\nfunction isUrlExcludedFactory (excludePatterns = []) {\n  if (excludePatterns.length === 0) {\n    return () => false\n  }\n\n  return function isUrlExcluded (url) {\n    let urlLowerCased\n\n    for (const pattern of excludePatterns) {\n      if (typeof pattern === 'string') {\n        if (!urlLowerCased) {\n          // Convert URL to lowercase only once\n          urlLowerCased = url.toLowerCase()\n        }\n        // Simple string match (case-insensitive)\n        if (urlLowerCased.includes(pattern.toLowerCase())) {\n          return true\n        }\n      } else if (pattern instanceof RegExp) {\n        // Regex pattern match\n        if (pattern.test(url)) {\n          return true\n        }\n      }\n    }\n\n    return false\n  }\n}\n\n/**\n * Normalizes headers for consistent comparison\n *\n * @param {Object|UndiciHeaders} headers - Headers to normalize\n * @returns {NormalizedHeaders} - Normalized headers as a lowercase object\n */\nfunction normalizeHeaders (headers) {\n  /** @type {NormalizedHeaders} */\n  const normalizedHeaders = {}\n\n  if (!headers) return normalizedHeaders\n\n  // Handle array format (undici internal format: [name, value, name, value, ...])\n  if (isUndiciHeaders(headers)) {\n    for (let i = 0; i < headers.length; i += 2) {\n      const key = headers[i]\n      const value = headers[i + 1]\n      if (key && value !== undefined) {\n        // Convert Buffers to strings if needed\n        const keyStr = Buffer.isBuffer(key) ? key.toString() : key\n        const valueStr = Buffer.isBuffer(value) ? value.toString() : value\n        normalizedHeaders[keyStr.toLowerCase()] = valueStr\n      }\n    }\n    return normalizedHeaders\n  }\n\n  // Handle object format\n  if (headers && typeof headers === 'object') {\n    for (const [key, value] of Object.entries(headers)) {\n      if (key && typeof key === 'string') {\n        normalizedHeaders[key.toLowerCase()] = Array.isArray(value) ? value.join(', ') : String(value)\n      }\n    }\n  }\n\n  return normalizedHeaders\n}\n\nconst validSnapshotModes = /** @type {const} */ (['record', 'playback', 'update'])\n\n/** @typedef {typeof validSnapshotModes[number]} SnapshotMode */\n\n/**\n * @param {*} mode - The snapshot mode to validate\n * @returns {asserts mode is SnapshotMode}\n */\nfunction validateSnapshotMode (mode) {\n  if (!validSnapshotModes.includes(mode)) {\n    throw new InvalidArgumentError(`Invalid snapshot mode: ${mode}. Must be one of: ${validSnapshotModes.join(', ')}`)\n  }\n}\n\nmodule.exports = {\n  createHeaderFilters,\n  hashId,\n  isUndiciHeaders,\n  normalizeHeaders,\n  isUrlExcludedFactory,\n  validateSnapshotMode\n}\n","'use strict'\n\nconst { writeFile, readFile, mkdir } = require('node:fs/promises')\nconst { dirname, resolve } = require('node:path')\nconst { setTimeout, clearTimeout } = require('node:timers')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require('./snapshot-utils')\n\n/**\n * @typedef {Object} SnapshotRequestOptions\n * @property {string} method - HTTP method (e.g. 'GET', 'POST', etc.)\n * @property {string} path - Request path\n * @property {string} origin - Request origin (base URL)\n * @property {import('./snapshot-utils').Headers|import('./snapshot-utils').UndiciHeaders} headers - Request headers\n * @property {import('./snapshot-utils').NormalizedHeaders} _normalizedHeaders - Request headers as a lowercase object\n * @property {string|Buffer} [body] - Request body (optional)\n */\n\n/**\n * @typedef {Object} SnapshotEntryRequest\n * @property {string} method - HTTP method (e.g. 'GET', 'POST', etc.)\n * @property {string} url - Full URL of the request\n * @property {import('./snapshot-utils').NormalizedHeaders} headers - Normalized headers as a lowercase object\n * @property {string|Buffer} [body] - Request body (optional)\n */\n\n/**\n * @typedef {Object} SnapshotEntryResponse\n * @property {number} statusCode - HTTP status code of the response\n * @property {import('./snapshot-utils').NormalizedHeaders} headers - Normalized response headers as a lowercase object\n * @property {string} body - Response body as a base64url encoded string\n * @property {Object} [trailers] - Optional response trailers\n */\n\n/**\n * @typedef {Object} SnapshotEntry\n * @property {SnapshotEntryRequest} request - The request object\n * @property {Array<SnapshotEntryResponse>} responses - Array of response objects\n * @property {number} callCount - Number of times this snapshot has been called\n * @property {string} timestamp - ISO timestamp of when the snapshot was created\n */\n\n/**\n * @typedef {Object} SnapshotRecorderMatchOptions\n * @property {Array<string>} [matchHeaders=[]] - Headers to match (empty array means match all headers)\n * @property {Array<string>} [ignoreHeaders=[]] - Headers to ignore for matching\n * @property {Array<string>} [excludeHeaders=[]] - Headers to exclude from matching\n * @property {boolean} [matchBody=true] - Whether to match request body\n * @property {boolean} [matchQuery=true] - Whether to match query properties\n * @property {boolean} [caseSensitive=false] - Whether header matching is case-sensitive\n */\n\n/**\n * @typedef {Object} SnapshotRecorderOptions\n * @property {string} [snapshotPath] - Path to save/load snapshots\n * @property {import('./snapshot-utils').SnapshotMode} [mode='record'] - Mode: 'record' or 'playback'\n * @property {number} [maxSnapshots=Infinity] - Maximum number of snapshots to keep\n * @property {boolean} [autoFlush=false] - Whether to automatically flush snapshots to disk\n * @property {number} [flushInterval=30000] - Auto-flush interval in milliseconds (default: 30 seconds)\n * @property {Array<string|RegExp>} [excludeUrls=[]] - URLs to exclude from recording\n * @property {function} [shouldRecord=null] - Function to filter requests for recording\n * @property {function} [shouldPlayback=null] - Function to filter requests\n */\n\n/**\n * @typedef {Object} SnapshotFormattedRequest\n * @property {string} method - HTTP method (e.g. 'GET', 'POST', etc.)\n * @property {string} url - Full URL of the request (with query parameters if matchQuery is true)\n * @property {import('./snapshot-utils').NormalizedHeaders} headers - Normalized headers as a lowercase object\n * @property {string} body - Request body (optional, only if matchBody is true)\n */\n\n/**\n * @typedef {Object} SnapshotInfo\n * @property {string} hash - Hash key for the snapshot\n * @property {SnapshotEntryRequest} request - The request object\n * @property {number} responseCount - Number of responses recorded for this request\n * @property {number} callCount - Number of times this snapshot has been called\n * @property {string} timestamp - ISO timestamp of when the snapshot was created\n */\n\n/**\n * Formats a request for consistent snapshot storage\n * Caches normalized headers to avoid repeated processing\n *\n * @param {SnapshotRequestOptions} opts - Request options\n * @param {import('./snapshot-utils').HeaderFilters} headerFilters - Cached header sets for performance\n * @param {SnapshotRecorderMatchOptions} [matchOptions] - Matching options for headers and body\n * @returns {SnapshotFormattedRequest} - Formatted request object\n */\nfunction formatRequestKey (opts, headerFilters, matchOptions = {}) {\n  const url = new URL(opts.path, opts.origin)\n\n  // Cache normalized headers if not already done\n  const normalized = opts._normalizedHeaders || normalizeHeaders(opts.headers)\n  if (!opts._normalizedHeaders) {\n    opts._normalizedHeaders = normalized\n  }\n\n  return {\n    method: opts.method || 'GET',\n    url: matchOptions.matchQuery !== false ? url.toString() : `${url.origin}${url.pathname}`,\n    headers: filterHeadersForMatching(normalized, headerFilters, matchOptions),\n    body: matchOptions.matchBody !== false && opts.body ? String(opts.body) : ''\n  }\n}\n\n/**\n * Filters headers based on matching configuration\n *\n * @param {import('./snapshot-utils').Headers} headers - Headers to filter\n * @param {import('./snapshot-utils').HeaderFilters} headerFilters - Cached sets for ignore, exclude, and match headers\n * @param {SnapshotRecorderMatchOptions} [matchOptions] - Matching options for headers\n */\nfunction filterHeadersForMatching (headers, headerFilters, matchOptions = {}) {\n  if (!headers || typeof headers !== 'object') return {}\n\n  const {\n    caseSensitive = false\n  } = matchOptions\n\n  const filtered = {}\n  const { ignore, exclude, match } = headerFilters\n\n  for (const [key, value] of Object.entries(headers)) {\n    const headerKey = caseSensitive ? key : key.toLowerCase()\n\n    // Skip if in exclude list (for security)\n    if (exclude.has(headerKey)) continue\n\n    // Skip if in ignore list (for matching)\n    if (ignore.has(headerKey)) continue\n\n    // If matchHeaders is specified, only include those headers\n    if (match.size !== 0) {\n      if (!match.has(headerKey)) continue\n    }\n\n    filtered[headerKey] = value\n  }\n\n  return filtered\n}\n\n/**\n * Filters headers for storage (only excludes sensitive headers)\n *\n * @param {import('./snapshot-utils').Headers} headers - Headers to filter\n * @param {import('./snapshot-utils').HeaderFilters} headerFilters - Cached sets for ignore, exclude, and match headers\n * @param {SnapshotRecorderMatchOptions} [matchOptions] - Matching options for headers\n */\nfunction filterHeadersForStorage (headers, headerFilters, matchOptions = {}) {\n  if (!headers || typeof headers !== 'object') return {}\n\n  const {\n    caseSensitive = false\n  } = matchOptions\n\n  const filtered = {}\n  const { exclude: excludeSet } = headerFilters\n\n  for (const [key, value] of Object.entries(headers)) {\n    const headerKey = caseSensitive ? key : key.toLowerCase()\n\n    // Skip if in exclude list (for security)\n    if (excludeSet.has(headerKey)) continue\n\n    filtered[headerKey] = value\n  }\n\n  return filtered\n}\n\n/**\n * Creates a hash key for request matching\n * Properly orders headers to avoid conflicts and uses crypto hashing when available\n *\n * @param {SnapshotFormattedRequest} formattedRequest - Request object\n * @returns {string} - Base64url encoded hash of the request\n */\nfunction createRequestHash (formattedRequest) {\n  const parts = [\n    formattedRequest.method,\n    formattedRequest.url\n  ]\n\n  // Process headers in a deterministic way to avoid conflicts\n  if (formattedRequest.headers && typeof formattedRequest.headers === 'object') {\n    const headerKeys = Object.keys(formattedRequest.headers).sort()\n    for (const key of headerKeys) {\n      const values = Array.isArray(formattedRequest.headers[key])\n        ? formattedRequest.headers[key]\n        : [formattedRequest.headers[key]]\n\n      // Add header name\n      parts.push(key)\n\n      // Add all values for this header, sorted for consistency\n      for (const value of values.sort()) {\n        parts.push(String(value))\n      }\n    }\n  }\n\n  // Add body\n  parts.push(formattedRequest.body)\n\n  const content = parts.join('|')\n\n  return hashId(content)\n}\n\nclass SnapshotRecorder {\n  /** @type {NodeJS.Timeout | null} */\n  #flushTimeout\n\n  /** @type {import('./snapshot-utils').IsUrlExcluded} */\n  #isUrlExcluded\n\n  /** @type {Map<string, SnapshotEntry>} */\n  #snapshots = new Map()\n\n  /** @type {string|undefined} */\n  #snapshotPath\n\n  /** @type {number} */\n  #maxSnapshots = Infinity\n\n  /** @type {boolean} */\n  #autoFlush = false\n\n  /** @type {import('./snapshot-utils').HeaderFilters} */\n  #headerFilters\n\n  /**\n   * Creates a new SnapshotRecorder instance\n   * @param {SnapshotRecorderOptions&SnapshotRecorderMatchOptions} [options={}] - Configuration options for the recorder\n   */\n  constructor (options = {}) {\n    this.#snapshotPath = options.snapshotPath\n    this.#maxSnapshots = options.maxSnapshots || Infinity\n    this.#autoFlush = options.autoFlush || false\n    this.flushInterval = options.flushInterval || 30000 // 30 seconds default\n    this._flushTimer = null\n\n    // Matching configuration\n    /** @type {Required<SnapshotRecorderMatchOptions>} */\n    this.matchOptions = {\n      matchHeaders: options.matchHeaders || [], // empty means match all headers\n      ignoreHeaders: options.ignoreHeaders || [],\n      excludeHeaders: options.excludeHeaders || [],\n      matchBody: options.matchBody !== false, // default: true\n      matchQuery: options.matchQuery !== false, // default: true\n      caseSensitive: options.caseSensitive || false\n    }\n\n    // Cache processed header sets to avoid recreating them on every request\n    this.#headerFilters = createHeaderFilters(this.matchOptions)\n\n    // Request filtering callbacks\n    this.shouldRecord = options.shouldRecord || (() => true) // function(requestOpts) -> boolean\n    this.shouldPlayback = options.shouldPlayback || (() => true) // function(requestOpts) -> boolean\n\n    // URL pattern filtering\n    this.#isUrlExcluded = isUrlExcludedFactory(options.excludeUrls) // Array of regex patterns or strings\n\n    // Start auto-flush timer if enabled\n    if (this.#autoFlush && this.#snapshotPath) {\n      this.#startAutoFlush()\n    }\n  }\n\n  /**\n   * Records a request-response interaction\n   * @param {SnapshotRequestOptions} requestOpts - Request options\n   * @param {SnapshotEntryResponse} response - Response data to record\n   * @return {Promise<void>} - Resolves when the recording is complete\n   */\n  async record (requestOpts, response) {\n    // Check if recording should be filtered out\n    if (!this.shouldRecord(requestOpts)) {\n      return // Skip recording\n    }\n\n    // Check URL exclusion patterns\n    if (this.isUrlExcluded(requestOpts)) {\n      return // Skip recording\n    }\n\n    const request = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions)\n    const hash = createRequestHash(request)\n\n    // Extract response data - always store body as base64\n    const normalizedHeaders = normalizeHeaders(response.headers)\n\n    /** @type {SnapshotEntryResponse} */\n    const responseData = {\n      statusCode: response.statusCode,\n      headers: filterHeadersForStorage(normalizedHeaders, this.#headerFilters, this.matchOptions),\n      body: Buffer.isBuffer(response.body)\n        ? response.body.toString('base64')\n        : Buffer.from(String(response.body || '')).toString('base64'),\n      trailers: response.trailers\n    }\n\n    // Remove oldest snapshot if we exceed maxSnapshots limit\n    if (this.#snapshots.size >= this.#maxSnapshots && !this.#snapshots.has(hash)) {\n      const oldestKey = this.#snapshots.keys().next().value\n      this.#snapshots.delete(oldestKey)\n    }\n\n    // Support sequential responses - if snapshot exists, add to responses array\n    const existingSnapshot = this.#snapshots.get(hash)\n    if (existingSnapshot && existingSnapshot.responses) {\n      existingSnapshot.responses.push(responseData)\n      existingSnapshot.timestamp = new Date().toISOString()\n    } else {\n      this.#snapshots.set(hash, {\n        request,\n        responses: [responseData], // Always store as array for consistency\n        callCount: 0,\n        timestamp: new Date().toISOString()\n      })\n    }\n\n    // Auto-flush if enabled\n    if (this.#autoFlush && this.#snapshotPath) {\n      this.#scheduleFlush()\n    }\n  }\n\n  /**\n   * Checks if a URL should be excluded from recording/playback\n   * @param {SnapshotRequestOptions} requestOpts - Request options to check\n   * @returns {boolean} - True if URL is excluded\n   */\n  isUrlExcluded (requestOpts) {\n    const url = new URL(requestOpts.path, requestOpts.origin).toString()\n    return this.#isUrlExcluded(url)\n  }\n\n  /**\n   * Finds a matching snapshot for the given request\n   * Returns the appropriate response based on call count for sequential responses\n   *\n   * @param {SnapshotRequestOptions} requestOpts - Request options to match\n   * @returns {SnapshotEntry&Record<'response', SnapshotEntryResponse>|undefined} - Matching snapshot response or undefined if not found\n   */\n  findSnapshot (requestOpts) {\n    // Check if playback should be filtered out\n    if (!this.shouldPlayback(requestOpts)) {\n      return undefined // Skip playback\n    }\n\n    // Check URL exclusion patterns\n    if (this.isUrlExcluded(requestOpts)) {\n      return undefined // Skip playback\n    }\n\n    const request = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions)\n    const hash = createRequestHash(request)\n    const snapshot = this.#snapshots.get(hash)\n\n    if (!snapshot) return undefined\n\n    // Handle sequential responses\n    const currentCallCount = snapshot.callCount || 0\n    const responseIndex = Math.min(currentCallCount, snapshot.responses.length - 1)\n    snapshot.callCount = currentCallCount + 1\n\n    return {\n      ...snapshot,\n      response: snapshot.responses[responseIndex]\n    }\n  }\n\n  /**\n   * Loads snapshots from file\n   * @param {string} [filePath] - Optional file path to load snapshots from\n   * @return {Promise<void>} - Resolves when snapshots are loaded\n   */\n  async loadSnapshots (filePath) {\n    const path = filePath || this.#snapshotPath\n    if (!path) {\n      throw new InvalidArgumentError('Snapshot path is required')\n    }\n\n    try {\n      const data = await readFile(resolve(path), 'utf8')\n      const parsed = JSON.parse(data)\n\n      // Convert array format back to Map\n      if (Array.isArray(parsed)) {\n        this.#snapshots.clear()\n        for (const { hash, snapshot } of parsed) {\n          this.#snapshots.set(hash, snapshot)\n        }\n      } else {\n        // Legacy object format\n        this.#snapshots = new Map(Object.entries(parsed))\n      }\n    } catch (error) {\n      if (error.code === 'ENOENT') {\n        // File doesn't exist yet - that's ok for recording mode\n        this.#snapshots.clear()\n      } else {\n        throw new UndiciError(`Failed to load snapshots from ${path}`, { cause: error })\n      }\n    }\n  }\n\n  /**\n   * Saves snapshots to file\n   *\n   * @param {string} [filePath] - Optional file path to save snapshots\n   * @returns {Promise<void>} - Resolves when snapshots are saved\n   */\n  async saveSnapshots (filePath) {\n    const path = filePath || this.#snapshotPath\n    if (!path) {\n      throw new InvalidArgumentError('Snapshot path is required')\n    }\n\n    const resolvedPath = resolve(path)\n\n    // Ensure directory exists\n    await mkdir(dirname(resolvedPath), { recursive: true })\n\n    // Convert Map to serializable format\n    const data = Array.from(this.#snapshots.entries()).map(([hash, snapshot]) => ({\n      hash,\n      snapshot\n    }))\n\n    await writeFile(resolvedPath, JSON.stringify(data, null, 2), { flush: true })\n  }\n\n  /**\n   * Clears all recorded snapshots\n   * @returns {void}\n   */\n  clear () {\n    this.#snapshots.clear()\n  }\n\n  /**\n   * Gets all recorded snapshots\n   * @return {Array<SnapshotEntry>} - Array of all recorded snapshots\n   */\n  getSnapshots () {\n    return Array.from(this.#snapshots.values())\n  }\n\n  /**\n   * Gets snapshot count\n   * @return {number} - Number of recorded snapshots\n   */\n  size () {\n    return this.#snapshots.size\n  }\n\n  /**\n   * Resets call counts for all snapshots (useful for test cleanup)\n   * @returns {void}\n   */\n  resetCallCounts () {\n    for (const snapshot of this.#snapshots.values()) {\n      snapshot.callCount = 0\n    }\n  }\n\n  /**\n   * Deletes a specific snapshot by request options\n   * @param {SnapshotRequestOptions} requestOpts - Request options to match\n   * @returns {boolean} - True if snapshot was deleted, false if not found\n   */\n  deleteSnapshot (requestOpts) {\n    const request = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions)\n    const hash = createRequestHash(request)\n    return this.#snapshots.delete(hash)\n  }\n\n  /**\n   * Gets information about a specific snapshot\n   * @param {SnapshotRequestOptions} requestOpts - Request options to match\n   * @returns {SnapshotInfo|null} - Snapshot information or null if not found\n   */\n  getSnapshotInfo (requestOpts) {\n    const request = formatRequestKey(requestOpts, this.#headerFilters, this.matchOptions)\n    const hash = createRequestHash(request)\n    const snapshot = this.#snapshots.get(hash)\n\n    if (!snapshot) return null\n\n    return {\n      hash,\n      request: snapshot.request,\n      responseCount: snapshot.responses ? snapshot.responses.length : (snapshot.response ? 1 : 0), // .response for legacy snapshots\n      callCount: snapshot.callCount || 0,\n      timestamp: snapshot.timestamp\n    }\n  }\n\n  /**\n   * Replaces all snapshots with new data (full replacement)\n   * @param {Array<{hash: string; snapshot: SnapshotEntry}>|Record<string, SnapshotEntry>} snapshotData - New snapshot data to replace existing ones\n   * @returns {void}\n   */\n  replaceSnapshots (snapshotData) {\n    this.#snapshots.clear()\n\n    if (Array.isArray(snapshotData)) {\n      for (const { hash, snapshot } of snapshotData) {\n        this.#snapshots.set(hash, snapshot)\n      }\n    } else if (snapshotData && typeof snapshotData === 'object') {\n      // Legacy object format\n      this.#snapshots = new Map(Object.entries(snapshotData))\n    }\n  }\n\n  /**\n   * Starts the auto-flush timer\n   * @returns {void}\n   */\n  #startAutoFlush () {\n    return this.#scheduleFlush()\n  }\n\n  /**\n   * Stops the auto-flush timer\n   * @returns {void}\n   */\n  #stopAutoFlush () {\n    if (this.#flushTimeout) {\n      clearTimeout(this.#flushTimeout)\n      // Ensure any pending flush is completed\n      this.saveSnapshots().catch(() => {\n      // Ignore flush errors\n      })\n      this.#flushTimeout = null\n    }\n  }\n\n  /**\n   * Schedules a flush (debounced to avoid excessive writes)\n   */\n  #scheduleFlush () {\n    this.#flushTimeout = setTimeout(() => {\n      this.saveSnapshots().catch(() => {\n        // Ignore flush errors\n      })\n      if (this.#autoFlush) {\n        this.#flushTimeout?.refresh()\n      } else {\n        this.#flushTimeout = null\n      }\n    }, 1000) // 1 second debounce\n  }\n\n  /**\n   * Cleanup method to stop timers\n   * @returns {void}\n   */\n  destroy () {\n    this.#stopAutoFlush()\n    if (this.#flushTimeout) {\n      clearTimeout(this.#flushTimeout)\n      this.#flushTimeout = null\n    }\n  }\n\n  /**\n   * Async close method that saves all recordings and performs cleanup\n   * @returns {Promise<void>}\n   */\n  async close () {\n    // Save any pending recordings if we have a snapshot path\n    if (this.#snapshotPath && this.#snapshots.size !== 0) {\n      await this.saveSnapshots()\n    }\n\n    // Perform cleanup\n    this.destroy()\n  }\n}\n\nmodule.exports = { SnapshotRecorder, formatRequestKey, createRequestHash, filterHeadersForMatching, filterHeadersForStorage, createHeaderFilters }\n","'use strict'\n\nconst Agent = require('../dispatcher/agent')\nconst MockAgent = require('./mock-agent')\nconst { SnapshotRecorder } = require('./snapshot-recorder')\nconst WrapHandler = require('../handler/wrap-handler')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst { validateSnapshotMode } = require('./snapshot-utils')\n\nconst kSnapshotRecorder = Symbol('kSnapshotRecorder')\nconst kSnapshotMode = Symbol('kSnapshotMode')\nconst kSnapshotPath = Symbol('kSnapshotPath')\nconst kSnapshotLoaded = Symbol('kSnapshotLoaded')\nconst kRealAgent = Symbol('kRealAgent')\n\n// Static flag to ensure warning is only emitted once per process\nlet warningEmitted = false\n\nclass SnapshotAgent extends MockAgent {\n  constructor (opts = {}) {\n    // Emit experimental warning only once\n    if (!warningEmitted) {\n      process.emitWarning(\n        'SnapshotAgent is experimental and subject to change',\n        'ExperimentalWarning'\n      )\n      warningEmitted = true\n    }\n\n    const {\n      mode = 'record',\n      snapshotPath = null,\n      ...mockAgentOpts\n    } = opts\n\n    super(mockAgentOpts)\n\n    validateSnapshotMode(mode)\n\n    // Validate snapshotPath is provided when required\n    if ((mode === 'playback' || mode === 'update') && !snapshotPath) {\n      throw new InvalidArgumentError(`snapshotPath is required when mode is '${mode}'`)\n    }\n\n    this[kSnapshotMode] = mode\n    this[kSnapshotPath] = snapshotPath\n\n    this[kSnapshotRecorder] = new SnapshotRecorder({\n      snapshotPath: this[kSnapshotPath],\n      mode: this[kSnapshotMode],\n      maxSnapshots: opts.maxSnapshots,\n      autoFlush: opts.autoFlush,\n      flushInterval: opts.flushInterval,\n      matchHeaders: opts.matchHeaders,\n      ignoreHeaders: opts.ignoreHeaders,\n      excludeHeaders: opts.excludeHeaders,\n      matchBody: opts.matchBody,\n      matchQuery: opts.matchQuery,\n      caseSensitive: opts.caseSensitive,\n      shouldRecord: opts.shouldRecord,\n      shouldPlayback: opts.shouldPlayback,\n      excludeUrls: opts.excludeUrls\n    })\n    this[kSnapshotLoaded] = false\n\n    // For recording/update mode, we need a real agent to make actual requests\n    // For playback mode, we need a real agent if there are excluded URLs\n    if (this[kSnapshotMode] === 'record' || this[kSnapshotMode] === 'update' ||\n        (this[kSnapshotMode] === 'playback' && opts.excludeUrls && opts.excludeUrls.length > 0)) {\n      this[kRealAgent] = new Agent(opts)\n    }\n\n    // Auto-load snapshots in playback/update mode\n    if ((this[kSnapshotMode] === 'playback' || this[kSnapshotMode] === 'update') && this[kSnapshotPath]) {\n      this.loadSnapshots().catch(() => {\n        // Ignore load errors - file might not exist yet\n      })\n    }\n  }\n\n  dispatch (opts, handler) {\n    handler = WrapHandler.wrap(handler)\n    const mode = this[kSnapshotMode]\n\n    // Check if URL should be excluded (pass through without mocking/recording)\n    if (this[kSnapshotRecorder].isUrlExcluded(opts)) {\n      // Real agent is guaranteed by constructor when excludeUrls is configured\n      return this[kRealAgent].dispatch(opts, handler)\n    }\n\n    if (mode === 'playback' || mode === 'update') {\n      // Ensure snapshots are loaded\n      if (!this[kSnapshotLoaded]) {\n        // Need to load asynchronously, delegate to async version\n        return this.#asyncDispatch(opts, handler)\n      }\n\n      // Try to find existing snapshot (synchronous)\n      const snapshot = this[kSnapshotRecorder].findSnapshot(opts)\n\n      if (snapshot) {\n        // Use recorded response (synchronous)\n        return this.#replaySnapshot(snapshot, handler)\n      } else if (mode === 'update') {\n        // Make real request and record it (async required)\n        return this.#recordAndReplay(opts, handler)\n      } else {\n        // Playback mode but no snapshot found\n        const error = new UndiciError(`No snapshot found for ${opts.method || 'GET'} ${opts.path}`)\n        if (handler.onError) {\n          handler.onError(error)\n          return\n        }\n        throw error\n      }\n    } else if (mode === 'record') {\n      // Record mode - make real request and save response (async required)\n      return this.#recordAndReplay(opts, handler)\n    }\n  }\n\n  /**\n   * Async version of dispatch for when we need to load snapshots first\n   */\n  async #asyncDispatch (opts, handler) {\n    await this.loadSnapshots()\n    return this.dispatch(opts, handler)\n  }\n\n  /**\n   * Records a real request and replays the response\n   */\n  #recordAndReplay (opts, handler) {\n    const responseData = {\n      statusCode: null,\n      headers: {},\n      trailers: {},\n      body: []\n    }\n\n    const self = this // Capture 'this' context for use within nested handler callbacks\n\n    const recordingHandler = {\n      onRequestStart (controller, context) {\n        return handler.onRequestStart(controller, { ...context, history: this.history })\n      },\n\n      onRequestUpgrade (controller, statusCode, headers, socket) {\n        return handler.onRequestUpgrade(controller, statusCode, headers, socket)\n      },\n\n      onResponseStart (controller, statusCode, headers, statusMessage) {\n        responseData.statusCode = statusCode\n        responseData.headers = headers\n        return handler.onResponseStart(controller, statusCode, headers, statusMessage)\n      },\n\n      onResponseData (controller, chunk) {\n        responseData.body.push(chunk)\n        return handler.onResponseData(controller, chunk)\n      },\n\n      onResponseEnd (controller, trailers) {\n        responseData.trailers = trailers\n\n        // Record the interaction using captured 'self' context (fire and forget)\n        const responseBody = Buffer.concat(responseData.body)\n        self[kSnapshotRecorder].record(opts, {\n          statusCode: responseData.statusCode,\n          headers: responseData.headers,\n          body: responseBody,\n          trailers: responseData.trailers\n        })\n          .then(() => handler.onResponseEnd(controller, trailers))\n          .catch((error) => handler.onResponseError(controller, error))\n      }\n    }\n\n    // Use composed agent if available (includes interceptors), otherwise use real agent\n    const agent = this[kRealAgent]\n    return agent.dispatch(opts, recordingHandler)\n  }\n\n  /**\n   * Replays a recorded response\n   *\n   * @param {Object} snapshot - The recorded snapshot to replay.\n   * @param {Object} handler - The handler to call with the response data.\n   * @returns {void}\n   */\n  #replaySnapshot (snapshot, handler) {\n    try {\n      const { response } = snapshot\n\n      const controller = {\n        pause () { },\n        resume () { },\n        abort (reason) {\n          this.aborted = true\n          this.reason = reason\n        },\n\n        aborted: false,\n        paused: false\n      }\n\n      handler.onRequestStart(controller)\n\n      handler.onResponseStart(controller, response.statusCode, response.headers)\n\n      // Body is always stored as base64 string\n      const body = Buffer.from(response.body, 'base64')\n      handler.onResponseData(controller, body)\n\n      handler.onResponseEnd(controller, response.trailers)\n    } catch (error) {\n      handler.onError?.(error)\n    }\n  }\n\n  /**\n   * Loads snapshots from file\n   *\n   * @param {string} [filePath] - Optional file path to load snapshots from.\n   * @returns {Promise<void>} - Resolves when snapshots are loaded.\n   */\n  async loadSnapshots (filePath) {\n    await this[kSnapshotRecorder].loadSnapshots(filePath || this[kSnapshotPath])\n    this[kSnapshotLoaded] = true\n\n    // In playback mode, set up MockAgent interceptors for all snapshots\n    if (this[kSnapshotMode] === 'playback') {\n      this.#setupMockInterceptors()\n    }\n  }\n\n  /**\n   * Saves snapshots to file\n   *\n   * @param {string} [filePath] - Optional file path to save snapshots to.\n   * @returns {Promise<void>} - Resolves when snapshots are saved.\n   */\n  async saveSnapshots (filePath) {\n    return this[kSnapshotRecorder].saveSnapshots(filePath || this[kSnapshotPath])\n  }\n\n  /**\n   * Sets up MockAgent interceptors based on recorded snapshots.\n   *\n   * This method creates MockAgent interceptors for each recorded snapshot,\n   * allowing the SnapshotAgent to fall back to MockAgent's standard intercept\n   * mechanism in playback mode. Each interceptor is configured to persist\n   * (remain active for multiple requests) and responds with the recorded\n   * response data.\n   *\n   * Called automatically when loading snapshots in playback mode.\n   *\n   * @returns {void}\n   */\n  #setupMockInterceptors () {\n    for (const snapshot of this[kSnapshotRecorder].getSnapshots()) {\n      const { request, responses, response } = snapshot\n      const url = new URL(request.url)\n\n      const mockPool = this.get(url.origin)\n\n      // Handle both new format (responses array) and legacy format (response object)\n      const responseData = responses ? responses[0] : response\n      if (!responseData) continue\n\n      mockPool.intercept({\n        path: url.pathname + url.search,\n        method: request.method,\n        headers: request.headers,\n        body: request.body\n      }).reply(responseData.statusCode, responseData.body, {\n        headers: responseData.headers,\n        trailers: responseData.trailers\n      }).persist()\n    }\n  }\n\n  /**\n   * Gets the snapshot recorder\n   * @return {SnapshotRecorder} - The snapshot recorder instance\n   */\n  getRecorder () {\n    return this[kSnapshotRecorder]\n  }\n\n  /**\n   * Gets the current mode\n   * @return {import('./snapshot-utils').SnapshotMode} - The current snapshot mode\n   */\n  getMode () {\n    return this[kSnapshotMode]\n  }\n\n  /**\n   * Clears all snapshots\n   * @returns {void}\n   */\n  clearSnapshots () {\n    this[kSnapshotRecorder].clear()\n  }\n\n  /**\n   * Resets call counts for all snapshots (useful for test cleanup)\n   * @returns {void}\n   */\n  resetCallCounts () {\n    this[kSnapshotRecorder].resetCallCounts()\n  }\n\n  /**\n   * Deletes a specific snapshot by request options\n   * @param {import('./snapshot-recorder').SnapshotRequestOptions} requestOpts - Request options to identify the snapshot\n   * @return {Promise<boolean>} - Returns true if the snapshot was deleted, false if not found\n   */\n  deleteSnapshot (requestOpts) {\n    return this[kSnapshotRecorder].deleteSnapshot(requestOpts)\n  }\n\n  /**\n   * Gets information about a specific snapshot\n   * @returns {import('./snapshot-recorder').SnapshotInfo|null} - Snapshot information or null if not found\n   */\n  getSnapshotInfo (requestOpts) {\n    return this[kSnapshotRecorder].getSnapshotInfo(requestOpts)\n  }\n\n  /**\n   * Replaces all snapshots with new data (full replacement)\n   * @param {Array<{hash: string; snapshot: import('./snapshot-recorder').SnapshotEntryshotEntry}>|Record<string, import('./snapshot-recorder').SnapshotEntry>} snapshotData - New snapshot data to replace existing snapshots\n   * @returns {void}\n   */\n  replaceSnapshots (snapshotData) {\n    this[kSnapshotRecorder].replaceSnapshots(snapshotData)\n  }\n\n  /**\n   * Closes the agent, saving snapshots and cleaning up resources.\n   *\n   * @returns {Promise<void>}\n   */\n  async close () {\n    await this[kSnapshotRecorder].close()\n    await this[kRealAgent]?.close()\n    await super.close()\n  }\n}\n\nmodule.exports = SnapshotAgent\n","'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.2')\nconst legacyGlobalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./dispatcher/agent')\n\nif (getGlobalDispatcher() === undefined) {\n  setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n  if (!agent || typeof agent.dispatch !== 'function') {\n    throw new InvalidArgumentError('Argument agent must implement Agent')\n  }\n\n  Object.defineProperty(globalThis, globalDispatcher, {\n    value: agent,\n    writable: true,\n    enumerable: false,\n    configurable: false\n  })\n\n  Object.defineProperty(globalThis, legacyGlobalDispatcher, {\n    value: agent,\n    writable: true,\n    enumerable: false,\n    configurable: false\n  })\n}\n\nfunction getGlobalDispatcher () {\n  return globalThis[legacyGlobalDispatcher]\n}\n\n// These are the globals that can be installed by undici.install().\n// Not exported by index.js to avoid use outside of this module.\nconst installedExports = /** @type {const} */ (\n  [\n    'fetch',\n    'Headers',\n    'Response',\n    'Request',\n    'FormData',\n    'WebSocket',\n    'CloseEvent',\n    'ErrorEvent',\n    'MessageEvent',\n    'EventSource'\n  ]\n)\n\nmodule.exports = {\n  setGlobalDispatcher,\n  getGlobalDispatcher,\n  installedExports\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst WrapHandler = require('./wrap-handler')\n\n/**\n * @deprecated\n */\nmodule.exports = class DecoratorHandler {\n  #handler\n  #onCompleteCalled = false\n  #onErrorCalled = false\n  #onResponseStartCalled = false\n\n  constructor (handler) {\n    if (typeof handler !== 'object' || handler === null) {\n      throw new TypeError('handler must be an object')\n    }\n    this.#handler = WrapHandler.wrap(handler)\n  }\n\n  onRequestStart (...args) {\n    this.#handler.onRequestStart?.(...args)\n  }\n\n  onRequestUpgrade (...args) {\n    assert(!this.#onCompleteCalled)\n    assert(!this.#onErrorCalled)\n\n    return this.#handler.onRequestUpgrade?.(...args)\n  }\n\n  onResponseStart (...args) {\n    assert(!this.#onCompleteCalled)\n    assert(!this.#onErrorCalled)\n    assert(!this.#onResponseStartCalled)\n\n    this.#onResponseStartCalled = true\n\n    return this.#handler.onResponseStart?.(...args)\n  }\n\n  onResponseData (...args) {\n    assert(!this.#onCompleteCalled)\n    assert(!this.#onErrorCalled)\n\n    return this.#handler.onResponseData?.(...args)\n  }\n\n  onResponseEnd (...args) {\n    assert(!this.#onCompleteCalled)\n    assert(!this.#onErrorCalled)\n\n    this.#onCompleteCalled = true\n    return this.#handler.onResponseEnd?.(...args)\n  }\n\n  onResponseError (...args) {\n    this.#onErrorCalled = true\n    return this.#handler.onResponseError?.(...args)\n  }\n\n  /**\n   * @deprecated\n   */\n  onBodySent () {}\n}\n","'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('node:assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('node:events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nconst noop = () => {}\n\nclass BodyAsyncIterable {\n  constructor (body) {\n    this[kBody] = body\n    this[kBodyUsed] = false\n  }\n\n  async * [Symbol.asyncIterator] () {\n    assert(!this[kBodyUsed], 'disturbed')\n    this[kBodyUsed] = true\n    yield * this[kBody]\n  }\n}\n\nclass RedirectHandler {\n  static buildDispatch (dispatcher, maxRedirections) {\n    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    const dispatch = dispatcher.dispatch.bind(dispatcher)\n    return (opts, originalHandler) => dispatch(opts, new RedirectHandler(dispatch, maxRedirections, opts, originalHandler))\n  }\n\n  constructor (dispatch, maxRedirections, opts, handler) {\n    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    this.dispatch = dispatch\n    this.location = null\n    const { maxRedirections: _, ...cleanOpts } = opts\n    this.opts = cleanOpts // opts must be a copy, exclude maxRedirections\n    this.maxRedirections = maxRedirections\n    this.handler = handler\n    this.history = []\n\n    if (util.isStream(this.opts.body)) {\n      // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n      // so that it can be dispatched again?\n      // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n      if (util.bodyLength(this.opts.body) === 0) {\n        this.opts.body\n          .on('data', function () {\n            assert(false)\n          })\n      }\n\n      if (typeof this.opts.body.readableDidRead !== 'boolean') {\n        this.opts.body[kBodyUsed] = false\n        EE.prototype.on.call(this.opts.body, 'data', function () {\n          this[kBodyUsed] = true\n        })\n      }\n    } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n      // TODO (fix): We can't access ReadableStream internal state\n      // to determine whether or not it has been disturbed. This is just\n      // a workaround.\n      this.opts.body = new BodyAsyncIterable(this.opts.body)\n    } else if (\n      this.opts.body &&\n      typeof this.opts.body !== 'string' &&\n      !ArrayBuffer.isView(this.opts.body) &&\n      util.isIterable(this.opts.body) &&\n      !util.isFormDataLike(this.opts.body)\n    ) {\n      // TODO: Should we allow re-using iterable if !this.opts.idempotent\n      // or through some other flag?\n      this.opts.body = new BodyAsyncIterable(this.opts.body)\n    }\n  }\n\n  onRequestStart (controller, context) {\n    this.handler.onRequestStart?.(controller, { ...context, history: this.history })\n  }\n\n  onRequestUpgrade (controller, statusCode, headers, socket) {\n    this.handler.onRequestUpgrade?.(controller, statusCode, headers, socket)\n  }\n\n  onResponseStart (controller, statusCode, headers, statusMessage) {\n    if (this.opts.throwOnMaxRedirect && this.history.length >= this.maxRedirections) {\n      throw new Error('max redirects')\n    }\n\n    // https://tools.ietf.org/html/rfc7231#section-6.4.2\n    // https://fetch.spec.whatwg.org/#http-redirect-fetch\n    // In case of HTTP 301 or 302 with POST, change the method to GET\n    if ((statusCode === 301 || statusCode === 302) && this.opts.method === 'POST') {\n      this.opts.method = 'GET'\n      if (util.isStream(this.opts.body)) {\n        util.destroy(this.opts.body.on('error', noop))\n      }\n      this.opts.body = null\n    }\n\n    // https://tools.ietf.org/html/rfc7231#section-6.4.4\n    // In case of HTTP 303, always replace method to be either HEAD or GET\n    if (statusCode === 303 && this.opts.method !== 'HEAD') {\n      this.opts.method = 'GET'\n      if (util.isStream(this.opts.body)) {\n        util.destroy(this.opts.body.on('error', noop))\n      }\n      this.opts.body = null\n    }\n\n    this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) || redirectableStatusCodes.indexOf(statusCode) === -1\n      ? null\n      : headers.location\n\n    if (this.opts.origin) {\n      this.history.push(new URL(this.opts.path, this.opts.origin))\n    }\n\n    if (!this.location) {\n      this.handler.onResponseStart?.(controller, statusCode, headers, statusMessage)\n      return\n    }\n\n    const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n    const path = search ? `${pathname}${search}` : pathname\n\n    // Check for redirect loops by seeing if we've already visited this URL in our history\n    // This catches the case where Client/Pool try to handle cross-origin redirects but fail\n    // and keep redirecting to the same URL in an infinite loop\n    const redirectUrlString = `${origin}${path}`\n    for (const historyUrl of this.history) {\n      if (historyUrl.toString() === redirectUrlString) {\n        throw new InvalidArgumentError(`Redirect loop detected. Cannot redirect to ${origin}. This typically happens when using a Client or Pool with cross-origin redirects. Use an Agent for cross-origin redirects.`)\n      }\n    }\n\n    // Remove headers referring to the original URL.\n    // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n    // https://tools.ietf.org/html/rfc7231#section-6.4\n    this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n    this.opts.path = path\n    this.opts.origin = origin\n    this.opts.query = null\n  }\n\n  onResponseData (controller, chunk) {\n    if (this.location) {\n      /*\n        https://tools.ietf.org/html/rfc7231#section-6.4\n\n        TLDR: undici always ignores 3xx response bodies.\n\n        Redirection is used to serve the requested resource from another URL, so it assumes that\n        no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n        For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n        (which means it's optional and not mandated) contain just an hyperlink to the value of\n        the Location response header, so the body can be ignored safely.\n\n        For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n        response header AND a response body with the other possible location to follow.\n        Since the spec explicitly chooses not to specify a format for such body and leave it to\n        servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n      */\n    } else {\n      this.handler.onResponseData?.(controller, chunk)\n    }\n  }\n\n  onResponseEnd (controller, trailers) {\n    if (this.location) {\n      /*\n        https://tools.ietf.org/html/rfc7231#section-6.4\n\n        TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n        and neither are useful if present.\n\n        See comment on onData method above for more detailed information.\n      */\n      this.dispatch(this.opts, this)\n    } else {\n      this.handler.onResponseEnd(controller, trailers)\n    }\n  }\n\n  onResponseError (controller, error) {\n    this.handler.onResponseError?.(controller, error)\n  }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n  if (header.length === 4) {\n    return util.headerNameToString(header) === 'host'\n  }\n  if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n    return true\n  }\n  if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n    const name = util.headerNameToString(header)\n    return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n  }\n  return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n  const ret = []\n  if (Array.isArray(headers)) {\n    for (let i = 0; i < headers.length; i += 2) {\n      if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n        ret.push(headers[i], headers[i + 1])\n      }\n    }\n  } else if (headers && typeof headers === 'object') {\n    const entries = util.hasSafeIterator(headers) ? headers : Object.entries(headers)\n\n    for (const [key, value] of entries) {\n      if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n        ret.push(key, value)\n      }\n    }\n  } else {\n    assert(headers == null, 'headers must be an object or an array')\n  }\n  return ret\n}\n\nmodule.exports = RedirectHandler\n","'use strict'\n\nconst RedirectHandler = require('../handler/redirect-handler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections } = {}) {\n  return (dispatch) => {\n    return function Intercept (opts, handler) {\n      const { maxRedirections = defaultMaxRedirections, ...rest } = opts\n\n      if (maxRedirections == null || maxRedirections === 0) {\n        return dispatch(opts, handler)\n      }\n\n      const dispatchOpts = { ...rest } // Stop sub dispatcher from also redirecting.\n      const redirectHandler = new RedirectHandler(dispatch, maxRedirections, dispatchOpts, handler)\n      return dispatch(dispatchOpts, redirectHandler)\n    }\n  }\n}\n\nmodule.exports = createRedirectInterceptor\n","'use strict'\n\n// const { parseHeaders } = require('../core/util')\nconst DecoratorHandler = require('../handler/decorator-handler')\nconst { ResponseError } = require('../core/errors')\n\nclass ResponseErrorHandler extends DecoratorHandler {\n  #statusCode\n  #contentType\n  #decoder\n  #headers\n  #body\n\n  constructor (_opts, { handler }) {\n    super(handler)\n  }\n\n  #checkContentType (contentType) {\n    return (this.#contentType ?? '').indexOf(contentType) === 0\n  }\n\n  onRequestStart (controller, context) {\n    this.#statusCode = 0\n    this.#contentType = null\n    this.#decoder = null\n    this.#headers = null\n    this.#body = ''\n\n    return super.onRequestStart(controller, context)\n  }\n\n  onResponseStart (controller, statusCode, headers, statusMessage) {\n    this.#statusCode = statusCode\n    this.#headers = headers\n    this.#contentType = headers['content-type']\n\n    if (this.#statusCode < 400) {\n      return super.onResponseStart(controller, statusCode, headers, statusMessage)\n    }\n\n    if (this.#checkContentType('application/json') || this.#checkContentType('text/plain')) {\n      this.#decoder = new TextDecoder('utf-8')\n    }\n  }\n\n  onResponseData (controller, chunk) {\n    if (this.#statusCode < 400) {\n      return super.onResponseData(controller, chunk)\n    }\n\n    this.#body += this.#decoder?.decode(chunk, { stream: true }) ?? ''\n  }\n\n  onResponseEnd (controller, trailers) {\n    if (this.#statusCode >= 400) {\n      this.#body += this.#decoder?.decode(undefined, { stream: false }) ?? ''\n\n      if (this.#checkContentType('application/json')) {\n        try {\n          this.#body = JSON.parse(this.#body)\n        } catch {\n          // Do nothing...\n        }\n      }\n\n      let err\n      const stackTraceLimit = Error.stackTraceLimit\n      Error.stackTraceLimit = 0\n      try {\n        err = new ResponseError('Response Error', this.#statusCode, {\n          body: this.#body,\n          headers: this.#headers\n        })\n      } finally {\n        Error.stackTraceLimit = stackTraceLimit\n      }\n\n      super.onResponseError(controller, err)\n    } else {\n      super.onResponseEnd(controller, trailers)\n    }\n  }\n\n  onResponseError (controller, err) {\n    super.onResponseError(controller, err)\n  }\n}\n\nmodule.exports = () => {\n  return (dispatch) => {\n    return function Intercept (opts, handler) {\n      return dispatch(opts, new ResponseErrorHandler(opts, { handler }))\n    }\n  }\n}\n","'use strict'\nconst RetryHandler = require('../handler/retry-handler')\n\nmodule.exports = globalOpts => {\n  return dispatch => {\n    return function retryInterceptor (opts, handler) {\n      return dispatch(\n        opts,\n        new RetryHandler(\n          { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } },\n          {\n            handler,\n            dispatch\n          }\n        )\n      )\n    }\n  }\n}\n","'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError } = require('../core/errors')\nconst DecoratorHandler = require('../handler/decorator-handler')\n\nclass DumpHandler extends DecoratorHandler {\n  #maxSize = 1024 * 1024\n  #dumped = false\n  #size = 0\n  #controller = null\n  aborted = false\n  reason = false\n\n  constructor ({ maxSize, signal }, handler) {\n    if (maxSize != null && (!Number.isFinite(maxSize) || maxSize < 1)) {\n      throw new InvalidArgumentError('maxSize must be a number greater than 0')\n    }\n\n    super(handler)\n\n    this.#maxSize = maxSize ?? this.#maxSize\n    // this.#handler = handler\n  }\n\n  #abort (reason) {\n    this.aborted = true\n    this.reason = reason\n  }\n\n  onRequestStart (controller, context) {\n    controller.abort = this.#abort.bind(this)\n    this.#controller = controller\n\n    return super.onRequestStart(controller, context)\n  }\n\n  onResponseStart (controller, statusCode, headers, statusMessage) {\n    const contentLength = headers['content-length']\n\n    if (contentLength != null && contentLength > this.#maxSize) {\n      throw new RequestAbortedError(\n        `Response size (${contentLength}) larger than maxSize (${\n          this.#maxSize\n        })`\n      )\n    }\n\n    if (this.aborted === true) {\n      return true\n    }\n\n    return super.onResponseStart(controller, statusCode, headers, statusMessage)\n  }\n\n  onResponseError (controller, err) {\n    if (this.#dumped) {\n      return\n    }\n\n    // On network errors before connect, controller will be null\n    err = this.#controller?.reason ?? err\n\n    super.onResponseError(controller, err)\n  }\n\n  onResponseData (controller, chunk) {\n    this.#size = this.#size + chunk.length\n\n    if (this.#size >= this.#maxSize) {\n      this.#dumped = true\n\n      if (this.aborted === true) {\n        super.onResponseError(controller, this.reason)\n      } else {\n        super.onResponseEnd(controller, {})\n      }\n    }\n\n    return true\n  }\n\n  onResponseEnd (controller, trailers) {\n    if (this.#dumped) {\n      return\n    }\n\n    if (this.#controller.aborted === true) {\n      super.onResponseError(controller, this.reason)\n      return\n    }\n\n    super.onResponseEnd(controller, trailers)\n  }\n}\n\nfunction createDumpInterceptor (\n  { maxSize: defaultMaxSize } = {\n    maxSize: 1024 * 1024\n  }\n) {\n  return dispatch => {\n    return function Intercept (opts, handler) {\n      const { dumpMaxSize = defaultMaxSize } = opts\n\n      const dumpHandler = new DumpHandler({ maxSize: dumpMaxSize, signal: opts.signal }, handler)\n\n      return dispatch(opts, dumpHandler)\n    }\n  }\n}\n\nmodule.exports = createDumpInterceptor\n","'use strict'\nconst { isIP } = require('node:net')\nconst { lookup } = require('node:dns')\nconst DecoratorHandler = require('../handler/decorator-handler')\nconst { InvalidArgumentError, InformationalError } = require('../core/errors')\nconst maxInt = Math.pow(2, 31) - 1\n\nfunction hasSafeIterator (headers) {\n  const prototype = Object.getPrototypeOf(headers)\n  const ownIterator = Object.prototype.hasOwnProperty.call(headers, Symbol.iterator)\n  return ownIterator || (prototype != null && prototype !== Object.prototype && typeof headers[Symbol.iterator] === 'function')\n}\n\nfunction isHostHeader (key) {\n  return typeof key === 'string' && key.toLowerCase() === 'host'\n}\n\nfunction normalizeHeaders (headers) {\n  if (headers == null) {\n    return null\n  }\n\n  if (Array.isArray(headers)) {\n    if (headers.length === 0 || !Array.isArray(headers[0])) {\n      return headers\n    }\n\n    const normalized = []\n    for (const header of headers) {\n      if (Array.isArray(header) && header.length === 2) {\n        normalized.push(header[0], header[1])\n      } else {\n        normalized.push(header)\n      }\n    }\n\n    return normalized\n  }\n\n  if (typeof headers === 'object' && hasSafeIterator(headers)) {\n    const normalized = []\n    for (const header of headers) {\n      if (Array.isArray(header) && header.length === 2) {\n        normalized.push(header[0], header[1])\n      } else {\n        normalized.push(header)\n      }\n    }\n\n    return normalized\n  }\n\n  return headers\n}\n\nfunction hasHostHeader (headers) {\n  if (headers == null) {\n    return false\n  }\n\n  if (Array.isArray(headers)) {\n    if (headers.length === 0) {\n      return false\n    }\n\n    for (let i = 0; i < headers.length; i += 2) {\n      if (isHostHeader(headers[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  if (typeof headers === 'object') {\n    for (const key in headers) {\n      if (isHostHeader(key)) {\n        return true\n      }\n    }\n  }\n\n  return false\n}\n\nfunction withHostHeader (host, headers) {\n  const normalizedHeaders = normalizeHeaders(headers)\n\n  if (hasHostHeader(normalizedHeaders)) {\n    return normalizedHeaders\n  }\n\n  if (Array.isArray(normalizedHeaders)) {\n    return ['host', host, ...normalizedHeaders]\n  }\n\n  if (normalizedHeaders && typeof normalizedHeaders === 'object') {\n    return {\n      host,\n      ...normalizedHeaders\n    }\n  }\n\n  return { host }\n}\n\nclass DNSStorage {\n  #maxItems = 0\n  #records = new Map()\n\n  constructor (opts) {\n    this.#maxItems = opts.maxItems\n  }\n\n  get size () {\n    return this.#records.size\n  }\n\n  get (hostname) {\n    return this.#records.get(hostname) ?? null\n  }\n\n  set (hostname, records) {\n    this.#records.set(hostname, records)\n  }\n\n  delete (hostname) {\n    this.#records.delete(hostname)\n  }\n\n  // Delegate to storage decide can we do more lookups or not\n  full () {\n    return this.size >= this.#maxItems\n  }\n}\n\nclass DNSInstance {\n  #maxTTL = 0\n  #maxItems = 0\n  dualStack = true\n  affinity = null\n  lookup = null\n  pick = null\n  storage = null\n\n  constructor (opts) {\n    this.#maxTTL = opts.maxTTL\n    this.#maxItems = opts.maxItems\n    this.dualStack = opts.dualStack\n    this.affinity = opts.affinity\n    this.lookup = opts.lookup ?? this.#defaultLookup\n    this.pick = opts.pick ?? this.#defaultPick\n    this.storage = opts.storage ?? new DNSStorage(opts)\n  }\n\n  runLookup (origin, opts, cb) {\n    const ips = this.storage.get(origin.hostname)\n\n    // If full, we just return the origin\n    if (ips == null && this.storage.full()) {\n      cb(null, origin)\n      return\n    }\n\n    const newOpts = {\n      affinity: this.affinity,\n      dualStack: this.dualStack,\n      lookup: this.lookup,\n      pick: this.pick,\n      ...opts.dns,\n      maxTTL: this.#maxTTL,\n      maxItems: this.#maxItems\n    }\n\n    // If no IPs we lookup\n    if (ips == null) {\n      this.lookup(origin, newOpts, (err, addresses) => {\n        if (err || addresses == null || addresses.length === 0) {\n          cb(err ?? new InformationalError('No DNS entries found'))\n          return\n        }\n\n        this.setRecords(origin, addresses)\n        const records = this.storage.get(origin.hostname)\n\n        const ip = this.pick(\n          origin,\n          records,\n          newOpts.affinity\n        )\n\n        let port\n        if (typeof ip.port === 'number') {\n          port = `:${ip.port}`\n        } else if (origin.port !== '') {\n          port = `:${origin.port}`\n        } else {\n          port = ''\n        }\n\n        cb(\n          null,\n          new URL(`${origin.protocol}//${\n            ip.family === 6 ? `[${ip.address}]` : ip.address\n          }${port}`)\n        )\n      })\n    } else {\n      // If there's IPs we pick\n      const ip = this.pick(\n        origin,\n        ips,\n        newOpts.affinity\n      )\n\n      // If no IPs we lookup - deleting old records\n      if (ip == null) {\n        this.storage.delete(origin.hostname)\n        this.runLookup(origin, opts, cb)\n        return\n      }\n\n      let port\n      if (typeof ip.port === 'number') {\n        port = `:${ip.port}`\n      } else if (origin.port !== '') {\n        port = `:${origin.port}`\n      } else {\n        port = ''\n      }\n\n      cb(\n        null,\n        new URL(`${origin.protocol}//${\n          ip.family === 6 ? `[${ip.address}]` : ip.address\n        }${port}`)\n      )\n    }\n  }\n\n  #defaultLookup (origin, opts, cb) {\n    lookup(\n      origin.hostname,\n      {\n        all: true,\n        family: this.dualStack === false ? this.affinity : 0,\n        order: 'ipv4first'\n      },\n      (err, addresses) => {\n        if (err) {\n          return cb(err)\n        }\n\n        const results = new Map()\n\n        for (const addr of addresses) {\n          // On linux we found duplicates, we attempt to remove them with\n          // the latest record\n          results.set(`${addr.address}:${addr.family}`, addr)\n        }\n\n        cb(null, results.values())\n      }\n    )\n  }\n\n  #defaultPick (origin, hostnameRecords, affinity) {\n    let ip = null\n    const { records, offset } = hostnameRecords\n\n    let family\n    if (this.dualStack) {\n      if (affinity == null) {\n        // Balance between ip families\n        if (offset == null || offset === maxInt) {\n          hostnameRecords.offset = 0\n          affinity = 4\n        } else {\n          hostnameRecords.offset++\n          affinity = (hostnameRecords.offset & 1) === 1 ? 6 : 4\n        }\n      }\n\n      if (records[affinity] != null && records[affinity].ips.length > 0) {\n        family = records[affinity]\n      } else {\n        family = records[affinity === 4 ? 6 : 4]\n      }\n    } else {\n      family = records[affinity]\n    }\n\n    // If no IPs we return null\n    if (family == null || family.ips.length === 0) {\n      return ip\n    }\n\n    if (family.offset == null || family.offset === maxInt) {\n      family.offset = 0\n    } else {\n      family.offset++\n    }\n\n    const position = family.offset % family.ips.length\n    ip = family.ips[position] ?? null\n\n    if (ip == null) {\n      return ip\n    }\n\n    if (Date.now() - ip.timestamp > ip.ttl) { // record TTL is already in ms\n      // We delete expired records\n      // It is possible that they have different TTL, so we manage them individually\n      family.ips.splice(position, 1)\n      return this.pick(origin, hostnameRecords, affinity)\n    }\n\n    return ip\n  }\n\n  pickFamily (origin, ipFamily) {\n    const records = this.storage.get(origin.hostname)?.records\n    if (!records) {\n      return null\n    }\n\n    const family = records[ipFamily]\n    if (!family) {\n      return null\n    }\n\n    if (family.offset == null || family.offset === maxInt) {\n      family.offset = 0\n    } else {\n      family.offset++\n    }\n\n    const position = family.offset % family.ips.length\n    const ip = family.ips[position] ?? null\n    if (ip == null) {\n      return ip\n    }\n\n    if (Date.now() - ip.timestamp > ip.ttl) { // record TTL is already in ms\n      // We delete expired records\n      // It is possible that they have different TTL, so we manage them individually\n      family.ips.splice(position, 1)\n    }\n\n    return ip\n  }\n\n  setRecords (origin, addresses) {\n    const timestamp = Date.now()\n    const records = { records: { 4: null, 6: null } }\n    let minTTL = this.#maxTTL\n    for (const record of addresses) {\n      record.timestamp = timestamp\n      if (typeof record.ttl === 'number') {\n        // The record TTL is expected to be in ms\n        record.ttl = Math.min(record.ttl, this.#maxTTL)\n        minTTL = Math.min(minTTL, record.ttl)\n      } else {\n        record.ttl = this.#maxTTL\n      }\n\n      const familyRecords = records.records[record.family] ?? { ips: [] }\n\n      familyRecords.ips.push(record)\n      records.records[record.family] = familyRecords\n    }\n\n    // We provide a default TTL if external storage will be used without TTL per record-level support\n    this.storage.set(origin.hostname, records, { ttl: minTTL })\n  }\n\n  deleteRecords (origin) {\n    this.storage.delete(origin.hostname)\n  }\n\n  getHandler (meta, opts) {\n    return new DNSDispatchHandler(this, meta, opts)\n  }\n}\n\nclass DNSDispatchHandler extends DecoratorHandler {\n  #state = null\n  #opts = null\n  #dispatch = null\n  #origin = null\n  #controller = null\n  #newOrigin = null\n  #firstTry = true\n\n  constructor (state, { origin, handler, dispatch, newOrigin }, opts) {\n    super(handler)\n    this.#origin = origin\n    this.#newOrigin = newOrigin\n    this.#opts = { ...opts }\n    this.#state = state\n    this.#dispatch = dispatch\n  }\n\n  onResponseError (controller, err) {\n    switch (err.code) {\n      case 'ETIMEDOUT':\n      case 'ECONNREFUSED': {\n        if (this.#state.dualStack) {\n          if (!this.#firstTry) {\n            super.onResponseError(controller, err)\n            return\n          }\n          this.#firstTry = false\n\n          // Pick an ip address from the other family\n          const otherFamily = this.#newOrigin.hostname[0] === '[' ? 4 : 6\n          const ip = this.#state.pickFamily(this.#origin, otherFamily)\n          if (ip == null) {\n            super.onResponseError(controller, err)\n            return\n          }\n\n          let port\n          if (typeof ip.port === 'number') {\n            port = `:${ip.port}`\n          } else if (this.#origin.port !== '') {\n            port = `:${this.#origin.port}`\n          } else {\n            port = ''\n          }\n\n          const dispatchOpts = {\n            ...this.#opts,\n            origin: `${this.#origin.protocol}//${\n              ip.family === 6 ? `[${ip.address}]` : ip.address\n            }${port}`,\n            headers: withHostHeader(this.#origin.host, this.#opts.headers)\n          }\n          this.#dispatch(dispatchOpts, this)\n          return\n        }\n\n        // if dual-stack disabled, we error out\n        super.onResponseError(controller, err)\n        break\n      }\n      case 'ENOTFOUND':\n        this.#state.deleteRecords(this.#origin)\n        super.onResponseError(controller, err)\n        break\n      default:\n        super.onResponseError(controller, err)\n        break\n    }\n  }\n}\n\nmodule.exports = interceptorOpts => {\n  if (\n    interceptorOpts?.maxTTL != null &&\n    (typeof interceptorOpts?.maxTTL !== 'number' || interceptorOpts?.maxTTL < 0)\n  ) {\n    throw new InvalidArgumentError('Invalid maxTTL. Must be a positive number')\n  }\n\n  if (\n    interceptorOpts?.maxItems != null &&\n    (typeof interceptorOpts?.maxItems !== 'number' ||\n      interceptorOpts?.maxItems < 1)\n  ) {\n    throw new InvalidArgumentError(\n      'Invalid maxItems. Must be a positive number and greater than zero'\n    )\n  }\n\n  if (\n    interceptorOpts?.affinity != null &&\n    interceptorOpts?.affinity !== 4 &&\n    interceptorOpts?.affinity !== 6\n  ) {\n    throw new InvalidArgumentError('Invalid affinity. Must be either 4 or 6')\n  }\n\n  if (\n    interceptorOpts?.dualStack != null &&\n    typeof interceptorOpts?.dualStack !== 'boolean'\n  ) {\n    throw new InvalidArgumentError('Invalid dualStack. Must be a boolean')\n  }\n\n  if (\n    interceptorOpts?.lookup != null &&\n    typeof interceptorOpts?.lookup !== 'function'\n  ) {\n    throw new InvalidArgumentError('Invalid lookup. Must be a function')\n  }\n\n  if (\n    interceptorOpts?.pick != null &&\n    typeof interceptorOpts?.pick !== 'function'\n  ) {\n    throw new InvalidArgumentError('Invalid pick. Must be a function')\n  }\n\n  if (\n    interceptorOpts?.storage != null &&\n    (typeof interceptorOpts?.storage?.get !== 'function' ||\n      typeof interceptorOpts?.storage?.set !== 'function' ||\n      typeof interceptorOpts?.storage?.full !== 'function' ||\n      typeof interceptorOpts?.storage?.delete !== 'function'\n    )\n  ) {\n    throw new InvalidArgumentError('Invalid storage. Must be a object with methods: { get, set, full, delete }')\n  }\n\n  const dualStack = interceptorOpts?.dualStack ?? true\n  let affinity\n  if (dualStack) {\n    affinity = interceptorOpts?.affinity ?? null\n  } else {\n    affinity = interceptorOpts?.affinity ?? 4\n  }\n\n  const opts = {\n    maxTTL: interceptorOpts?.maxTTL ?? 10e3, // Expressed in ms\n    lookup: interceptorOpts?.lookup ?? null,\n    pick: interceptorOpts?.pick ?? null,\n    dualStack,\n    affinity,\n    maxItems: interceptorOpts?.maxItems ?? Infinity,\n    storage: interceptorOpts?.storage\n  }\n\n  const instance = new DNSInstance(opts)\n\n  return dispatch => {\n    return function dnsInterceptor (origDispatchOpts, handler) {\n      const origin =\n        origDispatchOpts.origin.constructor === URL\n          ? origDispatchOpts.origin\n          : new URL(origDispatchOpts.origin)\n\n      if (isIP(origin.hostname) !== 0) {\n        return dispatch(origDispatchOpts, handler)\n      }\n\n      instance.runLookup(origin, origDispatchOpts, (err, newOrigin) => {\n        if (err) {\n          return handler.onResponseError(null, err)\n        }\n\n        const dispatchOpts = {\n          ...origDispatchOpts,\n          servername: origin.hostname, // For SNI on TLS\n          origin: newOrigin.origin,\n          headers: withHostHeader(origin.host, origDispatchOpts.headers)\n        }\n\n        dispatch(\n          dispatchOpts,\n          instance.getHandler(\n            { origin, dispatch, handler, newOrigin },\n            origDispatchOpts\n          )\n        )\n      })\n\n      return true\n    }\n  }\n}\n","'use strict'\n\nconst {\n  safeHTTPMethods,\n  pathHasQueryOrFragment,\n  hasSafeIterator\n} = require('../core/util')\n\nconst { serializePathWithQuery } = require('../core/util')\n\n/**\n * @param {import('../../types/dispatcher.d.ts').default.DispatchOptions} opts\n */\nfunction makeCacheKey (opts) {\n  if (!opts.origin) {\n    throw new Error('opts.origin is undefined')\n  }\n\n  let fullPath = opts.path || '/'\n\n  if (opts.query && !pathHasQueryOrFragment(fullPath)) {\n    fullPath = serializePathWithQuery(fullPath, opts.query)\n  }\n\n  return {\n    origin: opts.origin.toString(),\n    method: opts.method,\n    path: fullPath,\n    headers: opts.headers\n  }\n}\n\n/**\n * @param {Record<string, string[] | string>}\n * @returns {Record<string, string[] | string>}\n */\nfunction normalizeHeaders (opts) {\n  let headers\n  if (opts.headers == null) {\n    headers = {}\n  } else if (typeof opts.headers === 'object') {\n    headers = {}\n\n    if (hasSafeIterator(opts.headers)) {\n      for (const x of opts.headers) {\n        if (!Array.isArray(x)) {\n          throw new Error('opts.headers is not a valid header map')\n        }\n        const [key, val] = x\n        if (typeof key !== 'string' || typeof val !== 'string') {\n          throw new Error('opts.headers is not a valid header map')\n        }\n        headers[key.toLowerCase()] = val\n      }\n    } else {\n      for (const key of Object.keys(opts.headers)) {\n        headers[key.toLowerCase()] = opts.headers[key]\n      }\n    }\n  } else {\n    throw new Error('opts.headers is not an object')\n  }\n\n  return headers\n}\n\n/**\n * @param {any} key\n */\nfunction assertCacheKey (key) {\n  if (typeof key !== 'object') {\n    throw new TypeError(`expected key to be object, got ${typeof key}`)\n  }\n\n  for (const property of ['origin', 'method', 'path']) {\n    if (typeof key[property] !== 'string') {\n      throw new TypeError(`expected key.${property} to be string, got ${typeof key[property]}`)\n    }\n  }\n\n  if (key.headers !== undefined && typeof key.headers !== 'object') {\n    throw new TypeError(`expected headers to be object, got ${typeof key}`)\n  }\n}\n\n/**\n * @param {any} value\n */\nfunction assertCacheValue (value) {\n  if (typeof value !== 'object') {\n    throw new TypeError(`expected value to be object, got ${typeof value}`)\n  }\n\n  for (const property of ['statusCode', 'cachedAt', 'staleAt', 'deleteAt']) {\n    if (typeof value[property] !== 'number') {\n      throw new TypeError(`expected value.${property} to be number, got ${typeof value[property]}`)\n    }\n  }\n\n  if (typeof value.statusMessage !== 'string') {\n    throw new TypeError(`expected value.statusMessage to be string, got ${typeof value.statusMessage}`)\n  }\n\n  if (value.headers != null && typeof value.headers !== 'object') {\n    throw new TypeError(`expected value.rawHeaders to be object, got ${typeof value.headers}`)\n  }\n\n  if (value.vary !== undefined && typeof value.vary !== 'object') {\n    throw new TypeError(`expected value.vary to be object, got ${typeof value.vary}`)\n  }\n\n  if (value.etag !== undefined && typeof value.etag !== 'string') {\n    throw new TypeError(`expected value.etag to be string, got ${typeof value.etag}`)\n  }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc9111.html#name-cache-control\n * @see https://www.iana.org/assignments/http-cache-directives/http-cache-directives.xhtml\n\n * @param {string | string[]} header\n * @returns {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives}\n */\nfunction parseCacheControlHeader (header) {\n  /**\n   * @type {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives}\n   */\n  const output = {}\n\n  let directives\n  if (Array.isArray(header)) {\n    directives = []\n\n    for (const directive of header) {\n      directives.push(...directive.split(','))\n    }\n  } else {\n    directives = header.split(',')\n  }\n\n  for (let i = 0; i < directives.length; i++) {\n    const directive = directives[i].toLowerCase()\n    const keyValueDelimiter = directive.indexOf('=')\n\n    let key\n    let value\n    if (keyValueDelimiter !== -1) {\n      key = directive.substring(0, keyValueDelimiter).trimStart()\n      value = directive.substring(keyValueDelimiter + 1)\n    } else {\n      key = directive.trim()\n    }\n\n    switch (key) {\n      case 'min-fresh':\n      case 'max-stale':\n      case 'max-age':\n      case 's-maxage':\n      case 'stale-while-revalidate':\n      case 'stale-if-error': {\n        if (value === undefined || value[0] === ' ') {\n          continue\n        }\n\n        if (\n          value.length >= 2 &&\n          value[0] === '\"' &&\n          value[value.length - 1] === '\"'\n        ) {\n          value = value.substring(1, value.length - 1)\n        }\n\n        const parsedValue = parseInt(value, 10)\n        // eslint-disable-next-line no-self-compare\n        if (parsedValue !== parsedValue) {\n          continue\n        }\n\n        if (key === 'max-age' && key in output && output[key] >= parsedValue) {\n          continue\n        }\n\n        output[key] = parsedValue\n\n        break\n      }\n      case 'private':\n      case 'no-cache': {\n        if (value) {\n          // The private and no-cache directives can be unqualified (aka just\n          //  `private` or `no-cache`) or qualified (w/ a value). When they're\n          //  qualified, it's a list of headers like `no-cache=header1`,\n          //  `no-cache=\"header1\"`, or `no-cache=\"header1, header2\"`\n          // If we're given multiple headers, the comma messes us up since\n          //  we split the full header by commas. So, let's loop through the\n          //  remaining parts in front of us until we find one that ends in a\n          //  quote. We can then just splice all of the parts in between the\n          //  starting quote and the ending quote out of the directives array\n          //  and continue parsing like normal.\n          // https://www.rfc-editor.org/rfc/rfc9111.html#name-no-cache-2\n          if (value[0] === '\"') {\n            // Something like `no-cache=\"some-header\"` OR `no-cache=\"some-header, another-header\"`.\n\n            // Add the first header on and cut off the leading quote\n            const headers = [value.substring(1)]\n\n            let foundEndingQuote = value[value.length - 1] === '\"'\n            if (!foundEndingQuote) {\n              // Something like `no-cache=\"some-header, another-header\"`\n              //  This can still be something invalid, e.g. `no-cache=\"some-header, ...`\n              for (let j = i + 1; j < directives.length; j++) {\n                const nextPart = directives[j]\n                const nextPartLength = nextPart.length\n\n                headers.push(nextPart.trim())\n\n                if (nextPartLength !== 0 && nextPart[nextPartLength - 1] === '\"') {\n                  foundEndingQuote = true\n                  break\n                }\n              }\n            }\n\n            if (foundEndingQuote) {\n              let lastHeader = headers[headers.length - 1]\n              if (lastHeader[lastHeader.length - 1] === '\"') {\n                lastHeader = lastHeader.substring(0, lastHeader.length - 1)\n                headers[headers.length - 1] = lastHeader\n              }\n\n              for (let j = 0; j < headers.length; j++) {\n                headers[j] = headers[j].trim()\n              }\n\n              if (key in output) {\n                output[key] = output[key].concat(headers)\n              } else {\n                output[key] = headers\n              }\n            }\n          } else {\n            // Something like `no-cache=\"some-header\"`\n            const fieldName = value.trim()\n\n            if (key in output) {\n              output[key] = output[key].concat(fieldName)\n            } else {\n              output[key] = [fieldName]\n            }\n          }\n\n          break\n        }\n      }\n      // eslint-disable-next-line no-fallthrough\n      case 'public':\n      case 'no-store':\n      case 'must-revalidate':\n      case 'proxy-revalidate':\n      case 'immutable':\n      case 'no-transform':\n      case 'must-understand':\n      case 'only-if-cached':\n        if (value) {\n          // These are qualified (something like `public=...`) when they aren't\n          //  allowed to be, skip\n          continue\n        }\n\n        output[key] = true\n        break\n      default:\n        // Ignore unknown directives as per https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.3-1\n        continue\n    }\n  }\n\n  return output\n}\n\n/**\n * @param {string | string[]} varyHeader Vary header from the server\n * @param {Record<string, string | string[]>} headers Request headers\n * @returns {Record<string, string | string[]>}\n */\nfunction parseVaryHeader (varyHeader, headers) {\n  if (typeof varyHeader === 'string' && varyHeader.includes('*')) {\n    return headers\n  }\n\n  const output = /** @type {Record<string, string | string[] | null>} */ ({})\n\n  const varyingHeaders = typeof varyHeader === 'string'\n    ? varyHeader.split(',')\n    : varyHeader\n\n  for (const header of varyingHeaders) {\n    const trimmedHeader = header.trim().toLowerCase()\n\n    output[trimmedHeader] = headers[trimmedHeader] ?? null\n  }\n\n  return output\n}\n\n/**\n * Note: this deviates from the spec a little. Empty etags (\"\", W/\"\") are valid,\n *  however, including them in cached resposnes serves little to no purpose.\n *\n * @see https://www.rfc-editor.org/rfc/rfc9110.html#name-etag\n *\n * @param {string} etag\n * @returns {boolean}\n */\nfunction isEtagUsable (etag) {\n  if (etag.length <= 2) {\n    // Shortest an etag can be is two chars (just \"\"). This is where we deviate\n    //  from the spec requiring a min of 3 chars however\n    return false\n  }\n\n  if (etag[0] === '\"' && etag[etag.length - 1] === '\"') {\n    // ETag: \"\"asd123\"\" or ETag: \"W/\"asd123\"\", kinda undefined behavior in the\n    //  spec. Some servers will accept these while others don't.\n    // ETag: \"asd123\"\n    return !(etag[1] === '\"' || etag.startsWith('\"W/'))\n  }\n\n  if (etag.startsWith('W/\"') && etag[etag.length - 1] === '\"') {\n    // ETag: W/\"\", also where we deviate from the spec & require a min of 3\n    //  chars\n    // ETag: for W/\"\", W/\"asd123\"\n    return etag.length !== 4\n  }\n\n  // Anything else\n  return false\n}\n\n/**\n * @param {unknown} store\n * @returns {asserts store is import('../../types/cache-interceptor.d.ts').default.CacheStore}\n */\nfunction assertCacheStore (store, name = 'CacheStore') {\n  if (typeof store !== 'object' || store === null) {\n    throw new TypeError(`expected type of ${name} to be a CacheStore, got ${store === null ? 'null' : typeof store}`)\n  }\n\n  for (const fn of ['get', 'createWriteStream', 'delete']) {\n    if (typeof store[fn] !== 'function') {\n      throw new TypeError(`${name} needs to have a \\`${fn}()\\` function`)\n    }\n  }\n}\n/**\n * @param {unknown} methods\n * @returns {asserts methods is import('../../types/cache-interceptor.d.ts').default.CacheMethods[]}\n */\nfunction assertCacheMethods (methods, name = 'CacheMethods') {\n  if (!Array.isArray(methods)) {\n    throw new TypeError(`expected type of ${name} needs to be an array, got ${methods === null ? 'null' : typeof methods}`)\n  }\n\n  if (methods.length === 0) {\n    throw new TypeError(`${name} needs to have at least one method`)\n  }\n\n  for (const method of methods) {\n    if (!safeHTTPMethods.includes(method)) {\n      throw new TypeError(`element of ${name}-array needs to be one of following values: ${safeHTTPMethods.join(', ')}, got ${method}`)\n    }\n  }\n}\n\n/**\n * Creates a string key for request deduplication purposes.\n * This key is used to identify in-flight requests that can be shared.\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} cacheKey\n * @param {Set<string>} [excludeHeaders] Set of lowercase header names to exclude from the key\n * @returns {string}\n */\nfunction makeDeduplicationKey (cacheKey, excludeHeaders) {\n  // Use JSON.stringify to produce a collision-resistant key.\n  // Previous format used `:` and `=` delimiters without escaping, which\n  // allowed different header sets to produce identical keys (e.g.\n  // {a:\"x:b=y\"} vs {a:\"x\", b:\"y\"}). See: https://github.com/nodejs/undici/issues/5012\n  const headers = {}\n\n  if (cacheKey.headers) {\n    const sortedHeaders = Object.keys(cacheKey.headers).sort()\n    for (const header of sortedHeaders) {\n      // Skip excluded headers\n      if (excludeHeaders?.has(header.toLowerCase())) {\n        continue\n      }\n      headers[header] = cacheKey.headers[header]\n    }\n  }\n\n  return JSON.stringify([cacheKey.origin, cacheKey.method, cacheKey.path, headers])\n}\n\nmodule.exports = {\n  makeCacheKey,\n  normalizeHeaders,\n  assertCacheKey,\n  assertCacheValue,\n  parseCacheControlHeader,\n  parseVaryHeader,\n  isEtagUsable,\n  assertCacheMethods,\n  assertCacheStore,\n  makeDeduplicationKey\n}\n","'use strict'\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc9110.html#name-date-time-formats\n *\n * @param {string} date\n * @returns {Date | undefined}\n */\nfunction parseHttpDate (date) {\n  // Sun, 06 Nov 1994 08:49:37 GMT    ; IMF-fixdate\n  // Sun Nov  6 08:49:37 1994         ; ANSI C's asctime() format\n  // Sunday, 06-Nov-94 08:49:37 GMT   ; obsolete RFC 850 format\n\n  switch (date[3]) {\n    case ',': return parseImfDate(date)\n    case ' ': return parseAscTimeDate(date)\n    default: return parseRfc850Date(date)\n  }\n}\n\n/**\n * @see https://httpwg.org/specs/rfc9110.html#preferred.date.format\n *\n * @param {string} date\n * @returns {Date | undefined}\n */\nfunction parseImfDate (date) {\n  if (\n    date.length !== 29 ||\n    date[4] !== ' ' ||\n    date[7] !== ' ' ||\n    date[11] !== ' ' ||\n    date[16] !== ' ' ||\n    date[19] !== ':' ||\n    date[22] !== ':' ||\n    date[25] !== ' ' ||\n    date[26] !== 'G' ||\n    date[27] !== 'M' ||\n    date[28] !== 'T'\n  ) {\n    return undefined\n  }\n\n  let weekday = -1\n  if (date[0] === 'S' && date[1] === 'u' && date[2] === 'n') { // Sunday\n    weekday = 0\n  } else if (date[0] === 'M' && date[1] === 'o' && date[2] === 'n') { // Monday\n    weekday = 1\n  } else if (date[0] === 'T' && date[1] === 'u' && date[2] === 'e') { // Tuesday\n    weekday = 2\n  } else if (date[0] === 'W' && date[1] === 'e' && date[2] === 'd') { // Wednesday\n    weekday = 3\n  } else if (date[0] === 'T' && date[1] === 'h' && date[2] === 'u') { // Thursday\n    weekday = 4\n  } else if (date[0] === 'F' && date[1] === 'r' && date[2] === 'i') { // Friday\n    weekday = 5\n  } else if (date[0] === 'S' && date[1] === 'a' && date[2] === 't') { // Saturday\n    weekday = 6\n  } else {\n    return undefined // Not a valid day of the week\n  }\n\n  let day = 0\n  if (date[5] === '0') {\n    // Single digit day, e.g. \"Sun Nov 6 08:49:37 1994\"\n    const code = date.charCodeAt(6)\n    if (code < 49 || code > 57) {\n      return undefined // Not a digit\n    }\n    day = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(5)\n    if (code1 < 49 || code1 > 51) {\n      return undefined // Not a digit between 1 and 3\n    }\n    const code2 = date.charCodeAt(6)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    day = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let monthIdx = -1\n  if (\n    (date[8] === 'J' && date[9] === 'a' && date[10] === 'n')\n  ) {\n    monthIdx = 0 // Jan\n  } else if (\n    (date[8] === 'F' && date[9] === 'e' && date[10] === 'b')\n  ) {\n    monthIdx = 1 // Feb\n  } else if (\n    (date[8] === 'M' && date[9] === 'a')\n  ) {\n    if (date[10] === 'r') {\n      monthIdx = 2 // Mar\n    } else if (date[10] === 'y') {\n      monthIdx = 4 // May\n    } else {\n      return undefined // Invalid month\n    }\n  } else if (\n    (date[8] === 'J')\n  ) {\n    if (date[9] === 'a' && date[10] === 'n') {\n      monthIdx = 0 // Jan\n    } else if (date[9] === 'u') {\n      if (date[10] === 'n') {\n        monthIdx = 5 // Jun\n      } else if (date[10] === 'l') {\n        monthIdx = 6 // Jul\n      } else {\n        return undefined // Invalid month\n      }\n    } else {\n      return undefined // Invalid month\n    }\n  } else if (\n    (date[8] === 'A')\n  ) {\n    if (date[9] === 'p' && date[10] === 'r') {\n      monthIdx = 3 // Apr\n    } else if (date[9] === 'u' && date[10] === 'g') {\n      monthIdx = 7 // Aug\n    } else {\n      return undefined // Invalid month\n    }\n  } else if (\n    (date[8] === 'S' && date[9] === 'e' && date[10] === 'p')\n  ) {\n    monthIdx = 8 // Sep\n  } else if (\n    (date[8] === 'O' && date[9] === 'c' && date[10] === 't')\n  ) {\n    monthIdx = 9 // Oct\n  } else if (\n    (date[8] === 'N' && date[9] === 'o' && date[10] === 'v')\n  ) {\n    monthIdx = 10 // Nov\n  } else if (\n    (date[8] === 'D' && date[9] === 'e' && date[10] === 'c')\n  ) {\n    monthIdx = 11 // Dec\n  } else {\n    // Not a valid month\n    return undefined\n  }\n\n  const yearDigit1 = date.charCodeAt(12)\n  if (yearDigit1 < 48 || yearDigit1 > 57) {\n    return undefined // Not a digit\n  }\n  const yearDigit2 = date.charCodeAt(13)\n  if (yearDigit2 < 48 || yearDigit2 > 57) {\n    return undefined // Not a digit\n  }\n  const yearDigit3 = date.charCodeAt(14)\n  if (yearDigit3 < 48 || yearDigit3 > 57) {\n    return undefined // Not a digit\n  }\n  const yearDigit4 = date.charCodeAt(15)\n  if (yearDigit4 < 48 || yearDigit4 > 57) {\n    return undefined // Not a digit\n  }\n  const year = (yearDigit1 - 48) * 1000 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48)\n\n  let hour = 0\n  if (date[17] === '0') {\n    const code = date.charCodeAt(18)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    hour = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(17)\n    if (code1 < 48 || code1 > 50) {\n      return undefined // Not a digit between 0 and 2\n    }\n    const code2 = date.charCodeAt(18)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    if (code1 === 50 && code2 > 51) {\n      return undefined // Hour cannot be greater than 23\n    }\n    hour = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let minute = 0\n  if (date[20] === '0') {\n    const code = date.charCodeAt(21)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    minute = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(20)\n    if (code1 < 48 || code1 > 53) {\n      return undefined // Not a digit between 0 and 5\n    }\n    const code2 = date.charCodeAt(21)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    minute = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let second = 0\n  if (date[23] === '0') {\n    const code = date.charCodeAt(24)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    second = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(23)\n    if (code1 < 48 || code1 > 53) {\n      return undefined // Not a digit between 0 and 5\n    }\n    const code2 = date.charCodeAt(24)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    second = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second))\n  return result.getUTCDay() === weekday ? result : undefined\n}\n\n/**\n * @see https://httpwg.org/specs/rfc9110.html#obsolete.date.formats\n *\n * @param {string} date\n * @returns {Date | undefined}\n */\nfunction parseAscTimeDate (date) {\n  // This is assumed to be in UTC\n\n  if (\n    date.length !== 24 ||\n    date[7] !== ' ' ||\n    date[10] !== ' ' ||\n    date[19] !== ' '\n  ) {\n    return undefined\n  }\n\n  let weekday = -1\n  if (date[0] === 'S' && date[1] === 'u' && date[2] === 'n') { // Sunday\n    weekday = 0\n  } else if (date[0] === 'M' && date[1] === 'o' && date[2] === 'n') { // Monday\n    weekday = 1\n  } else if (date[0] === 'T' && date[1] === 'u' && date[2] === 'e') { // Tuesday\n    weekday = 2\n  } else if (date[0] === 'W' && date[1] === 'e' && date[2] === 'd') { // Wednesday\n    weekday = 3\n  } else if (date[0] === 'T' && date[1] === 'h' && date[2] === 'u') { // Thursday\n    weekday = 4\n  } else if (date[0] === 'F' && date[1] === 'r' && date[2] === 'i') { // Friday\n    weekday = 5\n  } else if (date[0] === 'S' && date[1] === 'a' && date[2] === 't') { // Saturday\n    weekday = 6\n  } else {\n    return undefined // Not a valid day of the week\n  }\n\n  let monthIdx = -1\n  if (\n    (date[4] === 'J' && date[5] === 'a' && date[6] === 'n')\n  ) {\n    monthIdx = 0 // Jan\n  } else if (\n    (date[4] === 'F' && date[5] === 'e' && date[6] === 'b')\n  ) {\n    monthIdx = 1 // Feb\n  } else if (\n    (date[4] === 'M' && date[5] === 'a')\n  ) {\n    if (date[6] === 'r') {\n      monthIdx = 2 // Mar\n    } else if (date[6] === 'y') {\n      monthIdx = 4 // May\n    } else {\n      return undefined // Invalid month\n    }\n  } else if (\n    (date[4] === 'J')\n  ) {\n    if (date[5] === 'a' && date[6] === 'n') {\n      monthIdx = 0 // Jan\n    } else if (date[5] === 'u') {\n      if (date[6] === 'n') {\n        monthIdx = 5 // Jun\n      } else if (date[6] === 'l') {\n        monthIdx = 6 // Jul\n      } else {\n        return undefined // Invalid month\n      }\n    } else {\n      return undefined // Invalid month\n    }\n  } else if (\n    (date[4] === 'A')\n  ) {\n    if (date[5] === 'p' && date[6] === 'r') {\n      monthIdx = 3 // Apr\n    } else if (date[5] === 'u' && date[6] === 'g') {\n      monthIdx = 7 // Aug\n    } else {\n      return undefined // Invalid month\n    }\n  } else if (\n    (date[4] === 'S' && date[5] === 'e' && date[6] === 'p')\n  ) {\n    monthIdx = 8 // Sep\n  } else if (\n    (date[4] === 'O' && date[5] === 'c' && date[6] === 't')\n  ) {\n    monthIdx = 9 // Oct\n  } else if (\n    (date[4] === 'N' && date[5] === 'o' && date[6] === 'v')\n  ) {\n    monthIdx = 10 // Nov\n  } else if (\n    (date[4] === 'D' && date[5] === 'e' && date[6] === 'c')\n  ) {\n    monthIdx = 11 // Dec\n  } else {\n    // Not a valid month\n    return undefined\n  }\n\n  let day = 0\n  if (date[8] === ' ') {\n    // Single digit day, e.g. \"Sun Nov 6 08:49:37 1994\"\n    const code = date.charCodeAt(9)\n    if (code < 49 || code > 57) {\n      return undefined // Not a digit\n    }\n    day = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(8)\n    if (code1 < 49 || code1 > 51) {\n      return undefined // Not a digit between 1 and 3\n    }\n    const code2 = date.charCodeAt(9)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    day = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let hour = 0\n  if (date[11] === '0') {\n    const code = date.charCodeAt(12)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    hour = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(11)\n    if (code1 < 48 || code1 > 50) {\n      return undefined // Not a digit between 0 and 2\n    }\n    const code2 = date.charCodeAt(12)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    if (code1 === 50 && code2 > 51) {\n      return undefined // Hour cannot be greater than 23\n    }\n    hour = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let minute = 0\n  if (date[14] === '0') {\n    const code = date.charCodeAt(15)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    minute = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(14)\n    if (code1 < 48 || code1 > 53) {\n      return undefined // Not a digit between 0 and 5\n    }\n    const code2 = date.charCodeAt(15)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    minute = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let second = 0\n  if (date[17] === '0') {\n    const code = date.charCodeAt(18)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    second = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(17)\n    if (code1 < 48 || code1 > 53) {\n      return undefined // Not a digit between 0 and 5\n    }\n    const code2 = date.charCodeAt(18)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    second = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  const yearDigit1 = date.charCodeAt(20)\n  if (yearDigit1 < 48 || yearDigit1 > 57) {\n    return undefined // Not a digit\n  }\n  const yearDigit2 = date.charCodeAt(21)\n  if (yearDigit2 < 48 || yearDigit2 > 57) {\n    return undefined // Not a digit\n  }\n  const yearDigit3 = date.charCodeAt(22)\n  if (yearDigit3 < 48 || yearDigit3 > 57) {\n    return undefined // Not a digit\n  }\n  const yearDigit4 = date.charCodeAt(23)\n  if (yearDigit4 < 48 || yearDigit4 > 57) {\n    return undefined // Not a digit\n  }\n  const year = (yearDigit1 - 48) * 1000 + (yearDigit2 - 48) * 100 + (yearDigit3 - 48) * 10 + (yearDigit4 - 48)\n\n  const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second))\n  return result.getUTCDay() === weekday ? result : undefined\n}\n\n/**\n * @see https://httpwg.org/specs/rfc9110.html#obsolete.date.formats\n *\n * @param {string} date\n * @returns {Date | undefined}\n */\nfunction parseRfc850Date (date) {\n  let commaIndex = -1\n\n  let weekday = -1\n  if (date[0] === 'S') {\n    if (date[1] === 'u' && date[2] === 'n' && date[3] === 'd' && date[4] === 'a' && date[5] === 'y') {\n      weekday = 0 // Sunday\n      commaIndex = 6\n    } else if (date[1] === 'a' && date[2] === 't' && date[3] === 'u' && date[4] === 'r' && date[5] === 'd' && date[6] === 'a' && date[7] === 'y') {\n      weekday = 6 // Saturday\n      commaIndex = 8\n    }\n  } else if (date[0] === 'M' && date[1] === 'o' && date[2] === 'n' && date[3] === 'd' && date[4] === 'a' && date[5] === 'y') {\n    weekday = 1 // Monday\n    commaIndex = 6\n  } else if (date[0] === 'T') {\n    if (date[1] === 'u' && date[2] === 'e' && date[3] === 's' && date[4] === 'd' && date[5] === 'a' && date[6] === 'y') {\n      weekday = 2 // Tuesday\n      commaIndex = 7\n    } else if (date[1] === 'h' && date[2] === 'u' && date[3] === 'r' && date[4] === 's' && date[5] === 'd' && date[6] === 'a' && date[7] === 'y') {\n      weekday = 4 // Thursday\n      commaIndex = 8\n    }\n  } else if (date[0] === 'W' && date[1] === 'e' && date[2] === 'd' && date[3] === 'n' && date[4] === 'e' && date[5] === 's' && date[6] === 'd' && date[7] === 'a' && date[8] === 'y') {\n    weekday = 3 // Wednesday\n    commaIndex = 9\n  } else if (date[0] === 'F' && date[1] === 'r' && date[2] === 'i' && date[3] === 'd' && date[4] === 'a' && date[5] === 'y') {\n    weekday = 5 // Friday\n    commaIndex = 6\n  } else {\n    // Not a valid day name\n    return undefined\n  }\n\n  if (\n    date[commaIndex] !== ',' ||\n    (date.length - commaIndex - 1) !== 23 ||\n    date[commaIndex + 1] !== ' ' ||\n    date[commaIndex + 4] !== '-' ||\n    date[commaIndex + 8] !== '-' ||\n    date[commaIndex + 11] !== ' ' ||\n    date[commaIndex + 14] !== ':' ||\n    date[commaIndex + 17] !== ':' ||\n    date[commaIndex + 20] !== ' ' ||\n    date[commaIndex + 21] !== 'G' ||\n    date[commaIndex + 22] !== 'M' ||\n    date[commaIndex + 23] !== 'T'\n  ) {\n    return undefined\n  }\n\n  let day = 0\n  if (date[commaIndex + 2] === '0') {\n    // Single digit day, e.g. \"Sun Nov 6 08:49:37 1994\"\n    const code = date.charCodeAt(commaIndex + 3)\n    if (code < 49 || code > 57) {\n      return undefined // Not a digit\n    }\n    day = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(commaIndex + 2)\n    if (code1 < 49 || code1 > 51) {\n      return undefined // Not a digit between 1 and 3\n    }\n    const code2 = date.charCodeAt(commaIndex + 3)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    day = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let monthIdx = -1\n  if (\n    (date[commaIndex + 5] === 'J' && date[commaIndex + 6] === 'a' && date[commaIndex + 7] === 'n')\n  ) {\n    monthIdx = 0 // Jan\n  } else if (\n    (date[commaIndex + 5] === 'F' && date[commaIndex + 6] === 'e' && date[commaIndex + 7] === 'b')\n  ) {\n    monthIdx = 1 // Feb\n  } else if (\n    (date[commaIndex + 5] === 'M' && date[commaIndex + 6] === 'a' && date[commaIndex + 7] === 'r')\n  ) {\n    monthIdx = 2 // Mar\n  } else if (\n    (date[commaIndex + 5] === 'A' && date[commaIndex + 6] === 'p' && date[commaIndex + 7] === 'r')\n  ) {\n    monthIdx = 3 // Apr\n  } else if (\n    (date[commaIndex + 5] === 'M' && date[commaIndex + 6] === 'a' && date[commaIndex + 7] === 'y')\n  ) {\n    monthIdx = 4 // May\n  } else if (\n    (date[commaIndex + 5] === 'J' && date[commaIndex + 6] === 'u' && date[commaIndex + 7] === 'n')\n  ) {\n    monthIdx = 5 // Jun\n  } else if (\n    (date[commaIndex + 5] === 'J' && date[commaIndex + 6] === 'u' && date[commaIndex + 7] === 'l')\n  ) {\n    monthIdx = 6 // Jul\n  } else if (\n    (date[commaIndex + 5] === 'A' && date[commaIndex + 6] === 'u' && date[commaIndex + 7] === 'g')\n  ) {\n    monthIdx = 7 // Aug\n  } else if (\n    (date[commaIndex + 5] === 'S' && date[commaIndex + 6] === 'e' && date[commaIndex + 7] === 'p')\n  ) {\n    monthIdx = 8 // Sep\n  } else if (\n    (date[commaIndex + 5] === 'O' && date[commaIndex + 6] === 'c' && date[commaIndex + 7] === 't')\n  ) {\n    monthIdx = 9 // Oct\n  } else if (\n    (date[commaIndex + 5] === 'N' && date[commaIndex + 6] === 'o' && date[commaIndex + 7] === 'v')\n  ) {\n    monthIdx = 10 // Nov\n  } else if (\n    (date[commaIndex + 5] === 'D' && date[commaIndex + 6] === 'e' && date[commaIndex + 7] === 'c')\n  ) {\n    monthIdx = 11 // Dec\n  } else {\n    // Not a valid month\n    return undefined\n  }\n\n  const yearDigit1 = date.charCodeAt(commaIndex + 9)\n  if (yearDigit1 < 48 || yearDigit1 > 57) {\n    return undefined // Not a digit\n  }\n  const yearDigit2 = date.charCodeAt(commaIndex + 10)\n  if (yearDigit2 < 48 || yearDigit2 > 57) {\n    return undefined // Not a digit\n  }\n\n  let year = (yearDigit1 - 48) * 10 + (yearDigit2 - 48) // Convert ASCII codes to number\n\n  // RFC 6265 states that the year is in the range 1970-2069.\n  // @see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.1\n  //\n  // 3. If the year-value is greater than or equal to 70 and less than or\n  //    equal to 99, increment the year-value by 1900.\n  // 4. If the year-value is greater than or equal to 0 and less than or\n  //    equal to 69, increment the year-value by 2000.\n  year += year < 70 ? 2000 : 1900\n\n  let hour = 0\n  if (date[commaIndex + 12] === '0') {\n    const code = date.charCodeAt(commaIndex + 13)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    hour = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(commaIndex + 12)\n    if (code1 < 48 || code1 > 50) {\n      return undefined // Not a digit between 0 and 2\n    }\n    const code2 = date.charCodeAt(commaIndex + 13)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    if (code1 === 50 && code2 > 51) {\n      return undefined // Hour cannot be greater than 23\n    }\n    hour = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let minute = 0\n  if (date[commaIndex + 15] === '0') {\n    const code = date.charCodeAt(commaIndex + 16)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    minute = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(commaIndex + 15)\n    if (code1 < 48 || code1 > 53) {\n      return undefined // Not a digit between 0 and 5\n    }\n    const code2 = date.charCodeAt(commaIndex + 16)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    minute = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  let second = 0\n  if (date[commaIndex + 18] === '0') {\n    const code = date.charCodeAt(commaIndex + 19)\n    if (code < 48 || code > 57) {\n      return undefined // Not a digit\n    }\n    second = code - 48 // Convert ASCII code to number\n  } else {\n    const code1 = date.charCodeAt(commaIndex + 18)\n    if (code1 < 48 || code1 > 53) {\n      return undefined // Not a digit between 0 and 5\n    }\n    const code2 = date.charCodeAt(commaIndex + 19)\n    if (code2 < 48 || code2 > 57) {\n      return undefined // Not a digit\n    }\n    second = (code1 - 48) * 10 + (code2 - 48) // Convert ASCII codes to number\n  }\n\n  const result = new Date(Date.UTC(year, monthIdx, day, hour, minute, second))\n  return result.getUTCDay() === weekday ? result : undefined\n}\n\nmodule.exports = {\n  parseHttpDate\n}\n","'use strict'\n\nconst util = require('../core/util')\nconst {\n  parseCacheControlHeader,\n  parseVaryHeader,\n  isEtagUsable\n} = require('../util/cache')\nconst { parseHttpDate } = require('../util/date.js')\n\nfunction noop () {}\n\n// Status codes that we can use some heuristics on to cache\nconst HEURISTICALLY_CACHEABLE_STATUS_CODES = [\n  200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 501\n]\n\n// Status codes which semantic is not handled by the cache\n// https://datatracker.ietf.org/doc/html/rfc9111#section-3\n// This list should not grow beyond 206 unless the RFC is updated\n// by a newer one including more. Please introduce another list if\n// implementing caching of responses with the 'must-understand' directive.\nconst NOT_UNDERSTOOD_STATUS_CODES = [\n  206\n]\n\nconst MAX_RESPONSE_AGE = 2147483647000\n\n/**\n * @typedef {import('../../types/dispatcher.d.ts').default.DispatchHandler} DispatchHandler\n *\n * @implements {DispatchHandler}\n */\nclass CacheHandler {\n  /**\n   * @type {import('../../types/cache-interceptor.d.ts').default.CacheKey}\n   */\n  #cacheKey\n\n  /**\n   * @type {import('../../types/cache-interceptor.d.ts').default.CacheHandlerOptions['type']}\n   */\n  #cacheType\n\n  /**\n   * @type {number | undefined}\n   */\n  #cacheByDefault\n\n  /**\n   * @type {import('../../types/cache-interceptor.d.ts').default.CacheStore}\n   */\n  #store\n\n  /**\n   * @type {import('../../types/dispatcher.d.ts').default.DispatchHandler}\n   */\n  #handler\n\n  /**\n   * @type {import('node:stream').Writable | undefined}\n   */\n  #writeStream\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheHandlerOptions} opts\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} cacheKey\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchHandler} handler\n   */\n  constructor ({ store, type, cacheByDefault }, cacheKey, handler) {\n    this.#store = store\n    this.#cacheType = type\n    this.#cacheByDefault = cacheByDefault\n    this.#cacheKey = cacheKey\n    this.#handler = handler\n  }\n\n  onRequestStart (controller, context) {\n    this.#writeStream?.destroy()\n    this.#writeStream = undefined\n    this.#handler.onRequestStart?.(controller, context)\n  }\n\n  onRequestUpgrade (controller, statusCode, headers, socket) {\n    this.#handler.onRequestUpgrade?.(controller, statusCode, headers, socket)\n  }\n\n  /**\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n   * @param {number} statusCode\n   * @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders\n   * @param {string} statusMessage\n   */\n  onResponseStart (\n    controller,\n    statusCode,\n    resHeaders,\n    statusMessage\n  ) {\n    const downstreamOnHeaders = () =>\n      this.#handler.onResponseStart?.(\n        controller,\n        statusCode,\n        resHeaders,\n        statusMessage\n      )\n    const handler = this\n\n    if (\n      !util.safeHTTPMethods.includes(this.#cacheKey.method) &&\n      statusCode >= 200 &&\n      statusCode <= 399\n    ) {\n      // Successful response to an unsafe method, delete it from cache\n      //  https://www.rfc-editor.org/rfc/rfc9111.html#name-invalidating-stored-response\n      try {\n        this.#store.delete(this.#cacheKey)?.catch?.(noop)\n      } catch {\n        // Fail silently\n      }\n      return downstreamOnHeaders()\n    }\n\n    const cacheControlHeader = resHeaders['cache-control']\n    const heuristicallyCacheable = resHeaders['last-modified'] && HEURISTICALLY_CACHEABLE_STATUS_CODES.includes(statusCode)\n    if (\n      !cacheControlHeader &&\n      !resHeaders['expires'] &&\n      !heuristicallyCacheable &&\n      !this.#cacheByDefault\n    ) {\n      // Don't have anything to tell us this response is cachable and we're not\n      //  caching by default\n      return downstreamOnHeaders()\n    }\n\n    const cacheControlDirectives = cacheControlHeader ? parseCacheControlHeader(cacheControlHeader) : {}\n    if (!canCacheResponse(this.#cacheType, statusCode, resHeaders, cacheControlDirectives, this.#cacheKey.headers)) {\n      return downstreamOnHeaders()\n    }\n\n    const now = Date.now()\n    const resAge = resHeaders.age ? getAge(resHeaders.age) : undefined\n    if (resAge && resAge >= MAX_RESPONSE_AGE) {\n      // Response considered stale\n      return downstreamOnHeaders()\n    }\n\n    const resDate = typeof resHeaders.date === 'string'\n      ? parseHttpDate(resHeaders.date)\n      : undefined\n\n    const staleAt =\n      determineStaleAt(this.#cacheType, now, resAge, resHeaders, resDate, cacheControlDirectives) ??\n      this.#cacheByDefault\n    if (staleAt === undefined || (resAge && resAge > staleAt)) {\n      return downstreamOnHeaders()\n    }\n\n    const baseTime = resDate ? resDate.getTime() : now\n    const absoluteStaleAt = staleAt + baseTime\n    if (now >= absoluteStaleAt) {\n      // Response is already stale\n      return downstreamOnHeaders()\n    }\n\n    let varyDirectives\n    if (this.#cacheKey.headers && resHeaders.vary) {\n      varyDirectives = parseVaryHeader(resHeaders.vary, this.#cacheKey.headers)\n      if (!varyDirectives) {\n        // Parse error\n        return downstreamOnHeaders()\n      }\n    }\n\n    const deleteAt = determineDeleteAt(baseTime, cacheControlDirectives, absoluteStaleAt)\n    const strippedHeaders = stripNecessaryHeaders(resHeaders, cacheControlDirectives)\n\n    /**\n     * @type {import('../../types/cache-interceptor.d.ts').default.CacheValue}\n     */\n    const value = {\n      statusCode,\n      statusMessage,\n      headers: strippedHeaders,\n      vary: varyDirectives,\n      cacheControlDirectives,\n      cachedAt: resAge ? now - resAge : now,\n      staleAt: absoluteStaleAt,\n      deleteAt\n    }\n\n    // Not modified, re-use the cached value\n    // https://www.rfc-editor.org/rfc/rfc9111.html#name-handling-304-not-modified\n    if (statusCode === 304) {\n      const handle304 = (cachedValue) => {\n        if (!cachedValue) {\n          // Do not create a new cache entry, as a 304 won't have a body - so cannot be cached.\n          return downstreamOnHeaders()\n        }\n\n        // Re-use the cached value: statuscode, statusmessage, headers and body\n        value.statusCode = cachedValue.statusCode\n        value.statusMessage = cachedValue.statusMessage\n        value.etag = cachedValue.etag\n        value.headers = { ...cachedValue.headers, ...strippedHeaders }\n\n        downstreamOnHeaders()\n\n        this.#writeStream = this.#store.createWriteStream(this.#cacheKey, value)\n\n        if (!this.#writeStream || !cachedValue?.body) {\n          return\n        }\n\n        if (typeof cachedValue.body.values === 'function') {\n          const bodyIterator = cachedValue.body.values()\n\n          const streamCachedBody = () => {\n            for (const chunk of bodyIterator) {\n              const full = this.#writeStream.write(chunk) === false\n              this.#handler.onResponseData?.(controller, chunk)\n              // when stream is full stop writing until we get a 'drain' event\n              if (full) {\n                break\n              }\n            }\n          }\n\n          this.#writeStream\n            .on('error', function () {\n              handler.#writeStream = undefined\n              handler.#store.delete(handler.#cacheKey)\n            })\n            .on('drain', () => {\n              streamCachedBody()\n            })\n            .on('close', function () {\n              if (handler.#writeStream === this) {\n                handler.#writeStream = undefined\n              }\n            })\n\n          streamCachedBody()\n        } else if (typeof cachedValue.body.on === 'function') {\n          // Readable stream body (e.g. from async/remote cache stores)\n          cachedValue.body\n            .on('data', (chunk) => {\n              this.#writeStream.write(chunk)\n              this.#handler.onResponseData?.(controller, chunk)\n            })\n            .on('end', () => {\n              this.#writeStream.end()\n            })\n            .on('error', () => {\n              this.#writeStream = undefined\n              this.#store.delete(this.#cacheKey)\n            })\n\n          this.#writeStream\n            .on('error', function () {\n              handler.#writeStream = undefined\n              handler.#store.delete(handler.#cacheKey)\n            })\n            .on('close', function () {\n              if (handler.#writeStream === this) {\n                handler.#writeStream = undefined\n              }\n            })\n        }\n      }\n\n      /**\n       * @type {import('../../types/cache-interceptor.d.ts').default.CacheValue}\n       */\n      const result = this.#store.get(this.#cacheKey)\n      if (result && typeof result.then === 'function') {\n        result.then(handle304)\n      } else {\n        handle304(result)\n      }\n    } else {\n      if (typeof resHeaders.etag === 'string' && isEtagUsable(resHeaders.etag)) {\n        value.etag = resHeaders.etag\n      }\n\n      this.#writeStream = this.#store.createWriteStream(this.#cacheKey, value)\n\n      if (!this.#writeStream) {\n        return downstreamOnHeaders()\n      }\n\n      this.#writeStream\n        .on('drain', () => controller.resume())\n        .on('error', function () {\n          // TODO (fix): Make error somehow observable?\n          handler.#writeStream = undefined\n\n          // Delete the value in case the cache store is holding onto state from\n          //  the call to createWriteStream\n          handler.#store.delete(handler.#cacheKey)\n        })\n        .on('close', function () {\n          if (handler.#writeStream === this) {\n            handler.#writeStream = undefined\n          }\n\n          // TODO (fix): Should we resume even if was paused downstream?\n          controller.resume()\n        })\n\n      downstreamOnHeaders()\n    }\n  }\n\n  onResponseData (controller, chunk) {\n    if (this.#writeStream?.write(chunk) === false) {\n      controller.pause()\n    }\n\n    this.#handler.onResponseData?.(controller, chunk)\n  }\n\n  onResponseEnd (controller, trailers) {\n    this.#writeStream?.end()\n    this.#handler.onResponseEnd?.(controller, trailers)\n  }\n\n  onResponseError (controller, err) {\n    this.#writeStream?.destroy(err)\n    this.#writeStream = undefined\n    this.#handler.onResponseError?.(controller, err)\n  }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc9111.html#name-storing-responses-to-authen\n *\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheOptions['type']} cacheType\n * @param {number} statusCode\n * @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives} cacheControlDirectives\n * @param {import('../../types/header.d.ts').IncomingHttpHeaders} [reqHeaders]\n */\nfunction canCacheResponse (cacheType, statusCode, resHeaders, cacheControlDirectives, reqHeaders) {\n  // Status code must be final and understood.\n  if (statusCode < 200 || NOT_UNDERSTOOD_STATUS_CODES.includes(statusCode)) {\n    return false\n  }\n  // Responses with neither status codes that are heuristically cacheable, nor \"explicit enough\" caching\n  // directives, are not cacheable. \"Explicit enough\": see https://www.rfc-editor.org/rfc/rfc9111.html#section-3\n  if (!HEURISTICALLY_CACHEABLE_STATUS_CODES.includes(statusCode) && !resHeaders['expires'] &&\n    !cacheControlDirectives.public &&\n    cacheControlDirectives['max-age'] === undefined &&\n    // RFC 9111: a private response directive, if the cache is not shared\n    !(cacheControlDirectives.private && cacheType === 'private') &&\n    !(cacheControlDirectives['s-maxage'] !== undefined && cacheType === 'shared')\n  ) {\n    return false\n  }\n\n  if (cacheControlDirectives['no-store']) {\n    return false\n  }\n\n  if (cacheType === 'shared' && cacheControlDirectives.private === true) {\n    return false\n  }\n\n  // https://www.rfc-editor.org/rfc/rfc9111.html#section-4.1-5\n  if (resHeaders.vary?.includes('*')) {\n    return false\n  }\n\n  // https://www.rfc-editor.org/rfc/rfc9111.html#name-storing-responses-to-authen\n  if (reqHeaders?.authorization) {\n    if (\n      !cacheControlDirectives.public &&\n      !cacheControlDirectives['s-maxage'] &&\n      !cacheControlDirectives['must-revalidate']\n    ) {\n      return false\n    }\n\n    if (typeof reqHeaders.authorization !== 'string') {\n      return false\n    }\n\n    if (\n      Array.isArray(cacheControlDirectives['no-cache']) &&\n      cacheControlDirectives['no-cache'].includes('authorization')\n    ) {\n      return false\n    }\n\n    if (\n      Array.isArray(cacheControlDirectives['private']) &&\n      cacheControlDirectives['private'].includes('authorization')\n    ) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @param {string | string[]} ageHeader\n * @returns {number | undefined}\n */\nfunction getAge (ageHeader) {\n  const age = parseInt(Array.isArray(ageHeader) ? ageHeader[0] : ageHeader)\n\n  return isNaN(age) ? undefined : age * 1000\n}\n\n/**\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheOptions['type']} cacheType\n * @param {number} now\n * @param {number | undefined} age\n * @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders\n * @param {Date | undefined} responseDate\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives} cacheControlDirectives\n *\n * @returns {number | undefined} time that the value is stale at in seconds or undefined if it shouldn't be cached\n */\nfunction determineStaleAt (cacheType, now, age, resHeaders, responseDate, cacheControlDirectives) {\n  if (cacheType === 'shared') {\n    // Prioritize s-maxage since we're a shared cache\n    //  s-maxage > max-age > Expire\n    //  https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.2.10-3\n    const sMaxAge = cacheControlDirectives['s-maxage']\n    if (sMaxAge !== undefined) {\n      return sMaxAge > 0 ? sMaxAge * 1000 : undefined\n    }\n  }\n\n  const maxAge = cacheControlDirectives['max-age']\n  if (maxAge !== undefined) {\n    return maxAge > 0 ? maxAge * 1000 : undefined\n  }\n\n  if (typeof resHeaders.expires === 'string') {\n    // https://www.rfc-editor.org/rfc/rfc9111.html#section-5.3\n    const expiresDate = parseHttpDate(resHeaders.expires)\n    if (expiresDate) {\n      if (now >= expiresDate.getTime()) {\n        return undefined\n      }\n\n      if (responseDate) {\n        if (responseDate >= expiresDate) {\n          return undefined\n        }\n\n        if (age !== undefined && age > (expiresDate - responseDate)) {\n          return undefined\n        }\n      }\n\n      return expiresDate.getTime() - now\n    }\n  }\n\n  if (typeof resHeaders['last-modified'] === 'string') {\n    // https://www.rfc-editor.org/rfc/rfc9111.html#name-calculating-heuristic-fresh\n    const lastModified = new Date(resHeaders['last-modified'])\n    if (isValidDate(lastModified)) {\n      if (lastModified.getTime() >= now) {\n        return undefined\n      }\n\n      const responseAge = now - lastModified.getTime()\n\n      return responseAge * 0.1\n    }\n  }\n\n  if (cacheControlDirectives.immutable) {\n    // https://www.rfc-editor.org/rfc/rfc8246.html#section-2.2\n    return 31536000\n  }\n\n  return undefined\n}\n\n/**\n * @param {number} now\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives} cacheControlDirectives\n * @param {number} staleAt\n */\nfunction determineDeleteAt (now, cacheControlDirectives, staleAt) {\n  let staleWhileRevalidate = -Infinity\n  let staleIfError = -Infinity\n  let immutable = -Infinity\n\n  if (cacheControlDirectives['stale-while-revalidate']) {\n    staleWhileRevalidate = staleAt + (cacheControlDirectives['stale-while-revalidate'] * 1000)\n  }\n\n  if (cacheControlDirectives['stale-if-error']) {\n    staleIfError = staleAt + (cacheControlDirectives['stale-if-error'] * 1000)\n  }\n\n  if (cacheControlDirectives.immutable && staleWhileRevalidate === -Infinity && staleIfError === -Infinity) {\n    immutable = now + 31536000000\n  }\n\n  // When no stale directives or immutable flag, add a revalidation buffer\n  // equal to the freshness lifetime so the entry survives past staleAt long\n  // enough to be revalidated instead of silently disappearing.\n  if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity && immutable === -Infinity) {\n    const freshnessLifetime = staleAt - now\n    return staleAt + freshnessLifetime\n  }\n\n  return Math.max(staleAt, staleWhileRevalidate, staleIfError, immutable)\n}\n\n/**\n * Strips headers required to be removed in cached responses\n * @param {import('../../types/header.d.ts').IncomingHttpHeaders} resHeaders\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives} cacheControlDirectives\n * @returns {Record<string, string | string []>}\n */\nfunction stripNecessaryHeaders (resHeaders, cacheControlDirectives) {\n  const headersToRemove = [\n    'connection',\n    'proxy-authenticate',\n    'proxy-authentication-info',\n    'proxy-authorization',\n    'proxy-connection',\n    'te',\n    'transfer-encoding',\n    'upgrade',\n    // We'll add age back when serving it\n    'age'\n  ]\n\n  if (resHeaders['connection']) {\n    if (Array.isArray(resHeaders['connection'])) {\n      // connection: a\n      // connection: b\n      headersToRemove.push(...resHeaders['connection'].map(header => header.trim()))\n    } else {\n      // connection: a, b\n      headersToRemove.push(...resHeaders['connection'].split(',').map(header => header.trim()))\n    }\n  }\n\n  if (Array.isArray(cacheControlDirectives['no-cache'])) {\n    headersToRemove.push(...cacheControlDirectives['no-cache'])\n  }\n\n  if (Array.isArray(cacheControlDirectives['private'])) {\n    headersToRemove.push(...cacheControlDirectives['private'])\n  }\n\n  let strippedHeaders\n  for (const headerName of headersToRemove) {\n    if (resHeaders[headerName]) {\n      strippedHeaders ??= { ...resHeaders }\n      delete strippedHeaders[headerName]\n    }\n  }\n\n  return strippedHeaders ?? resHeaders\n}\n\n/**\n * @param {Date} date\n * @returns {boolean}\n */\nfunction isValidDate (date) {\n  return date instanceof Date && Number.isFinite(date.valueOf())\n}\n\nmodule.exports = CacheHandler\n","'use strict'\n\nconst { Writable } = require('node:stream')\nconst { EventEmitter } = require('node:events')\nconst { assertCacheKey, assertCacheValue } = require('../util/cache.js')\n\n/**\n * @typedef {import('../../types/cache-interceptor.d.ts').default.CacheKey} CacheKey\n * @typedef {import('../../types/cache-interceptor.d.ts').default.CacheValue} CacheValue\n * @typedef {import('../../types/cache-interceptor.d.ts').default.CacheStore} CacheStore\n * @typedef {import('../../types/cache-interceptor.d.ts').default.GetResult} GetResult\n */\n\n/**\n * @implements {CacheStore}\n * @extends {EventEmitter}\n */\nclass MemoryCacheStore extends EventEmitter {\n  #maxCount = 1024\n  #maxSize = 104857600 // 100MB\n  #maxEntrySize = 5242880 // 5MB\n\n  #size = 0\n  #count = 0\n  #entries = new Map()\n  #hasEmittedMaxSizeEvent = false\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.MemoryCacheStoreOpts | undefined} [opts]\n   */\n  constructor (opts) {\n    super()\n    if (opts) {\n      if (typeof opts !== 'object') {\n        throw new TypeError('MemoryCacheStore options must be an object')\n      }\n\n      if (opts.maxCount !== undefined) {\n        if (\n          typeof opts.maxCount !== 'number' ||\n          !Number.isInteger(opts.maxCount) ||\n          opts.maxCount < 0\n        ) {\n          throw new TypeError('MemoryCacheStore options.maxCount must be a non-negative integer')\n        }\n        this.#maxCount = opts.maxCount\n      }\n\n      if (opts.maxSize !== undefined) {\n        if (\n          typeof opts.maxSize !== 'number' ||\n          !Number.isInteger(opts.maxSize) ||\n          opts.maxSize < 0\n        ) {\n          throw new TypeError('MemoryCacheStore options.maxSize must be a non-negative integer')\n        }\n        this.#maxSize = opts.maxSize\n      }\n\n      if (opts.maxEntrySize !== undefined) {\n        if (\n          typeof opts.maxEntrySize !== 'number' ||\n          !Number.isInteger(opts.maxEntrySize) ||\n          opts.maxEntrySize < 0\n        ) {\n          throw new TypeError('MemoryCacheStore options.maxEntrySize must be a non-negative integer')\n        }\n        this.#maxEntrySize = opts.maxEntrySize\n      }\n    }\n  }\n\n  /**\n   * Get the current size of the cache in bytes\n   * @returns {number} The current size of the cache in bytes\n   */\n  get size () {\n    return this.#size\n  }\n\n  /**\n   * Check if the cache is full (either max size or max count reached)\n   * @returns {boolean} True if the cache is full, false otherwise\n   */\n  isFull () {\n    return this.#size >= this.#maxSize || this.#count >= this.#maxCount\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} req\n   * @returns {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined}\n   */\n  get (key) {\n    assertCacheKey(key)\n\n    const topLevelKey = `${key.origin}:${key.path}`\n\n    const now = Date.now()\n    const entries = this.#entries.get(topLevelKey)\n\n    const entry = entries ? findEntry(key, entries, now) : null\n\n    return entry == null\n      ? undefined\n      : {\n          statusMessage: entry.statusMessage,\n          statusCode: entry.statusCode,\n          headers: entry.headers,\n          body: entry.body,\n          vary: entry.vary ? entry.vary : undefined,\n          etag: entry.etag,\n          cacheControlDirectives: entry.cacheControlDirectives,\n          cachedAt: entry.cachedAt,\n          staleAt: entry.staleAt,\n          deleteAt: entry.deleteAt\n        }\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheValue} val\n   * @returns {Writable | undefined}\n   */\n  createWriteStream (key, val) {\n    assertCacheKey(key)\n    assertCacheValue(val)\n\n    const topLevelKey = `${key.origin}:${key.path}`\n\n    const store = this\n    const entry = { ...key, ...val, body: [], size: 0 }\n\n    return new Writable({\n      write (chunk, encoding, callback) {\n        if (typeof chunk === 'string') {\n          chunk = Buffer.from(chunk, encoding)\n        }\n\n        entry.size += chunk.byteLength\n\n        if (entry.size >= store.#maxEntrySize) {\n          this.destroy()\n        } else {\n          entry.body.push(chunk)\n        }\n\n        callback(null)\n      },\n      final (callback) {\n        let entries = store.#entries.get(topLevelKey)\n        if (!entries) {\n          entries = []\n          store.#entries.set(topLevelKey, entries)\n        }\n        const previousEntry = findEntry(key, entries, Date.now())\n        if (previousEntry) {\n          const index = entries.indexOf(previousEntry)\n          entries.splice(index, 1, entry)\n          store.#size -= previousEntry.size\n        } else {\n          entries.push(entry)\n          store.#count += 1\n        }\n\n        store.#size += entry.size\n\n        // Check if cache is full and emit event if needed\n        if (store.#size > store.#maxSize || store.#count > store.#maxCount) {\n          // Emit maxSizeExceeded event if we haven't already\n          if (!store.#hasEmittedMaxSizeEvent) {\n            store.emit('maxSizeExceeded', {\n              size: store.#size,\n              maxSize: store.#maxSize,\n              count: store.#count,\n              maxCount: store.#maxCount\n            })\n            store.#hasEmittedMaxSizeEvent = true\n          }\n\n          // Perform eviction\n          for (const [key, entries] of store.#entries) {\n            for (const entry of entries.splice(0, entries.length / 2)) {\n              store.#size -= entry.size\n              store.#count -= 1\n            }\n            if (entries.length === 0) {\n              store.#entries.delete(key)\n            }\n          }\n\n          // Reset the event flag after eviction\n          if (store.#size < store.#maxSize && store.#count < store.#maxCount) {\n            store.#hasEmittedMaxSizeEvent = false\n          }\n        }\n\n        callback(null)\n      }\n    })\n  }\n\n  /**\n   * @param {CacheKey} key\n   */\n  delete (key) {\n    if (typeof key !== 'object') {\n      throw new TypeError(`expected key to be object, got ${typeof key}`)\n    }\n\n    const topLevelKey = `${key.origin}:${key.path}`\n\n    for (const entry of this.#entries.get(topLevelKey) ?? []) {\n      this.#size -= entry.size\n      this.#count -= 1\n    }\n    this.#entries.delete(topLevelKey)\n  }\n}\n\nfunction findEntry (key, entries, now) {\n  return entries.find((entry) => (\n    entry.deleteAt > now &&\n    entry.method === key.method &&\n    (entry.vary == null || Object.keys(entry.vary).every(headerName => {\n      if (entry.vary[headerName] === null) {\n        return key.headers[headerName] === undefined\n      }\n\n      return entry.vary[headerName] === key.headers[headerName]\n    }))\n  ))\n}\n\nmodule.exports = MemoryCacheStore\n","'use strict'\n\nconst assert = require('node:assert')\n\n/**\n * This takes care of revalidation requests we send to the origin. If we get\n *  a response indicating that what we have is cached (via a HTTP 304), we can\n *  continue using the cached value. Otherwise, we'll receive the new response\n *  here, which we then just pass on to the next handler (most likely a\n *  CacheHandler). Note that this assumes the proper headers were already\n *  included in the request to tell the origin that we want to revalidate the\n *  response (i.e. if-modified-since or if-none-match).\n *\n * @see https://www.rfc-editor.org/rfc/rfc9111.html#name-validation\n *\n * @implements {import('../../types/dispatcher.d.ts').default.DispatchHandler}\n */\nclass CacheRevalidationHandler {\n  #successful = false\n\n  /**\n   * @type {((boolean, any) => void) | null}\n   */\n  #callback\n\n  /**\n   * @type {(import('../../types/dispatcher.d.ts').default.DispatchHandler)}\n   */\n  #handler\n\n  #context\n\n  /**\n   * @type {boolean}\n   */\n  #allowErrorStatusCodes\n\n  /**\n   * @param {(boolean) => void} callback Function to call if the cached value is valid\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchHandlers} handler\n   * @param {boolean} allowErrorStatusCodes\n   */\n  constructor (callback, handler, allowErrorStatusCodes) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function')\n    }\n\n    this.#callback = callback\n    this.#handler = handler\n    this.#allowErrorStatusCodes = allowErrorStatusCodes\n  }\n\n  onRequestStart (_, context) {\n    this.#successful = false\n    this.#context = context\n  }\n\n  onRequestUpgrade (controller, statusCode, headers, socket) {\n    this.#handler.onRequestUpgrade?.(controller, statusCode, headers, socket)\n  }\n\n  onResponseStart (\n    controller,\n    statusCode,\n    headers,\n    statusMessage\n  ) {\n    assert(this.#callback != null)\n\n    // https://www.rfc-editor.org/rfc/rfc9111.html#name-handling-a-validation-respo\n    // https://datatracker.ietf.org/doc/html/rfc5861#section-4\n    this.#successful = statusCode === 304 ||\n      (this.#allowErrorStatusCodes && statusCode >= 500 && statusCode <= 504)\n    this.#callback(this.#successful, this.#context)\n    this.#callback = null\n\n    if (this.#successful) {\n      return true\n    }\n\n    this.#handler.onRequestStart?.(controller, this.#context)\n    this.#handler.onResponseStart?.(\n      controller,\n      statusCode,\n      headers,\n      statusMessage\n    )\n  }\n\n  onResponseData (controller, chunk) {\n    if (this.#successful) {\n      return\n    }\n\n    return this.#handler.onResponseData?.(controller, chunk)\n  }\n\n  onResponseEnd (controller, trailers) {\n    if (this.#successful) {\n      return\n    }\n\n    this.#handler.onResponseEnd?.(controller, trailers)\n  }\n\n  onResponseError (controller, err) {\n    if (this.#successful) {\n      return\n    }\n\n    if (this.#callback) {\n      this.#callback(false)\n      this.#callback = null\n    }\n\n    if (typeof this.#handler.onResponseError === 'function') {\n      this.#handler.onResponseError(controller, err)\n    } else {\n      throw err\n    }\n  }\n}\n\nmodule.exports = CacheRevalidationHandler\n","'use strict'\n\nconst assert = require('node:assert')\nconst { Readable } = require('node:stream')\nconst util = require('../core/util')\nconst CacheHandler = require('../handler/cache-handler')\nconst MemoryCacheStore = require('../cache/memory-cache-store')\nconst CacheRevalidationHandler = require('../handler/cache-revalidation-handler')\nconst { assertCacheStore, assertCacheMethods, makeCacheKey, normalizeHeaders, parseCacheControlHeader } = require('../util/cache.js')\nconst { AbortError } = require('../core/errors.js')\n\n/**\n * @param {(string | RegExp)[] | undefined} origins\n * @param {string} name\n */\nfunction assertCacheOrigins (origins, name) {\n  if (origins === undefined) return\n  if (!Array.isArray(origins)) {\n    throw new TypeError(`expected ${name} to be an array or undefined, got ${typeof origins}`)\n  }\n  for (let i = 0; i < origins.length; i++) {\n    const origin = origins[i]\n    if (typeof origin !== 'string' && !(origin instanceof RegExp)) {\n      throw new TypeError(`expected ${name}[${i}] to be a string or RegExp, got ${typeof origin}`)\n    }\n  }\n}\n\nconst nop = () => {}\n\n/**\n * @typedef {(options: import('../../types/dispatcher.d.ts').default.DispatchOptions, handler: import('../../types/dispatcher.d.ts').default.DispatchHandler) => void} DispatchFn\n */\n\n/**\n * @param {import('../../types/cache-interceptor.d.ts').default.GetResult} result\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives | undefined} cacheControlDirectives\n * @param {import('../../types/dispatcher.d.ts').default.RequestOptions} opts\n * @returns {boolean}\n */\nfunction needsRevalidation (result, cacheControlDirectives, { headers = {} }) {\n  // Always revalidate requests with the no-cache request directive.\n  if (cacheControlDirectives?.['no-cache']) {\n    return true\n  }\n\n  // Always revalidate requests with unqualified no-cache response directive.\n  if (result.cacheControlDirectives?.['no-cache'] && !Array.isArray(result.cacheControlDirectives['no-cache'])) {\n    return true\n  }\n\n  // Always revalidate requests with conditional headers.\n  if (headers['if-modified-since'] || headers['if-none-match']) {\n    return true\n  }\n\n  return false\n}\n\n/**\n * @param {import('../../types/cache-interceptor.d.ts').default.GetResult} result\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives | undefined} cacheControlDirectives\n * @returns {boolean}\n */\nfunction isStale (result, cacheControlDirectives) {\n  const now = Date.now()\n  if (now > result.staleAt) {\n    // Response is stale\n    if (cacheControlDirectives?.['max-stale']) {\n      // There's a threshold where we can serve stale responses, let's see if\n      //  we're in it\n      // https://www.rfc-editor.org/rfc/rfc9111.html#name-max-stale\n      const gracePeriod = result.staleAt + (cacheControlDirectives['max-stale'] * 1000)\n      return now > gracePeriod\n    }\n\n    return true\n  }\n\n  if (cacheControlDirectives?.['min-fresh']) {\n    // https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.1.3\n\n    // At this point, staleAt is always > now\n    const timeLeftTillStale = result.staleAt - now\n    const threshold = cacheControlDirectives['min-fresh'] * 1000\n\n    return timeLeftTillStale <= threshold\n  }\n\n  return false\n}\n\n/**\n * Check if we're within the stale-while-revalidate window for a stale response\n * @param {import('../../types/cache-interceptor.d.ts').default.GetResult} result\n * @returns {boolean}\n */\nfunction withinStaleWhileRevalidateWindow (result) {\n  const staleWhileRevalidate = result.cacheControlDirectives?.['stale-while-revalidate']\n  if (!staleWhileRevalidate) {\n    return false\n  }\n\n  const now = Date.now()\n  const staleWhileRevalidateExpiry = result.staleAt + (staleWhileRevalidate * 1000)\n  return now <= staleWhileRevalidateExpiry\n}\n\n/**\n * @param {DispatchFn} dispatch\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheHandlerOptions} globalOpts\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} cacheKey\n * @param {import('../../types/dispatcher.d.ts').default.DispatchHandler} handler\n * @param {import('../../types/dispatcher.d.ts').default.RequestOptions} opts\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives | undefined} reqCacheControl\n */\nfunction handleUncachedResponse (\n  dispatch,\n  globalOpts,\n  cacheKey,\n  handler,\n  opts,\n  reqCacheControl\n) {\n  if (reqCacheControl?.['only-if-cached']) {\n    let aborted = false\n    try {\n      if (typeof handler.onConnect === 'function') {\n        handler.onConnect(() => {\n          aborted = true\n        })\n\n        if (aborted) {\n          return\n        }\n      }\n\n      if (typeof handler.onHeaders === 'function') {\n        handler.onHeaders(504, [], nop, 'Gateway Timeout')\n        if (aborted) {\n          return\n        }\n      }\n\n      if (typeof handler.onComplete === 'function') {\n        handler.onComplete([])\n      }\n    } catch (err) {\n      if (typeof handler.onError === 'function') {\n        handler.onError(err)\n      }\n    }\n\n    return true\n  }\n\n  return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler))\n}\n\n/**\n * @param {import('../../types/dispatcher.d.ts').default.DispatchHandler} handler\n * @param {import('../../types/dispatcher.d.ts').default.RequestOptions} opts\n * @param {import('../../types/cache-interceptor.d.ts').default.GetResult} result\n * @param {number} age\n * @param {any} context\n * @param {boolean} isStale\n */\nfunction sendCachedValue (handler, opts, result, age, context, isStale) {\n  // TODO (perf): Readable.from path can be optimized...\n  const stream = util.isStream(result.body)\n    ? result.body\n    : Readable.from(result.body ?? [])\n\n  assert(!stream.destroyed, 'stream should not be destroyed')\n  assert(!stream.readableDidRead, 'stream should not be readableDidRead')\n\n  const controller = {\n    resume () {\n      stream.resume()\n    },\n    pause () {\n      stream.pause()\n    },\n    get paused () {\n      return stream.isPaused()\n    },\n    get aborted () {\n      return stream.destroyed\n    },\n    get reason () {\n      return stream.errored\n    },\n    abort (reason) {\n      stream.destroy(reason ?? new AbortError())\n    }\n  }\n\n  stream\n    .on('error', function (err) {\n      if (!this.readableEnded) {\n        if (typeof handler.onResponseError === 'function') {\n          handler.onResponseError(controller, err)\n        } else {\n          throw err\n        }\n      }\n    })\n    .on('close', function () {\n      if (!this.errored) {\n        handler.onResponseEnd?.(controller, {})\n      }\n    })\n\n  handler.onRequestStart?.(controller, context)\n\n  if (stream.destroyed) {\n    return\n  }\n\n  // Add the age header\n  // https://www.rfc-editor.org/rfc/rfc9111.html#name-age\n  const headers = { ...result.headers, age: String(age) }\n\n  if (isStale) {\n    // Add warning header\n    //  https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Warning\n    headers.warning = '110 - \"response is stale\"'\n  }\n\n  handler.onResponseStart?.(controller, result.statusCode, headers, result.statusMessage)\n\n  if (opts.method === 'HEAD') {\n    stream.destroy()\n  } else {\n    stream.on('data', function (chunk) {\n      handler.onResponseData?.(controller, chunk)\n    })\n  }\n}\n\n/**\n * @param {DispatchFn} dispatch\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheHandlerOptions} globalOpts\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} cacheKey\n * @param {import('../../types/dispatcher.d.ts').default.DispatchHandler} handler\n * @param {import('../../types/dispatcher.d.ts').default.RequestOptions} opts\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheControlDirectives | undefined} reqCacheControl\n * @param {import('../../types/cache-interceptor.d.ts').default.GetResult | undefined} result\n */\nfunction handleResult (\n  dispatch,\n  globalOpts,\n  cacheKey,\n  handler,\n  opts,\n  reqCacheControl,\n  result\n) {\n  if (!result) {\n    return handleUncachedResponse(dispatch, globalOpts, cacheKey, handler, opts, reqCacheControl)\n  }\n\n  const now = Date.now()\n  if (now > result.deleteAt) {\n    // Response is expired, cache store shouldn't have given this to us\n    return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler))\n  }\n\n  const age = Math.round((now - result.cachedAt) / 1000)\n  if (reqCacheControl?.['max-age'] && age >= reqCacheControl['max-age']) {\n    // Response is considered expired for this specific request\n    //  https://www.rfc-editor.org/rfc/rfc9111.html#section-5.2.1.1\n    return dispatch(opts, handler)\n  }\n\n  const stale = isStale(result, reqCacheControl)\n  const revalidate = needsRevalidation(result, reqCacheControl, opts)\n\n  // Check if the response is stale\n  if (stale || revalidate) {\n    if (util.isStream(opts.body) && util.bodyLength(opts.body) !== 0) {\n      // If body is a stream we can't revalidate...\n      // TODO (fix): This could be less strict...\n      return dispatch(opts, new CacheHandler(globalOpts, cacheKey, handler))\n    }\n\n    // RFC 5861: If we're within stale-while-revalidate window, serve stale immediately\n    // and revalidate in background, unless immediate revalidation is necessary\n    if (!revalidate && withinStaleWhileRevalidateWindow(result)) {\n      // Serve stale response immediately\n      sendCachedValue(handler, opts, result, age, null, true)\n\n      // Start background revalidation (fire-and-forget)\n      queueMicrotask(() => {\n        const headers = {\n          ...opts.headers,\n          'if-modified-since': new Date(result.cachedAt).toUTCString()\n        }\n\n        if (result.etag) {\n          headers['if-none-match'] = result.etag\n        }\n\n        if (result.vary) {\n          for (const key in result.vary) {\n            if (result.vary[key] != null) {\n              headers[key] = result.vary[key]\n            }\n          }\n        }\n\n        // Background revalidation - update cache if we get new data\n        dispatch(\n          {\n            ...opts,\n            headers\n          },\n          new CacheHandler(globalOpts, cacheKey, {\n            // Silent handler that just updates the cache\n            onRequestStart () {},\n            onRequestUpgrade () {},\n            onResponseStart () {},\n            onResponseData () {},\n            onResponseEnd () {},\n            onResponseError () {}\n          })\n        )\n      })\n\n      return true\n    }\n\n    let withinStaleIfErrorThreshold = false\n    const staleIfErrorExpiry = result.cacheControlDirectives['stale-if-error'] ?? reqCacheControl?.['stale-if-error']\n    if (staleIfErrorExpiry) {\n      withinStaleIfErrorThreshold = now < (result.staleAt + (staleIfErrorExpiry * 1000))\n    }\n\n    const headers = {\n      ...opts.headers,\n      'if-modified-since': new Date(result.cachedAt).toUTCString()\n    }\n\n    if (result.etag) {\n      headers['if-none-match'] = result.etag\n    }\n\n    if (result.vary) {\n      for (const key in result.vary) {\n        if (result.vary[key] != null) {\n          headers[key] = result.vary[key]\n        }\n      }\n    }\n\n    // We need to revalidate the response\n    return dispatch(\n      {\n        ...opts,\n        headers\n      },\n      new CacheRevalidationHandler(\n        (success, context) => {\n          if (success) {\n            // TODO: successful revalidation should be considered fresh (not give stale warning).\n            sendCachedValue(handler, opts, result, age, context, stale)\n          } else if (util.isStream(result.body)) {\n            result.body.on('error', nop).destroy()\n          }\n        },\n        new CacheHandler(globalOpts, cacheKey, handler),\n        withinStaleIfErrorThreshold\n      )\n    )\n  }\n\n  // Dump request body.\n  if (util.isStream(opts.body)) {\n    opts.body.on('error', nop).destroy()\n  }\n\n  sendCachedValue(handler, opts, result, age, null, false)\n}\n\n/**\n * @param {import('../../types/cache-interceptor.d.ts').default.CacheOptions} [opts]\n * @returns {import('../../types/dispatcher.d.ts').default.DispatcherComposeInterceptor}\n */\nmodule.exports = (opts = {}) => {\n  const {\n    store = new MemoryCacheStore(),\n    methods = ['GET'],\n    cacheByDefault = undefined,\n    type = 'shared',\n    origins = undefined\n  } = opts\n\n  if (typeof opts !== 'object' || opts === null) {\n    throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? 'null' : typeof opts}`)\n  }\n\n  assertCacheStore(store, 'opts.store')\n  assertCacheMethods(methods, 'opts.methods')\n  assertCacheOrigins(origins, 'opts.origins')\n\n  if (typeof cacheByDefault !== 'undefined' && typeof cacheByDefault !== 'number') {\n    throw new TypeError(`expected opts.cacheByDefault to be number or undefined, got ${typeof cacheByDefault}`)\n  }\n\n  if (typeof type !== 'undefined' && type !== 'shared' && type !== 'private') {\n    throw new TypeError(`expected opts.type to be shared, private, or undefined, got ${typeof type}`)\n  }\n\n  const globalOpts = {\n    store,\n    methods,\n    cacheByDefault,\n    type\n  }\n\n  const safeMethodsToNotCache = util.safeHTTPMethods.filter(method => methods.includes(method) === false)\n\n  return dispatch => {\n    return (opts, handler) => {\n      if (!opts.origin || safeMethodsToNotCache.includes(opts.method)) {\n        // Not a method we want to cache or we don't have the origin, skip\n        return dispatch(opts, handler)\n      }\n\n      // Check if origin is in whitelist\n      if (origins !== undefined) {\n        const requestOrigin = opts.origin.toString().toLowerCase()\n        let isAllowed = false\n\n        for (let i = 0; i < origins.length; i++) {\n          const allowed = origins[i]\n          if (typeof allowed === 'string') {\n            if (allowed.toLowerCase() === requestOrigin) {\n              isAllowed = true\n              break\n            }\n          } else if (allowed.test(requestOrigin)) {\n            isAllowed = true\n            break\n          }\n        }\n\n        if (!isAllowed) {\n          return dispatch(opts, handler)\n        }\n      }\n\n      opts = {\n        ...opts,\n        headers: normalizeHeaders(opts)\n      }\n\n      const reqCacheControl = opts.headers?.['cache-control']\n        ? parseCacheControlHeader(opts.headers['cache-control'])\n        : undefined\n\n      if (reqCacheControl?.['no-store']) {\n        return dispatch(opts, handler)\n      }\n\n      /**\n       * @type {import('../../types/cache-interceptor.d.ts').default.CacheKey}\n       */\n      const cacheKey = makeCacheKey(opts)\n      const result = store.get(cacheKey)\n\n      if (result && typeof result.then === 'function') {\n        return result\n          .then(result => handleResult(dispatch,\n            globalOpts,\n            cacheKey,\n            handler,\n            opts,\n            reqCacheControl,\n            result\n          ))\n      } else {\n        return handleResult(\n          dispatch,\n          globalOpts,\n          cacheKey,\n          handler,\n          opts,\n          reqCacheControl,\n          result\n        )\n      }\n    }\n  }\n}\n","'use strict'\n\nconst { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require('node:zlib')\nconst { pipeline } = require('node:stream')\nconst DecoratorHandler = require('../handler/decorator-handler')\nconst { runtimeFeatures } = require('../util/runtime-features')\n\n/** @typedef {import('node:stream').Transform} Transform */\n/** @typedef {import('node:stream').Transform} Controller */\n/** @typedef {Transform&import('node:zlib').Zlib} DecompressorStream */\n\n/** @type {Record<string, () => DecompressorStream>} */\nconst supportedEncodings = {\n  gzip: createGunzip,\n  'x-gzip': createGunzip,\n  br: createBrotliDecompress,\n  deflate: createInflate,\n  compress: createInflate,\n  'x-compress': createInflate,\n  ...(runtimeFeatures.has('zstd') ? { zstd: createZstdDecompress } : {})\n}\n\nconst defaultSkipStatusCodes = /** @type {const} */ ([204, 304])\n\nlet warningEmitted = /** @type {boolean} */ (false)\n\n/**\n * @typedef {Object} DecompressHandlerOptions\n * @property {number[]|Readonly<number[]>} [skipStatusCodes=[204, 304]] - List of status codes to skip decompression for\n * @property {boolean} [skipErrorResponses] - Whether to skip decompression for error responses (status codes >= 400)\n */\n\nclass DecompressHandler extends DecoratorHandler {\n  /** @type {Transform[]} */\n  #decompressors = []\n  /** @type {Readonly<number[]>} */\n  #skipStatusCodes\n  /** @type {boolean} */\n  #skipErrorResponses\n\n  constructor (handler, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true } = {}) {\n    super(handler)\n    this.#skipStatusCodes = skipStatusCodes\n    this.#skipErrorResponses = skipErrorResponses\n  }\n\n  /**\n   * Determines if decompression should be skipped based on encoding and status code\n   * @param {string} contentEncoding - Content-Encoding header value\n   * @param {number} statusCode - HTTP status code of the response\n   * @returns {boolean} - True if decompression should be skipped\n   */\n  #shouldSkipDecompression (contentEncoding, statusCode) {\n    if (!contentEncoding || statusCode < 200) return true\n    if (this.#skipStatusCodes.includes(statusCode)) return true\n    if (this.#skipErrorResponses && statusCode >= 400) return true\n    return false\n  }\n\n  /**\n   * Creates a chain of decompressors for multiple content encodings\n   *\n   * @param {string} encodings - Comma-separated list of content encodings\n   * @returns {Array<DecompressorStream>} - Array of decompressor streams\n   * @throws {Error} - If the number of content-encodings exceeds the maximum allowed\n   */\n  #createDecompressionChain (encodings) {\n    const parts = encodings.split(',')\n\n    // Limit the number of content-encodings to prevent resource exhaustion.\n    // CVE fix similar to urllib3 (GHSA-gm62-xv2j-4w53) and curl (CVE-2022-32206).\n    const maxContentEncodings = 5\n    if (parts.length > maxContentEncodings) {\n      throw new Error(`too many content-encodings in response: ${parts.length}, maximum allowed is ${maxContentEncodings}`)\n    }\n\n    /** @type {DecompressorStream[]} */\n    const decompressors = []\n\n    for (let i = parts.length - 1; i >= 0; i--) {\n      const encoding = parts[i].trim()\n      if (!encoding) continue\n\n      if (!supportedEncodings[encoding]) {\n        decompressors.length = 0 // Clear if unsupported encoding\n        return decompressors // Unsupported encoding\n      }\n\n      decompressors.push(supportedEncodings[encoding]())\n    }\n\n    return decompressors\n  }\n\n  /**\n   * Sets up event handlers for a decompressor stream using readable events\n   * @param {DecompressorStream} decompressor - The decompressor stream\n   * @param {Controller} controller - The controller to coordinate with\n   * @returns {void}\n   */\n  #setupDecompressorEvents (decompressor, controller) {\n    decompressor.on('readable', () => {\n      let chunk\n      while ((chunk = decompressor.read()) !== null) {\n        const result = super.onResponseData(controller, chunk)\n        if (result === false) {\n          break\n        }\n      }\n    })\n\n    decompressor.on('error', (error) => {\n      super.onResponseError(controller, error)\n    })\n  }\n\n  /**\n   * Sets up event handling for a single decompressor\n   * @param {Controller} controller - The controller to handle events\n   * @returns {void}\n   */\n  #setupSingleDecompressor (controller) {\n    const decompressor = this.#decompressors[0]\n    this.#setupDecompressorEvents(decompressor, controller)\n\n    decompressor.on('end', () => {\n      super.onResponseEnd(controller, {})\n    })\n  }\n\n  /**\n   * Sets up event handling for multiple chained decompressors using pipeline\n   * @param {Controller} controller - The controller to handle events\n   * @returns {void}\n   */\n  #setupMultipleDecompressors (controller) {\n    const lastDecompressor = this.#decompressors[this.#decompressors.length - 1]\n    this.#setupDecompressorEvents(lastDecompressor, controller)\n\n    pipeline(this.#decompressors, (err) => {\n      if (err) {\n        super.onResponseError(controller, err)\n        return\n      }\n      super.onResponseEnd(controller, {})\n    })\n  }\n\n  /**\n   * Cleans up decompressor references to prevent memory leaks\n   * @returns {void}\n   */\n  #cleanupDecompressors () {\n    this.#decompressors.length = 0\n  }\n\n  /**\n   * @param {Controller} controller\n   * @param {number} statusCode\n   * @param {Record<string, string | string[] | undefined>} headers\n   * @param {string} statusMessage\n   * @returns {void}\n   */\n  onResponseStart (controller, statusCode, headers, statusMessage) {\n    const contentEncoding = headers['content-encoding']\n\n    // If content encoding is not supported or status code is in skip list\n    if (this.#shouldSkipDecompression(contentEncoding, statusCode)) {\n      return super.onResponseStart(controller, statusCode, headers, statusMessage)\n    }\n\n    const decompressors = this.#createDecompressionChain(contentEncoding.toLowerCase())\n\n    if (decompressors.length === 0) {\n      this.#cleanupDecompressors()\n      return super.onResponseStart(controller, statusCode, headers, statusMessage)\n    }\n\n    this.#decompressors = decompressors\n\n    // Remove compression headers since we're decompressing\n    const { 'content-encoding': _, 'content-length': __, ...newHeaders } = headers\n\n    if (this.#decompressors.length === 1) {\n      this.#setupSingleDecompressor(controller)\n    } else {\n      this.#setupMultipleDecompressors(controller)\n    }\n\n    return super.onResponseStart(controller, statusCode, newHeaders, statusMessage)\n  }\n\n  /**\n   * @param {Controller} controller\n   * @param {Buffer} chunk\n   * @returns {void}\n   */\n  onResponseData (controller, chunk) {\n    if (this.#decompressors.length > 0) {\n      this.#decompressors[0].write(chunk)\n      return\n    }\n    super.onResponseData(controller, chunk)\n  }\n\n  /**\n   * @param {Controller} controller\n   * @param {Record<string, string | string[]> | undefined} trailers\n   * @returns {void}\n   */\n  onResponseEnd (controller, trailers) {\n    if (this.#decompressors.length > 0) {\n      this.#decompressors[0].end()\n      this.#cleanupDecompressors()\n      return\n    }\n    super.onResponseEnd(controller, trailers)\n  }\n\n  /**\n   * @param {Controller} controller\n   * @param {Error} err\n   * @returns {void}\n   */\n  onResponseError (controller, err) {\n    if (this.#decompressors.length > 0) {\n      for (const decompressor of this.#decompressors) {\n        decompressor.destroy(err)\n      }\n      this.#cleanupDecompressors()\n    }\n    super.onResponseError(controller, err)\n  }\n}\n\n/**\n * Creates a decompression interceptor for HTTP responses\n * @param {DecompressHandlerOptions} [options] - Options for the interceptor\n * @returns {Function} - Interceptor function\n */\nfunction createDecompressInterceptor (options = {}) {\n  // Emit experimental warning only once\n  if (!warningEmitted) {\n    process.emitWarning(\n      'DecompressInterceptor is experimental and subject to change',\n      'ExperimentalWarning'\n    )\n    warningEmitted = true\n  }\n\n  return (dispatch) => {\n    return (opts, handler) => {\n      const decompressHandler = new DecompressHandler(handler, options)\n      return dispatch(opts, decompressHandler)\n    }\n  }\n}\n\nmodule.exports = createDecompressInterceptor\n","'use strict'\n\nconst { RequestAbortedError } = require('../core/errors')\n\n/**\n * @typedef {import('../../types/dispatcher.d.ts').default.DispatchHandler} DispatchHandler\n */\n\nconst DEFAULT_MAX_BUFFER_SIZE = 5 * 1024 * 1024\n\n/**\n * @typedef {Object} WaitingHandler\n * @property {DispatchHandler} handler\n * @property {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n * @property {Buffer[]} bufferedChunks\n * @property {number} bufferedBytes\n * @property {object | null} pendingTrailers\n * @property {boolean} done\n */\n\n/**\n * Handler that forwards response events to multiple waiting handlers.\n * Used for request deduplication.\n *\n * @implements {DispatchHandler}\n */\nclass DeduplicationHandler {\n  /**\n   * @type {DispatchHandler}\n   */\n  #primaryHandler\n\n  /**\n   * @type {WaitingHandler[]}\n   */\n  #waitingHandlers = []\n\n  /**\n   * @type {number}\n   */\n  #maxBufferSize = DEFAULT_MAX_BUFFER_SIZE\n\n  /**\n   * @type {number}\n   */\n  #statusCode = 0\n\n  /**\n   * @type {Record<string, string | string[]>}\n   */\n  #headers = {}\n\n  /**\n   * @type {string}\n   */\n  #statusMessage = ''\n\n  /**\n   * @type {boolean}\n   */\n  #aborted = false\n\n  /**\n   * @type {boolean}\n   */\n  #responseStarted = false\n\n  /**\n   * @type {boolean}\n   */\n  #responseDataStarted = false\n\n  /**\n   * @type {boolean}\n   */\n  #completed = false\n\n  /**\n   * @type {import('../../types/dispatcher.d.ts').default.DispatchController | null}\n   */\n  #controller = null\n\n  /**\n   * @type {(() => void) | null}\n   */\n  #onComplete = null\n\n  /**\n   * @param {DispatchHandler} primaryHandler The primary handler\n   * @param {() => void} onComplete Callback when request completes\n   * @param {number} [maxBufferSize] Maximum paused buffer size per waiting handler\n   */\n  constructor (primaryHandler, onComplete, maxBufferSize = DEFAULT_MAX_BUFFER_SIZE) {\n    this.#primaryHandler = primaryHandler\n    this.#onComplete = onComplete\n    this.#maxBufferSize = maxBufferSize\n  }\n\n  /**\n   * Add a waiting handler that will receive response events.\n   * Returns false if deduplication can no longer safely attach this handler.\n   *\n   * @param {DispatchHandler} handler\n   * @returns {boolean}\n   */\n  addWaitingHandler (handler) {\n    if (this.#completed || this.#responseDataStarted) {\n      return false\n    }\n\n    const waitingHandler = this.#createWaitingHandler(handler)\n    const waitingController = waitingHandler.controller\n\n    try {\n      handler.onRequestStart?.(waitingController, null)\n\n      if (waitingController.aborted) {\n        waitingHandler.done = true\n        return true\n      }\n\n      if (this.#responseStarted) {\n        handler.onResponseStart?.(\n          waitingController,\n          this.#statusCode,\n          this.#headers,\n          this.#statusMessage\n        )\n      }\n    } catch {\n      // Ignore errors from waiting handlers\n      waitingHandler.done = true\n      return true\n    }\n\n    if (!waitingController.aborted) {\n      this.#waitingHandlers.push(waitingHandler)\n    }\n\n    return true\n  }\n\n  /**\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n   * @param {any} context\n   */\n  onRequestStart (controller, context) {\n    this.#controller = controller\n    this.#primaryHandler.onRequestStart?.(controller, context)\n  }\n\n  /**\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n   * @param {number} statusCode\n   * @param {import('../../types/header.d.ts').IncomingHttpHeaders} headers\n   * @param {Socket} socket\n   */\n  onRequestUpgrade (controller, statusCode, headers, socket) {\n    this.#primaryHandler.onRequestUpgrade?.(controller, statusCode, headers, socket)\n  }\n\n  /**\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n   * @param {number} statusCode\n   * @param {Record<string, string | string[]>} headers\n   * @param {string} statusMessage\n   */\n  onResponseStart (controller, statusCode, headers, statusMessage) {\n    this.#responseStarted = true\n    this.#statusCode = statusCode\n    this.#headers = headers\n    this.#statusMessage = statusMessage\n\n    this.#primaryHandler.onResponseStart?.(controller, statusCode, headers, statusMessage)\n\n    for (const waitingHandler of this.#waitingHandlers) {\n      const { handler, controller: waitingController } = waitingHandler\n\n      if (waitingHandler.done || waitingController.aborted) {\n        waitingHandler.done = true\n        continue\n      }\n\n      try {\n        handler.onResponseStart?.(\n          waitingController,\n          statusCode,\n          headers,\n          statusMessage\n        )\n      } catch {\n        // Ignore errors from waiting handlers\n      }\n\n      if (waitingController.aborted) {\n        waitingHandler.done = true\n      }\n    }\n\n    this.#pruneDoneWaitingHandlers()\n  }\n\n  /**\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n   * @param {Buffer} chunk\n   */\n  onResponseData (controller, chunk) {\n    if (this.#aborted || this.#completed) {\n      return\n    }\n\n    this.#responseDataStarted = true\n\n    this.#primaryHandler.onResponseData?.(controller, chunk)\n\n    for (const waitingHandler of this.#waitingHandlers) {\n      const { handler, controller: waitingController } = waitingHandler\n\n      if (waitingHandler.done || waitingController.aborted) {\n        waitingHandler.done = true\n        continue\n      }\n\n      if (waitingController.paused) {\n        this.#bufferWaitingChunk(waitingHandler, chunk)\n        continue\n      }\n\n      try {\n        handler.onResponseData?.(waitingController, chunk)\n      } catch {\n        // Ignore errors from waiting handlers\n      }\n\n      if (waitingController.aborted) {\n        waitingHandler.done = true\n        waitingHandler.bufferedChunks = []\n        waitingHandler.bufferedBytes = 0\n      }\n    }\n\n    this.#pruneDoneWaitingHandlers()\n  }\n\n  /**\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n   * @param {object} trailers\n   */\n  onResponseEnd (controller, trailers) {\n    if (this.#aborted || this.#completed) {\n      return\n    }\n\n    this.#completed = true\n    this.#primaryHandler.onResponseEnd?.(controller, trailers)\n\n    for (const waitingHandler of this.#waitingHandlers) {\n      if (waitingHandler.done || waitingHandler.controller.aborted) {\n        waitingHandler.done = true\n        continue\n      }\n\n      this.#flushWaitingHandler(waitingHandler)\n\n      if (waitingHandler.done || waitingHandler.controller.aborted) {\n        waitingHandler.done = true\n        continue\n      }\n\n      if (waitingHandler.controller.paused && waitingHandler.bufferedChunks.length > 0) {\n        waitingHandler.pendingTrailers = trailers\n        continue\n      }\n\n      try {\n        waitingHandler.handler.onResponseEnd?.(waitingHandler.controller, trailers)\n      } catch {\n        // Ignore errors from waiting handlers\n      }\n\n      waitingHandler.done = true\n    }\n\n    this.#pruneDoneWaitingHandlers()\n    this.#onComplete?.()\n  }\n\n  /**\n   * @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller\n   * @param {Error} err\n   */\n  onResponseError (controller, err) {\n    if (this.#completed) {\n      return\n    }\n\n    this.#aborted = true\n    this.#completed = true\n\n    this.#primaryHandler.onResponseError?.(controller, err)\n\n    for (const waitingHandler of this.#waitingHandlers) {\n      this.#errorWaitingHandler(waitingHandler, err)\n    }\n\n    this.#waitingHandlers = []\n    this.#onComplete?.()\n  }\n\n  /**\n   * @param {DispatchHandler} handler\n   * @returns {WaitingHandler}\n   */\n  #createWaitingHandler (handler) {\n    /** @type {WaitingHandler} */\n    const waitingHandler = {\n      handler,\n      controller: null,\n      bufferedChunks: [],\n      bufferedBytes: 0,\n      pendingTrailers: null,\n      done: false\n    }\n\n    const state = {\n      aborted: false,\n      paused: false,\n      reason: null\n    }\n\n    waitingHandler.controller = {\n      resume: () => {\n        if (state.aborted) {\n          return\n        }\n\n        state.paused = false\n        this.#flushWaitingHandler(waitingHandler)\n\n        if (\n          this.#completed &&\n          waitingHandler.pendingTrailers &&\n          waitingHandler.bufferedChunks.length === 0 &&\n          !state.paused &&\n          !state.aborted\n        ) {\n          try {\n            waitingHandler.handler.onResponseEnd?.(waitingHandler.controller, waitingHandler.pendingTrailers)\n          } catch {\n            // Ignore errors from waiting handlers\n          }\n\n          waitingHandler.pendingTrailers = null\n          waitingHandler.done = true\n        }\n\n        this.#pruneDoneWaitingHandlers()\n      },\n      pause: () => {\n        if (!state.aborted) {\n          state.paused = true\n        }\n      },\n      get paused () { return state.paused },\n      get aborted () { return state.aborted },\n      get reason () { return state.reason },\n      abort: (reason) => {\n        state.aborted = true\n        state.reason = reason ?? null\n        waitingHandler.done = true\n        waitingHandler.pendingTrailers = null\n        waitingHandler.bufferedChunks = []\n        waitingHandler.bufferedBytes = 0\n      }\n    }\n\n    return waitingHandler\n  }\n\n  /**\n   * @param {WaitingHandler} waitingHandler\n   * @param {Buffer} chunk\n   */\n  #bufferWaitingChunk (waitingHandler, chunk) {\n    if (waitingHandler.done || waitingHandler.controller.aborted) {\n      waitingHandler.done = true\n      waitingHandler.bufferedChunks = []\n      waitingHandler.bufferedBytes = 0\n      return\n    }\n\n    const bufferedChunk = Buffer.from(chunk)\n    waitingHandler.bufferedChunks.push(bufferedChunk)\n    waitingHandler.bufferedBytes += bufferedChunk.length\n\n    if (waitingHandler.bufferedBytes > this.#maxBufferSize) {\n      const err = new RequestAbortedError(`Deduplicated waiting handler exceeded maxBufferSize (${this.#maxBufferSize} bytes) while paused`)\n      this.#errorWaitingHandler(waitingHandler, err)\n    }\n  }\n\n  /**\n   * @param {WaitingHandler} waitingHandler\n   */\n  #flushWaitingHandler (waitingHandler) {\n    const { handler, controller } = waitingHandler\n\n    while (\n      !waitingHandler.done &&\n      !controller.aborted &&\n      !controller.paused &&\n      waitingHandler.bufferedChunks.length > 0\n    ) {\n      const bufferedChunk = waitingHandler.bufferedChunks.shift()\n      waitingHandler.bufferedBytes -= bufferedChunk.length\n\n      try {\n        handler.onResponseData?.(controller, bufferedChunk)\n      } catch {\n        // Ignore errors from waiting handlers\n      }\n\n      if (controller.aborted) {\n        waitingHandler.done = true\n        waitingHandler.pendingTrailers = null\n        waitingHandler.bufferedChunks = []\n        waitingHandler.bufferedBytes = 0\n        break\n      }\n    }\n  }\n\n  /**\n   * @param {WaitingHandler} waitingHandler\n   * @param {Error} err\n   */\n  #errorWaitingHandler (waitingHandler, err) {\n    if (waitingHandler.done) {\n      return\n    }\n\n    waitingHandler.done = true\n    waitingHandler.pendingTrailers = null\n    waitingHandler.bufferedChunks = []\n    waitingHandler.bufferedBytes = 0\n\n    try {\n      waitingHandler.controller.abort(err)\n      waitingHandler.handler.onResponseError?.(waitingHandler.controller, err)\n    } catch {\n      // Ignore errors from waiting handlers\n    }\n  }\n\n  #pruneDoneWaitingHandlers () {\n    this.#waitingHandlers = this.#waitingHandlers.filter(waitingHandler => waitingHandler.done === false)\n  }\n}\n\nmodule.exports = DeduplicationHandler\n","'use strict'\n\nconst diagnosticsChannel = require('node:diagnostics_channel')\nconst util = require('../core/util')\nconst DeduplicationHandler = require('../handler/deduplication-handler')\nconst { normalizeHeaders, makeCacheKey, makeDeduplicationKey } = require('../util/cache.js')\n\nconst pendingRequestsChannel = diagnosticsChannel.channel('undici:request:pending-requests')\n\n/**\n * @param {import('../../types/interceptors.d.ts').default.DeduplicateInterceptorOpts} [opts]\n * @returns {import('../../types/dispatcher.d.ts').default.DispatcherComposeInterceptor}\n */\nmodule.exports = (opts = {}) => {\n  const {\n    methods = ['GET'],\n    skipHeaderNames = [],\n    excludeHeaderNames = [],\n    maxBufferSize = 5 * 1024 * 1024\n  } = opts\n\n  if (typeof opts !== 'object' || opts === null) {\n    throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? 'null' : typeof opts}`)\n  }\n\n  if (!Array.isArray(methods)) {\n    throw new TypeError(`expected opts.methods to be an array, got ${typeof methods}`)\n  }\n\n  for (const method of methods) {\n    if (!util.safeHTTPMethods.includes(method)) {\n      throw new TypeError(`expected opts.methods to only contain safe HTTP methods, got ${method}`)\n    }\n  }\n\n  if (!Array.isArray(skipHeaderNames)) {\n    throw new TypeError(`expected opts.skipHeaderNames to be an array, got ${typeof skipHeaderNames}`)\n  }\n\n  if (!Array.isArray(excludeHeaderNames)) {\n    throw new TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof excludeHeaderNames}`)\n  }\n\n  if (!Number.isFinite(maxBufferSize) || maxBufferSize <= 0) {\n    throw new TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${maxBufferSize}`)\n  }\n\n  // Convert to lowercase Set for case-insensitive header matching\n  const skipHeaderNamesSet = new Set(skipHeaderNames.map(name => name.toLowerCase()))\n\n  // Convert to lowercase Set for case-insensitive header exclusion from deduplication key\n  const excludeHeaderNamesSet = new Set(excludeHeaderNames.map(name => name.toLowerCase()))\n\n  /**\n   * Map of pending requests for deduplication\n   * @type {Map<string, DeduplicationHandler>}\n   */\n  const pendingRequests = new Map()\n\n  return dispatch => {\n    return (opts, handler) => {\n      if (!opts.origin || methods.includes(opts.method) === false) {\n        return dispatch(opts, handler)\n      }\n\n      opts = {\n        ...opts,\n        headers: normalizeHeaders(opts)\n      }\n\n      // Skip deduplication if request contains any of the specified headers\n      if (skipHeaderNamesSet.size > 0) {\n        for (const headerName of Object.keys(opts.headers)) {\n          if (skipHeaderNamesSet.has(headerName.toLowerCase())) {\n            return dispatch(opts, handler)\n          }\n        }\n      }\n\n      const cacheKey = makeCacheKey(opts)\n      const dedupeKey = makeDeduplicationKey(cacheKey, excludeHeaderNamesSet)\n\n      // Check if there's already a pending request for this key\n      const pendingHandler = pendingRequests.get(dedupeKey)\n      if (pendingHandler) {\n        // Add this handler to the waiting list when safe.\n        // If body streaming has already started, this request must be sent independently.\n        if (pendingHandler.addWaitingHandler(handler)) {\n          return true\n        }\n\n        return dispatch(opts, handler)\n      }\n\n      // Create a new deduplication handler\n      const deduplicationHandler = new DeduplicationHandler(\n        handler,\n        () => {\n          // Clean up when request completes\n          pendingRequests.delete(dedupeKey)\n          if (pendingRequestsChannel.hasSubscribers) {\n            pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: 'removed' })\n          }\n        },\n        maxBufferSize\n      )\n\n      // Register the pending request\n      pendingRequests.set(dedupeKey, deduplicationHandler)\n      if (pendingRequestsChannel.hasSubscribers) {\n        pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: 'added' })\n      }\n\n      return dispatch(opts, deduplicationHandler)\n    }\n  }\n}\n","'use strict'\n\nconst { Writable } = require('node:stream')\nconst { assertCacheKey, assertCacheValue } = require('../util/cache.js')\n\nlet DatabaseSync\n\nconst VERSION = 3\n\n// 2gb\nconst MAX_ENTRY_SIZE = 2 * 1000 * 1000 * 1000\n\n/**\n * @typedef {import('../../types/cache-interceptor.d.ts').default.CacheStore} CacheStore\n * @implements {CacheStore}\n *\n * @typedef {{\n *  id: Readonly<number>,\n *  body?: Uint8Array\n *  statusCode: number\n *  statusMessage: string\n *  headers?: string\n *  vary?: string\n *  etag?: string\n *  cacheControlDirectives?: string\n *  cachedAt: number\n *  staleAt: number\n *  deleteAt: number\n * }} SqliteStoreValue\n */\nmodule.exports = class SqliteCacheStore {\n  #maxEntrySize = MAX_ENTRY_SIZE\n  #maxCount = Infinity\n\n  /**\n   * @type {import('node:sqlite').DatabaseSync}\n   */\n  #db\n\n  /**\n   * @type {import('node:sqlite').StatementSync}\n   */\n  #getValuesQuery\n\n  /**\n   * @type {import('node:sqlite').StatementSync}\n   */\n  #updateValueQuery\n\n  /**\n   * @type {import('node:sqlite').StatementSync}\n   */\n  #insertValueQuery\n\n  /**\n   * @type {import('node:sqlite').StatementSync}\n   */\n  #deleteExpiredValuesQuery\n\n  /**\n   * @type {import('node:sqlite').StatementSync}\n   */\n  #deleteByUrlQuery\n\n  /**\n   * @type {import('node:sqlite').StatementSync}\n   */\n  #countEntriesQuery\n\n  /**\n   * @type {import('node:sqlite').StatementSync | null}\n   */\n  #deleteOldValuesQuery\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.SqliteCacheStoreOpts | undefined} opts\n   */\n  constructor (opts) {\n    if (opts) {\n      if (typeof opts !== 'object') {\n        throw new TypeError('SqliteCacheStore options must be an object')\n      }\n\n      if (opts.maxEntrySize !== undefined) {\n        if (\n          typeof opts.maxEntrySize !== 'number' ||\n          !Number.isInteger(opts.maxEntrySize) ||\n          opts.maxEntrySize < 0\n        ) {\n          throw new TypeError('SqliteCacheStore options.maxEntrySize must be a non-negative integer')\n        }\n\n        if (opts.maxEntrySize > MAX_ENTRY_SIZE) {\n          throw new TypeError('SqliteCacheStore options.maxEntrySize must be less than 2gb')\n        }\n\n        this.#maxEntrySize = opts.maxEntrySize\n      }\n\n      if (opts.maxCount !== undefined) {\n        if (\n          typeof opts.maxCount !== 'number' ||\n          !Number.isInteger(opts.maxCount) ||\n          opts.maxCount < 0\n        ) {\n          throw new TypeError('SqliteCacheStore options.maxCount must be a non-negative integer')\n        }\n        this.#maxCount = opts.maxCount\n      }\n    }\n\n    if (!DatabaseSync) {\n      DatabaseSync = require('node:sqlite').DatabaseSync\n    }\n    this.#db = new DatabaseSync(opts?.location ?? ':memory:')\n\n    this.#db.exec(`\n      PRAGMA journal_mode = WAL;\n      PRAGMA synchronous = NORMAL;\n      PRAGMA temp_store = memory;\n      PRAGMA optimize;\n\n      CREATE TABLE IF NOT EXISTS cacheInterceptorV${VERSION} (\n        -- Data specific to us\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        url TEXT NOT NULL,\n        method TEXT NOT NULL,\n\n        -- Data returned to the interceptor\n        body BUF NULL,\n        deleteAt INTEGER NOT NULL,\n        statusCode INTEGER NOT NULL,\n        statusMessage TEXT NOT NULL,\n        headers TEXT NULL,\n        cacheControlDirectives TEXT NULL,\n        etag TEXT NULL,\n        vary TEXT NULL,\n        cachedAt INTEGER NOT NULL,\n        staleAt INTEGER NOT NULL\n      );\n\n      CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_getValuesQuery ON cacheInterceptorV${VERSION}(url, method, deleteAt);\n      CREATE INDEX IF NOT EXISTS idx_cacheInterceptorV${VERSION}_deleteByUrlQuery ON cacheInterceptorV${VERSION}(deleteAt);\n    `)\n\n    this.#getValuesQuery = this.#db.prepare(`\n      SELECT\n        id,\n        body,\n        deleteAt,\n        statusCode,\n        statusMessage,\n        headers,\n        etag,\n        cacheControlDirectives,\n        vary,\n        cachedAt,\n        staleAt\n      FROM cacheInterceptorV${VERSION}\n      WHERE\n        url = ?\n        AND method = ?\n      ORDER BY\n        deleteAt ASC\n    `)\n\n    this.#updateValueQuery = this.#db.prepare(`\n      UPDATE cacheInterceptorV${VERSION} SET\n        body = ?,\n        deleteAt = ?,\n        statusCode = ?,\n        statusMessage = ?,\n        headers = ?,\n        etag = ?,\n        cacheControlDirectives = ?,\n        cachedAt = ?,\n        staleAt = ?\n      WHERE\n        id = ?\n    `)\n\n    this.#insertValueQuery = this.#db.prepare(`\n      INSERT INTO cacheInterceptorV${VERSION} (\n        url,\n        method,\n        body,\n        deleteAt,\n        statusCode,\n        statusMessage,\n        headers,\n        etag,\n        cacheControlDirectives,\n        vary,\n        cachedAt,\n        staleAt\n      ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n    `)\n\n    this.#deleteByUrlQuery = this.#db.prepare(\n      `DELETE FROM cacheInterceptorV${VERSION} WHERE url = ?`\n    )\n\n    this.#countEntriesQuery = this.#db.prepare(\n      `SELECT COUNT(*) AS total FROM cacheInterceptorV${VERSION}`\n    )\n\n    this.#deleteExpiredValuesQuery = this.#db.prepare(\n      `DELETE FROM cacheInterceptorV${VERSION} WHERE deleteAt <= ?`\n    )\n\n    this.#deleteOldValuesQuery = this.#maxCount === Infinity\n      ? null\n      : this.#db.prepare(`\n        DELETE FROM cacheInterceptorV${VERSION}\n        WHERE id IN (\n          SELECT\n            id\n          FROM cacheInterceptorV${VERSION}\n          ORDER BY cachedAt ASC\n          LIMIT ?\n        )\n      `)\n  }\n\n  close () {\n    this.#db.close()\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key\n   * @returns {(import('../../types/cache-interceptor.d.ts').default.GetResult & { body?: Buffer }) | undefined}\n   */\n  get (key) {\n    assertCacheKey(key)\n\n    const value = this.#findValue(key)\n    return value\n      ? {\n          body: value.body ? Buffer.from(value.body.buffer, value.body.byteOffset, value.body.byteLength) : undefined,\n          statusCode: value.statusCode,\n          statusMessage: value.statusMessage,\n          headers: value.headers ? JSON.parse(value.headers) : undefined,\n          etag: value.etag ? value.etag : undefined,\n          vary: value.vary ? JSON.parse(value.vary) : undefined,\n          cacheControlDirectives: value.cacheControlDirectives\n            ? JSON.parse(value.cacheControlDirectives)\n            : undefined,\n          cachedAt: value.cachedAt,\n          staleAt: value.staleAt,\n          deleteAt: value.deleteAt\n        }\n      : undefined\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheValue & { body: null | Buffer | Array<Buffer>}} value\n   */\n  set (key, value) {\n    assertCacheKey(key)\n\n    const url = this.#makeValueUrl(key)\n    const body = Array.isArray(value.body) ? Buffer.concat(value.body) : value.body\n    const size = body?.byteLength\n\n    if (size && size > this.#maxEntrySize) {\n      return\n    }\n\n    const existingValue = this.#findValue(key, true)\n    if (existingValue) {\n      // Updating an existing response, let's overwrite it\n      this.#updateValueQuery.run(\n        body,\n        value.deleteAt,\n        value.statusCode,\n        value.statusMessage,\n        value.headers ? JSON.stringify(value.headers) : null,\n        value.etag ? value.etag : null,\n        value.cacheControlDirectives ? JSON.stringify(value.cacheControlDirectives) : null,\n        value.cachedAt,\n        value.staleAt,\n        existingValue.id\n      )\n    } else {\n      // New response, let's insert it\n      this.#insertValueQuery.run(\n        url,\n        key.method,\n        body,\n        value.deleteAt,\n        value.statusCode,\n        value.statusMessage,\n        value.headers ? JSON.stringify(value.headers) : null,\n        value.etag ? value.etag : null,\n        value.cacheControlDirectives ? JSON.stringify(value.cacheControlDirectives) : null,\n        value.vary ? JSON.stringify(value.vary) : null,\n        value.cachedAt,\n        value.staleAt\n      )\n      this.#prune()\n    }\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheValue} value\n   * @returns {Writable | undefined}\n   */\n  createWriteStream (key, value) {\n    assertCacheKey(key)\n    assertCacheValue(value)\n\n    let size = 0\n    /**\n     * @type {Buffer[] | null}\n     */\n    const body = []\n    const store = this\n\n    return new Writable({\n      decodeStrings: true,\n      write (chunk, encoding, callback) {\n        size += chunk.byteLength\n\n        if (size < store.#maxEntrySize) {\n          body.push(chunk)\n        } else {\n          this.destroy()\n        }\n\n        callback()\n      },\n      final (callback) {\n        store.set(key, { ...value, body })\n        callback()\n      }\n    })\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key\n   */\n  delete (key) {\n    if (typeof key !== 'object') {\n      throw new TypeError(`expected key to be object, got ${typeof key}`)\n    }\n\n    this.#deleteByUrlQuery.run(this.#makeValueUrl(key))\n  }\n\n  #prune () {\n    if (Number.isFinite(this.#maxCount) && this.size <= this.#maxCount) {\n      return 0\n    }\n\n    {\n      const removed = this.#deleteExpiredValuesQuery.run(Date.now()).changes\n      if (removed) {\n        return removed\n      }\n    }\n\n    {\n      const removed = this.#deleteOldValuesQuery?.run(Math.max(Math.floor(this.#maxCount * 0.1), 1)).changes\n      if (removed) {\n        return removed\n      }\n    }\n\n    return 0\n  }\n\n  /**\n   * Counts the number of rows in the cache\n   * @returns {Number}\n   */\n  get size () {\n    const { total } = this.#countEntriesQuery.get()\n    return total\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key\n   * @returns {string}\n   */\n  #makeValueUrl (key) {\n    return `${key.origin}/${key.path}`\n  }\n\n  /**\n   * @param {import('../../types/cache-interceptor.d.ts').default.CacheKey} key\n   * @param {boolean} [canBeExpired=false]\n   * @returns {SqliteStoreValue | undefined}\n   */\n  #findValue (key, canBeExpired = false) {\n    const url = this.#makeValueUrl(key)\n    const { headers, method } = key\n\n    /**\n     * @type {SqliteStoreValue[]}\n     */\n    const values = this.#getValuesQuery.all(url, method)\n\n    if (values.length === 0) {\n      return undefined\n    }\n\n    const now = Date.now()\n    for (const value of values) {\n      if (now >= value.deleteAt && !canBeExpired) {\n        continue\n      }\n\n      let matches = true\n\n      if (value.vary) {\n        const vary = JSON.parse(value.vary)\n\n        for (const header in vary) {\n          if (!headerValueEquals(headers[header], vary[header])) {\n            matches = false\n            break\n          }\n        }\n      }\n\n      if (matches) {\n        return value\n      }\n    }\n\n    return undefined\n  }\n}\n\n/**\n * @param {string|string[]|null|undefined} lhs\n * @param {string|string[]|null|undefined} rhs\n * @returns {boolean}\n */\nfunction headerValueEquals (lhs, rhs) {\n  if (lhs == null && rhs == null) {\n    return true\n  }\n\n  if ((lhs == null && rhs != null) ||\n      (lhs != null && rhs == null)) {\n    return false\n  }\n\n  if (Array.isArray(lhs) && Array.isArray(rhs)) {\n    if (lhs.length !== rhs.length) {\n      return false\n    }\n\n    return lhs.every((x, i) => x === rhs[i])\n  }\n\n  return lhs === rhs\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kConstruct } = require('../../core/symbols')\nconst { kEnumerableProperty } = require('../../core/util')\nconst {\n  iteratorMixin,\n  isValidHeaderName,\n  isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('../webidl')\nconst assert = require('node:assert')\nconst util = require('node:util')\n\n/**\n * @param {number} code\n * @returns {code is (0x0a | 0x0d | 0x09 | 0x20)}\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n  return code === 0x0a || code === 0x0d || code === 0x09 || code === 0x20\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n * @returns {string}\n */\nfunction headerValueNormalize (potentialValue) {\n  //  To normalize a byte sequence potentialValue, remove\n  //  any leading and trailing HTTP whitespace bytes from\n  //  potentialValue.\n  let i = 0; let j = potentialValue.length\n\n  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n  return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\n/**\n * @param {Headers} headers\n * @param {Array|Object} object\n */\nfunction fill (headers, object) {\n  // To fill a Headers object headers with a given object object, run these steps:\n\n  // 1. If object is a sequence, then for each header in object:\n  // Note: webidl conversion to array has already been done.\n  if (Array.isArray(object)) {\n    for (let i = 0; i < object.length; ++i) {\n      const header = object[i]\n      // 1. If header does not contain exactly two items, then throw a TypeError.\n      if (header.length !== 2) {\n        throw webidl.errors.exception({\n          header: 'Headers constructor',\n          message: `expected name/value pair to be length 2, found ${header.length}.`\n        })\n      }\n\n      // 2. Append (header’s first item, header’s second item) to headers.\n      appendHeader(headers, header[0], header[1])\n    }\n  } else if (typeof object === 'object' && object !== null) {\n    // Note: null should throw\n\n    // 2. Otherwise, object is a record, then for each key → value in object,\n    //    append (key, value) to headers\n    const keys = Object.keys(object)\n    for (let i = 0; i < keys.length; ++i) {\n      appendHeader(headers, keys[i], object[keys[i]])\n    }\n  } else {\n    throw webidl.errors.conversionFailed({\n      prefix: 'Headers constructor',\n      argument: 'Argument 1',\n      types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']\n    })\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n * @param {Headers} headers\n * @param {string} name\n * @param {string} value\n */\nfunction appendHeader (headers, name, value) {\n  // 1. Normalize value.\n  value = headerValueNormalize(value)\n\n  // 2. If name is not a header name or value is not a\n  //    header value, then throw a TypeError.\n  if (!isValidHeaderName(name)) {\n    throw webidl.errors.invalidArgument({\n      prefix: 'Headers.append',\n      value: name,\n      type: 'header name'\n    })\n  } else if (!isValidHeaderValue(value)) {\n    throw webidl.errors.invalidArgument({\n      prefix: 'Headers.append',\n      value,\n      type: 'header value'\n    })\n  }\n\n  // 3. If headers’s guard is \"immutable\", then throw a TypeError.\n  // 4. Otherwise, if headers’s guard is \"request\" and name is a\n  //    forbidden header name, return.\n  // 5. Otherwise, if headers’s guard is \"request-no-cors\":\n  //    TODO\n  // Note: undici does not implement forbidden header names\n  if (getHeadersGuard(headers) === 'immutable') {\n    throw new TypeError('immutable')\n  }\n\n  // 6. Otherwise, if headers’s guard is \"response\" and name is a\n  //    forbidden response-header name, return.\n\n  // 7. Append (name, value) to headers’s header list.\n  return getHeadersList(headers).append(name, value, false)\n\n  // 8. If headers’s guard is \"request-no-cors\", then remove\n  //    privileged no-CORS request headers from headers\n}\n\n// https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n/**\n * @param {Headers} target\n */\nfunction headersListSortAndCombine (target) {\n  const headersList = getHeadersList(target)\n\n  if (!headersList) {\n    return []\n  }\n\n  if (headersList.sortedMap) {\n    return headersList.sortedMap\n  }\n\n  // 1. Let headers be an empty list of headers with the key being the name\n  //    and value the value.\n  const headers = []\n\n  // 2. Let names be the result of convert header names to a sorted-lowercase\n  //    set with all the names of the headers in list.\n  const names = headersList.toSortedArray()\n\n  const cookies = headersList.cookies\n\n  // fast-path\n  if (cookies === null || cookies.length === 1) {\n    // Note: The non-null assertion of value has already been done by `HeadersList#toSortedArray`\n    return (headersList.sortedMap = names)\n  }\n\n  // 3. For each name of names:\n  for (let i = 0; i < names.length; ++i) {\n    const { 0: name, 1: value } = names[i]\n    // 1. If name is `set-cookie`, then:\n    if (name === 'set-cookie') {\n      // 1. Let values be a list of all values of headers in list whose name\n      //    is a byte-case-insensitive match for name, in order.\n\n      // 2. For each value of values:\n      // 1. Append (name, value) to headers.\n      for (let j = 0; j < cookies.length; ++j) {\n        headers.push([name, cookies[j]])\n      }\n    } else {\n      // 2. Otherwise:\n\n      // 1. Let value be the result of getting name from list.\n\n      // 2. Assert: value is non-null.\n      // Note: This operation was done by `HeadersList#toSortedArray`.\n\n      // 3. Append (name, value) to headers.\n      headers.push([name, value])\n    }\n  }\n\n  // 4. Return headers.\n  return (headersList.sortedMap = headers)\n}\n\nfunction compareHeaderName (a, b) {\n  return a[0] < b[0] ? -1 : 1\n}\n\nclass HeadersList {\n  /** @type {[string, string][]|null} */\n  cookies = null\n\n  sortedMap\n  headersMap\n\n  constructor (init) {\n    if (init instanceof HeadersList) {\n      this.headersMap = new Map(init.headersMap)\n      this.sortedMap = init.sortedMap\n      this.cookies = init.cookies === null ? null : [...init.cookies]\n    } else {\n      this.headersMap = new Map(init)\n      this.sortedMap = null\n    }\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#header-list-contains\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   */\n  contains (name, isLowerCase) {\n    // A header list list contains a header name name if list\n    // contains a header whose name is a byte-case-insensitive\n    // match for name.\n\n    return this.headersMap.has(isLowerCase ? name : name.toLowerCase())\n  }\n\n  clear () {\n    this.headersMap.clear()\n    this.sortedMap = null\n    this.cookies = null\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-append\n   * @param {string} name\n   * @param {string} value\n   * @param {boolean} isLowerCase\n   */\n  append (name, value, isLowerCase) {\n    this.sortedMap = null\n\n    // 1. If list contains name, then set name to the first such\n    //    header’s name.\n    const lowercaseName = isLowerCase ? name : name.toLowerCase()\n    const exists = this.headersMap.get(lowercaseName)\n\n    // 2. Append (name, value) to list.\n    if (exists) {\n      const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n      this.headersMap.set(lowercaseName, {\n        name: exists.name,\n        value: `${exists.value}${delimiter}${value}`\n      })\n    } else {\n      this.headersMap.set(lowercaseName, { name, value })\n    }\n\n    if (lowercaseName === 'set-cookie') {\n      (this.cookies ??= []).push(value)\n    }\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-set\n   * @param {string} name\n   * @param {string} value\n   * @param {boolean} isLowerCase\n   */\n  set (name, value, isLowerCase) {\n    this.sortedMap = null\n    const lowercaseName = isLowerCase ? name : name.toLowerCase()\n\n    if (lowercaseName === 'set-cookie') {\n      this.cookies = [value]\n    }\n\n    // 1. If list contains name, then set the value of\n    //    the first such header to value and remove the\n    //    others.\n    // 2. Otherwise, append header (name, value) to list.\n    this.headersMap.set(lowercaseName, { name, value })\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-delete\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   */\n  delete (name, isLowerCase) {\n    this.sortedMap = null\n    if (!isLowerCase) name = name.toLowerCase()\n\n    if (name === 'set-cookie') {\n      this.cookies = null\n    }\n\n    this.headersMap.delete(name)\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-get\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   * @returns {string | null}\n   */\n  get (name, isLowerCase) {\n    // 1. If list does not contain name, then return null.\n    // 2. Return the values of all headers in list whose name\n    //    is a byte-case-insensitive match for name,\n    //    separated from each other by 0x2C 0x20, in order.\n    return this.headersMap.get(isLowerCase ? name : name.toLowerCase())?.value ?? null\n  }\n\n  * [Symbol.iterator] () {\n    // use the lowercased name\n    for (const { 0: name, 1: { value } } of this.headersMap) {\n      yield [name, value]\n    }\n  }\n\n  get entries () {\n    const headers = {}\n\n    if (this.headersMap.size !== 0) {\n      for (const { name, value } of this.headersMap.values()) {\n        headers[name] = value\n      }\n    }\n\n    return headers\n  }\n\n  rawValues () {\n    return this.headersMap.values()\n  }\n\n  get entriesList () {\n    const headers = []\n\n    if (this.headersMap.size !== 0) {\n      for (const { 0: lowerName, 1: { name, value } } of this.headersMap) {\n        if (lowerName === 'set-cookie') {\n          for (const cookie of this.cookies) {\n            headers.push([name, cookie])\n          }\n        } else {\n          headers.push([name, value])\n        }\n      }\n    }\n\n    return headers\n  }\n\n  // https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set\n  toSortedArray () {\n    const size = this.headersMap.size\n    const array = new Array(size)\n    // In most cases, you will use the fast-path.\n    // fast-path: Use binary insertion sort for small arrays.\n    if (size <= 32) {\n      if (size === 0) {\n        // If empty, it is an empty array. To avoid the first index assignment.\n        return array\n      }\n      // Improve performance by unrolling loop and avoiding double-loop.\n      // Double-loop-less version of the binary insertion sort.\n      const iterator = this.headersMap[Symbol.iterator]()\n      const firstValue = iterator.next().value\n      // set [name, value] to first index.\n      array[0] = [firstValue[0], firstValue[1].value]\n      // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n      // 3.2.2. Assert: value is non-null.\n      assert(firstValue[1].value !== null)\n      for (\n        let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value;\n        i < size;\n        ++i\n      ) {\n        // get next value\n        value = iterator.next().value\n        // set [name, value] to current index.\n        x = array[i] = [value[0], value[1].value]\n        // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n        // 3.2.2. Assert: value is non-null.\n        assert(x[1] !== null)\n        left = 0\n        right = i\n        // binary search\n        while (left < right) {\n          // middle index\n          pivot = left + ((right - left) >> 1)\n          // compare header name\n          if (array[pivot][0] <= x[0]) {\n            left = pivot + 1\n          } else {\n            right = pivot\n          }\n        }\n        if (i !== pivot) {\n          j = i\n          while (j > left) {\n            array[j] = array[--j]\n          }\n          array[left] = x\n        }\n      }\n      /* c8 ignore next 4 */\n      if (!iterator.next().done) {\n        // This is for debugging and will never be called.\n        throw new TypeError('Unreachable')\n      }\n      return array\n    } else {\n      // This case would be a rare occurrence.\n      // slow-path: fallback\n      let i = 0\n      for (const { 0: name, 1: { value } } of this.headersMap) {\n        array[i++] = [name, value]\n        // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n        // 3.2.2. Assert: value is non-null.\n        assert(value !== null)\n      }\n      return array.sort(compareHeaderName)\n    }\n  }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n  #guard\n  /**\n   * @type {HeadersList}\n   */\n  #headersList\n\n  /**\n   * @param {HeadersInit|Symbol} [init]\n   * @returns\n   */\n  constructor (init = undefined) {\n    webidl.util.markAsUncloneable(this)\n\n    if (init === kConstruct) {\n      return\n    }\n\n    this.#headersList = new HeadersList()\n\n    // The new Headers(init) constructor steps are:\n\n    // 1. Set this’s guard to \"none\".\n    this.#guard = 'none'\n\n    // 2. If init is given, then fill this with init.\n    if (init !== undefined) {\n      init = webidl.converters.HeadersInit(init, 'Headers constructor', 'init')\n      fill(this, init)\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-append\n  append (name, value) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 2, 'Headers.append')\n\n    const prefix = 'Headers.append'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n    value = webidl.converters.ByteString(value, prefix, 'value')\n\n    return appendHeader(this, name, value)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-delete\n  delete (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.delete')\n\n    const prefix = 'Headers.delete'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix: 'Headers.delete',\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. If this’s guard is \"immutable\", then throw a TypeError.\n    // 3. Otherwise, if this’s guard is \"request\" and name is a\n    //    forbidden header name, return.\n    // 4. Otherwise, if this’s guard is \"request-no-cors\", name\n    //    is not a no-CORS-safelisted request-header name, and\n    //    name is not a privileged no-CORS request-header name,\n    //    return.\n    // 5. Otherwise, if this’s guard is \"response\" and name is\n    //    a forbidden response-header name, return.\n    // Note: undici does not implement forbidden header names\n    if (this.#guard === 'immutable') {\n      throw new TypeError('immutable')\n    }\n\n    // 6. If this’s header list does not contain name, then\n    //    return.\n    if (!this.#headersList.contains(name, false)) {\n      return\n    }\n\n    // 7. Delete name from this’s header list.\n    // 8. If this’s guard is \"request-no-cors\", then remove\n    //    privileged no-CORS request headers from this.\n    this.#headersList.delete(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-get\n  get (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.get')\n\n    const prefix = 'Headers.get'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. Return the result of getting name from this’s header\n    //    list.\n    return this.#headersList.get(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-has\n  has (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.has')\n\n    const prefix = 'Headers.has'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. Return true if this’s header list contains name;\n    //    otherwise false.\n    return this.#headersList.contains(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-set\n  set (name, value) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 2, 'Headers.set')\n\n    const prefix = 'Headers.set'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n    value = webidl.converters.ByteString(value, prefix, 'value')\n\n    // 1. Normalize value.\n    value = headerValueNormalize(value)\n\n    // 2. If name is not a header name or value is not a\n    //    header value, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    } else if (!isValidHeaderValue(value)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value,\n        type: 'header value'\n      })\n    }\n\n    // 3. If this’s guard is \"immutable\", then throw a TypeError.\n    // 4. Otherwise, if this’s guard is \"request\" and name is a\n    //    forbidden header name, return.\n    // 5. Otherwise, if this’s guard is \"request-no-cors\" and\n    //    name/value is not a no-CORS-safelisted request-header,\n    //    return.\n    // 6. Otherwise, if this’s guard is \"response\" and name is a\n    //    forbidden response-header name, return.\n    // Note: undici does not implement forbidden header names\n    if (this.#guard === 'immutable') {\n      throw new TypeError('immutable')\n    }\n\n    // 7. Set (name, value) in this’s header list.\n    // 8. If this’s guard is \"request-no-cors\", then remove\n    //    privileged no-CORS request headers from this\n    this.#headersList.set(name, value, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n  getSetCookie () {\n    webidl.brandCheck(this, Headers)\n\n    // 1. If this’s header list does not contain `Set-Cookie`, then return « ».\n    // 2. Return the values of all headers in this’s header list whose name is\n    //    a byte-case-insensitive match for `Set-Cookie`, in order.\n\n    const list = this.#headersList.cookies\n\n    if (list) {\n      return [...list]\n    }\n\n    return []\n  }\n\n  [util.inspect.custom] (depth, options) {\n    options.depth ??= depth\n\n    return `Headers ${util.formatWithOptions(options, this.#headersList.entries)}`\n  }\n\n  static getHeadersGuard (o) {\n    return o.#guard\n  }\n\n  static setHeadersGuard (o, guard) {\n    o.#guard = guard\n  }\n\n  /**\n   * @param {Headers} o\n   */\n  static getHeadersList (o) {\n    return o.#headersList\n  }\n\n  /**\n   * @param {Headers} target\n   * @param {HeadersList} list\n   */\n  static setHeadersList (target, list) {\n    target.#headersList = list\n  }\n}\n\nconst { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers\nReflect.deleteProperty(Headers, 'getHeadersGuard')\nReflect.deleteProperty(Headers, 'setHeadersGuard')\nReflect.deleteProperty(Headers, 'getHeadersList')\nReflect.deleteProperty(Headers, 'setHeadersList')\n\niteratorMixin('Headers', Headers, headersListSortAndCombine, 0, 1)\n\nObject.defineProperties(Headers.prototype, {\n  append: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  get: kEnumerableProperty,\n  has: kEnumerableProperty,\n  set: kEnumerableProperty,\n  getSetCookie: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Headers',\n    configurable: true\n  },\n  [util.inspect.custom]: {\n    enumerable: false\n  }\n})\n\nwebidl.converters.HeadersInit = function (V, prefix, argument) {\n  if (webidl.util.Type(V) === webidl.util.Types.OBJECT) {\n    const iterator = Reflect.get(V, Symbol.iterator)\n\n    // A work-around to ensure we send the properly-cased Headers when V is a Headers object.\n    // Read https://github.com/nodejs/undici/pull/3159#issuecomment-2075537226 before touching, please.\n    if (!util.types.isProxy(V) && iterator === Headers.prototype.entries) { // Headers object\n      try {\n        return getHeadersList(V).entriesList\n      } catch {\n        // fall-through\n      }\n    }\n\n    if (typeof iterator === 'function') {\n      return webidl.converters['sequence<sequence<ByteString>>'](V, prefix, argument, iterator.bind(V))\n    }\n\n    return webidl.converters['record<ByteString, ByteString>'](V, prefix, argument)\n  }\n\n  throw webidl.errors.conversionFailed({\n    prefix: 'Headers constructor',\n    argument: 'Argument 1',\n    types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']\n  })\n}\n\nmodule.exports = {\n  fill,\n  // for test.\n  compareHeaderName,\n  Headers,\n  HeadersList,\n  getHeadersGuard,\n  setHeadersGuard,\n  setHeadersList,\n  getHeadersList\n}\n","'use strict'\n\nconst { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require('./headers')\nconst { extractBody, cloneBody, mixinBody, streamRegistry, bodyUnusable } = require('./body')\nconst util = require('../../core/util')\nconst nodeUtil = require('node:util')\nconst { kEnumerableProperty } = util\nconst {\n  isValidReasonPhrase,\n  isCancelled,\n  isAborted,\n  isErrorLike,\n  environmentSettingsObject: relevantRealm\n} = require('./util')\nconst {\n  redirectStatusSet,\n  nullBodyStatus\n} = require('./constants')\nconst { webidl } = require('../webidl')\nconst { URLSerializer } = require('./data-url')\nconst { kConstruct } = require('../../core/symbols')\nconst assert = require('node:assert')\nconst { isomorphicEncode, serializeJavascriptValueToJSONString } = require('../infra')\n\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n  /** @type {Headers} */\n  #headers\n\n  #state\n\n  // Creates network error Response.\n  static error () {\n    // The static error() method steps are to return the result of creating a\n    // Response object, given a new network error, \"immutable\", and this’s\n    // relevant Realm.\n    const responseObject = fromInnerResponse(makeNetworkError(), 'immutable')\n\n    return responseObject\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-response-json\n  static json (data, init = undefined) {\n    webidl.argumentLengthCheck(arguments, 1, 'Response.json')\n\n    if (init !== null) {\n      init = webidl.converters.ResponseInit(init)\n    }\n\n    // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n    const bytes = textEncoder.encode(\n      serializeJavascriptValueToJSONString(data)\n    )\n\n    // 2. Let body be the result of extracting bytes.\n    const body = extractBody(bytes)\n\n    // 3. Let responseObject be the result of creating a Response object, given a new response,\n    //    \"response\", and this’s relevant Realm.\n    const responseObject = fromInnerResponse(makeResponse({}), 'response')\n\n    // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n    initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n    // 5. Return responseObject.\n    return responseObject\n  }\n\n  // Creates a redirect Response that redirects to url with status status.\n  static redirect (url, status = 302) {\n    webidl.argumentLengthCheck(arguments, 1, 'Response.redirect')\n\n    url = webidl.converters.USVString(url)\n    status = webidl.converters['unsigned short'](status)\n\n    // 1. Let parsedURL be the result of parsing url with current settings\n    // object’s API base URL.\n    // 2. If parsedURL is failure, then throw a TypeError.\n    // TODO: base-URL?\n    let parsedURL\n    try {\n      parsedURL = new URL(url, relevantRealm.settingsObject.baseUrl)\n    } catch (err) {\n      throw new TypeError(`Failed to parse URL from ${url}`, { cause: err })\n    }\n\n    // 3. If status is not a redirect status, then throw a RangeError.\n    if (!redirectStatusSet.has(status)) {\n      throw new RangeError(`Invalid status code ${status}`)\n    }\n\n    // 4. Let responseObject be the result of creating a Response object,\n    // given a new response, \"immutable\", and this’s relevant Realm.\n    const responseObject = fromInnerResponse(makeResponse({}), 'immutable')\n\n    // 5. Set responseObject’s response’s status to status.\n    responseObject.#state.status = status\n\n    // 6. Let value be parsedURL, serialized and isomorphic encoded.\n    const value = isomorphicEncode(URLSerializer(parsedURL))\n\n    // 7. Append `Location`/value to responseObject’s response’s header list.\n    responseObject.#state.headersList.append('location', value, true)\n\n    // 8. Return responseObject.\n    return responseObject\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-response\n  constructor (body = null, init = undefined) {\n    webidl.util.markAsUncloneable(this)\n\n    if (body === kConstruct) {\n      return\n    }\n\n    if (body !== null) {\n      body = webidl.converters.BodyInit(body, 'Response', 'body')\n    }\n\n    init = webidl.converters.ResponseInit(init)\n\n    // 1. Set this’s response to a new response.\n    this.#state = makeResponse({})\n\n    // 2. Set this’s headers to a new Headers object with this’s relevant\n    // Realm, whose header list is this’s response’s header list and guard\n    // is \"response\".\n    this.#headers = new Headers(kConstruct)\n    setHeadersGuard(this.#headers, 'response')\n    setHeadersList(this.#headers, this.#state.headersList)\n\n    // 3. Let bodyWithType be null.\n    let bodyWithType = null\n\n    // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n    if (body != null) {\n      const [extractedBody, type] = extractBody(body)\n      bodyWithType = { body: extractedBody, type }\n    }\n\n    // 5. Perform initialize a response given this, init, and bodyWithType.\n    initializeResponse(this, init, bodyWithType)\n  }\n\n  // Returns response’s type, e.g., \"cors\".\n  get type () {\n    webidl.brandCheck(this, Response)\n\n    // The type getter steps are to return this’s response’s type.\n    return this.#state.type\n  }\n\n  // Returns response’s URL, if it has one; otherwise the empty string.\n  get url () {\n    webidl.brandCheck(this, Response)\n\n    const urlList = this.#state.urlList\n\n    // The url getter steps are to return the empty string if this’s\n    // response’s URL is null; otherwise this’s response’s URL,\n    // serialized with exclude fragment set to true.\n    const url = urlList[urlList.length - 1] ?? null\n\n    if (url === null) {\n      return ''\n    }\n\n    return URLSerializer(url, true)\n  }\n\n  // Returns whether response was obtained through a redirect.\n  get redirected () {\n    webidl.brandCheck(this, Response)\n\n    // The redirected getter steps are to return true if this’s response’s URL\n    // list has more than one item; otherwise false.\n    return this.#state.urlList.length > 1\n  }\n\n  // Returns response’s status.\n  get status () {\n    webidl.brandCheck(this, Response)\n\n    // The status getter steps are to return this’s response’s status.\n    return this.#state.status\n  }\n\n  // Returns whether response’s status is an ok status.\n  get ok () {\n    webidl.brandCheck(this, Response)\n\n    // The ok getter steps are to return true if this’s response’s status is an\n    // ok status; otherwise false.\n    return this.#state.status >= 200 && this.#state.status <= 299\n  }\n\n  // Returns response’s status message.\n  get statusText () {\n    webidl.brandCheck(this, Response)\n\n    // The statusText getter steps are to return this’s response’s status\n    // message.\n    return this.#state.statusText\n  }\n\n  // Returns response’s headers as Headers.\n  get headers () {\n    webidl.brandCheck(this, Response)\n\n    // The headers getter steps are to return this’s headers.\n    return this.#headers\n  }\n\n  get body () {\n    webidl.brandCheck(this, Response)\n\n    return this.#state.body ? this.#state.body.stream : null\n  }\n\n  get bodyUsed () {\n    webidl.brandCheck(this, Response)\n\n    return !!this.#state.body && util.isDisturbed(this.#state.body.stream)\n  }\n\n  // Returns a clone of response.\n  clone () {\n    webidl.brandCheck(this, Response)\n\n    // 1. If this is unusable, then throw a TypeError.\n    if (bodyUnusable(this.#state)) {\n      throw webidl.errors.exception({\n        header: 'Response.clone',\n        message: 'Body has already been consumed.'\n      })\n    }\n\n    // 2. Let clonedResponse be the result of cloning this’s response.\n    const clonedResponse = cloneResponse(this.#state)\n\n    // Note: To re-register because of a new stream.\n    // Don't set finalizers other than for fetch responses.\n    if (this.#state.urlList.length !== 0 && this.#state.body?.stream) {\n      streamRegistry.register(this, new WeakRef(this.#state.body.stream))\n    }\n\n    // 3. Return the result of creating a Response object, given\n    // clonedResponse, this’s headers’s guard, and this’s relevant Realm.\n    return fromInnerResponse(clonedResponse, getHeadersGuard(this.#headers))\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    if (options.depth === null) {\n      options.depth = 2\n    }\n\n    options.colors ??= true\n\n    const properties = {\n      status: this.status,\n      statusText: this.statusText,\n      headers: this.headers,\n      body: this.body,\n      bodyUsed: this.bodyUsed,\n      ok: this.ok,\n      redirected: this.redirected,\n      type: this.type,\n      url: this.url\n    }\n\n    return `Response ${nodeUtil.formatWithOptions(options, properties)}`\n  }\n\n  /**\n   * @param {Response} response\n   */\n  static getResponseHeaders (response) {\n    return response.#headers\n  }\n\n  /**\n   * @param {Response} response\n   * @param {Headers} newHeaders\n   */\n  static setResponseHeaders (response, newHeaders) {\n    response.#headers = newHeaders\n  }\n\n  /**\n   * @param {Response} response\n   */\n  static getResponseState (response) {\n    return response.#state\n  }\n\n  /**\n   * @param {Response} response\n   * @param {any} newState\n   */\n  static setResponseState (response, newState) {\n    response.#state = newState\n  }\n}\n\nconst { getResponseHeaders, setResponseHeaders, getResponseState, setResponseState } = Response\nReflect.deleteProperty(Response, 'getResponseHeaders')\nReflect.deleteProperty(Response, 'setResponseHeaders')\nReflect.deleteProperty(Response, 'getResponseState')\nReflect.deleteProperty(Response, 'setResponseState')\n\nmixinBody(Response, getResponseState)\n\nObject.defineProperties(Response.prototype, {\n  type: kEnumerableProperty,\n  url: kEnumerableProperty,\n  status: kEnumerableProperty,\n  ok: kEnumerableProperty,\n  redirected: kEnumerableProperty,\n  statusText: kEnumerableProperty,\n  headers: kEnumerableProperty,\n  clone: kEnumerableProperty,\n  body: kEnumerableProperty,\n  bodyUsed: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Response',\n    configurable: true\n  }\n})\n\nObject.defineProperties(Response, {\n  json: kEnumerableProperty,\n  redirect: kEnumerableProperty,\n  error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n  // To clone a response response, run these steps:\n\n  // 1. If response is a filtered response, then return a new identical\n  // filtered response whose internal response is a clone of response’s\n  // internal response.\n  if (response.internalResponse) {\n    return filterResponse(\n      cloneResponse(response.internalResponse),\n      response.type\n    )\n  }\n\n  // 2. Let newResponse be a copy of response, except for its body.\n  const newResponse = makeResponse({ ...response, body: null })\n\n  // 3. If response’s body is non-null, then set newResponse’s body to the\n  // result of cloning response’s body.\n  if (response.body != null) {\n    newResponse.body = cloneBody(response.body)\n  }\n\n  // 4. Return newResponse.\n  return newResponse\n}\n\nfunction makeResponse (init) {\n  return {\n    aborted: false,\n    rangeRequested: false,\n    timingAllowPassed: false,\n    requestIncludesCredentials: false,\n    type: 'default',\n    status: 200,\n    timingInfo: null,\n    cacheState: '',\n    statusText: '',\n    ...init,\n    headersList: init?.headersList\n      ? new HeadersList(init?.headersList)\n      : new HeadersList(),\n    urlList: init?.urlList ? [...init.urlList] : []\n  }\n}\n\nfunction makeNetworkError (reason) {\n  const isError = isErrorLike(reason)\n  return makeResponse({\n    type: 'error',\n    status: 0,\n    error: isError\n      ? reason\n      : new Error(reason ? String(reason) : reason),\n    aborted: reason && reason.name === 'AbortError'\n  })\n}\n\n// @see https://fetch.spec.whatwg.org/#concept-network-error\nfunction isNetworkError (response) {\n  return (\n    // A network error is a response whose type is \"error\",\n    response.type === 'error' &&\n    // status is 0\n    response.status === 0\n  )\n}\n\nfunction makeFilteredResponse (response, state) {\n  state = {\n    internalResponse: response,\n    ...state\n  }\n\n  return new Proxy(response, {\n    get (target, p) {\n      return p in state ? state[p] : target[p]\n    },\n    set (target, p, value) {\n      assert(!(p in state))\n      target[p] = value\n      return true\n    }\n  })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n  // Set response to the following filtered response with response as its\n  // internal response, depending on request’s response tainting:\n  if (type === 'basic') {\n    // A basic filtered response is a filtered response whose type is \"basic\"\n    // and header list excludes any headers in internal response’s header list\n    // whose name is a forbidden response-header name.\n\n    // Note: undici does not implement forbidden response-header names\n    return makeFilteredResponse(response, {\n      type: 'basic',\n      headersList: response.headersList\n    })\n  } else if (type === 'cors') {\n    // A CORS filtered response is a filtered response whose type is \"cors\"\n    // and header list excludes any headers in internal response’s header\n    // list whose name is not a CORS-safelisted response-header name, given\n    // internal response’s CORS-exposed header-name list.\n\n    // Note: undici does not implement CORS-safelisted response-header names\n    return makeFilteredResponse(response, {\n      type: 'cors',\n      headersList: response.headersList\n    })\n  } else if (type === 'opaque') {\n    // An opaque filtered response is a filtered response whose type is\n    // \"opaque\", URL list is the empty list, status is 0, status message\n    // is the empty byte sequence, header list is empty, and body is null.\n\n    return makeFilteredResponse(response, {\n      type: 'opaque',\n      urlList: [],\n      status: 0,\n      statusText: '',\n      body: null\n    })\n  } else if (type === 'opaqueredirect') {\n    // An opaque-redirect filtered response is a filtered response whose type\n    // is \"opaqueredirect\", status is 0, status message is the empty byte\n    // sequence, header list is empty, and body is null.\n\n    return makeFilteredResponse(response, {\n      type: 'opaqueredirect',\n      status: 0,\n      statusText: '',\n      headersList: [],\n      body: null\n    })\n  } else {\n    assert(false)\n  }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n  // 1. Assert: fetchParams is canceled.\n  assert(isCancelled(fetchParams))\n\n  // 2. Return an aborted network error if fetchParams is aborted;\n  // otherwise return a network error.\n  return isAborted(fetchParams)\n    ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n    : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n  // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n  //    throw a RangeError.\n  if (init.status !== null && (init.status < 200 || init.status > 599)) {\n    throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n  }\n\n  // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n  //    then throw a TypeError.\n  if ('statusText' in init && init.statusText != null) {\n    // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n    //   reason-phrase  = *( HTAB / SP / VCHAR / obs-text )\n    if (!isValidReasonPhrase(String(init.statusText))) {\n      throw new TypeError('Invalid statusText')\n    }\n  }\n\n  // 3. Set response’s response’s status to init[\"status\"].\n  if ('status' in init && init.status != null) {\n    getResponseState(response).status = init.status\n  }\n\n  // 4. Set response’s response’s status message to init[\"statusText\"].\n  if ('statusText' in init && init.statusText != null) {\n    getResponseState(response).statusText = init.statusText\n  }\n\n  // 5. If init[\"headers\"] exists, then fill response’s headers with init[\"headers\"].\n  if ('headers' in init && init.headers != null) {\n    fill(getResponseHeaders(response), init.headers)\n  }\n\n  // 6. If body was given, then:\n  if (body) {\n    // 1. If response's status is a null body status, then throw a TypeError.\n    if (nullBodyStatus.includes(response.status)) {\n      throw webidl.errors.exception({\n        header: 'Response constructor',\n        message: `Invalid response status code ${response.status}`\n      })\n    }\n\n    // 2. Set response's body to body's body.\n    getResponseState(response).body = body.body\n\n    // 3. If body's type is non-null and response's header list does not contain\n    //    `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n    if (body.type != null && !getResponseState(response).headersList.contains('content-type', true)) {\n      getResponseState(response).headersList.append('content-type', body.type, true)\n    }\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#response-create\n * @param {any} innerResponse\n * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard\n * @returns {Response}\n */\nfunction fromInnerResponse (innerResponse, guard) {\n  const response = new Response(kConstruct)\n  setResponseState(response, innerResponse)\n  const headers = new Headers(kConstruct)\n  setResponseHeaders(response, headers)\n  setHeadersList(headers, innerResponse.headersList)\n  setHeadersGuard(headers, guard)\n\n  // Note: If innerResponse's urlList contains a URL, it is a fetch response.\n  if (innerResponse.urlList.length !== 0 && innerResponse.body?.stream) {\n    // If the target (response) is reclaimed, the cleanup callback may be called at some point with\n    // the held value provided for it (innerResponse.body.stream). The held value can be any value:\n    // a primitive or an object, even undefined. If the held value is an object, the registry keeps\n    // a strong reference to it (so it can pass it to the cleanup callback later). Reworded from\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n    streamRegistry.register(response, new WeakRef(innerResponse.body.stream))\n  }\n\n  return response\n}\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V, prefix, name) {\n  if (typeof V === 'string') {\n    return webidl.converters.USVString(V, prefix, name)\n  }\n\n  if (webidl.is.Blob(V)) {\n    return V\n  }\n\n  if (webidl.is.BufferSource(V)) {\n    return V\n  }\n\n  if (webidl.is.FormData(V)) {\n    return V\n  }\n\n  if (webidl.is.URLSearchParams(V)) {\n    return V\n  }\n\n  return webidl.converters.DOMString(V, prefix, name)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V, prefix, argument) {\n  if (webidl.is.ReadableStream(V)) {\n    return V\n  }\n\n  // Note: the spec doesn't include async iterables,\n  // this is an undici extension.\n  if (V?.[Symbol.asyncIterator]) {\n    return V\n  }\n\n  return webidl.converters.XMLHttpRequestBodyInit(V, prefix, argument)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n  {\n    key: 'status',\n    converter: webidl.converters['unsigned short'],\n    defaultValue: () => 200\n  },\n  {\n    key: 'statusText',\n    converter: webidl.converters.ByteString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'headers',\n    converter: webidl.converters.HeadersInit\n  }\n])\n\nwebidl.is.Response = webidl.util.MakeTypeAssertion(Response)\n\nmodule.exports = {\n  isNetworkError,\n  makeNetworkError,\n  makeResponse,\n  makeAppropriateNetworkError,\n  filterResponse,\n  Response,\n  cloneResponse,\n  fromInnerResponse,\n  getResponseState\n}\n","/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody, bodyUnusable } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require('./headers')\nconst util = require('../../core/util')\nconst nodeUtil = require('node:util')\nconst {\n  isValidHTTPToken,\n  sameOrigin,\n  environmentSettingsObject\n} = require('./util')\nconst {\n  forbiddenMethodsSet,\n  corsSafeListedMethodsSet,\n  referrerPolicy,\n  requestRedirect,\n  requestMode,\n  requestCredentials,\n  requestCache,\n  requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty, normalizedMethodRecordsBase, normalizedMethodRecords } = util\nconst { webidl } = require('../webidl')\nconst { URLSerializer } = require('./data-url')\nconst { kConstruct } = require('../../core/symbols')\nconst assert = require('node:assert')\nconst { getMaxListeners, setMaxListeners, defaultMaxListeners } = require('node:events')\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n  signal.removeEventListener('abort', abort)\n})\n\nconst dependentControllerMap = new WeakMap()\n\nlet abortSignalHasEventHandlerLeakWarning\n\ntry {\n  abortSignalHasEventHandlerLeakWarning = getMaxListeners(new AbortController().signal) > 0\n} catch {\n  abortSignalHasEventHandlerLeakWarning = false\n}\n\nfunction buildAbort (acRef) {\n  return abort\n\n  function abort () {\n    const ac = acRef.deref()\n    if (ac !== undefined) {\n      // Currently, there is a problem with FinalizationRegistry.\n      // https://github.com/nodejs/node/issues/49344\n      // https://github.com/nodejs/node/issues/47748\n      // In the case of abort, the first step is to unregister from it.\n      // If the controller can refer to it, it is still registered.\n      // It will be removed in the future.\n      requestFinalizer.unregister(abort)\n\n      // Unsubscribe a listener.\n      // FinalizationRegistry will no longer be called, so this must be done.\n      this.removeEventListener('abort', abort)\n\n      ac.abort(this.reason)\n\n      const controllerList = dependentControllerMap.get(ac.signal)\n\n      if (controllerList !== undefined) {\n        if (controllerList.size !== 0) {\n          for (const ref of controllerList) {\n            const ctrl = ref.deref()\n            if (ctrl !== undefined) {\n              ctrl.abort(this.reason)\n            }\n          }\n          controllerList.clear()\n        }\n        dependentControllerMap.delete(ac.signal)\n      }\n    }\n  }\n}\n\nlet patchMethodWarning = false\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n  /** @type {AbortSignal} */\n  #signal\n\n  /** @type {import('../../dispatcher/dispatcher')} */\n  #dispatcher\n\n  /** @type {Headers} */\n  #headers\n\n  #state\n\n  // https://fetch.spec.whatwg.org/#dom-request\n  constructor (input, init = undefined) {\n    webidl.util.markAsUncloneable(this)\n\n    if (input === kConstruct) {\n      return\n    }\n\n    const prefix = 'Request constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    input = webidl.converters.RequestInfo(input)\n    init = webidl.converters.RequestInit(init)\n\n    // 1. Let request be null.\n    let request = null\n\n    // 2. Let fallbackMode be null.\n    let fallbackMode = null\n\n    // 3. Let baseURL be this’s relevant settings object’s API base URL.\n    const baseUrl = environmentSettingsObject.settingsObject.baseUrl\n\n    // 4. Let signal be null.\n    let signal = null\n\n    // 5. If input is a string, then:\n    if (typeof input === 'string') {\n      this.#dispatcher = init.dispatcher\n\n      // 1. Let parsedURL be the result of parsing input with baseURL.\n      // 2. If parsedURL is failure, then throw a TypeError.\n      let parsedURL\n      try {\n        parsedURL = new URL(input, baseUrl)\n      } catch (err) {\n        throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n      }\n\n      // 3. If parsedURL includes credentials, then throw a TypeError.\n      if (parsedURL.username || parsedURL.password) {\n        throw new TypeError(\n          'Request cannot be constructed from a URL that includes credentials: ' +\n            input\n        )\n      }\n\n      // 4. Set request to a new request whose URL is parsedURL.\n      request = makeRequest({ urlList: [parsedURL] })\n\n      // 5. Set fallbackMode to \"cors\".\n      fallbackMode = 'cors'\n    } else {\n      // 6. Otherwise:\n\n      // 7. Assert: input is a Request object.\n      assert(webidl.is.Request(input))\n\n      // 8. Set request to input’s request.\n      request = input.#state\n\n      // 9. Set signal to input’s signal.\n      signal = input.#signal\n\n      this.#dispatcher = init.dispatcher || input.#dispatcher\n    }\n\n    // 7. Let origin be this’s relevant settings object’s origin.\n    const origin = environmentSettingsObject.settingsObject.origin\n\n    // 8. Let window be \"client\".\n    let window = 'client'\n\n    // 9. If request’s window is an environment settings object and its origin\n    // is same origin with origin, then set window to request’s window.\n    if (\n      request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n      sameOrigin(request.window, origin)\n    ) {\n      window = request.window\n    }\n\n    // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n    if (init.window != null) {\n      throw new TypeError(`'window' option '${window}' must be null`)\n    }\n\n    // 11. If init[\"window\"] exists, then set window to \"no-window\".\n    if ('window' in init) {\n      window = 'no-window'\n    }\n\n    // 12. Set request to a new request with the following properties:\n    request = makeRequest({\n      // URL request’s URL.\n      // undici implementation note: this is set as the first item in request's urlList in makeRequest\n      // method request’s method.\n      method: request.method,\n      // header list A copy of request’s header list.\n      // undici implementation note: headersList is cloned in makeRequest\n      headersList: request.headersList,\n      // unsafe-request flag Set.\n      unsafeRequest: request.unsafeRequest,\n      // client This’s relevant settings object.\n      client: environmentSettingsObject.settingsObject,\n      // window window.\n      window,\n      // priority request’s priority.\n      priority: request.priority,\n      // origin request’s origin. The propagation of the origin is only significant for navigation requests\n      // being handled by a service worker. In this scenario a request can have an origin that is different\n      // from the current client.\n      origin: request.origin,\n      // referrer request’s referrer.\n      referrer: request.referrer,\n      // referrer policy request’s referrer policy.\n      referrerPolicy: request.referrerPolicy,\n      // mode request’s mode.\n      mode: request.mode,\n      // credentials mode request’s credentials mode.\n      credentials: request.credentials,\n      // cache mode request’s cache mode.\n      cache: request.cache,\n      // redirect mode request’s redirect mode.\n      redirect: request.redirect,\n      // integrity metadata request’s integrity metadata.\n      integrity: request.integrity,\n      // keepalive request’s keepalive.\n      keepalive: request.keepalive,\n      // reload-navigation flag request’s reload-navigation flag.\n      reloadNavigation: request.reloadNavigation,\n      // history-navigation flag request’s history-navigation flag.\n      historyNavigation: request.historyNavigation,\n      // URL list A clone of request’s URL list.\n      urlList: [...request.urlList]\n    })\n\n    const initHasKey = Object.keys(init).length !== 0\n\n    // 13. If init is not empty, then:\n    if (initHasKey) {\n      // 1. If request’s mode is \"navigate\", then set it to \"same-origin\".\n      if (request.mode === 'navigate') {\n        request.mode = 'same-origin'\n      }\n\n      // 2. Unset request’s reload-navigation flag.\n      request.reloadNavigation = false\n\n      // 3. Unset request’s history-navigation flag.\n      request.historyNavigation = false\n\n      // 4. Set request’s origin to \"client\".\n      request.origin = 'client'\n\n      // 5. Set request’s referrer to \"client\"\n      request.referrer = 'client'\n\n      // 6. Set request’s referrer policy to the empty string.\n      request.referrerPolicy = ''\n\n      // 7. Set request’s URL to request’s current URL.\n      request.url = request.urlList[request.urlList.length - 1]\n\n      // 8. Set request’s URL list to « request’s URL ».\n      request.urlList = [request.url]\n    }\n\n    // 14. If init[\"referrer\"] exists, then:\n    if (init.referrer !== undefined) {\n      // 1. Let referrer be init[\"referrer\"].\n      const referrer = init.referrer\n\n      // 2. If referrer is the empty string, then set request’s referrer to \"no-referrer\".\n      if (referrer === '') {\n        request.referrer = 'no-referrer'\n      } else {\n        // 1. Let parsedReferrer be the result of parsing referrer with\n        // baseURL.\n        // 2. If parsedReferrer is failure, then throw a TypeError.\n        let parsedReferrer\n        try {\n          parsedReferrer = new URL(referrer, baseUrl)\n        } catch (err) {\n          throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n        }\n\n        // 3. If one of the following is true\n        // - parsedReferrer’s scheme is \"about\" and path is the string \"client\"\n        // - parsedReferrer’s origin is not same origin with origin\n        // then set request’s referrer to \"client\".\n        if (\n          (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n          (origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl))\n        ) {\n          request.referrer = 'client'\n        } else {\n          // 4. Otherwise, set request’s referrer to parsedReferrer.\n          request.referrer = parsedReferrer\n        }\n      }\n    }\n\n    // 15. If init[\"referrerPolicy\"] exists, then set request’s referrer policy\n    // to it.\n    if (init.referrerPolicy !== undefined) {\n      request.referrerPolicy = init.referrerPolicy\n    }\n\n    // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n    let mode\n    if (init.mode !== undefined) {\n      mode = init.mode\n    } else {\n      mode = fallbackMode\n    }\n\n    // 17. If mode is \"navigate\", then throw a TypeError.\n    if (mode === 'navigate') {\n      throw webidl.errors.exception({\n        header: 'Request constructor',\n        message: 'invalid request mode navigate.'\n      })\n    }\n\n    // 18. If mode is non-null, set request’s mode to mode.\n    if (mode != null) {\n      request.mode = mode\n    }\n\n    // 19. If init[\"credentials\"] exists, then set request’s credentials mode\n    // to it.\n    if (init.credentials !== undefined) {\n      request.credentials = init.credentials\n    }\n\n    // 18. If init[\"cache\"] exists, then set request’s cache mode to it.\n    if (init.cache !== undefined) {\n      request.cache = init.cache\n    }\n\n    // 21. If request’s cache mode is \"only-if-cached\" and request’s mode is\n    // not \"same-origin\", then throw a TypeError.\n    if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n      throw new TypeError(\n        \"'only-if-cached' can be set only with 'same-origin' mode\"\n      )\n    }\n\n    // 22. If init[\"redirect\"] exists, then set request’s redirect mode to it.\n    if (init.redirect !== undefined) {\n      request.redirect = init.redirect\n    }\n\n    // 23. If init[\"integrity\"] exists, then set request’s integrity metadata to it.\n    if (init.integrity != null) {\n      request.integrity = String(init.integrity)\n    }\n\n    // 24. If init[\"keepalive\"] exists, then set request’s keepalive to it.\n    if (init.keepalive !== undefined) {\n      request.keepalive = Boolean(init.keepalive)\n    }\n\n    // 25. If init[\"method\"] exists, then:\n    if (init.method !== undefined) {\n      // 1. Let method be init[\"method\"].\n      let method = init.method\n\n      const mayBeNormalized = normalizedMethodRecords[method]\n\n      if (mayBeNormalized !== undefined) {\n        // Note: Bypass validation DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH and these lowercase ones\n        request.method = mayBeNormalized\n      } else {\n        // 2. If method is not a method or method is a forbidden method, then\n        // throw a TypeError.\n        if (!isValidHTTPToken(method)) {\n          throw new TypeError(`'${method}' is not a valid HTTP method.`)\n        }\n\n        const upperCase = method.toUpperCase()\n\n        if (forbiddenMethodsSet.has(upperCase)) {\n          throw new TypeError(`'${method}' HTTP method is unsupported.`)\n        }\n\n        // 3. Normalize method.\n        // https://fetch.spec.whatwg.org/#concept-method-normalize\n        // Note: must be in uppercase\n        method = normalizedMethodRecordsBase[upperCase] ?? method\n\n        // 4. Set request’s method to method.\n        request.method = method\n      }\n\n      if (!patchMethodWarning && request.method === 'patch') {\n        process.emitWarning('Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.', {\n          code: 'UNDICI-FETCH-patch'\n        })\n\n        patchMethodWarning = true\n      }\n    }\n\n    // 26. If init[\"signal\"] exists, then set signal to it.\n    if (init.signal !== undefined) {\n      signal = init.signal\n    }\n\n    // 27. Set this’s request to request.\n    this.#state = request\n\n    // 28. Set this’s signal to a new AbortSignal object with this’s relevant\n    // Realm.\n    // TODO: could this be simplified with AbortSignal.any\n    // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n    const ac = new AbortController()\n    this.#signal = ac.signal\n\n    // 29. If signal is not null, then make this’s signal follow signal.\n    if (signal != null) {\n      if (signal.aborted) {\n        ac.abort(signal.reason)\n      } else {\n        // Keep a strong ref to ac while request object\n        // is alive. This is needed to prevent AbortController\n        // from being prematurely garbage collected.\n        // See, https://github.com/nodejs/undici/issues/1926.\n        this[kAbortController] = ac\n\n        const acRef = new WeakRef(ac)\n        const abort = buildAbort(acRef)\n\n        // If the max amount of listeners is equal to the default, increase it\n        if (abortSignalHasEventHandlerLeakWarning && getMaxListeners(signal) === defaultMaxListeners) {\n          setMaxListeners(1500, signal)\n        }\n\n        util.addAbortListener(signal, abort)\n        // The third argument must be a registry key to be unregistered.\n        // Without it, you cannot unregister.\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n        // abort is used as the unregister key. (because it is unique)\n        requestFinalizer.register(ac, { signal, abort }, abort)\n      }\n    }\n\n    // 30. Set this’s headers to a new Headers object with this’s relevant\n    // Realm, whose header list is request’s header list and guard is\n    // \"request\".\n    this.#headers = new Headers(kConstruct)\n    setHeadersList(this.#headers, request.headersList)\n    setHeadersGuard(this.#headers, 'request')\n\n    // 31. If this’s request’s mode is \"no-cors\", then:\n    if (mode === 'no-cors') {\n      // 1. If this’s request’s method is not a CORS-safelisted method,\n      // then throw a TypeError.\n      if (!corsSafeListedMethodsSet.has(request.method)) {\n        throw new TypeError(\n          `'${request.method} is unsupported in no-cors mode.`\n        )\n      }\n\n      // 2. Set this’s headers’s guard to \"request-no-cors\".\n      setHeadersGuard(this.#headers, 'request-no-cors')\n    }\n\n    // 32. If init is not empty, then:\n    if (initHasKey) {\n      /** @type {HeadersList} */\n      const headersList = getHeadersList(this.#headers)\n      // 1. Let headers be a copy of this’s headers and its associated header\n      // list.\n      // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n      const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n      // 3. Empty this’s headers’s header list.\n      headersList.clear()\n\n      // 4. If headers is a Headers object, then for each header in its header\n      // list, append header’s name/header’s value to this’s headers.\n      if (headers instanceof HeadersList) {\n        for (const { name, value } of headers.rawValues()) {\n          headersList.append(name, value, false)\n        }\n        // Note: Copy the `set-cookie` meta-data.\n        headersList.cookies = headers.cookies\n      } else {\n        // 5. Otherwise, fill this’s headers with headers.\n        fillHeaders(this.#headers, headers)\n      }\n    }\n\n    // 33. Let inputBody be input’s request’s body if input is a Request\n    // object; otherwise null.\n    const inputBody = webidl.is.Request(input) ? input.#state.body : null\n\n    // 34. If either init[\"body\"] exists and is non-null or inputBody is\n    // non-null, and request’s method is `GET` or `HEAD`, then throw a\n    // TypeError.\n    if (\n      (init.body != null || inputBody != null) &&\n      (request.method === 'GET' || request.method === 'HEAD')\n    ) {\n      throw new TypeError('Request with GET/HEAD method cannot have body.')\n    }\n\n    // 35. Let initBody be null.\n    let initBody = null\n\n    // 36. If init[\"body\"] exists and is non-null, then:\n    if (init.body != null) {\n      // 1. Let Content-Type be null.\n      // 2. Set initBody and Content-Type to the result of extracting\n      // init[\"body\"], with keepalive set to request’s keepalive.\n      const [extractedBody, contentType] = extractBody(\n        init.body,\n        request.keepalive\n      )\n      initBody = extractedBody\n\n      // 3, If Content-Type is non-null and this’s headers’s header list does\n      // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n      // this’s headers.\n      if (contentType && !getHeadersList(this.#headers).contains('content-type', true)) {\n        this.#headers.append('content-type', contentType, true)\n      }\n    }\n\n    // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n    // inputBody.\n    const inputOrInitBody = initBody ?? inputBody\n\n    // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is\n    // null, then:\n    if (inputOrInitBody != null && inputOrInitBody.source == null) {\n      // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n      //    then throw a TypeError.\n      if (initBody != null && init.duplex == null) {\n        throw new TypeError('RequestInit: duplex option is required when sending a body.')\n      }\n\n      // 2. If this’s request’s mode is neither \"same-origin\" nor \"cors\",\n      // then throw a TypeError.\n      if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n        throw new TypeError(\n          'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n        )\n      }\n\n      // 3. Set this’s request’s use-CORS-preflight flag.\n      request.useCORSPreflightFlag = true\n    }\n\n    // 39. Let finalBody be inputOrInitBody.\n    let finalBody = inputOrInitBody\n\n    // 40. If initBody is null and inputBody is non-null, then:\n    if (initBody == null && inputBody != null) {\n      // 1. If input is unusable, then throw a TypeError.\n      if (bodyUnusable(input.#state)) {\n        throw new TypeError(\n          'Cannot construct a Request with a Request object that has already been used.'\n        )\n      }\n\n      // 2. Set finalBody to the result of creating a proxy for inputBody.\n      // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n      const identityTransform = new TransformStream()\n      inputBody.stream.pipeThrough(identityTransform)\n      finalBody = {\n        source: inputBody.source,\n        length: inputBody.length,\n        stream: identityTransform.readable\n      }\n    }\n\n    // 41. Set this’s request’s body to finalBody.\n    this.#state.body = finalBody\n  }\n\n  // Returns request’s HTTP method, which is \"GET\" by default.\n  get method () {\n    webidl.brandCheck(this, Request)\n\n    // The method getter steps are to return this’s request’s method.\n    return this.#state.method\n  }\n\n  // Returns the URL of request as a string.\n  get url () {\n    webidl.brandCheck(this, Request)\n\n    // The url getter steps are to return this’s request’s URL, serialized.\n    return URLSerializer(this.#state.url)\n  }\n\n  // Returns a Headers object consisting of the headers associated with request.\n  // Note that headers added in the network layer by the user agent will not\n  // be accounted for in this object, e.g., the \"Host\" header.\n  get headers () {\n    webidl.brandCheck(this, Request)\n\n    // The headers getter steps are to return this’s headers.\n    return this.#headers\n  }\n\n  // Returns the kind of resource requested by request, e.g., \"document\"\n  // or \"script\".\n  get destination () {\n    webidl.brandCheck(this, Request)\n\n    // The destination getter are to return this’s request’s destination.\n    return this.#state.destination\n  }\n\n  // Returns the referrer of request. Its value can be a same-origin URL if\n  // explicitly set in init, the empty string to indicate no referrer, and\n  // \"about:client\" when defaulting to the global’s default. This is used\n  // during fetching to determine the value of the `Referer` header of the\n  // request being made.\n  get referrer () {\n    webidl.brandCheck(this, Request)\n\n    // 1. If this’s request’s referrer is \"no-referrer\", then return the\n    // empty string.\n    if (this.#state.referrer === 'no-referrer') {\n      return ''\n    }\n\n    // 2. If this’s request’s referrer is \"client\", then return\n    // \"about:client\".\n    if (this.#state.referrer === 'client') {\n      return 'about:client'\n    }\n\n    // Return this’s request’s referrer, serialized.\n    return this.#state.referrer.toString()\n  }\n\n  // Returns the referrer policy associated with request.\n  // This is used during fetching to compute the value of the request’s\n  // referrer.\n  get referrerPolicy () {\n    webidl.brandCheck(this, Request)\n\n    // The referrerPolicy getter steps are to return this’s request’s referrer policy.\n    return this.#state.referrerPolicy\n  }\n\n  // Returns the mode associated with request, which is a string indicating\n  // whether the request will use CORS, or will be restricted to same-origin\n  // URLs.\n  get mode () {\n    webidl.brandCheck(this, Request)\n\n    // The mode getter steps are to return this’s request’s mode.\n    return this.#state.mode\n  }\n\n  // Returns the credentials mode associated with request,\n  // which is a string indicating whether credentials will be sent with the\n  // request always, never, or only when sent to a same-origin URL.\n  get credentials () {\n    webidl.brandCheck(this, Request)\n\n    // The credentials getter steps are to return this’s request’s credentials mode.\n    return this.#state.credentials\n  }\n\n  // Returns the cache mode associated with request,\n  // which is a string indicating how the request will\n  // interact with the browser’s cache when fetching.\n  get cache () {\n    webidl.brandCheck(this, Request)\n\n    // The cache getter steps are to return this’s request’s cache mode.\n    return this.#state.cache\n  }\n\n  // Returns the redirect mode associated with request,\n  // which is a string indicating how redirects for the\n  // request will be handled during fetching. A request\n  // will follow redirects by default.\n  get redirect () {\n    webidl.brandCheck(this, Request)\n\n    // The redirect getter steps are to return this’s request’s redirect mode.\n    return this.#state.redirect\n  }\n\n  // Returns request’s subresource integrity metadata, which is a\n  // cryptographic hash of the resource being fetched. Its value\n  // consists of multiple hashes separated by whitespace. [SRI]\n  get integrity () {\n    webidl.brandCheck(this, Request)\n\n    // The integrity getter steps are to return this’s request’s integrity\n    // metadata.\n    return this.#state.integrity\n  }\n\n  // Returns a boolean indicating whether or not request can outlive the\n  // global in which it was created.\n  get keepalive () {\n    webidl.brandCheck(this, Request)\n\n    // The keepalive getter steps are to return this’s request’s keepalive.\n    return this.#state.keepalive\n  }\n\n  // Returns a boolean indicating whether or not request is for a reload\n  // navigation.\n  get isReloadNavigation () {\n    webidl.brandCheck(this, Request)\n\n    // The isReloadNavigation getter steps are to return true if this’s\n    // request’s reload-navigation flag is set; otherwise false.\n    return this.#state.reloadNavigation\n  }\n\n  // Returns a boolean indicating whether or not request is for a history\n  // navigation (a.k.a. back-forward navigation).\n  get isHistoryNavigation () {\n    webidl.brandCheck(this, Request)\n\n    // The isHistoryNavigation getter steps are to return true if this’s request’s\n    // history-navigation flag is set; otherwise false.\n    return this.#state.historyNavigation\n  }\n\n  // Returns the signal associated with request, which is an AbortSignal\n  // object indicating whether or not request has been aborted, and its\n  // abort event handler.\n  get signal () {\n    webidl.brandCheck(this, Request)\n\n    // The signal getter steps are to return this’s signal.\n    return this.#signal\n  }\n\n  get body () {\n    webidl.brandCheck(this, Request)\n\n    return this.#state.body ? this.#state.body.stream : null\n  }\n\n  get bodyUsed () {\n    webidl.brandCheck(this, Request)\n\n    return !!this.#state.body && util.isDisturbed(this.#state.body.stream)\n  }\n\n  get duplex () {\n    webidl.brandCheck(this, Request)\n\n    return 'half'\n  }\n\n  // Returns a clone of request.\n  clone () {\n    webidl.brandCheck(this, Request)\n\n    // 1. If this is unusable, then throw a TypeError.\n    if (bodyUnusable(this.#state)) {\n      throw new TypeError('unusable')\n    }\n\n    // 2. Let clonedRequest be the result of cloning this’s request.\n    const clonedRequest = cloneRequest(this.#state)\n\n    // 3. Let clonedRequestObject be the result of creating a Request object,\n    // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.\n    // 4. Make clonedRequestObject’s signal follow this’s signal.\n    const ac = new AbortController()\n    if (this.signal.aborted) {\n      ac.abort(this.signal.reason)\n    } else {\n      let list = dependentControllerMap.get(this.signal)\n      if (list === undefined) {\n        list = new Set()\n        dependentControllerMap.set(this.signal, list)\n      }\n      const acRef = new WeakRef(ac)\n      list.add(acRef)\n      util.addAbortListener(\n        ac.signal,\n        buildAbort(acRef)\n      )\n    }\n\n    // 4. Return clonedRequestObject.\n    return fromInnerRequest(clonedRequest, this.#dispatcher, ac.signal, getHeadersGuard(this.#headers))\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    if (options.depth === null) {\n      options.depth = 2\n    }\n\n    options.colors ??= true\n\n    const properties = {\n      method: this.method,\n      url: this.url,\n      headers: this.headers,\n      destination: this.destination,\n      referrer: this.referrer,\n      referrerPolicy: this.referrerPolicy,\n      mode: this.mode,\n      credentials: this.credentials,\n      cache: this.cache,\n      redirect: this.redirect,\n      integrity: this.integrity,\n      keepalive: this.keepalive,\n      isReloadNavigation: this.isReloadNavigation,\n      isHistoryNavigation: this.isHistoryNavigation,\n      signal: this.signal\n    }\n\n    return `Request ${nodeUtil.formatWithOptions(options, properties)}`\n  }\n\n  /**\n   * @param {Request} request\n   * @param {AbortSignal} newSignal\n   */\n  static setRequestSignal (request, newSignal) {\n    request.#signal = newSignal\n    return request\n  }\n\n  /**\n   * @param {Request} request\n   */\n  static getRequestDispatcher (request) {\n    return request.#dispatcher\n  }\n\n  /**\n   * @param {Request} request\n   * @param {import('../../dispatcher/dispatcher')} newDispatcher\n   */\n  static setRequestDispatcher (request, newDispatcher) {\n    request.#dispatcher = newDispatcher\n  }\n\n  /**\n   * @param {Request} request\n   * @param {Headers} newHeaders\n   */\n  static setRequestHeaders (request, newHeaders) {\n    request.#headers = newHeaders\n  }\n\n  /**\n   * @param {Request} request\n   */\n  static getRequestState (request) {\n    return request.#state\n  }\n\n  /**\n   * @param {Request} request\n   * @param {any} newState\n   */\n  static setRequestState (request, newState) {\n    request.#state = newState\n  }\n}\n\nconst { setRequestSignal, getRequestDispatcher, setRequestDispatcher, setRequestHeaders, getRequestState, setRequestState } = Request\nReflect.deleteProperty(Request, 'setRequestSignal')\nReflect.deleteProperty(Request, 'getRequestDispatcher')\nReflect.deleteProperty(Request, 'setRequestDispatcher')\nReflect.deleteProperty(Request, 'setRequestHeaders')\nReflect.deleteProperty(Request, 'getRequestState')\nReflect.deleteProperty(Request, 'setRequestState')\n\nmixinBody(Request, getRequestState)\n\n// https://fetch.spec.whatwg.org/#requests\nfunction makeRequest (init) {\n  return {\n    method: init.method ?? 'GET',\n    localURLsOnly: init.localURLsOnly ?? false,\n    unsafeRequest: init.unsafeRequest ?? false,\n    body: init.body ?? null,\n    client: init.client ?? null,\n    reservedClient: init.reservedClient ?? null,\n    replacesClientId: init.replacesClientId ?? '',\n    window: init.window ?? 'client',\n    keepalive: init.keepalive ?? false,\n    serviceWorkers: init.serviceWorkers ?? 'all',\n    initiator: init.initiator ?? '',\n    destination: init.destination ?? '',\n    priority: init.priority ?? null,\n    origin: init.origin ?? 'client',\n    policyContainer: init.policyContainer ?? 'client',\n    referrer: init.referrer ?? 'client',\n    referrerPolicy: init.referrerPolicy ?? '',\n    mode: init.mode ?? 'no-cors',\n    useCORSPreflightFlag: init.useCORSPreflightFlag ?? false,\n    credentials: init.credentials ?? 'same-origin',\n    useCredentials: init.useCredentials ?? false,\n    cache: init.cache ?? 'default',\n    redirect: init.redirect ?? 'follow',\n    integrity: init.integrity ?? '',\n    cryptoGraphicsNonceMetadata: init.cryptoGraphicsNonceMetadata ?? '',\n    parserMetadata: init.parserMetadata ?? '',\n    reloadNavigation: init.reloadNavigation ?? false,\n    historyNavigation: init.historyNavigation ?? false,\n    userActivation: init.userActivation ?? false,\n    taintedOrigin: init.taintedOrigin ?? false,\n    redirectCount: init.redirectCount ?? 0,\n    responseTainting: init.responseTainting ?? 'basic',\n    preventNoCacheCacheControlHeaderModification: init.preventNoCacheCacheControlHeaderModification ?? false,\n    done: init.done ?? false,\n    timingAllowFailed: init.timingAllowFailed ?? false,\n    useURLCredentials: init.useURLCredentials ?? undefined,\n    traversableForUserPrompts: init.traversableForUserPrompts ?? 'client',\n    urlList: init.urlList,\n    url: init.urlList[0],\n    headersList: init.headersList\n      ? new HeadersList(init.headersList)\n      : new HeadersList()\n  }\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n  // To clone a request request, run these steps:\n\n  // 1. Let newRequest be a copy of request, except for its body.\n  const newRequest = makeRequest({ ...request, body: null })\n\n  // 2. If request’s body is non-null, set newRequest’s body to the\n  // result of cloning request’s body.\n  if (request.body != null) {\n    newRequest.body = cloneBody(request.body)\n  }\n\n  // 3. Return newRequest.\n  return newRequest\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#request-create\n * @param {any} innerRequest\n * @param {import('../../dispatcher/agent')} dispatcher\n * @param {AbortSignal} signal\n * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard\n * @returns {Request}\n */\nfunction fromInnerRequest (innerRequest, dispatcher, signal, guard) {\n  const request = new Request(kConstruct)\n  setRequestState(request, innerRequest)\n  setRequestDispatcher(request, dispatcher)\n  setRequestSignal(request, signal)\n  const headers = new Headers(kConstruct)\n  setRequestHeaders(request, headers)\n  setHeadersList(headers, innerRequest.headersList)\n  setHeadersGuard(headers, guard)\n  return request\n}\n\nObject.defineProperties(Request.prototype, {\n  method: kEnumerableProperty,\n  url: kEnumerableProperty,\n  headers: kEnumerableProperty,\n  redirect: kEnumerableProperty,\n  clone: kEnumerableProperty,\n  signal: kEnumerableProperty,\n  duplex: kEnumerableProperty,\n  destination: kEnumerableProperty,\n  body: kEnumerableProperty,\n  bodyUsed: kEnumerableProperty,\n  isHistoryNavigation: kEnumerableProperty,\n  isReloadNavigation: kEnumerableProperty,\n  keepalive: kEnumerableProperty,\n  integrity: kEnumerableProperty,\n  cache: kEnumerableProperty,\n  credentials: kEnumerableProperty,\n  attribute: kEnumerableProperty,\n  referrerPolicy: kEnumerableProperty,\n  referrer: kEnumerableProperty,\n  mode: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Request',\n    configurable: true\n  }\n})\n\nwebidl.is.Request = webidl.util.MakeTypeAssertion(Request)\n\n/**\n * @param {*} V\n * @returns {import('../../../types/fetch').Request|string}\n *\n * @see https://fetch.spec.whatwg.org/#requestinfo\n */\nwebidl.converters.RequestInfo = function (V) {\n  if (typeof V === 'string') {\n    return webidl.converters.USVString(V)\n  }\n\n  if (webidl.is.Request(V)) {\n    return V\n  }\n\n  return webidl.converters.USVString(V)\n}\n\n/**\n * @param {*} V\n * @returns {import('../../../types/fetch').RequestInit}\n * @see https://fetch.spec.whatwg.org/#requestinit\n */\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n  {\n    key: 'method',\n    converter: webidl.converters.ByteString\n  },\n  {\n    key: 'headers',\n    converter: webidl.converters.HeadersInit\n  },\n  {\n    key: 'body',\n    converter: webidl.nullableConverter(\n      webidl.converters.BodyInit\n    )\n  },\n  {\n    key: 'referrer',\n    converter: webidl.converters.USVString\n  },\n  {\n    key: 'referrerPolicy',\n    converter: webidl.converters.DOMString,\n    // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n    allowedValues: referrerPolicy\n  },\n  {\n    key: 'mode',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#concept-request-mode\n    allowedValues: requestMode\n  },\n  {\n    key: 'credentials',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestcredentials\n    allowedValues: requestCredentials\n  },\n  {\n    key: 'cache',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestcache\n    allowedValues: requestCache\n  },\n  {\n    key: 'redirect',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestredirect\n    allowedValues: requestRedirect\n  },\n  {\n    key: 'integrity',\n    converter: webidl.converters.DOMString\n  },\n  {\n    key: 'keepalive',\n    converter: webidl.converters.boolean\n  },\n  {\n    key: 'signal',\n    converter: webidl.nullableConverter(\n      (signal) => webidl.converters.AbortSignal(\n        signal,\n        'RequestInit',\n        'signal'\n      )\n    )\n  },\n  {\n    key: 'window',\n    converter: webidl.converters.any\n  },\n  {\n    key: 'duplex',\n    converter: webidl.converters.DOMString,\n    allowedValues: requestDuplex\n  },\n  {\n    key: 'dispatcher', // undici specific option\n    converter: webidl.converters.any\n  },\n  {\n    key: 'priority',\n    converter: webidl.converters.DOMString,\n    allowedValues: ['high', 'low', 'auto'],\n    defaultValue: () => 'auto'\n  }\n])\n\nmodule.exports = {\n  Request,\n  makeRequest,\n  fromInnerRequest,\n  cloneRequest,\n  getRequestDispatcher,\n  getRequestState\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst { runtimeFeatures } = require('../../util/runtime-features.js')\n\n/**\n * @typedef {object} Metadata\n * @property {SRIHashAlgorithm} alg - The algorithm used for the hash.\n * @property {string} val - The base64-encoded hash value.\n */\n\n/**\n * @typedef {Metadata[]} MetadataList\n */\n\n/**\n * @typedef {('sha256' | 'sha384' | 'sha512')} SRIHashAlgorithm\n */\n\n/**\n * @type {Map<SRIHashAlgorithm, number>}\n *\n * The valid SRI hash algorithm token set is the ordered set « \"sha256\",\n * \"sha384\", \"sha512\" » (corresponding to SHA-256, SHA-384, and SHA-512\n * respectively). The ordering of this set is meaningful, with stronger\n * algorithms appearing later in the set.\n *\n * @see https://w3c.github.io/webappsec-subresource-integrity/#valid-sri-hash-algorithm-token-set\n */\nconst validSRIHashAlgorithmTokenSet = new Map([['sha256', 0], ['sha384', 1], ['sha512', 2]])\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('node:crypto')} */\nlet crypto\n\nif (runtimeFeatures.has('crypto')) {\n  crypto = require('node:crypto')\n  const cryptoHashes = crypto.getHashes()\n\n  // If no hashes are available, we cannot support SRI.\n  if (cryptoHashes.length === 0) {\n    validSRIHashAlgorithmTokenSet.clear()\n  }\n\n  for (const algorithm of validSRIHashAlgorithmTokenSet.keys()) {\n    // If the algorithm is not supported, remove it from the list.\n    if (cryptoHashes.includes(algorithm) === false) {\n      validSRIHashAlgorithmTokenSet.delete(algorithm)\n    }\n  }\n} else {\n  // If crypto is not available, we cannot support SRI.\n  validSRIHashAlgorithmTokenSet.clear()\n}\n\n/**\n * @typedef GetSRIHashAlgorithmIndex\n * @type {(algorithm: SRIHashAlgorithm) => number}\n * @param {SRIHashAlgorithm} algorithm\n * @returns {number} The index of the algorithm in the valid SRI hash algorithm\n * token set.\n */\n\nconst getSRIHashAlgorithmIndex = /** @type {GetSRIHashAlgorithmIndex} */ (Map.prototype.get.bind(\n  validSRIHashAlgorithmTokenSet))\n\n/**\n * @typedef IsValidSRIHashAlgorithm\n * @type {(algorithm: string) => algorithm is SRIHashAlgorithm}\n * @param {*} algorithm\n * @returns {algorithm is SRIHashAlgorithm}\n */\n\nconst isValidSRIHashAlgorithm = /** @type {IsValidSRIHashAlgorithm} */ (\n  Map.prototype.has.bind(validSRIHashAlgorithmTokenSet)\n)\n\n/**\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n * @returns {boolean}\n *\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n */\nconst bytesMatch = runtimeFeatures.has('crypto') === false || validSRIHashAlgorithmTokenSet.size === 0\n  // If node is not built with OpenSSL support, we cannot check\n  // a request's integrity, so allow it by default (the spec will\n  // allow requests if an invalid hash is given, as precedence).\n  ? () => true\n  : (bytes, metadataList) => {\n    // 1. Let parsedMetadata be the result of parsing metadataList.\n      const parsedMetadata = parseMetadata(metadataList)\n\n      // 2. If parsedMetadata is empty set, return true.\n      if (parsedMetadata.length === 0) {\n        return true\n      }\n\n      // 3. Let metadata be the result of getting the strongest\n      //    metadata from parsedMetadata.\n      const metadata = getStrongestMetadata(parsedMetadata)\n\n      // 4. For each item in metadata:\n      for (const item of metadata) {\n      // 1. Let algorithm be the item[\"alg\"].\n        const algorithm = item.alg\n\n        // 2. Let expectedValue be the item[\"val\"].\n        const expectedValue = item.val\n\n        // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n        // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n        // 3. Let actualValue be the result of applying algorithm to bytes .\n        const actualValue = applyAlgorithmToBytes(algorithm, bytes)\n\n        // 4. If actualValue is a case-sensitive match for expectedValue,\n        //    return true.\n        if (caseSensitiveMatch(actualValue, expectedValue)) {\n          return true\n        }\n      }\n\n      // 5. Return false.\n      return false\n    }\n\n/**\n * @param {MetadataList} metadataList\n * @returns {MetadataList} The strongest hash algorithm from the metadata list.\n */\nfunction getStrongestMetadata (metadataList) {\n  // 1. Let result be the empty set and strongest be the empty string.\n  const result = []\n  /** @type {Metadata|null} */\n  let strongest = null\n\n  // 2. For each item in set:\n  for (const item of metadataList) {\n    // 1. Assert: item[\"alg\"] is a valid SRI hash algorithm token.\n    assert(isValidSRIHashAlgorithm(item.alg), 'Invalid SRI hash algorithm token')\n\n    // 2. If result is the empty set, then:\n    if (result.length === 0) {\n      // 1. Append item to result.\n      result.push(item)\n\n      // 2. Set strongest to item.\n      strongest = item\n\n      // 3. Continue.\n      continue\n    }\n\n    // 3. Let currentAlgorithm be strongest[\"alg\"], and currentAlgorithmIndex be\n    // the index of currentAlgorithm in the valid SRI hash algorithm token set.\n    const currentAlgorithm = /** @type {Metadata} */ (strongest).alg\n    const currentAlgorithmIndex = getSRIHashAlgorithmIndex(currentAlgorithm)\n\n    // 4. Let newAlgorithm be the item[\"alg\"], and newAlgorithmIndex be the\n    // index of newAlgorithm in the valid SRI hash algorithm token set.\n    const newAlgorithm = item.alg\n    const newAlgorithmIndex = getSRIHashAlgorithmIndex(newAlgorithm)\n\n    // 5. If newAlgorithmIndex is less than currentAlgorithmIndex, then continue.\n    if (newAlgorithmIndex < currentAlgorithmIndex) {\n      continue\n\n    // 6. Otherwise, if newAlgorithmIndex is greater than\n    // currentAlgorithmIndex:\n    } else if (newAlgorithmIndex > currentAlgorithmIndex) {\n      // 1. Set strongest to item.\n      strongest = item\n\n      // 2. Set result to « item ».\n      result[0] = item\n      result.length = 1\n\n    // 7. Otherwise, newAlgorithmIndex and currentAlgorithmIndex are the same\n    // value. Append item to result.\n    } else {\n      result.push(item)\n    }\n  }\n\n  // 3. Return result.\n  return result\n}\n\n/**\n * @param {string} metadata\n * @returns {MetadataList}\n *\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n */\nfunction parseMetadata (metadata) {\n  // 1. Let result be the empty set.\n  /** @type {MetadataList} */\n  const result = []\n\n  // 2. For each item returned by splitting metadata on spaces:\n  for (const item of metadata.split(' ')) {\n    // 1. Let expression-and-options be the result of splitting item on U+003F (?).\n    const expressionAndOptions = item.split('?', 1)\n\n    // 2. Let algorithm-expression be expression-and-options[0].\n    const algorithmExpression = expressionAndOptions[0]\n\n    // 3. Let base64-value be the empty string.\n    let base64Value = ''\n\n    // 4. Let algorithm-and-value be the result of splitting algorithm-expression on U+002D (-).\n    const algorithmAndValue = [algorithmExpression.slice(0, 6), algorithmExpression.slice(7)]\n\n    // 5. Let algorithm be algorithm-and-value[0].\n    const algorithm = algorithmAndValue[0]\n\n    // 6. If algorithm is not a valid SRI hash algorithm token, then continue.\n    if (!isValidSRIHashAlgorithm(algorithm)) {\n      continue\n    }\n\n    // 7. If algorithm-and-value[1] exists, set base64-value to\n    // algorithm-and-value[1].\n    if (algorithmAndValue[1]) {\n      base64Value = algorithmAndValue[1]\n    }\n\n    // 8. Let metadata be the ordered map\n    // «[\"alg\" → algorithm, \"val\" → base64-value]».\n    const metadata = {\n      alg: algorithm,\n      val: base64Value\n    }\n\n    // 9. Append metadata to result.\n    result.push(metadata)\n  }\n\n  // 3. Return result.\n  return result\n}\n\n/**\n * Applies the specified hash algorithm to the given bytes\n *\n * @typedef {(algorithm: SRIHashAlgorithm, bytes: Uint8Array) => string} ApplyAlgorithmToBytes\n * @param {SRIHashAlgorithm} algorithm\n * @param {Uint8Array} bytes\n * @returns {string}\n */\nconst applyAlgorithmToBytes = (algorithm, bytes) => {\n  return crypto.hash(algorithm, bytes, 'base64')\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n * @param {string} actualValue base64 encoded string\n * @param {string} expectedValue base64 or base64url encoded string\n * @returns {boolean}\n */\nfunction caseSensitiveMatch (actualValue, expectedValue) {\n  // Ignore padding characters from the end of the strings by\n  // decreasing the length by 1 or 2 if the last characters are `=`.\n  let actualValueLength = actualValue.length\n  if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === '=') {\n    actualValueLength -= 1\n  }\n  if (actualValueLength !== 0 && actualValue[actualValueLength - 1] === '=') {\n    actualValueLength -= 1\n  }\n  let expectedValueLength = expectedValue.length\n  if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === '=') {\n    expectedValueLength -= 1\n  }\n  if (expectedValueLength !== 0 && expectedValue[expectedValueLength - 1] === '=') {\n    expectedValueLength -= 1\n  }\n\n  if (actualValueLength !== expectedValueLength) {\n    return false\n  }\n\n  for (let i = 0; i < actualValueLength; ++i) {\n    if (\n      actualValue[i] === expectedValue[i] ||\n      (actualValue[i] === '+' && expectedValue[i] === '-') ||\n      (actualValue[i] === '/' && expectedValue[i] === '_')\n    ) {\n      continue\n    }\n    return false\n  }\n\n  return true\n}\n\nmodule.exports = {\n  applyAlgorithmToBytes,\n  bytesMatch,\n  caseSensitiveMatch,\n  isValidSRIHashAlgorithm,\n  getStrongestMetadata,\n  parseMetadata\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n  makeNetworkError,\n  makeAppropriateNetworkError,\n  filterResponse,\n  makeResponse,\n  fromInnerResponse,\n  getResponseState\n} = require('./response')\nconst { HeadersList } = require('./headers')\nconst { Request, cloneRequest, getRequestDispatcher, getRequestState } = require('./request')\nconst zlib = require('node:zlib')\nconst {\n  makePolicyContainer,\n  clonePolicyContainer,\n  requestBadPort,\n  TAOCheck,\n  appendRequestOriginHeader,\n  responseLocationURL,\n  requestCurrentURL,\n  setRequestReferrerPolicyOnRedirect,\n  tryUpgradeRequestToAPotentiallyTrustworthyURL,\n  createOpaqueTimingInfo,\n  appendFetchMetadata,\n  corsCheck,\n  crossOriginResourcePolicyCheck,\n  determineRequestsReferrer,\n  coarsenedSharedCurrentTime,\n  sameOrigin,\n  isCancelled,\n  isAborted,\n  isErrorLike,\n  fullyReadBody,\n  readableStreamClose,\n  urlIsLocal,\n  urlIsHttpHttpsScheme,\n  urlHasHttpsScheme,\n  clampAndCoarsenConnectionTimingInfo,\n  simpleRangeHeaderValue,\n  buildContentRange,\n  createInflate,\n  extractMimeType,\n  hasAuthenticationEntry,\n  includesCredentials,\n  isTraversableNavigable\n} = require('./util')\nconst assert = require('node:assert')\nconst { safelyExtractBody, extractBody } = require('./body')\nconst {\n  redirectStatusSet,\n  nullBodyStatus,\n  safeMethodsSet,\n  requestBodyHeader,\n  subresourceSet\n} = require('./constants')\nconst EE = require('node:events')\nconst { Readable, pipeline, finished, isErrored, isReadable } = require('node:stream')\nconst { addAbortListener, bufferToLowerCasedHeaderName } = require('../../core/util')\nconst { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require('./data-url')\nconst { getGlobalDispatcher } = require('../../global')\nconst { webidl } = require('../webidl')\nconst { STATUS_CODES } = require('node:http')\nconst { bytesMatch } = require('../subresource-integrity/subresource-integrity')\nconst { createDeferredPromise } = require('../../util/promise')\nconst { isomorphicEncode } = require('../infra')\nconst { runtimeFeatures } = require('../../util/runtime-features')\n\n// Node.js v23.8.0+ and v22.15.0+ supports Zstandard\nconst hasZstd = runtimeFeatures.has('zstd')\n\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\nconst defaultUserAgent = typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined'\n  ? 'node'\n  : 'undici'\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\n\nclass Fetch extends EE {\n  constructor (dispatcher) {\n    super()\n\n    this.dispatcher = dispatcher\n    this.connection = null\n    this.dump = false\n    this.state = 'ongoing'\n  }\n\n  terminate (reason) {\n    if (this.state !== 'ongoing') {\n      return\n    }\n\n    this.state = 'terminated'\n    this.connection?.destroy(reason)\n    this.emit('terminated', reason)\n  }\n\n  // https://fetch.spec.whatwg.org/#fetch-controller-abort\n  abort (error) {\n    if (this.state !== 'ongoing') {\n      return\n    }\n\n    // 1. Set controller’s state to \"aborted\".\n    this.state = 'aborted'\n\n    // 2. Let fallbackError be an \"AbortError\" DOMException.\n    // 3. Set error to fallbackError if it is not given.\n    if (!error) {\n      error = new DOMException('The operation was aborted.', 'AbortError')\n    }\n\n    // 4. Let serializedError be StructuredSerialize(error).\n    //    If that threw an exception, catch it, and let\n    //    serializedError be StructuredSerialize(fallbackError).\n\n    // 5. Set controller’s serialized abort reason to serializedError.\n    this.serializedAbortReason = error\n\n    this.connection?.destroy(error)\n    this.emit('terminated', error)\n  }\n}\n\nfunction handleFetchDone (response) {\n  finalizeAndReportTiming(response, 'fetch')\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = undefined) {\n  webidl.argumentLengthCheck(arguments, 1, 'globalThis.fetch')\n\n  // 1. Let p be a new promise.\n  let p = createDeferredPromise()\n\n  // 2. Let requestObject be the result of invoking the initial value of\n  // Request as constructor with input and init as arguments. If this throws\n  // an exception, reject p with it and return p.\n  let requestObject\n\n  try {\n    requestObject = new Request(input, init)\n  } catch (e) {\n    p.reject(e)\n    return p.promise\n  }\n\n  // 3. Let request be requestObject’s request.\n  const request = getRequestState(requestObject)\n\n  // 4. If requestObject’s signal’s aborted flag is set, then:\n  if (requestObject.signal.aborted) {\n    // 1. Abort the fetch() call with p, request, null, and\n    //    requestObject’s signal’s abort reason.\n    abortFetch(p, request, null, requestObject.signal.reason, null)\n\n    // 2. Return p.\n    return p.promise\n  }\n\n  // 5. Let globalObject be request’s client’s global object.\n  const globalObject = request.client.globalObject\n\n  // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n  // request’s service-workers mode to \"none\".\n  if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n    request.serviceWorkers = 'none'\n  }\n\n  // 7. Let responseObject be null.\n  let responseObject = null\n\n  // 8. Let relevantRealm be this’s relevant Realm.\n\n  // 9. Let locallyAborted be false.\n  let locallyAborted = false\n\n  // 10. Let controller be null.\n  let controller = null\n\n  // 11. Add the following abort steps to requestObject’s signal:\n  addAbortListener(\n    requestObject.signal,\n    () => {\n      // 1. Set locallyAborted to true.\n      locallyAborted = true\n\n      // 2. Assert: controller is non-null.\n      assert(controller != null)\n\n      // 3. Abort controller with requestObject’s signal’s abort reason.\n      controller.abort(requestObject.signal.reason)\n\n      const realResponse = responseObject?.deref()\n\n      // 4. Abort the fetch() call with p, request, responseObject,\n      //    and requestObject’s signal’s abort reason.\n      abortFetch(p, request, realResponse, requestObject.signal.reason, controller.controller)\n    }\n  )\n\n  // 12. Let handleFetchDone given response response be to finalize and\n  // report timing with response, globalObject, and \"fetch\".\n  // see function handleFetchDone\n\n  // 13. Set controller to the result of calling fetch given request,\n  // with processResponseEndOfBody set to handleFetchDone, and processResponse\n  // given response being these substeps:\n\n  const processResponse = (response) => {\n    // 1. If locallyAborted is true, terminate these substeps.\n    if (locallyAborted) {\n      return\n    }\n\n    // 2. If response’s aborted flag is set, then:\n    if (response.aborted) {\n      // 1. Let deserializedError be the result of deserialize a serialized\n      //    abort reason given controller’s serialized abort reason and\n      //    relevantRealm.\n\n      // 2. Abort the fetch() call with p, request, responseObject, and\n      //    deserializedError.\n\n      abortFetch(p, request, responseObject, controller.serializedAbortReason, controller.controller)\n      return\n    }\n\n    // 3. If response is a network error, then reject p with a TypeError\n    // and terminate these substeps.\n    if (response.type === 'error') {\n      p.reject(new TypeError('fetch failed', { cause: response.error }))\n      return\n    }\n\n    // 4. Set responseObject to the result of creating a Response object,\n    // given response, \"immutable\", and relevantRealm.\n    responseObject = new WeakRef(fromInnerResponse(response, 'immutable'))\n\n    // 5. Resolve p with responseObject.\n    p.resolve(responseObject.deref())\n    p = null\n  }\n\n  controller = fetching({\n    request,\n    processResponseEndOfBody: handleFetchDone,\n    processResponse,\n    dispatcher: getRequestDispatcher(requestObject), // undici\n    // Keep requestObject alive to prevent its AbortController from being GC'd\n    // See https://github.com/nodejs/undici/issues/4627\n    requestObject\n  })\n\n  // 14. Return p.\n  return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n  // 1. If response is an aborted network error, then return.\n  if (response.type === 'error' && response.aborted) {\n    return\n  }\n\n  // 2. If response’s URL list is null or empty, then return.\n  if (!response.urlList?.length) {\n    return\n  }\n\n  // 3. Let originalURL be response’s URL list[0].\n  const originalURL = response.urlList[0]\n\n  // 4. Let timingInfo be response’s timing info.\n  let timingInfo = response.timingInfo\n\n  // 5. Let cacheState be response’s cache state.\n  let cacheState = response.cacheState\n\n  // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.\n  if (!urlIsHttpHttpsScheme(originalURL)) {\n    return\n  }\n\n  // 7. If timingInfo is null, then return.\n  if (timingInfo === null) {\n    return\n  }\n\n  // 8. If response’s timing allow passed flag is not set, then:\n  if (!response.timingAllowPassed) {\n    //  1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n    timingInfo = createOpaqueTimingInfo({\n      startTime: timingInfo.startTime\n    })\n\n    //  2. Set cacheState to the empty string.\n    cacheState = ''\n  }\n\n  // 9. Set timingInfo’s end time to the coarsened shared current time\n  // given global’s relevant settings object’s cross-origin isolated\n  // capability.\n  // TODO: given global’s relevant settings object’s cross-origin isolated\n  // capability?\n  timingInfo.endTime = coarsenedSharedCurrentTime()\n\n  // 10. Set response’s timing info to timingInfo.\n  response.timingInfo = timingInfo\n\n  // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n  // global, and cacheState.\n  markResourceTiming(\n    timingInfo,\n    originalURL.href,\n    initiatorType,\n    globalThis,\n    cacheState,\n    '', // bodyType\n    response.status\n  )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nconst markResourceTiming = performance.markResourceTiming\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error, controller /* undici-specific */) {\n  // 1. Reject promise with error.\n  if (p) {\n    // We might have already resolved the promise at this stage\n    p.reject(error)\n  }\n\n  // 2. If request’s body is not null and is readable, then cancel request’s\n  // body with error.\n  if (request.body?.stream != null && isReadable(request.body.stream)) {\n    request.body.stream.cancel(error).catch((err) => {\n      if (err.code === 'ERR_INVALID_STATE') {\n        // Node bug?\n        return\n      }\n      throw err\n    })\n  }\n\n  // 3. If responseObject is null, then return.\n  if (responseObject == null) {\n    return\n  }\n\n  // 4. Let response be responseObject’s response.\n  const response = getResponseState(responseObject)\n\n  // 5. If response’s body is not null and is readable, then error response’s\n  // body with error.\n  if (response.body?.stream != null && isReadable(response.body.stream)) {\n    controller.error(error)\n  }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n  request,\n  processRequestBodyChunkLength,\n  processRequestEndOfBody,\n  processResponse,\n  processResponseEndOfBody,\n  processResponseConsumeBody,\n  useParallelQueue = false,\n  dispatcher = getGlobalDispatcher(), // undici\n  requestObject = null // Keep alive to prevent AbortController GC, see #4627\n}) {\n  // Ensure that the dispatcher is set accordingly\n  assert(dispatcher)\n\n  // 1. Let taskDestination be null.\n  let taskDestination = null\n\n  // 2. Let crossOriginIsolatedCapability be false.\n  let crossOriginIsolatedCapability = false\n\n  // 3. If request’s client is non-null, then:\n  if (request.client != null) {\n    // 1. Set taskDestination to request’s client’s global object.\n    taskDestination = request.client.globalObject\n\n    // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin\n    // isolated capability.\n    crossOriginIsolatedCapability =\n      request.client.crossOriginIsolatedCapability\n  }\n\n  // 4. If useParallelQueue is true, then set taskDestination to the result of\n  // starting a new parallel queue.\n  // TODO\n\n  // 5. Let timingInfo be a new fetch timing info whose start time and\n  // post-redirect start time are the coarsened shared current time given\n  // crossOriginIsolatedCapability.\n  const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n  const timingInfo = createOpaqueTimingInfo({\n    startTime: currentTime\n  })\n\n  // 6. Let fetchParams be a new fetch params whose\n  // request is request,\n  // timing info is timingInfo,\n  // process request body chunk length is processRequestBodyChunkLength,\n  // process request end-of-body is processRequestEndOfBody,\n  // process response is processResponse,\n  // process response consume body is processResponseConsumeBody,\n  // process response end-of-body is processResponseEndOfBody,\n  // task destination is taskDestination,\n  // and cross-origin isolated capability is crossOriginIsolatedCapability.\n  const fetchParams = {\n    controller: new Fetch(dispatcher),\n    request,\n    timingInfo,\n    processRequestBodyChunkLength,\n    processRequestEndOfBody,\n    processResponse,\n    processResponseConsumeBody,\n    processResponseEndOfBody,\n    taskDestination,\n    crossOriginIsolatedCapability,\n    // Keep requestObject alive to prevent its AbortController from being GC'd\n    requestObject\n  }\n\n  // 7. If request’s body is a byte sequence, then set request’s body to\n  //    request’s body as a body.\n  // NOTE: Since fetching is only called from fetch, body should already be\n  // extracted.\n  assert(!request.body || request.body.stream)\n\n  // 8. If request’s window is \"client\", then set request’s window to request’s\n  // client, if request’s client’s global object is a Window object; otherwise\n  // \"no-window\".\n  if (request.window === 'client') {\n    // TODO: What if request.client is null?\n    request.window =\n      request.client?.globalObject?.constructor?.name === 'Window'\n        ? request.client\n        : 'no-window'\n  }\n\n  // 9. If request’s origin is \"client\", then set request’s origin to request’s\n  // client’s origin.\n  if (request.origin === 'client') {\n    request.origin = request.client.origin\n  }\n\n  // 10. If all of the following conditions are true:\n  // TODO\n\n  // 11. If request’s policy container is \"client\", then:\n  if (request.policyContainer === 'client') {\n    // 1. If request’s client is non-null, then set request’s policy\n    // container to a clone of request’s client’s policy container. [HTML]\n    if (request.client != null) {\n      request.policyContainer = clonePolicyContainer(\n        request.client.policyContainer\n      )\n    } else {\n      // 2. Otherwise, set request’s policy container to a new policy\n      // container.\n      request.policyContainer = makePolicyContainer()\n    }\n  }\n\n  // 12. If request’s header list does not contain `Accept`, then:\n  if (!request.headersList.contains('accept', true)) {\n    // 1. Let value be `*/*`.\n    const value = '*/*'\n\n    // 2. A user agent should set value to the first matching statement, if\n    // any, switching on request’s destination:\n    // \"document\"\n    // \"frame\"\n    // \"iframe\"\n    // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n    // \"image\"\n    // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n    // \"style\"\n    // `text/css,*/*;q=0.1`\n    // TODO\n\n    // 3. Append `Accept`/value to request’s header list.\n    request.headersList.append('accept', value, true)\n  }\n\n  // 13. If request’s header list does not contain `Accept-Language`, then\n  // user agents should append `Accept-Language`/an appropriate value to\n  // request’s header list.\n  if (!request.headersList.contains('accept-language', true)) {\n    request.headersList.append('accept-language', '*', true)\n  }\n\n  // 14. If request’s priority is null, then use request’s initiator and\n  // destination appropriately in setting request’s priority to a\n  // user-agent-defined object.\n  if (request.priority === null) {\n    // TODO\n  }\n\n  // 15. If request is a subresource request, then:\n  if (subresourceSet.has(request.destination)) {\n    // TODO\n  }\n\n  // 16. Run main fetch given fetchParams.\n  mainFetch(fetchParams, false)\n\n  // 17. Return fetchParam's controller\n  return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive) {\n  try {\n    // 1. Let request be fetchParams’s request.\n    const request = fetchParams.request\n\n    // 2. Let response be null.\n    let response = null\n\n    // 3. If request’s local-URLs-only flag is set and request’s current URL is\n    // not local, then set response to a network error.\n    if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n      response = makeNetworkError('local URLs only')\n    }\n\n    // 4. Run report Content Security Policy violations for request.\n    // TODO\n\n    // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n    tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n    // 6. If should request be blocked due to a bad port, should fetching request\n    // be blocked as mixed content, or should request be blocked by Content\n    // Security Policy returns blocked, then set response to a network error.\n    if (requestBadPort(request) === 'blocked') {\n      response = makeNetworkError('bad port')\n    }\n    // TODO: should fetching request be blocked as mixed content?\n    // TODO: should request be blocked by Content Security Policy?\n\n    // 7. If request’s referrer policy is the empty string, then set request’s\n    // referrer policy to request’s policy container’s referrer policy.\n    if (request.referrerPolicy === '') {\n      request.referrerPolicy = request.policyContainer.referrerPolicy\n    }\n\n    // 8. If request’s referrer is not \"no-referrer\", then set request’s\n    // referrer to the result of invoking determine request’s referrer.\n    if (request.referrer !== 'no-referrer') {\n      request.referrer = determineRequestsReferrer(request)\n    }\n\n    // 9. Set request’s current URL’s scheme to \"https\" if all of the following\n    // conditions are true:\n    // - request’s current URL’s scheme is \"http\"\n    // - request’s current URL’s host is a domain\n    // - Matching request’s current URL’s host per Known HSTS Host Domain Name\n    //   Matching results in either a superdomain match with an asserted\n    //   includeSubDomains directive or a congruent match (with or without an\n    //   asserted includeSubDomains directive). [HSTS]\n    // TODO\n\n    // 10. If recursive is false, then run the remaining steps in parallel.\n    // TODO\n\n    // 11. If response is null, then set response to the result of running\n    // the steps corresponding to the first matching statement:\n    if (response === null) {\n      const currentURL = requestCurrentURL(request)\n      if (\n        // - request’s current URL’s origin is same origin with request’s origin,\n        //   and request’s response tainting is \"basic\"\n        (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n        // request’s current URL’s scheme is \"data\"\n        (currentURL.protocol === 'data:') ||\n        // - request’s mode is \"navigate\" or \"websocket\"\n        (request.mode === 'navigate' || request.mode === 'websocket')\n      ) {\n        // 1. Set request’s response tainting to \"basic\".\n        request.responseTainting = 'basic'\n\n        // 2. Return the result of running scheme fetch given fetchParams.\n        response = await schemeFetch(fetchParams)\n\n      // request’s mode is \"same-origin\"\n      } else if (request.mode === 'same-origin') {\n        // 1. Return a network error.\n        response = makeNetworkError('request mode cannot be \"same-origin\"')\n\n      // request’s mode is \"no-cors\"\n      } else if (request.mode === 'no-cors') {\n        // 1. If request’s redirect mode is not \"follow\", then return a network\n        // error.\n        if (request.redirect !== 'follow') {\n          response = makeNetworkError(\n            'redirect mode cannot be \"follow\" for \"no-cors\" request'\n          )\n        } else {\n          // 2. Set request’s response tainting to \"opaque\".\n          request.responseTainting = 'opaque'\n\n          // 3. Return the result of running scheme fetch given fetchParams.\n          response = await schemeFetch(fetchParams)\n        }\n      // request’s current URL’s scheme is not an HTTP(S) scheme\n      } else if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n        // Return a network error.\n        response = makeNetworkError('URL scheme must be a HTTP(S) scheme')\n\n        // - request’s use-CORS-preflight flag is set\n        // - request’s unsafe-request flag is set and either request’s method is\n        //   not a CORS-safelisted method or CORS-unsafe request-header names with\n        //   request’s header list is not empty\n        //    1. Set request’s response tainting to \"cors\".\n        //    2. Let corsWithPreflightResponse be the result of running HTTP fetch\n        //    given fetchParams and true.\n        //    3. If corsWithPreflightResponse is a network error, then clear cache\n        //    entries using request.\n        //    4. Return corsWithPreflightResponse.\n        // TODO\n\n      // Otherwise\n      } else {\n        //    1. Set request’s response tainting to \"cors\".\n        request.responseTainting = 'cors'\n\n        //    2. Return the result of running HTTP fetch given fetchParams.\n        response = await httpFetch(fetchParams)\n      }\n    }\n\n    // 12. If recursive is true, then return response.\n    if (recursive) {\n      return response\n    }\n\n    // 13. If response is not a network error and response is not a filtered\n    // response, then:\n    if (response.status !== 0 && !response.internalResponse) {\n      // If request’s response tainting is \"cors\", then:\n      if (request.responseTainting === 'cors') {\n        // 1. Let headerNames be the result of extracting header list values\n        // given `Access-Control-Expose-Headers` and response’s header list.\n        // TODO\n        // 2. If request’s credentials mode is not \"include\" and headerNames\n        // contains `*`, then set response’s CORS-exposed header-name list to\n        // all unique header names in response’s header list.\n        // TODO\n        // 3. Otherwise, if headerNames is not null or failure, then set\n        // response’s CORS-exposed header-name list to headerNames.\n        // TODO\n      }\n\n      // Set response to the following filtered response with response as its\n      // internal response, depending on request’s response tainting:\n      if (request.responseTainting === 'basic') {\n        response = filterResponse(response, 'basic')\n      } else if (request.responseTainting === 'cors') {\n        response = filterResponse(response, 'cors')\n      } else if (request.responseTainting === 'opaque') {\n        response = filterResponse(response, 'opaque')\n      } else {\n        assert(false)\n      }\n    }\n\n    // 14. Let internalResponse be response, if response is a network error,\n    // and response’s internal response otherwise.\n    let internalResponse =\n      response.status === 0 ? response : response.internalResponse\n\n    // 15. If internalResponse’s URL list is empty, then set it to a clone of\n    // request’s URL list.\n    if (internalResponse.urlList.length === 0) {\n      internalResponse.urlList.push(...request.urlList)\n    }\n\n    // 16. If request’s timing allow failed flag is unset, then set\n    // internalResponse’s timing allow passed flag.\n    if (!request.timingAllowFailed) {\n      response.timingAllowPassed = true\n    }\n\n    // 17. If response is not a network error and any of the following returns\n    // blocked\n    // - should internalResponse to request be blocked as mixed content\n    // - should internalResponse to request be blocked by Content Security Policy\n    // - should internalResponse to request be blocked due to its MIME type\n    // - should internalResponse to request be blocked due to nosniff\n    // TODO\n\n    // 18. If response’s type is \"opaque\", internalResponse’s status is 206,\n    // internalResponse’s range-requested flag is set, and request’s header\n    // list does not contain `Range`, then set response and internalResponse\n    // to a network error.\n    if (\n      response.type === 'opaque' &&\n      internalResponse.status === 206 &&\n      internalResponse.rangeRequested &&\n      !request.headers.contains('range', true)\n    ) {\n      response = internalResponse = makeNetworkError()\n    }\n\n    // 19. If response is not a network error and either request’s method is\n    // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,\n    // set internalResponse’s body to null and disregard any enqueuing toward\n    // it (if any).\n    if (\n      response.status !== 0 &&\n      (request.method === 'HEAD' ||\n        request.method === 'CONNECT' ||\n        nullBodyStatus.includes(internalResponse.status))\n    ) {\n      internalResponse.body = null\n      fetchParams.controller.dump = true\n    }\n\n    // 20. If request’s integrity metadata is not the empty string, then:\n    if (request.integrity) {\n      // 1. Let processBodyError be this step: run fetch finale given fetchParams\n      // and a network error.\n      const processBodyError = (reason) =>\n        fetchFinale(fetchParams, makeNetworkError(reason))\n\n      // 2. If request’s response tainting is \"opaque\", or response’s body is null,\n      // then run processBodyError and abort these steps.\n      if (request.responseTainting === 'opaque' || response.body == null) {\n        processBodyError(response.error)\n        return\n      }\n\n      // 3. Let processBody given bytes be these steps:\n      const processBody = (bytes) => {\n        // 1. If bytes do not match request’s integrity metadata,\n        // then run processBodyError and abort these steps. [SRI]\n        if (!bytesMatch(bytes, request.integrity)) {\n          processBodyError('integrity mismatch')\n          return\n        }\n\n        // 2. Set response’s body to bytes as a body.\n        response.body = safelyExtractBody(bytes)[0]\n\n        // 3. Run fetch finale given fetchParams and response.\n        fetchFinale(fetchParams, response)\n      }\n\n      // 4. Fully read response’s body given processBody and processBodyError.\n      fullyReadBody(response.body, processBody, processBodyError)\n    } else {\n      // 21. Otherwise, run fetch finale given fetchParams and response.\n      fetchFinale(fetchParams, response)\n    }\n  } catch (err) {\n    fetchParams.controller.terminate(err)\n  }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n  // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n  // cancelled state, we do not want this condition to trigger *unless* there have been\n  // no redirects. See https://github.com/nodejs/undici/issues/1776\n  // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n  if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n    return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n  }\n\n  // 2. Let request be fetchParams’s request.\n  const { request } = fetchParams\n\n  const { protocol: scheme } = requestCurrentURL(request)\n\n  // 3. Switch on request’s current URL’s scheme and run the associated steps:\n  switch (scheme) {\n    case 'about:': {\n      // If request’s current URL’s path is the string \"blank\", then return a new response\n      // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,\n      // and body is the empty byte sequence as a body.\n\n      // Otherwise, return a network error.\n      return Promise.resolve(makeNetworkError('about scheme is not supported'))\n    }\n    case 'blob:': {\n      if (!resolveObjectURL) {\n        resolveObjectURL = require('node:buffer').resolveObjectURL\n      }\n\n      // 1. Let blobURLEntry be request’s current URL’s blob URL entry.\n      const blobURLEntry = requestCurrentURL(request)\n\n      // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n      // Buffer.resolveObjectURL does not ignore URL queries.\n      if (blobURLEntry.search.length !== 0) {\n        return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n      }\n\n      const blob = resolveObjectURL(blobURLEntry.toString())\n\n      // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s\n      //    object is not a Blob object, then return a network error.\n      if (request.method !== 'GET' || !webidl.is.Blob(blob)) {\n        return Promise.resolve(makeNetworkError('invalid method'))\n      }\n\n      // 3. Let blob be blobURLEntry’s object.\n      // Note: done above\n\n      // 4. Let response be a new response.\n      const response = makeResponse()\n\n      // 5. Let fullLength be blob’s size.\n      const fullLength = blob.size\n\n      // 6. Let serializedFullLength be fullLength, serialized and isomorphic encoded.\n      const serializedFullLength = isomorphicEncode(`${fullLength}`)\n\n      // 7. Let type be blob’s type.\n      const type = blob.type\n\n      // 8. If request’s header list does not contain `Range`:\n      // 9. Otherwise:\n      if (!request.headersList.contains('range', true)) {\n        // 1. Let bodyWithType be the result of safely extracting blob.\n        // Note: in the FileAPI a blob \"object\" is a Blob *or* a MediaSource.\n        // In node, this can only ever be a Blob. Therefore we can safely\n        // use extractBody directly.\n        const bodyWithType = extractBody(blob)\n\n        // 2. Set response’s status message to `OK`.\n        response.statusText = 'OK'\n\n        // 3. Set response’s body to bodyWithType’s body.\n        response.body = bodyWithType[0]\n\n        // 4. Set response’s header list to « (`Content-Length`, serializedFullLength), (`Content-Type`, type) ».\n        response.headersList.set('content-length', serializedFullLength, true)\n        response.headersList.set('content-type', type, true)\n      } else {\n        // 1. Set response’s range-requested flag.\n        response.rangeRequested = true\n\n        // 2. Let rangeHeader be the result of getting `Range` from request’s header list.\n        const rangeHeader = request.headersList.get('range', true)\n\n        // 3. Let rangeValue be the result of parsing a single range header value given rangeHeader and true.\n        const rangeValue = simpleRangeHeaderValue(rangeHeader, true)\n\n        // 4. If rangeValue is failure, then return a network error.\n        if (rangeValue === 'failure') {\n          return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n        }\n\n        // 5. Let (rangeStart, rangeEnd) be rangeValue.\n        let { rangeStartValue: rangeStart, rangeEndValue: rangeEnd } = rangeValue\n\n        // 6. If rangeStart is null:\n        // 7. Otherwise:\n        if (rangeStart === null) {\n          // 1. Set rangeStart to fullLength − rangeEnd.\n          rangeStart = fullLength - rangeEnd\n\n          // 2. Set rangeEnd to rangeStart + rangeEnd − 1.\n          rangeEnd = rangeStart + rangeEnd - 1\n        } else {\n          // 1. If rangeStart is greater than or equal to fullLength, then return a network error.\n          if (rangeStart >= fullLength) {\n            return Promise.resolve(makeNetworkError('Range start is greater than the blob\\'s size.'))\n          }\n\n          // 2. If rangeEnd is null or rangeEnd is greater than or equal to fullLength, then set\n          //    rangeEnd to fullLength − 1.\n          if (rangeEnd === null || rangeEnd >= fullLength) {\n            rangeEnd = fullLength - 1\n          }\n        }\n\n        // 8. Let slicedBlob be the result of invoking slice blob given blob, rangeStart,\n        //    rangeEnd + 1, and type.\n        const slicedBlob = blob.slice(rangeStart, rangeEnd + 1, type)\n\n        // 9. Let slicedBodyWithType be the result of safely extracting slicedBlob.\n        // Note: same reason as mentioned above as to why we use extractBody\n        const slicedBodyWithType = extractBody(slicedBlob)\n\n        // 10. Set response’s body to slicedBodyWithType’s body.\n        response.body = slicedBodyWithType[0]\n\n        // 11. Let serializedSlicedLength be slicedBlob’s size, serialized and isomorphic encoded.\n        const serializedSlicedLength = isomorphicEncode(`${slicedBlob.size}`)\n\n        // 12. Let contentRange be the result of invoking build a content range given rangeStart,\n        //     rangeEnd, and fullLength.\n        const contentRange = buildContentRange(rangeStart, rangeEnd, fullLength)\n\n        // 13. Set response’s status to 206.\n        response.status = 206\n\n        // 14. Set response’s status message to `Partial Content`.\n        response.statusText = 'Partial Content'\n\n        // 15. Set response’s header list to « (`Content-Length`, serializedSlicedLength),\n        //     (`Content-Type`, type), (`Content-Range`, contentRange) ».\n        response.headersList.set('content-length', serializedSlicedLength, true)\n        response.headersList.set('content-type', type, true)\n        response.headersList.set('content-range', contentRange, true)\n      }\n\n      // 10. Return response.\n      return Promise.resolve(response)\n    }\n    case 'data:': {\n      // 1. Let dataURLStruct be the result of running the\n      //    data: URL processor on request’s current URL.\n      const currentURL = requestCurrentURL(request)\n      const dataURLStruct = dataURLProcessor(currentURL)\n\n      // 2. If dataURLStruct is failure, then return a\n      //    network error.\n      if (dataURLStruct === 'failure') {\n        return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n      }\n\n      // 3. Let mimeType be dataURLStruct’s MIME type, serialized.\n      const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n      // 4. Return a response whose status message is `OK`,\n      //    header list is « (`Content-Type`, mimeType) »,\n      //    and body is dataURLStruct’s body as a body.\n      return Promise.resolve(makeResponse({\n        statusText: 'OK',\n        headersList: [\n          ['content-type', { name: 'Content-Type', value: mimeType }]\n        ],\n        body: safelyExtractBody(dataURLStruct.body)[0]\n      }))\n    }\n    case 'file:': {\n      // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n      // When in doubt, return a network error.\n      return Promise.resolve(makeNetworkError('not implemented... yet...'))\n    }\n    case 'http:':\n    case 'https:': {\n      // Return the result of running HTTP fetch given fetchParams.\n\n      return httpFetch(fetchParams)\n        .catch((err) => makeNetworkError(err))\n    }\n    default: {\n      return Promise.resolve(makeNetworkError('unknown scheme'))\n    }\n  }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n  // 1. Set fetchParams’s request’s done flag.\n  fetchParams.request.done = true\n\n  // 2, If fetchParams’s process response done is not null, then queue a fetch\n  // task to run fetchParams’s process response done given response, with\n  // fetchParams’s task destination.\n  if (fetchParams.processResponseDone != null) {\n    queueMicrotask(() => fetchParams.processResponseDone(response))\n  }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n  // 1. Let timingInfo be fetchParams’s timing info.\n  let timingInfo = fetchParams.timingInfo\n\n  // 2. If response is not a network error and fetchParams’s request’s client is a secure context,\n  //    then set timingInfo’s server-timing headers to the result of getting, decoding, and splitting\n  //    `Server-Timing` from response’s internal response’s header list.\n  // TODO\n\n  // 3. Let processResponseEndOfBody be the following steps:\n  const processResponseEndOfBody = () => {\n    // 1. Let unsafeEndTime be the unsafe shared current time.\n    const unsafeEndTime = Date.now() // ?\n\n    // 2. If fetchParams’s request’s destination is \"document\", then set fetchParams’s controller’s\n    //    full timing info to fetchParams’s timing info.\n    if (fetchParams.request.destination === 'document') {\n      fetchParams.controller.fullTimingInfo = timingInfo\n    }\n\n    // 3. Set fetchParams’s controller’s report timing steps to the following steps given a global object global:\n    fetchParams.controller.reportTimingSteps = () => {\n      // 1. If fetchParams’s request’s URL’s scheme is not an HTTP(S) scheme, then return.\n      if (!urlIsHttpHttpsScheme(fetchParams.request.url)) {\n        return\n      }\n\n      // 2. Set timingInfo’s end time to the relative high resolution time given unsafeEndTime and global.\n      timingInfo.endTime = unsafeEndTime\n\n      // 3. Let cacheState be response’s cache state.\n      let cacheState = response.cacheState\n\n      // 4. Let bodyInfo be response’s body info.\n      const bodyInfo = response.bodyInfo\n\n      // 5. If response’s timing allow passed flag is not set, then set timingInfo to the result of creating an\n      //    opaque timing info for timingInfo and set cacheState to the empty string.\n      if (!response.timingAllowPassed) {\n        timingInfo = createOpaqueTimingInfo(timingInfo)\n\n        cacheState = ''\n      }\n\n      // 6. Let responseStatus be 0.\n      let responseStatus = 0\n\n      // 7. If fetchParams’s request’s mode is not \"navigate\" or response’s has-cross-origin-redirects is false:\n      if (fetchParams.request.mode !== 'navigate' || !response.hasCrossOriginRedirects) {\n        // 1. Set responseStatus to response’s status.\n        responseStatus = response.status\n\n        // 2. Let mimeType be the result of extracting a MIME type from response’s header list.\n        const mimeType = extractMimeType(response.headersList)\n\n        // 3. If mimeType is not failure, then set bodyInfo’s content type to the result of minimizing a supported MIME type given mimeType.\n        if (mimeType !== 'failure') {\n          bodyInfo.contentType = minimizeSupportedMimeType(mimeType)\n        }\n      }\n\n      // 8. If fetchParams’s request’s initiator type is non-null, then mark resource timing given timingInfo,\n      //    fetchParams’s request’s URL, fetchParams’s request’s initiator type, global, cacheState, bodyInfo,\n      //    and responseStatus.\n      if (fetchParams.request.initiatorType != null) {\n        markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus)\n      }\n    }\n\n    // 4. Let processResponseEndOfBodyTask be the following steps:\n    const processResponseEndOfBodyTask = () => {\n      // 1. Set fetchParams’s request’s done flag.\n      fetchParams.request.done = true\n\n      // 2. If fetchParams’s process response end-of-body is non-null, then run fetchParams’s process\n      //    response end-of-body given response.\n      if (fetchParams.processResponseEndOfBody != null) {\n        queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n      }\n\n      // 3. If fetchParams’s request’s initiator type is non-null and fetchParams’s request’s client’s\n      //    global object is fetchParams’s task destination, then run fetchParams’s controller’s report\n      //    timing steps given fetchParams’s request’s client’s global object.\n      if (fetchParams.request.initiatorType != null) {\n        fetchParams.controller.reportTimingSteps()\n      }\n    }\n\n    // 5. Queue a fetch task to run processResponseEndOfBodyTask with fetchParams’s task destination\n    queueMicrotask(() => processResponseEndOfBodyTask())\n  }\n\n  // 4. If fetchParams’s process response is non-null, then queue a fetch task to run fetchParams’s\n  //    process response given response, with fetchParams’s task destination.\n  if (fetchParams.processResponse != null) {\n    queueMicrotask(() => {\n      fetchParams.processResponse(response)\n      fetchParams.processResponse = null\n    })\n  }\n\n  // 5. Let internalResponse be response, if response is a network error; otherwise response’s internal response.\n  const internalResponse = response.type === 'error' ? response : (response.internalResponse ?? response)\n\n  // 6. If internalResponse’s body is null, then run processResponseEndOfBody.\n  // 7. Otherwise:\n  if (internalResponse.body == null) {\n    processResponseEndOfBody()\n  } else {\n    // mcollina: all the following steps of the specs are skipped.\n    // The internal transform stream is not needed.\n    // See https://github.com/nodejs/undici/pull/3093#issuecomment-2050198541\n\n    // 1. Let transformStream be a new TransformStream.\n    // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, enqueues chunk in transformStream.\n    // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm and flushAlgorithm\n    //    set to processResponseEndOfBody.\n    // 4. Set internalResponse’s body’s stream to the result of internalResponse’s body’s stream piped through transformStream.\n\n    finished(internalResponse.body.stream, () => {\n      processResponseEndOfBody()\n    })\n  }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n  // 1. Let request be fetchParams’s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. Let actualResponse be null.\n  let actualResponse = null\n\n  // 4. Let timingInfo be fetchParams’s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 5. If request’s service-workers mode is \"all\", then:\n  if (request.serviceWorkers === 'all') {\n    // TODO\n  }\n\n  // 6. If response is null, then:\n  if (response === null) {\n    // 1. If makeCORSPreflight is true and one of these conditions is true:\n    // TODO\n\n    // 2. If request’s redirect mode is \"follow\", then set request’s\n    // service-workers mode to \"none\".\n    if (request.redirect === 'follow') {\n      request.serviceWorkers = 'none'\n    }\n\n    // 3. Set response and actualResponse to the result of running\n    // HTTP-network-or-cache fetch given fetchParams.\n    actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n    // 4. If request’s response tainting is \"cors\" and a CORS check\n    // for request and response returns failure, then return a network error.\n    if (\n      request.responseTainting === 'cors' &&\n      corsCheck(request, response) === 'failure'\n    ) {\n      return makeNetworkError('cors failure')\n    }\n\n    // 5. If the TAO check for request and response returns failure, then set\n    // request’s timing allow failed flag.\n    if (TAOCheck(request, response) === 'failure') {\n      request.timingAllowFailed = true\n    }\n  }\n\n  // 7. If either request’s response tainting or response’s type\n  // is \"opaque\", and the cross-origin resource policy check with\n  // request’s origin, request’s client, request’s destination,\n  // and actualResponse returns blocked, then return a network error.\n  if (\n    (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n    crossOriginResourcePolicyCheck(\n      request.origin,\n      request.client,\n      request.destination,\n      actualResponse\n    ) === 'blocked'\n  ) {\n    return makeNetworkError('blocked')\n  }\n\n  // 8. If actualResponse’s status is a redirect status, then:\n  if (redirectStatusSet.has(actualResponse.status)) {\n    // 1. If actualResponse’s status is not 303, request’s body is not null,\n    // and the connection uses HTTP/2, then user agents may, and are even\n    // encouraged to, transmit an RST_STREAM frame.\n    // See, https://github.com/whatwg/fetch/issues/1288\n    if (request.redirect !== 'manual') {\n      fetchParams.controller.connection.destroy(undefined, false)\n    }\n\n    // 2. Switch on request’s redirect mode:\n    if (request.redirect === 'error') {\n      // Set response to a network error.\n      response = makeNetworkError('unexpected redirect')\n    } else if (request.redirect === 'manual') {\n      // Set response to an opaque-redirect filtered response whose internal\n      // response is actualResponse.\n      // NOTE(spec): On the web this would return an `opaqueredirect` response,\n      // but that doesn't make sense server side.\n      // See https://github.com/nodejs/undici/issues/1193.\n      response = actualResponse\n    } else if (request.redirect === 'follow') {\n      // Set response to the result of running HTTP-redirect fetch given\n      // fetchParams and response.\n      response = await httpRedirectFetch(fetchParams, response)\n    } else {\n      assert(false)\n    }\n  }\n\n  // 9. Set response’s timing info to timingInfo.\n  response.timingInfo = timingInfo\n\n  // 10. Return response.\n  return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n  // 1. Let request be fetchParams’s request.\n  const request = fetchParams.request\n\n  // 2. Let actualResponse be response, if response is not a filtered response,\n  // and response’s internal response otherwise.\n  const actualResponse = response.internalResponse\n    ? response.internalResponse\n    : response\n\n  // 3. Let locationURL be actualResponse’s location URL given request’s current\n  // URL’s fragment.\n  let locationURL\n\n  try {\n    locationURL = responseLocationURL(\n      actualResponse,\n      requestCurrentURL(request).hash\n    )\n\n    // 4. If locationURL is null, then return response.\n    if (locationURL == null) {\n      return response\n    }\n  } catch (err) {\n    // 5. If locationURL is failure, then return a network error.\n    return Promise.resolve(makeNetworkError(err))\n  }\n\n  // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network\n  // error.\n  if (!urlIsHttpHttpsScheme(locationURL)) {\n    return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n  }\n\n  // 7. If request’s redirect count is 20, then return a network error.\n  if (request.redirectCount === 20) {\n    return Promise.resolve(makeNetworkError('redirect count exceeded'))\n  }\n\n  // 8. Increase request’s redirect count by 1.\n  request.redirectCount += 1\n\n  // 9. If request’s mode is \"cors\", locationURL includes credentials, and\n  // request’s origin is not same origin with locationURL’s origin, then return\n  //  a network error.\n  if (\n    request.mode === 'cors' &&\n    (locationURL.username || locationURL.password) &&\n    !sameOrigin(request, locationURL)\n  ) {\n    return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n  }\n\n  // 10. If request’s response tainting is \"cors\" and locationURL includes\n  // credentials, then return a network error.\n  if (\n    request.responseTainting === 'cors' &&\n    (locationURL.username || locationURL.password)\n  ) {\n    return Promise.resolve(makeNetworkError(\n      'URL cannot contain credentials for request mode \"cors\"'\n    ))\n  }\n\n  // 11. If actualResponse’s status is not 303, request’s body is non-null,\n  // and request’s body’s source is null, then return a network error.\n  if (\n    actualResponse.status !== 303 &&\n    request.body != null &&\n    request.body.source == null\n  ) {\n    return Promise.resolve(makeNetworkError())\n  }\n\n  // 12. If one of the following is true\n  // - actualResponse’s status is 301 or 302 and request’s method is `POST`\n  // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`\n  if (\n    ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n    (actualResponse.status === 303 &&\n      !GET_OR_HEAD.includes(request.method))\n  ) {\n    // then:\n    // 1. Set request’s method to `GET` and request’s body to null.\n    request.method = 'GET'\n    request.body = null\n\n    // 2. For each headerName of request-body-header name, delete headerName from\n    // request’s header list.\n    for (const headerName of requestBodyHeader) {\n      request.headersList.delete(headerName)\n    }\n  }\n\n  // 13. If request’s current URL’s origin is not same origin with locationURL’s\n  //     origin, then for each headerName of CORS non-wildcard request-header name,\n  //     delete headerName from request’s header list.\n  if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n    // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n    request.headersList.delete('authorization', true)\n\n    // https://fetch.spec.whatwg.org/#authentication-entries\n    request.headersList.delete('proxy-authorization', true)\n\n    // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n    request.headersList.delete('cookie', true)\n    request.headersList.delete('host', true)\n  }\n\n  // 14. If request's body is non-null, then set request's body to the first return\n  // value of safely extracting request's body's source.\n  if (request.body != null) {\n    assert(request.body.source != null)\n    request.body = safelyExtractBody(request.body.source)[0]\n  }\n\n  // 15. Let timingInfo be fetchParams’s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 16. Set timingInfo’s redirect end time and post-redirect start time to the\n  // coarsened shared current time given fetchParams’s cross-origin isolated\n  // capability.\n  timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n    coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n  // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s\n  //  redirect start time to timingInfo’s start time.\n  if (timingInfo.redirectStartTime === 0) {\n    timingInfo.redirectStartTime = timingInfo.startTime\n  }\n\n  // 18. Append locationURL to request’s URL list.\n  request.urlList.push(locationURL)\n\n  // 19. Invoke set request’s referrer policy on redirect on request and\n  // actualResponse.\n  setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n  // 20. Return the result of running main fetch given fetchParams and true.\n  return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n  fetchParams,\n  isAuthenticationFetch = false,\n  isNewConnectionFetch = false\n) {\n  // 1. Let request be fetchParams’s request.\n  const request = fetchParams.request\n\n  // 2. Let httpFetchParams be null.\n  let httpFetchParams = null\n\n  // 3. Let httpRequest be null.\n  let httpRequest = null\n\n  // 4. Let response be null.\n  let response = null\n\n  // 5. Let storedResponse be null.\n  // TODO: cache\n\n  // 6. Let httpCache be null.\n  const httpCache = null\n\n  // 7. Let the revalidatingFlag be unset.\n  const revalidatingFlag = false\n\n  // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. If request’s window is \"no-window\" and request’s redirect mode is\n  //    \"error\", then set httpFetchParams to fetchParams and httpRequest to\n  //    request.\n  if (request.window === 'no-window' && request.redirect === 'error') {\n    httpFetchParams = fetchParams\n    httpRequest = request\n  } else {\n    // Otherwise:\n\n    // 1. Set httpRequest to a clone of request.\n    httpRequest = cloneRequest(request)\n\n    // 2. Set httpFetchParams to a copy of fetchParams.\n    httpFetchParams = { ...fetchParams }\n\n    // 3. Set httpFetchParams’s request to httpRequest.\n    httpFetchParams.request = httpRequest\n  }\n\n  //    3. Let includeCredentials be true if one of\n  const includeCredentials =\n    request.credentials === 'include' ||\n    (request.credentials === 'same-origin' &&\n      request.responseTainting === 'basic')\n\n  //    4. Let contentLength be httpRequest’s body’s length, if httpRequest’s\n  //    body is non-null; otherwise null.\n  const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n  //    5. Let contentLengthHeaderValue be null.\n  let contentLengthHeaderValue = null\n\n  //    6. If httpRequest’s body is null and httpRequest’s method is `POST` or\n  //    `PUT`, then set contentLengthHeaderValue to `0`.\n  if (\n    httpRequest.body == null &&\n    ['POST', 'PUT'].includes(httpRequest.method)\n  ) {\n    contentLengthHeaderValue = '0'\n  }\n\n  //    7. If contentLength is non-null, then set contentLengthHeaderValue to\n  //    contentLength, serialized and isomorphic encoded.\n  if (contentLength != null) {\n    contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n  }\n\n  //    8. If contentLengthHeaderValue is non-null, then append\n  //    `Content-Length`/contentLengthHeaderValue to httpRequest’s header\n  //    list.\n  if (\n    contentLengthHeaderValue != null &&\n    !httpRequest.headersList.contains('content-length', true)\n  ) {\n    httpRequest.headersList.append('content-length', contentLengthHeaderValue, true)\n  }\n\n  //    9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n  //    contentLengthHeaderValue) to httpRequest’s header list.\n\n  //    10. If contentLength is non-null and httpRequest’s keepalive is true,\n  //    then:\n  if (contentLength != null && httpRequest.keepalive) {\n    // NOTE: keepalive is a noop outside of browser context.\n  }\n\n  //    11. If httpRequest’s referrer is a URL, then append\n  //    `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,\n  //     to httpRequest’s header list.\n  if (webidl.is.URL(httpRequest.referrer)) {\n    httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href), true)\n  }\n\n  //    12. Append a request `Origin` header for httpRequest.\n  appendRequestOriginHeader(httpRequest)\n\n  //    13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n  appendFetchMetadata(httpRequest)\n\n  //    14. If httpRequest’s header list does not contain `User-Agent`, then\n  //    user agents should append `User-Agent`/default `User-Agent` value to\n  //    httpRequest’s header list.\n  if (!httpRequest.headersList.contains('user-agent', true)) {\n    httpRequest.headersList.append('user-agent', defaultUserAgent, true)\n  }\n\n  //    15. If httpRequest’s cache mode is \"default\" and httpRequest’s header\n  //    list contains `If-Modified-Since`, `If-None-Match`,\n  //    `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n  //    httpRequest’s cache mode to \"no-store\".\n  if (\n    httpRequest.cache === 'default' &&\n    (httpRequest.headersList.contains('if-modified-since', true) ||\n      httpRequest.headersList.contains('if-none-match', true) ||\n      httpRequest.headersList.contains('if-unmodified-since', true) ||\n      httpRequest.headersList.contains('if-match', true) ||\n      httpRequest.headersList.contains('if-range', true))\n  ) {\n    httpRequest.cache = 'no-store'\n  }\n\n  //    16. If httpRequest’s cache mode is \"no-cache\", httpRequest’s prevent\n  //    no-cache cache-control header modification flag is unset, and\n  //    httpRequest’s header list does not contain `Cache-Control`, then append\n  //    `Cache-Control`/`max-age=0` to httpRequest’s header list.\n  if (\n    httpRequest.cache === 'no-cache' &&\n    !httpRequest.preventNoCacheCacheControlHeaderModification &&\n    !httpRequest.headersList.contains('cache-control', true)\n  ) {\n    httpRequest.headersList.append('cache-control', 'max-age=0', true)\n  }\n\n  //    17. If httpRequest’s cache mode is \"no-store\" or \"reload\", then:\n  if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n    // 1. If httpRequest’s header list does not contain `Pragma`, then append\n    // `Pragma`/`no-cache` to httpRequest’s header list.\n    if (!httpRequest.headersList.contains('pragma', true)) {\n      httpRequest.headersList.append('pragma', 'no-cache', true)\n    }\n\n    // 2. If httpRequest’s header list does not contain `Cache-Control`,\n    // then append `Cache-Control`/`no-cache` to httpRequest’s header list.\n    if (!httpRequest.headersList.contains('cache-control', true)) {\n      httpRequest.headersList.append('cache-control', 'no-cache', true)\n    }\n  }\n\n  //    18. If httpRequest’s header list contains `Range`, then append\n  //    `Accept-Encoding`/`identity` to httpRequest’s header list.\n  if (httpRequest.headersList.contains('range', true)) {\n    httpRequest.headersList.append('accept-encoding', 'identity', true)\n  }\n\n  //    19. Modify httpRequest’s header list per HTTP. Do not append a given\n  //    header if httpRequest’s header list contains that header’s name.\n  //    TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n  if (!httpRequest.headersList.contains('accept-encoding', true)) {\n    if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n      httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate', true)\n    } else {\n      httpRequest.headersList.append('accept-encoding', 'gzip, deflate', true)\n    }\n  }\n\n  httpRequest.headersList.delete('host', true)\n\n  //    21. If includeCredentials is true, then:\n  if (includeCredentials) {\n    // 1. If the user agent is not configured to block cookies for httpRequest\n    // (see section 7 of [COOKIES]), then:\n    // TODO: credentials\n\n    // 2. If httpRequest’s header list does not contain `Authorization`, then:\n    if (!httpRequest.headersList.contains('authorization', true)) {\n      // 1. Let authorizationValue be null.\n      let authorizationValue = null\n\n      // 2. If there’s an authentication entry for httpRequest and either\n      //    httpRequest’s use-URL-credentials flag is unset or httpRequest’s\n      //    current URL does not include credentials, then set\n      //    authorizationValue to authentication entry.\n      if (hasAuthenticationEntry(httpRequest) && (\n        httpRequest.useURLCredentials === undefined || !includesCredentials(requestCurrentURL(httpRequest))\n      )) {\n        // TODO\n      } else if (includesCredentials(requestCurrentURL(httpRequest)) && isAuthenticationFetch) {\n        // 3. Otherwise, if httpRequest’s current URL does include credentials\n        //    and isAuthenticationFetch is true, set authorizationValue to\n        //    httpRequest’s current URL, converted to an `Authorization` value\n        const { username, password } = requestCurrentURL(httpRequest)\n        authorizationValue = `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`\n      }\n\n      // 4. If authorizationValue is non-null, then append (`Authorization`,\n      //    authorizationValue) to httpRequest’s header list.\n      if (authorizationValue !== null) {\n        httpRequest.headersList.append('Authorization', authorizationValue, false)\n      }\n    }\n  }\n\n  //    21. If there’s a proxy-authentication entry, use it as appropriate.\n  //    TODO: proxy-authentication\n\n  //    22. Set httpCache to the result of determining the HTTP cache\n  //    partition, given httpRequest.\n  //    TODO: cache\n\n  //    23. If httpCache is null, then set httpRequest’s cache mode to\n  //    \"no-store\".\n  if (httpCache == null) {\n    httpRequest.cache = 'no-store'\n  }\n\n  //    24. If httpRequest’s cache mode is neither \"no-store\" nor \"reload\",\n  //    then:\n  if (httpRequest.cache !== 'no-store' && httpRequest.cache !== 'reload') {\n    // TODO: cache\n  }\n\n  // 9. If aborted, then return the appropriate network error for fetchParams.\n  // TODO\n\n  // 10. If response is null, then:\n  if (response == null) {\n    // 1. If httpRequest’s cache mode is \"only-if-cached\", then return a\n    // network error.\n    if (httpRequest.cache === 'only-if-cached') {\n      return makeNetworkError('only if cached')\n    }\n\n    // 2. Let forwardResponse be the result of running HTTP-network fetch\n    // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n    const forwardResponse = await httpNetworkFetch(\n      httpFetchParams,\n      includeCredentials,\n      isNewConnectionFetch\n    )\n\n    // 3. If httpRequest’s method is unsafe and forwardResponse’s status is\n    // in the range 200 to 399, inclusive, invalidate appropriate stored\n    // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n    // Caching, and set storedResponse to null. [HTTP-CACHING]\n    if (\n      !safeMethodsSet.has(httpRequest.method) &&\n      forwardResponse.status >= 200 &&\n      forwardResponse.status <= 399\n    ) {\n      // TODO: cache\n    }\n\n    // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,\n    // then:\n    if (revalidatingFlag && forwardResponse.status === 304) {\n      // TODO: cache\n    }\n\n    // 5. If response is null, then:\n    if (response == null) {\n      // 1. Set response to forwardResponse.\n      response = forwardResponse\n\n      // 2. Store httpRequest and forwardResponse in httpCache, as per the\n      // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n      // TODO: cache\n    }\n  }\n\n  // 11. Set response’s URL list to a clone of httpRequest’s URL list.\n  response.urlList = [...httpRequest.urlList]\n\n  // 12. If httpRequest’s header list contains `Range`, then set response’s\n  // range-requested flag.\n  if (httpRequest.headersList.contains('range', true)) {\n    response.rangeRequested = true\n  }\n\n  // 13. Set response’s request-includes-credentials to includeCredentials.\n  response.requestIncludesCredentials = includeCredentials\n\n  // 14. If response’s status is 401, httpRequest’s response tainting is not \"cors\",\n  //     includeCredentials is true, and request’s traversable for user prompts is\n  //     a traversable navigable:\n  //\n  //     In Node.js there is no traversable navigable to prompt the user, but we\n  //     still need to handle URL-embedded credentials so authentication retries\n  //     for WebSocket handshakes continue to work.\n  if (response.status === 401 && httpRequest.responseTainting !== 'cors' && includeCredentials && (\n    request.useURLCredentials !== undefined ||\n    isTraversableNavigable(request.traversableForUserPrompts)\n  )) {\n    // 2. If request’s body is non-null, then:\n    if (request.body != null) {\n      // 1. If request’s body’s source is null, then return a network error.\n      if (request.body.source == null) {\n        // Note: In Node.js, this code path should not be reached because\n        // isTraversableNavigable() returns false for non-navigable contexts.\n        // However, we handle it gracefully by returning the response instead of\n        // a network error, as we won't actually retry the request.\n        // This aligns with the Fetch spec discussion in whatwg/fetch#1132,\n        // which allows implementations flexibility when credentials can't be obtained.\n        return response\n      }\n\n      // 2. Set request’s body to the body of the result of safely extracting\n      //    request’s body’s source.\n      request.body = safelyExtractBody(request.body.source)[0]\n    }\n\n    // 3. If request’s use-URL-credentials flag is unset or isAuthenticationFetch is\n    //    true, then:\n    if (request.useURLCredentials === undefined || isAuthenticationFetch) {\n      // 1. If fetchParams is canceled, then return the appropriate network error\n      //    for fetchParams.\n      if (isCancelled(fetchParams)) {\n        return makeAppropriateNetworkError(fetchParams)\n      }\n\n      // 2. Let username and password be the result of prompting the end user for a\n      //    username and password, respectively, in request’s traversable for user prompts.\n      // TODO\n\n      // 3. Set the username given request’s current URL and username.\n      // requestCurrentURL(request).username = TODO\n\n      // 4. Set the password given request’s current URL and password.\n      // requestCurrentURL(request).password = TODO\n\n      // In browsers, the user will be prompted to enter a username/password before the request\n      // is re-sent. To prevent an infinite 401 loop, return the response for now.\n      // https://github.com/nodejs/undici/pull/4756\n      return response\n    }\n\n    // 4. Set response to the result of running HTTP-network-or-cache fetch given\n    //    fetchParams and true.\n    fetchParams.controller.connection.destroy()\n\n    response = await httpNetworkOrCacheFetch(fetchParams, true)\n  }\n\n  // 15. If response’s status is 407, then:\n  if (response.status === 407) {\n    // 1. If request’s window is \"no-window\", then return a network error.\n    if (request.window === 'no-window') {\n      return makeNetworkError()\n    }\n\n    // 2. ???\n\n    // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n    if (isCancelled(fetchParams)) {\n      return makeAppropriateNetworkError(fetchParams)\n    }\n\n    // 4. Prompt the end user as appropriate in request’s window and store\n    // the result as a proxy-authentication entry. [HTTP-AUTH]\n    // TODO: Invoke some kind of callback?\n\n    // 5. Set response to the result of running HTTP-network-or-cache fetch given\n    // fetchParams.\n    // TODO\n    return makeNetworkError('proxy authentication required')\n  }\n\n  // 16. If all of the following are true\n  if (\n    // response’s status is 421\n    response.status === 421 &&\n    // isNewConnectionFetch is false\n    !isNewConnectionFetch &&\n    // request’s body is null, or request’s body is non-null and request’s body’s source is non-null\n    (request.body == null || request.body.source != null)\n  ) {\n    // then:\n\n    // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n    if (isCancelled(fetchParams)) {\n      return makeAppropriateNetworkError(fetchParams)\n    }\n\n    // 2. Set response to the result of running HTTP-network-or-cache\n    // fetch given fetchParams, isAuthenticationFetch, and true.\n\n    // TODO (spec): The spec doesn't specify this but we need to cancel\n    // the active response before we can start a new one.\n    // https://github.com/whatwg/fetch/issues/1293\n    fetchParams.controller.connection.destroy()\n\n    response = await httpNetworkOrCacheFetch(\n      fetchParams,\n      isAuthenticationFetch,\n      true\n    )\n  }\n\n  // 17. If isAuthenticationFetch is true, then create an authentication entry\n  if (isAuthenticationFetch) {\n    // TODO\n  }\n\n  // 18. Return response.\n  return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n  fetchParams,\n  includeCredentials = false,\n  forceNewConnection = false\n) {\n  assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n  fetchParams.controller.connection = {\n    abort: null,\n    destroyed: false,\n    destroy (err, abort = true) {\n      if (!this.destroyed) {\n        this.destroyed = true\n        if (abort) {\n          this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n        }\n      }\n    }\n  }\n\n  // 1. Let request be fetchParams’s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. Let timingInfo be fetchParams’s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 4. Let httpCache be the result of determining the HTTP cache partition,\n  // given request.\n  // TODO: cache\n  const httpCache = null\n\n  // 5. If httpCache is null, then set request’s cache mode to \"no-store\".\n  if (httpCache == null) {\n    request.cache = 'no-store'\n  }\n\n  // 6. Let networkPartitionKey be the result of determining the network\n  // partition key given request.\n  // TODO\n\n  // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n  // \"no\".\n  const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n  // 8. Switch on request’s mode:\n  if (request.mode === 'websocket') {\n    // Let connection be the result of obtaining a WebSocket connection,\n    // given request’s current URL.\n    // TODO\n  } else {\n    // Let connection be the result of obtaining a connection, given\n    // networkPartitionKey, request’s current URL’s origin,\n    // includeCredentials, and forceNewConnection.\n    // TODO\n  }\n\n  // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. If connection is failure, then return a network error.\n\n  //    2. Set timingInfo’s final connection timing info to the result of\n  //    calling clamp and coarsen connection timing info with connection’s\n  //    timing info, timingInfo’s post-redirect start time, and fetchParams’s\n  //    cross-origin isolated capability.\n\n  //    3. If connection is not an HTTP/2 connection, request’s body is non-null,\n  //    and request’s body’s source is null, then append (`Transfer-Encoding`,\n  //    `chunked`) to request’s header list.\n\n  //    4. Set timingInfo’s final network-request start time to the coarsened\n  //    shared current time given fetchParams’s cross-origin isolated\n  //    capability.\n\n  //    5. Set response to the result of making an HTTP request over connection\n  //    using request with the following caveats:\n\n  //        - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n  //        [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n  //        - If request’s body is non-null, and request’s body’s source is null,\n  //        then the user agent may have a buffer of up to 64 kibibytes and store\n  //        a part of request’s body in that buffer. If the user agent reads from\n  //        request’s body beyond that buffer’s size and the user agent needs to\n  //        resend request, then instead return a network error.\n\n  //        - Set timingInfo’s final network-response start time to the coarsened\n  //        shared current time given fetchParams’s cross-origin isolated capability,\n  //        immediately after the user agent’s HTTP parser receives the first byte\n  //        of the response (e.g., frame header bytes for HTTP/2 or response status\n  //        line for HTTP/1.x).\n\n  //        - Wait until all the headers are transmitted.\n\n  //        - Any responses whose status is in the range 100 to 199, inclusive,\n  //        and is not 101, are to be ignored, except for the purposes of setting\n  //        timingInfo’s final network-response start time above.\n\n  //    - If request’s header list contains `Transfer-Encoding`/`chunked` and\n  //    response is transferred via HTTP/1.0 or older, then return a network\n  //    error.\n\n  //    - If the HTTP request results in a TLS client certificate dialog, then:\n\n  //        1. If request’s window is an environment settings object, make the\n  //        dialog available in request’s window.\n\n  //        2. Otherwise, return a network error.\n\n  // To transmit request’s body body, run these steps:\n  let requestBody = null\n  // 1. If body is null and fetchParams’s process request end-of-body is\n  // non-null, then queue a fetch task given fetchParams’s process request\n  // end-of-body and fetchParams’s task destination.\n  if (request.body == null && fetchParams.processRequestEndOfBody) {\n    queueMicrotask(() => fetchParams.processRequestEndOfBody())\n  } else if (request.body != null) {\n    // 2. Otherwise, if body is non-null:\n\n    //    1. Let processBodyChunk given bytes be these steps:\n    const processBodyChunk = async function * (bytes) {\n      // 1. If the ongoing fetch is terminated, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. Run this step in parallel: transmit bytes.\n      yield bytes\n\n      // 3. If fetchParams’s process request body is non-null, then run\n      // fetchParams’s process request body given bytes’s length.\n      fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n    }\n\n    // 2. Let processEndOfBody be these steps:\n    const processEndOfBody = () => {\n      // 1. If fetchParams is canceled, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. If fetchParams’s process request end-of-body is non-null,\n      // then run fetchParams’s process request end-of-body.\n      if (fetchParams.processRequestEndOfBody) {\n        fetchParams.processRequestEndOfBody()\n      }\n    }\n\n    // 3. Let processBodyError given e be these steps:\n    const processBodyError = (e) => {\n      // 1. If fetchParams is canceled, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. If e is an \"AbortError\" DOMException, then abort fetchParams’s controller.\n      if (e.name === 'AbortError') {\n        fetchParams.controller.abort()\n      } else {\n        fetchParams.controller.terminate(e)\n      }\n    }\n\n    // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,\n    // processBodyError, and fetchParams’s task destination.\n    requestBody = (async function * () {\n      try {\n        for await (const bytes of request.body.stream) {\n          yield * processBodyChunk(bytes)\n        }\n        processEndOfBody()\n      } catch (err) {\n        processBodyError(err)\n      }\n    })()\n  }\n\n  try {\n    // socket is only provided for websockets\n    const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n    if (socket) {\n      response = makeResponse({ status, statusText, headersList, socket })\n    } else {\n      const iterator = body[Symbol.asyncIterator]()\n      fetchParams.controller.next = () => iterator.next()\n\n      response = makeResponse({ status, statusText, headersList })\n    }\n  } catch (err) {\n    // 10. If aborted, then:\n    if (err.name === 'AbortError') {\n      // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n      fetchParams.controller.connection.destroy()\n\n      // 2. Return the appropriate network error for fetchParams.\n      return makeAppropriateNetworkError(fetchParams, err)\n    }\n\n    return makeNetworkError(err)\n  }\n\n  // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n  // if it is suspended.\n  const pullAlgorithm = () => {\n    return fetchParams.controller.resume()\n  }\n\n  // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s\n  // controller with reason, given reason.\n  const cancelAlgorithm = (reason) => {\n    // If the aborted fetch was already terminated, then we do not\n    // need to do anything.\n    if (!isCancelled(fetchParams)) {\n      fetchParams.controller.abort(reason)\n    }\n  }\n\n  // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n  // the user agent.\n  // TODO\n\n  // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n  // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n  // TODO\n\n  // 15. Let stream be a new ReadableStream.\n  // 16. Set up stream with byte reading support with pullAlgorithm set to pullAlgorithm,\n  //     cancelAlgorithm set to cancelAlgorithm.\n  const stream = new ReadableStream(\n    {\n      start (controller) {\n        fetchParams.controller.controller = controller\n      },\n      pull: pullAlgorithm,\n      cancel: cancelAlgorithm,\n      type: 'bytes'\n    }\n  )\n\n  // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. Set response’s body to a new body whose stream is stream.\n  response.body = { stream, source: null, length: null }\n\n  //    2. If response is not a network error and request’s cache mode is\n  //    not \"no-store\", then update response in httpCache for request.\n  //    TODO\n\n  //    3. If includeCredentials is true and the user agent is not configured\n  //    to block cookies for request (see section 7 of [COOKIES]), then run the\n  //    \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n  //    the value of each header whose name is a byte-case-insensitive match for\n  //    `Set-Cookie` in response’s header list, if any, and request’s current URL.\n  //    TODO\n\n  // 18. If aborted, then:\n  // TODO\n\n  // 19. Run these steps in parallel:\n\n  //    1. Run these steps, but abort when fetchParams is canceled:\n  if (!fetchParams.controller.resume) {\n    fetchParams.controller.on('terminated', onAborted)\n  }\n\n  fetchParams.controller.resume = async () => {\n    // 1. While true\n    while (true) {\n      // 1-3. See onData...\n\n      // 4. Set bytes to the result of handling content codings given\n      // codings and bytes.\n      let bytes\n      let isFailure\n      try {\n        const { done, value } = await fetchParams.controller.next()\n\n        if (isAborted(fetchParams)) {\n          break\n        }\n\n        bytes = done ? undefined : value\n      } catch (err) {\n        if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n          // zlib doesn't like empty streams.\n          bytes = undefined\n        } else {\n          bytes = err\n\n          // err may be propagated from the result of calling readablestream.cancel,\n          // which might not be an error. https://github.com/nodejs/undici/issues/2009\n          isFailure = true\n        }\n      }\n\n      if (bytes === undefined) {\n        // 2. Otherwise, if the bytes transmission for response’s message\n        // body is done normally and stream is readable, then close\n        // stream, finalize response for fetchParams and response, and\n        // abort these in-parallel steps.\n        readableStreamClose(fetchParams.controller.controller)\n\n        finalizeResponse(fetchParams, response)\n\n        return\n      }\n\n      // 5. Increase timingInfo’s decoded body size by bytes’s length.\n      timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n      // 6. If bytes is failure, then terminate fetchParams’s controller.\n      if (isFailure) {\n        fetchParams.controller.terminate(bytes)\n        return\n      }\n\n      // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n      // into stream.\n      const buffer = new Uint8Array(bytes)\n      if (buffer.byteLength) {\n        fetchParams.controller.controller.enqueue(buffer)\n      }\n\n      // 8. If stream is errored, then terminate the ongoing fetch.\n      if (isErrored(stream)) {\n        fetchParams.controller.terminate()\n        return\n      }\n\n      // 9. If stream doesn’t need more data ask the user agent to suspend\n      // the ongoing fetch.\n      if (fetchParams.controller.controller.desiredSize <= 0) {\n        return\n      }\n    }\n  }\n\n  //    2. If aborted, then:\n  function onAborted (reason) {\n    // 2. If fetchParams is aborted, then:\n    if (isAborted(fetchParams)) {\n      // 1. Set response’s aborted flag.\n      response.aborted = true\n\n      // 2. If stream is readable, then error stream with the result of\n      //    deserialize a serialized abort reason given fetchParams’s\n      //    controller’s serialized abort reason and an\n      //    implementation-defined realm.\n      if (isReadable(stream)) {\n        fetchParams.controller.controller.error(\n          fetchParams.controller.serializedAbortReason\n        )\n      }\n    } else {\n      // 3. Otherwise, if stream is readable, error stream with a TypeError.\n      if (isReadable(stream)) {\n        fetchParams.controller.controller.error(new TypeError('terminated', {\n          cause: isErrorLike(reason) ? reason : undefined\n        }))\n      }\n    }\n\n    // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n    // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n    fetchParams.controller.connection.destroy()\n  }\n\n  // 20. Return response.\n  return response\n\n  function dispatch ({ body }) {\n    const url = requestCurrentURL(request)\n    /** @type {import('../../..').Agent} */\n    const agent = fetchParams.controller.dispatcher\n\n    const path = url.pathname + url.search\n    const hasTrailingQuestionMark = url.search.length === 0 && url.href[url.href.length - url.hash.length - 1] === '?'\n\n    return new Promise((resolve, reject) => agent.dispatch(\n      {\n        path: hasTrailingQuestionMark ? `${path}?` : path,\n        origin: url.origin,\n        method: request.method,\n        body: agent.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n        headers: request.headersList.entries,\n        maxRedirections: 0,\n        upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n      },\n      {\n        body: null,\n        abort: null,\n\n        onConnect (abort) {\n          // TODO (fix): Do we need connection here?\n          const { connection } = fetchParams.controller\n\n          // Set timingInfo’s final connection timing info to the result of calling clamp and coarsen\n          // connection timing info with connection’s timing info, timingInfo’s post-redirect start\n          // time, and fetchParams’s cross-origin isolated capability.\n          // TODO: implement connection timing\n          timingInfo.finalConnectionTimingInfo = clampAndCoarsenConnectionTimingInfo(undefined, timingInfo.postRedirectStartTime, fetchParams.crossOriginIsolatedCapability)\n\n          if (connection.destroyed) {\n            abort(new DOMException('The operation was aborted.', 'AbortError'))\n          } else {\n            fetchParams.controller.on('terminated', abort)\n            this.abort = connection.abort = abort\n          }\n\n          // Set timingInfo’s final network-request start time to the coarsened shared current time given\n          // fetchParams’s cross-origin isolated capability.\n          timingInfo.finalNetworkRequestStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n        },\n\n        onResponseStarted () {\n          // Set timingInfo’s final network-response start time to the coarsened shared current\n          // time given fetchParams’s cross-origin isolated capability, immediately after the\n          // user agent’s HTTP parser receives the first byte of the response (e.g., frame header\n          // bytes for HTTP/2 or response status line for HTTP/1.x).\n          timingInfo.finalNetworkResponseStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n        },\n\n        onHeaders (status, rawHeaders, resume, statusText) {\n          if (status < 200) {\n            return false\n          }\n\n          const headersList = new HeadersList()\n\n          for (let i = 0; i < rawHeaders.length; i += 2) {\n            const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i])\n            const value = rawHeaders[i + 1]\n            if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {\n              for (const val of value) {\n                headersList.append(nameStr, val.toString('latin1'), true)\n              }\n            } else {\n              headersList.append(nameStr, value.toString('latin1'), true)\n            }\n          }\n          const location = headersList.get('location', true)\n\n          this.body = new Readable({ read: resume })\n\n          const willFollow = location && request.redirect === 'follow' &&\n            redirectStatusSet.has(status)\n\n          const decoders = []\n\n          // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n          if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n            // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n            const contentEncoding = headersList.get('content-encoding', true)\n            // \"All content-coding values are case-insensitive...\"\n            /** @type {string[]} */\n            const codings = contentEncoding ? contentEncoding.toLowerCase().split(',') : []\n\n            // Limit the number of content-encodings to prevent resource exhaustion.\n            // CVE fix similar to urllib3 (GHSA-gm62-xv2j-4w53) and curl (CVE-2022-32206).\n            const maxContentEncodings = 5\n            if (codings.length > maxContentEncodings) {\n              reject(new Error(`too many content-encodings in response: ${codings.length}, maximum allowed is ${maxContentEncodings}`))\n              return true\n            }\n\n            for (let i = codings.length - 1; i >= 0; --i) {\n              const coding = codings[i].trim()\n              // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n              if (coding === 'x-gzip' || coding === 'gzip') {\n                decoders.push(zlib.createGunzip({\n                  // Be less strict when decoding compressed responses, since sometimes\n                  // servers send slightly invalid responses that are still accepted\n                  // by common browsers.\n                  // Always using Z_SYNC_FLUSH is what cURL does.\n                  flush: zlib.constants.Z_SYNC_FLUSH,\n                  finishFlush: zlib.constants.Z_SYNC_FLUSH\n                }))\n              } else if (coding === 'deflate') {\n                decoders.push(createInflate({\n                  flush: zlib.constants.Z_SYNC_FLUSH,\n                  finishFlush: zlib.constants.Z_SYNC_FLUSH\n                }))\n              } else if (coding === 'br') {\n                decoders.push(zlib.createBrotliDecompress({\n                  flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n                  finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n                }))\n              } else if (coding === 'zstd' && hasZstd) {\n                decoders.push(zlib.createZstdDecompress({\n                  flush: zlib.constants.ZSTD_e_continue,\n                  finishFlush: zlib.constants.ZSTD_e_end\n                }))\n              } else {\n                decoders.length = 0\n                break\n              }\n            }\n          }\n\n          const onError = this.onError.bind(this)\n\n          resolve({\n            status,\n            statusText,\n            headersList,\n            body: decoders.length\n              ? pipeline(this.body, ...decoders, (err) => {\n                if (err) {\n                  this.onError(err)\n                }\n              }).on('error', onError)\n              : this.body.on('error', onError)\n          })\n\n          return true\n        },\n\n        onData (chunk) {\n          if (fetchParams.controller.dump) {\n            return\n          }\n\n          // 1. If one or more bytes have been transmitted from response’s\n          // message body, then:\n\n          //  1. Let bytes be the transmitted bytes.\n          const bytes = chunk\n\n          //  2. Let codings be the result of extracting header list values\n          //  given `Content-Encoding` and response’s header list.\n          //  See pullAlgorithm.\n\n          //  3. Increase timingInfo’s encoded body size by bytes’s length.\n          timingInfo.encodedBodySize += bytes.byteLength\n\n          //  4. See pullAlgorithm...\n\n          return this.body.push(bytes)\n        },\n\n        onComplete () {\n          if (this.abort) {\n            fetchParams.controller.off('terminated', this.abort)\n          }\n\n          fetchParams.controller.ended = true\n\n          this.body.push(null)\n        },\n\n        onError (error) {\n          if (this.abort) {\n            fetchParams.controller.off('terminated', this.abort)\n          }\n\n          this.body?.destroy(error)\n\n          fetchParams.controller.terminate(error)\n\n          reject(error)\n        },\n\n        onRequestUpgrade (_controller, status, headers, socket) {\n          // We need to support 200 for websocket over h2 as per RFC-8441\n          // Absence of session means H1\n          if ((socket.session != null && status !== 200) || (socket.session == null && status !== 101)) {\n            return false\n          }\n\n          const headersList = new HeadersList()\n\n          for (const [name, value] of Object.entries(headers)) {\n            if (value == null) {\n              continue\n            }\n\n            const headerName = name.toLowerCase()\n\n            if (Array.isArray(value)) {\n              for (const entry of value) {\n                headersList.append(headerName, String(entry), true)\n              }\n            } else {\n              headersList.append(headerName, String(value), true)\n            }\n          }\n\n          resolve({\n            status,\n            statusText: STATUS_CODES[status],\n            headersList,\n            socket\n          })\n\n          return true\n        },\n\n        onUpgrade (status, rawHeaders, socket) {\n          // We need to support 200 for websocket over h2 as per RFC-8441\n          // Absence of session means H1\n          if ((socket.session != null && status !== 200) || (socket.session == null && status !== 101)) {\n            return false\n          }\n\n          const headersList = new HeadersList()\n\n          for (let i = 0; i < rawHeaders.length; i += 2) {\n            const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i])\n            const value = rawHeaders[i + 1]\n            if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {\n              for (const val of value) {\n                headersList.append(nameStr, val.toString('latin1'), true)\n              }\n            } else {\n              headersList.append(nameStr, value.toString('latin1'), true)\n            }\n          }\n\n          resolve({\n            status,\n            statusText: STATUS_CODES[status],\n            headersList,\n            socket\n          })\n\n          return true\n        }\n      }\n    ))\n  }\n}\n\nmodule.exports = {\n  fetch,\n  Fetch,\n  fetching,\n  finalizeAndReportTiming\n}\n","'use strict'\n\nconst assert = require('node:assert')\nconst { URLSerializer } = require('../fetch/data-url')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n  const serializedA = URLSerializer(A, excludeFragment)\n\n  const serializedB = URLSerializer(B, excludeFragment)\n\n  return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction getFieldValues (header) {\n  assert(header !== null)\n\n  const values = []\n\n  for (let value of header.split(',')) {\n    value = value.trim()\n\n    if (isValidHeaderName(value)) {\n      values.push(value)\n    }\n  }\n\n  return values\n}\n\nmodule.exports = {\n  urlEquals,\n  getFieldValues\n}\n","'use strict'\n\nconst assert = require('node:assert')\n\nconst { kConstruct } = require('../../core/symbols')\nconst { urlEquals, getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../../core/util')\nconst { webidl } = require('../webidl')\nconst { cloneResponse, fromInnerResponse, getResponseState } = require('../fetch/response')\nconst { Request, fromInnerRequest, getRequestState } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, readAllBytes } = require('../fetch/util')\nconst { createDeferredPromise } = require('../../util/promise')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n   * @type {requestResponseList}\n   */\n  #relevantRequestResponseList\n\n  constructor () {\n    if (arguments[0] !== kConstruct) {\n      webidl.illegalConstructor()\n    }\n\n    webidl.util.markAsUncloneable(this)\n    this.#relevantRequestResponseList = arguments[1]\n  }\n\n  async match (request, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.match'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request)\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    const p = this.#internalMatchAll(request, options, 1)\n\n    if (p.length === 0) {\n      return\n    }\n\n    return p[0]\n  }\n\n  async matchAll (request = undefined, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.matchAll'\n    if (request !== undefined) request = webidl.converters.RequestInfo(request)\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    return this.#internalMatchAll(request, options)\n  }\n\n  async add (request) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.add'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request)\n\n    // 1.\n    const requests = [request]\n\n    // 2.\n    const responseArrayPromise = this.addAll(requests)\n\n    // 3.\n    return await responseArrayPromise\n  }\n\n  async addAll (requests) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.addAll'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    // 1.\n    const responsePromises = []\n\n    // 2.\n    const requestList = []\n\n    // 3.\n    for (let request of requests) {\n      if (request === undefined) {\n        throw webidl.errors.conversionFailed({\n          prefix,\n          argument: 'Argument 1',\n          types: ['undefined is not allowed']\n        })\n      }\n\n      request = webidl.converters.RequestInfo(request)\n\n      if (typeof request === 'string') {\n        continue\n      }\n\n      // 3.1\n      const r = getRequestState(request)\n\n      // 3.2\n      if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n        throw webidl.errors.exception({\n          header: prefix,\n          message: 'Expected http/s scheme when method is not GET.'\n        })\n      }\n    }\n\n    // 4.\n    /** @type {ReturnType<typeof fetching>[]} */\n    const fetchControllers = []\n\n    // 5.\n    for (const request of requests) {\n      // 5.1\n      const r = getRequestState(new Request(request))\n\n      // 5.2\n      if (!urlIsHttpHttpsScheme(r.url)) {\n        throw webidl.errors.exception({\n          header: prefix,\n          message: 'Expected http/s scheme.'\n        })\n      }\n\n      // 5.4\n      r.initiator = 'fetch'\n      r.destination = 'subresource'\n\n      // 5.5\n      requestList.push(r)\n\n      // 5.6\n      const responsePromise = createDeferredPromise()\n\n      // 5.7\n      fetchControllers.push(fetching({\n        request: r,\n        processResponse (response) {\n          // 1.\n          if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n            responsePromise.reject(webidl.errors.exception({\n              header: 'Cache.addAll',\n              message: 'Received an invalid status code or the request failed.'\n            }))\n          } else if (response.headersList.contains('vary')) { // 2.\n            // 2.1\n            const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n            // 2.2\n            for (const fieldValue of fieldValues) {\n              // 2.2.1\n              if (fieldValue === '*') {\n                responsePromise.reject(webidl.errors.exception({\n                  header: 'Cache.addAll',\n                  message: 'invalid vary field value'\n                }))\n\n                for (const controller of fetchControllers) {\n                  controller.abort()\n                }\n\n                return\n              }\n            }\n          }\n        },\n        processResponseEndOfBody (response) {\n          // 1.\n          if (response.aborted) {\n            responsePromise.reject(new DOMException('aborted', 'AbortError'))\n            return\n          }\n\n          // 2.\n          responsePromise.resolve(response)\n        }\n      }))\n\n      // 5.8\n      responsePromises.push(responsePromise.promise)\n    }\n\n    // 6.\n    const p = Promise.all(responsePromises)\n\n    // 7.\n    const responses = await p\n\n    // 7.1\n    const operations = []\n\n    // 7.2\n    let index = 0\n\n    // 7.3\n    for (const response of responses) {\n      // 7.3.1\n      /** @type {CacheBatchOperation} */\n      const operation = {\n        type: 'put', // 7.3.2\n        request: requestList[index], // 7.3.3\n        response // 7.3.4\n      }\n\n      operations.push(operation) // 7.3.5\n\n      index++ // 7.3.6\n    }\n\n    // 7.5\n    const cacheJobPromise = createDeferredPromise()\n\n    // 7.6.1\n    let errorData = null\n\n    // 7.6.2\n    try {\n      this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    // 7.6.3\n    queueMicrotask(() => {\n      // 7.6.3.1\n      if (errorData === null) {\n        cacheJobPromise.resolve(undefined)\n      } else {\n        // 7.6.3.2\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    // 7.7\n    return cacheJobPromise.promise\n  }\n\n  async put (request, response) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.put'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    request = webidl.converters.RequestInfo(request)\n    response = webidl.converters.Response(response, prefix, 'response')\n\n    // 1.\n    let innerRequest = null\n\n    // 2.\n    if (webidl.is.Request(request)) {\n      innerRequest = getRequestState(request)\n    } else { // 3.\n      innerRequest = getRequestState(new Request(request))\n    }\n\n    // 4.\n    if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Expected an http/s scheme when method is not GET'\n      })\n    }\n\n    // 5.\n    const innerResponse = getResponseState(response)\n\n    // 6.\n    if (innerResponse.status === 206) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Got 206 status'\n      })\n    }\n\n    // 7.\n    if (innerResponse.headersList.contains('vary')) {\n      // 7.1.\n      const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n      // 7.2.\n      for (const fieldValue of fieldValues) {\n        // 7.2.1\n        if (fieldValue === '*') {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: 'Got * vary field value'\n          })\n        }\n      }\n    }\n\n    // 8.\n    if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Response body is locked or disturbed'\n      })\n    }\n\n    // 9.\n    const clonedResponse = cloneResponse(innerResponse)\n\n    // 10.\n    const bodyReadPromise = createDeferredPromise()\n\n    // 11.\n    if (innerResponse.body != null) {\n      // 11.1\n      const stream = innerResponse.body.stream\n\n      // 11.2\n      const reader = stream.getReader()\n\n      // 11.3\n      readAllBytes(reader, bodyReadPromise.resolve, bodyReadPromise.reject)\n    } else {\n      bodyReadPromise.resolve(undefined)\n    }\n\n    // 12.\n    /** @type {CacheBatchOperation[]} */\n    const operations = []\n\n    // 13.\n    /** @type {CacheBatchOperation} */\n    const operation = {\n      type: 'put', // 14.\n      request: innerRequest, // 15.\n      response: clonedResponse // 16.\n    }\n\n    // 17.\n    operations.push(operation)\n\n    // 19.\n    const bytes = await bodyReadPromise.promise\n\n    if (clonedResponse.body != null) {\n      clonedResponse.body.source = bytes\n    }\n\n    // 19.1\n    const cacheJobPromise = createDeferredPromise()\n\n    // 19.2.1\n    let errorData = null\n\n    // 19.2.2\n    try {\n      this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    // 19.2.3\n    queueMicrotask(() => {\n      // 19.2.3.1\n      if (errorData === null) {\n        cacheJobPromise.resolve()\n      } else { // 19.2.3.2\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    return cacheJobPromise.promise\n  }\n\n  async delete (request, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request)\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    /**\n     * @type {Request}\n     */\n    let r = null\n\n    if (webidl.is.Request(request)) {\n      r = getRequestState(request)\n\n      if (r.method !== 'GET' && !options.ignoreMethod) {\n        return false\n      }\n    } else {\n      assert(typeof request === 'string')\n\n      r = getRequestState(new Request(request))\n    }\n\n    /** @type {CacheBatchOperation[]} */\n    const operations = []\n\n    /** @type {CacheBatchOperation} */\n    const operation = {\n      type: 'delete',\n      request: r,\n      options\n    }\n\n    operations.push(operation)\n\n    const cacheJobPromise = createDeferredPromise()\n\n    let errorData = null\n    let requestResponses\n\n    try {\n      requestResponses = this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    queueMicrotask(() => {\n      if (errorData === null) {\n        cacheJobPromise.resolve(!!requestResponses?.length)\n      } else {\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    return cacheJobPromise.promise\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n   * @param {any} request\n   * @param {import('../../../types/cache').CacheQueryOptions} options\n   * @returns {Promise<readonly Request[]>}\n   */\n  async keys (request = undefined, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.keys'\n\n    if (request !== undefined) request = webidl.converters.RequestInfo(request)\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    // 1.\n    let r = null\n\n    // 2.\n    if (request !== undefined) {\n      // 2.1\n      if (webidl.is.Request(request)) {\n        // 2.1.1\n        r = getRequestState(request)\n\n        // 2.1.2\n        if (r.method !== 'GET' && !options.ignoreMethod) {\n          return []\n        }\n      } else if (typeof request === 'string') { // 2.2\n        r = getRequestState(new Request(request))\n      }\n    }\n\n    // 4.\n    const promise = createDeferredPromise()\n\n    // 5.\n    // 5.1\n    const requests = []\n\n    // 5.2\n    if (request === undefined) {\n      // 5.2.1\n      for (const requestResponse of this.#relevantRequestResponseList) {\n        // 5.2.1.1\n        requests.push(requestResponse[0])\n      }\n    } else { // 5.3\n      // 5.3.1\n      const requestResponses = this.#queryCache(r, options)\n\n      // 5.3.2\n      for (const requestResponse of requestResponses) {\n        // 5.3.2.1\n        requests.push(requestResponse[0])\n      }\n    }\n\n    // 5.4\n    queueMicrotask(() => {\n      // 5.4.1\n      const requestList = []\n\n      // 5.4.2\n      for (const request of requests) {\n        const requestObject = fromInnerRequest(\n          request,\n          undefined,\n          new AbortController().signal,\n          'immutable'\n        )\n        // 5.4.2.1\n        requestList.push(requestObject)\n      }\n\n      // 5.4.3\n      promise.resolve(Object.freeze(requestList))\n    })\n\n    return promise.promise\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n   * @param {CacheBatchOperation[]} operations\n   * @returns {requestResponseList}\n   */\n  #batchCacheOperations (operations) {\n    // 1.\n    const cache = this.#relevantRequestResponseList\n\n    // 2.\n    const backupCache = [...cache]\n\n    // 3.\n    const addedItems = []\n\n    // 4.1\n    const resultList = []\n\n    try {\n      // 4.2\n      for (const operation of operations) {\n        // 4.2.1\n        if (operation.type !== 'delete' && operation.type !== 'put') {\n          throw webidl.errors.exception({\n            header: 'Cache.#batchCacheOperations',\n            message: 'operation type does not match \"delete\" or \"put\"'\n          })\n        }\n\n        // 4.2.2\n        if (operation.type === 'delete' && operation.response != null) {\n          throw webidl.errors.exception({\n            header: 'Cache.#batchCacheOperations',\n            message: 'delete operation should not have an associated response'\n          })\n        }\n\n        // 4.2.3\n        if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n          throw new DOMException('???', 'InvalidStateError')\n        }\n\n        // 4.2.4\n        let requestResponses\n\n        // 4.2.5\n        if (operation.type === 'delete') {\n          // 4.2.5.1\n          requestResponses = this.#queryCache(operation.request, operation.options)\n\n          // TODO: the spec is wrong, this is needed to pass WPTs\n          if (requestResponses.length === 0) {\n            return []\n          }\n\n          // 4.2.5.2\n          for (const requestResponse of requestResponses) {\n            const idx = cache.indexOf(requestResponse)\n            assert(idx !== -1)\n\n            // 4.2.5.2.1\n            cache.splice(idx, 1)\n          }\n        } else if (operation.type === 'put') { // 4.2.6\n          // 4.2.6.1\n          if (operation.response == null) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'put operation should have an associated response'\n            })\n          }\n\n          // 4.2.6.2\n          const r = operation.request\n\n          // 4.2.6.3\n          if (!urlIsHttpHttpsScheme(r.url)) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'expected http or https scheme'\n            })\n          }\n\n          // 4.2.6.4\n          if (r.method !== 'GET') {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'not get method'\n            })\n          }\n\n          // 4.2.6.5\n          if (operation.options != null) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'options must not be defined'\n            })\n          }\n\n          // 4.2.6.6\n          requestResponses = this.#queryCache(operation.request)\n\n          // 4.2.6.7\n          for (const requestResponse of requestResponses) {\n            const idx = cache.indexOf(requestResponse)\n            assert(idx !== -1)\n\n            // 4.2.6.7.1\n            cache.splice(idx, 1)\n          }\n\n          // 4.2.6.8\n          cache.push([operation.request, operation.response])\n\n          // 4.2.6.10\n          addedItems.push([operation.request, operation.response])\n        }\n\n        // 4.2.7\n        resultList.push([operation.request, operation.response])\n      }\n\n      // 4.3\n      return resultList\n    } catch (e) { // 5.\n      // 5.1\n      this.#relevantRequestResponseList.length = 0\n\n      // 5.2\n      this.#relevantRequestResponseList = backupCache\n\n      // 5.3\n      throw e\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#query-cache\n   * @param {any} requestQuery\n   * @param {import('../../../types/cache').CacheQueryOptions} options\n   * @param {requestResponseList} targetStorage\n   * @returns {requestResponseList}\n   */\n  #queryCache (requestQuery, options, targetStorage) {\n    /** @type {requestResponseList} */\n    const resultList = []\n\n    const storage = targetStorage ?? this.#relevantRequestResponseList\n\n    for (const requestResponse of storage) {\n      const [cachedRequest, cachedResponse] = requestResponse\n      if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n        resultList.push(requestResponse)\n      }\n    }\n\n    return resultList\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n   * @param {any} requestQuery\n   * @param {any} request\n   * @param {any | null} response\n   * @param {import('../../../types/cache').CacheQueryOptions | undefined} options\n   * @returns {boolean}\n   */\n  #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n    // if (options?.ignoreMethod === false && request.method === 'GET') {\n    //   return false\n    // }\n\n    const queryURL = new URL(requestQuery.url)\n\n    const cachedURL = new URL(request.url)\n\n    if (options?.ignoreSearch) {\n      cachedURL.search = ''\n\n      queryURL.search = ''\n    }\n\n    if (!urlEquals(queryURL, cachedURL, true)) {\n      return false\n    }\n\n    if (\n      response == null ||\n      options?.ignoreVary ||\n      !response.headersList.contains('vary')\n    ) {\n      return true\n    }\n\n    const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n    for (const fieldValue of fieldValues) {\n      if (fieldValue === '*') {\n        return false\n      }\n\n      const requestValue = request.headersList.get(fieldValue)\n      const queryValue = requestQuery.headersList.get(fieldValue)\n\n      // If one has the header and the other doesn't, or one has\n      // a different value than the other, return false\n      if (requestValue !== queryValue) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  #internalMatchAll (request, options, maxResponses = Infinity) {\n    // 1.\n    let r = null\n\n    // 2.\n    if (request !== undefined) {\n      if (webidl.is.Request(request)) {\n        // 2.1.1\n        r = getRequestState(request)\n\n        // 2.1.2\n        if (r.method !== 'GET' && !options.ignoreMethod) {\n          return []\n        }\n      } else if (typeof request === 'string') {\n        // 2.2.1\n        r = getRequestState(new Request(request))\n      }\n    }\n\n    // 5.\n    // 5.1\n    const responses = []\n\n    // 5.2\n    if (request === undefined) {\n      // 5.2.1\n      for (const requestResponse of this.#relevantRequestResponseList) {\n        responses.push(requestResponse[1])\n      }\n    } else { // 5.3\n      // 5.3.1\n      const requestResponses = this.#queryCache(r, options)\n\n      // 5.3.2\n      for (const requestResponse of requestResponses) {\n        responses.push(requestResponse[1])\n      }\n    }\n\n    // 5.4\n    // We don't implement CORs so we don't need to loop over the responses, yay!\n\n    // 5.5.1\n    const responseList = []\n\n    // 5.5.2\n    for (const response of responses) {\n      // 5.5.2.1\n      const responseObject = fromInnerResponse(cloneResponse(response), 'immutable')\n\n      responseList.push(responseObject)\n\n      if (responseList.length >= maxResponses) {\n        break\n      }\n    }\n\n    // 6.\n    return Object.freeze(responseList)\n  }\n}\n\nObject.defineProperties(Cache.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'Cache',\n    configurable: true\n  },\n  match: kEnumerableProperty,\n  matchAll: kEnumerableProperty,\n  add: kEnumerableProperty,\n  addAll: kEnumerableProperty,\n  put: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n  {\n    key: 'ignoreSearch',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'ignoreMethod',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'ignoreVary',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n  ...cacheQueryOptionConverters,\n  {\n    key: 'cacheName',\n    converter: webidl.converters.DOMString\n  }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(\n  webidl.is.Response,\n  'Response'\n)\n\nwebidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter(\n  webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n  Cache\n}\n","'use strict'\n\nconst { Cache } = require('./cache')\nconst { webidl } = require('../webidl')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { kConstruct } = require('../../core/symbols')\n\nclass CacheStorage {\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n   * @type {Map<string, import('./cache').requestResponseList}\n   */\n  #caches = new Map()\n\n  constructor () {\n    if (arguments[0] !== kConstruct) {\n      webidl.illegalConstructor()\n    }\n\n    webidl.util.markAsUncloneable(this)\n  }\n\n  async match (request, options = {}) {\n    webidl.brandCheck(this, CacheStorage)\n    webidl.argumentLengthCheck(arguments, 1, 'CacheStorage.match')\n\n    request = webidl.converters.RequestInfo(request)\n    options = webidl.converters.MultiCacheQueryOptions(options)\n\n    // 1.\n    if (options.cacheName != null) {\n      // 1.1.1.1\n      if (this.#caches.has(options.cacheName)) {\n        // 1.1.1.1.1\n        const cacheList = this.#caches.get(options.cacheName)\n        const cache = new Cache(kConstruct, cacheList)\n\n        return await cache.match(request, options)\n      }\n    } else { // 2.\n      // 2.2\n      for (const cacheList of this.#caches.values()) {\n        const cache = new Cache(kConstruct, cacheList)\n\n        // 2.2.1.2\n        const response = await cache.match(request, options)\n\n        if (response !== undefined) {\n          return response\n        }\n      }\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-has\n   * @param {string} cacheName\n   * @returns {Promise<boolean>}\n   */\n  async has (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.has'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    // 2.1.1\n    // 2.2\n    return this.#caches.has(cacheName)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n   * @param {string} cacheName\n   * @returns {Promise<Cache>}\n   */\n  async open (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.open'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    // 2.1\n    if (this.#caches.has(cacheName)) {\n      // await caches.open('v1') !== await caches.open('v1')\n\n      // 2.1.1\n      const cache = this.#caches.get(cacheName)\n\n      // 2.1.1.1\n      return new Cache(kConstruct, cache)\n    }\n\n    // 2.2\n    const cache = []\n\n    // 2.3\n    this.#caches.set(cacheName, cache)\n\n    // 2.4\n    return new Cache(kConstruct, cache)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n   * @param {string} cacheName\n   * @returns {Promise<boolean>}\n   */\n  async delete (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    return this.#caches.delete(cacheName)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n   * @returns {Promise<string[]>}\n   */\n  async keys () {\n    webidl.brandCheck(this, CacheStorage)\n\n    // 2.1\n    const keys = this.#caches.keys()\n\n    // 2.2\n    return [...keys]\n  }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'CacheStorage',\n    configurable: true\n  },\n  match: kEnumerableProperty,\n  has: kEnumerableProperty,\n  open: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  keys: kEnumerableProperty\n})\n\nmodule.exports = {\n  CacheStorage\n}\n","'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n  maxAttributeValueSize,\n  maxNameValuePairSize\n}\n","'use strict'\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction isCTLExcludingHtab (value) {\n  for (let i = 0; i < value.length; ++i) {\n    const code = value.charCodeAt(i)\n\n    if (\n      (code >= 0x00 && code <= 0x08) ||\n      (code >= 0x0A && code <= 0x1F) ||\n      code === 0x7F\n    ) {\n      return true\n    }\n  }\n  return false\n}\n\n/**\n CHAR           = <any US-ASCII character (octets 0 - 127)>\n token          = 1*<any CHAR except CTLs or separators>\n separators     = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n                | \",\" | \";\" | \":\" | \"\\\" | <\">\n                | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n                | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n  for (let i = 0; i < name.length; ++i) {\n    const code = name.charCodeAt(i)\n\n    if (\n      code < 0x21 || // exclude CTLs (0-31), SP and HT\n      code > 0x7E || // exclude non-ascii and DEL\n      code === 0x22 || // \"\n      code === 0x28 || // (\n      code === 0x29 || // )\n      code === 0x3C || // <\n      code === 0x3E || // >\n      code === 0x40 || // @\n      code === 0x2C || // ,\n      code === 0x3B || // ;\n      code === 0x3A || // :\n      code === 0x5C || // \\\n      code === 0x2F || // /\n      code === 0x5B || // [\n      code === 0x5D || // ]\n      code === 0x3F || // ?\n      code === 0x3D || // =\n      code === 0x7B || // {\n      code === 0x7D // }\n    ) {\n      throw new Error('Invalid cookie name')\n    }\n  }\n}\n\n/**\n cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n                       ; US-ASCII characters excluding CTLs,\n                       ; whitespace DQUOTE, comma, semicolon,\n                       ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n  let len = value.length\n  let i = 0\n\n  // if the value is wrapped in DQUOTE\n  if (value[0] === '\"') {\n    if (len === 1 || value[len - 1] !== '\"') {\n      throw new Error('Invalid cookie value')\n    }\n    --len\n    ++i\n  }\n\n  while (i < len) {\n    const code = value.charCodeAt(i++)\n\n    if (\n      code < 0x21 || // exclude CTLs (0-31)\n      code > 0x7E || // non-ascii and DEL (127)\n      code === 0x22 || // \"\n      code === 0x2C || // ,\n      code === 0x3B || // ;\n      code === 0x5C // \\\n    ) {\n      throw new Error('Invalid cookie value')\n    }\n  }\n}\n\n/**\n * path-value        = <any CHAR except CTLs or \";\">\n * @param {string} path\n */\nfunction validateCookiePath (path) {\n  for (let i = 0; i < path.length; ++i) {\n    const code = path.charCodeAt(i)\n\n    if (\n      code < 0x20 || // exclude CTLs (0-31)\n      code === 0x7F || // DEL\n      code === 0x3B // ;\n    ) {\n      throw new Error('Invalid cookie path')\n    }\n  }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n  if (\n    domain.startsWith('-') ||\n    domain.endsWith('.') ||\n    domain.endsWith('-')\n  ) {\n    throw new Error('Invalid cookie domain')\n  }\n}\n\nconst IMFDays = [\n  'Sun', 'Mon', 'Tue', 'Wed',\n  'Thu', 'Fri', 'Sat'\n]\n\nconst IMFMonths = [\n  'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n  'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n]\n\nconst IMFPaddedNumbers = Array(61).fill(0).map((_, i) => i.toString().padStart(2, '0'))\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n  IMF-fixdate  = day-name \",\" SP date1 SP time-of-day SP GMT\n  ; fixed length/zone/capitalization subset of the format\n  ; see Section 3.3 of [RFC5322]\n\n  day-name     = %x4D.6F.6E ; \"Mon\", case-sensitive\n              / %x54.75.65 ; \"Tue\", case-sensitive\n              / %x57.65.64 ; \"Wed\", case-sensitive\n              / %x54.68.75 ; \"Thu\", case-sensitive\n              / %x46.72.69 ; \"Fri\", case-sensitive\n              / %x53.61.74 ; \"Sat\", case-sensitive\n              / %x53.75.6E ; \"Sun\", case-sensitive\n  date1        = day SP month SP year\n                  ; e.g., 02 Jun 1982\n\n  day          = 2DIGIT\n  month        = %x4A.61.6E ; \"Jan\", case-sensitive\n              / %x46.65.62 ; \"Feb\", case-sensitive\n              / %x4D.61.72 ; \"Mar\", case-sensitive\n              / %x41.70.72 ; \"Apr\", case-sensitive\n              / %x4D.61.79 ; \"May\", case-sensitive\n              / %x4A.75.6E ; \"Jun\", case-sensitive\n              / %x4A.75.6C ; \"Jul\", case-sensitive\n              / %x41.75.67 ; \"Aug\", case-sensitive\n              / %x53.65.70 ; \"Sep\", case-sensitive\n              / %x4F.63.74 ; \"Oct\", case-sensitive\n              / %x4E.6F.76 ; \"Nov\", case-sensitive\n              / %x44.65.63 ; \"Dec\", case-sensitive\n  year         = 4DIGIT\n\n  GMT          = %x47.4D.54 ; \"GMT\", case-sensitive\n\n  time-of-day  = hour \":\" minute \":\" second\n              ; 00:00:00 - 23:59:60 (leap second)\n\n  hour         = 2DIGIT\n  minute       = 2DIGIT\n  second       = 2DIGIT\n */\nfunction toIMFDate (date) {\n  if (typeof date === 'number') {\n    date = new Date(date)\n  }\n\n  return `${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT`\n}\n\n/**\n max-age-av        = \"Max-Age=\" non-zero-digit *DIGIT\n                       ; In practice, both expires-av and max-age-av\n                       ; are limited to dates representable by the\n                       ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n  if (maxAge < 0) {\n    throw new Error('Invalid cookie max-age')\n  }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n  if (cookie.name.length === 0) {\n    return null\n  }\n\n  validateCookieName(cookie.name)\n  validateCookieValue(cookie.value)\n\n  const out = [`${cookie.name}=${cookie.value}`]\n\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n  if (cookie.name.startsWith('__Secure-')) {\n    cookie.secure = true\n  }\n\n  if (cookie.name.startsWith('__Host-')) {\n    cookie.secure = true\n    cookie.domain = null\n    cookie.path = '/'\n  }\n\n  if (cookie.secure) {\n    out.push('Secure')\n  }\n\n  if (cookie.httpOnly) {\n    out.push('HttpOnly')\n  }\n\n  if (typeof cookie.maxAge === 'number') {\n    validateCookieMaxAge(cookie.maxAge)\n    out.push(`Max-Age=${cookie.maxAge}`)\n  }\n\n  if (cookie.domain) {\n    validateCookieDomain(cookie.domain)\n    out.push(`Domain=${cookie.domain}`)\n  }\n\n  if (cookie.path) {\n    validateCookiePath(cookie.path)\n    out.push(`Path=${cookie.path}`)\n  }\n\n  if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n    out.push(`Expires=${toIMFDate(cookie.expires)}`)\n  }\n\n  if (cookie.sameSite) {\n    out.push(`SameSite=${cookie.sameSite}`)\n  }\n\n  for (const part of cookie.unparsed) {\n    if (!part.includes('=')) {\n      throw new Error('Invalid unparsed')\n    }\n\n    const [key, ...value] = part.split('=')\n\n    out.push(`${key.trim()}=${value.join('=')}`)\n  }\n\n  return out.join('; ')\n}\n\nmodule.exports = {\n  isCTLExcludingHtab,\n  validateCookieName,\n  validateCookiePath,\n  validateCookieValue,\n  toIMFDate,\n  stringify\n}\n","'use strict'\n\nconst { collectASequenceOfCodePointsFast } = require('../infra')\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst assert = require('node:assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns {import('./index').Cookie|null} if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n  // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n  //    character (CTL characters excluding HTAB): Abort these steps and\n  //    ignore the set-cookie-string entirely.\n  if (isCTLExcludingHtab(header)) {\n    return null\n  }\n\n  let nameValuePair = ''\n  let unparsedAttributes = ''\n  let name = ''\n  let value = ''\n\n  // 2. If the set-cookie-string contains a %x3B (\";\") character:\n  if (header.includes(';')) {\n    // 1. The name-value-pair string consists of the characters up to,\n    //    but not including, the first %x3B (\";\"), and the unparsed-\n    //    attributes consist of the remainder of the set-cookie-string\n    //    (including the %x3B (\";\") in question).\n    const position = { position: 0 }\n\n    nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n    unparsedAttributes = header.slice(position.position)\n  } else {\n    // Otherwise:\n\n    // 1. The name-value-pair string consists of all the characters\n    //    contained in the set-cookie-string, and the unparsed-\n    //    attributes is the empty string.\n    nameValuePair = header\n  }\n\n  // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n  //    the name string is empty, and the value string is the value of\n  //    name-value-pair.\n  if (!nameValuePair.includes('=')) {\n    value = nameValuePair\n  } else {\n    //    Otherwise, the name string consists of the characters up to, but\n    //    not including, the first %x3D (\"=\") character, and the (possibly\n    //    empty) value string consists of the characters after the first\n    //    %x3D (\"=\") character.\n    const position = { position: 0 }\n    name = collectASequenceOfCodePointsFast(\n      '=',\n      nameValuePair,\n      position\n    )\n    value = nameValuePair.slice(position.position + 1)\n  }\n\n  // 4. Remove any leading or trailing WSP characters from the name\n  //    string and the value string.\n  name = name.trim()\n  value = value.trim()\n\n  // 5. If the sum of the lengths of the name string and the value string\n  //    is more than 4096 octets, abort these steps and ignore the set-\n  //    cookie-string entirely.\n  if (name.length + value.length > maxNameValuePairSize) {\n    return null\n  }\n\n  // 6. The cookie-name is the name string, and the cookie-value is the\n  //    value string.\n  // https://datatracker.ietf.org/doc/html/rfc6265\n  // To maximize compatibility with user agents, servers that wish to\n  // store arbitrary data in a cookie-value SHOULD encode that data, for\n  // example, using Base64 [RFC4648].\n  return {\n    name, value, ...parseUnparsedAttributes(unparsedAttributes)\n  }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {Object.<string, unknown>} [cookieAttributeList={}]\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n  // 1. If the unparsed-attributes string is empty, skip the rest of\n  //    these steps.\n  if (unparsedAttributes.length === 0) {\n    return cookieAttributeList\n  }\n\n  // 2. Discard the first character of the unparsed-attributes (which\n  //    will be a %x3B (\";\") character).\n  assert(unparsedAttributes[0] === ';')\n  unparsedAttributes = unparsedAttributes.slice(1)\n\n  let cookieAv = ''\n\n  // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n  //    character:\n  if (unparsedAttributes.includes(';')) {\n    // 1. Consume the characters of the unparsed-attributes up to, but\n    //    not including, the first %x3B (\";\") character.\n    cookieAv = collectASequenceOfCodePointsFast(\n      ';',\n      unparsedAttributes,\n      { position: 0 }\n    )\n    unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n  } else {\n    // Otherwise:\n\n    // 1. Consume the remainder of the unparsed-attributes.\n    cookieAv = unparsedAttributes\n    unparsedAttributes = ''\n  }\n\n  // Let the cookie-av string be the characters consumed in this step.\n\n  let attributeName = ''\n  let attributeValue = ''\n\n  // 4. If the cookie-av string contains a %x3D (\"=\") character:\n  if (cookieAv.includes('=')) {\n    // 1. The (possibly empty) attribute-name string consists of the\n    //    characters up to, but not including, the first %x3D (\"=\")\n    //    character, and the (possibly empty) attribute-value string\n    //    consists of the characters after the first %x3D (\"=\")\n    //    character.\n    const position = { position: 0 }\n\n    attributeName = collectASequenceOfCodePointsFast(\n      '=',\n      cookieAv,\n      position\n    )\n    attributeValue = cookieAv.slice(position.position + 1)\n  } else {\n    // Otherwise:\n\n    // 1. The attribute-name string consists of the entire cookie-av\n    //    string, and the attribute-value string is empty.\n    attributeName = cookieAv\n  }\n\n  // 5. Remove any leading or trailing WSP characters from the attribute-\n  //    name string and the attribute-value string.\n  attributeName = attributeName.trim()\n  attributeValue = attributeValue.trim()\n\n  // 6. If the attribute-value is longer than 1024 octets, ignore the\n  //    cookie-av string and return to Step 1 of this algorithm.\n  if (attributeValue.length > maxAttributeValueSize) {\n    return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n  }\n\n  // 7. Process the attribute-name and attribute-value according to the\n  //    requirements in the following subsections.  (Notice that\n  //    attributes with unrecognized attribute-names are ignored.)\n  const attributeNameLowercase = attributeName.toLowerCase()\n\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n  // If the attribute-name case-insensitively matches the string\n  // \"Expires\", the user agent MUST process the cookie-av as follows.\n  if (attributeNameLowercase === 'expires') {\n    // 1. Let the expiry-time be the result of parsing the attribute-value\n    //    as cookie-date (see Section 5.1.1).\n    const expiryTime = new Date(attributeValue)\n\n    // 2. If the attribute-value failed to parse as a cookie date, ignore\n    //    the cookie-av.\n\n    cookieAttributeList.expires = expiryTime\n  } else if (attributeNameLowercase === 'max-age') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n    // If the attribute-name case-insensitively matches the string \"Max-\n    // Age\", the user agent MUST process the cookie-av as follows.\n\n    // 1. If the first character of the attribute-value is not a DIGIT or a\n    //    \"-\" character, ignore the cookie-av.\n    const charCode = attributeValue.charCodeAt(0)\n\n    if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n    }\n\n    // 2. If the remainder of attribute-value contains a non-DIGIT\n    //    character, ignore the cookie-av.\n    if (!/^\\d+$/.test(attributeValue)) {\n      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n    }\n\n    // 3. Let delta-seconds be the attribute-value converted to an integer.\n    const deltaSeconds = Number(attributeValue)\n\n    // 4. Let cookie-age-limit be the maximum age of the cookie (which\n    //    SHOULD be 400 days or less, see Section 4.1.2.2).\n\n    // 5. Set delta-seconds to the smaller of its present value and cookie-\n    //    age-limit.\n    // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n    // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n    //    time be the earliest representable date and time.  Otherwise, let\n    //    the expiry-time be the current date and time plus delta-seconds\n    //    seconds.\n    // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n    // 7. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Max-Age and an attribute-value of expiry-time.\n    cookieAttributeList.maxAge = deltaSeconds\n  } else if (attributeNameLowercase === 'domain') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n    // If the attribute-name case-insensitively matches the string \"Domain\",\n    // the user agent MUST process the cookie-av as follows.\n\n    // 1. Let cookie-domain be the attribute-value.\n    let cookieDomain = attributeValue\n\n    // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n    //    cookie-domain without its leading %x2E (\".\").\n    if (cookieDomain[0] === '.') {\n      cookieDomain = cookieDomain.slice(1)\n    }\n\n    // 3. Convert the cookie-domain to lower case.\n    cookieDomain = cookieDomain.toLowerCase()\n\n    // 4. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Domain and an attribute-value of cookie-domain.\n    cookieAttributeList.domain = cookieDomain\n  } else if (attributeNameLowercase === 'path') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n    // If the attribute-name case-insensitively matches the string \"Path\",\n    // the user agent MUST process the cookie-av as follows.\n\n    // 1. If the attribute-value is empty or if the first character of the\n    //    attribute-value is not %x2F (\"/\"):\n    let cookiePath = ''\n    if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n      // 1. Let cookie-path be the default-path.\n      cookiePath = '/'\n    } else {\n      // Otherwise:\n\n      // 1. Let cookie-path be the attribute-value.\n      cookiePath = attributeValue\n    }\n\n    // 2. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Path and an attribute-value of cookie-path.\n    cookieAttributeList.path = cookiePath\n  } else if (attributeNameLowercase === 'secure') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n    // If the attribute-name case-insensitively matches the string \"Secure\",\n    // the user agent MUST append an attribute to the cookie-attribute-list\n    // with an attribute-name of Secure and an empty attribute-value.\n\n    cookieAttributeList.secure = true\n  } else if (attributeNameLowercase === 'httponly') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n    // If the attribute-name case-insensitively matches the string\n    // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n    // attribute-list with an attribute-name of HttpOnly and an empty\n    // attribute-value.\n\n    cookieAttributeList.httpOnly = true\n  } else if (attributeNameLowercase === 'samesite') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n    // If the attribute-name case-insensitively matches the string\n    // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n    const attributeValueLowercase = attributeValue.toLowerCase()\n\n    // 1. If cookie-av's attribute-value is a case-insensitive match for\n    //    \"None\", append an attribute to the cookie-attribute-list with an\n    //    attribute-name of \"SameSite\" and an attribute-value of \"None\".\n    if (attributeValueLowercase === 'none') {\n      cookieAttributeList.sameSite = 'None'\n    } else if (attributeValueLowercase === 'strict') {\n      // 2. If cookie-av's attribute-value is a case-insensitive match for\n      //    \"Strict\", append an attribute to the cookie-attribute-list with\n      //    an attribute-name of \"SameSite\" and an attribute-value of\n      //    \"Strict\".\n      cookieAttributeList.sameSite = 'Strict'\n    } else if (attributeValueLowercase === 'lax') {\n      // 3. If cookie-av's attribute-value is a case-insensitive match for\n      //    \"Lax\", append an attribute to the cookie-attribute-list with an\n      //    attribute-name of \"SameSite\" and an attribute-value of \"Lax\".\n      cookieAttributeList.sameSite = 'Lax'\n    }\n  } else {\n    cookieAttributeList.unparsed ??= []\n\n    cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n  }\n\n  // 8. Return to Step 1 of this algorithm.\n  return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n  parseSetCookie,\n  parseUnparsedAttributes\n}\n","'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify } = require('./util')\nconst { webidl } = require('../webidl')\nconst { Headers } = require('../fetch/headers')\n\nconst brandChecks = webidl.brandCheckMultiple([Headers, globalThis.Headers].filter(Boolean))\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number} [expires]\n * @property {number} [maxAge]\n * @property {string} [domain]\n * @property {string} [path]\n * @property {boolean} [secure]\n * @property {boolean} [httpOnly]\n * @property {'Strict'|'Lax'|'None'} [sameSite]\n * @property {string[]} [unparsed]\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record<string, string>}\n */\nfunction getCookies (headers) {\n  webidl.argumentLengthCheck(arguments, 1, 'getCookies')\n\n  brandChecks(headers)\n\n  const cookie = headers.get('cookie')\n\n  /** @type {Record<string, string>} */\n  const out = {}\n\n  if (!cookie) {\n    return out\n  }\n\n  for (const piece of cookie.split(';')) {\n    const [name, ...value] = piece.split('=')\n\n    out[name.trim()] = value.join('=')\n  }\n\n  return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n  brandChecks(headers)\n\n  const prefix = 'deleteCookie'\n  webidl.argumentLengthCheck(arguments, 2, prefix)\n\n  name = webidl.converters.DOMString(name, prefix, 'name')\n  attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n  // Matches behavior of\n  // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n  setCookie(headers, {\n    name,\n    value: '',\n    expires: new Date(0),\n    ...attributes\n  })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n  webidl.argumentLengthCheck(arguments, 1, 'getSetCookies')\n\n  brandChecks(headers)\n\n  const cookies = headers.getSetCookie()\n\n  if (!cookies) {\n    return []\n  }\n\n  return cookies.map((pair) => parseSetCookie(pair))\n}\n\n/**\n * Parses a cookie string\n * @param {string} cookie\n */\nfunction parseCookie (cookie) {\n  cookie = webidl.converters.DOMString(cookie)\n\n  return parseSetCookie(cookie)\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n  webidl.argumentLengthCheck(arguments, 2, 'setCookie')\n\n  brandChecks(headers)\n\n  cookie = webidl.converters.Cookie(cookie)\n\n  const str = stringify(cookie)\n\n  if (str) {\n    headers.append('set-cookie', str, true)\n  }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'path',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'domain',\n    defaultValue: () => null\n  }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n  {\n    converter: webidl.converters.DOMString,\n    key: 'name'\n  },\n  {\n    converter: webidl.converters.DOMString,\n    key: 'value'\n  },\n  {\n    converter: webidl.nullableConverter((value) => {\n      if (typeof value === 'number') {\n        return webidl.converters['unsigned long long'](value)\n      }\n\n      return new Date(value)\n    }),\n    key: 'expires',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters['long long']),\n    key: 'maxAge',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'domain',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'path',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.boolean),\n    key: 'secure',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.boolean),\n    key: 'httpOnly',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.converters.USVString,\n    key: 'sameSite',\n    allowedValues: ['Strict', 'Lax', 'None']\n  },\n  {\n    converter: webidl.sequenceConverter(webidl.converters.DOMString),\n    key: 'unparsed',\n    defaultValue: () => []\n  }\n])\n\nmodule.exports = {\n  getCookies,\n  deleteCookie,\n  getSetCookies,\n  setCookie,\n  parseCookie\n}\n","'use strict'\n\nconst { webidl } = require('../webidl')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { kConstruct } = require('../../core/symbols')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict = {}) {\n    if (type === kConstruct) {\n      super(arguments[1], arguments[2])\n      webidl.util.markAsUncloneable(this)\n      return\n    }\n\n    const prefix = 'MessageEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.MessageEventInit(eventInitDict, prefix, 'eventInitDict')\n\n    super(type, eventInitDict)\n\n    this.#eventInit = eventInitDict\n    webidl.util.markAsUncloneable(this)\n  }\n\n  get data () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.data\n  }\n\n  get origin () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.origin\n  }\n\n  get lastEventId () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.lastEventId\n  }\n\n  get source () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.source\n  }\n\n  get ports () {\n    webidl.brandCheck(this, MessageEvent)\n\n    if (!Object.isFrozen(this.#eventInit.ports)) {\n      Object.freeze(this.#eventInit.ports)\n    }\n\n    return this.#eventInit.ports\n  }\n\n  initMessageEvent (\n    type,\n    bubbles = false,\n    cancelable = false,\n    data = null,\n    origin = '',\n    lastEventId = '',\n    source = null,\n    ports = []\n  ) {\n    webidl.brandCheck(this, MessageEvent)\n\n    webidl.argumentLengthCheck(arguments, 1, 'MessageEvent.initMessageEvent')\n\n    return new MessageEvent(type, {\n      bubbles, cancelable, data, origin, lastEventId, source, ports\n    })\n  }\n\n  static createFastMessageEvent (type, init) {\n    const messageEvent = new MessageEvent(kConstruct, type, init)\n    messageEvent.#eventInit = init\n    messageEvent.#eventInit.data ??= null\n    messageEvent.#eventInit.origin ??= ''\n    messageEvent.#eventInit.lastEventId ??= ''\n    messageEvent.#eventInit.source ??= null\n    messageEvent.#eventInit.ports ??= []\n    return messageEvent\n  }\n}\n\nconst { createFastMessageEvent } = MessageEvent\ndelete MessageEvent.createFastMessageEvent\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict = {}) {\n    const prefix = 'CloseEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n    super(type, eventInitDict)\n\n    this.#eventInit = eventInitDict\n    webidl.util.markAsUncloneable(this)\n  }\n\n  get wasClean () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.wasClean\n  }\n\n  get code () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.code\n  }\n\n  get reason () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.reason\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict) {\n    const prefix = 'ErrorEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    super(type, eventInitDict)\n    webidl.util.markAsUncloneable(this)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n    this.#eventInit = eventInitDict\n  }\n\n  get message () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.message\n  }\n\n  get filename () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.filename\n  }\n\n  get lineno () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.lineno\n  }\n\n  get colno () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.colno\n  }\n\n  get error () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.error\n  }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'MessageEvent',\n    configurable: true\n  },\n  data: kEnumerableProperty,\n  origin: kEnumerableProperty,\n  lastEventId: kEnumerableProperty,\n  source: kEnumerableProperty,\n  ports: kEnumerableProperty,\n  initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'CloseEvent',\n    configurable: true\n  },\n  reason: kEnumerableProperty,\n  code: kEnumerableProperty,\n  wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'ErrorEvent',\n    configurable: true\n  },\n  message: kEnumerableProperty,\n  filename: kEnumerableProperty,\n  lineno: kEnumerableProperty,\n  colno: kEnumerableProperty,\n  error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(\n  webidl.is.MessagePort,\n  'MessagePort'\n)\n\nwebidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter(\n  webidl.converters.MessagePort\n)\n\nconst eventInit = [\n  {\n    key: 'bubbles',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'cancelable',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'composed',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'data',\n    converter: webidl.converters.any,\n    defaultValue: () => null\n  },\n  {\n    key: 'origin',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'lastEventId',\n    converter: webidl.converters.DOMString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'source',\n    // Node doesn't implement WindowProxy or ServiceWorker, so the only\n    // valid value for source is a MessagePort.\n    converter: webidl.nullableConverter(webidl.converters.MessagePort),\n    defaultValue: () => null\n  },\n  {\n    key: 'ports',\n    converter: webidl.converters['sequence<MessagePort>'],\n    defaultValue: () => []\n  }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'wasClean',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'code',\n    converter: webidl.converters['unsigned short'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'reason',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'message',\n    converter: webidl.converters.DOMString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'filename',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'lineno',\n    converter: webidl.converters['unsigned long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'colno',\n    converter: webidl.converters['unsigned long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'error',\n    converter: webidl.converters.any\n  }\n])\n\nmodule.exports = {\n  MessageEvent,\n  CloseEvent,\n  ErrorEvent,\n  createFastMessageEvent\n}\n","'use strict'\n\n/**\n * This is a Globally Unique Identifier unique used to validate that the\n * endpoint accepts websocket connections.\n * @see https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\n * @type {'258EAFA5-E914-47DA-95CA-C5AB0DC85B11'}\n */\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/**\n * @type {PropertyDescriptor}\n */\nconst staticPropertyDescriptors = {\n  enumerable: true,\n  writable: false,\n  configurable: false\n}\n\n/**\n * The states of the WebSocket connection.\n *\n * @readonly\n * @enum\n * @property {0} CONNECTING\n * @property {1} OPEN\n * @property {2} CLOSING\n * @property {3} CLOSED\n */\nconst states = {\n  CONNECTING: 0,\n  OPEN: 1,\n  CLOSING: 2,\n  CLOSED: 3\n}\n\n/**\n * @readonly\n * @enum\n * @property {0} NOT_SENT\n * @property {1} PROCESSING\n * @property {2} SENT\n */\nconst sentCloseFrameState = {\n  SENT: 1,\n  RECEIVED: 2\n}\n\n/**\n * The WebSocket opcodes.\n *\n * @readonly\n * @enum\n * @property {0x0} CONTINUATION\n * @property {0x1} TEXT\n * @property {0x2} BINARY\n * @property {0x8} CLOSE\n * @property {0x9} PING\n * @property {0xA} PONG\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n */\nconst opcodes = {\n  CONTINUATION: 0x0,\n  TEXT: 0x1,\n  BINARY: 0x2,\n  CLOSE: 0x8,\n  PING: 0x9,\n  PONG: 0xA\n}\n\n/**\n * The maximum value for an unsigned 16-bit integer.\n *\n * @type {65535} 2 ** 16 - 1\n */\nconst maxUnsigned16Bit = 65535\n\n/**\n * The states of the parser.\n *\n * @readonly\n * @enum\n * @property {0} INFO\n * @property {2} PAYLOADLENGTH_16\n * @property {3} PAYLOADLENGTH_64\n * @property {4} READ_DATA\n */\nconst parserStates = {\n  INFO: 0,\n  PAYLOADLENGTH_16: 2,\n  PAYLOADLENGTH_64: 3,\n  READ_DATA: 4\n}\n\n/**\n * An empty buffer.\n *\n * @type {Buffer}\n */\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\n/**\n * @readonly\n * @property {1} text\n * @property {2} typedArray\n * @property {3} arrayBuffer\n * @property {4} blob\n */\nconst sendHints = {\n  text: 1,\n  typedArray: 2,\n  arrayBuffer: 3,\n  blob: 4\n}\n\nmodule.exports = {\n  uid,\n  sentCloseFrameState,\n  staticPropertyDescriptors,\n  states,\n  opcodes,\n  maxUnsigned16Bit,\n  parserStates,\n  emptyBuffer,\n  sendHints\n}\n","'use strict'\n\nconst { states, opcodes } = require('./constants')\nconst { isUtf8 } = require('node:buffer')\nconst { removeHTTPWhitespace } = require('../fetch/data-url')\nconst { collectASequenceOfCodePointsFast } = require('../infra')\n\n/**\n * @param {number} readyState\n * @returns {boolean}\n */\nfunction isConnecting (readyState) {\n  // If the WebSocket connection is not yet established, and the connection\n  // is not yet closed, then the WebSocket connection is in the CONNECTING state.\n  return readyState === states.CONNECTING\n}\n\n/**\n * @param {number} readyState\n * @returns {boolean}\n */\nfunction isEstablished (readyState) {\n  // If the server's response is validated as provided for above, it is\n  // said that _The WebSocket Connection is Established_ and that the\n  // WebSocket Connection is in the OPEN state.\n  return readyState === states.OPEN\n}\n\n/**\n * @param {number} readyState\n * @returns {boolean}\n */\nfunction isClosing (readyState) {\n  // Upon either sending or receiving a Close control frame, it is said\n  // that _The WebSocket Closing Handshake is Started_ and that the\n  // WebSocket connection is in the CLOSING state.\n  return readyState === states.CLOSING\n}\n\n/**\n * @param {number} readyState\n * @returns {boolean}\n */\nfunction isClosed (readyState) {\n  return readyState === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {(...args: ConstructorParameters<typeof Event>) => Event} eventFactory\n * @param {EventInit | undefined} eventInitDict\n * @returns {void}\n */\nfunction fireEvent (e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) {\n  // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n  // 2. Let event be the result of creating an event given eventConstructor,\n  //    in the relevant realm of target.\n  // 3. Initialize event’s type attribute to e.\n  const event = eventFactory(e, eventInitDict)\n\n  // 4. Initialize any other IDL attributes of event as described in the\n  //    invocation of this algorithm.\n\n  // 5. Return the result of dispatching event at target, with legacy target\n  //    override flag set if set.\n  target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').Handler} handler\n * @param {number} type Opcode\n * @param {Buffer} data application data\n * @returns {void}\n */\nfunction websocketMessageReceived (handler, type, data) {\n  handler.onMessage(type, data)\n}\n\n/**\n * @param {Buffer} buffer\n * @returns {ArrayBuffer}\n */\nfunction toArrayBuffer (buffer) {\n  if (buffer.byteLength === buffer.buffer.byteLength) {\n    return buffer.buffer\n  }\n  return new Uint8Array(buffer).buffer\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n * @returns {boolean}\n */\nfunction isValidSubprotocol (protocol) {\n  // If present, this value indicates one\n  // or more comma-separated subprotocol the client wishes to speak,\n  // ordered by preference.  The elements that comprise this value\n  // MUST be non-empty strings with characters in the range U+0021 to\n  // U+007E not including separator characters as defined in\n  // [RFC2616] and MUST all be unique strings.\n  if (protocol.length === 0) {\n    return false\n  }\n\n  for (let i = 0; i < protocol.length; ++i) {\n    const code = protocol.charCodeAt(i)\n\n    if (\n      code < 0x21 || // CTL, contains SP (0x20) and HT (0x09)\n      code > 0x7E ||\n      code === 0x22 || // \"\n      code === 0x28 || // (\n      code === 0x29 || // )\n      code === 0x2C || // ,\n      code === 0x2F || // /\n      code === 0x3A || // :\n      code === 0x3B || // ;\n      code === 0x3C || // <\n      code === 0x3D || // =\n      code === 0x3E || // >\n      code === 0x3F || // ?\n      code === 0x40 || // @\n      code === 0x5B || // [\n      code === 0x5C || // \\\n      code === 0x5D || // ]\n      code === 0x7B || // {\n      code === 0x7D // }\n    ) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n * @returns {boolean}\n */\nfunction isValidStatusCode (code) {\n  if (code >= 1000 && code < 1015) {\n    return (\n      code !== 1004 && // reserved\n      code !== 1005 && // \"MUST NOT be set as a status code\"\n      code !== 1006 // \"MUST NOT be set as a status code\"\n    )\n  }\n\n  return code >= 3000 && code <= 4999\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-5.5\n * @param {number} opcode\n * @returns {boolean}\n */\nfunction isControlFrame (opcode) {\n  return (\n    opcode === opcodes.CLOSE ||\n    opcode === opcodes.PING ||\n    opcode === opcodes.PONG\n  )\n}\n\n/**\n * @param {number} opcode\n * @returns {boolean}\n */\nfunction isContinuationFrame (opcode) {\n  return opcode === opcodes.CONTINUATION\n}\n\n/**\n * @param {number} opcode\n * @returns {boolean}\n */\nfunction isTextBinaryFrame (opcode) {\n  return opcode === opcodes.TEXT || opcode === opcodes.BINARY\n}\n\n/**\n *\n * @param {number} opcode\n * @returns {boolean}\n */\nfunction isValidOpcode (opcode) {\n  return isTextBinaryFrame(opcode) || isContinuationFrame(opcode) || isControlFrame(opcode)\n}\n\n/**\n * Parses a Sec-WebSocket-Extensions header value.\n * @param {string} extensions\n * @returns {Map<string, string>}\n */\n// TODO(@Uzlopak, @KhafraDev): make compliant https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\nfunction parseExtensions (extensions) {\n  const position = { position: 0 }\n  const extensionList = new Map()\n\n  while (position.position < extensions.length) {\n    const pair = collectASequenceOfCodePointsFast(';', extensions, position)\n    const [name, value = ''] = pair.split('=', 2)\n\n    extensionList.set(\n      removeHTTPWhitespace(name, true, false),\n      removeHTTPWhitespace(value, false, true)\n    )\n\n    position.position++\n  }\n\n  return extensionList\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7692#section-7.1.2.2\n * @description \"client-max-window-bits = 1*DIGIT\"\n * @param {string} value\n * @returns {boolean}\n */\nfunction isValidClientWindowBits (value) {\n  // Must have at least one character\n  if (value.length === 0) {\n    return false\n  }\n\n  // Check all characters are ASCII digits\n  for (let i = 0; i < value.length; i++) {\n    const byte = value.charCodeAt(i)\n\n    if (byte < 0x30 || byte > 0x39) {\n      return false\n    }\n  }\n\n  // Check numeric range: zlib requires windowBits in range 8-15\n  const num = Number.parseInt(value, 10)\n  return num >= 8 && num <= 15\n}\n\n/**\n * @see https://whatpr.org/websockets/48/7b748d3...d5570f3.html#get-a-url-record\n * @param {string} url\n * @param {string} [baseURL]\n */\nfunction getURLRecord (url, baseURL) {\n  // 1. Let urlRecord be the result of applying the URL parser to url with baseURL .\n  // 2. If urlRecord is failure, then throw a \" SyntaxError \" DOMException .\n  let urlRecord\n\n  try {\n    urlRecord = new URL(url, baseURL)\n  } catch (e) {\n    throw new DOMException(e, 'SyntaxError')\n  }\n\n  // 3. If urlRecord ’s scheme is \" http \", then set urlRecord ’s scheme to \" ws \".\n  // 4. Otherwise, if urlRecord ’s scheme is \" https \", set urlRecord ’s scheme to \" wss \".\n  if (urlRecord.protocol === 'http:') {\n    urlRecord.protocol = 'ws:'\n  } else if (urlRecord.protocol === 'https:') {\n    urlRecord.protocol = 'wss:'\n  }\n\n  // 5. If urlRecord ’s scheme is not \" ws \" or \" wss \", then throw a \" SyntaxError \" DOMException .\n  if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n    throw new DOMException('expected a ws: or wss: url', 'SyntaxError')\n  }\n\n  // If urlRecord ’s fragment is non-null, then throw a \" SyntaxError \" DOMException .\n  if (urlRecord.hash.length || urlRecord.href.endsWith('#')) {\n    throw new DOMException('hash', 'SyntaxError')\n  }\n\n  // Return urlRecord .\n  return urlRecord\n}\n\n// https://whatpr.org/websockets/48.html#validate-close-code-and-reason\nfunction validateCloseCodeAndReason (code, reason) {\n  // 1. If code is not null, but is neither an integer equal to\n  //    1000 nor an integer in the range 3000 to 4999, inclusive,\n  //    throw an \"InvalidAccessError\" DOMException.\n  if (code !== null) {\n    if (code !== 1000 && (code < 3000 || code > 4999)) {\n      throw new DOMException('invalid code', 'InvalidAccessError')\n    }\n  }\n\n  // 2. If reason is not null, then:\n  if (reason !== null) {\n    // 2.1. Let reasonBytes be the result of UTF-8 encoding reason.\n    // 2.2. If reasonBytes is longer than 123 bytes, then throw a\n    //      \"SyntaxError\" DOMException.\n    const reasonBytesLength = Buffer.byteLength(reason)\n\n    if (reasonBytesLength > 123) {\n      throw new DOMException(`Reason must be less than 123 bytes; received ${reasonBytesLength}`, 'SyntaxError')\n    }\n  }\n}\n\n/**\n * Converts a Buffer to utf-8, even on platforms without icu.\n * @type {(buffer: Buffer) => string}\n */\nconst utf8Decode = (() => {\n  if (typeof process.versions.icu === 'string') {\n    const fatalDecoder = new TextDecoder('utf-8', { fatal: true })\n    return fatalDecoder.decode.bind(fatalDecoder)\n  }\n  return function (buffer) {\n    if (isUtf8(buffer)) {\n      return buffer.toString('utf-8')\n    }\n    throw new TypeError('Invalid utf-8 received.')\n  }\n})()\n\nmodule.exports = {\n  isConnecting,\n  isEstablished,\n  isClosing,\n  isClosed,\n  fireEvent,\n  isValidSubprotocol,\n  isValidStatusCode,\n  websocketMessageReceived,\n  utf8Decode,\n  isControlFrame,\n  isContinuationFrame,\n  isTextBinaryFrame,\n  isValidOpcode,\n  parseExtensions,\n  isValidClientWindowBits,\n  toArrayBuffer,\n  getURLRecord,\n  validateCloseCodeAndReason\n}\n","'use strict'\n\nconst { runtimeFeatures } = require('../../util/runtime-features')\nconst { maxUnsigned16Bit, opcodes } = require('./constants')\n\nconst BUFFER_SIZE = 8 * 1024\n\nlet buffer = null\nlet bufIdx = BUFFER_SIZE\n\nconst randomFillSync = runtimeFeatures.has('crypto')\n  ? require('node:crypto').randomFillSync\n  // not full compatibility, but minimum.\n  : function randomFillSync (buffer, _offset, _size) {\n    for (let i = 0; i < buffer.length; ++i) {\n      buffer[i] = Math.random() * 255 | 0\n    }\n    return buffer\n  }\n\nfunction generateMask () {\n  if (bufIdx === BUFFER_SIZE) {\n    bufIdx = 0\n    randomFillSync((buffer ??= Buffer.allocUnsafeSlow(BUFFER_SIZE)), 0, BUFFER_SIZE)\n  }\n  return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]]\n}\n\nclass WebsocketFrameSend {\n  /**\n   * @param {Buffer|undefined} data\n   */\n  constructor (data) {\n    this.frameData = data\n  }\n\n  createFrame (opcode) {\n    const frameData = this.frameData\n    const maskKey = generateMask()\n    const bodyLength = frameData?.byteLength ?? 0\n\n    /** @type {number} */\n    let payloadLength = bodyLength // 0-125\n    let offset = 6\n\n    if (bodyLength > maxUnsigned16Bit) {\n      offset += 8 // payload length is next 8 bytes\n      payloadLength = 127\n    } else if (bodyLength > 125) {\n      offset += 2 // payload length is next 2 bytes\n      payloadLength = 126\n    }\n\n    const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n    // Clear first 2 bytes, everything else is overwritten\n    buffer[0] = buffer[1] = 0\n    buffer[0] |= 0x80 // FIN\n    buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n    /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */\n    buffer[offset - 4] = maskKey[0]\n    buffer[offset - 3] = maskKey[1]\n    buffer[offset - 2] = maskKey[2]\n    buffer[offset - 1] = maskKey[3]\n\n    buffer[1] = payloadLength\n\n    if (payloadLength === 126) {\n      buffer.writeUInt16BE(bodyLength, 2)\n    } else if (payloadLength === 127) {\n      // Clear extended payload length\n      buffer[2] = buffer[3] = 0\n      buffer.writeUIntBE(bodyLength, 4, 6)\n    }\n\n    buffer[1] |= 0x80 // MASK\n\n    // mask body\n    for (let i = 0; i < bodyLength; ++i) {\n      buffer[offset + i] = frameData[i] ^ maskKey[i & 3]\n    }\n\n    return buffer\n  }\n\n  /**\n   * @param {Uint8Array} buffer\n   */\n  static createFastTextFrame (buffer) {\n    const maskKey = generateMask()\n\n    const bodyLength = buffer.length\n\n    // mask body\n    for (let i = 0; i < bodyLength; ++i) {\n      buffer[i] ^= maskKey[i & 3]\n    }\n\n    let payloadLength = bodyLength\n    let offset = 6\n\n    if (bodyLength > maxUnsigned16Bit) {\n      offset += 8 // payload length is next 8 bytes\n      payloadLength = 127\n    } else if (bodyLength > 125) {\n      offset += 2 // payload length is next 2 bytes\n      payloadLength = 126\n    }\n    const head = Buffer.allocUnsafeSlow(offset)\n\n    head[0] = 0x80 /* FIN */ | opcodes.TEXT /* opcode TEXT */\n    head[1] = payloadLength | 0x80 /* MASK */\n    head[offset - 4] = maskKey[0]\n    head[offset - 3] = maskKey[1]\n    head[offset - 2] = maskKey[2]\n    head[offset - 1] = maskKey[3]\n\n    if (payloadLength === 126) {\n      head.writeUInt16BE(bodyLength, 2)\n    } else if (payloadLength === 127) {\n      head[2] = head[3] = 0\n      head.writeUIntBE(bodyLength, 4, 6)\n    }\n\n    return [head, buffer]\n  }\n}\n\nmodule.exports = {\n  WebsocketFrameSend,\n  generateMask // for benchmark\n}\n","'use strict'\n\nconst { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require('./constants')\nconst { parseExtensions, isClosed, isClosing, isEstablished, isConnecting, validateCloseCodeAndReason } = require('./util')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers, getHeadersList } = require('../fetch/headers')\nconst { getDecodeSplit } = require('../fetch/util')\nconst { WebsocketFrameSend } = require('./frame')\nconst assert = require('node:assert')\nconst { runtimeFeatures } = require('../../util/runtime-features')\n\nconst crypto = runtimeFeatures.has('crypto')\n  ? require('node:crypto')\n  : null\n\nlet warningEmitted = false\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').Handler} handler\n * @param {Partial<import('../../../types/websocket').WebSocketInit>} options\n */\nfunction establishWebSocketConnection (url, protocols, client, handler, options) {\n  // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url’s\n  //    scheme is \"ws\", and to \"https\" otherwise.\n  const requestURL = url\n\n  requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n  // 2. Let request be a new request, whose URL is requestURL, client is client,\n  //    service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n  //    \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n  //    redirect mode is \"error\", and use-URL-credentials flag is set.\n  const request = makeRequest({\n    urlList: [requestURL],\n    client,\n    serviceWorkers: 'none',\n    referrer: 'no-referrer',\n    mode: 'websocket',\n    credentials: 'include',\n    cache: 'no-store',\n    redirect: 'error',\n    useURLCredentials: true\n  })\n\n  // Note: undici extension, allow setting custom headers.\n  if (options.headers) {\n    const headersList = getHeadersList(new Headers(options.headers))\n\n    request.headersList = headersList\n  }\n\n  // 3. Append (`Upgrade`, `websocket`) to request’s header list.\n  // 4. Append (`Connection`, `Upgrade`) to request’s header list.\n  // Note: both of these are handled by undici currently.\n  // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n  // 5. Let keyValue be a nonce consisting of a randomly selected\n  //    16-byte value that has been forgiving-base64-encoded and\n  //    isomorphic encoded.\n  const keyValue = crypto.randomBytes(16).toString('base64')\n\n  // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s\n  //    header list.\n  request.headersList.append('sec-websocket-key', keyValue, true)\n\n  // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s\n  //    header list.\n  request.headersList.append('sec-websocket-version', '13', true)\n\n  // 8. For each protocol in protocols, combine\n  //    (`Sec-WebSocket-Protocol`, protocol) in request’s header\n  //    list.\n  for (const protocol of protocols) {\n    request.headersList.append('sec-websocket-protocol', protocol, true)\n  }\n\n  // 9. Let permessageDeflate be a user-agent defined\n  //    \"permessage-deflate\" extension header value.\n  // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n  const permessageDeflate = 'permessage-deflate; client_max_window_bits'\n\n  // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n  //     request’s header list.\n  request.headersList.append('sec-websocket-extensions', permessageDeflate, true)\n\n  // 11. Fetch request with useParallelQueue set to true, and\n  //     processResponse given response being these steps:\n  const controller = fetching({\n    request,\n    useParallelQueue: true,\n    dispatcher: options.dispatcher,\n    processResponse (response) {\n      // 1. If response is a network error or its status is not 101,\n      //    fail the WebSocket connection.\n      // if (response.type === 'error' || ((response.socket?.session != null && response.status !== 200) && response.status !== 101)) {\n      if (response.type === 'error' || response.status !== 101) {\n        // The presence of a session property on the socket indicates HTTP2\n        // HTTP1\n        if (response.socket?.session == null) {\n          failWebsocketConnection(handler, 1002, 'Received network error or non-101 status code.', response.error)\n          return\n        }\n\n        // HTTP2\n        if (response.status !== 200) {\n          failWebsocketConnection(handler, 1002, 'Received network error or non-200 status code.', response.error)\n          return\n        }\n      }\n\n      if (warningEmitted === false && response.socket?.session != null) {\n        process.emitWarning('WebSocket over HTTP2 is experimental, and subject to change.', 'ExperimentalWarning')\n        warningEmitted = true\n      }\n\n      // 2. If protocols is not the empty list and extracting header\n      //    list values given `Sec-WebSocket-Protocol` and response’s\n      //    header list results in null, failure, or the empty byte\n      //    sequence, then fail the WebSocket connection.\n      if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n        failWebsocketConnection(handler, 1002, 'Server did not respond with sent protocols.')\n        return\n      }\n\n      // 3. Follow the requirements stated step 2 to step 6, inclusive,\n      //    of the last set of steps in section 4.1 of The WebSocket\n      //    Protocol to validate response. This either results in fail\n      //    the WebSocket connection or the WebSocket connection is\n      //    established.\n\n      // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n      //    header field contains a value that is not an ASCII case-\n      //    insensitive match for the value \"websocket\", the client MUST\n      //    _Fail the WebSocket Connection_.\n      //    For H2, no upgrade header is expected.\n      if (response.socket.session == null && response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n        failWebsocketConnection(handler, 1002, 'Server did not set Upgrade header to \"websocket\".')\n        return\n      }\n\n      // 3. If the response lacks a |Connection| header field or the\n      //    |Connection| header field doesn't contain a token that is an\n      //    ASCII case-insensitive match for the value \"Upgrade\", the client\n      //    MUST _Fail the WebSocket Connection_.\n      //    For H2, no connection header is expected.\n      if (response.socket.session == null && response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n        failWebsocketConnection(handler, 1002, 'Server did not set Connection header to \"upgrade\".')\n        return\n      }\n\n      // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n      //    the |Sec-WebSocket-Accept| contains a value other than the\n      //    base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n      //    Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n      //    E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n      //    trailing whitespace, the client MUST _Fail the WebSocket\n      //    Connection_.\n      const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n      const digest = crypto.hash('sha1', keyValue + uid, 'base64')\n      if (secWSAccept !== digest) {\n        failWebsocketConnection(handler, 1002, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n        return\n      }\n\n      // 5. If the response includes a |Sec-WebSocket-Extensions| header\n      //    field and this header field indicates the use of an extension\n      //    that was not present in the client's handshake (the server has\n      //    indicated an extension not requested by the client), the client\n      //    MUST _Fail the WebSocket Connection_.  (The parsing of this\n      //    header field to determine which extensions are requested is\n      //    discussed in Section 9.1.)\n      const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n      let extensions\n\n      if (secExtension !== null) {\n        extensions = parseExtensions(secExtension)\n\n        if (!extensions.has('permessage-deflate')) {\n          failWebsocketConnection(handler, 1002, 'Sec-WebSocket-Extensions header does not match.')\n          return\n        }\n      }\n\n      // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n      //    and this header field indicates the use of a subprotocol that was\n      //    not present in the client's handshake (the server has indicated a\n      //    subprotocol not requested by the client), the client MUST _Fail\n      //    the WebSocket Connection_.\n      const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n      if (secProtocol !== null) {\n        const requestProtocols = getDecodeSplit('sec-websocket-protocol', request.headersList)\n\n        // The client can request that the server use a specific subprotocol by\n        // including the |Sec-WebSocket-Protocol| field in its handshake.  If it\n        // is specified, the server needs to include the same field and one of\n        // the selected subprotocol values in its response for the connection to\n        // be established.\n        if (!requestProtocols.includes(secProtocol)) {\n          failWebsocketConnection(handler, 1002, 'Protocol was not set in the opening handshake.')\n          return\n        }\n      }\n\n      response.socket.on('data', handler.onSocketData)\n      response.socket.on('close', handler.onSocketClose)\n      response.socket.on('error', handler.onSocketError)\n\n      handler.wasEverConnected = true\n      handler.onConnectionEstablished(response, extensions)\n    }\n  })\n\n  return controller\n}\n\n/**\n * @see https://whatpr.org/websockets/48.html#close-the-websocket\n * @param {import('./websocket').Handler} object\n * @param {number} [code=null]\n * @param {string} [reason='']\n */\nfunction closeWebSocketConnection (object, code, reason, validate = false) {\n  // 1. If code was not supplied, let code be null.\n  code ??= null\n\n  // 2. If reason was not supplied, let reason be the empty string.\n  reason ??= ''\n\n  // 3. Validate close code and reason with code and reason.\n  if (validate) validateCloseCodeAndReason(code, reason)\n\n  // 4. Run the first matching steps from the following list:\n  //     - If object’s ready state is CLOSING (2) or CLOSED (3)\n  //     - If the WebSocket connection is not yet established [WSP]\n  //     - If the WebSocket closing handshake has not yet been started [WSP]\n  //     - Otherwise\n  if (isClosed(object.readyState) || isClosing(object.readyState)) {\n    // Do nothing.\n  } else if (!isEstablished(object.readyState)) {\n    // Fail the WebSocket connection and set object’s ready state to CLOSING (2). [WSP]\n    failWebsocketConnection(object)\n    object.readyState = states.CLOSING\n  } else if (!object.closeState.has(sentCloseFrameState.SENT) && !object.closeState.has(sentCloseFrameState.RECEIVED)) {\n    // Upon either sending or receiving a Close control frame, it is said\n    // that _The WebSocket Closing Handshake is Started_ and that the\n    // WebSocket connection is in the CLOSING state.\n\n    const frame = new WebsocketFrameSend()\n\n    // If neither code nor reason is present, the WebSocket Close\n    // message must not have a body.\n\n    // If code is present, then the status code to use in the\n    // WebSocket Close message must be the integer given by code.\n    // If code is null and reason is the empty string, the WebSocket Close frame must not have a body.\n    // If reason is non-empty but code is null, then set code to 1000 (\"Normal Closure\").\n    if (reason.length !== 0 && code === null) {\n      code = 1000\n    }\n\n    // If code is set, then the status code to use in the WebSocket Close frame must be the integer given by code.\n    assert(code === null || Number.isInteger(code))\n\n    if (code === null && reason.length === 0) {\n      frame.frameData = emptyBuffer\n    } else if (code !== null && reason === null) {\n      frame.frameData = Buffer.allocUnsafe(2)\n      frame.frameData.writeUInt16BE(code, 0)\n    } else if (code !== null && reason !== null) {\n      // If reason is also present, then reasonBytes must be\n      // provided in the Close message after the status code.\n      frame.frameData = Buffer.allocUnsafe(2 + Buffer.byteLength(reason))\n      frame.frameData.writeUInt16BE(code, 0)\n      // the body MAY contain UTF-8-encoded data with value /reason/\n      frame.frameData.write(reason, 2, 'utf-8')\n    } else {\n      frame.frameData = emptyBuffer\n    }\n\n    object.socket.write(frame.createFrame(opcodes.CLOSE))\n\n    object.closeState.add(sentCloseFrameState.SENT)\n\n    // Upon either sending or receiving a Close control frame, it is said\n    // that _The WebSocket Closing Handshake is Started_ and that the\n    // WebSocket connection is in the CLOSING state.\n    object.readyState = states.CLOSING\n  } else {\n    // Set object’s ready state to CLOSING (2).\n    object.readyState = states.CLOSING\n  }\n}\n\n/**\n * @param {import('./websocket').Handler} handler\n * @param {number} code\n * @param {string|undefined} reason\n * @param {unknown} cause\n * @returns {void}\n */\nfunction failWebsocketConnection (handler, code, reason, cause) {\n  // If _The WebSocket Connection is Established_ prior to the point where\n  // the endpoint is required to _Fail the WebSocket Connection_, the\n  // endpoint SHOULD send a Close frame with an appropriate status code\n  // (Section 7.4) before proceeding to _Close the WebSocket Connection_.\n  if (isEstablished(handler.readyState)) {\n    closeWebSocketConnection(handler, code, reason, false)\n  }\n\n  handler.controller.abort()\n\n  if (isConnecting(handler.readyState)) {\n    // If the connection was not established, we must still emit an 'error' and 'close' events\n    handler.onSocketClose()\n  } else if (handler.socket?.destroyed === false) {\n    handler.socket.destroy()\n  }\n}\n\nmodule.exports = {\n  establishWebSocketConnection,\n  failWebsocketConnection,\n  closeWebSocketConnection\n}\n","'use strict'\n\nconst { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require('node:zlib')\nconst { isValidClientWindowBits } = require('./util')\nconst { MessageSizeExceededError } = require('../../core/errors')\n\nconst tail = Buffer.from([0x00, 0x00, 0xff, 0xff])\nconst kBuffer = Symbol('kBuffer')\nconst kLength = Symbol('kLength')\n\nclass PerMessageDeflate {\n  /** @type {import('node:zlib').InflateRaw} */\n  #inflate\n\n  #options = {}\n\n  #maxPayloadSize = 0\n\n  /**\n   * @param {Map<string, string>} extensions\n   */\n  constructor (extensions, options) {\n    this.#options.serverNoContextTakeover = extensions.has('server_no_context_takeover')\n    this.#options.serverMaxWindowBits = extensions.get('server_max_window_bits')\n\n    this.#maxPayloadSize = options.maxPayloadSize\n  }\n\n  /**\n   * Decompress a compressed payload.\n   * @param {Buffer} chunk Compressed data\n   * @param {boolean} fin Final fragment flag\n   * @param {Function} callback Callback function\n   */\n  decompress (chunk, fin, callback) {\n    // An endpoint uses the following algorithm to decompress a message.\n    // 1.  Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the\n    //     payload of the message.\n    // 2.  Decompress the resulting data using DEFLATE.\n    if (!this.#inflate) {\n      let windowBits = Z_DEFAULT_WINDOWBITS\n\n      if (this.#options.serverMaxWindowBits) { // empty values default to Z_DEFAULT_WINDOWBITS\n        if (!isValidClientWindowBits(this.#options.serverMaxWindowBits)) {\n          callback(new Error('Invalid server_max_window_bits'))\n          return\n        }\n\n        windowBits = Number.parseInt(this.#options.serverMaxWindowBits)\n      }\n\n      try {\n        this.#inflate = createInflateRaw({ windowBits })\n      } catch (err) {\n        callback(err)\n        return\n      }\n      this.#inflate[kBuffer] = []\n      this.#inflate[kLength] = 0\n\n      this.#inflate.on('data', (data) => {\n        this.#inflate[kLength] += data.length\n\n        if (this.#maxPayloadSize > 0 && this.#inflate[kLength] > this.#maxPayloadSize) {\n          callback(new MessageSizeExceededError())\n          this.#inflate.removeAllListeners()\n          this.#inflate = null\n          return\n        }\n\n        this.#inflate[kBuffer].push(data)\n      })\n\n      this.#inflate.on('error', (err) => {\n        this.#inflate = null\n        callback(err)\n      })\n    }\n\n    this.#inflate.write(chunk)\n    if (fin) {\n      this.#inflate.write(tail)\n    }\n\n    this.#inflate.flush(() => {\n      if (!this.#inflate) {\n        return\n      }\n\n      const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength])\n\n      this.#inflate[kBuffer].length = 0\n      this.#inflate[kLength] = 0\n\n      callback(null, full)\n    })\n  }\n}\n\nmodule.exports = { PerMessageDeflate }\n","'use strict'\n\nconst { Writable } = require('node:stream')\nconst assert = require('node:assert')\nconst { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require('./constants')\nconst {\n  isValidStatusCode,\n  isValidOpcode,\n  websocketMessageReceived,\n  utf8Decode,\n  isControlFrame,\n  isTextBinaryFrame,\n  isContinuationFrame\n} = require('./util')\nconst { failWebsocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { PerMessageDeflate } = require('./permessage-deflate')\nconst { MessageSizeExceededError } = require('../../core/errors')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>\n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nclass ByteParser extends Writable {\n  #buffers = []\n  #fragmentsBytes = 0\n  #byteOffset = 0\n  #loop = false\n\n  #state = parserStates.INFO\n\n  #info = {}\n  #fragments = []\n\n  /** @type {Map<string, PerMessageDeflate>} */\n  #extensions\n\n  /** @type {import('./websocket').Handler} */\n  #handler\n\n  /** @type {number} */\n  #maxFragments\n\n  /** @type {number} */\n  #maxPayloadSize\n\n  /**\n   * @param {import('./websocket').Handler} handler\n   * @param {Map<string, string>|null} extensions\n   * @param {{ maxFragments?: number, maxPayloadSize?: number }} [options]\n   */\n  constructor (handler, extensions, options = {}) {\n    super()\n\n    this.#handler = handler\n    this.#extensions = extensions == null ? new Map() : extensions\n    this.#maxFragments = options.maxFragments ?? 0\n    this.#maxPayloadSize = options.maxPayloadSize ?? 0\n\n    if (this.#extensions.has('permessage-deflate')) {\n      this.#extensions.set('permessage-deflate', new PerMessageDeflate(extensions, options))\n    }\n  }\n\n  /**\n   * @param {Buffer} chunk\n   * @param {() => void} callback\n   */\n  _write (chunk, _, callback) {\n    this.#buffers.push(chunk)\n    this.#byteOffset += chunk.length\n    this.#loop = true\n\n    this.run(callback)\n  }\n\n  #validatePayloadLength () {\n    if (\n      this.#maxPayloadSize > 0 &&\n      !isControlFrame(this.#info.opcode) &&\n      this.#info.payloadLength + this.#fragmentsBytes > this.#maxPayloadSize\n    ) {\n      failWebsocketConnection(this.#handler, 1009, 'Payload size exceeds maximum allowed size')\n      return false\n    }\n\n    return true\n  }\n\n  /**\n   * Runs whenever a new chunk is received.\n   * Callback is called whenever there are no more chunks buffering,\n   * or not enough bytes are buffered to parse.\n   */\n  run (callback) {\n    while (this.#loop) {\n      if (this.#state === parserStates.INFO) {\n        // If there aren't enough bytes to parse the payload length, etc.\n        if (this.#byteOffset < 2) {\n          return callback()\n        }\n\n        const buffer = this.consume(2)\n        const fin = (buffer[0] & 0x80) !== 0\n        const opcode = buffer[0] & 0x0F\n        const masked = (buffer[1] & 0x80) === 0x80\n\n        const fragmented = !fin && opcode !== opcodes.CONTINUATION\n        const payloadLength = buffer[1] & 0x7F\n\n        const rsv1 = buffer[0] & 0x40\n        const rsv2 = buffer[0] & 0x20\n        const rsv3 = buffer[0] & 0x10\n\n        if (!isValidOpcode(opcode)) {\n          failWebsocketConnection(this.#handler, 1002, 'Invalid opcode received')\n          return callback()\n        }\n\n        if (masked) {\n          failWebsocketConnection(this.#handler, 1002, 'Frame cannot be masked')\n          return callback()\n        }\n\n        // MUST be 0 unless an extension is negotiated that defines meanings\n        // for non-zero values.  If a nonzero value is received and none of\n        // the negotiated extensions defines the meaning of such a nonzero\n        // value, the receiving endpoint MUST _Fail the WebSocket\n        // Connection_.\n        // This document allocates the RSV1 bit of the WebSocket header for\n        // PMCEs and calls the bit the \"Per-Message Compressed\" bit.  On a\n        // WebSocket connection where a PMCE is in use, this bit indicates\n        // whether a message is compressed or not.\n        if (rsv1 !== 0 && !this.#extensions.has('permessage-deflate')) {\n          failWebsocketConnection(this.#handler, 1002, 'Expected RSV1 to be clear.')\n          return\n        }\n\n        if (rsv2 !== 0 || rsv3 !== 0) {\n          failWebsocketConnection(this.#handler, 1002, 'RSV1, RSV2, RSV3 must be clear')\n          return\n        }\n\n        if (fragmented && !isTextBinaryFrame(opcode)) {\n          // Only text and binary frames can be fragmented\n          failWebsocketConnection(this.#handler, 1002, 'Invalid frame type was fragmented.')\n          return\n        }\n\n        // If we are already parsing a text/binary frame and do not receive either\n        // a continuation frame or close frame, fail the connection.\n        if (isTextBinaryFrame(opcode) && this.#fragments.length > 0) {\n          failWebsocketConnection(this.#handler, 1002, 'Expected continuation frame')\n          return\n        }\n\n        if (this.#info.fragmented && fragmented) {\n          // A fragmented frame can't be fragmented itself\n          failWebsocketConnection(this.#handler, 1002, 'Fragmented frame exceeded 125 bytes.')\n          return\n        }\n\n        // \"All control frames MUST have a payload length of 125 bytes or less\n        // and MUST NOT be fragmented.\"\n        if ((payloadLength > 125 || fragmented) && isControlFrame(opcode)) {\n          failWebsocketConnection(this.#handler, 1002, 'Control frame either too large or fragmented')\n          return\n        }\n\n        if (isContinuationFrame(opcode) && this.#fragments.length === 0 && !this.#info.compressed) {\n          failWebsocketConnection(this.#handler, 1002, 'Unexpected continuation frame')\n          return\n        }\n\n        if (payloadLength <= 125) {\n          this.#info.payloadLength = payloadLength\n          this.#state = parserStates.READ_DATA\n\n          if (!this.#validatePayloadLength()) {\n            return\n          }\n        } else if (payloadLength === 126) {\n          this.#state = parserStates.PAYLOADLENGTH_16\n        } else if (payloadLength === 127) {\n          this.#state = parserStates.PAYLOADLENGTH_64\n        }\n\n        if (isTextBinaryFrame(opcode)) {\n          this.#info.binaryType = opcode\n          this.#info.compressed = rsv1 !== 0\n        }\n\n        this.#info.opcode = opcode\n        this.#info.masked = masked\n        this.#info.fin = fin\n        this.#info.fragmented = fragmented\n      } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n        if (this.#byteOffset < 2) {\n          return callback()\n        }\n\n        const buffer = this.consume(2)\n\n        this.#info.payloadLength = buffer.readUInt16BE(0)\n        this.#state = parserStates.READ_DATA\n\n        if (!this.#validatePayloadLength()) {\n          return\n        }\n      } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n        if (this.#byteOffset < 8) {\n          return callback()\n        }\n\n        const buffer = this.consume(8)\n        const upper = buffer.readUInt32BE(0)\n        const lower = buffer.readUInt32BE(4)\n\n        // 2^31 is the maximum bytes an arraybuffer can contain\n        // on 32-bit systems. Although, on 64-bit systems, this is\n        // 2^53-1 bytes.\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n        if (upper !== 0 || lower > 2 ** 31 - 1) {\n          failWebsocketConnection(this.#handler, 1009, 'Received payload length > 2^31 bytes.')\n          return\n        }\n\n        this.#info.payloadLength = lower\n        this.#state = parserStates.READ_DATA\n\n        if (!this.#validatePayloadLength()) {\n          return\n        }\n      } else if (this.#state === parserStates.READ_DATA) {\n        if (this.#byteOffset < this.#info.payloadLength) {\n          return callback()\n        }\n\n        const body = this.consume(this.#info.payloadLength)\n\n        if (isControlFrame(this.#info.opcode)) {\n          this.#loop = this.parseControlFrame(body)\n          this.#state = parserStates.INFO\n        } else {\n          if (!this.#info.compressed) {\n            if (!this.writeFragments(body)) {\n              return\n            }\n\n            // If the frame is not fragmented, a message has been received.\n            // If the frame is fragmented, it will terminate with a fin bit set\n            // and an opcode of 0 (continuation), therefore we handle that when\n            // parsing continuation frames, not here.\n            if (!this.#info.fragmented && this.#info.fin) {\n              websocketMessageReceived(this.#handler, this.#info.binaryType, this.consumeFragments())\n            }\n\n            this.#state = parserStates.INFO\n          } else {\n            this.#extensions.get('permessage-deflate').decompress(\n              body,\n              this.#info.fin,\n              (error, data) => {\n                if (error) {\n                  const code = error instanceof MessageSizeExceededError ? 1009 : 1007\n                  failWebsocketConnection(this.#handler, code, error.message)\n                  return\n                }\n\n                if (!this.writeFragments(data)) {\n                  return\n                }\n\n                // Check cumulative fragment size\n                if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) {\n                  failWebsocketConnection(this.#handler, 1009, new MessageSizeExceededError().message)\n                  return\n                }\n\n                if (!this.#info.fin) {\n                  this.#state = parserStates.INFO\n                  this.#loop = true\n                  this.run(callback)\n                  return\n                }\n\n                websocketMessageReceived(this.#handler, this.#info.binaryType, this.consumeFragments())\n\n                this.#loop = true\n                this.#state = parserStates.INFO\n                this.run(callback)\n              },\n              this.#fragmentsBytes\n            )\n\n            this.#loop = false\n            break\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Take n bytes from the buffered Buffers\n   * @param {number} n\n   * @returns {Buffer}\n   */\n  consume (n) {\n    if (n > this.#byteOffset) {\n      throw new Error('Called consume() before buffers satiated.')\n    } else if (n === 0) {\n      return emptyBuffer\n    }\n\n    this.#byteOffset -= n\n\n    const first = this.#buffers[0]\n\n    if (first.length > n) {\n      // replace with remaining buffer\n      this.#buffers[0] = first.subarray(n, first.length)\n      return first.subarray(0, n)\n    } else if (first.length === n) {\n      // prefect match\n      return this.#buffers.shift()\n    } else {\n      let offset = 0\n      // If Buffer.allocUnsafe is used, extra copies will be made because the offset is non-zero.\n      const buffer = Buffer.allocUnsafeSlow(n)\n      while (offset !== n) {\n        const next = this.#buffers[0]\n        const length = next.length\n\n        if (length + offset === n) {\n          buffer.set(this.#buffers.shift(), offset)\n          break\n        } else if (length + offset > n) {\n          buffer.set(next.subarray(0, n - offset), offset)\n          this.#buffers[0] = next.subarray(n - offset)\n          break\n        } else {\n          buffer.set(this.#buffers.shift(), offset)\n          offset += length\n        }\n      }\n\n      return buffer\n    }\n  }\n\n  writeFragments (fragment) {\n    if (\n      this.#maxFragments > 0 &&\n      this.#fragments.length === this.#maxFragments\n    ) {\n      failWebsocketConnection(this.#handler, 1008, 'Too many message fragments')\n      return false\n    }\n\n    this.#fragmentsBytes += fragment.length\n    this.#fragments.push(fragment)\n    return true\n  }\n\n  consumeFragments () {\n    const fragments = this.#fragments\n\n    if (fragments.length === 1) {\n      // single fragment\n      this.#fragmentsBytes = 0\n      return fragments.shift()\n    }\n\n    let offset = 0\n    // If Buffer.allocUnsafe is used, extra copies will be made because the offset is non-zero.\n    const output = Buffer.allocUnsafeSlow(this.#fragmentsBytes)\n\n    for (let i = 0; i < fragments.length; ++i) {\n      const buffer = fragments[i]\n      output.set(buffer, offset)\n      offset += buffer.length\n    }\n\n    this.#fragments = []\n    this.#fragmentsBytes = 0\n\n    return output\n  }\n\n  parseCloseBody (data) {\n    assert(data.length !== 1)\n\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n    /** @type {number|undefined} */\n    let code\n\n    if (data.length >= 2) {\n      // _The WebSocket Connection Close Code_ is\n      // defined as the status code (Section 7.4) contained in the first Close\n      // control frame received by the application\n      code = data.readUInt16BE(0)\n    }\n\n    if (code !== undefined && !isValidStatusCode(code)) {\n      return { code: 1002, reason: 'Invalid status code', error: true }\n    }\n\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n    /** @type {Buffer} */\n    let reason = data.subarray(2)\n\n    // Remove BOM\n    if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n      reason = reason.subarray(3)\n    }\n\n    try {\n      reason = utf8Decode(reason)\n    } catch {\n      return { code: 1007, reason: 'Invalid UTF-8', error: true }\n    }\n\n    return { code, reason, error: false }\n  }\n\n  /**\n   * Parses control frames.\n   * @param {Buffer} body\n   */\n  parseControlFrame (body) {\n    const { opcode, payloadLength } = this.#info\n\n    if (opcode === opcodes.CLOSE) {\n      if (payloadLength === 1) {\n        failWebsocketConnection(this.#handler, 1002, 'Received close frame with a 1-byte body.')\n        return false\n      }\n\n      this.#info.closeInfo = this.parseCloseBody(body)\n\n      if (this.#info.closeInfo.error) {\n        const { code, reason } = this.#info.closeInfo\n\n        failWebsocketConnection(this.#handler, code, reason)\n        return false\n      }\n\n      // Upon receiving such a frame, the other peer sends a\n      // Close frame in response, if it hasn't already sent one.\n      if (!this.#handler.closeState.has(sentCloseFrameState.SENT) && !this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {\n        // If an endpoint receives a Close frame and did not previously send a\n        // Close frame, the endpoint MUST send a Close frame in response.  (When\n        // sending a Close frame in response, the endpoint typically echos the\n        // status code it received.)\n        let body = emptyBuffer\n        if (this.#info.closeInfo.code) {\n          body = Buffer.allocUnsafe(2)\n          body.writeUInt16BE(this.#info.closeInfo.code, 0)\n        }\n        const closeFrame = new WebsocketFrameSend(body)\n\n        this.#handler.socket.write(closeFrame.createFrame(opcodes.CLOSE))\n        this.#handler.closeState.add(sentCloseFrameState.SENT)\n      }\n\n      // Upon either sending or receiving a Close control frame, it is said\n      // that _The WebSocket Closing Handshake is Started_ and that the\n      // WebSocket connection is in the CLOSING state.\n      this.#handler.readyState = states.CLOSING\n      this.#handler.closeState.add(sentCloseFrameState.RECEIVED)\n\n      return false\n    } else if (opcode === opcodes.PING) {\n      // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n      // response, unless it already received a Close frame.\n      // A Pong frame sent in response to a Ping frame must have identical\n      // \"Application data\"\n\n      if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {\n        const frame = new WebsocketFrameSend(body)\n\n        this.#handler.socket.write(frame.createFrame(opcodes.PONG))\n\n        this.#handler.onPing(body)\n      }\n    } else if (opcode === opcodes.PONG) {\n      // A Pong frame MAY be sent unsolicited.  This serves as a\n      // unidirectional heartbeat.  A response to an unsolicited Pong frame is\n      // not expected.\n      this.#handler.onPong(body)\n    }\n\n    return true\n  }\n\n  get closingInfo () {\n    return this.#info.closeInfo\n  }\n}\n\nmodule.exports = {\n  ByteParser\n}\n","'use strict'\n\nconst { WebsocketFrameSend } = require('./frame')\nconst { opcodes, sendHints } = require('./constants')\nconst FixedQueue = require('../../dispatcher/fixed-queue')\n\n/**\n * @typedef {object} SendQueueNode\n * @property {Promise<void> | null} promise\n * @property {((...args: any[]) => any)} callback\n * @property {Buffer | null} frame\n */\n\nclass SendQueue {\n  /**\n   * @type {FixedQueue}\n   */\n  #queue = new FixedQueue()\n\n  /**\n   * @type {boolean}\n   */\n  #running = false\n\n  /** @type {import('node:net').Socket} */\n  #socket\n\n  constructor (socket) {\n    this.#socket = socket\n  }\n\n  add (item, cb, hint) {\n    if (hint !== sendHints.blob) {\n      if (!this.#running) {\n        // TODO(@tsctx): support fast-path for string on running\n        if (hint === sendHints.text) {\n          // special fast-path for string\n          const { 0: head, 1: body } = WebsocketFrameSend.createFastTextFrame(item)\n          this.#socket.cork()\n          this.#socket.write(head)\n          this.#socket.write(body, cb)\n          this.#socket.uncork()\n        } else {\n          // direct writing\n          this.#socket.write(createFrame(item, hint), cb)\n        }\n      } else {\n        /** @type {SendQueueNode} */\n        const node = {\n          promise: null,\n          callback: cb,\n          frame: createFrame(item, hint)\n        }\n        this.#queue.push(node)\n      }\n      return\n    }\n\n    /** @type {SendQueueNode} */\n    const node = {\n      promise: item.arrayBuffer().then((ab) => {\n        node.promise = null\n        node.frame = createFrame(ab, hint)\n      }),\n      callback: cb,\n      frame: null\n    }\n\n    this.#queue.push(node)\n\n    if (!this.#running) {\n      this.#run()\n    }\n  }\n\n  async #run () {\n    this.#running = true\n    const queue = this.#queue\n    while (!queue.isEmpty()) {\n      const node = queue.shift()\n      // wait pending promise\n      if (node.promise !== null) {\n        await node.promise\n      }\n      // write\n      this.#socket.write(node.frame, node.callback)\n      // cleanup\n      node.callback = node.frame = null\n    }\n    this.#running = false\n  }\n}\n\nfunction createFrame (data, hint) {\n  return new WebsocketFrameSend(toBuffer(data, hint)).createFrame(hint === sendHints.text ? opcodes.TEXT : opcodes.BINARY)\n}\n\nfunction toBuffer (data, hint) {\n  switch (hint) {\n    case sendHints.text:\n    case sendHints.typedArray:\n      return new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n    case sendHints.arrayBuffer:\n    case sendHints.blob:\n      return new Uint8Array(data)\n  }\n}\n\nmodule.exports = { SendQueue }\n","'use strict'\n\nconst { isArrayBuffer } = require('node:util/types')\nconst { webidl } = require('../webidl')\nconst { URLSerializer } = require('../fetch/data-url')\nconst { environmentSettingsObject } = require('../fetch/util')\nconst { staticPropertyDescriptors, states, sentCloseFrameState, sendHints, opcodes } = require('./constants')\nconst {\n  isConnecting,\n  isEstablished,\n  isClosing,\n  isClosed,\n  isValidSubprotocol,\n  fireEvent,\n  utf8Decode,\n  toArrayBuffer,\n  getURLRecord\n} = require('./util')\nconst { establishWebSocketConnection, closeWebSocketConnection, failWebsocketConnection } = require('./connection')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { getGlobalDispatcher } = require('../../global')\nconst { ErrorEvent, CloseEvent, createFastMessageEvent } = require('./events')\nconst { SendQueue } = require('./sender')\nconst { WebsocketFrameSend } = require('./frame')\nconst { channels } = require('../../core/diagnostics')\n\nfunction getSocketAddress (socket) {\n  if (typeof socket?.address === 'function') {\n    return socket.address()\n  }\n\n  if (typeof socket?.session?.socket?.address === 'function') {\n    return socket.session.socket.address()\n  }\n\n  return null\n}\n\n/**\n * @typedef {object} Handler\n * @property {(response: any, extensions?: string[]) => void} onConnectionEstablished\n * @property {(opcode: number, data: Buffer) => void} onMessage\n * @property {(error: Error) => void} onParserError\n * @property {() => void} onParserDrain\n * @property {(chunk: Buffer) => void} onSocketData\n * @property {(err: Error) => void} onSocketError\n * @property {() => void} onSocketClose\n * @property {(body: Buffer) => void} onPing\n * @property {(body: Buffer) => void} onPong\n *\n * @property {number} readyState\n * @property {import('stream').Duplex} socket\n * @property {Set<number>} closeState\n * @property {import('../fetch/index').Fetch} controller\n * @property {boolean} [wasEverConnected=false]\n */\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n  #events = {\n    open: null,\n    error: null,\n    close: null,\n    message: null\n  }\n\n  #bufferedAmount = 0\n  #protocol = ''\n  #extensions = ''\n\n  /** @type {SendQueue} */\n  #sendQueue\n\n  /** @type {Handler} */\n  #handler = {\n    onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions),\n    onMessage: (opcode, data) => this.#onMessage(opcode, data),\n    onParserError: (err) => failWebsocketConnection(this.#handler, null, err.message),\n    onParserDrain: () => this.#onParserDrain(),\n    onSocketData: (chunk) => {\n      if (!this.#parser.write(chunk)) {\n        this.#handler.socket.pause()\n      }\n    },\n    onSocketError: (err) => {\n      this.#handler.readyState = states.CLOSING\n\n      if (channels.socketError.hasSubscribers) {\n        channels.socketError.publish(err)\n      }\n\n      this.#handler.socket.destroy()\n    },\n    onSocketClose: () => this.#onSocketClose(),\n    onPing: (body) => {\n      if (channels.ping.hasSubscribers) {\n        channels.ping.publish({\n          payload: body,\n          websocket: this\n        })\n      }\n    },\n    onPong: (body) => {\n      if (channels.pong.hasSubscribers) {\n        channels.pong.publish({\n          payload: body,\n          websocket: this\n        })\n      }\n    },\n\n    readyState: states.CONNECTING,\n    socket: null,\n    closeState: new Set(),\n    controller: null,\n    wasEverConnected: false\n  }\n\n  #url\n  #binaryType\n  /** @type {import('./receiver').ByteParser} */\n  #parser\n\n  /**\n   * @param {string} url\n   * @param {string|string[]} protocols\n   */\n  constructor (url, protocols = []) {\n    super()\n\n    webidl.util.markAsUncloneable(this)\n\n    const prefix = 'WebSocket constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols, prefix, 'options')\n\n    url = webidl.converters.USVString(url)\n    protocols = options.protocols\n\n    // 1. Let baseURL be this's relevant settings object's API base URL.\n    const baseURL = environmentSettingsObject.settingsObject.baseUrl\n\n    // 2. Let urlRecord be the result of getting a URL record given url and baseURL.\n    const urlRecord = getURLRecord(url, baseURL)\n\n    // 3. If protocols is a string, set protocols to a sequence consisting\n    //    of just that string.\n    if (typeof protocols === 'string') {\n      protocols = [protocols]\n    }\n\n    // 4. If any of the values in protocols occur more than once or otherwise\n    //    fail to match the requirements for elements that comprise the value\n    //    of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n    //    protocol, then throw a \"SyntaxError\" DOMException.\n    if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    // 5. Set this's url to urlRecord.\n    this.#url = new URL(urlRecord.href)\n\n    // 6. Let client be this's relevant settings object.\n    const client = environmentSettingsObject.settingsObject\n\n    // 7. Run this step in parallel:\n    // 7.1. Establish a WebSocket connection given urlRecord, protocols,\n    //      and client.\n    this.#handler.controller = establishWebSocketConnection(\n      urlRecord,\n      protocols,\n      client,\n      this.#handler,\n      options\n    )\n\n    // Each WebSocket object has an associated ready state, which is a\n    // number representing the state of the connection. Initially it must\n    // be CONNECTING (0).\n    this.#handler.readyState = WebSocket.CONNECTING\n\n    // The extensions attribute must initially return the empty string.\n\n    // The protocol attribute must initially return the empty string.\n\n    // Each WebSocket object has an associated binary type, which is a\n    // BinaryType. Initially it must be \"blob\".\n    this.#binaryType = 'blob'\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n   * @param {number|undefined} code\n   * @param {string|undefined} reason\n   */\n  close (code = undefined, reason = undefined) {\n    webidl.brandCheck(this, WebSocket)\n\n    const prefix = 'WebSocket.close'\n\n    if (code !== undefined) {\n      code = webidl.converters['unsigned short'](code, prefix, 'code', webidl.attributes.Clamp)\n    }\n\n    if (reason !== undefined) {\n      reason = webidl.converters.USVString(reason)\n    }\n\n    // 1. If code is the special value \"missing\", then set code to null.\n    code ??= null\n\n    // 2. If reason is the special value \"missing\", then set reason to the empty string.\n    reason ??= ''\n\n    // 3. Close the WebSocket with this, code, and reason.\n    closeWebSocketConnection(this.#handler, code, reason, true)\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n   * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n   */\n  send (data) {\n    webidl.brandCheck(this, WebSocket)\n\n    const prefix = 'WebSocket.send'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    data = webidl.converters.WebSocketSendData(data, prefix, 'data')\n\n    // 1. If this's ready state is CONNECTING, then throw an\n    //    \"InvalidStateError\" DOMException.\n    if (isConnecting(this.#handler.readyState)) {\n      throw new DOMException('Sent before connected.', 'InvalidStateError')\n    }\n\n    // 2. Run the appropriate set of steps from the following list:\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n    if (!isEstablished(this.#handler.readyState) || isClosing(this.#handler.readyState)) {\n      return\n    }\n\n    // If data is a string\n    if (typeof data === 'string') {\n      // If the WebSocket connection is established and the WebSocket\n      // closing handshake has not yet started, then the user agent\n      // must send a WebSocket Message comprised of the data argument\n      // using a text frame opcode; if the data cannot be sent, e.g.\n      // because it would need to be buffered but the buffer is full,\n      // the user agent must flag the WebSocket as full and then close\n      // the WebSocket connection. Any invocation of this method with a\n      // string argument that does not throw an exception must increase\n      // the bufferedAmount attribute by the number of bytes needed to\n      // express the argument as UTF-8.\n\n      const buffer = Buffer.from(data)\n\n      this.#bufferedAmount += buffer.byteLength\n      this.#sendQueue.add(buffer, () => {\n        this.#bufferedAmount -= buffer.byteLength\n      }, sendHints.text)\n    } else if (isArrayBuffer(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need\n      // to be buffered but the buffer is full, the user agent must flag\n      // the WebSocket as full and then close the WebSocket connection.\n      // The data to be sent is the data stored in the buffer described\n      // by the ArrayBuffer object. Any invocation of this method with an\n      // ArrayBuffer argument that does not throw an exception must\n      // increase the bufferedAmount attribute by the length of the\n      // ArrayBuffer in bytes.\n\n      this.#bufferedAmount += data.byteLength\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.byteLength\n      }, sendHints.arrayBuffer)\n    } else if (ArrayBuffer.isView(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need to\n      // be buffered but the buffer is full, the user agent must flag the\n      // WebSocket as full and then close the WebSocket connection. The\n      // data to be sent is the data stored in the section of the buffer\n      // described by the ArrayBuffer object that data references. Any\n      // invocation of this method with this kind of argument that does\n      // not throw an exception must increase the bufferedAmount attribute\n      // by the length of data’s buffer in bytes.\n\n      this.#bufferedAmount += data.byteLength\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.byteLength\n      }, sendHints.typedArray)\n    } else if (webidl.is.Blob(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need to\n      // be buffered but the buffer is full, the user agent must flag the\n      // WebSocket as full and then close the WebSocket connection. The data\n      // to be sent is the raw data represented by the Blob object. Any\n      // invocation of this method with a Blob argument that does not throw\n      // an exception must increase the bufferedAmount attribute by the size\n      // of the Blob object’s raw data, in bytes.\n\n      this.#bufferedAmount += data.size\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.size\n      }, sendHints.blob)\n    }\n  }\n\n  get readyState () {\n    webidl.brandCheck(this, WebSocket)\n\n    // The readyState getter steps are to return this's ready state.\n    return this.#handler.readyState\n  }\n\n  get bufferedAmount () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#bufferedAmount\n  }\n\n  get url () {\n    webidl.brandCheck(this, WebSocket)\n\n    // The url getter steps are to return this's url, serialized.\n    return URLSerializer(this.#url)\n  }\n\n  get extensions () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#extensions\n  }\n\n  get protocol () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#protocol\n  }\n\n  get onopen () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.open\n  }\n\n  set onopen (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.open) {\n      this.removeEventListener('open', this.#events.open)\n    }\n\n    const listener = webidl.converters.EventHandlerNonNull(fn)\n\n    if (listener !== null) {\n      this.addEventListener('open', listener)\n      this.#events.open = fn\n    } else {\n      this.#events.open = null\n    }\n  }\n\n  get onerror () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.error\n  }\n\n  set onerror (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.error) {\n      this.removeEventListener('error', this.#events.error)\n    }\n\n    const listener = webidl.converters.EventHandlerNonNull(fn)\n\n    if (listener !== null) {\n      this.addEventListener('error', listener)\n      this.#events.error = fn\n    } else {\n      this.#events.error = null\n    }\n  }\n\n  get onclose () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.close\n  }\n\n  set onclose (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.close) {\n      this.removeEventListener('close', this.#events.close)\n    }\n\n    const listener = webidl.converters.EventHandlerNonNull(fn)\n\n    if (listener !== null) {\n      this.addEventListener('close', listener)\n      this.#events.close = fn\n    } else {\n      this.#events.close = null\n    }\n  }\n\n  get onmessage () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.message\n  }\n\n  set onmessage (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.message) {\n      this.removeEventListener('message', this.#events.message)\n    }\n\n    const listener = webidl.converters.EventHandlerNonNull(fn)\n\n    if (listener !== null) {\n      this.addEventListener('message', listener)\n      this.#events.message = fn\n    } else {\n      this.#events.message = null\n    }\n  }\n\n  get binaryType () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#binaryType\n  }\n\n  set binaryType (type) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (type !== 'blob' && type !== 'arraybuffer') {\n      this.#binaryType = 'blob'\n    } else {\n      this.#binaryType = type\n    }\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n   */\n  #onConnectionEstablished (response, parsedExtensions) {\n    // processResponse is called when the \"response's header list has been received and initialized.\"\n    // once this happens, the connection is open\n    this.#handler.socket = response.socket\n\n    const webSocketOptions = this.#handler.controller.dispatcher?.webSocketOptions\n    const maxFragments = webSocketOptions?.maxFragments\n    const maxPayloadSize = webSocketOptions?.maxPayloadSize\n\n    const parser = new ByteParser(this.#handler, parsedExtensions, {\n      maxFragments,\n      maxPayloadSize\n    })\n    parser.on('drain', () => this.#handler.onParserDrain())\n    parser.on('error', (err) => this.#handler.onParserError(err))\n\n    this.#parser = parser\n    this.#sendQueue = new SendQueue(response.socket)\n\n    // 1. Change the ready state to OPEN (1).\n    this.#handler.readyState = states.OPEN\n\n    // 2. Change the extensions attribute’s value to the extensions in use, if\n    //    it is not the null value.\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n    const extensions = response.headersList.get('sec-websocket-extensions')\n\n    if (extensions !== null) {\n      this.#extensions = extensions\n    }\n\n    // 3. Change the protocol attribute’s value to the subprotocol in use, if\n    //    it is not the null value.\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n    const protocol = response.headersList.get('sec-websocket-protocol')\n\n    if (protocol !== null) {\n      this.#protocol = protocol\n    }\n\n    // 4. Fire an event named open at the WebSocket object.\n    fireEvent('open', this)\n\n    if (channels.open.hasSubscribers) {\n      // Convert headers to a plain object for the event\n      const headers = response.headersList.entries\n      channels.open.publish({\n        address: getSocketAddress(response.socket),\n        protocol: this.#protocol,\n        extensions: this.#extensions,\n        websocket: this,\n        handshakeResponse: {\n          status: response.status,\n          statusText: response.statusText,\n          headers\n        }\n      })\n    }\n  }\n\n  #onMessage (type, data) {\n    // 1. If ready state is not OPEN (1), then return.\n    if (this.#handler.readyState !== states.OPEN) {\n      return\n    }\n\n    // 2. Let dataForEvent be determined by switching on type and binary type:\n    let dataForEvent\n\n    if (type === opcodes.TEXT) {\n      // -> type indicates that the data is Text\n      //      a new DOMString containing data\n      try {\n        dataForEvent = utf8Decode(data)\n      } catch {\n        failWebsocketConnection(this.#handler, 1007, 'Received invalid UTF-8 in text frame.')\n        return\n      }\n    } else if (type === opcodes.BINARY) {\n      if (this.#binaryType === 'blob') {\n        // -> type indicates that the data is Binary and binary type is \"blob\"\n        //      a new Blob object, created in the relevant Realm of the WebSocket\n        //      object, that represents data as its raw data\n        dataForEvent = new Blob([data])\n      } else {\n        // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n        //      a new ArrayBuffer object, created in the relevant Realm of the\n        //      WebSocket object, whose contents are data\n        dataForEvent = toArrayBuffer(data)\n      }\n    }\n\n    // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n    //    with the origin attribute initialized to the serialization of the WebSocket\n    //    object’s url's origin, and the data attribute initialized to dataForEvent.\n    fireEvent('message', this, createFastMessageEvent, {\n      origin: this.#url.origin,\n      data: dataForEvent\n    })\n  }\n\n  #onParserDrain () {\n    this.#handler.socket.resume()\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n   * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n   */\n  #onSocketClose () {\n    // If the TCP connection was closed after the\n    // WebSocket closing handshake was completed, the WebSocket connection\n    // is said to have been closed _cleanly_.\n    const wasClean =\n      this.#handler.closeState.has(sentCloseFrameState.SENT) &&\n      this.#handler.closeState.has(sentCloseFrameState.RECEIVED)\n\n    let code = 1005\n    let reason = ''\n\n    const result = this.#parser?.closingInfo\n\n    if (result && !result.error) {\n      code = result.code ?? 1005\n      reason = result.reason\n    }\n\n    // 1. Change the ready state to CLOSED (3).\n    this.#handler.readyState = states.CLOSED\n\n    // 2. If the user agent was required to fail the WebSocket\n    //    connection, or if the WebSocket connection was closed\n    //    after being flagged as full, fire an event named error\n    //    at the WebSocket object.\n    if (!this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {\n      // If _The WebSocket\n      // Connection is Closed_ and no Close control frame was received by the\n      // endpoint (such as could occur if the underlying transport connection\n      // is lost), _The WebSocket Connection Close Code_ is considered to be\n      // 1006.\n      code = 1006\n\n      fireEvent('error', this, (type, init) => new ErrorEvent(type, init), {\n        error: new TypeError(reason)\n      })\n    }\n\n    // 3. Fire an event named close at the WebSocket object,\n    //    using CloseEvent, with the wasClean attribute\n    //    initialized to true if the connection closed cleanly\n    //    and false otherwise, the code attribute initialized to\n    //    the WebSocket connection close code, and the reason\n    //    attribute initialized to the result of applying UTF-8\n    //    decode without BOM to the WebSocket connection close\n    //    reason.\n    // TODO: process.nextTick\n    fireEvent('close', this, (type, init) => new CloseEvent(type, init), {\n      wasClean, code, reason\n    })\n\n    if (channels.close.hasSubscribers) {\n      channels.close.publish({\n        websocket: this,\n        code,\n        reason\n      })\n    }\n  }\n\n  /**\n   * @param {WebSocket} ws\n   * @param {Buffer|undefined} buffer\n   */\n  static ping (ws, buffer) {\n    if (Buffer.isBuffer(buffer)) {\n      if (buffer.length > 125) {\n        throw new TypeError('A PING frame cannot have a body larger than 125 bytes.')\n      }\n    } else if (buffer !== undefined) {\n      throw new TypeError('Expected buffer payload')\n    }\n\n    // An endpoint MAY send a Ping frame any time after the connection is\n    // established and before the connection is closed.\n    const readyState = ws.#handler.readyState\n\n    if (isEstablished(readyState) && !isClosing(readyState) && !isClosed(readyState)) {\n      const frame = new WebsocketFrameSend(buffer)\n      ws.#handler.socket.write(frame.createFrame(opcodes.PING))\n    }\n  }\n}\n\nconst { ping } = WebSocket\nReflect.deleteProperty(WebSocket, 'ping')\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n  CONNECTING: staticPropertyDescriptors,\n  OPEN: staticPropertyDescriptors,\n  CLOSING: staticPropertyDescriptors,\n  CLOSED: staticPropertyDescriptors,\n  url: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  bufferedAmount: kEnumerableProperty,\n  onopen: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onclose: kEnumerableProperty,\n  close: kEnumerableProperty,\n  onmessage: kEnumerableProperty,\n  binaryType: kEnumerableProperty,\n  send: kEnumerableProperty,\n  extensions: kEnumerableProperty,\n  protocol: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'WebSocket',\n    writable: false,\n    enumerable: false,\n    configurable: true\n  }\n})\n\nObject.defineProperties(WebSocket, {\n  CONNECTING: staticPropertyDescriptors,\n  OPEN: staticPropertyDescriptors,\n  CLOSING: staticPropertyDescriptors,\n  CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence<DOMString>'] = webidl.sequenceConverter(\n  webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence<DOMString>'] = function (V, prefix, argument) {\n  if (webidl.util.Type(V) === webidl.util.Types.OBJECT && Symbol.iterator in V) {\n    return webidl.converters['sequence<DOMString>'](V)\n  }\n\n  return webidl.converters.DOMString(V, prefix, argument)\n}\n\n// This implements the proposal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n  {\n    key: 'protocols',\n    converter: webidl.converters['DOMString or sequence<DOMString>'],\n    defaultValue: () => []\n  },\n  {\n    key: 'dispatcher',\n    converter: webidl.converters.any,\n    defaultValue: () => getGlobalDispatcher()\n  },\n  {\n    key: 'headers',\n    converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n  }\n])\n\nwebidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) {\n  if (webidl.util.Type(V) === webidl.util.Types.OBJECT && !(Symbol.iterator in V)) {\n    return webidl.converters.WebSocketInit(V)\n  }\n\n  return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n  if (webidl.util.Type(V) === webidl.util.Types.OBJECT) {\n    if (webidl.is.Blob(V)) {\n      return V\n    }\n\n    if (webidl.is.BufferSource(V)) {\n      return V\n    }\n  }\n\n  return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n  WebSocket,\n  ping\n}\n","'use strict'\n\nconst { webidl } = require('../../webidl')\nconst { validateCloseCodeAndReason } = require('../util')\nconst { kConstruct } = require('../../../core/symbols')\nconst { kEnumerableProperty } = require('../../../core/util')\n\nfunction createInheritableDOMException () {\n  // https://github.com/nodejs/node/issues/59677\n  class Test extends DOMException {\n    get reason () {\n      return ''\n    }\n  }\n\n  if (new Test().reason !== undefined) {\n    return DOMException\n  }\n\n  return new Proxy(DOMException, {\n    construct (target, args, newTarget) {\n      const instance = Reflect.construct(target, args, target)\n      Object.setPrototypeOf(instance, newTarget.prototype)\n      return instance\n    }\n  })\n}\n\nclass WebSocketError extends createInheritableDOMException() {\n  #closeCode\n  #reason\n\n  constructor (message = '', init = undefined) {\n    message = webidl.converters.DOMString(message, 'WebSocketError', 'message')\n\n    // 1. Set this 's name to \" WebSocketError \".\n    // 2. Set this 's message to message .\n    super(message, 'WebSocketError')\n\n    if (init === kConstruct) {\n      return\n    } else if (init !== null) {\n      init = webidl.converters.WebSocketCloseInfo(init)\n    }\n\n    // 3. Let code be init [\" closeCode \"] if it exists , or null otherwise.\n    let code = init.closeCode ?? null\n\n    // 4. Let reason be init [\" reason \"] if it exists , or the empty string otherwise.\n    const reason = init.reason ?? ''\n\n    // 5. Validate close code and reason with code and reason .\n    validateCloseCodeAndReason(code, reason)\n\n    // 6. If reason is non-empty, but code is not set, then set code to 1000 (\"Normal Closure\").\n    if (reason.length !== 0 && code === null) {\n      code = 1000\n    }\n\n    // 7. Set this 's closeCode to code .\n    this.#closeCode = code\n\n    // 8. Set this 's reason to reason .\n    this.#reason = reason\n  }\n\n  get closeCode () {\n    return this.#closeCode\n  }\n\n  get reason () {\n    return this.#reason\n  }\n\n  /**\n   * @param {string} message\n   * @param {number|null} code\n   * @param {string} reason\n   */\n  static createUnvalidatedWebSocketError (message, code, reason) {\n    const error = new WebSocketError(message, kConstruct)\n    error.#closeCode = code\n    error.#reason = reason\n    return error\n  }\n}\n\nconst { createUnvalidatedWebSocketError } = WebSocketError\ndelete WebSocketError.createUnvalidatedWebSocketError\n\nObject.defineProperties(WebSocketError.prototype, {\n  closeCode: kEnumerableProperty,\n  reason: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'WebSocketError',\n    writable: false,\n    enumerable: false,\n    configurable: true\n  }\n})\n\nwebidl.is.WebSocketError = webidl.util.MakeTypeAssertion(WebSocketError)\n\nmodule.exports = { WebSocketError, createUnvalidatedWebSocketError }\n","'use strict'\n\nconst { createDeferredPromise } = require('../../../util/promise')\nconst { environmentSettingsObject } = require('../../fetch/util')\nconst { states, opcodes, sentCloseFrameState } = require('../constants')\nconst { webidl } = require('../../webidl')\nconst { getURLRecord, isValidSubprotocol, isEstablished, utf8Decode } = require('../util')\nconst { establishWebSocketConnection, failWebsocketConnection, closeWebSocketConnection } = require('../connection')\nconst { channels } = require('../../../core/diagnostics')\nconst { WebsocketFrameSend } = require('../frame')\nconst { ByteParser } = require('../receiver')\nconst { WebSocketError, createUnvalidatedWebSocketError } = require('./websocketerror')\nconst { kEnumerableProperty } = require('../../../core/util')\nconst { utf8DecodeBytes } = require('../../../encoding')\n\nlet emittedExperimentalWarning = false\n\nclass WebSocketStream {\n  // Each WebSocketStream object has an associated url , which is a URL record .\n  /** @type {URL} */\n  #url\n\n  // Each WebSocketStream object has an associated opened promise , which is a promise.\n  /** @type {import('../../../util/promise').DeferredPromise} */\n  #openedPromise\n\n  // Each WebSocketStream object has an associated closed promise , which is a promise.\n  /** @type {import('../../../util/promise').DeferredPromise} */\n  #closedPromise\n\n  // Each WebSocketStream object has an associated readable stream , which is a ReadableStream .\n  /** @type {ReadableStream} */\n  #readableStream\n  /** @type {ReadableStreamDefaultController} */\n  #readableStreamController\n\n  // Each WebSocketStream object has an associated writable stream , which is a WritableStream .\n  /** @type {WritableStream} */\n  #writableStream\n\n  // Each WebSocketStream object has an associated boolean handshake aborted , which is initially false.\n  #handshakeAborted = false\n\n  /** @type {import('../websocket').Handler} */\n  #handler = {\n    // https://whatpr.org/websockets/48/7b748d3...d5570f3.html#feedback-to-websocket-stream-from-the-protocol\n    onConnectionEstablished: (response, extensions) => this.#onConnectionEstablished(response, extensions),\n    onMessage: (opcode, data) => this.#onMessage(opcode, data),\n    onParserError: (err) => failWebsocketConnection(this.#handler, null, err.message),\n    onParserDrain: () => this.#handler.socket.resume(),\n    onSocketData: (chunk) => {\n      if (!this.#parser.write(chunk)) {\n        this.#handler.socket.pause()\n      }\n    },\n    onSocketError: (err) => {\n      this.#handler.readyState = states.CLOSING\n\n      if (channels.socketError.hasSubscribers) {\n        channels.socketError.publish(err)\n      }\n\n      this.#handler.socket.destroy()\n    },\n    onSocketClose: () => this.#onSocketClose(),\n    onPing: () => {},\n    onPong: () => {},\n\n    readyState: states.CONNECTING,\n    socket: null,\n    closeState: new Set(),\n    controller: null,\n    wasEverConnected: false\n  }\n\n  /** @type {import('../receiver').ByteParser} */\n  #parser\n\n  constructor (url, options = undefined) {\n    if (!emittedExperimentalWarning) {\n      process.emitWarning('WebSocketStream is experimental! Expect it to change at any time.', {\n        code: 'UNDICI-WSS'\n      })\n      emittedExperimentalWarning = true\n    }\n\n    webidl.argumentLengthCheck(arguments, 1, 'WebSocket')\n\n    url = webidl.converters.USVString(url)\n    if (options !== null) {\n      options = webidl.converters.WebSocketStreamOptions(options)\n    }\n\n    // 1. Let baseURL be this 's relevant settings object 's API base URL .\n    const baseURL = environmentSettingsObject.settingsObject.baseUrl\n\n    // 2. Let urlRecord be the result of getting a URL record given url and baseURL .\n    const urlRecord = getURLRecord(url, baseURL)\n\n    // 3. Let protocols be options [\" protocols \"] if it exists , otherwise an empty sequence.\n    const protocols = options.protocols\n\n    // 4. If any of the values in protocols occur more than once or otherwise fail to match the requirements for elements that comprise the value of ` Sec-WebSocket-Protocol ` fields as defined by The WebSocket Protocol , then throw a \" SyntaxError \" DOMException . [WSP]\n    if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    // 5. Set this 's url to urlRecord .\n    this.#url = urlRecord.toString()\n\n    // 6. Set this 's opened promise and closed promise to new promises.\n    this.#openedPromise = createDeferredPromise()\n    this.#closedPromise = createDeferredPromise()\n\n    // 7. Apply backpressure to the WebSocket.\n    // TODO\n\n    // 8.  If options [\" signal \"] exists ,\n    if (options.signal != null) {\n      // 8.1. Let signal be options [\" signal \"].\n      const signal = options.signal\n\n      // 8.2. If signal is aborted , then reject this 's opened promise and closed promise with signal ’s abort reason\n      //      and return.\n      if (signal.aborted) {\n        this.#openedPromise.reject(signal.reason)\n        this.#closedPromise.reject(signal.reason)\n        return\n      }\n\n      // 8.3. Add the following abort steps to signal :\n      signal.addEventListener('abort', () => {\n        // 8.3.1. If the WebSocket connection is not yet established : [WSP]\n        if (!isEstablished(this.#handler.readyState)) {\n          // 8.3.1.1. Fail the WebSocket connection .\n          failWebsocketConnection(this.#handler)\n\n          // Set this 's ready state to CLOSING .\n          this.#handler.readyState = states.CLOSING\n\n          // Reject this 's opened promise and closed promise with signal ’s abort reason .\n          this.#openedPromise.reject(signal.reason)\n          this.#closedPromise.reject(signal.reason)\n\n          // Set this 's handshake aborted to true.\n          this.#handshakeAborted = true\n        }\n      }, { once: true })\n    }\n\n    // 9.  Let client be this 's relevant settings object .\n    const client = environmentSettingsObject.settingsObject\n\n    // 10. Run this step in parallel :\n    // 10.1. Establish a WebSocket connection given urlRecord , protocols , and client . [FETCH]\n    this.#handler.controller = establishWebSocketConnection(\n      urlRecord,\n      protocols,\n      client,\n      this.#handler,\n      options\n    )\n  }\n\n  // The url getter steps are to return this 's url , serialized .\n  get url () {\n    return this.#url.toString()\n  }\n\n  // The opened getter steps are to return this 's opened promise .\n  get opened () {\n    return this.#openedPromise.promise\n  }\n\n  // The closed getter steps are to return this 's closed promise .\n  get closed () {\n    return this.#closedPromise.promise\n  }\n\n  // The close( closeInfo ) method steps are:\n  close (closeInfo = undefined) {\n    if (closeInfo !== null) {\n      closeInfo = webidl.converters.WebSocketCloseInfo(closeInfo)\n    }\n\n    // 1. Let code be closeInfo [\" closeCode \"] if present, or null otherwise.\n    const code = closeInfo.closeCode ?? null\n\n    // 2. Let reason be closeInfo [\" reason \"].\n    const reason = closeInfo.reason\n\n    // 3. Close the WebSocket with this , code , and reason .\n    closeWebSocketConnection(this.#handler, code, reason, true)\n  }\n\n  #write (chunk) {\n    // See /websockets/stream/tentative/write.any.html\n    chunk = webidl.converters.WebSocketStreamWrite(chunk)\n\n    // 1. Let promise be a new promise created in stream ’s relevant realm .\n    const promise = createDeferredPromise()\n\n    // 2. Let data be null.\n    let data = null\n\n    // 3. Let opcode be null.\n    let opcode = null\n\n    // 4. If chunk is a BufferSource ,\n    if (webidl.is.BufferSource(chunk)) {\n      // 4.1. Set data to a copy of the bytes given chunk .\n      data = new Uint8Array(ArrayBuffer.isView(chunk) ? new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength) : chunk.slice())\n\n      // 4.2. Set opcode to a binary frame opcode.\n      opcode = opcodes.BINARY\n    } else {\n      // 5. Otherwise,\n\n      // 5.1. Let string be the result of converting chunk to an IDL USVString .\n      //    If this throws an exception, return a promise rejected with the exception.\n      let string\n\n      try {\n        string = webidl.converters.DOMString(chunk)\n      } catch (e) {\n        promise.reject(e)\n        return promise.promise\n      }\n\n      // 5.2. Set data to the result of UTF-8 encoding string .\n      data = new TextEncoder().encode(string)\n\n      // 5.3. Set opcode to a text frame opcode.\n      opcode = opcodes.TEXT\n    }\n\n    // 6. In parallel,\n    // 6.1. Wait until there is sufficient buffer space in stream to send the message.\n\n    // 6.2. If the closing handshake has not yet started , Send a WebSocket Message to stream comprised of data using opcode .\n    if (!this.#handler.closeState.has(sentCloseFrameState.SENT) && !this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {\n      const frame = new WebsocketFrameSend(data)\n\n      this.#handler.socket.write(frame.createFrame(opcode), () => {\n        promise.resolve(undefined)\n      })\n    }\n\n    // 6.3. Queue a global task on the WebSocket task source given stream ’s relevant global object to resolve promise with undefined.\n    return promise.promise\n  }\n\n  /** @type {import('../websocket').Handler['onConnectionEstablished']} */\n  #onConnectionEstablished (response, parsedExtensions) {\n    this.#handler.socket = response.socket\n\n    // Get options from dispatcher options\n    const maxFragments = this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments\n    const maxPayloadSize = this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize\n\n    const parser = new ByteParser(this.#handler, parsedExtensions, {\n      maxFragments,\n      maxPayloadSize\n    })\n    parser.on('drain', () => this.#handler.onParserDrain())\n    parser.on('error', (err) => this.#handler.onParserError(err))\n\n    this.#parser = parser\n\n    // 1. Change stream ’s ready state to OPEN (1).\n    this.#handler.readyState = states.OPEN\n\n    // 2. Set stream ’s was ever connected to true.\n    // This is done in the opening handshake.\n\n    // 3. Let extensions be the extensions in use .\n    const extensions = parsedExtensions ?? ''\n\n    // 4. Let protocol be the subprotocol in use .\n    const protocol = response.headersList.get('sec-websocket-protocol') ?? ''\n\n    // 5. Let pullAlgorithm be an action that pulls bytes from stream .\n    // 6. Let cancelAlgorithm be an action that cancels stream with reason , given reason .\n    // 7. Let readable be a new ReadableStream .\n    // 8. Set up readable with pullAlgorithm and cancelAlgorithm .\n    const readable = new ReadableStream({\n      start: (controller) => {\n        this.#readableStreamController = controller\n      },\n      cancel: (reason) => this.#cancel(reason)\n    })\n\n    // 9. Let writeAlgorithm be an action that writes chunk to stream , given chunk .\n    // 10. Let closeAlgorithm be an action that closes stream .\n    // 11. Let abortAlgorithm be an action that aborts stream with reason , given reason .\n    // 12. Let writable be a new WritableStream .\n    // 13. Set up writable with writeAlgorithm , closeAlgorithm , and abortAlgorithm .\n    const writable = new WritableStream({\n      write: (chunk) => this.#write(chunk),\n      close: () => closeWebSocketConnection(this.#handler, null, null),\n      abort: (reason) => this.#closeUsingReason(reason)\n    })\n\n    // Set stream ’s readable stream to readable .\n    this.#readableStream = readable\n\n    // Set stream ’s writable stream to writable .\n    this.#writableStream = writable\n\n    // Resolve stream ’s opened promise with WebSocketOpenInfo «[ \" extensions \" → extensions , \" protocol \" → protocol , \" readable \" → readable , \" writable \" → writable ]».\n    this.#openedPromise.resolve({\n      extensions,\n      protocol,\n      readable,\n      writable\n    })\n  }\n\n  /** @type {import('../websocket').Handler['onMessage']} */\n  #onMessage (type, data) {\n    // 1. If stream’s ready state is not OPEN (1), then return.\n    if (this.#handler.readyState !== states.OPEN) {\n      return\n    }\n\n    // 2. Let chunk be determined by switching on type:\n    //      - type indicates that the data is Text\n    //          a new DOMString containing data\n    //      - type indicates that the data is Binary\n    //          a new Uint8Array object, created in the relevant Realm of the\n    //          WebSocketStream object, whose contents are data\n    let chunk\n\n    if (type === opcodes.TEXT) {\n      try {\n        chunk = utf8Decode(data)\n      } catch {\n        failWebsocketConnection(this.#handler, 1007, 'Received invalid UTF-8 in text frame.')\n        return\n      }\n    } else if (type === opcodes.BINARY) {\n      chunk = new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n    }\n\n    // 3. Enqueue chunk into stream’s readable stream.\n    this.#readableStreamController.enqueue(chunk)\n\n    // 4. Apply backpressure to the WebSocket.\n  }\n\n  /** @type {import('../websocket').Handler['onSocketClose']} */\n  #onSocketClose () {\n    const wasClean =\n      this.#handler.closeState.has(sentCloseFrameState.SENT) &&\n      this.#handler.closeState.has(sentCloseFrameState.RECEIVED)\n\n    // 1. Change the ready state to CLOSED (3).\n    this.#handler.readyState = states.CLOSED\n\n    // 2. If stream ’s handshake aborted is true, then return.\n    if (this.#handshakeAborted) {\n      return\n    }\n\n    // 3. If stream ’s was ever connected is false, then reject stream ’s opened promise with a new WebSocketError.\n    if (!this.#handler.wasEverConnected) {\n      this.#openedPromise.reject(new WebSocketError('Socket never opened'))\n    }\n\n    const result = this.#parser?.closingInfo\n\n    // 4. Let code be the WebSocket connection close code .\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n    // If this Close control frame contains no status code, _The WebSocket\n    // Connection Close Code_ is considered to be 1005. If _The WebSocket\n    // Connection is Closed_ and no Close control frame was received by the\n    // endpoint (such as could occur if the underlying transport connection\n    // is lost), _The WebSocket Connection Close Code_ is considered to be\n    // 1006.\n    let code = result?.code ?? 1005\n\n    if (!this.#handler.closeState.has(sentCloseFrameState.SENT) && !this.#handler.closeState.has(sentCloseFrameState.RECEIVED)) {\n      code = 1006\n    }\n\n    // 5. Let reason be the result of applying UTF-8 decode without BOM to the WebSocket connection close reason .\n    const reason = result?.reason == null ? '' : utf8DecodeBytes(Buffer.from(result.reason))\n\n    // 6. If the connection was closed cleanly ,\n    if (wasClean) {\n      // 6.1. Close stream ’s readable stream .\n      this.#readableStreamController.close()\n\n      // 6.2. Error stream ’s writable stream with an \" InvalidStateError \" DOMException indicating that a closed WebSocketStream cannot be written to.\n      if (!this.#writableStream.locked) {\n        this.#writableStream.abort(new DOMException('A closed WebSocketStream cannot be written to', 'InvalidStateError'))\n      }\n\n      // 6.3. Resolve stream ’s closed promise with WebSocketCloseInfo «[ \" closeCode \" → code , \" reason \" → reason ]».\n      this.#closedPromise.resolve({\n        closeCode: code,\n        reason\n      })\n    } else {\n      // 7. Otherwise,\n\n      // 7.1. Let error be a new WebSocketError whose closeCode is code and reason is reason .\n      const error = createUnvalidatedWebSocketError('unclean close', code, reason)\n\n      // 7.2. Error stream ’s readable stream with error .\n      this.#readableStreamController?.error(error)\n\n      // 7.3. Error stream ’s writable stream with error .\n      this.#writableStream?.abort(error)\n\n      // 7.4. Reject stream ’s closed promise with error .\n      this.#closedPromise.reject(error)\n    }\n  }\n\n  #closeUsingReason (reason) {\n    // 1. Let code be null.\n    let code = null\n\n    // 2. Let reasonString be the empty string.\n    let reasonString = ''\n\n    // 3. If reason implements WebSocketError ,\n    if (webidl.is.WebSocketError(reason)) {\n      // 3.1. Set code to reason ’s closeCode .\n      code = reason.closeCode\n\n      // 3.2. Set reasonString to reason ’s reason .\n      reasonString = reason.reason\n    }\n\n    // 4. Close the WebSocket with stream , code , and reasonString . If this throws an exception,\n    //    discard code and reasonString and close the WebSocket with stream .\n    closeWebSocketConnection(this.#handler, code, reasonString)\n  }\n\n  //  To cancel a WebSocketStream stream given reason , close using reason giving stream and reason .\n  #cancel (reason) {\n    this.#closeUsingReason(reason)\n  }\n}\n\nObject.defineProperties(WebSocketStream.prototype, {\n  url: kEnumerableProperty,\n  opened: kEnumerableProperty,\n  closed: kEnumerableProperty,\n  close: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'WebSocketStream',\n    writable: false,\n    enumerable: false,\n    configurable: true\n  }\n})\n\nwebidl.converters.WebSocketStreamOptions = webidl.dictionaryConverter([\n  {\n    key: 'protocols',\n    converter: webidl.sequenceConverter(webidl.converters.USVString),\n    defaultValue: () => []\n  },\n  {\n    key: 'signal',\n    converter: webidl.nullableConverter(webidl.converters.AbortSignal),\n    defaultValue: () => null\n  }\n])\n\nwebidl.converters.WebSocketCloseInfo = webidl.dictionaryConverter([\n  {\n    key: 'closeCode',\n    converter: (V) => webidl.converters['unsigned short'](V, webidl.attributes.EnforceRange)\n  },\n  {\n    key: 'reason',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  }\n])\n\nwebidl.converters.WebSocketStreamWrite = function (V) {\n  if (typeof V === 'string') {\n    return webidl.converters.USVString(V)\n  }\n\n  return webidl.converters.BufferSource(V)\n}\n\nmodule.exports = { WebSocketStream }\n","'use strict'\n\n/**\n * Checks if the given value is a valid LastEventId.\n * @param {string} value\n * @returns {boolean}\n */\nfunction isValidLastEventId (value) {\n  // LastEventId should not contain U+0000 NULL\n  return value.indexOf('\\u0000') === -1\n}\n\n/**\n * Checks if the given value is a base 10 digit.\n * @param {string} value\n * @returns {boolean}\n */\nfunction isASCIINumber (value) {\n  if (value.length === 0) return false\n  for (let i = 0; i < value.length; i++) {\n    if (value.charCodeAt(i) < 0x30 || value.charCodeAt(i) > 0x39) return false\n  }\n  return true\n}\n\nmodule.exports = {\n  isValidLastEventId,\n  isASCIINumber\n}\n","'use strict'\nconst { Transform } = require('node:stream')\nconst { isASCIINumber, isValidLastEventId } = require('./util')\n\n/**\n * @type {number[]} BOM\n */\nconst BOM = [0xEF, 0xBB, 0xBF]\n/**\n * @type {10} LF\n */\nconst LF = 0x0A\n/**\n * @type {13} CR\n */\nconst CR = 0x0D\n/**\n * @type {58} COLON\n */\nconst COLON = 0x3A\n/**\n * @type {32} SPACE\n */\nconst SPACE = 0x20\n\n/**\n * @typedef {object} EventSourceStreamEvent\n * @type {object}\n * @property {string} [event] The event type.\n * @property {string} [data] The data of the message.\n * @property {string} [id] A unique ID for the event.\n * @property {string} [retry] The reconnection time, in milliseconds.\n */\n\n/**\n * @typedef eventSourceSettings\n * @type {object}\n * @property {string} [lastEventId] The last event ID received from the server.\n * @property {string} [origin] The origin of the event source.\n * @property {number} [reconnectionTime] The reconnection time, in milliseconds.\n */\n\nclass EventSourceStream extends Transform {\n  /**\n   * @type {eventSourceSettings}\n   */\n  state\n\n  /**\n   * Leading byte-order-mark check.\n   * @type {boolean}\n   */\n  checkBOM = true\n\n  /**\n   * @type {boolean}\n   */\n  crlfCheck = false\n\n  /**\n   * @type {boolean}\n   */\n  eventEndCheck = false\n\n  /**\n   * @type {Buffer|null}\n   */\n  buffer = null\n\n  pos = 0\n\n  event = {\n    data: undefined,\n    event: undefined,\n    id: undefined,\n    retry: undefined\n  }\n\n  /**\n   * @param {object} options\n   * @param {boolean} [options.readableObjectMode]\n   * @param {eventSourceSettings} [options.eventSourceSettings]\n   * @param {(chunk: any, encoding?: BufferEncoding | undefined) => boolean} [options.push]\n   */\n  constructor (options = {}) {\n    // Enable object mode as EventSourceStream emits objects of shape\n    // EventSourceStreamEvent\n    options.readableObjectMode = true\n\n    super(options)\n\n    this.state = options.eventSourceSettings || {}\n    if (options.push) {\n      this.push = options.push\n    }\n  }\n\n  /**\n   * @param {Buffer} chunk\n   * @param {string} _encoding\n   * @param {Function} callback\n   * @returns {void}\n   */\n  _transform (chunk, _encoding, callback) {\n    if (chunk.length === 0) {\n      callback()\n      return\n    }\n\n    // Cache the chunk in the buffer, as the data might not be complete while\n    // processing it\n    // TODO: Investigate if there is a more performant way to handle\n    // incoming chunks\n    // see: https://github.com/nodejs/undici/issues/2630\n    if (this.buffer) {\n      this.buffer = Buffer.concat([this.buffer, chunk])\n    } else {\n      this.buffer = chunk\n    }\n\n    // Strip leading byte-order-mark if we opened the stream and started\n    // the processing of the incoming data\n    if (this.checkBOM) {\n      switch (this.buffer.length) {\n        case 1:\n          // Check if the first byte is the same as the first byte of the BOM\n          if (this.buffer[0] === BOM[0]) {\n            // If it is, we need to wait for more data\n            callback()\n            return\n          }\n          // Set the checkBOM flag to false as we don't need to check for the\n          // BOM anymore\n          this.checkBOM = false\n\n          // The buffer only contains one byte so we need to wait for more data\n          callback()\n          return\n        case 2:\n          // Check if the first two bytes are the same as the first two bytes\n          // of the BOM\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1]\n          ) {\n            // If it is, we need to wait for more data, because the third byte\n            // is needed to determine if it is the BOM or not\n            callback()\n            return\n          }\n\n          // Set the checkBOM flag to false as we don't need to check for the\n          // BOM anymore\n          this.checkBOM = false\n          break\n        case 3:\n          // Check if the first three bytes are the same as the first three\n          // bytes of the BOM\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1] &&\n            this.buffer[2] === BOM[2]\n          ) {\n            // If it is, we can drop the buffered data, as it is only the BOM\n            this.buffer = Buffer.alloc(0)\n            // Set the checkBOM flag to false as we don't need to check for the\n            // BOM anymore\n            this.checkBOM = false\n\n            // Await more data\n            callback()\n            return\n          }\n          // If it is not the BOM, we can start processing the data\n          this.checkBOM = false\n          break\n        default:\n          // The buffer is longer than 3 bytes, so we can drop the BOM if it is\n          // present\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1] &&\n            this.buffer[2] === BOM[2]\n          ) {\n            // Remove the BOM from the buffer\n            this.buffer = this.buffer.subarray(3)\n          }\n\n          // Set the checkBOM flag to false as we don't need to check for the\n          this.checkBOM = false\n          break\n      }\n    }\n\n    while (this.pos < this.buffer.length) {\n      // If the previous line ended with an end-of-line, we need to check\n      // if the next character is also an end-of-line.\n      if (this.eventEndCheck) {\n        // If the the current character is an end-of-line, then the event\n        // is finished and we can process it\n\n        // If the previous line ended with a carriage return, we need to\n        // check if the current character is a line feed and remove it\n        // from the buffer.\n        if (this.crlfCheck) {\n          // If the current character is a line feed, we can remove it\n          // from the buffer and reset the crlfCheck flag\n          if (this.buffer[this.pos] === LF) {\n            this.buffer = this.buffer.subarray(this.pos + 1)\n            this.pos = 0\n            this.crlfCheck = false\n\n            // It is possible that the line feed is not the end of the\n            // event. We need to check if the next character is an\n            // end-of-line character to determine if the event is\n            // finished. We simply continue the loop to check the next\n            // character.\n\n            // As we removed the line feed from the buffer and set the\n            // crlfCheck flag to false, we basically don't make any\n            // distinction between a line feed and a carriage return.\n            continue\n          }\n          this.crlfCheck = false\n        }\n\n        if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n          // If the current character is a carriage return, we need to\n          // set the crlfCheck flag to true, as we need to check if the\n          // next character is a line feed so we can remove it from the\n          // buffer\n          if (this.buffer[this.pos] === CR) {\n            this.crlfCheck = true\n          }\n\n          this.buffer = this.buffer.subarray(this.pos + 1)\n          this.pos = 0\n          if (\n            this.event.data !== undefined || this.event.event || this.event.id !== undefined || this.event.retry) {\n            this.processEvent(this.event)\n          }\n          this.clearEvent()\n          continue\n        }\n        // If the current character is not an end-of-line, then the event\n        // is not finished and we have to reset the eventEndCheck flag\n        this.eventEndCheck = false\n        continue\n      }\n\n      // If the current character is an end-of-line, we can process the\n      // line\n      if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n        // If the current character is a carriage return, we need to\n        // set the crlfCheck flag to true, as we need to check if the\n        // next character is a line feed\n        if (this.buffer[this.pos] === CR) {\n          this.crlfCheck = true\n        }\n\n        // In any case, we can process the line as we reached an\n        // end-of-line character\n        this.parseLine(this.buffer.subarray(0, this.pos), this.event)\n\n        // Remove the processed line from the buffer\n        this.buffer = this.buffer.subarray(this.pos + 1)\n        // Reset the position as we removed the processed line from the buffer\n        this.pos = 0\n        // A line was processed and this could be the end of the event. We need\n        // to check if the next line is empty to determine if the event is\n        // finished.\n        this.eventEndCheck = true\n        continue\n      }\n\n      this.pos++\n    }\n\n    callback()\n  }\n\n  /**\n   * @param {Buffer} line\n   * @param {EventSourceStreamEvent} event\n   */\n  parseLine (line, event) {\n    // If the line is empty (a blank line)\n    // Dispatch the event, as defined below.\n    // This will be handled in the _transform method\n    if (line.length === 0) {\n      return\n    }\n\n    // If the line starts with a U+003A COLON character (:)\n    // Ignore the line.\n    const colonPosition = line.indexOf(COLON)\n    if (colonPosition === 0) {\n      return\n    }\n\n    let field = ''\n    let value = ''\n\n    // If the line contains a U+003A COLON character (:)\n    if (colonPosition !== -1) {\n      // Collect the characters on the line before the first U+003A COLON\n      // character (:), and let field be that string.\n      // TODO: Investigate if there is a more performant way to extract the\n      // field\n      // see: https://github.com/nodejs/undici/issues/2630\n      field = line.subarray(0, colonPosition).toString('utf8')\n\n      // Collect the characters on the line after the first U+003A COLON\n      // character (:), and let value be that string.\n      // If value starts with a U+0020 SPACE character, remove it from value.\n      let valueStart = colonPosition + 1\n      if (line[valueStart] === SPACE) {\n        ++valueStart\n      }\n      // TODO: Investigate if there is a more performant way to extract the\n      // value\n      // see: https://github.com/nodejs/undici/issues/2630\n      value = line.subarray(valueStart).toString('utf8')\n\n      // Otherwise, the string is not empty but does not contain a U+003A COLON\n      // character (:)\n    } else {\n      // Process the field using the steps described below, using the whole\n      // line as the field name, and the empty string as the field value.\n      field = line.toString('utf8')\n      value = ''\n    }\n\n    // Modify the event with the field name and value. The value is also\n    // decoded as UTF-8\n    switch (field) {\n      case 'data':\n        if (event[field] === undefined) {\n          event[field] = value\n        } else {\n          event[field] += `\\n${value}`\n        }\n        break\n      case 'retry':\n        if (isASCIINumber(value)) {\n          event[field] = value\n        }\n        break\n      case 'id':\n        if (isValidLastEventId(value)) {\n          event[field] = value\n        }\n        break\n      case 'event':\n        if (value.length > 0) {\n          event[field] = value\n        }\n        break\n    }\n  }\n\n  /**\n   * @param {EventSourceStreamEvent} event\n   */\n  processEvent (event) {\n    if (event.retry && isASCIINumber(event.retry)) {\n      this.state.reconnectionTime = parseInt(event.retry, 10)\n    }\n\n    if (event.id !== undefined && isValidLastEventId(event.id)) {\n      this.state.lastEventId = event.id\n    }\n\n    // only dispatch event, when data is provided\n    if (event.data !== undefined) {\n      this.push({\n        type: event.event || 'message',\n        options: {\n          data: event.data,\n          lastEventId: this.state.lastEventId,\n          origin: this.state.origin\n        }\n      })\n    }\n  }\n\n  clearEvent () {\n    this.event = {\n      data: undefined,\n      event: undefined,\n      id: undefined,\n      retry: undefined\n    }\n  }\n}\n\nmodule.exports = {\n  EventSourceStream\n}\n","'use strict'\n\nconst { pipeline } = require('node:stream')\nconst { fetching } = require('../fetch')\nconst { makeRequest } = require('../fetch/request')\nconst { webidl } = require('../webidl')\nconst { EventSourceStream } = require('./eventsource-stream')\nconst { parseMIMEType } = require('../fetch/data-url')\nconst { createFastMessageEvent } = require('../websocket/events')\nconst { isNetworkError } = require('../fetch/response')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { environmentSettingsObject } = require('../fetch/util')\n\nlet experimentalWarned = false\n\n/**\n * A reconnection time, in milliseconds. This must initially be an implementation-defined value,\n * probably in the region of a few seconds.\n *\n * In Comparison:\n * - Chrome uses 3000ms.\n * - Deno uses 5000ms.\n *\n * @type {3000}\n */\nconst defaultReconnectionTime = 3000\n\n/**\n * The readyState attribute represents the state of the connection.\n * @typedef ReadyState\n * @type {0|1|2}\n * @readonly\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsource-readystate-dev\n */\n\n/**\n * The connection has not yet been established, or it was closed and the user\n * agent is reconnecting.\n * @type {0}\n */\nconst CONNECTING = 0\n\n/**\n * The user agent has an open connection and is dispatching events as it\n * receives them.\n * @type {1}\n */\nconst OPEN = 1\n\n/**\n * The connection is not open, and the user agent is not trying to reconnect.\n * @type {2}\n */\nconst CLOSED = 2\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"same-origin\".\n * @type {'anonymous'}\n */\nconst ANONYMOUS = 'anonymous'\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"include\".\n * @type {'use-credentials'}\n */\nconst USE_CREDENTIALS = 'use-credentials'\n\n/**\n * The EventSource interface is used to receive server-sent events. It\n * connects to a server over HTTP and receives events in text/event-stream\n * format without closing the connection.\n * @extends {EventTarget}\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events\n * @api public\n */\nclass EventSource extends EventTarget {\n  #events = {\n    open: null,\n    error: null,\n    message: null\n  }\n\n  #url\n  #withCredentials = false\n\n  /**\n   * @type {ReadyState}\n   */\n  #readyState = CONNECTING\n\n  #request = null\n  #controller = null\n\n  #dispatcher\n\n  /**\n   * @type {import('./eventsource-stream').eventSourceSettings}\n   */\n  #state\n\n  /**\n   * Creates a new EventSource object.\n   * @param {string} url\n   * @param {EventSourceInit} [eventSourceInitDict={}]\n   * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface\n   */\n  constructor (url, eventSourceInitDict = {}) {\n    // 1. Let ev be a new EventSource object.\n    super()\n\n    webidl.util.markAsUncloneable(this)\n\n    const prefix = 'EventSource constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    if (!experimentalWarned) {\n      experimentalWarned = true\n      process.emitWarning('EventSource is experimental, expect them to change at any time.', {\n        code: 'UNDICI-ES'\n      })\n    }\n\n    url = webidl.converters.USVString(url)\n    eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict')\n\n    this.#dispatcher = eventSourceInitDict.node.dispatcher || eventSourceInitDict.dispatcher\n    this.#state = {\n      lastEventId: '',\n      reconnectionTime: eventSourceInitDict.node.reconnectionTime\n    }\n\n    // 2. Let settings be ev's relevant settings object.\n    // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n    const settings = environmentSettingsObject\n\n    let urlRecord\n\n    try {\n      // 3. Let urlRecord be the result of encoding-parsing a URL given url, relative to settings.\n      urlRecord = new URL(url, settings.settingsObject.baseUrl)\n      this.#state.origin = urlRecord.origin\n    } catch (e) {\n      // 4. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n      throw new DOMException(e, 'SyntaxError')\n    }\n\n    // 5. Set ev's url to urlRecord.\n    this.#url = urlRecord.href\n\n    // 6. Let corsAttributeState be Anonymous.\n    let corsAttributeState = ANONYMOUS\n\n    // 7. If the value of eventSourceInitDict's withCredentials member is true,\n    // then set corsAttributeState to Use Credentials and set ev's\n    // withCredentials attribute to true.\n    if (eventSourceInitDict.withCredentials === true) {\n      corsAttributeState = USE_CREDENTIALS\n      this.#withCredentials = true\n    }\n\n    // 8. Let request be the result of creating a potential-CORS request given\n    // urlRecord, the empty string, and corsAttributeState.\n    const initRequest = {\n      redirect: 'follow',\n      keepalive: true,\n      // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n      mode: 'cors',\n      credentials: corsAttributeState === 'anonymous'\n        ? 'same-origin'\n        : 'omit',\n      referrer: 'no-referrer'\n    }\n\n    // 9. Set request's client to settings.\n    initRequest.client = environmentSettingsObject.settingsObject\n\n    // 10. User agents may set (`Accept`, `text/event-stream`) in request's header list.\n    initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]]\n\n    // 11. Set request's cache mode to \"no-store\".\n    initRequest.cache = 'no-store'\n\n    // 12. Set request's initiator type to \"other\".\n    initRequest.initiator = 'other'\n\n    initRequest.urlList = [new URL(this.#url)]\n\n    // 13. Set ev's request to request.\n    this.#request = makeRequest(initRequest)\n\n    this.#connect()\n  }\n\n  /**\n   * Returns the state of this EventSource object's connection. It can have the\n   * values described below.\n   * @returns {ReadyState}\n   * @readonly\n   */\n  get readyState () {\n    return this.#readyState\n  }\n\n  /**\n   * Returns the URL providing the event stream.\n   * @readonly\n   * @returns {string}\n   */\n  get url () {\n    return this.#url\n  }\n\n  /**\n   * Returns a boolean indicating whether the EventSource object was\n   * instantiated with CORS credentials set (true), or not (false, the default).\n   */\n  get withCredentials () {\n    return this.#withCredentials\n  }\n\n  #connect () {\n    if (this.#readyState === CLOSED) return\n\n    this.#readyState = CONNECTING\n\n    const fetchParams = {\n      request: this.#request,\n      dispatcher: this.#dispatcher\n    }\n\n    // 14. Let processEventSourceEndOfBody given response res be the following step: if res is not a network error, then reestablish the connection.\n    const processEventSourceEndOfBody = (response) => {\n      if (!isNetworkError(response)) {\n        return this.#reconnect()\n      }\n    }\n\n    // 15. Fetch request, with processResponseEndOfBody set to processEventSourceEndOfBody...\n    fetchParams.processResponseEndOfBody = processEventSourceEndOfBody\n\n    // and processResponse set to the following steps given response res:\n    fetchParams.processResponse = (response) => {\n      // 1. If res is an aborted network error, then fail the connection.\n\n      if (isNetworkError(response)) {\n        // 1. When a user agent is to fail the connection, the user agent\n        // must queue a task which, if the readyState attribute is set to a\n        // value other than CLOSED, sets the readyState attribute to CLOSED\n        // and fires an event named error at the EventSource object. Once the\n        // user agent has failed the connection, it does not attempt to\n        // reconnect.\n        if (response.aborted) {\n          this.close()\n          this.dispatchEvent(new Event('error'))\n          return\n          // 2. Otherwise, if res is a network error, then reestablish the\n          // connection, unless the user agent knows that to be futile, in\n          // which case the user agent may fail the connection.\n        } else {\n          this.#reconnect()\n          return\n        }\n      }\n\n      // 3. Otherwise, if res's status is not 200, or if res's `Content-Type`\n      // is not `text/event-stream`, then fail the connection.\n      const contentType = response.headersList.get('content-type', true)\n      const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure'\n      const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream'\n      if (\n        response.status !== 200 ||\n        contentTypeValid === false\n      ) {\n        this.close()\n        this.dispatchEvent(new Event('error'))\n        return\n      }\n\n      // 4. Otherwise, announce the connection and interpret res's body\n      // line by line.\n\n      // When a user agent is to announce the connection, the user agent\n      // must queue a task which, if the readyState attribute is set to a\n      // value other than CLOSED, sets the readyState attribute to OPEN\n      // and fires an event named open at the EventSource object.\n      // @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n      this.#readyState = OPEN\n      this.dispatchEvent(new Event('open'))\n\n      // If redirected to a different origin, set the origin to the new origin.\n      this.#state.origin = response.urlList[response.urlList.length - 1].origin\n\n      const eventSourceStream = new EventSourceStream({\n        eventSourceSettings: this.#state,\n        push: (event) => {\n          this.dispatchEvent(createFastMessageEvent(\n            event.type,\n            event.options\n          ))\n        }\n      })\n\n      pipeline(response.body.stream,\n        eventSourceStream,\n        (error) => {\n          if (\n            error?.aborted === false\n          ) {\n            this.close()\n            this.dispatchEvent(new Event('error'))\n          }\n        })\n    }\n\n    this.#controller = fetching(fetchParams)\n  }\n\n  /**\n   * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n   * @returns {void}\n   */\n  #reconnect () {\n    // When a user agent is to reestablish the connection, the user agent must\n    // run the following steps. These steps are run in parallel, not as part of\n    // a task. (The tasks that it queues, of course, are run like normal tasks\n    // and not themselves in parallel.)\n\n    // 1. Queue a task to run the following steps:\n\n    //   1. If the readyState attribute is set to CLOSED, abort the task.\n    if (this.#readyState === CLOSED) return\n\n    //   2. Set the readyState attribute to CONNECTING.\n    this.#readyState = CONNECTING\n\n    //   3. Fire an event named error at the EventSource object.\n    this.dispatchEvent(new Event('error'))\n\n    // 2. Wait a delay equal to the reconnection time of the event source.\n    setTimeout(() => {\n      // 5. Queue a task to run the following steps:\n\n      //   1. If the EventSource object's readyState attribute is not set to\n      //      CONNECTING, then return.\n      if (this.#readyState !== CONNECTING) return\n\n      //   2. Let request be the EventSource object's request.\n      //   3. If the EventSource object's last event ID string is not the empty\n      //      string, then:\n      //      1. Let lastEventIDValue be the EventSource object's last event ID\n      //         string, encoded as UTF-8.\n      //      2. Set (`Last-Event-ID`, lastEventIDValue) in request's header\n      //         list.\n      if (this.#state.lastEventId.length) {\n        this.#request.headersList.set('last-event-id', this.#state.lastEventId, true)\n      }\n\n      //   4. Fetch request and process the response obtained in this fashion, if any, as described earlier in this section.\n      this.#connect()\n    }, this.#state.reconnectionTime)?.unref()\n  }\n\n  /**\n   * Closes the connection, if any, and sets the readyState attribute to\n   * CLOSED.\n   */\n  close () {\n    webidl.brandCheck(this, EventSource)\n\n    if (this.#readyState === CLOSED) return\n    this.#readyState = CLOSED\n    this.#controller.abort()\n    this.#request = null\n  }\n\n  get onopen () {\n    return this.#events.open\n  }\n\n  set onopen (fn) {\n    if (this.#events.open) {\n      this.removeEventListener('open', this.#events.open)\n    }\n\n    const listener = webidl.converters.EventHandlerNonNull(fn)\n\n    if (listener !== null) {\n      this.addEventListener('open', listener)\n      this.#events.open = fn\n    } else {\n      this.#events.open = null\n    }\n  }\n\n  get onmessage () {\n    return this.#events.message\n  }\n\n  set onmessage (fn) {\n    if (this.#events.message) {\n      this.removeEventListener('message', this.#events.message)\n    }\n\n    const listener = webidl.converters.EventHandlerNonNull(fn)\n\n    if (listener !== null) {\n      this.addEventListener('message', listener)\n      this.#events.message = fn\n    } else {\n      this.#events.message = null\n    }\n  }\n\n  get onerror () {\n    return this.#events.error\n  }\n\n  set onerror (fn) {\n    if (this.#events.error) {\n      this.removeEventListener('error', this.#events.error)\n    }\n\n    const listener = webidl.converters.EventHandlerNonNull(fn)\n\n    if (listener !== null) {\n      this.addEventListener('error', listener)\n      this.#events.error = fn\n    } else {\n      this.#events.error = null\n    }\n  }\n}\n\nconst constantsPropertyDescriptors = {\n  CONNECTING: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: CONNECTING,\n    writable: false\n  },\n  OPEN: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: OPEN,\n    writable: false\n  },\n  CLOSED: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: CLOSED,\n    writable: false\n  }\n}\n\nObject.defineProperties(EventSource, constantsPropertyDescriptors)\nObject.defineProperties(EventSource.prototype, constantsPropertyDescriptors)\n\nObject.defineProperties(EventSource.prototype, {\n  close: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onmessage: kEnumerableProperty,\n  onopen: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  url: kEnumerableProperty,\n  withCredentials: kEnumerableProperty\n})\n\nwebidl.converters.EventSourceInitDict = webidl.dictionaryConverter([\n  {\n    key: 'withCredentials',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'dispatcher', // undici only\n    converter: webidl.converters.any\n  },\n  {\n    key: 'node', // undici only\n    converter: webidl.dictionaryConverter([\n      {\n        key: 'reconnectionTime',\n        converter: webidl.converters['unsigned long'],\n        defaultValue: () => defaultReconnectionTime\n      },\n      {\n        key: 'dispatcher',\n        converter: webidl.converters.any\n      }\n    ]),\n    defaultValue: () => ({})\n  }\n])\n\nmodule.exports = {\n  EventSource,\n  defaultReconnectionTime\n}\n","'use strict'\n\nconst Client = require('./lib/dispatcher/client')\nconst Dispatcher = require('./lib/dispatcher/dispatcher')\nconst Pool = require('./lib/dispatcher/pool')\nconst BalancedPool = require('./lib/dispatcher/balanced-pool')\nconst RoundRobinPool = require('./lib/dispatcher/round-robin-pool')\nconst Agent = require('./lib/dispatcher/agent')\nconst ProxyAgent = require('./lib/dispatcher/proxy-agent')\nconst Socks5ProxyAgent = require('./lib/dispatcher/socks5-proxy-agent')\nconst EnvHttpProxyAgent = require('./lib/dispatcher/env-http-proxy-agent')\nconst RetryAgent = require('./lib/dispatcher/retry-agent')\nconst H2CClient = require('./lib/dispatcher/h2c-client')\nconst errors = require('./lib/core/errors')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst { MockCallHistory, MockCallHistoryLog } = require('./lib/mock/mock-call-history')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst SnapshotAgent = require('./lib/mock/snapshot-agent')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst RetryHandler = require('./lib/handler/retry-handler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/decorator-handler')\nconst RedirectHandler = require('./lib/handler/redirect-handler')\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.RoundRobinPool = RoundRobinPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.Socks5ProxyAgent = Socks5ProxyAgent\nmodule.exports.EnvHttpProxyAgent = EnvHttpProxyAgent\nmodule.exports.RetryAgent = RetryAgent\nmodule.exports.H2CClient = H2CClient\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.interceptors = {\n  redirect: require('./lib/interceptor/redirect'),\n  responseError: require('./lib/interceptor/response-error'),\n  retry: require('./lib/interceptor/retry'),\n  dump: require('./lib/interceptor/dump'),\n  dns: require('./lib/interceptor/dns'),\n  cache: require('./lib/interceptor/cache'),\n  decompress: require('./lib/interceptor/decompress'),\n  deduplicate: require('./lib/interceptor/deduplicate')\n}\n\nmodule.exports.cacheStores = {\n  MemoryCacheStore: require('./lib/cache/memory-cache-store')\n}\n\nconst SqliteCacheStore = require('./lib/cache/sqlite-cache-store')\nmodule.exports.cacheStores.SqliteCacheStore = SqliteCacheStore\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\nmodule.exports.util = {\n  parseHeaders: util.parseHeaders,\n  headerNameToString: util.headerNameToString\n}\n\nfunction makeDispatcher (fn) {\n  return (url, opts, handler) => {\n    if (typeof opts === 'function') {\n      handler = opts\n      opts = null\n    }\n\n    if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n      throw new InvalidArgumentError('invalid url')\n    }\n\n    if (opts != null && typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (opts && opts.path != null) {\n      if (typeof opts.path !== 'string') {\n        throw new InvalidArgumentError('invalid opts.path')\n      }\n\n      let path = opts.path\n      if (!opts.path.startsWith('/')) {\n        path = `/${path}`\n      }\n\n      url = new URL(util.parseOrigin(url).origin + path)\n    } else {\n      if (!opts) {\n        opts = typeof url === 'object' ? url : {}\n      }\n\n      url = util.parseURL(url)\n    }\n\n    const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n    if (agent) {\n      throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n    }\n\n    return fn.call(dispatcher, {\n      ...opts,\n      origin: url.origin,\n      path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n      method: opts.method || (opts.body ? 'PUT' : 'GET')\n    }, handler)\n  }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nconst fetchImpl = require('./lib/web/fetch').fetch\n\n// Capture __filename at module load time for stack trace augmentation.\n// This may be undefined when bundled in environments like Node.js internals.\nconst currentFilename = typeof __filename !== 'undefined' ? __filename : undefined\n\nfunction appendFetchStackTrace (err, filename) {\n  if (!err || typeof err !== 'object') {\n    return\n  }\n\n  const stack = typeof err.stack === 'string' ? err.stack : ''\n  const normalizedFilename = filename.replace(/\\\\/g, '/')\n\n  if (stack && (stack.includes(filename) || stack.includes(normalizedFilename))) {\n    return\n  }\n\n  const capture = {}\n  Error.captureStackTrace(capture, appendFetchStackTrace)\n\n  if (!capture.stack) {\n    return\n  }\n\n  const captureLines = capture.stack.split('\\n').slice(1).join('\\n')\n\n  err.stack = stack ? `${stack}\\n${captureLines}` : capture.stack\n}\n\nmodule.exports.fetch = function fetch (init, options = undefined) {\n  return fetchImpl(init, options).catch(err => {\n    if (currentFilename) {\n      appendFetchStackTrace(err, currentFilename)\n    } else if (err && typeof err === 'object') {\n      Error.captureStackTrace(err, module.exports.fetch)\n    }\n    throw err\n  })\n}\nmodule.exports.Headers = require('./lib/web/fetch/headers').Headers\nmodule.exports.Response = require('./lib/web/fetch/response').Response\nmodule.exports.Request = require('./lib/web/fetch/request').Request\nmodule.exports.FormData = require('./lib/web/fetch/formdata').FormData\n\nconst { setGlobalOrigin, getGlobalOrigin } = require('./lib/web/fetch/global')\n\nmodule.exports.setGlobalOrigin = setGlobalOrigin\nmodule.exports.getGlobalOrigin = getGlobalOrigin\n\nconst { CacheStorage } = require('./lib/web/cache/cachestorage')\nconst { kConstruct } = require('./lib/core/symbols')\n\nmodule.exports.caches = new CacheStorage(kConstruct)\n\nconst { deleteCookie, getCookies, getSetCookies, setCookie, parseCookie } = require('./lib/web/cookies')\n\nmodule.exports.deleteCookie = deleteCookie\nmodule.exports.getCookies = getCookies\nmodule.exports.getSetCookies = getSetCookies\nmodule.exports.setCookie = setCookie\nmodule.exports.parseCookie = parseCookie\n\nconst { parseMIMEType, serializeAMimeType } = require('./lib/web/fetch/data-url')\n\nmodule.exports.parseMIMEType = parseMIMEType\nmodule.exports.serializeAMimeType = serializeAMimeType\n\nconst { CloseEvent, ErrorEvent, MessageEvent } = require('./lib/web/websocket/events')\nconst { WebSocket, ping } = require('./lib/web/websocket/websocket')\nmodule.exports.WebSocket = WebSocket\nmodule.exports.CloseEvent = CloseEvent\nmodule.exports.ErrorEvent = ErrorEvent\nmodule.exports.MessageEvent = MessageEvent\nmodule.exports.ping = ping\n\nmodule.exports.WebSocketStream = require('./lib/web/websocket/stream/websocketstream').WebSocketStream\nmodule.exports.WebSocketError = require('./lib/web/websocket/stream/websocketerror').WebSocketError\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockCallHistory = MockCallHistory\nmodule.exports.MockCallHistoryLog = MockCallHistoryLog\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.SnapshotAgent = SnapshotAgent\nmodule.exports.mockErrors = mockErrors\n\nconst { EventSource } = require('./lib/web/eventsource/eventsource')\n\nmodule.exports.EventSource = EventSource\n\nfunction install () {\n  globalThis.fetch = module.exports.fetch\n  globalThis.Headers = module.exports.Headers\n  globalThis.Response = module.exports.Response\n  globalThis.Request = module.exports.Request\n  globalThis.FormData = module.exports.FormData\n  globalThis.WebSocket = module.exports.WebSocket\n  globalThis.CloseEvent = module.exports.CloseEvent\n  globalThis.ErrorEvent = module.exports.ErrorEvent\n  globalThis.MessageEvent = module.exports.MessageEvent\n  globalThis.EventSource = module.exports.EventSource\n}\n\nmodule.exports.install = install\n","\"use strict\";\n\n// Returns \"Type(value) is Object\" in ES terminology.\nfunction isObject(value) {\n  return (typeof value === \"object\" && value !== null) || typeof value === \"function\";\n}\n\nconst call = Function.call.bind(Function.call);\n\n// Like `Object.assign`, but using `[[GetOwnProperty]]` and `[[DefineOwnProperty]]`\n// instead of `[[Get]]` and `[[Set]]` and only allowing objects\nfunction define(target, source) {\n  for (const key of Reflect.ownKeys(source)) {\n    const descriptor = Reflect.getOwnPropertyDescriptor(source, key);\n    if (descriptor && !Reflect.defineProperty(target, key, descriptor)) {\n      throw new TypeError(`Cannot redefine property: ${String(key)}`);\n    }\n  }\n}\n\nfunction newObjectInRealm(globalObject, object) {\n  const ctorRegistry = initCtorRegistry(globalObject);\n  return Object.defineProperties(\n    Object.create(ctorRegistry[\"%Object.prototype%\"]),\n    Object.getOwnPropertyDescriptors(object)\n  );\n}\n\nconst wrapperSymbol = Symbol(\"wrapper\");\nconst implSymbol = Symbol(\"impl\");\nconst sameObjectCaches = Symbol(\"SameObject caches\");\nconst ctorRegistrySymbol = Symbol.for(\"[webidl2js] constructor registry\");\n\nconst AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);\n\nfunction initCtorRegistry(globalObject) {\n  if (Object.hasOwn(globalObject, ctorRegistrySymbol)) {\n    return globalObject[ctorRegistrySymbol];\n  }\n\n  const ctorRegistry = Object.create(null);\n\n  // In addition to registering all the WebIDL2JS-generated types in the constructor registry,\n  // we also register a few intrinsics that we make use of in generated code, since they are not\n  // easy to grab from the globalObject variable.\n  ctorRegistry[\"%Object.prototype%\"] = globalObject.Object.prototype;\n  ctorRegistry[\"%IteratorPrototype%\"] = Object.getPrototypeOf(\n    Object.getPrototypeOf(new globalObject.Array()[Symbol.iterator]())\n  );\n\n  try {\n    ctorRegistry[\"%AsyncIteratorPrototype%\"] = Object.getPrototypeOf(\n      Object.getPrototypeOf(\n        globalObject.eval(\"(async function* () {})\").prototype\n      )\n    );\n  } catch {\n    ctorRegistry[\"%AsyncIteratorPrototype%\"] = AsyncIteratorPrototype;\n  }\n\n  globalObject[ctorRegistrySymbol] = ctorRegistry;\n  return ctorRegistry;\n}\n\nfunction getSameObject(wrapper, prop, creator) {\n  if (!wrapper[sameObjectCaches]) {\n    wrapper[sameObjectCaches] = Object.create(null);\n  }\n\n  if (prop in wrapper[sameObjectCaches]) {\n    return wrapper[sameObjectCaches][prop];\n  }\n\n  wrapper[sameObjectCaches][prop] = creator();\n  return wrapper[sameObjectCaches][prop];\n}\n\nfunction wrapperForImpl(impl) {\n  return impl ? impl[wrapperSymbol] : null;\n}\n\nfunction implForWrapper(wrapper) {\n  return wrapper ? wrapper[implSymbol] : null;\n}\n\nfunction tryWrapperForImpl(impl) {\n  const wrapper = wrapperForImpl(impl);\n  return wrapper ? wrapper : impl;\n}\n\nfunction tryImplForWrapper(wrapper) {\n  const impl = implForWrapper(wrapper);\n  return impl ? impl : wrapper;\n}\n\nconst iterInternalSymbol = Symbol(\"internal\");\n\nfunction isArrayIndexPropName(P) {\n  if (typeof P !== \"string\") {\n    return false;\n  }\n  const i = P >>> 0;\n  if (i === 2 ** 32 - 1) {\n    return false;\n  }\n  const s = `${i}`;\n  if (P !== s) {\n    return false;\n  }\n  return true;\n}\n\nconst arrayBufferByteLengthGetter =\n    Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, \"byteLength\").get;\nfunction isArrayBuffer(value) {\n  try {\n    arrayBufferByteLengthGetter.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nconst sharedArrayBufferByteLengthGetter =\n  Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, \"byteLength\").get;\nfunction isSharedArrayBuffer(value) {\n  try {\n    sharedArrayBufferByteLengthGetter.call(value);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nfunction iteratorResult([key, value], kind) {\n  let result;\n  switch (kind) {\n    case \"key\":\n      result = key;\n      break;\n    case \"value\":\n      result = value;\n      break;\n    case \"key+value\":\n      result = [key, value];\n      break;\n  }\n  return { value: result, done: false };\n}\n\nfunction ordinarySetWithOwnDescriptor(target, property, value, receiver, ownDesc) {\n  if (ownDesc === undefined) {\n    const parent = Reflect.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.set(parent, property, value, receiver);\n    }\n    ownDesc = { writable: true, enumerable: true, configurable: true, value: undefined };\n  }\n  if (isDataDescriptor(ownDesc)) {\n    if (!ownDesc.writable) {\n      return false;\n    }\n    if (!isObject(receiver)) {\n      return false;\n    }\n    const existingDesc = Reflect.getOwnPropertyDescriptor(receiver, property);\n    if (existingDesc !== undefined) {\n      if (isAccessorDescriptor(existingDesc)) {\n        return false;\n      }\n      if (existingDesc.writable === false) {\n        return false;\n      }\n      const valueDesc = { value };\n      return Reflect.defineProperty(receiver, property, valueDesc);\n    }\n\n    return Reflect.defineProperty(\n      receiver,\n      property,\n      { value, writable: true, enumerable: true, configurable: true }\n    );\n  }\n\n  const setter = ownDesc.set;\n  if (setter === undefined) {\n    return false;\n  }\n  call(setter, receiver, value);\n  return true;\n}\n\nfunction isDataDescriptor(desc) {\n  return Object.hasOwn(desc, \"value\") || Object.hasOwn(desc, \"writable\");\n}\n\nfunction isAccessorDescriptor(desc) {\n  return Object.hasOwn(desc, \"get\") || Object.hasOwn(desc, \"set\");\n}\n\nconst supportsPropertyIndex = Symbol(\"supports property index\");\nconst supportedPropertyIndices = Symbol(\"supported property indices\");\nconst supportsPropertyName = Symbol(\"supports property name\");\nconst supportedPropertyNames = Symbol(\"supported property names\");\nconst indexedGet = Symbol(\"indexed property get\");\nconst indexedSetNew = Symbol(\"indexed property set new\");\nconst indexedSetExisting = Symbol(\"indexed property set existing\");\nconst namedGet = Symbol(\"named property get\");\nconst namedSetNew = Symbol(\"named property set new\");\nconst namedSetExisting = Symbol(\"named property set existing\");\nconst namedDelete = Symbol(\"named property delete\");\n\nconst asyncIteratorNext = Symbol(\"async iterator get the next iteration result\");\nconst asyncIteratorReturn = Symbol(\"async iterator return steps\");\nconst asyncIteratorInit = Symbol(\"async iterator initialization steps\");\nconst asyncIteratorEOI = Symbol(\"async iterator end of iteration\");\n\nmodule.exports = exports = {\n  isObject,\n  define,\n  newObjectInRealm,\n  wrapperSymbol,\n  implSymbol,\n  getSameObject,\n  ctorRegistrySymbol,\n  initCtorRegistry,\n  wrapperForImpl,\n  implForWrapper,\n  tryWrapperForImpl,\n  tryImplForWrapper,\n  iterInternalSymbol,\n  isArrayBuffer,\n  isSharedArrayBuffer,\n  isArrayIndexPropName,\n  supportsPropertyIndex,\n  supportedPropertyIndices,\n  supportsPropertyName,\n  supportedPropertyNames,\n  indexedGet,\n  indexedSetNew,\n  indexedSetExisting,\n  namedGet,\n  namedSetNew,\n  namedSetExisting,\n  namedDelete,\n  asyncIteratorNext,\n  asyncIteratorReturn,\n  asyncIteratorInit,\n  asyncIteratorEOI,\n  iteratorResult,\n  ordinarySetWithOwnDescriptor\n};\n","\"use strict\";\nconst { EventEmitter } = require(\"events\");\n\nmodule.exports = class VirtualConsole extends EventEmitter {\n  constructor() {\n    super();\n\n    this.on(\"error\", () => {\n      // If \"error\" event has no listeners,\n      // EventEmitter throws an exception\n    });\n  }\n\n  forwardTo(anyConsole, { jsdomErrors } = {}) {\n    for (const method of Object.keys(anyConsole)) {\n      if (typeof anyConsole[method] === \"function\") {\n        function onMethodCall(...args) {\n          anyConsole[method](...args);\n        }\n        this.on(method, onMethodCall);\n      }\n    }\n\n    function forward(e) {\n      if (e.type === \"unhandled-exception\") {\n        anyConsole.error(e.cause.stack);\n      } else {\n        anyConsole.error(e.message);\n      }\n    }\n\n    if (jsdomErrors === undefined) {\n      this.on(\"jsdomError\", forward);\n    } else if (Array.isArray(jsdomErrors)) {\n      this.on(\"jsdomError\", e => {\n        if (jsdomErrors.includes(e.type)) {\n          forward(e);\n        }\n      });\n    } else if (jsdomErrors !== \"none\") {\n      throw new TypeError(\"Invalid jsdomErrors option\");\n    }\n\n    return this;\n  }\n};\n","\"use strict\";\n\nexports.notImplementedMethod = (window, className, methodName, specialCircumstances) => {\n  exports.notImplemented(\n    window,\n    `${className}'s ${methodName}() method${specialCircumstances ? `: ${specialCircumstances}` : \"\"}`\n  );\n};\n\nexports.notImplemented = (window, message) => {\n  if (!window) {\n    // Do nothing for window-less documents.\n    return;\n  }\n\n  const error = new Error(`Not implemented: ${message}`);\n  error.type = \"not-implemented\";\n\n  window._virtualConsole.emit(\"jsdomError\", error);\n};\n","class ParseError extends Error{sourceStart;sourceEnd;parserState;constructor(e,n,t,o){super(e),this.name=\"ParseError\",this.sourceStart=n,this.sourceEnd=t,this.parserState=o}}class ParseErrorWithToken extends ParseError{token;constructor(e,n,t,o,r){super(e,n,t,o),this.token=r}}const e={UnexpectedNewLineInString:\"Unexpected newline while consuming a string token.\",UnexpectedEOFInString:\"Unexpected EOF while consuming a string token.\",UnexpectedEOFInComment:\"Unexpected EOF while consuming a comment.\",UnexpectedEOFInURL:\"Unexpected EOF while consuming a url token.\",UnexpectedEOFInEscapedCodePoint:\"Unexpected EOF while consuming an escaped code point.\",UnexpectedCharacterInURL:\"Unexpected character while consuming a url token.\",InvalidEscapeSequenceInURL:\"Invalid escape sequence while consuming a url token.\",InvalidEscapeSequenceAfterBackslash:'Invalid escape sequence after \"\\\\\"'},n=\"undefined\"!=typeof globalThis&&\"structuredClone\"in globalThis;function cloneTokens(e){return n?structuredClone(e):JSON.parse(JSON.stringify(e))}function stringify(...e){let n=\"\";for(let t=0;t<e.length;t++)n+=e[t][1];return n}const t=13,o=45,r=10,i=43,s=65533;function checkIfFourCodePointsWouldStartCDO(e){return 60===e.source.codePointAt(e.cursor)&&33===e.source.codePointAt(e.cursor+1)&&e.source.codePointAt(e.cursor+2)===o&&e.source.codePointAt(e.cursor+3)===o}function isDigitCodePoint(e){return e>=48&&e<=57}function isUppercaseLetterCodePoint(e){return e>=65&&e<=90}function isLowercaseLetterCodePoint(e){return e>=97&&e<=122}function isHexDigitCodePoint(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function isLetterCodePoint(e){return isLowercaseLetterCodePoint(e)||isUppercaseLetterCodePoint(e)}function isIdentStartCodePoint(e){return isLetterCodePoint(e)||isNonASCII_IdentCodePoint(e)||95===e}function isIdentCodePoint(e){return isIdentStartCodePoint(e)||isDigitCodePoint(e)||e===o}function isNonASCII_IdentCodePoint(e){return 183===e||8204===e||8205===e||8255===e||8256===e||8204===e||(192<=e&&e<=214||216<=e&&e<=246||248<=e&&e<=893||895<=e&&e<=8191||8304<=e&&e<=8591||11264<=e&&e<=12271||12289<=e&&e<=55295||63744<=e&&e<=64975||65008<=e&&e<=65533||(0===e||(!!isSurrogate(e)||e>=65536)))}function isNonPrintableCodePoint(e){return 11===e||127===e||0<=e&&e<=8||14<=e&&e<=31}function isNewLine(e){return e===r||e===t||12===e}function isWhitespace(e){return 32===e||e===r||9===e||e===t||12===e}function isSurrogate(e){return e>=55296&&e<=57343}function checkIfTwoCodePointsAreAValidEscape(e){return 92===e.source.codePointAt(e.cursor)&&!isNewLine(e.source.codePointAt(e.cursor+1)??-1)}function checkIfThreeCodePointsWouldStartAnIdentSequence(e,n){return n.source.codePointAt(n.cursor)===o?n.source.codePointAt(n.cursor+1)===o||(!!isIdentStartCodePoint(n.source.codePointAt(n.cursor+1)??-1)||92===n.source.codePointAt(n.cursor+1)&&!isNewLine(n.source.codePointAt(n.cursor+2)??-1)):!!isIdentStartCodePoint(n.source.codePointAt(n.cursor)??-1)||checkIfTwoCodePointsAreAValidEscape(n)}function checkIfThreeCodePointsWouldStartANumber(e){return e.source.codePointAt(e.cursor)===i||e.source.codePointAt(e.cursor)===o?!!isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1)||46===e.source.codePointAt(e.cursor+1)&&isDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1):46===e.source.codePointAt(e.cursor)?isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1):isDigitCodePoint(e.source.codePointAt(e.cursor)??-1)}function checkIfTwoCodePointsStartAComment(e){return 47===e.source.codePointAt(e.cursor)&&42===e.source.codePointAt(e.cursor+1)}function checkIfThreeCodePointsWouldStartCDC(e){return e.source.codePointAt(e.cursor)===o&&e.source.codePointAt(e.cursor+1)===o&&62===e.source.codePointAt(e.cursor+2)}var c,a,u;function mirrorVariantType(e){switch(e){case c.OpenParen:return c.CloseParen;case c.CloseParen:return c.OpenParen;case c.OpenCurly:return c.CloseCurly;case c.CloseCurly:return c.OpenCurly;case c.OpenSquare:return c.CloseSquare;case c.CloseSquare:return c.OpenSquare;default:return null}}function mirrorVariant(e){switch(e[0]){case c.OpenParen:return[c.CloseParen,\")\",-1,-1,void 0];case c.CloseParen:return[c.OpenParen,\"(\",-1,-1,void 0];case c.OpenCurly:return[c.CloseCurly,\"}\",-1,-1,void 0];case c.CloseCurly:return[c.OpenCurly,\"{\",-1,-1,void 0];case c.OpenSquare:return[c.CloseSquare,\"]\",-1,-1,void 0];case c.CloseSquare:return[c.OpenSquare,\"[\",-1,-1,void 0];default:return null}}function consumeComment(n,t){for(t.advanceCodePoint(2);;){const o=t.readCodePoint();if(void 0===o){const o=[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInComment,t.representationStart,t.representationEnd,[\"4.3.2. Consume comments\",\"Unexpected EOF\"],o)),o}if(42===o&&(void 0!==t.source.codePointAt(t.cursor)&&47===t.source.codePointAt(t.cursor))){t.advanceCodePoint();break}}return[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0]}function consumeEscapedCodePoint(n,o){const i=o.readCodePoint();if(void 0===i)return n.onParseError(new ParseError(e.UnexpectedEOFInEscapedCodePoint,o.representationStart,o.representationEnd,[\"4.3.7. Consume an escaped code point\",\"Unexpected EOF\"])),s;if(isHexDigitCodePoint(i)){const e=[i];let n;for(;void 0!==(n=o.source.codePointAt(o.cursor))&&isHexDigitCodePoint(n)&&e.length<6;)e.push(n),o.advanceCodePoint();isWhitespace(o.source.codePointAt(o.cursor)??-1)&&(o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint());const c=parseInt(String.fromCodePoint(...e),16);return 0===c||isSurrogate(c)||c>1114111?s:c}return 0===i||isSurrogate(i)?s:i}function consumeIdentSequence(e,n){const t=[];for(;;){const o=n.source.codePointAt(n.cursor)??-1;if(0===o||isSurrogate(o))t.push(s),n.advanceCodePoint(+(o>65535)+1);else if(isIdentCodePoint(o))t.push(o),n.advanceCodePoint(+(o>65535)+1);else{if(!checkIfTwoCodePointsAreAValidEscape(n))return t;n.advanceCodePoint(),t.push(consumeEscapedCodePoint(e,n))}}}function consumeHashToken(e,n){n.advanceCodePoint();const t=n.source.codePointAt(n.cursor);if(void 0!==t&&(isIdentCodePoint(t)||checkIfTwoCodePointsAreAValidEscape(n))){let t=u.Unrestricted;checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)&&(t=u.ID);const o=consumeIdentSequence(e,n);return[c.Hash,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...o),type:t}]}return[c.Delim,\"#\",n.representationStart,n.representationEnd,{value:\"#\"}]}function consumeNumber(e,n){let t=a.Integer;for(n.source.codePointAt(n.cursor)!==i&&n.source.codePointAt(n.cursor)!==o||n.advanceCodePoint();isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(46===n.source.codePointAt(n.cursor)&&isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint(2),t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(101===n.source.codePointAt(n.cursor)||69===n.source.codePointAt(n.cursor)){if(isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))n.advanceCodePoint(2);else{if(n.source.codePointAt(n.cursor+1)!==o&&n.source.codePointAt(n.cursor+1)!==i||!isDigitCodePoint(n.source.codePointAt(n.cursor+2)??-1))return t;n.advanceCodePoint(3)}for(t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint()}return t}function consumeNumericToken(e,n){let t;{const e=n.source.codePointAt(n.cursor);e===o?t=\"-\":e===i&&(t=\"+\")}const r=consumeNumber(0,n),s=parseFloat(n.source.slice(n.representationStart,n.representationEnd+1));if(checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)){const o=consumeIdentSequence(e,n);return[c.Dimension,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r,unit:String.fromCodePoint(...o)}]}return 37===n.source.codePointAt(n.cursor)?(n.advanceCodePoint(),[c.Percentage,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t}]):[c.Number,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r}]}function consumeWhiteSpace(e){for(;isWhitespace(e.source.codePointAt(e.cursor)??-1);)e.advanceCodePoint();return[c.Whitespace,e.source.slice(e.representationStart,e.representationEnd+1),e.representationStart,e.representationEnd,void 0]}!function(e){e.Comment=\"comment\",e.AtKeyword=\"at-keyword-token\",e.BadString=\"bad-string-token\",e.BadURL=\"bad-url-token\",e.CDC=\"CDC-token\",e.CDO=\"CDO-token\",e.Colon=\"colon-token\",e.Comma=\"comma-token\",e.Delim=\"delim-token\",e.Dimension=\"dimension-token\",e.EOF=\"EOF-token\",e.Function=\"function-token\",e.Hash=\"hash-token\",e.Ident=\"ident-token\",e.Number=\"number-token\",e.Percentage=\"percentage-token\",e.Semicolon=\"semicolon-token\",e.String=\"string-token\",e.URL=\"url-token\",e.Whitespace=\"whitespace-token\",e.OpenParen=\"(-token\",e.CloseParen=\")-token\",e.OpenSquare=\"[-token\",e.CloseSquare=\"]-token\",e.OpenCurly=\"{-token\",e.CloseCurly=\"}-token\",e.UnicodeRange=\"unicode-range-token\"}(c||(c={})),function(e){e.Integer=\"integer\",e.Number=\"number\"}(a||(a={})),function(e){e.Unrestricted=\"unrestricted\",e.ID=\"id\"}(u||(u={}));class Reader{cursor=0;source=\"\";representationStart=0;representationEnd=-1;constructor(e){this.source=e}advanceCodePoint(e=1){this.cursor=this.cursor+e,this.representationEnd=this.cursor-1}readCodePoint(){const e=this.source.codePointAt(this.cursor);if(void 0!==e)return this.cursor=this.cursor+1,this.representationEnd=this.cursor-1,e}unreadCodePoint(e=1){this.cursor=this.cursor-e,this.representationEnd=this.cursor-1}resetRepresentation(){this.representationStart=this.cursor,this.representationEnd=-1}}function consumeStringToken(n,o){let i=\"\";const a=o.readCodePoint();for(;;){const u=o.readCodePoint();if(void 0===u){const t=[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInString,o.representationStart,o.representationEnd,[\"4.3.5. Consume a string token\",\"Unexpected EOF\"],t)),t}if(isNewLine(u)){o.unreadCodePoint();const i=[c.BadString,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedNewLineInString,o.representationStart,o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r?o.representationEnd+2:o.representationEnd+1,[\"4.3.5. Consume a string token\",\"Unexpected newline\"],i)),i}if(u===a)return[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];if(92!==u)0===u||isSurrogate(u)?i+=String.fromCodePoint(s):i+=String.fromCodePoint(u);else{if(void 0===o.source.codePointAt(o.cursor))continue;if(isNewLine(o.source.codePointAt(o.cursor)??-1)){o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint();continue}i+=String.fromCodePoint(consumeEscapedCodePoint(n,o))}}}function checkIfCodePointsMatchURLIdent(e){return!(3!==e.length||117!==e[0]&&85!==e[0]||114!==e[1]&&82!==e[1]||108!==e[2]&&76!==e[2])}function consumeBadURL(e,n){for(;;){const t=n.source.codePointAt(n.cursor);if(void 0===t)return;if(41===t)return void n.advanceCodePoint();checkIfTwoCodePointsAreAValidEscape(n)?(n.advanceCodePoint(),consumeEscapedCodePoint(e,n)):n.advanceCodePoint()}}function consumeUrlToken(n,t){for(;isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();let o=\"\";for(;;){if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected EOF\"],r)),r}if(41===t.source.codePointAt(t.cursor))return t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];if(isWhitespace(t.source.codePointAt(t.cursor)??-1)){for(t.advanceCodePoint();isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Consume as much whitespace as possible\",\"Unexpected EOF\"],r)),r}return 41===t.source.codePointAt(t.cursor)?(t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}]):(consumeBadURL(n,t),[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0])}const r=t.source.codePointAt(t.cursor);if(34===r||39===r||40===r||isNonPrintableCodePoint(r??-1)){consumeBadURL(n,t);const o=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedCharacterInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected U+0022 QUOTATION MARK (\\\"), U+0027 APOSTROPHE ('), U+0028 LEFT PARENTHESIS (() or non-printable code point\"],o)),o}if(92===r){if(checkIfTwoCodePointsAreAValidEscape(t)){t.advanceCodePoint(),o+=String.fromCodePoint(consumeEscapedCodePoint(n,t));continue}consumeBadURL(n,t);const r=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],r)),r}0===t.source.codePointAt(t.cursor)||isSurrogate(t.source.codePointAt(t.cursor)??-1)?(o+=String.fromCodePoint(s),t.advanceCodePoint()):(o+=t.source[t.cursor],t.advanceCodePoint())}}function consumeIdentLikeToken(e,n){const t=consumeIdentSequence(e,n);if(40!==n.source.codePointAt(n.cursor))return[c.Ident,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];if(checkIfCodePointsMatchURLIdent(t)){n.advanceCodePoint();let o=0;for(;;){const e=isWhitespace(n.source.codePointAt(n.cursor)??-1),r=isWhitespace(n.source.codePointAt(n.cursor+1)??-1);if(e&&r){o+=1,n.advanceCodePoint(1);continue}const i=e?n.source.codePointAt(n.cursor+1):n.source.codePointAt(n.cursor);if(34===i||39===i)return o>0&&n.unreadCodePoint(o),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];break}return consumeUrlToken(e,n)}return n.advanceCodePoint(),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}]}function checkIfThreeCodePointsWouldStartAUnicodeRange(e){return!(117!==e.source.codePointAt(e.cursor)&&85!==e.source.codePointAt(e.cursor)||e.source.codePointAt(e.cursor+1)!==i||63!==e.source.codePointAt(e.cursor+2)&&!isHexDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1))}function consumeUnicodeRangeToken(e,n){n.advanceCodePoint(2);const t=[],r=[];let i;for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&isHexDigitCodePoint(i);)t.push(i),n.advanceCodePoint();for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&63===i;)0===r.length&&r.push(...t),t.push(48),r.push(70),n.advanceCodePoint();if(!r.length&&n.source.codePointAt(n.cursor)===o&&isHexDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint();void 0!==(i=n.source.codePointAt(n.cursor))&&r.length<6&&isHexDigitCodePoint(i);)r.push(i),n.advanceCodePoint();if(!r.length){const e=parseInt(String.fromCodePoint(...t),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:e,endOfRange:e}]}const s=parseInt(String.fromCodePoint(...t),16),a=parseInt(String.fromCodePoint(...r),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:s,endOfRange:a}]}function tokenize(e,n){const t=tokenizer(e,n),o=[];for(;!t.endOfFile();)o.push(t.nextToken());return o.push(t.nextToken()),o}function tokenizer(n,s){const a=n.css.valueOf(),u=n.unicodeRangesAllowed??!1,d=new Reader(a),p={onParseError:s?.onParseError??noop};return{nextToken:function nextToken(){d.resetRepresentation();const n=d.source.codePointAt(d.cursor);if(void 0===n)return[c.EOF,\"\",-1,-1,void 0];if(47===n&&checkIfTwoCodePointsStartAComment(d))return consumeComment(p,d);if(u&&(117===n||85===n)&&checkIfThreeCodePointsWouldStartAUnicodeRange(d))return consumeUnicodeRangeToken(0,d);if(isIdentStartCodePoint(n))return consumeIdentLikeToken(p,d);if(isDigitCodePoint(n))return consumeNumericToken(p,d);switch(n){case 44:return d.advanceCodePoint(),[c.Comma,\",\",d.representationStart,d.representationEnd,void 0];case 58:return d.advanceCodePoint(),[c.Colon,\":\",d.representationStart,d.representationEnd,void 0];case 59:return d.advanceCodePoint(),[c.Semicolon,\";\",d.representationStart,d.representationEnd,void 0];case 40:return d.advanceCodePoint(),[c.OpenParen,\"(\",d.representationStart,d.representationEnd,void 0];case 41:return d.advanceCodePoint(),[c.CloseParen,\")\",d.representationStart,d.representationEnd,void 0];case 91:return d.advanceCodePoint(),[c.OpenSquare,\"[\",d.representationStart,d.representationEnd,void 0];case 93:return d.advanceCodePoint(),[c.CloseSquare,\"]\",d.representationStart,d.representationEnd,void 0];case 123:return d.advanceCodePoint(),[c.OpenCurly,\"{\",d.representationStart,d.representationEnd,void 0];case 125:return d.advanceCodePoint(),[c.CloseCurly,\"}\",d.representationStart,d.representationEnd,void 0];case 39:case 34:return consumeStringToken(p,d);case 35:return consumeHashToken(p,d);case i:case 46:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):(d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]);case r:case t:case 12:case 9:case 32:return consumeWhiteSpace(d);case o:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):checkIfThreeCodePointsWouldStartCDC(d)?(d.advanceCodePoint(3),[c.CDC,\"--\\x3e\",d.representationStart,d.representationEnd,void 0]):checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)?consumeIdentLikeToken(p,d):(d.advanceCodePoint(),[c.Delim,\"-\",d.representationStart,d.representationEnd,{value:\"-\"}]);case 60:return checkIfFourCodePointsWouldStartCDO(d)?(d.advanceCodePoint(4),[c.CDO,\"\\x3c!--\",d.representationStart,d.representationEnd,void 0]):(d.advanceCodePoint(),[c.Delim,\"<\",d.representationStart,d.representationEnd,{value:\"<\"}]);case 64:if(d.advanceCodePoint(),checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)){const e=consumeIdentSequence(p,d);return[c.AtKeyword,d.source.slice(d.representationStart,d.representationEnd+1),d.representationStart,d.representationEnd,{value:String.fromCodePoint(...e)}]}return[c.Delim,\"@\",d.representationStart,d.representationEnd,{value:\"@\"}];case 92:{if(checkIfTwoCodePointsAreAValidEscape(d))return consumeIdentLikeToken(p,d);d.advanceCodePoint();const n=[c.Delim,\"\\\\\",d.representationStart,d.representationEnd,{value:\"\\\\\"}];return p.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceAfterBackslash,d.representationStart,d.representationEnd,[\"4.3.1. Consume a token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],n)),n}}return d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]},endOfFile:function endOfFile(){return void 0===d.source.codePointAt(d.cursor)}}}function noop(){}function mutateIdent(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=String.fromCodePoint(...serializeIdent(t));e[1]=o,e[4].value=n}function mutateUnit(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=serializeIdent(t);101===o[0]&&insertEscapedCodePoint(o,0,o[0]);const r=String.fromCodePoint(...o),i=\"+\"===e[4].signCharacter?e[4].signCharacter:\"\",s=e[4].value.toString();e[1]=`${i}${s}${r}`,e[4].unit=n}function serializeIdent(e){let n=0;if(0===e[0])e.splice(0,1,s),n=1;else if(e[0]===o&&e[1]===o)n=2;else if(e[0]===o&&e[1])n=2,isIdentStartCodePoint(e[1])||(n+=insertEscapedCodePoint(e,1,e[1]));else{if(e[0]===o&&!e[1])return[92,e[0]];isIdentStartCodePoint(e[0])?n=1:(n=1,n+=insertEscapedCodePoint(e,0,e[0]))}for(let t=n;t<e.length;t++)0!==e[t]?isIdentCodePoint(e[t])||(t+=insertEscapedCharacter(e,t,e[t])):(e.splice(t,1,s),t++);return e}function insertEscapedCharacter(e,n,t){return e.splice(n,1,92,t),1}function insertEscapedCodePoint(e,n,t){const o=t.toString(16),r=[];for(const e of o)r.push(e.codePointAt(0));return e.splice(n,1,92,...r,32),1+r.length}const d=Object.values(c);function isToken(e){return!!Array.isArray(e)&&(!(e.length<4)&&(!!d.includes(e[0])&&(\"string\"==typeof e[1]&&(\"number\"==typeof e[2]&&\"number\"==typeof e[3]))))}function isTokenNumeric(e){if(!e)return!1;switch(e[0]){case c.Dimension:case c.Number:case c.Percentage:return!0;default:return!1}}function isTokenWhiteSpaceOrComment(e){if(!e)return!1;switch(e[0]){case c.Whitespace:case c.Comment:return!0;default:return!1}}function isTokenAtKeyword(e){return!!e&&e[0]===c.AtKeyword}function isTokenBadString(e){return!!e&&e[0]===c.BadString}function isTokenBadURL(e){return!!e&&e[0]===c.BadURL}function isTokenCDC(e){return!!e&&e[0]===c.CDC}function isTokenCDO(e){return!!e&&e[0]===c.CDO}function isTokenColon(e){return!!e&&e[0]===c.Colon}function isTokenComma(e){return!!e&&e[0]===c.Comma}function isTokenComment(e){return!!e&&e[0]===c.Comment}function isTokenDelim(e){return!!e&&e[0]===c.Delim}function isTokenDimension(e){return!!e&&e[0]===c.Dimension}function isTokenEOF(e){return!!e&&e[0]===c.EOF}function isTokenFunction(e){return!!e&&e[0]===c.Function}function isTokenHash(e){return!!e&&e[0]===c.Hash}function isTokenIdent(e){return!!e&&e[0]===c.Ident}function isTokenNumber(e){return!!e&&e[0]===c.Number}function isTokenPercentage(e){return!!e&&e[0]===c.Percentage}function isTokenSemicolon(e){return!!e&&e[0]===c.Semicolon}function isTokenString(e){return!!e&&e[0]===c.String}function isTokenURL(e){return!!e&&e[0]===c.URL}function isTokenWhitespace(e){return!!e&&e[0]===c.Whitespace}function isTokenOpenParen(e){return!!e&&e[0]===c.OpenParen}function isTokenCloseParen(e){return!!e&&e[0]===c.CloseParen}function isTokenOpenSquare(e){return!!e&&e[0]===c.OpenSquare}function isTokenCloseSquare(e){return!!e&&e[0]===c.CloseSquare}function isTokenOpenCurly(e){return!!e&&e[0]===c.OpenCurly}function isTokenCloseCurly(e){return!!e&&e[0]===c.CloseCurly}function isTokenUnicodeRange(e){return!!e&&e[0]===c.UnicodeRange}export{u as HashType,a as NumberType,ParseError,e as ParseErrorMessage,ParseErrorWithToken,c as TokenType,cloneTokens,isToken,isTokenAtKeyword,isTokenBadString,isTokenBadURL,isTokenCDC,isTokenCDO,isTokenCloseCurly,isTokenCloseParen,isTokenCloseSquare,isTokenColon,isTokenComma,isTokenComment,isTokenDelim,isTokenDimension,isTokenEOF,isTokenFunction,isTokenHash,isTokenIdent,isTokenNumber,isTokenNumeric,isTokenOpenCurly,isTokenOpenParen,isTokenOpenSquare,isTokenPercentage,isTokenSemicolon,isTokenString,isTokenURL,isTokenUnicodeRange,isTokenWhiteSpaceOrComment,isTokenWhitespace,mirrorVariant,mirrorVariantType,mutateIdent,mutateUnit,stringify,tokenize,tokenizer};\n","import{isTokenEOF as e,TokenType as n,isToken as t,stringify as o,mirrorVariant as s,isTokenOpenParen as i,isTokenOpenCurly as r,isTokenOpenSquare as a,isTokenFunction as c,isTokenWhitespace as u,isTokenComment as l,mirrorVariantType as d,ParseError as h,isTokenWhiteSpaceOrComment as p,isTokenCloseParen as m,isTokenComma as k}from\"@csstools/css-tokenizer\";var f;function walkerIndexGenerator(e){let n=e.slice();return(e,t,o)=>{let s=-1;for(let i=n.indexOf(t);i<n.length&&(s=e.indexOf(n[i]),-1===s||s<o);i++);return-1===s||s===o&&t===e[o]&&(s++,s>=e.length)?-1:(n=e.slice(),s)}}function consumeComponentValue(e,n){const t=n[0];if(i(t)||r(t)||a(t)){const t=consumeSimpleBlock(e,n);return{advance:t.advance,node:t.node}}if(c(t)){const t=consumeFunction(e,n);return{advance:t.advance,node:t.node}}if(u(t)){const t=consumeWhitespace(e,n);return{advance:t.advance,node:t.node}}if(l(t)){const t=consumeComment(e,n);return{advance:t.advance,node:t.node}}return{advance:1,node:new TokenNode(t)}}!function(e){e.Function=\"function\",e.SimpleBlock=\"simple-block\",e.Whitespace=\"whitespace\",e.Comment=\"comment\",e.Token=\"token\"}(f||(f={}));class ContainerNodeBaseClass{value=[];indexOf(e){return this.value.indexOf(e)}at(e){if(\"number\"==typeof e)return e<0&&(e=this.value.length+e),this.value[e]}forEach(e,n){if(0===this.value.length)return;const t=walkerIndexGenerator(this.value);let o=0;for(;o<this.value.length;){const s=this.value[o];let i;if(n&&(i={...n}),!1===e({node:s,parent:this,state:i},o))return!1;if(o=t(this.value,s,o),-1===o)break}}walk(e,n){0!==this.value.length&&this.forEach((n,t)=>!1!==e(n,t)&&((!(\"walk\"in n.node)||!this.value.includes(n.node)||!1!==n.node.walk(e,n.state))&&void 0),n)}}class FunctionNode extends ContainerNodeBaseClass{type=f.Function;name;endToken;constructor(e,n,t){super(),this.name=e,this.endToken=n,this.value=t}getName(){return this.name[4].value}normalize(){e(this.endToken)&&(this.endToken=[n.CloseParen,\")\",-1,-1,void 0])}tokens(){return e(this.endToken)?[this.name,...this.value.flatMap(e=>e.tokens())]:[this.name,...this.value.flatMap(e=>e.tokens()),this.endToken]}toString(){const e=this.value.map(e=>t(e)?o(e):e.toString()).join(\"\");return o(this.name)+e+o(this.endToken)}toJSON(){return{type:this.type,name:this.getName(),tokens:this.tokens(),value:this.value.map(e=>e.toJSON())}}isFunctionNode(){return FunctionNode.isFunctionNode(this)}static isFunctionNode(e){return!!e&&(e instanceof FunctionNode&&e.type===f.Function)}}function consumeFunction(n,t){const o=[];let s=1;for(;;){const i=t[s];if(!i||e(i))return n.onParseError(new h(\"Unexpected EOF while consuming a function.\",t[0][2],t[t.length-1][3],[\"5.4.9. Consume a function\",\"Unexpected EOF\"])),{advance:t.length,node:new FunctionNode(t[0],i,o)};if(m(i))return{advance:s+1,node:new FunctionNode(t[0],i,o)};if(p(i)){const e=consumeAllCommentsAndWhitespace(n,t.slice(s));s+=e.advance,o.push(...e.nodes);continue}const r=consumeComponentValue(n,t.slice(s));s+=r.advance,o.push(r.node)}}class SimpleBlockNode extends ContainerNodeBaseClass{type=f.SimpleBlock;startToken;endToken;constructor(e,n,t){super(),this.startToken=e,this.endToken=n,this.value=t}normalize(){if(e(this.endToken)){const e=s(this.startToken);e&&(this.endToken=e)}}tokens(){return e(this.endToken)?[this.startToken,...this.value.flatMap(e=>e.tokens())]:[this.startToken,...this.value.flatMap(e=>e.tokens()),this.endToken]}toString(){const e=this.value.map(e=>t(e)?o(e):e.toString()).join(\"\");return o(this.startToken)+e+o(this.endToken)}toJSON(){return{type:this.type,startToken:this.startToken,tokens:this.tokens(),value:this.value.map(e=>e.toJSON())}}isSimpleBlockNode(){return SimpleBlockNode.isSimpleBlockNode(this)}static isSimpleBlockNode(e){return!!e&&(e instanceof SimpleBlockNode&&e.type===f.SimpleBlock)}}function consumeSimpleBlock(n,t){const o=d(t[0][0]);if(!o)throw new Error(\"Failed to parse, a mirror variant must exist for all block open tokens.\");const s=[];let i=1;for(;;){const r=t[i];if(!r||e(r))return n.onParseError(new h(\"Unexpected EOF while consuming a simple block.\",t[0][2],t[t.length-1][3],[\"5.4.8. Consume a simple block\",\"Unexpected EOF\"])),{advance:t.length,node:new SimpleBlockNode(t[0],r,s)};if(r[0]===o)return{advance:i+1,node:new SimpleBlockNode(t[0],r,s)};if(p(r)){const e=consumeAllCommentsAndWhitespace(n,t.slice(i));i+=e.advance,s.push(...e.nodes);continue}const a=consumeComponentValue(n,t.slice(i));i+=a.advance,s.push(a.node)}}class WhitespaceNode{type=f.Whitespace;value;constructor(e){this.value=e}tokens(){return this.value}toString(){return o(...this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isWhitespaceNode(){return WhitespaceNode.isWhitespaceNode(this)}static isWhitespaceNode(e){return!!e&&(e instanceof WhitespaceNode&&e.type===f.Whitespace)}}function consumeWhitespace(e,n){let t=0;for(;;){const e=n[t];if(!u(e))return{advance:t,node:new WhitespaceNode(n.slice(0,t))};t++}}class CommentNode{type=f.Comment;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return o(this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isCommentNode(){return CommentNode.isCommentNode(this)}static isCommentNode(e){return!!e&&(e instanceof CommentNode&&e.type===f.Comment)}}function consumeComment(e,n){return{advance:1,node:new CommentNode(n[0])}}function consumeAllCommentsAndWhitespace(e,n){const t=[];let o=0;for(;;){if(u(n[o])){const e=consumeWhitespace(0,n.slice(o));o+=e.advance,t.push(e.node);continue}if(!l(n[o]))return{advance:o,nodes:t};t.push(new CommentNode(n[o])),o++}}class TokenNode{type=f.Token;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return this.value[1]}toJSON(){return{type:this.type,tokens:this.tokens()}}isTokenNode(){return TokenNode.isTokenNode(this)}static isTokenNode(e){return!!e&&(e instanceof TokenNode&&e.type===f.Token)}}function parseComponentValue(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])||i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=consumeComponentValue(s,i);if(e(i[Math.min(r.advance,i.length-1)]))return r.node;s.onParseError(new h(\"Expected EOF after parsing a component value.\",t[0][2],t[t.length-1][3],[\"5.3.9. Parse a component value\",\"Expected EOF\"]))}function parseListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=0;for(;;){if(!i[a]||e(i[a]))return r;const n=consumeComponentValue(s,i.slice(a));r.push(n.node),a+=n.advance}}function parseCommaSeparatedListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];if(0===t.length)return[];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=[],c=0;for(;;){if(!i[c]||e(i[c]))return a.length&&r.push(a),r;if(k(i[c])){r.push(a),a=[],c++;continue}const n=consumeComponentValue(s,t.slice(c));a.push(n.node),c+=n.advance}}function gatherNodeAncestry(e){const n=new Map;return e.walk(e=>{Array.isArray(e.node)?e.node.forEach(t=>{n.set(t,e.parent)}):n.set(e.node,e.parent)}),n}function forEach(e,n,t){if(0===e.length)return;const o=walkerIndexGenerator(e);let s=0;for(;s<e.length;){const i=e[s];let r;if(t&&(r={...t}),!1===n({node:i,parent:{value:e},state:r},s))return!1;if(s=o(e,i,s),-1===s)break}}function walk(e,n,t){0!==e.length&&forEach(e,(t,o)=>!1!==n(t,o)&&((!(\"walk\"in t.node)||!e.includes(t.node)||!1!==t.node.walk(n,t.state))&&void 0),t)}function replaceComponentValues(e,n){for(let t=0;t<e.length;t++){walk(e[t],(e,t)=>{if(\"number\"!=typeof t)return;const o=n(e.node);o&&(Array.isArray(o)?e.parent.value.splice(t,1,...o):e.parent.value.splice(t,1,o))})}return e}function stringify(e){return e.map(e=>e.map(e=>o(...e.tokens())).join(\"\")).join(\",\")}function isSimpleBlockNode(e){return SimpleBlockNode.isSimpleBlockNode(e)}function isFunctionNode(e){return FunctionNode.isFunctionNode(e)}function isWhitespaceNode(e){return WhitespaceNode.isWhitespaceNode(e)}function isCommentNode(e){return CommentNode.isCommentNode(e)}function isWhiteSpaceOrCommentNode(e){return isWhitespaceNode(e)||isCommentNode(e)}function isTokenNode(e){return TokenNode.isTokenNode(e)}function sourceIndices(e){if(Array.isArray(e)){const n=e[0];if(!n)return[0,0];const t=e[e.length-1]||n;return[sourceIndices(n)[0],sourceIndices(t)[1]]}const n=e.tokens(),t=n[0],o=n[n.length-1];return t&&o?[t[2],o[3]]:[0,0]}export{CommentNode,f as ComponentValueType,ContainerNodeBaseClass,FunctionNode,SimpleBlockNode,TokenNode,WhitespaceNode,forEach,gatherNodeAncestry,isCommentNode,isFunctionNode,isSimpleBlockNode,isTokenNode,isWhiteSpaceOrCommentNode,isWhitespaceNode,parseCommaSeparatedListOfComponentValues,parseComponentValue,parseListOfComponentValues,replaceComponentValues,sourceIndices,stringify,walk,walkerIndexGenerator};\n","import{sourceIndices as e,TokenNode as n,isTokenNode as t,isWhitespaceNode as r,isCommentNode as a,isWhiteSpaceOrCommentNode as u,isSimpleBlockNode as o,isFunctionNode as i,FunctionNode as l,WhitespaceNode as c,parseCommaSeparatedListOfComponentValues as s,walk as v}from\"@csstools/css-parser-algorithms\";import{isTokenDimension as f,TokenType as m,NumberType as p,mutateUnit as C,isTokenNumber as d,isTokenPercentage as g,isTokenIdent as D,isTokenNumeric as N,isTokenOpenParen as h,isTokenDelim as B,isTokenComma as A,isToken as b,tokenizer as F,tokenize as w,stringify as E,isTokenColon as S,isTokenSemicolon as I}from\"@csstools/css-tokenizer\";class ParseError extends Error{sourceStart;sourceEnd;constructor(e,n,t){super(e),this.name=\"ParseError\",this.sourceStart=n,this.sourceEnd=t}}class ParseErrorWithComponentValues extends ParseError{componentValues;constructor(n,t){super(n,...e(t)),this.componentValues=t}}const y={UnexpectedAdditionOfDimensionOrPercentageWithNumber:\"Unexpected addition of a dimension or percentage with a number.\",UnexpectedSubtractionOfDimensionOrPercentageWithNumber:\"Unexpected subtraction of a dimension or percentage with a number.\"},M=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(M,e=>String.fromCharCode(e.charCodeAt(0)+32))}const T={cm:\"px\",in:\"px\",mm:\"px\",pc:\"px\",pt:\"px\",px:\"px\",q:\"px\",deg:\"deg\",grad:\"deg\",rad:\"deg\",turn:\"deg\",ms:\"s\",s:\"s\",hz:\"hz\",khz:\"hz\"},x=new Map([[\"cm\",e=>e],[\"mm\",e=>10*e],[\"q\",e=>40*e],[\"in\",e=>e/2.54],[\"pc\",e=>e/2.54*6],[\"pt\",e=>e/2.54*72],[\"px\",e=>e/2.54*96]]),P=new Map([[\"deg\",e=>e],[\"grad\",e=>e/.9],[\"rad\",e=>e/180*Math.PI],[\"turn\",e=>e/360]]),k=new Map([[\"deg\",e=>.9*e],[\"grad\",e=>e],[\"rad\",e=>.9*e/180*Math.PI],[\"turn\",e=>.9*e/360]]),O=new Map([[\"hz\",e=>e],[\"khz\",e=>e/1e3]]),W=new Map([[\"cm\",e=>2.54*e],[\"mm\",e=>25.4*e],[\"q\",e=>25.4*e*4],[\"in\",e=>e],[\"pc\",e=>6*e],[\"pt\",e=>72*e],[\"px\",e=>96*e]]),U=new Map([[\"hz\",e=>1e3*e],[\"khz\",e=>e]]),L=new Map([[\"cm\",e=>e/10],[\"mm\",e=>e],[\"q\",e=>4*e],[\"in\",e=>e/25.4],[\"pc\",e=>e/25.4*6],[\"pt\",e=>e/25.4*72],[\"px\",e=>e/25.4*96]]),V=new Map([[\"ms\",e=>e],[\"s\",e=>e/1e3]]),$=new Map([[\"cm\",e=>e/6*2.54],[\"mm\",e=>e/6*25.4],[\"q\",e=>e/6*25.4*4],[\"in\",e=>e/6],[\"pc\",e=>e],[\"pt\",e=>e/6*72],[\"px\",e=>e/6*96]]),Z=new Map([[\"cm\",e=>e/72*2.54],[\"mm\",e=>e/72*25.4],[\"q\",e=>e/72*25.4*4],[\"in\",e=>e/72],[\"pc\",e=>e/72*6],[\"pt\",e=>e],[\"px\",e=>e/72*96]]),z=new Map([[\"cm\",e=>e/96*2.54],[\"mm\",e=>e/96*25.4],[\"q\",e=>e/96*25.4*4],[\"in\",e=>e/96],[\"pc\",e=>e/96*6],[\"pt\",e=>e/96*72],[\"px\",e=>e]]),q=new Map([[\"cm\",e=>e/4/10],[\"mm\",e=>e/4],[\"q\",e=>e],[\"in\",e=>e/4/25.4],[\"pc\",e=>e/4/25.4*6],[\"pt\",e=>e/4/25.4*72],[\"px\",e=>e/4/25.4*96]]),G=new Map([[\"deg\",e=>180*e/Math.PI],[\"grad\",e=>180*e/Math.PI/.9],[\"rad\",e=>e],[\"turn\",e=>180*e/Math.PI/360]]),R=new Map([[\"ms\",e=>1e3*e],[\"s\",e=>e]]),j=new Map([[\"deg\",e=>360*e],[\"grad\",e=>360*e/.9],[\"rad\",e=>360*e/180*Math.PI],[\"turn\",e=>e]]),Y=new Map([[\"cm\",x],[\"mm\",L],[\"q\",q],[\"in\",W],[\"pc\",$],[\"pt\",Z],[\"px\",z],[\"ms\",V],[\"s\",R],[\"deg\",P],[\"grad\",k],[\"rad\",G],[\"turn\",j],[\"hz\",O],[\"khz\",U]]);function convertUnit(e,n){if(!f(e))return n;if(!f(n))return n;const t=toLowerCaseAZ(e[4].unit),r=toLowerCaseAZ(n[4].unit);if(t===r)return n;const a=Y.get(r);if(!a)return n;const u=a.get(t);if(!u)return n;const o=u(n[4].value),i=[m.Dimension,\"\",n[2],n[3],{...n[4],signCharacter:o<0?\"-\":void 0,type:Number.isInteger(o)?p.Integer:p.Number,value:o}];return C(i,e[4].unit),i}function toCanonicalUnit(e){if(!f(e))return e;const n=toLowerCaseAZ(e[4].unit),t=T[n];if(n===t)return e;const r=Y.get(n);if(!r)return e;const a=r.get(t);if(!a)return e;const u=a(e[4].value),o=[m.Dimension,\"\",e[2],e[3],{...e[4],signCharacter:u<0?\"-\":void 0,type:Number.isInteger(u)?p.Integer:p.Number,value:u}];return C(o,t),o}function addition(e,t){if(2!==e.length)return-1;const r=e[0].value;let a=e[1].value;if(d(r)&&d(a)){const e=r[4].value+a[4].value;return new n([m.Number,e.toString(),r[2],a[3],{value:e,type:r[4].type===p.Integer&&a[4].type===p.Integer?p.Integer:p.Number}])}if(g(r)&&g(a)){const e=r[4].value+a[4].value;return new n([m.Percentage,e.toString()+\"%\",r[2],a[3],{value:e}])}if(f(r)&&f(a)&&(a=convertUnit(r,a),toLowerCaseAZ(r[4].unit)===toLowerCaseAZ(a[4].unit))){const e=r[4].value+a[4].value;return new n([m.Dimension,e.toString()+r[4].unit,r[2],a[3],{value:e,type:r[4].type===p.Integer&&a[4].type===p.Integer?p.Integer:p.Number,unit:r[4].unit}])}return(d(r)&&(f(a)||g(a))||d(a)&&(f(r)||g(r)))&&t.onParseError?.(new ParseErrorWithComponentValues(y.UnexpectedAdditionOfDimensionOrPercentageWithNumber,e)),-1}function division(e){if(2!==e.length)return-1;const t=e[0].value,r=e[1].value;if(d(t)&&d(r)){const e=t[4].value/r[4].value;return new n([m.Number,e.toString(),t[2],r[3],{value:e,type:Number.isInteger(e)?p.Integer:p.Number}])}if(g(t)&&d(r)){const e=t[4].value/r[4].value;return new n([m.Percentage,e.toString()+\"%\",t[2],r[3],{value:e}])}if(f(t)&&d(r)){const e=t[4].value/r[4].value;return new n([m.Dimension,e.toString()+t[4].unit,t[2],r[3],{value:e,type:Number.isInteger(e)?p.Integer:p.Number,unit:t[4].unit}])}return-1}function isCalculation(e){return!!e&&\"object\"==typeof e&&\"inputs\"in e&&Array.isArray(e.inputs)&&\"operation\"in e}function solve(e,n){if(-1===e)return-1;const r=[];for(let a=0;a<e.inputs.length;a++){const u=e.inputs[a];if(t(u)){r.push(u);continue}const o=solve(u,n);if(-1===o)return-1;r.push(o)}return e.operation(r,n)}function multiplication(e){if(2!==e.length)return-1;const t=e[0].value,r=e[1].value;if(d(t)&&d(r)){const e=t[4].value*r[4].value;return new n([m.Number,e.toString(),t[2],r[3],{value:e,type:t[4].type===p.Integer&&r[4].type===p.Integer?p.Integer:p.Number}])}if(g(t)&&d(r)){const e=t[4].value*r[4].value;return new n([m.Percentage,e.toString()+\"%\",t[2],r[3],{value:e}])}if(d(t)&&g(r)){const e=t[4].value*r[4].value;return new n([m.Percentage,e.toString()+\"%\",t[2],r[3],{value:e}])}if(f(t)&&d(r)){const e=t[4].value*r[4].value;return new n([m.Dimension,e.toString()+t[4].unit,t[2],r[3],{value:e,type:t[4].type===p.Integer&&r[4].type===p.Integer?p.Integer:p.Number,unit:t[4].unit}])}if(d(t)&&f(r)){const e=t[4].value*r[4].value;return new n([m.Dimension,e.toString()+r[4].unit,t[2],r[3],{value:e,type:t[4].type===p.Integer&&r[4].type===p.Integer?p.Integer:p.Number,unit:r[4].unit}])}return-1}function resolveGlobalsAndConstants(e,r){for(let a=0;a<e.length;a++){const u=e[a];if(!t(u))continue;const o=u.value;if(!D(o))continue;const i=toLowerCaseAZ(o[4].value);switch(i){case\"e\":e.splice(a,1,new n([m.Number,Math.E.toString(),o[2],o[3],{value:Math.E,type:p.Number}]));break;case\"pi\":e.splice(a,1,new n([m.Number,Math.PI.toString(),o[2],o[3],{value:Math.PI,type:p.Number}]));break;case\"infinity\":e.splice(a,1,new n([m.Number,\"infinity\",o[2],o[3],{value:1/0,type:p.Number}]));break;case\"-infinity\":e.splice(a,1,new n([m.Number,\"-infinity\",o[2],o[3],{value:-1/0,type:p.Number}]));break;case\"nan\":e.splice(a,1,new n([m.Number,\"NaN\",o[2],o[3],{value:Number.NaN,type:p.Number}]));break;default:if(r.has(i)){const t=r.get(i);e.splice(a,1,new n(t))}}}return e}function unary(e){if(1!==e.length)return-1;const n=e[0].value;return N(n)?e[0]:-1}function resultToCalculation(e,n,t){return f(n)?dimensionToCalculation(e,n[4].unit,t):g(n)?percentageToCalculation(e,t):d(n)?numberToCalculation(e,t):-1}function dimensionToCalculation(e,t,r){const a=e.tokens();return{inputs:[new n([m.Dimension,r.toString()+t,a[0][2],a[a.length-1][3],{value:r,type:Number.isInteger(r)?p.Integer:p.Number,unit:t}])],operation:unary}}function percentageToCalculation(e,t){const r=e.tokens();return{inputs:[new n([m.Percentage,t.toString()+\"%\",r[0][2],r[r.length-1][3],{value:t}])],operation:unary}}function numberToCalculation(e,t){const r=e.tokens();return{inputs:[new n([m.Number,t.toString(),r[0][2],r[r.length-1][3],{value:t,type:Number.isInteger(t)?p.Integer:p.Number}])],operation:unary}}function solveACos(e,n){const t=n.value;if(!d(t))return-1;return dimensionToCalculation(e,\"rad\",Math.acos(t[4].value))}function solveASin(e,n){const t=n.value;if(!d(t))return-1;return dimensionToCalculation(e,\"rad\",Math.asin(t[4].value))}function solveATan(e,n){const t=n.value;if(!d(t))return-1;return dimensionToCalculation(e,\"rad\",Math.atan(t[4].value))}function isDimensionOrNumber(e){return f(e)||d(e)}function arrayOfSameNumeric(e){if(0===e.length)return!0;const n=e[0];if(!N(n))return!1;if(1===e.length)return!0;if(f(n)){const t=toLowerCaseAZ(n[4].unit);for(let r=1;r<e.length;r++){const a=e[r];if(n[0]!==a[0])return!1;if(t!==toLowerCaseAZ(a[4].unit))return!1}return!0}for(let t=1;t<e.length;t++){const r=e[t];if(n[0]!==r[0])return!1}return!0}function twoOfSameNumeric(e,n){return!!N(e)&&(f(e)?e[0]===n[0]&&toLowerCaseAZ(e[4].unit)===toLowerCaseAZ(n[4].unit):e[0]===n[0])}function solveATan2(e,n,t){const r=n.value;if(!isDimensionOrNumber(r))return-1;const a=convertUnit(r,t.value);if(!twoOfSameNumeric(r,a))return-1;return dimensionToCalculation(e,\"rad\",Math.atan2(r[4].value,a[4].value))}function solveAbs(e,n,t){const r=n.value;if(!N(r))return-1;if(!t.rawPercentages&&g(r))return-1;return resultToCalculation(e,r,Math.abs(r[4].value))}function solveClamp(e,n,r,a,u){if(!t(n)||!t(r)||!t(a))return-1;const o=n.value;if(!N(o))return-1;if(!u.rawPercentages&&g(o))return-1;const i=convertUnit(o,r.value);if(!twoOfSameNumeric(o,i))return-1;const l=convertUnit(o,a.value);if(!twoOfSameNumeric(o,l))return-1;return resultToCalculation(e,o,Math.max(o[4].value,Math.min(i[4].value,l[4].value)))}function solveCos(e,n){const t=n.value;if(!isDimensionOrNumber(t))return-1;let r=t[4].value;if(f(t))switch(t[4].unit.toLowerCase()){case\"rad\":break;case\"deg\":r=P.get(\"rad\")(t[4].value);break;case\"grad\":r=k.get(\"rad\")(t[4].value);break;case\"turn\":r=j.get(\"rad\")(t[4].value);break;default:return-1}return r=Math.cos(r),numberToCalculation(e,r)}function solveExp(e,n){const t=n.value;if(!d(t))return-1;return numberToCalculation(e,Math.exp(t[4].value))}function solveHypot(e,n,r){if(!n.every(t))return-1;const a=n[0].value;if(!N(a))return-1;if(!r.rawPercentages&&g(a))return-1;const u=n.map(e=>convertUnit(a,e.value));if(!arrayOfSameNumeric(u))return-1;const o=u.map(e=>e[4].value),i=Math.hypot(...o);return resultToCalculation(e,a,i)}function solveMax(e,n,r){if(!n.every(t))return-1;const a=n[0].value;if(!N(a))return-1;if(!r.rawPercentages&&g(a))return-1;const u=n.map(e=>convertUnit(a,e.value));if(!arrayOfSameNumeric(u))return-1;const o=u.map(e=>e[4].value),i=Math.max(...o);return resultToCalculation(e,a,i)}function solveMin(e,n,r){if(!n.every(t))return-1;const a=n[0].value;if(!N(a))return-1;if(!r.rawPercentages&&g(a))return-1;const u=n.map(e=>convertUnit(a,e.value));if(!arrayOfSameNumeric(u))return-1;const o=u.map(e=>e[4].value),i=Math.min(...o);return resultToCalculation(e,a,i)}function solveMod(e,n,t){const r=n.value;if(!N(r))return-1;const a=convertUnit(r,t.value);if(!twoOfSameNumeric(r,a))return-1;let u;return u=0===a[4].value?Number.NaN:Number.isFinite(r[4].value)&&(Number.isFinite(a[4].value)||(a[4].value!==Number.POSITIVE_INFINITY||r[4].value!==Number.NEGATIVE_INFINITY&&!Object.is(0*r[4].value,-0))&&(a[4].value!==Number.NEGATIVE_INFINITY||r[4].value!==Number.POSITIVE_INFINITY&&!Object.is(0*r[4].value,0)))?Number.isFinite(a[4].value)?(r[4].value%a[4].value+a[4].value)%a[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,u)}function solvePow(e,n,t){const r=n.value,a=t.value;if(!d(r))return-1;if(!twoOfSameNumeric(r,a))return-1;return numberToCalculation(e,Math.pow(r[4].value,a[4].value))}function solveRem(e,n,t){const r=n.value;if(!N(r))return-1;const a=convertUnit(r,t.value);if(!twoOfSameNumeric(r,a))return-1;let u;return u=0===a[4].value?Number.NaN:Number.isFinite(r[4].value)?Number.isFinite(a[4].value)?r[4].value%a[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,u)}function solveRound(e,n,t,r,a){const u=t.value;if(!N(u))return-1;if(!a.rawPercentages&&g(u))return-1;const o=convertUnit(u,r.value);if(!twoOfSameNumeric(u,o))return-1;let i;if(0===o[4].value)i=Number.NaN;else if(Number.isFinite(u[4].value)||Number.isFinite(o[4].value))if(!Number.isFinite(u[4].value)&&Number.isFinite(o[4].value))i=u[4].value;else if(Number.isFinite(u[4].value)&&!Number.isFinite(o[4].value))switch(n){case\"down\":i=u[4].value<0?-1/0:Object.is(-0,0*u[4].value)?-0:0;break;case\"up\":i=u[4].value>0?1/0:Object.is(0,0*u[4].value)?0:-0;break;default:i=Object.is(0,0*u[4].value)?0:-0}else if(Number.isFinite(o[4].value))switch(n){case\"down\":i=Math.floor(u[4].value/o[4].value)*o[4].value;break;case\"up\":i=Math.ceil(u[4].value/o[4].value)*o[4].value;break;case\"to-zero\":i=Math.trunc(u[4].value/o[4].value)*o[4].value;break;default:{let e=Math.floor(u[4].value/o[4].value)*o[4].value,n=Math.ceil(u[4].value/o[4].value)*o[4].value;if(e>n){const t=e;e=n,n=t}const t=Math.abs(u[4].value-e),r=Math.abs(u[4].value-n);i=t===r?n:t<r?e:n;break}}else i=u[4].value;else i=Number.NaN;return resultToCalculation(e,u,i)}function solveSign(e,n,t){const r=n.value;if(!N(r))return-1;if(!t.rawPercentages&&g(r))return-1;return numberToCalculation(e,Math.sign(r[4].value))}function solveSin(e,n){const t=n.value;if(!isDimensionOrNumber(t))return-1;let r=t[4].value;if(f(t))switch(toLowerCaseAZ(t[4].unit)){case\"rad\":break;case\"deg\":r=P.get(\"rad\")(t[4].value);break;case\"grad\":r=k.get(\"rad\")(t[4].value);break;case\"turn\":r=j.get(\"rad\")(t[4].value);break;default:return-1}return r=Math.sin(r),numberToCalculation(e,r)}function solveSqrt(e,n){const t=n.value;if(!d(t))return-1;return numberToCalculation(e,Math.sqrt(t[4].value))}function solveTan(e,n){const t=n.value;if(!isDimensionOrNumber(t))return-1;const r=t[4].value;let a=0,u=t[4].value;if(f(t))switch(toLowerCaseAZ(t[4].unit)){case\"rad\":a=G.get(\"deg\")(r);break;case\"deg\":a=r,u=P.get(\"rad\")(r);break;case\"grad\":a=k.get(\"deg\")(r),u=k.get(\"rad\")(r);break;case\"turn\":a=j.get(\"deg\")(r),u=j.get(\"rad\")(r);break;default:return-1}const o=a/90;return u=a%90==0&&o%2!=0?o>0?1/0:-1/0:Math.tan(u),numberToCalculation(e,u)}function subtraction(e,t){if(2!==e.length)return-1;const r=e[0].value;let a=e[1].value;if(d(r)&&d(a)){const e=r[4].value-a[4].value;return new n([m.Number,e.toString(),r[2],a[3],{value:e,type:r[4].type===p.Integer&&a[4].type===p.Integer?p.Integer:p.Number}])}if(g(r)&&g(a)){const e=r[4].value-a[4].value;return new n([m.Percentage,e.toString()+\"%\",r[2],a[3],{value:e}])}if(f(r)&&f(a)&&(a=convertUnit(r,a),toLowerCaseAZ(r[4].unit)===toLowerCaseAZ(a[4].unit))){const e=r[4].value-a[4].value;return new n([m.Dimension,e.toString()+r[4].unit,r[2],a[3],{value:e,type:r[4].type===p.Integer&&a[4].type===p.Integer?p.Integer:p.Number,unit:r[4].unit}])}return(d(r)&&(f(a)||g(a))||d(a)&&(f(r)||g(r)))&&t.onParseError?.(new ParseErrorWithComponentValues(y.UnexpectedSubtractionOfDimensionOrPercentageWithNumber,e)),-1}function solveLog(e,n){if(1===n.length){const r=n[0];if(!r||!t(r))return-1;const a=r.value;if(!d(a))return-1;return numberToCalculation(e,Math.log(a[4].value))}if(2===n.length){const r=n[0];if(!r||!t(r))return-1;const a=r.value;if(!d(a))return-1;const u=n[1];if(!u||!t(u))return-1;const o=u.value;if(!d(o))return-1;return numberToCalculation(e,Math.log(a[4].value)/Math.log(o[4].value))}return-1}const _=/^none$/i;function isNone(e){if(Array.isArray(e)){const n=e.filter(e=>!(r(e)&&a(e)));return 1===n.length&&isNone(n[0])}if(!t(e))return!1;const n=e.value;return!!D(n)&&_.test(n[4].value)}const H=String.fromCodePoint(0);function solveRandom(e,n,t,r,a,u){if(-1===n.fixed&&!u.randomCaching)return-1;u.randomCaching||(u.randomCaching={propertyName:\"\",propertyN:0,elementID:\"\",documentID:\"\"}),u.randomCaching&&!u.randomCaching.propertyN&&(u.randomCaching.propertyN=0);const o=t.value;if(!N(o))return-1;const i=convertUnit(o,r.value);if(!twoOfSameNumeric(o,i))return-1;let l=null;if(a&&(l=convertUnit(o,a.value),!twoOfSameNumeric(o,l)))return-1;if(!Number.isFinite(o[4].value))return resultToCalculation(e,o,Number.NaN);if(!Number.isFinite(i[4].value))return resultToCalculation(e,o,Number.NaN);if(!Number.isFinite(i[4].value-o[4].value))return resultToCalculation(e,o,Number.NaN);if(l&&!Number.isFinite(l[4].value))return resultToCalculation(e,o,o[4].value);const c=-1===n.fixed?sfc32(crc32([n.dashedIdent?n.dashedIdent:`${u.randomCaching?.propertyName} ${u.randomCaching.propertyN++}`,n.elementShared?\"\":u.randomCaching.elementID,u.randomCaching.documentID].join(H))):()=>n.fixed;let s=o[4].value,v=i[4].value;if(s>v&&([s,v]=[v,s]),l&&(l[4].value<=0||Math.abs(s-v)/l[4].value>1e10)&&(l=null),l){const n=Math.max(l[4].value/1e3,1e-9),t=[s];let r=0;for(;;){r+=l[4].value;const e=s+r;if(!(e+n<v)){t.push(v);break}if(t.push(e),e+l[4].value-n>v)break}const a=c();return resultToCalculation(e,o,Number(t[Math.floor(t.length*a)].toFixed(5)))}const f=c();return resultToCalculation(e,o,Number((f*(v-s)+s).toFixed(5)))}function sfc32(e=.34944106645296036,n=.19228640875738723,t=.8784393832007205,r=.04850964319275053){return()=>{const a=((e|=0)+(n|=0)|0)+(r|=0)|0;return r=r+1|0,e=n^n>>>9,n=(t|=0)+(t<<3)|0,t=(t=t<<21|t>>>11)+a|0,(a>>>0)/4294967296}}function crc32(e){let n=0,t=0,r=0;n^=-1;for(let a=0,u=e.length;a<u;a++)r=255&(n^e.charCodeAt(a)),t=Number(\"0x\"+\"00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D\".substring(9*r,9*r+8)),n=n>>>8^t;return(-1^n)>>>0}const J=new Map([[\"abs\",function abs(e,n,t){return singleNodeSolver(e,n,t,solveAbs)}],[\"acos\",function acos(e,n,t){return singleNodeSolver(e,n,t,solveACos)}],[\"asin\",function asin(e,n,t){return singleNodeSolver(e,n,t,solveASin)}],[\"atan\",function atan(e,n,t){return singleNodeSolver(e,n,t,solveATan)}],[\"atan2\",function atan2(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveATan2)}],[\"calc\",calc$1],[\"clamp\",function clamp(r,a,o){const i=resolveGlobalsAndConstants([...r.value.filter(e=>!u(e))],a),c=[],s=[],v=[];{let e=c;for(let n=0;n<i.length;n++){const r=i[n];if(t(r)&&A(r.value)){if(e===v)return-1;if(e===s){e=v;continue}if(e===c){e=s;continue}return-1}e.push(r)}}const f=isNone(c),p=isNone(v);if(f&&p)return calc$1(calcWrapper(r,s),a,o);const C=solve(calc$1(calcWrapper(r,s),a,o),o);if(-1===C)return-1;if(f){const t=solve(calc$1(calcWrapper(r,v),a,o),o);return-1===t?-1:solveMin((d=r,g=C,D=t,new l([m.Function,\"min(\",d.name[2],d.name[3],{value:\"min\"}],[m.CloseParen,\")\",d.endToken[2],d.endToken[3],void 0],[g,new n([m.Comma,\",\",...e(g),void 0]),D])),[C,t],o)}if(p){const e=solve(calc$1(calcWrapper(r,c),a,o),o);return-1===e?-1:solveMax(maxWrapper(r,e,C),[e,C],o)}var d,g,D;const N=solve(calc$1(calcWrapper(r,c),a,o),o);if(-1===N)return-1;const h=solve(calc$1(calcWrapper(r,v),a,o),o);if(-1===h)return-1;return solveClamp(r,N,C,h,o)}],[\"cos\",function cos(e,n,t){return singleNodeSolver(e,n,t,solveCos)}],[\"exp\",function exp(e,n,t){return singleNodeSolver(e,n,t,solveExp)}],[\"hypot\",function hypot(e,n,t){return variadicNodesSolver(e,n,t,solveHypot)}],[\"log\",function log(e,n,t){return variadicNodesSolver(e,n,t,solveLog)}],[\"max\",function max(e,n,t){return variadicNodesSolver(e,n,t,solveMax)}],[\"min\",function min(e,n,t){return variadicNodesSolver(e,n,t,solveMin)}],[\"mod\",function mod(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveMod)}],[\"pow\",function pow(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solvePow)}],[\"random\",function random(e,n,t){const r=parseRandomValueSharing(e,e.value.filter(e=>!u(e)),n,t);if(-1===r)return-1;const[a,o]=r,i=variadicArguments(e,o,n,t);if(-1===i)return-1;const[l,c,s]=i;if(!l||!c)return-1;return solveRandom(e,a,l,c,s,t)}],[\"rem\",function rem(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveRem)}],[\"round\",function round(e,r,a){const o=resolveGlobalsAndConstants([...e.value.filter(e=>!u(e))],r);let i=\"\",l=!1;const c=[],s=[];{let e=c;for(let n=0;n<o.length;n++){const r=o[n];if(!i&&0===c.length&&0===s.length&&t(r)&&D(r.value)){const e=r.value[4].value.toLowerCase();if(K.has(e)){i=e;continue}}if(t(r)&&A(r.value)){if(e===s)return-1;if(e===c&&i&&0===c.length)continue;if(e===c){l=!0,e=s;continue}return-1}e.push(r)}}const v=solve(calc$1(calcWrapper(e,c),r,a),a);if(-1===v)return-1;l||0!==s.length||s.push(new n([m.Number,\"1\",v.value[2],v.value[3],{value:1,type:p.Integer}]));const f=solve(calc$1(calcWrapper(e,s),r,a),a);if(-1===f)return-1;i||(i=\"nearest\");return solveRound(e,i,v,f,a)}],[\"sign\",function sign(e,n,t){return singleNodeSolver(e,n,t,solveSign)}],[\"sin\",function sin(e,n,t){return singleNodeSolver(e,n,t,solveSin)}],[\"sqrt\",function sqrt(e,n,t){return singleNodeSolver(e,n,t,solveSqrt)}],[\"tan\",function tan(e,n,t){return singleNodeSolver(e,n,t,solveTan)}]]);function calc$1(e,n,r){const a=resolveGlobalsAndConstants([...e.value.filter(e=>!u(e))],n);if(1===a.length&&t(a[0]))return{inputs:[a[0]],operation:unary};let l=0;for(;l<a.length;){const e=a[l];if(o(e)&&h(e.startToken)){const t=calc$1(e,n,r);if(-1===t)return-1;a.splice(l,1,t);continue}if(i(e)){const t=J.get(e.getName().toLowerCase());if(!t)return-1;const u=t(e,n,r);if(-1===u)return-1;a.splice(l,1,u);continue}l++}if(l=0,1===a.length&&isCalculation(a[0]))return a[0];for(;l<a.length;){const e=a[l];if(!e||!t(e)&&!isCalculation(e)){l++;continue}const n=a[l+1];if(!n||!t(n)){l++;continue}const r=n.value;if(!B(r)||\"*\"!==r[4].value&&\"/\"!==r[4].value){l++;continue}const u=a[l+2];if(!u||!t(u)&&!isCalculation(u))return-1;\"*\"!==r[4].value?\"/\"!==r[4].value?l++:a.splice(l,3,{inputs:[e,u],operation:division}):a.splice(l,3,{inputs:[e,u],operation:multiplication})}if(l=0,1===a.length&&isCalculation(a[0]))return a[0];for(;l<a.length;){const e=a[l];if(!e||!t(e)&&!isCalculation(e)){l++;continue}const n=a[l+1];if(!n||!t(n)){l++;continue}const r=n.value;if(!B(r)||\"+\"!==r[4].value&&\"-\"!==r[4].value){l++;continue}const u=a[l+2];if(!u||!t(u)&&!isCalculation(u))return-1;\"+\"!==r[4].value?\"-\"!==r[4].value?l++:a.splice(l,3,{inputs:[e,u],operation:subtraction}):a.splice(l,3,{inputs:[e,u],operation:addition})}return 1===a.length&&isCalculation(a[0])?a[0]:-1}function singleNodeSolver(e,n,t,r){const a=singleArgument(e,n,t);return-1===a?-1:r(e,a,t)}function singleArgument(e,n,t){const r=resolveGlobalsAndConstants([...e.value.filter(e=>!u(e))],n),a=solve(calc$1(calcWrapper(e,r),n,t),t);return-1===a?-1:a}function twoCommaSeparatedNodesSolver(e,n,t,r){const a=twoCommaSeparatedArguments(e,n,t);if(-1===a)return-1;const[u,o]=a;return r(e,u,o,t)}function twoCommaSeparatedArguments(e,n,r){const a=resolveGlobalsAndConstants([...e.value.filter(e=>!u(e))],n),o=[],i=[];{let e=o;for(let n=0;n<a.length;n++){const r=a[n];if(t(r)&&A(r.value)){if(e===i)return-1;if(e===o){e=i;continue}return-1}e.push(r)}}const l=solve(calc$1(calcWrapper(e,o),n,r),r);if(-1===l)return-1;const c=solve(calc$1(calcWrapper(e,i),n,r),r);return-1===c?-1:[l,c]}function variadicNodesSolver(e,n,t,r){const a=variadicArguments(e,e.value,n,t);return-1===a?-1:r(e,a,t)}function variadicArguments(e,n,r,a){const o=resolveGlobalsAndConstants([...n.filter(e=>!u(e))],r),i=[];{const n=[];let u=[];for(let e=0;e<o.length;e++){const r=o[e];t(r)&&A(r.value)?(n.push(u),u=[]):u.push(r)}n.push(u);for(let t=0;t<n.length;t++){if(0===n[t].length)return-1;const u=solve(calc$1(calcWrapper(e,n[t]),r,a),a);if(-1===u)return-1;i.push(u)}}return i}const K=new Set([\"nearest\",\"up\",\"down\",\"to-zero\"]);function parseRandomValueSharing(e,n,r,a){const u={isAuto:!1,dashedIdent:\"\",fixed:-1,elementShared:!1},o=n[0];if(!t(o)||!D(o.value))return[u,n];for(let o=0;o<n.length;o++){const i=n[o];if(!t(i))return-1;if(A(i.value))return[u,n.slice(o+1)];if(!D(i.value))return-1;const l=i.value[4].value.toLowerCase();if(\"element-shared\"!==l){if(\"fixed\"===l){if(u.elementShared||u.dashedIdent||u.isAuto)return-1;o++;const t=n[o];if(!t)return-1;const i=solve(calc$1(calcWrapper(e,[t]),r,a),a);if(-1===i)return-1;if(!d(i.value))return-1;if(i.value[4].value<0||i.value[4].value>1)return-1;u.fixed=Math.max(0,Math.min(i.value[4].value,1-1e-9));continue}if(\"auto\"!==l)if(l.startsWith(\"--\")){if(-1!==u.fixed||u.isAuto)return-1;u.dashedIdent=l}else;else{if(-1!==u.fixed||u.dashedIdent)return-1;u.isAuto=!0}}else{if(-1!==u.fixed)return-1;u.elementShared=!0}}return-1}function calcWrapper(e,n){return new l([m.Function,\"calc(\",e.name[2],e.name[3],{value:\"calc\"}],[m.CloseParen,\")\",e.endToken[2],e.endToken[3],void 0],n)}function maxWrapper(t,r,a){return new l([m.Function,\"max(\",t.name[2],t.name[3],{value:\"max\"}],[m.CloseParen,\")\",t.endToken[2],t.endToken[3],void 0],[r,new n([m.Comma,\",\",...e(r),void 0]),a])}function patchNaN(e){if(-1===e)return-1;if(i(e))return e;const t=e.value;return N(t)&&Number.isNaN(t[4].value)?d(t)?new l([m.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[m.CloseParen,\")\",t[2],t[3],void 0],[new n([m.Ident,\"NaN\",t[2],t[3],{value:\"NaN\"}])]):f(t)?new l([m.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[m.CloseParen,\")\",t[2],t[3],void 0],[new n([m.Ident,\"NaN\",t[2],t[3],{value:\"NaN\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Dimension,\"1\"+t[4].unit,t[2],t[3],{value:1,type:p.Integer,unit:t[4].unit}])]):g(t)?new l([m.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[m.CloseParen,\")\",t[2],t[3],void 0],[new n([m.Ident,\"NaN\",t[2],t[3],{value:\"NaN\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Percentage,\"1%\",t[2],t[3],{value:1}])]):-1:e}function patchInfinity(e){if(-1===e)return-1;if(i(e))return e;const t=e.value;if(!N(t))return e;if(Number.isFinite(t[4].value)||Number.isNaN(t[4].value))return e;let r=\"\";return Number.NEGATIVE_INFINITY===t[4].value&&(r=\"-\"),d(t)?new l([m.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[m.CloseParen,\")\",t[2],t[3],void 0],[new n([m.Ident,r+\"infinity\",t[2],t[3],{value:r+\"infinity\"}])]):f(t)?new l([m.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[m.CloseParen,\")\",t[2],t[3],void 0],[new n([m.Ident,r+\"infinity\",t[2],t[3],{value:r+\"infinity\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Dimension,\"1\"+t[4].unit,t[2],t[3],{value:1,type:p.Integer,unit:t[4].unit}])]):new l([m.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[m.CloseParen,\")\",t[2],t[3],void 0],[new n([m.Ident,r+\"infinity\",t[2],t[3],{value:r+\"infinity\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new c([[m.Whitespace,\" \",t[2],t[3],void 0]]),new n([m.Percentage,\"1%\",t[2],t[3],{value:1}])])}function patchMinusZero(e){if(-1===e)return-1;if(i(e))return e;const n=e.value;return N(n)&&Object.is(-0,n[4].value)?(\"-0\"===n[1]||(g(n)?n[1]=\"-0%\":f(n)?n[1]=\"-0\"+n[4].unit:n[1]=\"-0\"),e):e}function patchPrecision(e,n=13){if(-1===e)return-1;if(n<=0)return e;if(i(e))return e;const t=e.value;if(!N(t))return e;if(Number.isInteger(t[4].value))return e;const r=Number(t[4].value.toFixed(n)).toString();return d(t)?t[1]=r:g(t)?t[1]=r+\"%\":f(t)&&(t[1]=r+t[4].unit),e}function patchCanonicalUnit(e){return-1===e?-1:i(e)?e:f(e.value)?(e.value=toCanonicalUnit(e.value),e):e}function patchCalcResult(e,n){let t=e;return n?.toCanonicalUnits&&(t=patchCanonicalUnit(t)),t=patchPrecision(t,n?.precision),t=patchMinusZero(t),n?.censorIntoStandardRepresentableValues||(t=patchNaN(t),t=patchInfinity(t)),t}function tokenizeGlobals(e){const n=new Map;if(!e)return n;for(const[t,r]of e)if(b(r))n.set(t,r);else if(\"string\"==typeof r){const e=F({css:r}),a=e.nextToken();if(e.nextToken(),!e.endOfFile())continue;if(!N(a))continue;n.set(t,a);continue}return n}function calc(e,n){return calcFromComponentValues(s(w({css:e}),{}),n).map(e=>e.map(e=>E(...e.tokens())).join(\"\")).join(\",\")}function calcFromComponentValues(e,n){const t=tokenizeGlobals(n?.globals);return replaceComponentValues(e,e=>{if(!i(e))return;const r=J.get(e.getName().toLowerCase());if(!r)return;const a=patchCalcResult(solve(r(e,t,n??{}),n??{}),n);return-1!==a?a:void 0})}function replaceComponentValues(n,r){for(let a=0;a<n.length;a++){const o=n[a];v(o,(n,a)=>{if(\"number\"!=typeof a)return;const o=r(n.node);if(!o)return;const i=[o],l=n.parent.value[a-1];t(l)&&B(l.value)&&(\"-\"===l.value[4].value||\"+\"===l.value[4].value)&&i.splice(0,0,new c([[m.Whitespace,\" \",...e(n.node),void 0]]));const s=n.parent.value[a+1];!s||u(s)||t(s)&&(A(s.value)||S(s.value)||I(s.value)||B(s.value)&&\"-\"!==s.value[4].value&&\"+\"!==s.value[4].value)||i.push(new c([[m.Whitespace,\" \",...e(n.node),void 0]])),n.parent.value.splice(a,1,...i)})}return n}const Q=new Set(J.keys());export{ParseError,y as ParseErrorMessage,ParseErrorWithComponentValues,calc,calcFromComponentValues,Q as mathFunctionNames};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});exports.LRUCache=void 0;var x=typeof performance==\"object\"&&performance&&typeof performance.now==\"function\"?performance:Date,U=new Set,R=typeof process==\"object\"&&process?process:{},I=(a,t,e,i)=>{typeof R.emitWarning==\"function\"?R.emitWarning(a,t,e,i):console.error(`[${e}] ${t}: ${a}`)},C=globalThis.AbortController,L=globalThis.AbortSignal;if(typeof C>\"u\"){L=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new L;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let a=R.env?.LRU_CACHE_IGNORE_AC_WARNING!==\"1\",t=()=>{a&&(a=!1,I(\"AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.\",\"NO_ABORT_CONTROLLER\",\"ENOTSUP\",t))}}var G=a=>!U.has(a),H=Symbol(\"type\"),y=a=>a&&a===Math.floor(a)&&a>0&&isFinite(a),M=a=>y(a)?a<=Math.pow(2,8)?Uint8Array:a<=Math.pow(2,16)?Uint16Array:a<=Math.pow(2,32)?Uint32Array:a<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class a{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];a.#o=!0;let i=new a(t,e);return a.#o=!1,i}constructor(t,e){if(!a.#o)throw new TypeError(\"instantiate Stack using Stack.create(n)\");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=class a{#o;#c;#w;#C;#S;#L;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#I;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,h)=>t.#G(e,i,s,h),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:h,updateAgeOnGet:n,updateAgeOnHas:o,allowStale:r,dispose:f,onInsert:m,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:w,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!=\"function\")throw new TypeError(\"perf option must have a now() method if specified\");if(this.#m=v??x,e!==0&&!y(e))throw new TypeError(\"max option must be a nonnegative integer\");let O=e?M(e):Array;if(!O)throw new Error(\"invalid max value: \"+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError(\"cannot set sizeCalculation without setting maxSize or maxEntrySize\");if(typeof this.sizeCalculation!=\"function\")throw new TypeError(\"sizeCalculation set to non-function\")}if(w!==void 0&&typeof w!=\"function\")throw new TypeError(\"memoMethod must be a function if defined\");if(this.#U=w,l!==void 0&&typeof l!=\"function\")throw new TypeError(\"fetchMethod must be a function if specified\");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof f==\"function\"&&(this.#w=f),typeof m==\"function\"&&(this.#C=m),typeof c==\"function\"?(this.#S=c,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#I=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError(\"maxSize must be a positive integer if specified\");if(!y(this.maxEntrySize))throw new TypeError(\"maxEntrySize must be a positive integer if specified\");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!n,this.updateAgeOnHas=!!o,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!h,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError(\"ttl must be a positive integer if specified\");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError(\"At least one of max, maxSize, or ttl is required\");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E=\"LRU_CACHE_UNBOUNDED\";G(E)&&(U.add(E),I(\"TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.\",\"UnboundedCacheWarning\",E,a))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(n,o,r=this.#m.now())=>{if(e[n]=o!==0?r:0,t[n]=o,i?.[n]&&(clearTimeout(i[n]),i[n]=void 0),o!==0&&i){let f=setTimeout(()=>{this.#p(n)&&this.#E(this.#i[n],\"expire\")},o+1);f.unref&&f.unref(),i[n]=f}},this.#R=n=>{e[n]=t[n]!==0?this.#m.now():0},this.#z=(n,o)=>{if(t[o]){let r=t[o],f=e[o];if(!r||!f)return;n.ttl=r,n.start=f,n.now=s||h();let m=n.now-f;n.remainingTTL=r-m}};let s=0,h=()=>{let n=this.#m.now();if(this.ttlResolution>0){s=n;let o=setTimeout(()=>s=0,this.ttlResolution);o.unref&&o.unref()}return n};this.getRemainingTTL=n=>{let o=this.#s.get(n);if(o===void 0)return 0;let r=t[o],f=e[o];if(!r||!f)return 1/0;let m=(s||h())-f;return r-m},this.#p=n=>{let o=e[n],r=t[n];return!!r&&!!o&&(s||h())-o>r}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,h)=>{if(this.#e(i))return 0;if(!y(s))if(h){if(typeof h!=\"function\")throw new TypeError(\"sizeCalculation must be a function\");if(s=h(i,e),!y(s))throw new TypeError(\"sizeCalculation return invalid (expect positive integer)\")}else throw new TypeError(\"invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.\");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let h=this.#c-t[e];for(;this.#_>h;)this.#x(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError(\"cannot set size without setting maxSize or maxEntrySize on cache\");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]=\"LRUCache\";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;if(h!==void 0&&t(h,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],h=this.#e(s)?s.__staleWhileFetching:s;h!==void 0&&t.call(e,h,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],\"expire\"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let h={value:s};if(this.#d&&this.#A){let n=this.#d[e],o=this.#A[e];if(n&&o){let r=n-(this.#m.now()-o);h.ttl=r,h.start=Date.now()}}return this.#y&&(h.size=this.#y[e]),h}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],h=this.#e(s)?s.__staleWhileFetching:s;if(h===void 0||i===void 0)continue;let n={value:h};if(this.#d&&this.#A){n.ttl=this.#d[e];let o=this.#m.now()-this.#A[e];n.start=Math.floor(Date.now()-o)}this.#y&&(n.size=this.#y[e]),t.unshift([i,n])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:h,noDisposeOnSet:n=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:r}=i,{noUpdateTTL:f=this.noUpdateTTL}=i,m=this.#P(t,e,i.size||0,o);if(this.maxEntrySize&&m>this.maxEntrySize)return r&&(r.set=\"miss\",r.maxEntrySizeExceeded=!0),this.#E(t,\"set\"),this;let c=this.#n===0?void 0:this.#s.get(t);if(c===void 0)c=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#x(!1):this.#n,this.#i[c]=t,this.#t[c]=e,this.#s.set(t,c),this.#a[this.#h]=c,this.#u[c]=this.#h,this.#h=c,this.#n++,this.#M(c,m,r),r&&(r.set=\"add\"),f=!1,this.#I&&this.#C?.(e,t,\"add\");else{this.#D(c);let d=this.#t[c];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error(\"replaced\"));let{__staleWhileFetching:g}=d;g!==void 0&&!n&&(this.#T&&this.#w?.(g,t,\"set\"),this.#f&&this.#r?.push([g,t,\"set\"]))}else n||(this.#T&&this.#w?.(d,t,\"set\"),this.#f&&this.#r?.push([d,t,\"set\"]));if(this.#W(c),this.#M(c,m,r),this.#t[c]=e,r){r.set=\"replace\";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set=\"update\");this.#I&&this.onInsert?.(e,t,e===d?\"update\":\"replace\")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(f||this.#N(c,s,h),r&&this.#z(r,c)),!n&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#x(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#x(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error(\"evicted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,\"evict\"),this.#f&&this.#r?.push([s,i,\"evict\"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,h=this.#s.get(t);if(h!==void 0){let n=this.#t[h];if(this.#e(n)&&n.__staleWhileFetching===void 0)return!1;if(this.#p(h))s&&(s.has=\"stale\",this.#z(s,h));else return i&&this.#R(h),s&&(s.has=\"hit\",this.#z(s,h)),!0}else s&&(s.has=\"miss\");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let h=this.#t[s];return this.#e(h)?h.__staleWhileFetching:h}#G(t,e,i,s){let h=e===void 0?void 0:this.#t[e];if(this.#e(h))return h;let n=new C,{signal:o}=i;o?.addEventListener(\"abort\",()=>n.abort(o.reason),{signal:n.signal});let r={signal:n.signal,options:i,context:s},f=(p,_=!1)=>{let{aborted:l}=n.signal,w=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=n.signal.reason,w&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!w&&!_)return c(n.signal.reason,b);let S=g,u=this.#t[e];return(u===g||w&&_&&u===void 0)&&(p===void 0?S.__staleWhileFetching!==void 0?this.#t[e]=S.__staleWhileFetching:this.#E(t,\"fetch\"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},m=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),c(p,!1)),c=(p,_)=>{let{aborted:l}=n.signal,w=l&&i.allowStaleOnFetchAbort,b=w||i.allowStaleOnFetchRejection,S=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!S||!_&&u.__staleWhileFetching===void 0?this.#E(t,\"fetch\"):w||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,h,r);l&&l instanceof Promise&&l.then(w=>p(w===void 0?void 0:w),_),n.signal.addEventListener(\"abort\",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=w=>f(w,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(f,m),A=Object.assign(g,{__abortController:n,__staleWhileFetching:h,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty(\"__staleWhileFetching\")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,ttl:n=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:r=0,sizeCalculation:f=this.sizeCalculation,noUpdateTTL:m=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:w}=e;if(!this.#v)return l&&(l.fetch=\"get\"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:h,ttl:n,noDisposeOnSet:o,size:r,sizeCalculation:f,noUpdateTTL:m,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:w},S=this.#s.get(t);if(S===void 0){l&&(l.fetch=\"miss\");let u=this.#G(t,S,b,p);return u.__returned=u}else{let u=this.#t[S];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch=\"inflight\",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(S);if(!_&&!T)return l&&(l.fetch=\"hit\"),this.#D(S),s&&this.#R(S),l&&this.#z(l,S),u;let F=this.#G(t,S,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?\"stale\":\"refresh\",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error(\"fetch() returned undefined\");return i}memo(t,e={}){let i=this.#U;if(!i)throw new Error(\"no memoMethod provided to constructor\");let{context:s,forceRefresh:h,...n}=e,o=this.get(t,n);if(!h&&o!==void 0)return o;let r=i(t,o,{options:n,context:s});return this.set(t,r,n),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:h=this.noDeleteOnStaleGet,status:n}=e,o=this.#s.get(t);if(o!==void 0){let r=this.#t[o],f=this.#e(r);return n&&this.#z(n,o),this.#p(o)?(n&&(n.get=\"stale\"),f?(n&&i&&r.__staleWhileFetching!==void 0&&(n.returnedStale=!0),i?r.__staleWhileFetching:void 0):(h||this.#E(t,\"expire\"),n&&i&&(n.returnedStale=!0),i?r:void 0)):(n&&(n.get=\"hit\"),f?r.__staleWhileFetching:(this.#D(o),s&&this.#R(o),r))}else n&&(n.get=\"miss\")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,\"delete\")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let h=this.#t[s];if(this.#e(h)?h.__abortController.abort(new Error(\"deleted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(h,t,e),this.#f&&this.#r?.push([h,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let n=this.#u[s];this.#a[n]=this.#a[s];let o=this.#a[s];this.#u[o]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,h;for(;h=s?.shift();)this.#S?.(...h)}return i}clear(){return this.#V(\"delete\")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error(\"deleted\"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};exports.LRUCache=D;\n//# sourceMappingURL=index.min.js.map\n","function multiplyMatrices(t,n){return[t[0]*n[0]+t[1]*n[1]+t[2]*n[2],t[3]*n[0]+t[4]*n[1]+t[5]*n[2],t[6]*n[0]+t[7]*n[1]+t[8]*n[2]]}const t=[.955473421488075,-.02309845494876471,.06325924320057072,-.0283697093338637,1.0099953980813041,.021041441191917323,.012314014864481998,-.020507649298898964,1.330365926242124];\n/**\n * Bradford chromatic adaptation from D50 to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function D50_to_D65(n){return multiplyMatrices(t,n)}const n=[1.0479297925449969,.022946870601609652,-.05019226628920524,.02962780877005599,.9904344267538799,-.017073799063418826,-.009243040646204504,.015055191490298152,.7518742814281371];\n/**\n * Bradford chromatic adaptation from D65 to D50\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\n */function D65_to_D50(t){return multiplyMatrices(n,t)}\n/**\n * @param {number} hue - Hue as degrees 0..360\n * @param {number} sat - Saturation as percentage 0..100\n * @param {number} light - Lightness as percentage 0..100\n * @return {number[]} Array of sRGB components; in-gamut colors in range [0..1]\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js\n */function HSL_to_sRGB(t){let n=t[0]%360;const _=t[1]/100,o=t[2]/100;return n<0&&(n+=360),[HSL_to_sRGB_channel(0,n,_,o),HSL_to_sRGB_channel(8,n,_,o),HSL_to_sRGB_channel(4,n,_,o)]}function HSL_to_sRGB_channel(t,n,_,o){const e=(t+n/30)%12;return o-_*Math.min(o,1-o)*Math.max(-1,Math.min(e-3,9-e,1))}\n/**\n * @param {number} hue -  Hue as degrees 0..360\n * @param {number} white -  Whiteness as percentage 0..100\n * @param {number} black -  Blackness as percentage 0..100\n * @return {number[]} Array of RGB components 0..1\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js\n */function HWB_to_sRGB(t){const n=t[0],_=t[1]/100,o=t[2]/100;if(_+o>=1){const t=_/(_+o);return[t,t,t]}const e=HSL_to_sRGB([n,100,50]),a=1-_-o;return[e[0]*a+_,e[1]*a+_,e[2]*a+_]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function LCH_to_Lab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function Lab_to_LCH(t){const n=Math.sqrt(Math.pow(t[1],2)+Math.pow(t[2],2));let _=180*Math.atan2(t[2],t[1])/Math.PI;return _<0&&(_+=360),n<=.0015&&(_=NaN),[t[0],n,_]}const _=[.3457/.3585,1,.2958/.3585];\n/**\n * Convert Lab to D50-adapted XYZ\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function Lab_to_XYZ(t){const n=24389/27,o=216/24389,e=(t[0]+16)/116,a=t[1]/500+e,r=e-t[2]/200;return[(Math.pow(a,3)>o?Math.pow(a,3):(116*a-16)/n)*_[0],(t[0]>8?Math.pow((t[0]+16)/116,3):t[0]/n)*_[1],(Math.pow(r,3)>o?Math.pow(r,3):(116*r-16)/n)*_[2]]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLCH_to_OKLab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLab_to_OKLCH(t){const n=Math.sqrt(t[1]**2+t[2]**2);let _=180*Math.atan2(t[2],t[1])/Math.PI;return _<0&&(_+=360),n<=4e-6&&(_=NaN),[t[0],n,_]}const o=[1.2268798758459243,-.5578149944602171,.2813910456659647,-.0405757452148008,1.112286803280317,-.0717110580655164,-.0763729366746601,-.4214933324022432,1.5869240198367816],e=[1,.3963377773761749,.2158037573099136,1,-.1055613458156586,-.0638541728258133,1,-.0894841775298119,-1.2914855480194092];\n/**\n * Given OKLab, convert to XYZ relative to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */\nfunction OKLab_to_XYZ(t){const n=multiplyMatrices(e,t);return multiplyMatrices(o,[n[0]**3,n[1]**3,n[2]**3])}\n/**\n * Assuming XYZ is relative to D50, convert to CIE Lab\n * from CIE standard, which now defines these as a rational fraction\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_Lab(t){const n=compute_f(t[0]/_[0]),o=compute_f(t[1]/_[1]);return[116*o-16,500*(n-o),200*(o-compute_f(t[2]/_[2]))]}const a=216/24389,r=24389/27;function compute_f(t){return t>a?Math.cbrt(t):(r*t+16)/116}const l=[.819022437996703,.3619062600528904,-.1288737815209879,.0329836539323885,.9292868615863434,.0361446663506424,.0481771893596242,.2642395317527308,.6335478284694309],i=[.210454268309314,.7936177747023054,-.0040720430116193,1.9779985324311684,-2.42859224204858,.450593709617411,.0259040424655478,.7827717124575296,-.8086757549230774];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n *\n * XYZ <-> LMS matrices recalculated for consistent reference white\n * @see https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-943521484\n */\nfunction XYZ_to_OKLab(t){const n=multiplyMatrices(l,t);return multiplyMatrices(i,[Math.cbrt(n[0]),Math.cbrt(n[1]),Math.cbrt(n[2])])}const c=[30757411/17917100,-6372589/17917100,-4539589/17917100,-.666684351832489,1.616481236634939,467509/29648200,792561/44930125,-1921689/44930125,.942103121235474];\n/**\n * Convert XYZ to linear-light rec2020\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const u=[446124/178915,-333277/357830,-72051/178915,-14852/17905,63121/35810,423/17905,11844/330415,-50337/660830,316169/330415];\n/**\n * Convert XYZ to linear-light P3\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_P3(t){return multiplyMatrices(u,t)}const s=[1.3457868816471583,-.25557208737979464,-.05110186497554526,-.5446307051249019,1.5082477428451468,.02052744743642139,0,0,1.2119675456389452];\n/**\n * Convert D50 XYZ to linear-light prophoto-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */const h=[1829569/896150,-506331/896150,-308931/896150,-851781/878810,1648619/878810,36519/878810,16779/1248040,-147721/1248040,1266979/1248040];\n/**\n * Convert XYZ to linear-light a98-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const m=[12831/3959,-329/214,-1974/3959,-851781/878810,1648619/878810,36519/878810,705/12673,-2585/12673,705/667];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_sRGB(t){return multiplyMatrices(m,t)}\n/**\n * Convert an array of linear-light rec2020 RGB  in the range 0.0-1.0\n * to gamma corrected form ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function gam_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,1/2.4)}\n/**\n * Convert an array of linear-light sRGB values in the range 0.0-1.0 to gamma corrected form\n * Extended transfer function:\n *  For negative values, linear portion extends on reflection\n *  of axis, then uses reflected pow below that\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */function gam_sRGB(t){return[gam_sRGB_channel(t[0]),gam_sRGB_channel(t[1]),gam_sRGB_channel(t[2])]}function gam_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>.0031308?n*(1.055*Math.pow(_,1/2.4)-.055):12.92*t}\n/**\n * Convert an array of linear-light display-p3 RGB in the range 0.0-1.0\n * to gamma corrected form\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function gam_P3(t){return gam_sRGB(t)}\n/**\n * Convert an array of linear-light prophoto-rgb in the range 0.0-1.0\n * to gamma corrected form.\n * Transfer curve is gamma 1.8 with a small linear portion.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const D=1/512;function gam_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>=D?n*Math.pow(_,1/1.8):16*t}\n/**\n * Convert an array of linear-light a98-rgb in the range 0.0-1.0\n * to gamma corrected form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function gam_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,256/563)}\n/**\n * Convert an array of rec2020 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n * ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function lin_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,2.4)}const b=[63426534/99577255,20160776/139408157,47086771/278816314,26158966/99577255,.677998071518871,8267143/139408157,0,19567812/697040785,1.0609850577107909];\n/**\n * Convert an array of linear-light rec2020 values to CIE XYZ\n * using  D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */\n/**\n * Convert an array of of sRGB values where in-gamut values are in the range\n * [0 - 1] to linear light (un-companded) form.\n * Extended transfer function:\n *  For negative values, linear portion is extended on reflection of axis,\n *  then reflected power function is used.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */\nfunction lin_sRGB(t){return[lin_sRGB_channel(t[0]),lin_sRGB_channel(t[1]),lin_sRGB_channel(t[2])]}function lin_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=.04045?t/12.92:n*Math.pow((_+.055)/1.055,2.4)}\n/**\n * Convert an array of display-p3 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function lin_P3(t){return lin_sRGB(t)}const g=[608311/1250200,189793/714400,198249/1000160,35783/156275,247089/357200,198249/2500400,0,32229/714400,5220557/5000800];\n/**\n * Convert an array of linear-light display-p3 values to CIE XYZ\n * using D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function lin_P3_to_XYZ(t){return multiplyMatrices(g,t)}\n/**\n * Convert an array of prophoto-rgb values where in-gamut Colors are in the\n * range [0.0 - 1.0] to linear light (un-companded) form. Transfer curve is\n * gamma 1.8 with a small linear portion. Extended transfer function\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const X=16/512;function lin_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=X?t/16:n*Math.pow(_,1.8)}const Y=[.7977666449006423,.13518129740053308,.0313477341283922,.2880748288194013,.711835234241873,8993693872564e-17,0,0,.8251046025104602];\n/**\n * Convert an array of linear-light prophoto-rgb values to CIE D50 XYZ.\n * Matrix cannot be expressed in rational form, but is calculated to 64 bit accuracy.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see see https://github.com/w3c/csswg-drafts/issues/7675\n */function lin_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,563/256)}const Z=[573536/994567,263643/1420810,187206/994567,591459/1989134,6239551/9945670,374412/4972835,53769/1989134,351524/4972835,4929758/4972835];\n/**\n * Convert an array of linear-light a98-rgb values to CIE XYZ\n * http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * has greater numerical precision than section 4.3.5.3 of\n * https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * but the values below were calculated from first principles\n * from the chromaticity coordinates of R G B W\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * @see https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/matrixmaker.html\n */const f=[506752/1228815,87881/245763,12673/70218,87098/409605,175762/245763,12673/175545,7918/409605,87881/737289,1001167/1053270];\n/**\n * Convert an array of linear-light sRGB values to CIE XYZ\n * using sRGB's own white, D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function lin_sRGB_to_XYZ(t){return multiplyMatrices(f,t)}\n/**\n * Convert an array of gamma-corrected sRGB values in the 0.0 to 1.0 range to HSL.\n *\n * @param {Color} RGB [r, g, b]\n * - Red component 0..1\n * - Green component 0..1\n * - Blue component 0..1\n * @return {number[]} Array of HSL values: Hue as degrees 0..360, Saturation and Lightness as percentages 0..100\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/utilities.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n *\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/better-rgbToHsl.js\n */function sRGB_to_HSL(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o),a=Math.min(n,_,o),r=(a+e)/2,l=e-a;let i=Number.NaN,c=0;if(0!==Math.round(1e5*l)){const t=Math.round(1e5*r);switch(c=0===t||1e5===t?0:(e-r)/Math.min(r,1-r),e){case n:i=(_-o)/l+(_<o?6:0);break;case _:i=(o-n)/l+2;break;case o:i=(n-_)/l+4}i*=60}c<0&&(i+=180,c=Math.abs(c)),i>=360&&(i-=360);return c<=1e-5&&(i=NaN),[i,100*c,100*r]}function sRGB_to_Hue(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o),a=Math.min(n,_,o);let r=Number.NaN;const l=e-a;if(0!==l){switch(e){case n:r=(_-o)/l+(_<o?6:0);break;case _:r=(o-n)/l+2;break;case o:r=(n-_)/l+4}r*=60}return r>=360&&(r-=360),r}function sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n}function HSL_to_XYZ_D50(t){let n=t;return n=HSL_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HSL(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n=sRGB_to_HSL(n),n}function HWB_to_XYZ_D50(t){let n=t;return n=HWB_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HWB(t){let n=t;n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n);const _=gam_sRGB(n),o=Math.min(_[0],_[1],_[2]),e=1-Math.max(_[0],_[1],_[2]);let a=sRGB_to_Hue(_);return o+e>=.99999&&(a=NaN),[a,100*o,100*e]}function Lab_to_XYZ_D50(t){let n=t;return n=Lab_to_XYZ(n),n}function XYZ_D50_to_Lab(t){let n=t;return n=XYZ_to_Lab(n),n}function LCH_to_XYZ_D50(t){let n=t;return n=LCH_to_Lab(n),n=Lab_to_XYZ(n),n}function XYZ_D50_to_LCH(t){let n=t;return n=XYZ_to_Lab(n),n=Lab_to_LCH(n),n}function OKLab_to_XYZ_D50(t){let n=t;return n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLab(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n}function OKLCH_to_XYZ_D50(t){let n=t;return n=OKLCH_to_OKLab(n),n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLCH(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n=OKLab_to_OKLCH(n),n}function lin_sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_lin_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n}function a98_RGB_to_XYZ_D50(t){let n=t;\n/**\n * Convert an array of a98-rgb values in the range 0.0 - 1.0\n * to linear light (un-companded) form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */\nvar _;return n=[lin_a98rgb_channel((_=n)[0]),lin_a98rgb_channel(_[1]),lin_a98rgb_channel(_[2])],n=multiplyMatrices(Z,n),n=D65_to_D50(n),n}function XYZ_D50_to_a98_RGB(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(h,n),n=[gam_a98rgb_channel((_=n)[0]),gam_a98rgb_channel(_[1]),gam_a98rgb_channel(_[2])],n}function P3_to_XYZ_D50(t){let n=t;return n=lin_P3(n),n=lin_P3_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_P3(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_P3(n),n=gam_P3(n),n}function lin_P3_to_XYZ_D50(t){let n=t;return n=lin_P3_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_lin_P3(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_P3(n),n}function rec_2020_to_XYZ_D50(t){let n=t;var _;return n=[lin_2020_channel((_=n)[0]),lin_2020_channel(_[1]),lin_2020_channel(_[2])],n=multiplyMatrices(b,n),n=D65_to_D50(n),n}function XYZ_D50_to_rec_2020(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(c,n),n=[gam_2020_channel((_=n)[0]),gam_2020_channel(_[1]),gam_2020_channel(_[2])],n}function ProPhoto_RGB_to_XYZ_D50(t){let n=t;var _;return n=[lin_ProPhoto_channel((_=n)[0]),lin_ProPhoto_channel(_[1]),lin_ProPhoto_channel(_[2])],n=multiplyMatrices(Y,n),n}function XYZ_D50_to_ProPhoto(t){let n=t;var _;return n=multiplyMatrices(s,n),n=[gam_ProPhoto_channel((_=n)[0]),gam_ProPhoto_channel(_[1]),gam_ProPhoto_channel(_[2])],n}function XYZ_D65_to_XYZ_D50(t){let n=t;return n=D65_to_D50(n),n}function XYZ_D50_to_XYZ_D65(t){let n=t;return n=D50_to_D65(n),n}function XYZ_D50_to_XYZ_D50(t){return t}function inGamut(t){return t[0]>=-1e-4&&t[0]<=1.0001&&t[1]>=-1e-4&&t[1]<=1.0001&&t[2]>=-1e-4&&t[2]<=1.0001}function clip(t){return[t[0]<0?0:t[0]>1?1:t[0],t[1]<0?0:t[1]>1?1:t[1],t[2]<0?0:t[2]>1?1:t[2]]}\n/**\n * @description Calculate deltaE OK which is the simple root sum of squares\n * @param {number[]} reference - Array of OKLab values: L as 0..1, a and b as -1..1\n * @param {number[]} sample - Array of OKLab values: L as 0..1, a and b as -1..1\n * @return {number} How different a color sample is from reference\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js\n */function deltaEOK(t,n){const[_,o,e]=t,[a,r,l]=n,i=_-a,c=o-r,u=e-l;return Math.sqrt(i**2+c**2+u**2)}const M=.02,p=1e-4;function mapGamut(t,n,_){const o=t;let e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o));if(a<M)return e;let r=0,l=o[1],i=!0;for(;l-r>p;){const t=(r+l)/2;if(o[1]=t,i&&inGamut(n(o)))r=t;else if(e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o)),a<M){if(M-a<p)return e;i=!1,r=t}else l=t}return clip(n([...o]))}\n/**\n * @license MIT https://github.com/facelessuser/coloraide/blob/main/LICENSE.md\n */function mapGamutRayTrace(t,n,_){const o=t[0],e=t[2];let a=n(t);const r=n([o,0,e]);for(let t=0;t<4;t++){if(t>0){const t=_(a);t[0]=o,t[2]=e,a=n(t)}const l=rayTraceBox(r,a);if(!l)break;a=l}return clip(a)}function rayTraceBox(t,n){let _=1/0,o=-1/0;const e=[0,0,0];for(let a=0;a<3;a++){const r=t[a],l=n[a]-r;e[a]=l;const i=0,c=1;if(l){const t=1/l,n=(i-r)*t,e=(c-r)*t;o=Math.max(Math.min(n,e),o),_=Math.min(Math.max(n,e),_)}else if(r<i||r>c)return!1}return!(o>_||_<0)&&(o<0&&(o=_),!!isFinite(o)&&[t[0]+e[0]*o,t[1]+e[1]*o,t[2]+e[2]*o])}const d={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function luminance(t){const[n,_,o]=t.map(t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4));return.2126*n+.7152*_+.0722*o}function contrast_ratio_wcag_2_1(t,n){const _=luminance(t),o=luminance(n);return(Math.max(_,o)+.05)/(Math.min(_,o)+.05)}export{HSL_to_XYZ_D50,HWB_to_XYZ_D50,LCH_to_XYZ_D50,Lab_to_XYZ_D50,OKLCH_to_OKLab,OKLCH_to_XYZ_D50,OKLab_to_OKLCH,OKLab_to_XYZ,OKLab_to_XYZ_D50,P3_to_XYZ_D50,ProPhoto_RGB_to_XYZ_D50,XYZ_D50_to_HSL,XYZ_D50_to_HWB,XYZ_D50_to_LCH,XYZ_D50_to_Lab,XYZ_D50_to_OKLCH,XYZ_D50_to_OKLab,XYZ_D50_to_P3,XYZ_D50_to_ProPhoto,XYZ_D50_to_XYZ_D50,XYZ_D50_to_XYZ_D65,XYZ_D50_to_a98_RGB,XYZ_D50_to_lin_P3,XYZ_D50_to_lin_sRGB,XYZ_D50_to_rec_2020,XYZ_D50_to_sRGB,XYZ_D65_to_XYZ_D50,XYZ_to_OKLab,XYZ_to_lin_P3,XYZ_to_lin_sRGB,a98_RGB_to_XYZ_D50,clip,contrast_ratio_wcag_2_1,gam_P3,gam_sRGB,inGamut,lin_P3,lin_P3_to_XYZ,lin_P3_to_XYZ_D50,lin_sRGB,lin_sRGB_to_XYZ,lin_sRGB_to_XYZ_D50,mapGamut,mapGamutRayTrace,d as namedColors,rec_2020_to_XYZ_D50,sRGB_to_XYZ_D50};\n","import{TokenType as e,NumberType as a,isTokenIdent as n,isTokenPercentage as r,isTokenNumber as o,isTokenDelim as t,isTokenNumeric as l,isTokenComma as s,isTokenDimension as u,isTokenHash as i}from\"@csstools/css-tokenizer\";import{XYZ_D50_to_XYZ_D65 as c,XYZ_D50_to_XYZ_D50 as h,XYZ_D50_to_OKLab as m,XYZ_D50_to_OKLCH as p,XYZ_D50_to_LCH as N,XYZ_D50_to_Lab as b,XYZ_D50_to_HWB as v,XYZ_D50_to_HSL as g,XYZ_D50_to_a98_RGB as f,XYZ_D50_to_ProPhoto as d,XYZ_D50_to_rec_2020 as y,XYZ_D50_to_lin_P3 as _,XYZ_D50_to_P3 as C,XYZ_D50_to_lin_sRGB as w,XYZ_D50_to_sRGB as x,XYZ_D65_to_XYZ_D50 as L,OKLCH_to_XYZ_D50 as H,LCH_to_XYZ_D50 as P,OKLab_to_XYZ_D50 as k,Lab_to_XYZ_D50 as S,HWB_to_XYZ_D50 as D,HSL_to_XYZ_D50 as M,ProPhoto_RGB_to_XYZ_D50 as F,a98_RGB_to_XYZ_D50 as z,rec_2020_to_XYZ_D50 as Z,lin_P3_to_XYZ_D50 as R,P3_to_XYZ_D50 as B,lin_sRGB_to_XYZ_D50 as V,sRGB_to_XYZ_D50 as T,namedColors as G,inGamut as A,clip as X,gam_sRGB as K,mapGamutRayTrace as Y,OKLCH_to_OKLab as I,OKLab_to_XYZ as O,XYZ_to_lin_sRGB as W,lin_sRGB_to_XYZ as E,XYZ_to_OKLab as U,OKLab_to_OKLCH as $,contrast_ratio_wcag_2_1 as j,gam_P3 as q,XYZ_to_lin_P3 as J,lin_P3_to_XYZ as Q}from\"@csstools/color-helpers\";import{isWhitespaceNode as ee,isCommentNode as ae,isTokenNode as ne,isFunctionNode as re,TokenNode as oe,isWhiteSpaceOrCommentNode as te,replaceComponentValues as le,FunctionNode as se,WhitespaceNode as ue}from\"@csstools/css-parser-algorithms\";import{mathFunctionNames as ie,calcFromComponentValues as ce}from\"@csstools/css-calc\";var he,me;function convertNaNToZero(e){return[Number.isNaN(e[0])?0:e[0],Number.isNaN(e[1])?0:e[1],Number.isNaN(e[2])?0:e[2]]}function colorData_to_XYZ_D50(e){switch(e.colorNotation){case he.HEX:case he.RGB:case he.sRGB:return{...e,colorNotation:he.XYZ_D50,channels:T(convertNaNToZero(e.channels))};case he.Linear_sRGB:return{...e,colorNotation:he.XYZ_D50,channels:V(convertNaNToZero(e.channels))};case he.Display_P3:return{...e,colorNotation:he.XYZ_D50,channels:B(convertNaNToZero(e.channels))};case he.Linear_Display_P3:return{...e,colorNotation:he.XYZ_D50,channels:R(convertNaNToZero(e.channels))};case he.Rec2020:return{...e,colorNotation:he.XYZ_D50,channels:Z(convertNaNToZero(e.channels))};case he.A98_RGB:return{...e,colorNotation:he.XYZ_D50,channels:z(convertNaNToZero(e.channels))};case he.ProPhoto_RGB:return{...e,colorNotation:he.XYZ_D50,channels:F(convertNaNToZero(e.channels))};case he.HSL:return{...e,colorNotation:he.XYZ_D50,channels:M(convertNaNToZero(e.channels))};case he.HWB:return{...e,colorNotation:he.XYZ_D50,channels:D(convertNaNToZero(e.channels))};case he.Lab:return{...e,colorNotation:he.XYZ_D50,channels:S(convertNaNToZero(e.channels))};case he.OKLab:return{...e,colorNotation:he.XYZ_D50,channels:k(convertNaNToZero(e.channels))};case he.LCH:return{...e,colorNotation:he.XYZ_D50,channels:P(convertNaNToZero(e.channels))};case he.OKLCH:return{...e,colorNotation:he.XYZ_D50,channels:H(convertNaNToZero(e.channels))};case he.XYZ_D50:return{...e,colorNotation:he.XYZ_D50,channels:h(convertNaNToZero(e.channels))};case he.XYZ_D65:return{...e,colorNotation:he.XYZ_D50,channels:L(convertNaNToZero(e.channels))};default:throw new Error(\"Unsupported color notation\")}}!function(e){e.A98_RGB=\"a98-rgb\",e.Display_P3=\"display-p3\",e.Linear_Display_P3=\"display-p3-linear\",e.HEX=\"hex\",e.HSL=\"hsl\",e.HWB=\"hwb\",e.LCH=\"lch\",e.Lab=\"lab\",e.Linear_sRGB=\"srgb-linear\",e.OKLCH=\"oklch\",e.OKLab=\"oklab\",e.ProPhoto_RGB=\"prophoto-rgb\",e.RGB=\"rgb\",e.sRGB=\"srgb\",e.Rec2020=\"rec2020\",e.XYZ_D50=\"xyz-d50\",e.XYZ_D65=\"xyz-d65\"}(he||(he={})),function(e){e.ColorKeyword=\"color-keyword\",e.HasAlpha=\"has-alpha\",e.HasDimensionValues=\"has-dimension-values\",e.HasNoneKeywords=\"has-none-keywords\",e.HasNumberValues=\"has-number-values\",e.HasPercentageAlpha=\"has-percentage-alpha\",e.HasPercentageValues=\"has-percentage-values\",e.HasVariableAlpha=\"has-variable-alpha\",e.Hex=\"hex\",e.LegacyHSL=\"legacy-hsl\",e.LegacyRGB=\"legacy-rgb\",e.NamedColor=\"named-color\",e.RelativeColorSyntax=\"relative-color-syntax\",e.ColorMix=\"color-mix\",e.ColorMixVariadic=\"color-mix-variadic\",e.ContrastColor=\"contrast-color\",e.RelativeAlphaSyntax=\"relative-alpha-syntax\",e.Experimental=\"experimental\"}(me||(me={}));const pe=new Set([he.A98_RGB,he.Display_P3,he.Linear_Display_P3,he.HEX,he.Linear_sRGB,he.ProPhoto_RGB,he.RGB,he.sRGB,he.Rec2020,he.XYZ_D50,he.XYZ_D65]);function colorDataTo(e,a){const n={...e};if(e.colorNotation!==a){const e=colorData_to_XYZ_D50(n);switch(a){case he.HEX:case he.RGB:n.colorNotation=he.RGB,n.channels=x(e.channels);break;case he.sRGB:n.colorNotation=he.sRGB,n.channels=x(e.channels);break;case he.Linear_sRGB:n.colorNotation=he.Linear_sRGB,n.channels=w(e.channels);break;case he.Display_P3:n.colorNotation=he.Display_P3,n.channels=C(e.channels);break;case he.Linear_Display_P3:n.colorNotation=he.Linear_Display_P3,n.channels=_(e.channels);break;case he.Rec2020:n.colorNotation=he.Rec2020,n.channels=y(e.channels);break;case he.ProPhoto_RGB:n.colorNotation=he.ProPhoto_RGB,n.channels=d(e.channels);break;case he.A98_RGB:n.colorNotation=he.A98_RGB,n.channels=f(e.channels);break;case he.HSL:n.colorNotation=he.HSL,n.channels=g(e.channels);break;case he.HWB:n.colorNotation=he.HWB,n.channels=v(e.channels);break;case he.Lab:n.colorNotation=he.Lab,n.channels=b(e.channels);break;case he.LCH:n.colorNotation=he.LCH,n.channels=N(e.channels);break;case he.OKLCH:n.colorNotation=he.OKLCH,n.channels=p(e.channels);break;case he.OKLab:n.colorNotation=he.OKLab,n.channels=m(e.channels);break;case he.XYZ_D50:n.colorNotation=he.XYZ_D50,n.channels=h(e.channels);break;case he.XYZ_D65:n.colorNotation=he.XYZ_D65,n.channels=c(e.channels);break;default:throw new Error(\"Unsupported color notation\")}}else n.channels=convertNaNToZero(e.channels);if(a===e.colorNotation)n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else if(pe.has(a)&&pe.has(e.colorNotation))n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else switch(a){case he.HSL:switch(e.colorNotation){case he.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case he.Lab:case he.OKLab:n.channels=carryForwardMissingComponents(e.channels,[2],n.channels,[0]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0])}break;case he.HWB:switch(e.colorNotation){case he.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2])}break;case he.Lab:case he.OKLab:switch(e.colorNotation){case he.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case he.Lab:case he.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0])}break;case he.LCH:case he.OKLCH:switch(e.colorNotation){case he.HSL:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0]);break;case he.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case he.Lab:case he.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2])}}return n.channels=convertPowerlessComponentsToMissingComponents(n.channels,a),n}function convertPowerlessComponentsToMissingComponents(e,a){const n=[...e];switch(a){case he.HSL:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[0]=Number.NaN);break;case he.HWB:Math.max(0,reducePrecision(n[1],4))+Math.max(0,reducePrecision(n[2],4))>=100&&(n[0]=Number.NaN);break;case he.LCH:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[2]=Number.NaN);break;case he.OKLCH:!Number.isNaN(n[1])&&reducePrecision(n[1],6)<=0&&(n[2]=Number.NaN)}return n}function convertPowerlessComponentsToZeroValuesForDisplay(e,a){const n=[...e];switch(a){case he.HSL:(reducePrecision(n[2])<=0||reducePrecision(n[2])>=100)&&(n[0]=Number.NaN,n[1]=Number.NaN),reducePrecision(n[1])<=0&&(n[0]=Number.NaN);break;case he.HWB:Math.max(0,reducePrecision(n[1]))+Math.max(0,reducePrecision(n[2]))>=100&&(n[0]=Number.NaN);break;case he.Lab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=Number.NaN,n[2]=Number.NaN);break;case he.LCH:reducePrecision(n[1])<=0&&(n[2]=Number.NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=Number.NaN,n[2]=Number.NaN);break;case he.OKLab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=Number.NaN,n[2]=Number.NaN);break;case he.OKLCH:reducePrecision(n[1])<=0&&(n[2]=Number.NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=Number.NaN,n[2]=Number.NaN)}return n}function carryForwardMissingComponents(e,a,n,r){const o=[...n];for(const n of a)Number.isNaN(e[a[n]])&&(o[r[n]]=Number.NaN);return o}function normalizeRelativeColorDataChannels(e){const a=new Map;switch(e.colorNotation){case he.RGB:case he.HEX:a.set(\"r\",dummyNumberToken(255*e.channels[0])),a.set(\"g\",dummyNumberToken(255*e.channels[1])),a.set(\"b\",dummyNumberToken(255*e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.HSL:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"s\",dummyNumberToken(e.channels[1])),a.set(\"l\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.HWB:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"w\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.Lab:case he.OKLab:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"a\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.LCH:case he.OKLCH:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"c\",dummyNumberToken(e.channels[1])),a.set(\"h\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.sRGB:case he.A98_RGB:case he.Display_P3:case he.Linear_Display_P3:case he.Rec2020:case he.Linear_sRGB:case he.ProPhoto_RGB:a.set(\"r\",dummyNumberToken(e.channels[0])),a.set(\"g\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.XYZ_D50:case he.XYZ_D65:a.set(\"x\",dummyNumberToken(e.channels[0])),a.set(\"y\",dummyNumberToken(e.channels[1])),a.set(\"z\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha))}return a}function noneToZeroInRelativeColorDataChannels(e){const a=new Map(e);for(const[n,r]of e)Number.isNaN(r[4].value)&&a.set(n,dummyNumberToken(0));return a}function dummyNumberToken(n){return Number.isNaN(n)?[e.Number,\"none\",-1,-1,{value:Number.NaN,type:a.Number}]:[e.Number,n.toString(),-1,-1,{value:n,type:a.Number}]}function reducePrecision(e,a=7){if(Number.isNaN(e))return 0;const n=Math.pow(10,a);return Math.round(e*n)/n}function colorDataFitsRGB_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,he.RGB).channels.find(e=>e<-1e-5||e>1.00001)}function colorDataFitsDisplayP3_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,he.Display_P3).channels.find(e=>e<-1e-5||e>1.00001)}function normalize(e,a,n,r){return Math.min(Math.max(e/a,n),r)}const Ne=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(Ne,e=>String.fromCharCode(e.charCodeAt(0)+32))}function normalize_Color_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}const be=new Set([\"srgb\",\"srgb-linear\",\"display-p3\",\"display-p3-linear\",\"a98-rgb\",\"prophoto-rgb\",\"rec2020\",\"xyz\",\"xyz-d50\",\"xyz-d65\"]);function color$1(e,a){const r=[],s=[],u=[],i=[];let c,h,m=!1,p=!1;const N={colorNotation:he.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([])};let b=r;for(let o=0;o<e.value.length;o++){let v=e.value[o];if(ee(v)||ae(v))for(;ee(e.value[o+1])||ae(e.value[o+1]);)o++;else if(b===r&&r.length&&(b=s),b===s&&s.length&&(b=u),ne(v)&&t(v.value)&&\"/\"===v.value[4].value){if(b===i)return!1;b=i}else{if(re(v)){if(b===i&&\"var\"===toLowerCaseAZ(v.getName())){N.syntaxFlags.add(me.HasVariableAlpha),b.push(v);continue}if(!ie.has(toLowerCaseAZ(v.getName())))return!1;const[[e]]=ce([[v]],{censorIntoStandardRepresentableValues:!0,globals:h,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),v=e}if(b===r&&0===r.length&&ne(v)&&n(v.value)&&be.has(toLowerCaseAZ(v.value[4].value))){if(m)return!1;m=toLowerCaseAZ(v.value[4].value),N.colorNotation=colorSpaceNameToColorNotation(m),p&&(p.colorNotation!==N.colorNotation&&(p=colorDataTo(p,N.colorNotation)),c=normalizeRelativeColorDataChannels(p),h=noneToZeroInRelativeColorDataChannels(c))}else if(b===r&&0===r.length&&ne(v)&&n(v.value)&&\"from\"===toLowerCaseAZ(v.value[4].value)){if(p)return!1;if(m)return!1;for(;ee(e.value[o+1])||ae(e.value[o+1]);)o++;if(o++,v=e.value[o],p=a(v),!1===p)return!1;p.syntaxFlags.has(me.Experimental)&&N.syntaxFlags.add(me.Experimental),N.syntaxFlags.add(me.RelativeColorSyntax)}else{if(!ne(v))return!1;if(n(v.value)&&c&&c.has(toLowerCaseAZ(v.value[4].value))){b.push(new oe(c.get(toLowerCaseAZ(v.value[4].value))));continue}b.push(v)}}}if(!m)return!1;if(1!==b.length)return!1;if(1!==r.length||1!==s.length||1!==u.length)return!1;if(!ne(r[0])||!ne(s[0])||!ne(u[0]))return!1;if(c&&!c.has(\"alpha\"))return!1;const v=normalize_Color_ChannelValues(r[0].value,0,N);if(!v||!o(v))return!1;const g=normalize_Color_ChannelValues(s[0].value,1,N);if(!g||!o(g))return!1;const f=normalize_Color_ChannelValues(u[0].value,2,N);if(!f||!o(f))return!1;const d=[v,g,f];if(1===i.length)if(N.syntaxFlags.add(me.HasAlpha),ne(i[0])){const e=normalize_Color_ChannelValues(i[0].value,3,N);if(!e||!o(e))return!1;d.push(e)}else N.alpha=i[0];else if(c&&c.has(\"alpha\")){const e=normalize_Color_ChannelValues(c.get(\"alpha\"),3,N);if(!e||!o(e))return!1;d.push(e)}return N.channels=[d[0][4].value,d[1][4].value,d[2][4].value],4===d.length&&(N.alpha=d[3][4].value),N}function colorSpaceNameToColorNotation(e){switch(e){case\"srgb\":return he.sRGB;case\"srgb-linear\":return he.Linear_sRGB;case\"display-p3\":return he.Display_P3;case\"display-p3-linear\":return he.Linear_Display_P3;case\"a98-rgb\":return he.A98_RGB;case\"prophoto-rgb\":return he.ProPhoto_RGB;case\"rec2020\":return he.Rec2020;case\"xyz\":case\"xyz-d65\":return he.XYZ_D65;case\"xyz-d50\":return he.XYZ_D50;default:throw new Error(\"Unknown color space name: \"+e)}}const ve=new Set([\"srgb\",\"srgb-linear\",\"display-p3\",\"display-p3-linear\",\"a98-rgb\",\"prophoto-rgb\",\"rec2020\",\"lab\",\"oklab\",\"xyz\",\"xyz-d50\",\"xyz-d65\"]),ge=new Set([\"hsl\",\"hwb\",\"lch\",\"oklch\"]),fe=new Set([\"shorter\",\"longer\",\"increasing\",\"decreasing\"]);function colorMix(e,a){let r=null,o=null,t=null,l=!1;for(let u=0;u<e.value.length;u++){const i=e.value[u];if(!te(i)){if(!(r||ne(i)&&n(i.value)&&\"in\"===toLowerCaseAZ(i.value[4].value)))return colorMixRectangular(\"oklab\",colorMixComponents(e.value,a));if(ne(i)&&n(i.value)){if(!r&&\"in\"===toLowerCaseAZ(i.value[4].value)){r=i;continue}if(r&&!o){o=toLowerCaseAZ(i.value[4].value);continue}if(r&&o&&!t&&ge.has(o)){t=toLowerCaseAZ(i.value[4].value);continue}if(r&&o&&t&&!l&&\"hue\"===toLowerCaseAZ(i.value[4].value)){l=!0;continue}return!1}return!(!ne(i)||!s(i.value))&&(!!o&&(t||l?!!(o&&t&&l&&ge.has(o)&&fe.has(t))&&colorMixPolar(o,t,colorMixComponents(e.value.slice(u+1),a)):ve.has(o)?colorMixRectangular(o,colorMixComponents(e.value.slice(u+1),a)):!!ge.has(o)&&colorMixPolar(o,\"shorter\",colorMixComponents(e.value.slice(u+1),a))))}}return!1}function colorMixComponents(e,a){const n=[];let o=1,t=!1,u=!1;for(let o=0;o<e.length;o++){let i=e[o];if(!te(i)){if(!ne(i)||!s(i.value)){if(!t){const e=a(i);if(e){t=e;continue}}if(!u){if(re(i)&&ie.has(toLowerCaseAZ(i.getName()))){if([[i]]=ce([[i]],{censorIntoStandardRepresentableValues:!0,precision:-1,toCanonicalUnits:!0,rawPercentages:!0}),!i||!ne(i)||!l(i.value))return!1;Number.isNaN(i.value[4].value)&&(i.value[4].value=0)}if(ne(i)&&r(i.value)&&i.value[4].value>=0){u=i.value[4].value;continue}}return!1}if(!t)return!1;n.push({color:t,percentage:u}),t=!1,u=!1}}if(!t)return!1;n.push({color:t,percentage:u});let i=0,c=0;for(let e=0;e<n.length;e++){const a=n[e].percentage;if(!1!==a){if(a<0||a>100)return!1;i+=a}else c++}const h=Math.max(0,100-i);i=0;for(let e=0;e<n.length;e++)!1===n[e].percentage&&(n[e].percentage=h/c),i+=n[e].percentage;if(0===i)return{colors:[{color:{channels:[0,0,0],colorNotation:he.sRGB,alpha:0,syntaxFlags:new Set},percentage:0}],alphaMultiplier:0};if(i>100)for(let e=0;e<n.length;e++){let a=n[e].percentage;a=a/i*100,n[e].percentage=a}if(i<100){o=i/100;for(let e=0;e<n.length;e++){let a=n[e].percentage;a=a/i*100,n[e].percentage=a}}return{colors:n,alphaMultiplier:o}}function colorMixRectangular(e,a){if(!a||!a.colors.length)return!1;const n=a.colors.slice();n.reverse();let r=he.RGB;switch(e){case\"srgb\":r=he.RGB;break;case\"srgb-linear\":r=he.Linear_sRGB;break;case\"display-p3\":r=he.Display_P3;break;case\"display-p3-linear\":r=he.Linear_Display_P3;break;case\"a98-rgb\":r=he.A98_RGB;break;case\"prophoto-rgb\":r=he.ProPhoto_RGB;break;case\"rec2020\":r=he.Rec2020;break;case\"lab\":r=he.Lab;break;case\"oklab\":r=he.OKLab;break;case\"xyz-d50\":r=he.XYZ_D50;break;case\"xyz\":case\"xyz-d65\":r=he.XYZ_D65;break;default:return!1}if(1===n.length){const e=colorDataTo(n[0].color,r);return e.colorNotation=r,e.syntaxFlags.add(me.ColorMixVariadic),\"number\"!=typeof e.alpha?!1:(e.alpha=e.alpha*a.alphaMultiplier,e)}for(;n.length>=2;){const e=n.pop(),a=n.pop();if(!e||!a)return!1;const o=colorMixRectangularPair(r,e.color,e.percentage,a.color,a.percentage);if(!o)return!1;n.push({color:o,percentage:e.percentage+a.percentage})}const o=n[0]?.color;return!!o&&(a.colors.some(e=>e.color.syntaxFlags.has(me.Experimental))&&o.syntaxFlags.add(me.Experimental),\"number\"==typeof o.alpha&&(o.alpha=o.alpha*a.alphaMultiplier,2!==a.colors.length&&o.syntaxFlags.add(me.ColorMixVariadic),o))}function colorMixRectangularPair(e,a,n,r,o){const t=n/(n+o);let l=a.alpha;if(\"number\"!=typeof l)return!1;let s=r.alpha;if(\"number\"!=typeof s)return!1;l=Number.isNaN(l)?s:l,s=Number.isNaN(s)?l:s;const u=colorDataTo(a,e).channels,i=colorDataTo(r,e).channels;u[0]=fillInMissingComponent(u[0],i[0]),i[0]=fillInMissingComponent(i[0],u[0]),u[1]=fillInMissingComponent(u[1],i[1]),i[1]=fillInMissingComponent(i[1],u[1]),u[2]=fillInMissingComponent(u[2],i[2]),i[2]=fillInMissingComponent(i[2],u[2]),u[0]=premultiply(u[0],l),u[1]=premultiply(u[1],l),u[2]=premultiply(u[2],l),i[0]=premultiply(i[0],s),i[1]=premultiply(i[1],s),i[2]=premultiply(i[2],s);const c=interpolate(l,s,t);return{colorNotation:e,channels:[un_premultiply(interpolate(u[0],i[0],t),c),un_premultiply(interpolate(u[1],i[1],t),c),un_premultiply(interpolate(u[2],i[2],t),c)],alpha:c,syntaxFlags:new Set([me.ColorMix])}}function colorMixPolar(e,a,n){if(!n||!n.colors.length)return!1;const r=n.colors.slice();r.reverse();let o=he.HSL;switch(e){case\"hsl\":o=he.HSL;break;case\"hwb\":o=he.HWB;break;case\"lch\":o=he.LCH;break;case\"oklch\":o=he.OKLCH;break;default:return!1}if(1===r.length){const e=colorDataTo(r[0].color,o);return e.colorNotation=o,e.syntaxFlags.add(me.ColorMixVariadic),\"number\"!=typeof e.alpha?!1:(e.alpha=e.alpha*n.alphaMultiplier,e)}for(;r.length>=2;){const e=r.pop(),n=r.pop();if(!e||!n)return!1;const t=colorMixPolarPair(o,a,e.color,e.percentage,n.color,n.percentage);if(!t)return!1;r.push({color:t,percentage:e.percentage+n.percentage})}const t=r[0]?.color;return!!t&&(n.colors.some(e=>e.color.syntaxFlags.has(me.Experimental))&&t.syntaxFlags.add(me.Experimental),\"number\"==typeof t.alpha&&(t.alpha=t.alpha*n.alphaMultiplier,2!==n.colors.length&&t.syntaxFlags.add(me.ColorMixVariadic),t))}function colorMixPolarPair(e,a,n,r,o,t){const l=r/(r+t);let s=0,u=0,i=0,c=0,h=0,m=0,p=n.alpha;if(\"number\"!=typeof p)return!1;let N=o.alpha;if(\"number\"!=typeof N)return!1;p=Number.isNaN(p)?N:p,N=Number.isNaN(N)?p:N;const b=colorDataTo(n,e).channels,v=colorDataTo(o,e).channels;switch(e){case he.HSL:case he.HWB:s=b[0],u=v[0],i=b[1],c=v[1],h=b[2],m=v[2];break;case he.LCH:case he.OKLCH:i=b[0],c=v[0],h=b[1],m=v[1],s=b[2],u=v[2]}s=fillInMissingComponent(s,u),Number.isNaN(s)&&(s=0),u=fillInMissingComponent(u,s),Number.isNaN(u)&&(u=0),i=fillInMissingComponent(i,c),c=fillInMissingComponent(c,i),h=fillInMissingComponent(h,m),m=fillInMissingComponent(m,h);const g=u-s;switch(a){case\"shorter\":g>180?s+=360:g<-180&&(u+=360);break;case\"longer\":-180<g&&g<180&&(g>0?s+=360:u+=360);break;case\"increasing\":g<0&&(u+=360);break;case\"decreasing\":g>0&&(s+=360);break;default:throw new Error(\"Unknown hue interpolation method\")}i=premultiply(i,p),h=premultiply(h,p),c=premultiply(c,N),m=premultiply(m,N);let f=[0,0,0];const d=interpolate(p,N,l);switch(e){case he.HSL:case he.HWB:f=[interpolate(s,u,l),un_premultiply(interpolate(i,c,l),d),un_premultiply(interpolate(h,m,l),d)];break;case he.LCH:case he.OKLCH:f=[un_premultiply(interpolate(i,c,l),d),un_premultiply(interpolate(h,m,l),d),interpolate(s,u,l)]}return{colorNotation:e,channels:f,alpha:d,syntaxFlags:new Set([me.ColorMix])}}function fillInMissingComponent(e,a){return Number.isNaN(e)?a:e}function interpolate(e,a,n){return e*n+a*(1-n)}function premultiply(e,a){return Number.isNaN(a)?e:Number.isNaN(e)?Number.NaN:e*a}function un_premultiply(e,a){return 0===a||Number.isNaN(a)?e:Number.isNaN(e)?Number.NaN:e/a}function hex(e){const a=toLowerCaseAZ(e[4].value);if(a.match(/[^a-f0-9]/))return!1;const n={colorNotation:he.HEX,channels:[0,0,0],alpha:1,syntaxFlags:new Set([me.Hex])},r=a.length;if(3===r){const e=a[0],r=a[1],o=a[2];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n}if(6===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n}if(4===r){const e=a[0],r=a[1],o=a[2],t=a[3];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n.alpha=parseInt(t+t,16)/255,n.syntaxFlags.add(me.HasAlpha),n}if(8===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5],t=a[6]+a[7];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n.alpha=parseInt(t,16)/255,n.syntaxFlags.add(me.HasAlpha),n}return!1}function normalizeHue(n){if(o(n))return n[4].value=n[4].value%360,n[1]=n[4].value.toString(),n;if(u(n)){let r=n[4].value;switch(toLowerCaseAZ(n[4].unit)){case\"deg\":break;case\"rad\":r=180*n[4].value/Math.PI;break;case\"grad\":r=.9*n[4].value;break;case\"turn\":r=360*n[4].value;break;default:return!1}return r%=360,[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_legacy_HSL_ChannelValues(n,t,l){if(0===t){const e=normalizeHue(n);return!1!==e&&(u(n)&&l.syntaxFlags.add(me.HasDimensionValues),e)}if(r(n)){3===t?l.syntaxFlags.add(me.HasPercentageAlpha):l.syntaxFlags.add(me.HasPercentageValues);let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,100,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){if(3!==t)return!1;let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_HSL_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(me.HasPercentageAlpha):s.syntaxFlags.add(me.HasPercentageValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,100,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,1,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function threeChannelLegacySyntax(e,a,n,r){const t=[],u=[],i=[],c=[],h={colorNotation:n,channels:[0,0,0],alpha:1,syntaxFlags:new Set(r)};let m=t;for(let a=0;a<e.value.length;a++){let n=e.value[a];if(!ee(n)&&!ae(n)){if(ne(n)&&s(n.value)){if(m===t){m=u;continue}if(m===u){m=i;continue}if(m===i){m=c;continue}if(m===c)return!1}if(re(n)){if(m===c&&\"var\"===n.getName().toLowerCase()){h.syntaxFlags.add(me.HasVariableAlpha),m.push(n);continue}if(!ie.has(n.getName().toLowerCase()))return!1;const[[e]]=ce([[n]],{censorIntoStandardRepresentableValues:!0,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),n=e}if(!ne(n))return!1;m.push(n)}}if(1!==m.length)return!1;if(1!==t.length||1!==u.length||1!==i.length)return!1;if(!ne(t[0])||!ne(u[0])||!ne(i[0]))return!1;const p=a(t[0].value,0,h);if(!p||!o(p))return!1;const N=a(u[0].value,1,h);if(!N||!o(N))return!1;const b=a(i[0].value,2,h);if(!b||!o(b))return!1;const v=[p,N,b];if(1===c.length)if(h.syntaxFlags.add(me.HasAlpha),ne(c[0])){const e=a(c[0].value,3,h);if(!e||!o(e))return!1;v.push(e)}else h.alpha=c[0];return h.channels=[v[0][4].value,v[1][4].value,v[2][4].value],4===v.length&&(h.alpha=v[3][4].value),h}function threeChannelSpaceSeparated(e,a,r,s,u){const i=[],c=[],h=[],m=[];let p,N,b=!1;const v={colorNotation:r,channels:[0,0,0],alpha:1,syntaxFlags:new Set(s)};let g=i;for(let a=0;a<e.value.length;a++){let o=e.value[a];if(ee(o)||ae(o))for(;ee(e.value[a+1])||ae(e.value[a+1]);)a++;else if(g===i&&i.length&&(g=c),g===c&&c.length&&(g=h),ne(o)&&t(o.value)&&\"/\"===o.value[4].value){if(g===m)return!1;g=m}else{if(re(o)){if(g===m&&\"var\"===o.getName().toLowerCase()){v.syntaxFlags.add(me.HasVariableAlpha),g.push(o);continue}if(!ie.has(o.getName().toLowerCase()))return!1;const[[e]]=ce([[o]],{censorIntoStandardRepresentableValues:!0,globals:N,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),o=e}if(g===i&&0===i.length&&ne(o)&&n(o.value)&&\"from\"===o.value[4].value.toLowerCase()){if(b)return!1;for(;ee(e.value[a+1])||ae(e.value[a+1]);)a++;if(a++,o=e.value[a],b=u(o),!1===b)return!1;b.syntaxFlags.has(me.Experimental)&&v.syntaxFlags.add(me.Experimental),v.syntaxFlags.add(me.RelativeColorSyntax),b.colorNotation!==r&&(b=colorDataTo(b,r)),p=normalizeRelativeColorDataChannels(b),N=noneToZeroInRelativeColorDataChannels(p)}else{if(!ne(o))return!1;if(n(o.value)&&p){const e=o.value[4].value.toLowerCase();if(p.has(e)){g.push(new oe(p.get(e)));continue}}g.push(o)}}}if(1!==g.length)return!1;if(1!==i.length||1!==c.length||1!==h.length)return!1;if(!ne(i[0])||!ne(c[0])||!ne(h[0]))return!1;if(p&&!p.has(\"alpha\"))return!1;const f=a(i[0].value,0,v);if(!f||!o(f))return!1;const d=a(c[0].value,1,v);if(!d||!o(d))return!1;const y=a(h[0].value,2,v);if(!y||!o(y))return!1;const _=[f,d,y];if(1===m.length)if(v.syntaxFlags.add(me.HasAlpha),ne(m[0])){const e=a(m[0].value,3,v);if(!e||!o(e))return!1;_.push(e)}else v.alpha=m[0];else if(p&&p.has(\"alpha\")){const e=a(p.get(\"alpha\"),3,v);if(!e||!o(e))return!1;_.push(e)}return v.channels=[_[0][4].value,_[1][4].value,_[2][4].value],4===_.length&&(v.alpha=_[3][4].value),v}function hsl(e,a){if(e.value.some(e=>ne(e)&&s(e.value))){const a=hslCommaSeparated(e);if(!1!==a)return a}{const n=hslSpaceSeparated(e,a);if(!1!==n)return n}return!1}function hslCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_HSL_ChannelValues,he.HSL,[me.LegacyHSL])}function hslSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_HSL_ChannelValues,he.HSL,[],a)}function normalize_HWB_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(me.HasPercentageAlpha):s.syntaxFlags.add(me.HasPercentageValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function normalize_Lab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,.8,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lab(e,a){return threeChannelSpaceSeparated(e,normalize_Lab_ChannelValues,he.Lab,[],a)}function normalize_LCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,100/150,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lch(e,a){return threeChannelSpaceSeparated(e,normalize_LCH_ChannelValues,he.LCH,[],a)}const de=new Map;for(const[e,a]of Object.entries(G))de.set(e,a);function namedColor(e){const a=de.get(toLowerCaseAZ(e));return!!a&&{colorNotation:he.RGB,channels:[a[0]/255,a[1]/255,a[2]/255],alpha:1,syntaxFlags:new Set([me.ColorKeyword,me.NamedColor])}}function normalize_OKLab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l||2===l?n=normalize(t[4].value,250,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklab(e,a){return threeChannelSpaceSeparated(e,normalize_OKLab_ChannelValues,he.OKLab,[],a)}function normalize_OKLCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l?n=normalize(t[4].value,250,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklch(e,a){return threeChannelSpaceSeparated(e,normalize_OKLCH_ChannelValues,he.OKLCH,[],a)}function normalize_legacy_sRGB_ChannelValues(n,t,l){if(r(n)){3===t?l.syntaxFlags.add(me.HasPercentageAlpha):l.syntaxFlags.add(me.HasPercentageValues);const r=normalize(n[4].value,100,0,1);return[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){3!==t&&l.syntaxFlags.add(me.HasNumberValues);let r=normalize(n[4].value,255,0,1);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_sRGB_ChannelValues(t,l,s){if(n(t)&&\"none\"===t[4].value.toLowerCase())return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,255,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function rgb(e,a){if(e.value.some(e=>ne(e)&&s(e.value))){const a=rgbCommaSeparated(e);if(!1!==a)return(!a.syntaxFlags.has(me.HasNumberValues)||!a.syntaxFlags.has(me.HasPercentageValues))&&a}else{const n=rgbSpaceSeparated(e,a);if(!1!==n)return n}return!1}function rgbCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_sRGB_ChannelValues,he.RGB,[me.LegacyRGB])}function rgbSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_sRGB_ChannelValues,he.RGB,[],a)}function XYZ_D50_to_sRGB_Gamut(e){const a=x(e);if(A(a))return X(a);let n=e;return n=p(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),K(Y(n,oklch_to_lin_srgb,lin_srgb_to_oklch))}function oklch_to_lin_srgb(e){return e=I(e),e=O(e),W(e)}function lin_srgb_to_oklch(e){return e=E(e),e=U(e),$(e)}function contrastColor(e,a){let n=!1;for(let r=0;r<e.value.length;r++){const o=e.value[r];if(!ee(o)&&!ae(o)&&(n||(n=a(o),!n)))return!1}if(!n)return!1;n.channels=convertNaNToZero(n.channels),n.channels=XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels),n.colorNotation=he.sRGB;const r={colorNotation:he.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([me.ContrastColor,me.Experimental])},o=j(n.channels,[1,1,1]),t=j(n.channels,[0,0,0]);return r.channels=o>t?[1,1,1]:[0,0,0],r}function alpha(e,a){let r,s,u=!1,i=!1,c=!1;const h={colorNotation:he.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([])};for(let m=0;m<e.value.length;m++){let p=e.value[m];if(ee(p)||ae(p))for(;ee(e.value[m+1])||ae(e.value[m+1]);)m++;else if(c&&!u&&!i&&ne(p)&&t(p.value)&&\"/\"===p.value[4].value)u=!0;else{if(re(p)&&ie.has(toLowerCaseAZ(p.getName()))){const[[e]]=ce([[p]],{censorIntoStandardRepresentableValues:!0,globals:s,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),p=e}if(u||i||!ne(p)||!n(p.value)||\"from\"!==toLowerCaseAZ(p.value[4].value)){if(!u)return!1;if(i)return!1;if(ne(p)){if(n(p.value)&&\"alpha\"===toLowerCaseAZ(p.value[4].value)&&r&&r.has(\"alpha\")){h.alpha=r.get(\"alpha\")[4].value,i=!0;continue}const e=normalize_Color_ChannelValues(p.value,3,h);if(!e||!o(e))return!1;h.alpha=new oe(e),i=!0;continue}if(re(p)){const e=le([[p]],e=>{if(ne(e)&&n(e.value)&&\"alpha\"===toLowerCaseAZ(e.value[4].value)&&r&&r.has(\"alpha\"))return new oe(r.get(\"alpha\"))});h.alpha=e[0][0],i=!0;continue}return!1}if(c)return!1;for(;ee(e.value[m+1])||ae(e.value[m+1]);)m++;if(m++,p=e.value[m],c=a(p),!1===c)return!1;r=normalizeRelativeColorDataChannels(c),s=noneToZeroInRelativeColorDataChannels(r),h.syntaxFlags=new Set(c.syntaxFlags),h.syntaxFlags.add(me.RelativeAlphaSyntax),h.channels=[...c.channels],h.colorNotation=c.colorNotation,h.alpha=c.alpha}}return!!r&&h}function XYZ_D50_to_P3_Gamut(e){const a=C(e);if(A(a))return X(a);let n=e;return n=p(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),q(Y(n,oklch_to_lin_p3,lin_p3_to_oklch))}function oklch_to_lin_p3(e){return e=I(e),e=O(e),J(e)}function lin_p3_to_oklch(e){return e=Q(e),e=U(e),$(e)}function toPrecision(e,a=7){e=+e,a=+a;const n=(Math.floor(Math.abs(e))+\"\").length;if(a>n)return+e.toFixed(a-n);{const r=10**(n-a);return Math.round(e/r)*r}}function serializeWithAlpha(n,r,o,t){const l=[e.CloseParen,\")\",-1,-1,void 0];if(\"number\"==typeof n.alpha){const s=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(s,4)?new se(r,l,t):new se(r,l,[...t,new ue([o]),new oe([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new ue([o]),new oe([e.Number,toPrecision(s,4).toString(),-1,-1,{value:n.alpha,type:a.Integer}])])}return new se(r,l,[...t,new ue([o]),new oe([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new ue([o]),n.alpha])}function serializeP3(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map(e=>Number.isNaN(e)?0:e);r?o=XYZ_D50_to_P3_Gamut(colorData_to_XYZ_D50(n).channels):n.colorNotation!==he.Display_P3&&(o=C(colorData_to_XYZ_D50(n).channels));const t=r?Math.min(1,Math.max(0,toPrecision(o[0],6))):toPrecision(o[0],6),l=r?Math.min(1,Math.max(0,toPrecision(o[1],6))):toPrecision(o[1],6),s=r?Math.min(1,Math.max(0,toPrecision(o[2],6))):toPrecision(o[2],6),u=[e.Function,\"color(\",-1,-1,{value:\"color\"}],i=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,u,i,[new oe([e.Ident,\"display-p3\",-1,-1,{value:\"display-p3\"}]),new ue([i]),new oe([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Number}]),new ue([i]),new oe([e.Number,l.toString(),-1,-1,{value:o[1],type:a.Number}]),new ue([i]),new oe([e.Number,s.toString(),-1,-1,{value:o[2],type:a.Number}])])}function serializeRGB(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map(e=>Number.isNaN(e)?0:e);o=r?XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels):x(colorData_to_XYZ_D50(n).channels);const t=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[0])))),l=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[1])))),s=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],i=[e.Whitespace,\" \",-1,-1,void 0],c=[e.Comma,\",\",-1,-1,void 0],h=[new oe([e.Number,t.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[0])),type:a.Integer}]),new oe(c),new ue([i]),new oe([e.Number,l.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[1])),type:a.Integer}]),new oe(c),new ue([i]),new oe([e.Number,s.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[2])),type:a.Integer}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new se([e.Function,\"rgb(\",-1,-1,{value:\"rgb\"}],u,h):new se([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new oe(c),new ue([i]),new oe([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new se([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new oe(c),new ue([i]),n.alpha])}function serializeHSL(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map(e=>Number.isNaN(e)?0:e);o=g(r?T(XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels)):colorData_to_XYZ_D50(n).channels),o=o.map(e=>Number.isNaN(e)?0:e);const t=Math.min(360,Math.max(0,Math.round(toPrecision(o[0])))),l=Math.min(100,Math.max(0,Math.round(toPrecision(o[1])))),s=Math.min(100,Math.max(0,Math.round(toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],i=[e.Whitespace,\" \",-1,-1,void 0],c=[e.Comma,\",\",-1,-1,void 0],h=[new oe([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Integer}]),new oe(c),new ue([i]),new oe([e.Percentage,l.toString()+\"%\",-1,-1,{value:o[1]}]),new oe(c),new ue([i]),new oe([e.Percentage,s.toString()+\"%\",-1,-1,{value:o[2]}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new se([e.Function,\"hsl(\",-1,-1,{value:\"hsl\"}],u,h):new se([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new oe(c),new ue([i]),new oe([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new se([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new oe(c),new ue([i]),n.alpha])}function serializeOKLCH(n){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let r=n.channels.map(e=>Number.isNaN(e)?0:e);n.colorNotation!==he.OKLCH&&(r=p(colorData_to_XYZ_D50(n).channels));const o=toPrecision(r[0],6),t=toPrecision(r[1],6),l=toPrecision(r[2],6),s=[e.Function,\"oklch(\",-1,-1,{value:\"oklch\"}],u=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,s,u,[new oe([e.Number,o.toString(),-1,-1,{value:r[0],type:a.Number}]),new ue([u]),new oe([e.Number,t.toString(),-1,-1,{value:r[1],type:a.Number}]),new ue([u]),new oe([e.Number,l.toString(),-1,-1,{value:r[2],type:a.Number}])])}function color(e){if(re(e)){switch(toLowerCaseAZ(e.getName())){case\"rgb\":case\"rgba\":return rgb(e,color);case\"hsl\":case\"hsla\":return hsl(e,color);case\"hwb\":return a=color,threeChannelSpaceSeparated(e,normalize_HWB_ChannelValues,he.HWB,[],a);case\"lab\":return lab(e,color);case\"lch\":return lch(e,color);case\"oklab\":return oklab(e,color);case\"oklch\":return oklch(e,color);case\"color\":return color$1(e,color);case\"color-mix\":return colorMix(e,color);case\"contrast-color\":return contrastColor(e,color);case\"alpha\":return alpha(e,color)}}var a;if(ne(e)){if(i(e.value))return hex(e.value);if(n(e.value)){const a=namedColor(e.value[4].value);return!1!==a?a:\"transparent\"===toLowerCaseAZ(e.value[4].value)&&{colorNotation:he.RGB,channels:[0,0,0],alpha:0,syntaxFlags:new Set([me.ColorKeyword])}}}return!1}export{he as ColorNotation,me as SyntaxFlag,color,colorDataFitsDisplayP3_Gamut,colorDataFitsRGB_Gamut,serializeHSL,serializeOKLCH,serializeP3,serializeRGB};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  convert: () => convert,\n  resolve: () => resolve,\n  utils: () => utils\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/js/css-calc.ts\nvar import_css_calc4 = require(\"@csstools/css-calc\");\nvar import_css_tokenizer4 = require(\"@csstools/css-tokenizer\");\n\n// src/js/cache.ts\nvar import_lru_cache = require(\"lru-cache\");\n\n// src/js/util.ts\nvar import_css_tokenizer3 = require(\"@csstools/css-tokenizer\");\n\n// src/js/common.ts\nvar isString = (o) => typeof o === \"string\" || o instanceof String;\nvar isStringOrNumber = (o) => isString(o) || typeof o === \"number\";\n\n// src/js/constant.ts\nvar _DIGIT = \"(?:0|[1-9]\\\\d*)\";\nvar _COMPARE = \"clamp|max|min\";\nvar _EXPO = \"exp|hypot|log|pow|sqrt\";\nvar _SIGN = \"abs|sign\";\nvar _STEP = \"mod|rem|round\";\nvar _TRIG = \"a?(?:cos|sin|tan)|atan2\";\nvar _MATH = `${_COMPARE}|${_EXPO}|${_SIGN}|${_STEP}|${_TRIG}`;\nvar _CALC = `calc|${_MATH}`;\nvar _VAR = `var|${_CALC}`;\nvar ANGLE = \"deg|g?rad|turn\";\nvar LENGTH = \"[cm]m|[dls]?v(?:[bhiw]|max|min)|in|p[ctx]|q|r?(?:[cl]h|cap|e[mx]|ic)\";\nvar NUM = `[+-]?(?:${_DIGIT}(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?${_DIGIT})?`;\nvar NUM_POSITIVE = `\\\\+?(?:${_DIGIT}(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?${_DIGIT})?`;\nvar NONE = \"none\";\nvar PCT = `${NUM}%`;\nvar SYN_FN_CALC = `^(?:${_CALC})\\\\(|(?<=[*\\\\/\\\\s\\\\(])(?:${_CALC})\\\\(`;\nvar SYN_FN_MATH_START = `^(?:${_MATH})\\\\($`;\nvar SYN_FN_VAR = \"^var\\\\(|(?<=[*\\\\/\\\\s\\\\(])var\\\\(\";\nvar SYN_FN_VAR_START = `^(?:${_VAR})\\\\(`;\nvar _ALPHA = `(?:\\\\s*\\\\/\\\\s*(?:${NUM}|${PCT}|${NONE}))?`;\nvar _ALPHA_LV3 = `(?:\\\\s*,\\\\s*(?:${NUM}|${PCT}))?`;\nvar _COLOR_FUNC = \"(?:ok)?l(?:ab|ch)|color|hsla?|hwb|rgba?\";\nvar _COLOR_KEY = \"[a-z]+|#[\\\\da-f]{3}|#[\\\\da-f]{4}|#[\\\\da-f]{6}|#[\\\\da-f]{8}\";\nvar _CS_HUE = \"(?:ok)?lch|hsl|hwb\";\nvar _CS_HUE_ARC = \"(?:de|in)creasing|longer|shorter\";\nvar _NUM_ANGLE = `${NUM}(?:${ANGLE})?`;\nvar _NUM_ANGLE_NONE = `(?:${NUM}(?:${ANGLE})?|${NONE})`;\nvar _NUM_PCT_NONE = `(?:${NUM}|${PCT}|${NONE})`;\nvar CS_HUE = `(?:${_CS_HUE})(?:\\\\s(?:${_CS_HUE_ARC})\\\\shue)?`;\nvar CS_HUE_CAPT = `(${_CS_HUE})(?:\\\\s(${_CS_HUE_ARC})\\\\shue)?`;\nvar CS_LAB = \"(?:ok)?lab\";\nvar CS_LCH = \"(?:ok)?lch\";\nvar CS_SRGB = \"srgb(?:-linear)?\";\nvar CS_RGB = `(?:a98|prophoto)-rgb|display-p3|rec2020|${CS_SRGB}`;\nvar CS_XYZ = \"xyz(?:-d(?:50|65))?\";\nvar CS_RECT = `${CS_LAB}|${CS_RGB}|${CS_XYZ}`;\nvar CS_MIX = `${CS_HUE}|${CS_RECT}`;\nvar FN_COLOR = \"color(\";\nvar FN_LIGHT_DARK = \"light-dark(\";\nvar FN_MIX = \"color-mix(\";\nvar FN_REL = `(?:${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nvar FN_REL_CAPT = `(${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nvar FN_VAR = \"var(\";\nvar SYN_FN_COLOR = `(?:${CS_RGB}|${CS_XYZ})(?:\\\\s+${_NUM_PCT_NONE}){3}${_ALPHA}`;\nvar SYN_FN_LIGHT_DARK = \"^light-dark\\\\(\";\nvar SYN_FN_REL = `^${FN_REL}|(?<=[\\\\s])${FN_REL}`;\nvar SYN_HSL = `${_NUM_ANGLE_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nvar SYN_HSL_LV3 = `${_NUM_ANGLE}(?:\\\\s*,\\\\s*${PCT}){2}${_ALPHA_LV3}`;\nvar SYN_LCH = `(?:${_NUM_PCT_NONE}\\\\s+){2}${_NUM_ANGLE_NONE}${_ALPHA}`;\nvar SYN_MOD = `${_NUM_PCT_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nvar SYN_RGB_LV3 = `(?:${NUM}(?:\\\\s*,\\\\s*${NUM}){2}|${PCT}(?:\\\\s*,\\\\s*${PCT}){2})${_ALPHA_LV3}`;\nvar SYN_COLOR_TYPE = `${_COLOR_KEY}|hsla?\\\\(\\\\s*${SYN_HSL_LV3}\\\\s*\\\\)|rgba?\\\\(\\\\s*${SYN_RGB_LV3}\\\\s*\\\\)|(?:hsla?|hwb)\\\\(\\\\s*${SYN_HSL}\\\\s*\\\\)|(?:(?:ok)?lab|rgba?)\\\\(\\\\s*${SYN_MOD}\\\\s*\\\\)|(?:ok)?lch\\\\(\\\\s*${SYN_LCH}\\\\s*\\\\)|color\\\\(\\\\s*${SYN_FN_COLOR}\\\\s*\\\\)`;\nvar SYN_MIX_PART = `(?:${SYN_COLOR_TYPE})(?:\\\\s+${PCT})?`;\nvar SYN_MIX = `color-mix\\\\(\\\\s*in\\\\s+(?:${CS_MIX})\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*\\\\)`;\nvar SYN_MIX_CAPT = `color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*\\\\)`;\nvar VAL_COMP = \"computedValue\";\nvar VAL_MIX = \"mixValue\";\nvar VAL_SPEC = \"specifiedValue\";\n\n// src/js/color.ts\nvar NAMESPACE = \"color\";\nvar PPTH = 1e-3;\nvar HALF = 0.5;\nvar DUO = 2;\nvar TRIA = 3;\nvar QUAD = 4;\nvar OCT = 8;\nvar DEC = 10;\nvar DOZ = 12;\nvar HEX = 16;\nvar SEXA = 60;\nvar DEG_HALF = 180;\nvar DEG = 360;\nvar MAX_PCT = 100;\nvar MAX_RGB = 255;\nvar POW_SQR = 2;\nvar POW_CUBE = 3;\nvar POW_LINEAR = 2.4;\nvar LINEAR_COEF = 12.92;\nvar LINEAR_OFFSET = 0.055;\nvar LAB_L = 116;\nvar LAB_A = 500;\nvar LAB_B = 200;\nvar LAB_EPSILON = 216 / 24389;\nvar LAB_KAPPA = 24389 / 27;\nvar D50 = [\n  0.3457 / 0.3585,\n  1,\n  (1 - 0.3457 - 0.3585) / 0.3585\n];\nvar MATRIX_D50_TO_D65 = [\n  [0.955473421488075, -0.02309845494876471, 0.06325924320057072],\n  [-0.0283697093338637, 1.0099953980813041, 0.021041441191917323],\n  [0.012314014864481998, -0.020507649298898964, 1.330365926242124]\n];\nvar MATRIX_D65_TO_D50 = [\n  [1.0479297925449969, 0.022946870601609652, -0.05019226628920524],\n  [0.02962780877005599, 0.9904344267538799, -0.017073799063418826],\n  [-0.009243040646204504, 0.015055191490298152, 0.7518742814281371]\n];\nvar MATRIX_L_RGB_TO_XYZ = [\n  [506752 / 1228815, 87881 / 245763, 12673 / 70218],\n  [87098 / 409605, 175762 / 245763, 12673 / 175545],\n  [7918 / 409605, 87881 / 737289, 1001167 / 1053270]\n];\nvar MATRIX_XYZ_TO_L_RGB = [\n  [12831 / 3959, -329 / 214, -1974 / 3959],\n  [-851781 / 878810, 1648619 / 878810, 36519 / 878810],\n  [705 / 12673, -2585 / 12673, 705 / 667]\n];\nvar MATRIX_XYZ_TO_LMS = [\n  [0.819022437996703, 0.3619062600528904, -0.1288737815209879],\n  [0.0329836539323885, 0.9292868615863434, 0.0361446663506424],\n  [0.0481771893596242, 0.2642395317527308, 0.6335478284694309]\n];\nvar MATRIX_LMS_TO_XYZ = [\n  [1.2268798758459243, -0.5578149944602171, 0.2813910456659647],\n  [-0.0405757452148008, 1.112286803280317, -0.0717110580655164],\n  [-0.0763729366746601, -0.4214933324022432, 1.5869240198367816]\n];\nvar MATRIX_OKLAB_TO_LMS = [\n  [1, 0.3963377773761749, 0.2158037573099136],\n  [1, -0.1055613458156586, -0.0638541728258133],\n  [1, -0.0894841775298119, -1.2914855480194092]\n];\nvar MATRIX_LMS_TO_OKLAB = [\n  [0.210454268309314, 0.7936177747023054, -0.0040720430116193],\n  [1.9779985324311684, -2.42859224204858, 0.450593709617411],\n  [0.0259040424655478, 0.7827717124575296, -0.8086757549230774]\n];\nvar MATRIX_P3_TO_XYZ = [\n  [608311 / 1250200, 189793 / 714400, 198249 / 1000160],\n  [35783 / 156275, 247089 / 357200, 198249 / 2500400],\n  [0 / 1, 32229 / 714400, 5220557 / 5000800]\n];\nvar MATRIX_REC2020_TO_XYZ = [\n  [63426534 / 99577255, 20160776 / 139408157, 47086771 / 278816314],\n  [26158966 / 99577255, 472592308 / 697040785, 8267143 / 139408157],\n  [0 / 1, 19567812 / 697040785, 295819943 / 278816314]\n];\nvar MATRIX_A98_TO_XYZ = [\n  [573536 / 994567, 263643 / 1420810, 187206 / 994567],\n  [591459 / 1989134, 6239551 / 9945670, 374412 / 4972835],\n  [53769 / 1989134, 351524 / 4972835, 4929758 / 4972835]\n];\nvar MATRIX_PROPHOTO_TO_XYZ_D50 = [\n  [0.7977666449006423, 0.13518129740053308, 0.0313477341283922],\n  [0.2880748288194013, 0.711835234241873, 8993693872564e-17],\n  [0, 0, 0.8251046025104602]\n];\nvar REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nvar REG_CS_HUE = new RegExp(`^${CS_HUE_CAPT}$`);\nvar REG_CS_XYZ = /^xyz(?:-d(?:50|65))?$/;\nvar REG_CURRENT = /^currentColor$/i;\nvar REG_FN_COLOR = new RegExp(`^color\\\\(\\\\s*(${SYN_FN_COLOR})\\\\s*\\\\)$`);\nvar REG_HSL = new RegExp(`^hsla?\\\\(\\\\s*(${SYN_HSL}|${SYN_HSL_LV3})\\\\s*\\\\)$`);\nvar REG_HWB = new RegExp(`^hwb\\\\(\\\\s*(${SYN_HSL})\\\\s*\\\\)$`);\nvar REG_LAB = new RegExp(`^lab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nvar REG_LCH = new RegExp(`^lch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nvar REG_MIX = new RegExp(`^${SYN_MIX}$`);\nvar REG_MIX_CAPT = new RegExp(`^${SYN_MIX_CAPT}$`);\nvar REG_MIX_NEST = new RegExp(`${SYN_MIX}`, \"g\");\nvar REG_OKLAB = new RegExp(`^oklab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nvar REG_OKLCH = new RegExp(`^oklch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nvar REG_SPEC = /^(?:specifi|comput)edValue$/;\nvar NAMED_COLORS = {\n  aliceblue: [240, 248, 255],\n  antiquewhite: [250, 235, 215],\n  aqua: [0, 255, 255],\n  aquamarine: [127, 255, 212],\n  azure: [240, 255, 255],\n  beige: [245, 245, 220],\n  bisque: [255, 228, 196],\n  black: [0, 0, 0],\n  blanchedalmond: [255, 235, 205],\n  blue: [0, 0, 255],\n  blueviolet: [138, 43, 226],\n  brown: [165, 42, 42],\n  burlywood: [222, 184, 135],\n  cadetblue: [95, 158, 160],\n  chartreuse: [127, 255, 0],\n  chocolate: [210, 105, 30],\n  coral: [255, 127, 80],\n  cornflowerblue: [100, 149, 237],\n  cornsilk: [255, 248, 220],\n  crimson: [220, 20, 60],\n  cyan: [0, 255, 255],\n  darkblue: [0, 0, 139],\n  darkcyan: [0, 139, 139],\n  darkgoldenrod: [184, 134, 11],\n  darkgray: [169, 169, 169],\n  darkgreen: [0, 100, 0],\n  darkgrey: [169, 169, 169],\n  darkkhaki: [189, 183, 107],\n  darkmagenta: [139, 0, 139],\n  darkolivegreen: [85, 107, 47],\n  darkorange: [255, 140, 0],\n  darkorchid: [153, 50, 204],\n  darkred: [139, 0, 0],\n  darksalmon: [233, 150, 122],\n  darkseagreen: [143, 188, 143],\n  darkslateblue: [72, 61, 139],\n  darkslategray: [47, 79, 79],\n  darkslategrey: [47, 79, 79],\n  darkturquoise: [0, 206, 209],\n  darkviolet: [148, 0, 211],\n  deeppink: [255, 20, 147],\n  deepskyblue: [0, 191, 255],\n  dimgray: [105, 105, 105],\n  dimgrey: [105, 105, 105],\n  dodgerblue: [30, 144, 255],\n  firebrick: [178, 34, 34],\n  floralwhite: [255, 250, 240],\n  forestgreen: [34, 139, 34],\n  fuchsia: [255, 0, 255],\n  gainsboro: [220, 220, 220],\n  ghostwhite: [248, 248, 255],\n  gold: [255, 215, 0],\n  goldenrod: [218, 165, 32],\n  gray: [128, 128, 128],\n  green: [0, 128, 0],\n  greenyellow: [173, 255, 47],\n  grey: [128, 128, 128],\n  honeydew: [240, 255, 240],\n  hotpink: [255, 105, 180],\n  indianred: [205, 92, 92],\n  indigo: [75, 0, 130],\n  ivory: [255, 255, 240],\n  khaki: [240, 230, 140],\n  lavender: [230, 230, 250],\n  lavenderblush: [255, 240, 245],\n  lawngreen: [124, 252, 0],\n  lemonchiffon: [255, 250, 205],\n  lightblue: [173, 216, 230],\n  lightcoral: [240, 128, 128],\n  lightcyan: [224, 255, 255],\n  lightgoldenrodyellow: [250, 250, 210],\n  lightgray: [211, 211, 211],\n  lightgreen: [144, 238, 144],\n  lightgrey: [211, 211, 211],\n  lightpink: [255, 182, 193],\n  lightsalmon: [255, 160, 122],\n  lightseagreen: [32, 178, 170],\n  lightskyblue: [135, 206, 250],\n  lightslategray: [119, 136, 153],\n  lightslategrey: [119, 136, 153],\n  lightsteelblue: [176, 196, 222],\n  lightyellow: [255, 255, 224],\n  lime: [0, 255, 0],\n  limegreen: [50, 205, 50],\n  linen: [250, 240, 230],\n  magenta: [255, 0, 255],\n  maroon: [128, 0, 0],\n  mediumaquamarine: [102, 205, 170],\n  mediumblue: [0, 0, 205],\n  mediumorchid: [186, 85, 211],\n  mediumpurple: [147, 112, 219],\n  mediumseagreen: [60, 179, 113],\n  mediumslateblue: [123, 104, 238],\n  mediumspringgreen: [0, 250, 154],\n  mediumturquoise: [72, 209, 204],\n  mediumvioletred: [199, 21, 133],\n  midnightblue: [25, 25, 112],\n  mintcream: [245, 255, 250],\n  mistyrose: [255, 228, 225],\n  moccasin: [255, 228, 181],\n  navajowhite: [255, 222, 173],\n  navy: [0, 0, 128],\n  oldlace: [253, 245, 230],\n  olive: [128, 128, 0],\n  olivedrab: [107, 142, 35],\n  orange: [255, 165, 0],\n  orangered: [255, 69, 0],\n  orchid: [218, 112, 214],\n  palegoldenrod: [238, 232, 170],\n  palegreen: [152, 251, 152],\n  paleturquoise: [175, 238, 238],\n  palevioletred: [219, 112, 147],\n  papayawhip: [255, 239, 213],\n  peachpuff: [255, 218, 185],\n  peru: [205, 133, 63],\n  pink: [255, 192, 203],\n  plum: [221, 160, 221],\n  powderblue: [176, 224, 230],\n  purple: [128, 0, 128],\n  rebeccapurple: [102, 51, 153],\n  red: [255, 0, 0],\n  rosybrown: [188, 143, 143],\n  royalblue: [65, 105, 225],\n  saddlebrown: [139, 69, 19],\n  salmon: [250, 128, 114],\n  sandybrown: [244, 164, 96],\n  seagreen: [46, 139, 87],\n  seashell: [255, 245, 238],\n  sienna: [160, 82, 45],\n  silver: [192, 192, 192],\n  skyblue: [135, 206, 235],\n  slateblue: [106, 90, 205],\n  slategray: [112, 128, 144],\n  slategrey: [112, 128, 144],\n  snow: [255, 250, 250],\n  springgreen: [0, 255, 127],\n  steelblue: [70, 130, 180],\n  tan: [210, 180, 140],\n  teal: [0, 128, 128],\n  thistle: [216, 191, 216],\n  tomato: [255, 99, 71],\n  turquoise: [64, 224, 208],\n  violet: [238, 130, 238],\n  wheat: [245, 222, 179],\n  white: [255, 255, 255],\n  whitesmoke: [245, 245, 245],\n  yellow: [255, 255, 0],\n  yellowgreen: [154, 205, 50]\n};\nvar cacheInvalidColorValue = (cacheKey, format, nullable = false) => {\n  if (format === VAL_SPEC) {\n    const res2 = \"\";\n    setCache(cacheKey, res2);\n    return res2;\n  }\n  if (nullable) {\n    setCache(cacheKey, null);\n    return new NullObject();\n  }\n  const res = [\"rgb\", 0, 0, 0, 0];\n  setCache(cacheKey, res);\n  return res;\n};\nvar resolveInvalidColorValue = (format, nullable = false) => {\n  switch (format) {\n    case \"hsl\":\n    case \"hwb\":\n    case VAL_MIX: {\n      return new NullObject();\n    }\n    case VAL_SPEC: {\n      return \"\";\n    }\n    default: {\n      if (nullable) {\n        return new NullObject();\n      }\n      return [\"rgb\", 0, 0, 0, 0];\n    }\n  }\n};\nvar validateColorComponents = (arr, opt = {}) => {\n  if (!Array.isArray(arr)) {\n    throw new TypeError(`${arr} is not an array.`);\n  }\n  const {\n    alpha = false,\n    minLength = TRIA,\n    maxLength = QUAD,\n    minRange = 0,\n    maxRange = 1,\n    validateRange = true\n  } = opt;\n  if (!Number.isFinite(minLength)) {\n    throw new TypeError(`${minLength} is not a number.`);\n  }\n  if (!Number.isFinite(maxLength)) {\n    throw new TypeError(`${maxLength} is not a number.`);\n  }\n  if (!Number.isFinite(minRange)) {\n    throw new TypeError(`${minRange} is not a number.`);\n  }\n  if (!Number.isFinite(maxRange)) {\n    throw new TypeError(`${maxRange} is not a number.`);\n  }\n  const l = arr.length;\n  if (l < minLength || l > maxLength) {\n    throw new Error(`Unexpected array length ${l}.`);\n  }\n  let i = 0;\n  while (i < l) {\n    const v = arr[i];\n    if (!Number.isFinite(v)) {\n      throw new TypeError(`${v} is not a number.`);\n    } else if (i < TRIA && validateRange && (v < minRange || v > maxRange)) {\n      throw new RangeError(`${v} is not between ${minRange} and ${maxRange}.`);\n    } else if (i === TRIA && (v < 0 || v > 1)) {\n      throw new RangeError(`${v} is not between 0 and 1.`);\n    }\n    i++;\n  }\n  if (alpha && l === TRIA) {\n    arr.push(1);\n  }\n  return arr;\n};\nvar transformMatrix = (mtx, vct, skip = false) => {\n  if (!Array.isArray(mtx)) {\n    throw new TypeError(`${mtx} is not an array.`);\n  } else if (mtx.length !== TRIA) {\n    throw new Error(`Unexpected array length ${mtx.length}.`);\n  } else if (!skip) {\n    for (let i of mtx) {\n      i = validateColorComponents(i, {\n        maxLength: TRIA,\n        validateRange: false\n      });\n    }\n  }\n  const [[r1c1, r1c2, r1c3], [r2c1, r2c2, r2c3], [r3c1, r3c2, r3c3]] = mtx;\n  let v1, v2, v3;\n  if (skip) {\n    [v1, v2, v3] = vct;\n  } else {\n    [v1, v2, v3] = validateColorComponents(vct, {\n      maxLength: TRIA,\n      validateRange: false\n    });\n  }\n  const p1 = r1c1 * v1 + r1c2 * v2 + r1c3 * v3;\n  const p2 = r2c1 * v1 + r2c2 * v2 + r2c3 * v3;\n  const p3 = r3c1 * v1 + r3c2 * v2 + r3c3 * v3;\n  return [p1, p2, p3];\n};\nvar normalizeColorComponents = (colorA, colorB, skip = false) => {\n  if (!Array.isArray(colorA)) {\n    throw new TypeError(`${colorA} is not an array.`);\n  } else if (colorA.length !== QUAD) {\n    throw new Error(`Unexpected array length ${colorA.length}.`);\n  }\n  if (!Array.isArray(colorB)) {\n    throw new TypeError(`${colorB} is not an array.`);\n  } else if (colorB.length !== QUAD) {\n    throw new Error(`Unexpected array length ${colorB.length}.`);\n  }\n  let i = 0;\n  while (i < QUAD) {\n    if (colorA[i] === NONE && colorB[i] === NONE) {\n      colorA[i] = 0;\n      colorB[i] = 0;\n    } else if (colorA[i] === NONE) {\n      colorA[i] = colorB[i];\n    } else if (colorB[i] === NONE) {\n      colorB[i] = colorA[i];\n    }\n    i++;\n  }\n  if (skip) {\n    return [colorA, colorB];\n  }\n  const validatedColorA = validateColorComponents(colorA, {\n    minLength: QUAD,\n    validateRange: false\n  });\n  const validatedColorB = validateColorComponents(colorB, {\n    minLength: QUAD,\n    validateRange: false\n  });\n  return [validatedColorA, validatedColorB];\n};\nvar numberToHexString = (value) => {\n  if (!Number.isFinite(value)) {\n    throw new TypeError(`${value} is not a number.`);\n  } else {\n    value = Math.round(value);\n    if (value < 0 || value > MAX_RGB) {\n      throw new RangeError(`${value} is not between 0 and ${MAX_RGB}.`);\n    }\n  }\n  let hex = value.toString(HEX);\n  if (hex.length === 1) {\n    hex = `0${hex}`;\n  }\n  return hex;\n};\nvar angleToDeg = (angle) => {\n  if (isString(angle)) {\n    angle = angle.trim();\n  } else {\n    throw new TypeError(`${angle} is not a string.`);\n  }\n  const GRAD = DEG / 400;\n  const RAD = DEG / (Math.PI * DUO);\n  const reg = new RegExp(`^(${NUM})(${ANGLE})?$`);\n  if (!reg.test(angle)) {\n    throw new SyntaxError(`Invalid property value: ${angle}`);\n  }\n  const [, value, unit] = angle.match(reg);\n  let deg;\n  switch (unit) {\n    case \"grad\":\n      deg = parseFloat(value) * GRAD;\n      break;\n    case \"rad\":\n      deg = parseFloat(value) * RAD;\n      break;\n    case \"turn\":\n      deg = parseFloat(value) * DEG;\n      break;\n    default:\n      deg = parseFloat(value);\n  }\n  deg %= DEG;\n  if (deg < 0) {\n    deg += DEG;\n  } else if (Object.is(deg, -0)) {\n    deg = 0;\n  }\n  return deg;\n};\nvar parseAlpha = (alpha = \"\") => {\n  if (isString(alpha)) {\n    alpha = alpha.trim();\n    if (!alpha) {\n      alpha = \"1\";\n    } else if (alpha === NONE) {\n      alpha = \"0\";\n    } else {\n      let a;\n      if (alpha.endsWith(\"%\")) {\n        a = parseFloat(alpha) / MAX_PCT;\n      } else {\n        a = parseFloat(alpha);\n      }\n      if (!Number.isFinite(a)) {\n        throw new TypeError(`${a} is not a finite number.`);\n      }\n      if (a < PPTH) {\n        alpha = \"0\";\n      } else if (a > 1) {\n        alpha = \"1\";\n      } else {\n        alpha = a.toFixed(TRIA);\n      }\n    }\n  } else {\n    alpha = \"1\";\n  }\n  return parseFloat(alpha);\n};\nvar parseHexAlpha = (value) => {\n  if (isString(value)) {\n    if (value === \"\") {\n      throw new SyntaxError(\"Invalid property value: (empty string)\");\n    }\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  let alpha = parseInt(value, HEX);\n  if (alpha <= 0) {\n    return 0;\n  }\n  if (alpha >= MAX_RGB) {\n    return 1;\n  }\n  const alphaMap = /* @__PURE__ */ new Map();\n  for (let i = 1; i < MAX_PCT; i++) {\n    alphaMap.set(Math.round(i * MAX_RGB / MAX_PCT), i);\n  }\n  if (alphaMap.has(alpha)) {\n    alpha = alphaMap.get(alpha) / MAX_PCT;\n  } else {\n    alpha = Math.round(alpha / MAX_RGB / PPTH) * PPTH;\n  }\n  return parseFloat(alpha.toFixed(TRIA));\n};\nvar transformRgbToLinearRgb = (rgb, skip = false) => {\n  let rr, gg, bb;\n  if (skip) {\n    [rr, gg, bb] = rgb;\n  } else {\n    [rr, gg, bb] = validateColorComponents(rgb, {\n      maxLength: TRIA,\n      maxRange: MAX_RGB\n    });\n  }\n  let r = rr / MAX_RGB;\n  let g = gg / MAX_RGB;\n  let b = bb / MAX_RGB;\n  const COND_POW = 0.04045;\n  if (r > COND_POW) {\n    r = Math.pow((r + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n  } else {\n    r /= LINEAR_COEF;\n  }\n  if (g > COND_POW) {\n    g = Math.pow((g + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n  } else {\n    g /= LINEAR_COEF;\n  }\n  if (b > COND_POW) {\n    b = Math.pow((b + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n  } else {\n    b /= LINEAR_COEF;\n  }\n  return [r, g, b];\n};\nvar transformRgbToXyz = (rgb, skip = false) => {\n  if (!skip) {\n    rgb = validateColorComponents(rgb, {\n      maxLength: TRIA,\n      maxRange: MAX_RGB\n    });\n  }\n  rgb = transformRgbToLinearRgb(rgb, true);\n  const xyz = transformMatrix(MATRIX_L_RGB_TO_XYZ, rgb, true);\n  return xyz;\n};\nvar transformLinearRgbToRgb = (rgb, round = false) => {\n  let [r, g, b] = validateColorComponents(rgb, {\n    maxLength: TRIA\n  });\n  const COND_POW = 809 / 258400;\n  if (r > COND_POW) {\n    r = Math.pow(r, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n  } else {\n    r *= LINEAR_COEF;\n  }\n  r *= MAX_RGB;\n  if (g > COND_POW) {\n    g = Math.pow(g, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n  } else {\n    g *= LINEAR_COEF;\n  }\n  g *= MAX_RGB;\n  if (b > COND_POW) {\n    b = Math.pow(b, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n  } else {\n    b *= LINEAR_COEF;\n  }\n  b *= MAX_RGB;\n  return [\n    round ? Math.round(r) : r,\n    round ? Math.round(g) : g,\n    round ? Math.round(b) : b\n  ];\n};\nvar transformXyzToRgb = (xyz, skip = false) => {\n  if (!skip) {\n    xyz = validateColorComponents(xyz, {\n      maxLength: TRIA,\n      validateRange: false\n    });\n  }\n  let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, xyz, true);\n  [r, g, b] = transformLinearRgbToRgb(\n    [\n      Math.min(Math.max(r, 0), 1),\n      Math.min(Math.max(g, 0), 1),\n      Math.min(Math.max(b, 0), 1)\n    ],\n    true\n  );\n  return [r, g, b];\n};\nvar transformXyzToHsl = (xyz, skip = false) => {\n  const [rr, gg, bb] = transformXyzToRgb(xyz, skip);\n  const r = rr / MAX_RGB;\n  const g = gg / MAX_RGB;\n  const b = bb / MAX_RGB;\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  const l = (max + min) * HALF * MAX_PCT;\n  let h, s;\n  if (Math.round(l) === 0 || Math.round(l) === MAX_PCT) {\n    h = 0;\n    s = 0;\n  } else {\n    s = d / (1 - Math.abs(max + min - 1)) * MAX_PCT;\n    if (s === 0) {\n      h = 0;\n    } else {\n      switch (max) {\n        case r:\n          h = (g - b) / d;\n          break;\n        case g:\n          h = (b - r) / d + DUO;\n          break;\n        case b:\n        default:\n          h = (r - g) / d + QUAD;\n          break;\n      }\n      h = h * SEXA % DEG;\n      if (h < 0) {\n        h += DEG;\n      }\n    }\n  }\n  return [h, s, l];\n};\nvar transformXyzToHwb = (xyz, skip = false) => {\n  const [r, g, b] = transformXyzToRgb(xyz, skip);\n  const wh = Math.min(r, g, b) / MAX_RGB;\n  const bk = 1 - Math.max(r, g, b) / MAX_RGB;\n  let h;\n  if (wh + bk === 1) {\n    h = 0;\n  } else {\n    [h] = transformXyzToHsl(xyz);\n  }\n  return [h, wh * MAX_PCT, bk * MAX_PCT];\n};\nvar transformXyzToOklab = (xyz, skip = false) => {\n  if (!skip) {\n    xyz = validateColorComponents(xyz, {\n      maxLength: TRIA,\n      validateRange: false\n    });\n  }\n  const lms = transformMatrix(MATRIX_XYZ_TO_LMS, xyz, true);\n  const xyzLms = lms.map((c) => Math.cbrt(c));\n  let [l, a, b] = transformMatrix(MATRIX_LMS_TO_OKLAB, xyzLms, true);\n  l = Math.min(Math.max(l, 0), 1);\n  const lPct = Math.round(parseFloat(l.toFixed(QUAD)) * MAX_PCT);\n  if (lPct === 0 || lPct === MAX_PCT) {\n    a = 0;\n    b = 0;\n  }\n  return [l, a, b];\n};\nvar transformXyzToOklch = (xyz, skip = false) => {\n  const [l, a, b] = transformXyzToOklab(xyz, skip);\n  let c, h;\n  const lPct = Math.round(parseFloat(l.toFixed(QUAD)) * MAX_PCT);\n  if (lPct === 0 || lPct === MAX_PCT) {\n    c = 0;\n    h = 0;\n  } else {\n    c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n    if (parseFloat(c.toFixed(QUAD)) === 0) {\n      h = 0;\n    } else {\n      h = Math.atan2(b, a) * DEG_HALF / Math.PI;\n      if (h < 0) {\n        h += DEG;\n      }\n    }\n  }\n  return [l, c, h];\n};\nvar transformXyzD50ToRgb = (xyz, skip = false) => {\n  if (!skip) {\n    xyz = validateColorComponents(xyz, {\n      maxLength: TRIA,\n      validateRange: false\n    });\n  }\n  const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, xyz, true);\n  const rgb = transformXyzToRgb(xyzD65, true);\n  return rgb;\n};\nvar transformXyzD50ToLab = (xyz, skip = false) => {\n  if (!skip) {\n    xyz = validateColorComponents(xyz, {\n      maxLength: TRIA,\n      validateRange: false\n    });\n  }\n  const xyzD50 = xyz.map((val, i) => val / D50[i]);\n  const [f0, f1, f2] = xyzD50.map(\n    (val) => val > LAB_EPSILON ? Math.cbrt(val) : (val * LAB_KAPPA + HEX) / LAB_L\n  );\n  const l = Math.min(Math.max(LAB_L * f1 - HEX, 0), MAX_PCT);\n  let a, b;\n  if (l === 0 || l === MAX_PCT) {\n    a = 0;\n    b = 0;\n  } else {\n    a = (f0 - f1) * LAB_A;\n    b = (f1 - f2) * LAB_B;\n  }\n  return [l, a, b];\n};\nvar transformXyzD50ToLch = (xyz, skip = false) => {\n  const [l, a, b] = transformXyzD50ToLab(xyz, skip);\n  let c, h;\n  if (l === 0 || l === MAX_PCT) {\n    c = 0;\n    h = 0;\n  } else {\n    c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n    h = Math.atan2(b, a) * DEG_HALF / Math.PI;\n    if (h < 0) {\n      h += DEG;\n    }\n  }\n  return [l, c, h];\n};\nvar convertRgbToHex = (rgb) => {\n  const [r, g, b, alpha] = validateColorComponents(rgb, {\n    alpha: true,\n    maxRange: MAX_RGB\n  });\n  const rr = numberToHexString(r);\n  const gg = numberToHexString(g);\n  const bb = numberToHexString(b);\n  const aa = numberToHexString(alpha * MAX_RGB);\n  let hex;\n  if (aa === \"ff\") {\n    hex = `#${rr}${gg}${bb}`;\n  } else {\n    hex = `#${rr}${gg}${bb}${aa}`;\n  }\n  return hex;\n};\nvar convertHexToRgb = (value) => {\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  if (!(/^#[\\da-f]{6}$/.test(value) || /^#[\\da-f]{3}$/.test(value) || /^#[\\da-f]{8}$/.test(value) || /^#[\\da-f]{4}$/.test(value))) {\n    throw new SyntaxError(`Invalid property value: ${value}`);\n  }\n  const arr = [];\n  if (/^#[\\da-f]{3}$/.test(value)) {\n    const [, r, g, b] = value.match(\n      /^#([\\da-f])([\\da-f])([\\da-f])$/\n    );\n    arr.push(\n      parseInt(`${r}${r}`, HEX),\n      parseInt(`${g}${g}`, HEX),\n      parseInt(`${b}${b}`, HEX),\n      1\n    );\n  } else if (/^#[\\da-f]{4}$/.test(value)) {\n    const [, r, g, b, alpha] = value.match(\n      /^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/\n    );\n    arr.push(\n      parseInt(`${r}${r}`, HEX),\n      parseInt(`${g}${g}`, HEX),\n      parseInt(`${b}${b}`, HEX),\n      parseHexAlpha(`${alpha}${alpha}`)\n    );\n  } else if (/^#[\\da-f]{8}$/.test(value)) {\n    const [, r, g, b, alpha] = value.match(\n      /^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/\n    );\n    arr.push(\n      parseInt(r, HEX),\n      parseInt(g, HEX),\n      parseInt(b, HEX),\n      parseHexAlpha(alpha)\n    );\n  } else {\n    const [, r, g, b] = value.match(\n      /^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/\n    );\n    arr.push(parseInt(r, HEX), parseInt(g, HEX), parseInt(b, HEX), 1);\n  }\n  return arr;\n};\nvar convertHexToLinearRgb = (value) => {\n  const [rr, gg, bb, alpha] = convertHexToRgb(value);\n  const [r, g, b] = transformRgbToLinearRgb([rr, gg, bb], true);\n  return [r, g, b, alpha];\n};\nvar convertHexToXyz = (value) => {\n  const [r, g, b, alpha] = convertHexToLinearRgb(value);\n  const [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b], true);\n  return [x, y, z, alpha];\n};\nvar parseRgb = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  const reg = new RegExp(`^rgba?\\\\(\\\\s*(${SYN_MOD}|${SYN_RGB_LV3})\\\\s*\\\\)$`);\n  if (!reg.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const [, val] = value.match(reg);\n  const [v1, v2, v3, v4 = \"\"] = val.replace(/[,/]/g, \" \").split(/\\s+/);\n  let r, g, b;\n  if (v1 === NONE) {\n    r = 0;\n  } else {\n    if (v1.endsWith(\"%\")) {\n      r = parseFloat(v1) * MAX_RGB / MAX_PCT;\n    } else {\n      r = parseFloat(v1);\n    }\n    r = Math.min(Math.max(roundToPrecision(r, OCT), 0), MAX_RGB);\n  }\n  if (v2 === NONE) {\n    g = 0;\n  } else {\n    if (v2.endsWith(\"%\")) {\n      g = parseFloat(v2) * MAX_RGB / MAX_PCT;\n    } else {\n      g = parseFloat(v2);\n    }\n    g = Math.min(Math.max(roundToPrecision(g, OCT), 0), MAX_RGB);\n  }\n  if (v3 === NONE) {\n    b = 0;\n  } else {\n    if (v3.endsWith(\"%\")) {\n      b = parseFloat(v3) * MAX_RGB / MAX_PCT;\n    } else {\n      b = parseFloat(v3);\n    }\n    b = Math.min(Math.max(roundToPrecision(b, OCT), 0), MAX_RGB);\n  }\n  const alpha = parseAlpha(v4);\n  return [\"rgb\", r, g, b, format === VAL_MIX && v4 === NONE ? NONE : alpha];\n};\nvar parseHsl = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  if (!REG_HSL.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const [, val] = value.match(REG_HSL);\n  const [v1, v2, v3, v4 = \"\"] = val.replace(/[,/]/g, \" \").split(/\\s+/);\n  let h, s, l;\n  if (v1 === NONE) {\n    h = 0;\n  } else {\n    h = angleToDeg(v1);\n  }\n  if (v2 === NONE) {\n    s = 0;\n  } else {\n    s = Math.min(Math.max(parseFloat(v2), 0), MAX_PCT);\n  }\n  if (v3 === NONE) {\n    l = 0;\n  } else {\n    l = Math.min(Math.max(parseFloat(v3), 0), MAX_PCT);\n  }\n  const alpha = parseAlpha(v4);\n  if (format === \"hsl\") {\n    return [\n      format,\n      v1 === NONE ? v1 : h,\n      v2 === NONE ? v2 : s,\n      v3 === NONE ? v3 : l,\n      v4 === NONE ? v4 : alpha\n    ];\n  }\n  h = h / DEG * DOZ;\n  l /= MAX_PCT;\n  const sa = s / MAX_PCT * Math.min(l, 1 - l);\n  const rk = h % DOZ;\n  const gk = (8 + h) % DOZ;\n  const bk = (4 + h) % DOZ;\n  const r = l - sa * Math.max(-1, Math.min(rk - TRIA, TRIA ** POW_SQR - rk, 1));\n  const g = l - sa * Math.max(-1, Math.min(gk - TRIA, TRIA ** POW_SQR - gk, 1));\n  const b = l - sa * Math.max(-1, Math.min(bk - TRIA, TRIA ** POW_SQR - bk, 1));\n  return [\n    \"rgb\",\n    Math.min(Math.max(roundToPrecision(r * MAX_RGB, OCT), 0), MAX_RGB),\n    Math.min(Math.max(roundToPrecision(g * MAX_RGB, OCT), 0), MAX_RGB),\n    Math.min(Math.max(roundToPrecision(b * MAX_RGB, OCT), 0), MAX_RGB),\n    alpha\n  ];\n};\nvar parseHwb = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  if (!REG_HWB.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const [, val] = value.match(REG_HWB);\n  const [v1, v2, v3, v4 = \"\"] = val.replace(\"/\", \" \").split(/\\s+/);\n  let h, wh, bk;\n  if (v1 === NONE) {\n    h = 0;\n  } else {\n    h = angleToDeg(v1);\n  }\n  if (v2 === NONE) {\n    wh = 0;\n  } else {\n    wh = Math.min(Math.max(parseFloat(v2), 0), MAX_PCT) / MAX_PCT;\n  }\n  if (v3 === NONE) {\n    bk = 0;\n  } else {\n    bk = Math.min(Math.max(parseFloat(v3), 0), MAX_PCT) / MAX_PCT;\n  }\n  const alpha = parseAlpha(v4);\n  if (format === \"hwb\") {\n    return [\n      format,\n      v1 === NONE ? v1 : h,\n      v2 === NONE ? v2 : wh * MAX_PCT,\n      v3 === NONE ? v3 : bk * MAX_PCT,\n      v4 === NONE ? v4 : alpha\n    ];\n  }\n  if (wh + bk >= 1) {\n    const v = roundToPrecision(wh / (wh + bk) * MAX_RGB, OCT);\n    return [\"rgb\", v, v, v, alpha];\n  }\n  const factor = (1 - wh - bk) / MAX_RGB;\n  let [, r, g, b] = parseHsl(`hsl(${h} 100 50)`);\n  r = roundToPrecision((r * factor + wh) * MAX_RGB, OCT);\n  g = roundToPrecision((g * factor + wh) * MAX_RGB, OCT);\n  b = roundToPrecision((b * factor + wh) * MAX_RGB, OCT);\n  return [\n    \"rgb\",\n    Math.min(Math.max(r, 0), MAX_RGB),\n    Math.min(Math.max(g, 0), MAX_RGB),\n    Math.min(Math.max(b, 0), MAX_RGB),\n    alpha\n  ];\n};\nvar parseLab = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  if (!REG_LAB.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const COEF_PCT = 1.25;\n  const COND_POW = 8;\n  const [, val] = value.match(REG_LAB);\n  const [v1, v2, v3, v4 = \"\"] = val.replace(\"/\", \" \").split(/\\s+/);\n  let l, a, b;\n  if (v1 === NONE) {\n    l = 0;\n  } else {\n    if (v1.endsWith(\"%\")) {\n      l = parseFloat(v1);\n      if (l > MAX_PCT) {\n        l = MAX_PCT;\n      }\n    } else {\n      l = parseFloat(v1);\n    }\n    if (l < 0) {\n      l = 0;\n    }\n  }\n  if (v2 === NONE) {\n    a = 0;\n  } else {\n    a = v2.endsWith(\"%\") ? parseFloat(v2) * COEF_PCT : parseFloat(v2);\n  }\n  if (v3 === NONE) {\n    b = 0;\n  } else {\n    b = v3.endsWith(\"%\") ? parseFloat(v3) * COEF_PCT : parseFloat(v3);\n  }\n  const alpha = parseAlpha(v4);\n  if (REG_SPEC.test(format)) {\n    return [\n      \"lab\",\n      v1 === NONE ? v1 : roundToPrecision(l, HEX),\n      v2 === NONE ? v2 : roundToPrecision(a, HEX),\n      v3 === NONE ? v3 : roundToPrecision(b, HEX),\n      v4 === NONE ? v4 : alpha\n    ];\n  }\n  const fl = (l + HEX) / LAB_L;\n  const fa = a / LAB_A + fl;\n  const fb = fl - b / LAB_B;\n  const powFl = Math.pow(fl, POW_CUBE);\n  const powFa = Math.pow(fa, POW_CUBE);\n  const powFb = Math.pow(fb, POW_CUBE);\n  const xyz = [\n    powFa > LAB_EPSILON ? powFa : (fa * LAB_L - HEX) / LAB_KAPPA,\n    l > COND_POW ? powFl : l / LAB_KAPPA,\n    powFb > LAB_EPSILON ? powFb : (fb * LAB_L - HEX) / LAB_KAPPA\n  ];\n  const [x, y, z] = xyz.map(\n    (val2, i) => val2 * D50[i]\n  );\n  return [\n    \"xyz-d50\",\n    roundToPrecision(x, HEX),\n    roundToPrecision(y, HEX),\n    roundToPrecision(z, HEX),\n    alpha\n  ];\n};\nvar parseLch = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  if (!REG_LCH.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const COEF_PCT = 1.5;\n  const [, val] = value.match(REG_LCH);\n  const [v1, v2, v3, v4 = \"\"] = val.replace(\"/\", \" \").split(/\\s+/);\n  let l, c, h;\n  if (v1 === NONE) {\n    l = 0;\n  } else {\n    l = parseFloat(v1);\n    if (l < 0) {\n      l = 0;\n    }\n  }\n  if (v2 === NONE) {\n    c = 0;\n  } else {\n    c = v2.endsWith(\"%\") ? parseFloat(v2) * COEF_PCT : parseFloat(v2);\n  }\n  if (v3 === NONE) {\n    h = 0;\n  } else {\n    h = angleToDeg(v3);\n  }\n  const alpha = parseAlpha(v4);\n  if (REG_SPEC.test(format)) {\n    return [\n      \"lch\",\n      v1 === NONE ? v1 : roundToPrecision(l, HEX),\n      v2 === NONE ? v2 : roundToPrecision(c, HEX),\n      v3 === NONE ? v3 : roundToPrecision(h, HEX),\n      v4 === NONE ? v4 : alpha\n    ];\n  }\n  const a = c * Math.cos(h * Math.PI / DEG_HALF);\n  const b = c * Math.sin(h * Math.PI / DEG_HALF);\n  const [, x, y, z] = parseLab(`lab(${l} ${a} ${b})`);\n  return [\n    \"xyz-d50\",\n    roundToPrecision(x, HEX),\n    roundToPrecision(y, HEX),\n    roundToPrecision(z, HEX),\n    alpha\n  ];\n};\nvar parseOklab = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  if (!REG_OKLAB.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const COEF_PCT = 0.4;\n  const [, val] = value.match(REG_OKLAB);\n  const [v1, v2, v3, v4 = \"\"] = val.replace(\"/\", \" \").split(/\\s+/);\n  let l, a, b;\n  if (v1 === NONE) {\n    l = 0;\n  } else {\n    l = v1.endsWith(\"%\") ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n    if (l < 0) {\n      l = 0;\n    }\n  }\n  if (v2 === NONE) {\n    a = 0;\n  } else if (v2.endsWith(\"%\")) {\n    a = parseFloat(v2) * COEF_PCT / MAX_PCT;\n  } else {\n    a = parseFloat(v2);\n  }\n  if (v3 === NONE) {\n    b = 0;\n  } else if (v3.endsWith(\"%\")) {\n    b = parseFloat(v3) * COEF_PCT / MAX_PCT;\n  } else {\n    b = parseFloat(v3);\n  }\n  const alpha = parseAlpha(v4);\n  if (REG_SPEC.test(format)) {\n    return [\n      \"oklab\",\n      v1 === NONE ? v1 : roundToPrecision(l, HEX),\n      v2 === NONE ? v2 : roundToPrecision(a, HEX),\n      v3 === NONE ? v3 : roundToPrecision(b, HEX),\n      v4 === NONE ? v4 : alpha\n    ];\n  }\n  const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n  const xyzLms = lms.map((c) => Math.pow(c, POW_CUBE));\n  const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n  return [\n    \"xyz-d65\",\n    roundToPrecision(x, HEX),\n    roundToPrecision(y, HEX),\n    roundToPrecision(z, HEX),\n    alpha\n  ];\n};\nvar parseOklch = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  if (!REG_OKLCH.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const COEF_PCT = 0.4;\n  const [, val] = value.match(REG_OKLCH);\n  const [v1, v2, v3, v4 = \"\"] = val.replace(\"/\", \" \").split(/\\s+/);\n  let l, c, h;\n  if (v1 === NONE) {\n    l = 0;\n  } else {\n    l = v1.endsWith(\"%\") ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n    if (l < 0) {\n      l = 0;\n    }\n  }\n  if (v2 === NONE) {\n    c = 0;\n  } else {\n    if (v2.endsWith(\"%\")) {\n      c = parseFloat(v2) * COEF_PCT / MAX_PCT;\n    } else {\n      c = parseFloat(v2);\n    }\n    if (c < 0) {\n      c = 0;\n    }\n  }\n  if (v3 === NONE) {\n    h = 0;\n  } else {\n    h = angleToDeg(v3);\n  }\n  const alpha = parseAlpha(v4);\n  if (REG_SPEC.test(format)) {\n    return [\n      \"oklch\",\n      v1 === NONE ? v1 : roundToPrecision(l, HEX),\n      v2 === NONE ? v2 : roundToPrecision(c, HEX),\n      v3 === NONE ? v3 : roundToPrecision(h, HEX),\n      v4 === NONE ? v4 : alpha\n    ];\n  }\n  const a = c * Math.cos(h * Math.PI / DEG_HALF);\n  const b = c * Math.sin(h * Math.PI / DEG_HALF);\n  const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n  const xyzLms = lms.map((cc) => Math.pow(cc, POW_CUBE));\n  const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n  return [\n    \"xyz-d65\",\n    roundToPrecision(x, HEX),\n    roundToPrecision(y, HEX),\n    roundToPrecision(z, HEX),\n    alpha\n  ];\n};\nvar parseColorFunc = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { colorSpace = \"\", d50 = false, format = \"\", nullable = false } = opt;\n  if (!REG_FN_COLOR.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  const [, val] = value.match(REG_FN_COLOR);\n  let [cs, v1, v2, v3, v4 = \"\"] = val.replace(\"/\", \" \").split(/\\s+/);\n  let r, g, b;\n  if (cs === \"xyz\") {\n    cs = \"xyz-d65\";\n  }\n  if (v1 === NONE) {\n    r = 0;\n  } else {\n    r = v1.endsWith(\"%\") ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n  }\n  if (v2 === NONE) {\n    g = 0;\n  } else {\n    g = v2.endsWith(\"%\") ? parseFloat(v2) / MAX_PCT : parseFloat(v2);\n  }\n  if (v3 === NONE) {\n    b = 0;\n  } else {\n    b = v3.endsWith(\"%\") ? parseFloat(v3) / MAX_PCT : parseFloat(v3);\n  }\n  const alpha = parseAlpha(v4);\n  if (REG_SPEC.test(format) || format === VAL_MIX && cs === colorSpace) {\n    return [\n      cs,\n      v1 === NONE ? v1 : roundToPrecision(r, DEC),\n      v2 === NONE ? v2 : roundToPrecision(g, DEC),\n      v3 === NONE ? v3 : roundToPrecision(b, DEC),\n      v4 === NONE ? v4 : alpha\n    ];\n  }\n  let x = 0;\n  let y = 0;\n  let z = 0;\n  if (cs === \"srgb-linear\") {\n    [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b]);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else if (cs === \"display-p3\") {\n    const linearRgb = transformRgbToLinearRgb([\n      r * MAX_RGB,\n      g * MAX_RGB,\n      b * MAX_RGB\n    ]);\n    [x, y, z] = transformMatrix(MATRIX_P3_TO_XYZ, linearRgb);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else if (cs === \"rec2020\") {\n    const ALPHA = 1.09929682680944;\n    const BETA = 0.018053968510807;\n    const REC_COEF = 0.45;\n    const rgb = [r, g, b].map((c) => {\n      let cl;\n      if (c < BETA * REC_COEF * DEC) {\n        cl = c / (REC_COEF * DEC);\n      } else {\n        cl = Math.pow((c + ALPHA - 1) / ALPHA, 1 / REC_COEF);\n      }\n      return cl;\n    });\n    [x, y, z] = transformMatrix(MATRIX_REC2020_TO_XYZ, rgb);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else if (cs === \"a98-rgb\") {\n    const POW_A98 = 563 / 256;\n    const rgb = [r, g, b].map((c) => {\n      const cl = Math.pow(c, POW_A98);\n      return cl;\n    });\n    [x, y, z] = transformMatrix(MATRIX_A98_TO_XYZ, rgb);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else if (cs === \"prophoto-rgb\") {\n    const POW_PROPHOTO = 1.8;\n    const rgb = [r, g, b].map((c) => {\n      let cl;\n      if (c > 1 / (HEX * DUO)) {\n        cl = Math.pow(c, POW_PROPHOTO);\n      } else {\n        cl = c / HEX;\n      }\n      return cl;\n    });\n    [x, y, z] = transformMatrix(MATRIX_PROPHOTO_TO_XYZ_D50, rgb);\n    if (!d50) {\n      [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n    }\n  } else if (/^xyz(?:-d(?:50|65))?$/.test(cs)) {\n    [x, y, z] = [r, g, b];\n    if (cs === \"xyz-d50\") {\n      if (!d50) {\n        [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n      }\n    } else if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else {\n    [x, y, z] = transformRgbToXyz([r * MAX_RGB, g * MAX_RGB, b * MAX_RGB]);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  }\n  return [\n    d50 ? \"xyz-d50\" : \"xyz-d65\",\n    roundToPrecision(x, HEX),\n    roundToPrecision(y, HEX),\n    roundToPrecision(z, HEX),\n    format === VAL_MIX && v4 === NONE ? v4 : alpha\n  ];\n};\nvar parseColorValue = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { d50 = false, format = \"\", nullable = false } = opt;\n  if (!REG_COLOR.test(value)) {\n    const res = resolveInvalidColorValue(format, nullable);\n    if (res instanceof NullObject) {\n      return res;\n    }\n    if (isString(res)) {\n      return res;\n    }\n    return res;\n  }\n  let x = 0;\n  let y = 0;\n  let z = 0;\n  let alpha = 0;\n  if (REG_CURRENT.test(value)) {\n    if (format === VAL_COMP) {\n      return [\"rgb\", 0, 0, 0, 0];\n    }\n    if (format === VAL_SPEC) {\n      return value;\n    }\n  } else if (/^[a-z]+$/.test(value)) {\n    if (Object.hasOwn(NAMED_COLORS, value)) {\n      if (format === VAL_SPEC) {\n        return value;\n      }\n      const [r, g, b] = NAMED_COLORS[value];\n      alpha = 1;\n      if (format === VAL_COMP) {\n        return [\"rgb\", r, g, b, alpha];\n      }\n      [x, y, z] = transformRgbToXyz([r, g, b], true);\n      if (d50) {\n        [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n      }\n    } else {\n      switch (format) {\n        case VAL_COMP: {\n          if (nullable && value !== \"transparent\") {\n            return new NullObject();\n          }\n          return [\"rgb\", 0, 0, 0, 0];\n        }\n        case VAL_SPEC: {\n          if (value === \"transparent\") {\n            return value;\n          }\n          return \"\";\n        }\n        case VAL_MIX: {\n          if (value === \"transparent\") {\n            return [\"rgb\", 0, 0, 0, 0];\n          }\n          return new NullObject();\n        }\n        default:\n      }\n    }\n  } else if (value[0] === \"#\") {\n    if (REG_SPEC.test(format)) {\n      const rgb = convertHexToRgb(value);\n      return [\"rgb\", ...rgb];\n    }\n    [x, y, z, alpha] = convertHexToXyz(value);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else if (value.startsWith(\"lab\")) {\n    if (REG_SPEC.test(format)) {\n      return parseLab(value, opt);\n    }\n    [, x, y, z, alpha] = parseLab(value);\n    if (!d50) {\n      [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n    }\n  } else if (value.startsWith(\"lch\")) {\n    if (REG_SPEC.test(format)) {\n      return parseLch(value, opt);\n    }\n    [, x, y, z, alpha] = parseLch(value);\n    if (!d50) {\n      [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n    }\n  } else if (value.startsWith(\"oklab\")) {\n    if (REG_SPEC.test(format)) {\n      return parseOklab(value, opt);\n    }\n    [, x, y, z, alpha] = parseOklab(value);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else if (value.startsWith(\"oklch\")) {\n    if (REG_SPEC.test(format)) {\n      return parseOklch(value, opt);\n    }\n    [, x, y, z, alpha] = parseOklch(value);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  } else {\n    let r, g, b;\n    if (value.startsWith(\"hsl\")) {\n      [, r, g, b, alpha] = parseHsl(value);\n    } else if (value.startsWith(\"hwb\")) {\n      [, r, g, b, alpha] = parseHwb(value);\n    } else {\n      [, r, g, b, alpha] = parseRgb(value, opt);\n    }\n    if (REG_SPEC.test(format)) {\n      return [\"rgb\", Math.round(r), Math.round(g), Math.round(b), alpha];\n    }\n    [x, y, z] = transformRgbToXyz([r, g, b]);\n    if (d50) {\n      [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n    }\n  }\n  return [\n    d50 ? \"xyz-d50\" : \"xyz-d65\",\n    roundToPrecision(x, HEX),\n    roundToPrecision(y, HEX),\n    roundToPrecision(z, HEX),\n    alpha\n  ];\n};\nvar resolveColorValue = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { colorSpace = \"\", format = \"\", nullable = false } = opt;\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE,\n      name: \"resolveColorValue\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    const cachedItem = cachedResult.item;\n    if (isString(cachedItem)) {\n      return cachedItem;\n    }\n    return cachedItem;\n  }\n  if (!REG_COLOR.test(value)) {\n    const res2 = resolveInvalidColorValue(format, nullable);\n    if (res2 instanceof NullObject) {\n      setCache(cacheKey, null);\n      return res2;\n    }\n    setCache(cacheKey, res2);\n    if (isString(res2)) {\n      return res2;\n    }\n    return res2;\n  }\n  let cs = \"\";\n  let r = 0;\n  let g = 0;\n  let b = 0;\n  let alpha = 0;\n  if (REG_CURRENT.test(value)) {\n    if (format === VAL_SPEC) {\n      setCache(cacheKey, value);\n      return value;\n    }\n  } else if (/^[a-z]+$/.test(value)) {\n    if (Object.hasOwn(NAMED_COLORS, value)) {\n      if (format === VAL_SPEC) {\n        setCache(cacheKey, value);\n        return value;\n      }\n      [r, g, b] = NAMED_COLORS[value];\n      alpha = 1;\n    } else {\n      switch (format) {\n        case VAL_SPEC: {\n          if (value === \"transparent\") {\n            setCache(cacheKey, value);\n            return value;\n          }\n          const res2 = \"\";\n          setCache(cacheKey, res2);\n          return res2;\n        }\n        case VAL_MIX: {\n          if (value === \"transparent\") {\n            const res2 = [\"rgb\", 0, 0, 0, 0];\n            setCache(cacheKey, res2);\n            return res2;\n          }\n          setCache(cacheKey, null);\n          return new NullObject();\n        }\n        case VAL_COMP:\n        default: {\n          if (nullable && value !== \"transparent\") {\n            setCache(cacheKey, null);\n            return new NullObject();\n          }\n          const res2 = [\"rgb\", 0, 0, 0, 0];\n          setCache(cacheKey, res2);\n          return res2;\n        }\n      }\n    }\n  } else if (value[0] === \"#\") {\n    [r, g, b, alpha] = convertHexToRgb(value);\n  } else if (value.startsWith(\"hsl\")) {\n    [, r, g, b, alpha] = parseHsl(value, opt);\n  } else if (value.startsWith(\"hwb\")) {\n    [, r, g, b, alpha] = parseHwb(value, opt);\n  } else if (/^l(?:ab|ch)/.test(value)) {\n    let x, y, z;\n    if (value.startsWith(\"lab\")) {\n      [cs, x, y, z, alpha] = parseLab(value, opt);\n    } else {\n      [cs, x, y, z, alpha] = parseLch(value, opt);\n    }\n    if (REG_SPEC.test(format)) {\n      const res2 = [cs, x, y, z, alpha];\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    [r, g, b] = transformXyzD50ToRgb([x, y, z]);\n  } else if (/^okl(?:ab|ch)/.test(value)) {\n    let x, y, z;\n    if (value.startsWith(\"oklab\")) {\n      [cs, x, y, z, alpha] = parseOklab(value, opt);\n    } else {\n      [cs, x, y, z, alpha] = parseOklch(value, opt);\n    }\n    if (REG_SPEC.test(format)) {\n      const res2 = [cs, x, y, z, alpha];\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    [r, g, b] = transformXyzToRgb([x, y, z]);\n  } else {\n    [, r, g, b, alpha] = parseRgb(value, opt);\n  }\n  if (format === VAL_MIX && colorSpace === \"srgb\") {\n    const res2 = [\n      \"srgb\",\n      r / MAX_RGB,\n      g / MAX_RGB,\n      b / MAX_RGB,\n      alpha\n    ];\n    setCache(cacheKey, res2);\n    return res2;\n  }\n  const res = [\n    \"rgb\",\n    Math.round(r),\n    Math.round(g),\n    Math.round(b),\n    alpha\n  ];\n  setCache(cacheKey, res);\n  return res;\n};\nvar resolveColorFunc = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { colorSpace = \"\", format = \"\", nullable = false } = opt;\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE,\n      name: \"resolveColorFunc\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    const cachedItem = cachedResult.item;\n    if (isString(cachedItem)) {\n      return cachedItem;\n    }\n    return cachedItem;\n  }\n  if (!REG_FN_COLOR.test(value)) {\n    const res2 = resolveInvalidColorValue(format, nullable);\n    if (res2 instanceof NullObject) {\n      setCache(cacheKey, null);\n      return res2;\n    }\n    setCache(cacheKey, res2);\n    if (isString(res2)) {\n      return res2;\n    }\n    return res2;\n  }\n  const [cs, v1, v2, v3, v4] = parseColorFunc(\n    value,\n    opt\n  );\n  if (REG_SPEC.test(format) || format === VAL_MIX && cs === colorSpace) {\n    const res2 = [cs, v1, v2, v3, v4];\n    setCache(cacheKey, res2);\n    return res2;\n  }\n  const x = parseFloat(`${v1}`);\n  const y = parseFloat(`${v2}`);\n  const z = parseFloat(`${v3}`);\n  const alpha = parseAlpha(`${v4}`);\n  const [r, g, b] = transformXyzToRgb([x, y, z], true);\n  const res = [\"rgb\", r, g, b, alpha];\n  setCache(cacheKey, res);\n  return res;\n};\nvar convertColorToLinearRgb = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { colorSpace = \"\", format = \"\" } = opt;\n  let cs = \"\";\n  let r, g, b, alpha, x, y, z;\n  if (format === VAL_MIX) {\n    let xyz;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [cs, x, y, z, alpha] = xyz;\n    if (cs === colorSpace) {\n      return [x, y, z, alpha];\n    }\n    [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n  } else if (value.startsWith(FN_COLOR)) {\n    const [, val] = value.match(REG_FN_COLOR);\n    const [cs2] = val.replace(\"/\", \" \").split(/\\s+/);\n    if (cs2 === \"srgb-linear\") {\n      [, r, g, b, alpha] = resolveColorFunc(value, {\n        format: VAL_COMP\n      });\n    } else {\n      [, x, y, z, alpha] = parseColorFunc(value);\n      [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n    }\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value);\n    [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n  }\n  return [\n    Math.min(Math.max(r, 0), 1),\n    Math.min(Math.max(g, 0), 1),\n    Math.min(Math.max(b, 0), 1),\n    alpha\n  ];\n};\nvar convertColorToRgb = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\" } = opt;\n  let r, g, b, alpha;\n  if (format === VAL_MIX) {\n    let rgb;\n    if (value.startsWith(FN_COLOR)) {\n      rgb = resolveColorFunc(value, opt);\n    } else {\n      rgb = resolveColorValue(value, opt);\n    }\n    if (rgb instanceof NullObject) {\n      return rgb;\n    }\n    [, r, g, b, alpha] = rgb;\n  } else if (value.startsWith(FN_COLOR)) {\n    const [, val] = value.match(REG_FN_COLOR);\n    const [cs] = val.replace(\"/\", \" \").split(/\\s+/);\n    if (cs === \"srgb\") {\n      [, r, g, b, alpha] = resolveColorFunc(value, {\n        format: VAL_COMP\n      });\n      r *= MAX_RGB;\n      g *= MAX_RGB;\n      b *= MAX_RGB;\n    } else {\n      [, r, g, b, alpha] = resolveColorFunc(value);\n    }\n  } else if (/^(?:ok)?l(?:ab|ch)/.test(value)) {\n    [r, g, b, alpha] = convertColorToLinearRgb(value);\n    [r, g, b] = transformLinearRgbToRgb([r, g, b]);\n  } else {\n    [, r, g, b, alpha] = resolveColorValue(value, {\n      format: VAL_COMP\n    });\n  }\n  return [r, g, b, alpha];\n};\nvar convertColorToXyz = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { d50 = false, format = \"\" } = opt;\n  let x, y, z, alpha;\n  if (format === VAL_MIX) {\n    let xyz;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [, x, y, z, alpha] = xyz;\n  } else if (value.startsWith(FN_COLOR)) {\n    const [, val] = value.match(REG_FN_COLOR);\n    const [cs] = val.replace(\"/\", \" \").split(/\\s+/);\n    if (d50) {\n      if (cs === \"xyz-d50\") {\n        [, x, y, z, alpha] = resolveColorFunc(value, {\n          format: VAL_COMP\n        });\n      } else {\n        [, x, y, z, alpha] = parseColorFunc(\n          value,\n          opt\n        );\n      }\n    } else if (/^xyz(?:-d65)?$/.test(cs)) {\n      [, x, y, z, alpha] = resolveColorFunc(value, {\n        format: VAL_COMP\n      });\n    } else {\n      [, x, y, z, alpha] = parseColorFunc(value);\n    }\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value, opt);\n  }\n  return [x, y, z, alpha];\n};\nvar convertColorToHsl = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\" } = opt;\n  let h, s, l, alpha;\n  if (REG_HSL.test(value)) {\n    [, h, s, l, alpha] = parseHsl(value, {\n      format: \"hsl\"\n    });\n    if (format === \"hsl\") {\n      return [Math.round(h), Math.round(s), Math.round(l), alpha];\n    }\n    return [h, s, l, alpha];\n  }\n  let x, y, z;\n  if (format === VAL_MIX) {\n    let xyz;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [, x, y, z, alpha] = xyz;\n  } else if (value.startsWith(FN_COLOR)) {\n    [, x, y, z, alpha] = parseColorFunc(value);\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value);\n  }\n  [h, s, l] = transformXyzToHsl([x, y, z], true);\n  if (format === \"hsl\") {\n    return [Math.round(h), Math.round(s), Math.round(l), alpha];\n  }\n  return [format === VAL_MIX && s === 0 ? NONE : h, s, l, alpha];\n};\nvar convertColorToHwb = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\" } = opt;\n  let h, w, b, alpha;\n  if (REG_HWB.test(value)) {\n    [, h, w, b, alpha] = parseHwb(value, {\n      format: \"hwb\"\n    });\n    if (format === \"hwb\") {\n      return [Math.round(h), Math.round(w), Math.round(b), alpha];\n    }\n    return [h, w, b, alpha];\n  }\n  let x, y, z;\n  if (format === VAL_MIX) {\n    let xyz;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [, x, y, z, alpha] = xyz;\n  } else if (value.startsWith(FN_COLOR)) {\n    [, x, y, z, alpha] = parseColorFunc(value);\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value);\n  }\n  [h, w, b] = transformXyzToHwb([x, y, z], true);\n  if (format === \"hwb\") {\n    return [Math.round(h), Math.round(w), Math.round(b), alpha];\n  }\n  return [format === VAL_MIX && w + b >= 100 ? NONE : h, w, b, alpha];\n};\nvar convertColorToLab = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\" } = opt;\n  let l, a, b, alpha;\n  if (REG_LAB.test(value)) {\n    [, l, a, b, alpha] = parseLab(value, {\n      format: VAL_COMP\n    });\n    return [l, a, b, alpha];\n  }\n  let x, y, z;\n  if (format === VAL_MIX) {\n    let xyz;\n    opt.d50 = true;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [, x, y, z, alpha] = xyz;\n  } else if (value.startsWith(FN_COLOR)) {\n    [, x, y, z, alpha] = parseColorFunc(value, {\n      d50: true\n    });\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value, {\n      d50: true\n    });\n  }\n  [l, a, b] = transformXyzD50ToLab([x, y, z], true);\n  return [l, a, b, alpha];\n};\nvar convertColorToLch = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\" } = opt;\n  let l, c, h, alpha;\n  if (REG_LCH.test(value)) {\n    [, l, c, h, alpha] = parseLch(value, {\n      format: VAL_COMP\n    });\n    return [l, c, h, alpha];\n  }\n  let x, y, z;\n  if (format === VAL_MIX) {\n    let xyz;\n    opt.d50 = true;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [, x, y, z, alpha] = xyz;\n  } else if (value.startsWith(FN_COLOR)) {\n    [, x, y, z, alpha] = parseColorFunc(value, {\n      d50: true\n    });\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value, {\n      d50: true\n    });\n  }\n  [l, c, h] = transformXyzD50ToLch([x, y, z], true);\n  return [l, c, format === VAL_MIX && c === 0 ? NONE : h, alpha];\n};\nvar convertColorToOklab = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\" } = opt;\n  let l, a, b, alpha;\n  if (REG_OKLAB.test(value)) {\n    [, l, a, b, alpha] = parseOklab(value, {\n      format: VAL_COMP\n    });\n    return [l, a, b, alpha];\n  }\n  let x, y, z;\n  if (format === VAL_MIX) {\n    let xyz;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [, x, y, z, alpha] = xyz;\n  } else if (value.startsWith(FN_COLOR)) {\n    [, x, y, z, alpha] = parseColorFunc(value);\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value);\n  }\n  [l, a, b] = transformXyzToOklab([x, y, z], true);\n  return [l, a, b, alpha];\n};\nvar convertColorToOklch = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\" } = opt;\n  let l, c, h, alpha;\n  if (REG_OKLCH.test(value)) {\n    [, l, c, h, alpha] = parseOklch(value, {\n      format: VAL_COMP\n    });\n    return [l, c, h, alpha];\n  }\n  let x, y, z;\n  if (format === VAL_MIX) {\n    let xyz;\n    if (value.startsWith(FN_COLOR)) {\n      xyz = parseColorFunc(value, opt);\n    } else {\n      xyz = parseColorValue(value, opt);\n    }\n    if (xyz instanceof NullObject) {\n      return xyz;\n    }\n    [, x, y, z, alpha] = xyz;\n  } else if (value.startsWith(FN_COLOR)) {\n    [, x, y, z, alpha] = parseColorFunc(value);\n  } else {\n    [, x, y, z, alpha] = parseColorValue(value);\n  }\n  [l, c, h] = transformXyzToOklch([x, y, z], true);\n  return [l, c, format === VAL_MIX && c === 0 ? NONE : h, alpha];\n};\nvar resolveColorMix = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { format = \"\", nullable = false } = opt;\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE,\n      name: \"resolveColorMix\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    const cachedItem = cachedResult.item;\n    if (isString(cachedItem)) {\n      return cachedItem;\n    }\n    return cachedItem;\n  }\n  const nestedItems = [];\n  let colorSpace = \"\";\n  let hueArc = \"\";\n  let colorA = \"\";\n  let pctA = \"\";\n  let colorB = \"\";\n  let pctB = \"\";\n  let parsed = false;\n  if (!REG_MIX.test(value)) {\n    if (value.startsWith(FN_MIX) && REG_MIX_NEST.test(value)) {\n      const regColorSpace = new RegExp(`^(?:${CS_RGB}|${CS_XYZ})$`);\n      const items = value.match(REG_MIX_NEST);\n      for (const item of items) {\n        if (item) {\n          let val = resolveColorMix(item, {\n            format: format === VAL_SPEC ? format : VAL_COMP\n          });\n          if (Array.isArray(val)) {\n            const [cs, v1, v2, v3, v4] = val;\n            if (v1 === 0 && v2 === 0 && v3 === 0 && v4 === 0) {\n              value = \"\";\n              break;\n            }\n            if (regColorSpace.test(cs)) {\n              if (v4 === 1) {\n                val = `color(${cs} ${v1} ${v2} ${v3})`;\n              } else {\n                val = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;\n              }\n            } else if (v4 === 1) {\n              val = `${cs}(${v1} ${v2} ${v3})`;\n            } else {\n              val = `${cs}(${v1} ${v2} ${v3} / ${v4})`;\n            }\n          } else if (!REG_MIX.test(val)) {\n            value = \"\";\n            break;\n          }\n          nestedItems.push(val);\n          value = value.replace(item, val);\n        }\n      }\n      if (!value) {\n        const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n        return res2;\n      }\n    } else if (value.startsWith(FN_MIX) && value.endsWith(\")\") && value.includes(FN_LIGHT_DARK)) {\n      const regColorSpace = new RegExp(`in\\\\s+(${CS_MIX})`);\n      const colorParts = value.replace(FN_MIX, \"\").replace(/\\)$/, \"\");\n      const [csPart = \"\", partA = \"\", partB = \"\"] = splitValue(colorParts, {\n        delimiter: \",\"\n      });\n      const [colorPartA = \"\", pctPartA = \"\"] = splitValue(partA);\n      const [colorPartB = \"\", pctPartB = \"\"] = splitValue(partB);\n      const specifiedColorA = resolveColor(colorPartA, {\n        format: VAL_SPEC\n      });\n      const specifiedColorB = resolveColor(colorPartB, {\n        format: VAL_SPEC\n      });\n      if (regColorSpace.test(csPart) && specifiedColorA && specifiedColorB) {\n        if (format === VAL_SPEC) {\n          const [, cs] = csPart.match(regColorSpace);\n          if (REG_CS_HUE.test(cs)) {\n            [, colorSpace, hueArc] = cs.match(REG_CS_HUE);\n          } else {\n            colorSpace = cs;\n          }\n          colorA = specifiedColorA;\n          if (pctPartA) {\n            pctA = pctPartA;\n          }\n          colorB = specifiedColorB;\n          if (pctPartB) {\n            pctB = pctPartB;\n          }\n          value = value.replace(colorPartA, specifiedColorA).replace(colorPartB, specifiedColorB);\n          parsed = true;\n        } else {\n          const resolvedColorA = resolveColor(colorPartA, opt);\n          const resolvedColorB = resolveColor(colorPartB, opt);\n          if (isString(resolvedColorA) && isString(resolvedColorB)) {\n            value = value.replace(colorPartA, resolvedColorA).replace(colorPartB, resolvedColorB);\n          }\n        }\n      } else {\n        const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n        return res2;\n      }\n    } else {\n      const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n      return res2;\n    }\n  }\n  if (nestedItems.length && format === VAL_SPEC) {\n    const regColorSpace = new RegExp(`^color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,`);\n    const [, cs] = value.match(regColorSpace);\n    if (REG_CS_HUE.test(cs)) {\n      [, colorSpace, hueArc] = cs.match(REG_CS_HUE);\n    } else {\n      colorSpace = cs;\n    }\n    if (nestedItems.length === 2) {\n      let [itemA, itemB] = nestedItems;\n      itemA = itemA.replace(/(?=[()])/g, \"\\\\\");\n      itemB = itemB.replace(/(?=[()])/g, \"\\\\\");\n      const regA = new RegExp(`(${itemA})(?:\\\\s+(${PCT}))?`);\n      const regB = new RegExp(`(${itemB})(?:\\\\s+(${PCT}))?`);\n      [, colorA, pctA] = value.match(regA);\n      [, colorB, pctB] = value.match(regB);\n    } else {\n      let [item] = nestedItems;\n      item = item.replace(/(?=[()])/g, \"\\\\\");\n      const itemPart = `${item}(?:\\\\s+${PCT})?`;\n      const itemPartCapt = `(${item})(?:\\\\s+(${PCT}))?`;\n      const regItemPart = new RegExp(`^${itemPartCapt}$`);\n      const regLastItem = new RegExp(`${itemPartCapt}\\\\s*\\\\)$`);\n      const regColorPart = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n      if (regLastItem.test(value)) {\n        const reg = new RegExp(\n          `(${SYN_MIX_PART})\\\\s*,\\\\s*(${itemPart})\\\\s*\\\\)$`\n        );\n        const [, colorPartA, colorPartB] = value.match(reg);\n        [, colorA, pctA] = colorPartA.match(regColorPart);\n        [, colorB, pctB] = colorPartB.match(regItemPart);\n      } else {\n        const reg = new RegExp(\n          `(${itemPart})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*\\\\)$`\n        );\n        const [, colorPartA, colorPartB] = value.match(reg);\n        [, colorA, pctA] = colorPartA.match(regItemPart);\n        [, colorB, pctB] = colorPartB.match(regColorPart);\n      }\n    }\n  } else if (!parsed) {\n    const [, cs, colorPartA, colorPartB] = value.match(\n      REG_MIX_CAPT\n    );\n    const reg = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n    [, colorA, pctA] = colorPartA.match(reg);\n    [, colorB, pctB] = colorPartB.match(reg);\n    if (REG_CS_HUE.test(cs)) {\n      [, colorSpace, hueArc] = cs.match(REG_CS_HUE);\n    } else {\n      colorSpace = cs;\n    }\n  }\n  let pA, pB, m;\n  if (pctA && pctB) {\n    const p1 = parseFloat(pctA) / MAX_PCT;\n    const p2 = parseFloat(pctB) / MAX_PCT;\n    if (p1 < 0 || p1 > 1 || p2 < 0 || p2 > 1 || p1 === 0 && p2 === 0) {\n      const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n      return res2;\n    }\n    const factor = p1 + p2;\n    pA = p1 / factor;\n    pB = p2 / factor;\n    m = factor < 1 ? factor : 1;\n  } else {\n    if (pctA) {\n      pA = parseFloat(pctA) / MAX_PCT;\n      if (pA < 0 || pA > 1) {\n        const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n        return res2;\n      }\n      pB = 1 - pA;\n    } else if (pctB) {\n      pB = parseFloat(pctB) / MAX_PCT;\n      if (pB < 0 || pB > 1) {\n        const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n        return res2;\n      }\n      pA = 1 - pB;\n    } else {\n      pA = HALF;\n      pB = HALF;\n    }\n    m = 1;\n  }\n  if (colorSpace === \"xyz\") {\n    colorSpace = \"xyz-d65\";\n  }\n  if (format === VAL_SPEC) {\n    let valueA = \"\";\n    let valueB = \"\";\n    if (colorA.startsWith(FN_MIX) || colorA.startsWith(FN_LIGHT_DARK)) {\n      valueA = colorA;\n    } else if (colorA.startsWith(FN_COLOR)) {\n      const [cs, v1, v2, v3, v4] = parseColorFunc(\n        colorA,\n        opt\n      );\n      if (v4 === 1) {\n        valueA = `color(${cs} ${v1} ${v2} ${v3})`;\n      } else {\n        valueA = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;\n      }\n    } else {\n      const val = parseColorValue(colorA, opt);\n      if (Array.isArray(val)) {\n        const [cs, v1, v2, v3, v4] = val;\n        if (v4 === 1) {\n          if (cs === \"rgb\") {\n            valueA = `${cs}(${v1}, ${v2}, ${v3})`;\n          } else {\n            valueA = `${cs}(${v1} ${v2} ${v3})`;\n          }\n        } else if (cs === \"rgb\") {\n          valueA = `${cs}a(${v1}, ${v2}, ${v3}, ${v4})`;\n        } else {\n          valueA = `${cs}(${v1} ${v2} ${v3} / ${v4})`;\n        }\n      } else {\n        if (!isString(val) || !val) {\n          setCache(cacheKey, \"\");\n          return \"\";\n        }\n        valueA = val;\n      }\n    }\n    if (colorB.startsWith(FN_MIX) || colorB.startsWith(FN_LIGHT_DARK)) {\n      valueB = colorB;\n    } else if (colorB.startsWith(FN_COLOR)) {\n      const [cs, v1, v2, v3, v4] = parseColorFunc(\n        colorB,\n        opt\n      );\n      if (v4 === 1) {\n        valueB = `color(${cs} ${v1} ${v2} ${v3})`;\n      } else {\n        valueB = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;\n      }\n    } else {\n      const val = parseColorValue(colorB, opt);\n      if (Array.isArray(val)) {\n        const [cs, v1, v2, v3, v4] = val;\n        if (v4 === 1) {\n          if (cs === \"rgb\") {\n            valueB = `${cs}(${v1}, ${v2}, ${v3})`;\n          } else {\n            valueB = `${cs}(${v1} ${v2} ${v3})`;\n          }\n        } else if (cs === \"rgb\") {\n          valueB = `${cs}a(${v1}, ${v2}, ${v3}, ${v4})`;\n        } else {\n          valueB = `${cs}(${v1} ${v2} ${v3} / ${v4})`;\n        }\n      } else {\n        if (!isString(val) || !val) {\n          setCache(cacheKey, \"\");\n          return \"\";\n        }\n        valueB = val;\n      }\n    }\n    if (pctA && pctB) {\n      valueA += ` ${parseFloat(pctA)}%`;\n      valueB += ` ${parseFloat(pctB)}%`;\n    } else if (pctA) {\n      const pA2 = parseFloat(pctA);\n      if (pA2 !== MAX_PCT * HALF) {\n        valueA += ` ${pA2}%`;\n      }\n    } else if (pctB) {\n      const pA2 = MAX_PCT - parseFloat(pctB);\n      if (pA2 !== MAX_PCT * HALF) {\n        valueA += ` ${pA2}%`;\n      }\n    }\n    if (hueArc) {\n      const res2 = `color-mix(in ${colorSpace} ${hueArc} hue, ${valueA}, ${valueB})`;\n      setCache(cacheKey, res2);\n      return res2;\n    } else {\n      const res2 = `color-mix(in ${colorSpace}, ${valueA}, ${valueB})`;\n      setCache(cacheKey, res2);\n      return res2;\n    }\n  }\n  let r = 0;\n  let g = 0;\n  let b = 0;\n  let alpha = 0;\n  if (/^srgb(?:-linear)?$/.test(colorSpace)) {\n    let rgbA, rgbB;\n    if (colorSpace === \"srgb\") {\n      if (REG_CURRENT.test(colorA)) {\n        rgbA = [NONE, NONE, NONE, NONE];\n      } else {\n        rgbA = convertColorToRgb(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        rgbB = [NONE, NONE, NONE, NONE];\n      } else {\n        rgbB = convertColorToRgb(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    } else {\n      if (REG_CURRENT.test(colorA)) {\n        rgbA = [NONE, NONE, NONE, NONE];\n      } else {\n        rgbA = convertColorToLinearRgb(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        rgbB = [NONE, NONE, NONE, NONE];\n      } else {\n        rgbB = convertColorToLinearRgb(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    }\n    if (rgbA instanceof NullObject || rgbB instanceof NullObject) {\n      const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n      return res2;\n    }\n    const [rrA, ggA, bbA, aaA] = rgbA;\n    const [rrB, ggB, bbB, aaB] = rgbB;\n    const rNone = rrA === NONE && rrB === NONE;\n    const gNone = ggA === NONE && ggB === NONE;\n    const bNone = bbA === NONE && bbB === NONE;\n    const alphaNone = aaA === NONE && aaB === NONE;\n    const [[rA, gA, bA, alphaA], [rB, gB, bB, alphaB]] = normalizeColorComponents(\n      [rrA, ggA, bbA, aaA],\n      [rrB, ggB, bbB, aaB],\n      true\n    );\n    const factorA = alphaA * pA;\n    const factorB = alphaB * pB;\n    alpha = factorA + factorB;\n    if (alpha === 0) {\n      r = rA * pA + rB * pB;\n      g = gA * pA + gB * pB;\n      b = bA * pA + bB * pB;\n    } else {\n      r = (rA * factorA + rB * factorB) / alpha;\n      g = (gA * factorA + gB * factorB) / alpha;\n      b = (bA * factorA + bB * factorB) / alpha;\n      alpha = parseFloat(alpha.toFixed(3));\n    }\n    if (format === VAL_COMP) {\n      const res2 = [\n        colorSpace,\n        rNone ? NONE : roundToPrecision(r, HEX),\n        gNone ? NONE : roundToPrecision(g, HEX),\n        bNone ? NONE : roundToPrecision(b, HEX),\n        alphaNone ? NONE : alpha * m\n      ];\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    r *= MAX_RGB;\n    g *= MAX_RGB;\n    b *= MAX_RGB;\n  } else if (REG_CS_XYZ.test(colorSpace)) {\n    let xyzA, xyzB;\n    if (REG_CURRENT.test(colorA)) {\n      xyzA = [NONE, NONE, NONE, NONE];\n    } else {\n      xyzA = convertColorToXyz(colorA, {\n        colorSpace,\n        d50: colorSpace === \"xyz-d50\",\n        format: VAL_MIX\n      });\n    }\n    if (REG_CURRENT.test(colorB)) {\n      xyzB = [NONE, NONE, NONE, NONE];\n    } else {\n      xyzB = convertColorToXyz(colorB, {\n        colorSpace,\n        d50: colorSpace === \"xyz-d50\",\n        format: VAL_MIX\n      });\n    }\n    if (xyzA instanceof NullObject || xyzB instanceof NullObject) {\n      const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n      return res2;\n    }\n    const [xxA, yyA, zzA, aaA] = xyzA;\n    const [xxB, yyB, zzB, aaB] = xyzB;\n    const xNone = xxA === NONE && xxB === NONE;\n    const yNone = yyA === NONE && yyB === NONE;\n    const zNone = zzA === NONE && zzB === NONE;\n    const alphaNone = aaA === NONE && aaB === NONE;\n    const [[xA, yA, zA, alphaA], [xB, yB, zB, alphaB]] = normalizeColorComponents(\n      [xxA, yyA, zzA, aaA],\n      [xxB, yyB, zzB, aaB],\n      true\n    );\n    const factorA = alphaA * pA;\n    const factorB = alphaB * pB;\n    alpha = factorA + factorB;\n    let x, y, z;\n    if (alpha === 0) {\n      x = xA * pA + xB * pB;\n      y = yA * pA + yB * pB;\n      z = zA * pA + zB * pB;\n    } else {\n      x = (xA * factorA + xB * factorB) / alpha;\n      y = (yA * factorA + yB * factorB) / alpha;\n      z = (zA * factorA + zB * factorB) / alpha;\n      alpha = parseFloat(alpha.toFixed(3));\n    }\n    if (format === VAL_COMP) {\n      const res2 = [\n        colorSpace,\n        xNone ? NONE : roundToPrecision(x, HEX),\n        yNone ? NONE : roundToPrecision(y, HEX),\n        zNone ? NONE : roundToPrecision(z, HEX),\n        alphaNone ? NONE : alpha * m\n      ];\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    if (colorSpace === \"xyz-d50\") {\n      [r, g, b] = transformXyzD50ToRgb([x, y, z], true);\n    } else {\n      [r, g, b] = transformXyzToRgb([x, y, z], true);\n    }\n  } else if (/^h(?:sl|wb)$/.test(colorSpace)) {\n    let hslA, hslB;\n    if (colorSpace === \"hsl\") {\n      if (REG_CURRENT.test(colorA)) {\n        hslA = [NONE, NONE, NONE, NONE];\n      } else {\n        hslA = convertColorToHsl(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        hslB = [NONE, NONE, NONE, NONE];\n      } else {\n        hslB = convertColorToHsl(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    } else {\n      if (REG_CURRENT.test(colorA)) {\n        hslA = [NONE, NONE, NONE, NONE];\n      } else {\n        hslA = convertColorToHwb(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        hslB = [NONE, NONE, NONE, NONE];\n      } else {\n        hslB = convertColorToHwb(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    }\n    if (hslA instanceof NullObject || hslB instanceof NullObject) {\n      const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n      return res2;\n    }\n    const [hhA, ssA, llA, aaA] = hslA;\n    const [hhB, ssB, llB, aaB] = hslB;\n    const alphaNone = aaA === NONE && aaB === NONE;\n    let [[hA, sA, lA, alphaA], [hB, sB, lB, alphaB]] = normalizeColorComponents(\n      [hhA, ssA, llA, aaA],\n      [hhB, ssB, llB, aaB],\n      true\n    );\n    if (hueArc) {\n      [hA, hB] = interpolateHue(hA, hB, hueArc);\n    }\n    const factorA = alphaA * pA;\n    const factorB = alphaB * pB;\n    alpha = factorA + factorB;\n    const h = (hA * pA + hB * pB) % DEG;\n    let s, l;\n    if (alpha === 0) {\n      s = sA * pA + sB * pB;\n      l = lA * pA + lB * pB;\n    } else {\n      s = (sA * factorA + sB * factorB) / alpha;\n      l = (lA * factorA + lB * factorB) / alpha;\n      alpha = parseFloat(alpha.toFixed(3));\n    }\n    [r, g, b] = convertColorToRgb(\n      `${colorSpace}(${h} ${s} ${l})`\n    );\n    if (format === VAL_COMP) {\n      const res2 = [\n        \"srgb\",\n        roundToPrecision(r / MAX_RGB, HEX),\n        roundToPrecision(g / MAX_RGB, HEX),\n        roundToPrecision(b / MAX_RGB, HEX),\n        alphaNone ? NONE : alpha * m\n      ];\n      setCache(cacheKey, res2);\n      return res2;\n    }\n  } else if (/^(?:ok)?lch$/.test(colorSpace)) {\n    let lchA, lchB;\n    if (colorSpace === \"lch\") {\n      if (REG_CURRENT.test(colorA)) {\n        lchA = [NONE, NONE, NONE, NONE];\n      } else {\n        lchA = convertColorToLch(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        lchB = [NONE, NONE, NONE, NONE];\n      } else {\n        lchB = convertColorToLch(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    } else {\n      if (REG_CURRENT.test(colorA)) {\n        lchA = [NONE, NONE, NONE, NONE];\n      } else {\n        lchA = convertColorToOklch(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        lchB = [NONE, NONE, NONE, NONE];\n      } else {\n        lchB = convertColorToOklch(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    }\n    if (lchA instanceof NullObject || lchB instanceof NullObject) {\n      const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n      return res2;\n    }\n    const [llA, ccA, hhA, aaA] = lchA;\n    const [llB, ccB, hhB, aaB] = lchB;\n    const lNone = llA === NONE && llB === NONE;\n    const cNone = ccA === NONE && ccB === NONE;\n    const hNone = hhA === NONE && hhB === NONE;\n    const alphaNone = aaA === NONE && aaB === NONE;\n    let [[lA, cA, hA, alphaA], [lB, cB, hB, alphaB]] = normalizeColorComponents(\n      [llA, ccA, hhA, aaA],\n      [llB, ccB, hhB, aaB],\n      true\n    );\n    if (hueArc) {\n      [hA, hB] = interpolateHue(hA, hB, hueArc);\n    }\n    const factorA = alphaA * pA;\n    const factorB = alphaB * pB;\n    alpha = factorA + factorB;\n    const h = (hA * pA + hB * pB) % DEG;\n    let l, c;\n    if (alpha === 0) {\n      l = lA * pA + lB * pB;\n      c = cA * pA + cB * pB;\n    } else {\n      l = (lA * factorA + lB * factorB) / alpha;\n      c = (cA * factorA + cB * factorB) / alpha;\n      alpha = parseFloat(alpha.toFixed(3));\n    }\n    if (format === VAL_COMP) {\n      const res2 = [\n        colorSpace,\n        lNone ? NONE : roundToPrecision(l, HEX),\n        cNone ? NONE : roundToPrecision(c, HEX),\n        hNone ? NONE : roundToPrecision(h, HEX),\n        alphaNone ? NONE : alpha * m\n      ];\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    [, r, g, b] = resolveColorValue(\n      `${colorSpace}(${l} ${c} ${h})`\n    );\n  } else {\n    let labA, labB;\n    if (colorSpace === \"lab\") {\n      if (REG_CURRENT.test(colorA)) {\n        labA = [NONE, NONE, NONE, NONE];\n      } else {\n        labA = convertColorToLab(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        labB = [NONE, NONE, NONE, NONE];\n      } else {\n        labB = convertColorToLab(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    } else {\n      if (REG_CURRENT.test(colorA)) {\n        labA = [NONE, NONE, NONE, NONE];\n      } else {\n        labA = convertColorToOklab(colorA, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n      if (REG_CURRENT.test(colorB)) {\n        labB = [NONE, NONE, NONE, NONE];\n      } else {\n        labB = convertColorToOklab(colorB, {\n          colorSpace,\n          format: VAL_MIX\n        });\n      }\n    }\n    if (labA instanceof NullObject || labB instanceof NullObject) {\n      const res2 = cacheInvalidColorValue(cacheKey, format, nullable);\n      return res2;\n    }\n    const [llA, aaA, bbA, alA] = labA;\n    const [llB, aaB, bbB, alB] = labB;\n    const lNone = llA === NONE && llB === NONE;\n    const aNone = aaA === NONE && aaB === NONE;\n    const bNone = bbA === NONE && bbB === NONE;\n    const alphaNone = alA === NONE && alB === NONE;\n    const [[lA, aA, bA, alphaA], [lB, aB, bB, alphaB]] = normalizeColorComponents(\n      [llA, aaA, bbA, alA],\n      [llB, aaB, bbB, alB],\n      true\n    );\n    const factorA = alphaA * pA;\n    const factorB = alphaB * pB;\n    alpha = factorA + factorB;\n    let l, aO, bO;\n    if (alpha === 0) {\n      l = lA * pA + lB * pB;\n      aO = aA * pA + aB * pB;\n      bO = bA * pA + bB * pB;\n    } else {\n      l = (lA * factorA + lB * factorB) / alpha;\n      aO = (aA * factorA + aB * factorB) / alpha;\n      bO = (bA * factorA + bB * factorB) / alpha;\n      alpha = parseFloat(alpha.toFixed(3));\n    }\n    if (format === VAL_COMP) {\n      const res2 = [\n        colorSpace,\n        lNone ? NONE : roundToPrecision(l, HEX),\n        aNone ? NONE : roundToPrecision(aO, HEX),\n        bNone ? NONE : roundToPrecision(bO, HEX),\n        alphaNone ? NONE : alpha * m\n      ];\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    [, r, g, b] = resolveColorValue(\n      `${colorSpace}(${l} ${aO} ${bO})`\n    );\n  }\n  const res = [\n    \"rgb\",\n    Math.round(r),\n    Math.round(g),\n    Math.round(b),\n    parseFloat((alpha * m).toFixed(3))\n  ];\n  setCache(cacheKey, res);\n  return res;\n};\n\n// src/js/css-var.ts\nvar import_css_tokenizer = require(\"@csstools/css-tokenizer\");\nvar {\n  CloseParen: PAREN_CLOSE,\n  Comment: COMMENT,\n  EOF,\n  Ident: IDENT,\n  Whitespace: W_SPACE\n} = import_css_tokenizer.TokenType;\nvar NAMESPACE2 = \"css-var\";\nvar REG_FN_CALC = new RegExp(SYN_FN_CALC);\nvar REG_FN_VAR = new RegExp(SYN_FN_VAR);\nfunction resolveCustomProperty(tokens, opt = {}) {\n  if (!Array.isArray(tokens)) {\n    throw new TypeError(`${tokens} is not an array.`);\n  }\n  const { customProperty = {} } = opt;\n  const items = [];\n  while (tokens.length) {\n    const token = tokens.shift();\n    if (!Array.isArray(token)) {\n      throw new TypeError(`${token} is not an array.`);\n    }\n    const [type, value] = token;\n    if (type === PAREN_CLOSE) {\n      break;\n    }\n    if (value === FN_VAR) {\n      const [restTokens, item] = resolveCustomProperty(tokens, opt);\n      tokens = restTokens;\n      if (item) {\n        items.push(item);\n      }\n    } else if (type === IDENT) {\n      if (value.startsWith(\"--\")) {\n        let item;\n        if (Object.hasOwn(customProperty, value)) {\n          item = customProperty[value];\n        } else if (typeof customProperty.callback === \"function\") {\n          item = customProperty.callback(value);\n        }\n        if (item) {\n          items.push(item);\n        }\n      } else if (value) {\n        items.push(value);\n      }\n    }\n  }\n  let resolveAsColor = false;\n  if (items.length > 1) {\n    const lastValue = items[items.length - 1];\n    resolveAsColor = isColor(lastValue);\n  }\n  let resolvedValue = \"\";\n  for (let item of items) {\n    item = item.trim();\n    if (REG_FN_VAR.test(item)) {\n      const resolvedItem = resolveVar(item, opt);\n      if (isString(resolvedItem)) {\n        if (resolveAsColor) {\n          if (isColor(resolvedItem)) {\n            resolvedValue = resolvedItem;\n          }\n        } else {\n          resolvedValue = resolvedItem;\n        }\n      }\n    } else if (REG_FN_CALC.test(item)) {\n      item = cssCalc(item, opt);\n      if (resolveAsColor) {\n        if (isColor(item)) {\n          resolvedValue = item;\n        }\n      } else {\n        resolvedValue = item;\n      }\n    } else if (item && !/^(?:inherit|initial|revert(?:-layer)?|unset)$/.test(item)) {\n      if (resolveAsColor) {\n        if (isColor(item)) {\n          resolvedValue = item;\n        }\n      } else {\n        resolvedValue = item;\n      }\n    }\n    if (resolvedValue) {\n      break;\n    }\n  }\n  return [tokens, resolvedValue];\n}\nfunction parseTokens(tokens, opt = {}) {\n  const res = [];\n  while (tokens.length) {\n    const token = tokens.shift();\n    const [type = \"\", value = \"\"] = token;\n    if (value === FN_VAR) {\n      const [restTokens, resolvedValue] = resolveCustomProperty(tokens, opt);\n      if (!resolvedValue) {\n        return new NullObject();\n      }\n      tokens = restTokens;\n      res.push(resolvedValue);\n    } else {\n      switch (type) {\n        case PAREN_CLOSE: {\n          if (res.length) {\n            const lastValue = res[res.length - 1];\n            if (lastValue === \" \") {\n              res.splice(-1, 1, value);\n            } else {\n              res.push(value);\n            }\n          } else {\n            res.push(value);\n          }\n          break;\n        }\n        case W_SPACE: {\n          if (res.length) {\n            const lastValue = res[res.length - 1];\n            if (isString(lastValue) && !lastValue.endsWith(\"(\") && lastValue !== \" \") {\n              res.push(value);\n            }\n          }\n          break;\n        }\n        default: {\n          if (type !== COMMENT && type !== EOF) {\n            res.push(value);\n          }\n        }\n      }\n    }\n  }\n  return res;\n}\nfunction resolveVar(value, opt = {}) {\n  const { format = \"\" } = opt;\n  if (isString(value)) {\n    if (!REG_FN_VAR.test(value) || format === VAL_SPEC) {\n      return value;\n    }\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE2,\n      name: \"resolveVar\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    return cachedResult.item;\n  }\n  const tokens = (0, import_css_tokenizer.tokenize)({ css: value });\n  const values = parseTokens(tokens, opt);\n  if (Array.isArray(values)) {\n    let color = values.join(\"\");\n    if (REG_FN_CALC.test(color)) {\n      color = cssCalc(color, opt);\n    }\n    setCache(cacheKey, color);\n    return color;\n  } else {\n    setCache(cacheKey, null);\n    return new NullObject();\n  }\n}\nvar cssVar = (value, opt = {}) => {\n  const resolvedValue = resolveVar(value, opt);\n  if (isString(resolvedValue)) {\n    return resolvedValue;\n  }\n  return \"\";\n};\n\n// src/js/relative-color.ts\nvar import_css_color_parser = require(\"@csstools/css-color-parser\");\nvar import_css_parser_algorithms = require(\"@csstools/css-parser-algorithms\");\nvar import_css_tokenizer2 = require(\"@csstools/css-tokenizer\");\nvar {\n  CloseParen: PAREN_CLOSE2,\n  Comment: COMMENT2,\n  Delim: DELIM,\n  Dimension: DIM,\n  EOF: EOF2,\n  Function: FUNC,\n  Ident: IDENT2,\n  Number: NUM2,\n  OpenParen: PAREN_OPEN,\n  Percentage: PCT2,\n  Whitespace: W_SPACE2\n} = import_css_tokenizer2.TokenType;\nvar { HasNoneKeywords: KEY_NONE } = import_css_color_parser.SyntaxFlag;\nvar NAMESPACE3 = \"relative-color\";\nvar OCT2 = 8;\nvar DEC2 = 10;\nvar HEX2 = 16;\nvar MAX_PCT2 = 100;\nvar MAX_RGB2 = 255;\nvar REG_COLOR_CAPT = new RegExp(\n  `^${FN_REL}(${SYN_COLOR_TYPE}|${SYN_MIX})\\\\s+`\n);\nvar REG_CS_HSL = /(?:hsla?|hwb)$/;\nvar REG_CS_CIE = new RegExp(`^(?:${CS_LAB}|${CS_LCH})$`);\nvar REG_FN_CALC_SUM = /^(?:abs|sig?n|cos|tan)\\(/;\nvar REG_FN_MATH_START = new RegExp(SYN_FN_MATH_START);\nvar REG_FN_REL = new RegExp(FN_REL);\nvar REG_FN_REL_CAPT = new RegExp(`^${FN_REL_CAPT}`);\nvar REG_FN_REL_START = new RegExp(`^${FN_REL}`);\nvar REG_FN_VAR2 = new RegExp(SYN_FN_VAR);\nfunction resolveColorChannels(tokens, opt = {}) {\n  if (!Array.isArray(tokens)) {\n    throw new TypeError(`${tokens} is not an array.`);\n  }\n  const { colorSpace = \"\", format = \"\" } = opt;\n  const colorChannels = /* @__PURE__ */ new Map([\n    [\"color\", [\"r\", \"g\", \"b\", \"alpha\"]],\n    [\"hsl\", [\"h\", \"s\", \"l\", \"alpha\"]],\n    [\"hsla\", [\"h\", \"s\", \"l\", \"alpha\"]],\n    [\"hwb\", [\"h\", \"w\", \"b\", \"alpha\"]],\n    [\"lab\", [\"l\", \"a\", \"b\", \"alpha\"]],\n    [\"lch\", [\"l\", \"c\", \"h\", \"alpha\"]],\n    [\"oklab\", [\"l\", \"a\", \"b\", \"alpha\"]],\n    [\"oklch\", [\"l\", \"c\", \"h\", \"alpha\"]],\n    [\"rgb\", [\"r\", \"g\", \"b\", \"alpha\"]],\n    [\"rgba\", [\"r\", \"g\", \"b\", \"alpha\"]]\n  ]);\n  const colorChannel = colorChannels.get(colorSpace);\n  if (!colorChannel) {\n    return new NullObject();\n  }\n  const mathFunc = /* @__PURE__ */ new Set();\n  const channels = [[], [], [], []];\n  let i = 0;\n  let nest = 0;\n  let func = \"\";\n  let precededPct = false;\n  while (tokens.length) {\n    const token = tokens.shift();\n    if (!Array.isArray(token)) {\n      throw new TypeError(`${token} is not an array.`);\n    }\n    const [type, value, , , detail] = token;\n    const channel = channels[i];\n    if (Array.isArray(channel)) {\n      switch (type) {\n        case DELIM: {\n          if (func) {\n            if ((value === \"+\" || value === \"-\") && precededPct && !REG_FN_CALC_SUM.test(func)) {\n              return new NullObject();\n            }\n            precededPct = false;\n            channel.push(value);\n          }\n          break;\n        }\n        case DIM: {\n          if (!func || !REG_FN_CALC_SUM.test(func)) {\n            return new NullObject();\n          }\n          const resolvedValue = resolveDimension(token, opt);\n          if (isString(resolvedValue)) {\n            channel.push(resolvedValue);\n          } else {\n            channel.push(value);\n          }\n          break;\n        }\n        case FUNC: {\n          channel.push(value);\n          func = value;\n          nest++;\n          if (REG_FN_MATH_START.test(value)) {\n            mathFunc.add(nest);\n          }\n          break;\n        }\n        case IDENT2: {\n          if (!colorChannel.includes(value)) {\n            return new NullObject();\n          }\n          channel.push(value);\n          if (!func) {\n            i++;\n          }\n          break;\n        }\n        case NUM2: {\n          channel.push(Number(detail?.value));\n          if (!func) {\n            i++;\n          }\n          break;\n        }\n        case PAREN_OPEN: {\n          channel.push(value);\n          nest++;\n          break;\n        }\n        case PAREN_CLOSE2: {\n          if (func) {\n            const lastValue = channel[channel.length - 1];\n            if (lastValue === \" \") {\n              channel.splice(-1, 1, value);\n            } else {\n              channel.push(value);\n            }\n            if (mathFunc.has(nest)) {\n              mathFunc.delete(nest);\n            }\n            nest--;\n            if (nest === 0) {\n              func = \"\";\n              i++;\n            }\n          }\n          break;\n        }\n        case PCT2: {\n          if (!func) {\n            return new NullObject();\n          } else if (!REG_FN_CALC_SUM.test(func)) {\n            const lastValue = channel.toReversed().find((v) => v !== \" \");\n            if (lastValue === \"+\" || lastValue === \"-\") {\n              return new NullObject();\n            } else if (lastValue === \"*\" || lastValue === \"/\") {\n              precededPct = false;\n            } else {\n              precededPct = true;\n            }\n          }\n          channel.push(Number(detail?.value) / MAX_PCT2);\n          if (!func) {\n            i++;\n          }\n          break;\n        }\n        case W_SPACE2: {\n          if (channel.length && func) {\n            const lastValue = channel[channel.length - 1];\n            if (typeof lastValue === \"number\") {\n              channel.push(value);\n            } else if (isString(lastValue) && !lastValue.endsWith(\"(\") && lastValue !== \" \") {\n              channel.push(value);\n            }\n          }\n          break;\n        }\n        default: {\n          if (type !== COMMENT2 && type !== EOF2 && func) {\n            channel.push(value);\n          }\n        }\n      }\n    }\n  }\n  const channelValues = [];\n  for (const channel of channels) {\n    if (channel.length === 1) {\n      const [resolvedValue] = channel;\n      if (isStringOrNumber(resolvedValue)) {\n        channelValues.push(resolvedValue);\n      }\n    } else if (channel.length) {\n      const resolvedValue = serializeCalc(channel.join(\"\"), {\n        format\n      });\n      channelValues.push(resolvedValue);\n    }\n  }\n  return channelValues;\n}\nfunction extractOriginColor(value, opt = {}) {\n  const { colorScheme = \"normal\", currentColor = \"\", format = \"\" } = opt;\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n    if (!value) {\n      return new NullObject();\n    }\n    if (!REG_FN_REL_START.test(value)) {\n      return value;\n    }\n  } else {\n    return new NullObject();\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE3,\n      name: \"extractOriginColor\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    return cachedResult.item;\n  }\n  if (/currentcolor/.test(value)) {\n    if (currentColor) {\n      value = value.replace(/currentcolor/g, currentColor);\n    } else {\n      setCache(cacheKey, null);\n      return new NullObject();\n    }\n  }\n  let colorSpace = \"\";\n  if (REG_FN_REL_CAPT.test(value)) {\n    [, colorSpace] = value.match(REG_FN_REL_CAPT);\n  }\n  opt.colorSpace = colorSpace;\n  if (value.includes(FN_LIGHT_DARK)) {\n    const colorParts = value.replace(new RegExp(`^${colorSpace}\\\\(`), \"\").replace(/\\)$/, \"\");\n    const [, originColor = \"\"] = splitValue(colorParts);\n    const specifiedOriginColor = resolveColor(originColor, {\n      colorScheme,\n      format: VAL_SPEC\n    });\n    if (specifiedOriginColor === \"\") {\n      setCache(cacheKey, null);\n      return new NullObject();\n    }\n    if (format === VAL_SPEC) {\n      value = value.replace(originColor, specifiedOriginColor);\n    } else {\n      const resolvedOriginColor = resolveColor(specifiedOriginColor, opt);\n      if (isString(resolvedOriginColor)) {\n        value = value.replace(originColor, resolvedOriginColor);\n      }\n    }\n  }\n  if (REG_COLOR_CAPT.test(value)) {\n    const [, originColor] = value.match(REG_COLOR_CAPT);\n    const [, restValue] = value.split(originColor);\n    if (/^[a-z]+$/.test(originColor)) {\n      if (!/^transparent$/.test(originColor) && !Object.hasOwn(NAMED_COLORS, originColor)) {\n        setCache(cacheKey, null);\n        return new NullObject();\n      }\n    } else if (format === VAL_SPEC) {\n      const resolvedOriginColor = resolveColor(originColor, opt);\n      if (isString(resolvedOriginColor)) {\n        value = value.replace(originColor, resolvedOriginColor);\n      }\n    }\n    if (format === VAL_SPEC) {\n      const tokens = (0, import_css_tokenizer2.tokenize)({ css: restValue });\n      const channelValues = resolveColorChannels(tokens, opt);\n      if (channelValues instanceof NullObject) {\n        setCache(cacheKey, null);\n        return channelValues;\n      }\n      const [v1, v2, v3, v4] = channelValues;\n      let channelValue = \"\";\n      if (isStringOrNumber(v4)) {\n        channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n      } else {\n        channelValue = ` ${channelValues.join(\" \")})`;\n      }\n      if (restValue !== channelValue) {\n        value = value.replace(restValue, channelValue);\n      }\n    }\n  } else {\n    const [, restValue] = value.split(REG_FN_REL_START);\n    const tokens = (0, import_css_tokenizer2.tokenize)({ css: restValue });\n    const originColor = [];\n    let nest = 0;\n    while (tokens.length) {\n      const [type, tokenValue] = tokens.shift();\n      switch (type) {\n        case FUNC:\n        case PAREN_OPEN: {\n          originColor.push(tokenValue);\n          nest++;\n          break;\n        }\n        case PAREN_CLOSE2: {\n          const lastValue = originColor[originColor.length - 1];\n          if (lastValue === \" \") {\n            originColor.splice(-1, 1, tokenValue);\n          } else if (isString(lastValue)) {\n            originColor.push(tokenValue);\n          }\n          nest--;\n          break;\n        }\n        case W_SPACE2: {\n          const lastValue = originColor[originColor.length - 1];\n          if (isString(lastValue) && !lastValue.endsWith(\"(\") && lastValue !== \" \") {\n            originColor.push(tokenValue);\n          }\n          break;\n        }\n        default: {\n          if (type !== COMMENT2 && type !== EOF2) {\n            originColor.push(tokenValue);\n          }\n        }\n      }\n      if (nest === 0) {\n        break;\n      }\n    }\n    const resolvedOriginColor = resolveRelativeColor(\n      originColor.join(\"\").trim(),\n      opt\n    );\n    if (resolvedOriginColor instanceof NullObject) {\n      setCache(cacheKey, null);\n      return resolvedOriginColor;\n    }\n    const channelValues = resolveColorChannels(tokens, opt);\n    if (channelValues instanceof NullObject) {\n      setCache(cacheKey, null);\n      return channelValues;\n    }\n    const [v1, v2, v3, v4] = channelValues;\n    let channelValue = \"\";\n    if (isStringOrNumber(v4)) {\n      channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n    } else {\n      channelValue = ` ${channelValues.join(\" \")})`;\n    }\n    value = value.replace(restValue, `${resolvedOriginColor}${channelValue}`);\n  }\n  setCache(cacheKey, value);\n  return value;\n}\nfunction resolveRelativeColor(value, opt = {}) {\n  const { format = \"\" } = opt;\n  if (isString(value)) {\n    if (REG_FN_VAR2.test(value)) {\n      if (format === VAL_SPEC) {\n        return value;\n      } else {\n        throw new SyntaxError(`Unexpected token ${FN_VAR} found.`);\n      }\n    } else if (!REG_FN_REL.test(value)) {\n      return value;\n    }\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE3,\n      name: \"resolveRelativeColor\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    return cachedResult.item;\n  }\n  const originColor = extractOriginColor(value, opt);\n  if (originColor instanceof NullObject) {\n    setCache(cacheKey, null);\n    return originColor;\n  }\n  value = originColor;\n  if (format === VAL_SPEC) {\n    if (value.startsWith(\"rgba(\")) {\n      value = value.replace(/^rgba\\(/, \"rgb(\");\n    } else if (value.startsWith(\"hsla(\")) {\n      value = value.replace(/^hsla\\(/, \"hsl(\");\n    }\n    return value;\n  }\n  const tokens = (0, import_css_tokenizer2.tokenize)({ css: value });\n  const components = (0, import_css_parser_algorithms.parseComponentValue)(tokens);\n  const parsedComponents = (0, import_css_color_parser.color)(components);\n  if (!parsedComponents) {\n    setCache(cacheKey, null);\n    return new NullObject();\n  }\n  const {\n    alpha: alphaComponent,\n    channels: channelsComponent,\n    colorNotation,\n    syntaxFlags\n  } = parsedComponents;\n  let alpha;\n  if (Number.isNaN(Number(alphaComponent))) {\n    if (syntaxFlags instanceof Set && syntaxFlags.has(KEY_NONE)) {\n      alpha = NONE;\n    } else {\n      alpha = 0;\n    }\n  } else {\n    alpha = roundToPrecision(Number(alphaComponent), OCT2);\n  }\n  let v1;\n  let v2;\n  let v3;\n  [v1, v2, v3] = channelsComponent;\n  let resolvedValue;\n  if (REG_CS_CIE.test(colorNotation)) {\n    const hasNone = syntaxFlags instanceof Set && syntaxFlags.has(KEY_NONE);\n    if (Number.isNaN(v1)) {\n      if (hasNone) {\n        v1 = NONE;\n      } else {\n        v1 = 0;\n      }\n    } else {\n      v1 = roundToPrecision(v1, HEX2);\n    }\n    if (Number.isNaN(v2)) {\n      if (hasNone) {\n        v2 = NONE;\n      } else {\n        v2 = 0;\n      }\n    } else {\n      v2 = roundToPrecision(v2, HEX2);\n    }\n    if (Number.isNaN(v3)) {\n      if (hasNone) {\n        v3 = NONE;\n      } else {\n        v3 = 0;\n      }\n    } else {\n      v3 = roundToPrecision(v3, HEX2);\n    }\n    if (alpha === 1) {\n      resolvedValue = `${colorNotation}(${v1} ${v2} ${v3})`;\n    } else {\n      resolvedValue = `${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`;\n    }\n  } else if (REG_CS_HSL.test(colorNotation)) {\n    if (Number.isNaN(v1)) {\n      v1 = 0;\n    }\n    if (Number.isNaN(v2)) {\n      v2 = 0;\n    }\n    if (Number.isNaN(v3)) {\n      v3 = 0;\n    }\n    let [r, g, b] = convertColorToRgb(\n      `${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`\n    );\n    r = roundToPrecision(r / MAX_RGB2, DEC2);\n    g = roundToPrecision(g / MAX_RGB2, DEC2);\n    b = roundToPrecision(b / MAX_RGB2, DEC2);\n    if (alpha === 1) {\n      resolvedValue = `color(srgb ${r} ${g} ${b})`;\n    } else {\n      resolvedValue = `color(srgb ${r} ${g} ${b} / ${alpha})`;\n    }\n  } else {\n    const cs = colorNotation === \"rgb\" ? \"srgb\" : colorNotation;\n    const hasNone = syntaxFlags instanceof Set && syntaxFlags.has(KEY_NONE);\n    if (Number.isNaN(v1)) {\n      if (hasNone) {\n        v1 = NONE;\n      } else {\n        v1 = 0;\n      }\n    } else {\n      v1 = roundToPrecision(v1, DEC2);\n    }\n    if (Number.isNaN(v2)) {\n      if (hasNone) {\n        v2 = NONE;\n      } else {\n        v2 = 0;\n      }\n    } else {\n      v2 = roundToPrecision(v2, DEC2);\n    }\n    if (Number.isNaN(v3)) {\n      if (hasNone) {\n        v3 = NONE;\n      } else {\n        v3 = 0;\n      }\n    } else {\n      v3 = roundToPrecision(v3, DEC2);\n    }\n    if (alpha === 1) {\n      resolvedValue = `color(${cs} ${v1} ${v2} ${v3})`;\n    } else {\n      resolvedValue = `color(${cs} ${v1} ${v2} ${v3} / ${alpha})`;\n    }\n  }\n  setCache(cacheKey, resolvedValue);\n  return resolvedValue;\n}\n\n// src/js/resolve.ts\nvar NAMESPACE4 = \"resolve\";\nvar RGB_TRANSPARENT = \"rgba(0, 0, 0, 0)\";\nvar REG_FN_CALC2 = new RegExp(SYN_FN_CALC);\nvar REG_FN_LIGHT_DARK = new RegExp(SYN_FN_LIGHT_DARK);\nvar REG_FN_REL2 = new RegExp(SYN_FN_REL);\nvar REG_FN_VAR3 = new RegExp(SYN_FN_VAR);\nvar resolveColor = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const {\n    colorScheme = \"normal\",\n    currentColor = \"\",\n    format = VAL_COMP,\n    nullable = false\n  } = opt;\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE4,\n      name: \"resolve\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    return cachedResult.item;\n  }\n  if (REG_FN_VAR3.test(value)) {\n    if (format === VAL_SPEC) {\n      setCache(cacheKey, value);\n      return value;\n    }\n    const resolvedValue = resolveVar(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      switch (format) {\n        case \"hex\":\n        case \"hexAlpha\": {\n          setCache(cacheKey, resolvedValue);\n          return resolvedValue;\n        }\n        default: {\n          if (nullable) {\n            setCache(cacheKey, resolvedValue);\n            return resolvedValue;\n          }\n          const res2 = RGB_TRANSPARENT;\n          setCache(cacheKey, res2);\n          return res2;\n        }\n      }\n    } else {\n      value = resolvedValue;\n    }\n  }\n  if (opt.format !== format) {\n    opt.format = format;\n  }\n  value = value.toLowerCase();\n  if (REG_FN_LIGHT_DARK.test(value) && value.endsWith(\")\")) {\n    const colorParts = value.replace(REG_FN_LIGHT_DARK, \"\").replace(/\\)$/, \"\");\n    const [light = \"\", dark = \"\"] = splitValue(colorParts, {\n      delimiter: \",\"\n    });\n    if (light && dark) {\n      if (format === VAL_SPEC) {\n        const lightColor = resolveColor(light, opt);\n        const darkColor = resolveColor(dark, opt);\n        let res3;\n        if (lightColor && darkColor) {\n          res3 = `light-dark(${lightColor}, ${darkColor})`;\n        } else {\n          res3 = \"\";\n        }\n        setCache(cacheKey, res3);\n        return res3;\n      }\n      let resolvedValue;\n      if (colorScheme === \"dark\") {\n        resolvedValue = resolveColor(dark, opt);\n      } else {\n        resolvedValue = resolveColor(light, opt);\n      }\n      let res2;\n      if (resolvedValue instanceof NullObject) {\n        if (nullable) {\n          res2 = resolvedValue;\n        } else {\n          res2 = RGB_TRANSPARENT;\n        }\n      } else {\n        res2 = resolvedValue;\n      }\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    switch (format) {\n      case VAL_SPEC: {\n        setCache(cacheKey, \"\");\n        return \"\";\n      }\n      case \"hex\":\n      case \"hexAlpha\": {\n        setCache(cacheKey, null);\n        return new NullObject();\n      }\n      case VAL_COMP:\n      default: {\n        const res2 = RGB_TRANSPARENT;\n        setCache(cacheKey, res2);\n        return res2;\n      }\n    }\n  }\n  if (REG_FN_REL2.test(value)) {\n    const resolvedValue = resolveRelativeColor(value, opt);\n    if (format === VAL_COMP) {\n      let res2;\n      if (resolvedValue instanceof NullObject) {\n        if (nullable) {\n          res2 = resolvedValue;\n        } else {\n          res2 = RGB_TRANSPARENT;\n        }\n      } else {\n        res2 = resolvedValue;\n      }\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    if (format === VAL_SPEC) {\n      let res2 = \"\";\n      if (resolvedValue instanceof NullObject) {\n        res2 = \"\";\n      } else {\n        res2 = resolvedValue;\n      }\n      setCache(cacheKey, res2);\n      return res2;\n    }\n    if (resolvedValue instanceof NullObject) {\n      value = \"\";\n    } else {\n      value = resolvedValue;\n    }\n  }\n  if (REG_FN_CALC2.test(value)) {\n    value = cssCalc(value, opt);\n  }\n  let cs = \"\";\n  let r = NaN;\n  let g = NaN;\n  let b = NaN;\n  let alpha = NaN;\n  if (value === \"transparent\") {\n    switch (format) {\n      case VAL_SPEC: {\n        setCache(cacheKey, value);\n        return value;\n      }\n      case \"hex\": {\n        setCache(cacheKey, null);\n        return new NullObject();\n      }\n      case \"hexAlpha\": {\n        const res2 = \"#00000000\";\n        setCache(cacheKey, res2);\n        return res2;\n      }\n      case VAL_COMP:\n      default: {\n        const res2 = RGB_TRANSPARENT;\n        setCache(cacheKey, res2);\n        return res2;\n      }\n    }\n  } else if (value === \"currentcolor\") {\n    if (format === VAL_SPEC) {\n      setCache(cacheKey, value);\n      return value;\n    }\n    if (currentColor) {\n      let resolvedValue;\n      if (currentColor.startsWith(FN_MIX)) {\n        resolvedValue = resolveColorMix(currentColor, opt);\n      } else if (currentColor.startsWith(FN_COLOR)) {\n        resolvedValue = resolveColorFunc(currentColor, opt);\n      } else {\n        resolvedValue = resolveColorValue(currentColor, opt);\n      }\n      if (resolvedValue instanceof NullObject) {\n        setCache(cacheKey, resolvedValue);\n        return resolvedValue;\n      }\n      [cs, r, g, b, alpha] = resolvedValue;\n    } else if (format === VAL_COMP) {\n      const res2 = RGB_TRANSPARENT;\n      setCache(cacheKey, res2);\n      return res2;\n    }\n  } else if (format === VAL_SPEC) {\n    if (value.startsWith(FN_MIX)) {\n      const res2 = resolveColorMix(value, opt);\n      setCache(cacheKey, res2);\n      return res2;\n    } else if (value.startsWith(FN_COLOR)) {\n      const [scs, rr, gg, bb, aa] = resolveColorFunc(\n        value,\n        opt\n      );\n      let res2 = \"\";\n      if (aa === 1) {\n        res2 = `color(${scs} ${rr} ${gg} ${bb})`;\n      } else {\n        res2 = `color(${scs} ${rr} ${gg} ${bb} / ${aa})`;\n      }\n      setCache(cacheKey, res2);\n      return res2;\n    } else {\n      const rgb = resolveColorValue(value, opt);\n      if (isString(rgb)) {\n        setCache(cacheKey, rgb);\n        return rgb;\n      }\n      const [scs, rr, gg, bb, aa] = rgb;\n      let res2 = \"\";\n      if (scs === \"rgb\") {\n        if (aa === 1) {\n          res2 = `${scs}(${rr}, ${gg}, ${bb})`;\n        } else {\n          res2 = `${scs}a(${rr}, ${gg}, ${bb}, ${aa})`;\n        }\n      } else if (aa === 1) {\n        res2 = `${scs}(${rr} ${gg} ${bb})`;\n      } else {\n        res2 = `${scs}(${rr} ${gg} ${bb} / ${aa})`;\n      }\n      setCache(cacheKey, res2);\n      return res2;\n    }\n  } else if (value.startsWith(FN_MIX)) {\n    if (/currentcolor/.test(value)) {\n      if (currentColor) {\n        value = value.replace(/currentcolor/g, currentColor);\n      }\n    }\n    if (/transparent/.test(value)) {\n      value = value.replace(/transparent/g, RGB_TRANSPARENT);\n    }\n    const resolvedValue = resolveColorMix(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      setCache(cacheKey, resolvedValue);\n      return resolvedValue;\n    }\n    [cs, r, g, b, alpha] = resolvedValue;\n  } else if (value.startsWith(FN_COLOR)) {\n    const resolvedValue = resolveColorFunc(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      setCache(cacheKey, resolvedValue);\n      return resolvedValue;\n    }\n    [cs, r, g, b, alpha] = resolvedValue;\n  } else if (value) {\n    const resolvedValue = resolveColorValue(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      setCache(cacheKey, resolvedValue);\n      return resolvedValue;\n    }\n    [cs, r, g, b, alpha] = resolvedValue;\n  }\n  let res = \"\";\n  switch (format) {\n    case \"hex\": {\n      if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b) || Number.isNaN(alpha) || alpha === 0) {\n        setCache(cacheKey, null);\n        return new NullObject();\n      }\n      res = convertRgbToHex([r, g, b, 1]);\n      break;\n    }\n    case \"hexAlpha\": {\n      if (Number.isNaN(r) || Number.isNaN(g) || Number.isNaN(b) || Number.isNaN(alpha)) {\n        setCache(cacheKey, null);\n        return new NullObject();\n      }\n      res = convertRgbToHex([r, g, b, alpha]);\n      break;\n    }\n    case VAL_COMP:\n    default: {\n      switch (cs) {\n        case \"rgb\": {\n          if (alpha === 1) {\n            res = `${cs}(${r}, ${g}, ${b})`;\n          } else {\n            res = `${cs}a(${r}, ${g}, ${b}, ${alpha})`;\n          }\n          break;\n        }\n        case \"lab\":\n        case \"lch\":\n        case \"oklab\":\n        case \"oklch\": {\n          if (alpha === 1) {\n            res = `${cs}(${r} ${g} ${b})`;\n          } else {\n            res = `${cs}(${r} ${g} ${b} / ${alpha})`;\n          }\n          break;\n        }\n        // color()\n        default: {\n          if (alpha === 1) {\n            res = `color(${cs} ${r} ${g} ${b})`;\n          } else {\n            res = `color(${cs} ${r} ${g} ${b} / ${alpha})`;\n          }\n        }\n      }\n    }\n  }\n  setCache(cacheKey, res);\n  return res;\n};\nvar resolve = (value, opt = {}) => {\n  opt.nullable = false;\n  const resolvedValue = resolveColor(value, opt);\n  if (resolvedValue instanceof NullObject) {\n    return null;\n  }\n  return resolvedValue;\n};\n\n// src/js/util.ts\nvar {\n  CloseParen: PAREN_CLOSE3,\n  Comma: COMMA,\n  Comment: COMMENT3,\n  Delim: DELIM2,\n  EOF: EOF3,\n  Function: FUNC2,\n  Ident: IDENT3,\n  OpenParen: PAREN_OPEN2,\n  Whitespace: W_SPACE3\n} = import_css_tokenizer3.TokenType;\nvar NAMESPACE5 = \"util\";\nvar DEC3 = 10;\nvar HEX3 = 16;\nvar DEG2 = 360;\nvar DEG_HALF2 = 180;\nvar REG_COLOR2 = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nvar REG_FN_COLOR2 = /^(?:(?:ok)?l(?:ab|ch)|color(?:-mix)?|hsla?|hwb|rgba?|var)\\(/;\nvar REG_MIX2 = new RegExp(SYN_MIX);\nvar splitValue = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { delimiter = \" \", preserveComment = false } = opt;\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE5,\n      name: \"splitValue\",\n      value\n    },\n    {\n      delimiter,\n      preserveComment\n    }\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  let regDelimiter;\n  if (delimiter === \",\") {\n    regDelimiter = /^,$/;\n  } else if (delimiter === \"/\") {\n    regDelimiter = /^\\/$/;\n  } else {\n    regDelimiter = /^\\s+$/;\n  }\n  const tokens = (0, import_css_tokenizer3.tokenize)({ css: value });\n  let nest = 0;\n  let str = \"\";\n  const res = [];\n  while (tokens.length) {\n    const [type, value2] = tokens.shift();\n    switch (type) {\n      case COMMA: {\n        if (regDelimiter.test(value2)) {\n          if (nest === 0) {\n            res.push(str.trim());\n            str = \"\";\n          } else {\n            str += value2;\n          }\n        } else {\n          str += value2;\n        }\n        break;\n      }\n      case DELIM2: {\n        if (regDelimiter.test(value2)) {\n          if (nest === 0) {\n            res.push(str.trim());\n            str = \"\";\n          } else {\n            str += value2;\n          }\n        } else {\n          str += value2;\n        }\n        break;\n      }\n      case COMMENT3: {\n        if (preserveComment && (delimiter === \",\" || delimiter === \"/\")) {\n          str += value2;\n        }\n        break;\n      }\n      case FUNC2:\n      case PAREN_OPEN2: {\n        str += value2;\n        nest++;\n        break;\n      }\n      case PAREN_CLOSE3: {\n        str += value2;\n        nest--;\n        break;\n      }\n      case W_SPACE3: {\n        if (regDelimiter.test(value2)) {\n          if (nest === 0) {\n            if (str) {\n              res.push(str.trim());\n              str = \"\";\n            }\n          } else {\n            str += \" \";\n          }\n        } else if (!str.endsWith(\" \")) {\n          str += \" \";\n        }\n        break;\n      }\n      default: {\n        if (type === EOF3) {\n          res.push(str.trim());\n          str = \"\";\n        } else {\n          str += value2;\n        }\n      }\n    }\n  }\n  setCache(cacheKey, res);\n  return res;\n};\nvar extractDashedIdent = (value) => {\n  if (isString(value)) {\n    value = value.trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey({\n    namespace: NAMESPACE5,\n    name: \"extractDashedIdent\",\n    value\n  });\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const tokens = (0, import_css_tokenizer3.tokenize)({ css: value });\n  const items = /* @__PURE__ */ new Set();\n  while (tokens.length) {\n    const [type, value2] = tokens.shift();\n    if (type === IDENT3 && value2.startsWith(\"--\")) {\n      items.add(value2);\n    }\n  }\n  const res = [...items];\n  setCache(cacheKey, res);\n  return res;\n};\nvar isColor = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n    if (value && isString(value)) {\n      if (/^[a-z]+$/.test(value)) {\n        if (/^(?:currentcolor|transparent)$/.test(value) || Object.hasOwn(NAMED_COLORS, value)) {\n          return true;\n        }\n      } else if (REG_COLOR2.test(value) || REG_MIX2.test(value)) {\n        return true;\n      } else if (REG_FN_COLOR2.test(value)) {\n        opt.nullable = true;\n        if (!opt.format) {\n          opt.format = VAL_SPEC;\n        }\n        const resolvedValue = resolveColor(value, opt);\n        if (resolvedValue) {\n          return true;\n        }\n      }\n    }\n  }\n  return false;\n};\nvar valueToJsonString = (value, func = false) => {\n  if (typeof value === \"undefined\") {\n    return \"\";\n  }\n  const res = JSON.stringify(value, (_key, val) => {\n    let replacedValue;\n    if (typeof val === \"undefined\") {\n      replacedValue = null;\n    } else if (typeof val === \"function\") {\n      if (func) {\n        replacedValue = val.toString().replace(/\\s/g, \"\").substring(0, HEX3);\n      } else {\n        replacedValue = val.name;\n      }\n    } else if (val instanceof Map || val instanceof Set) {\n      replacedValue = [...val];\n    } else if (typeof val === \"bigint\") {\n      replacedValue = val.toString();\n    } else {\n      replacedValue = val;\n    }\n    return replacedValue;\n  });\n  return res;\n};\nvar roundToPrecision = (value, bit = 0) => {\n  if (!Number.isFinite(value)) {\n    throw new TypeError(`${value} is not a finite number.`);\n  }\n  if (!Number.isFinite(bit)) {\n    throw new TypeError(`${bit} is not a finite number.`);\n  } else if (bit < 0 || bit > HEX3) {\n    throw new RangeError(`${bit} is not between 0 and ${HEX3}.`);\n  }\n  if (bit === 0) {\n    return Math.round(value);\n  }\n  let val;\n  if (bit === HEX3) {\n    val = value.toPrecision(6);\n  } else if (bit < DEC3) {\n    val = value.toPrecision(4);\n  } else {\n    val = value.toPrecision(5);\n  }\n  return parseFloat(val);\n};\nvar interpolateHue = (hueA, hueB, arc = \"shorter\") => {\n  if (!Number.isFinite(hueA)) {\n    throw new TypeError(`${hueA} is not a finite number.`);\n  }\n  if (!Number.isFinite(hueB)) {\n    throw new TypeError(`${hueB} is not a finite number.`);\n  }\n  switch (arc) {\n    case \"decreasing\": {\n      if (hueB > hueA) {\n        hueA += DEG2;\n      }\n      break;\n    }\n    case \"increasing\": {\n      if (hueB < hueA) {\n        hueB += DEG2;\n      }\n      break;\n    }\n    case \"longer\": {\n      if (hueB > hueA && hueB < hueA + DEG_HALF2) {\n        hueA += DEG2;\n      } else if (hueB > hueA + DEG_HALF2 * -1 && hueB <= hueA) {\n        hueB += DEG2;\n      }\n      break;\n    }\n    case \"shorter\":\n    default: {\n      if (hueB > hueA + DEG_HALF2) {\n        hueA += DEG2;\n      } else if (hueB < hueA + DEG_HALF2 * -1) {\n        hueB += DEG2;\n      }\n    }\n  }\n  return [hueA, hueB];\n};\nvar absoluteFontSize = /* @__PURE__ */ new Map([\n  [\"xx-small\", 3 / 5],\n  [\"x-small\", 3 / 4],\n  [\"small\", 8 / 9],\n  [\"medium\", 1],\n  [\"large\", 6 / 5],\n  [\"x-large\", 3 / 2],\n  [\"xx-large\", 2],\n  [\"xxx-large\", 3]\n]);\nvar relativeFontSize = /* @__PURE__ */ new Map([\n  [\"smaller\", 1 / 1.2],\n  [\"larger\", 1.2]\n]);\nvar absoluteLength = /* @__PURE__ */ new Map([\n  [\"cm\", 96 / 2.54],\n  [\"mm\", 96 / 2.54 / 10],\n  [\"q\", 96 / 2.54 / 40],\n  [\"in\", 96],\n  [\"pc\", 96 / 6],\n  [\"pt\", 96 / 72],\n  [\"px\", 1]\n]);\nvar relativeLength = /* @__PURE__ */ new Map([\n  [\"rcap\", 1],\n  [\"rch\", 0.5],\n  [\"rem\", 1],\n  [\"rex\", 0.5],\n  [\"ric\", 1],\n  [\"rlh\", 1.2]\n]);\nvar resolveLengthInPixels = (value, unit, opt = {}) => {\n  const { dimension = {} } = opt;\n  const { callback, em, rem, vh, vw } = dimension;\n  if (isString(value)) {\n    value = value.toLowerCase().trim();\n    if (absoluteFontSize.has(value)) {\n      return Number(absoluteFontSize.get(value)) * rem;\n    } else if (relativeFontSize.has(value)) {\n      return Number(relativeFontSize.get(value)) * em;\n    }\n    return Number.NaN;\n  } else if (Number.isFinite(value) && unit) {\n    if (Object.hasOwn(dimension, unit)) {\n      return value * Number(dimension[unit]);\n    } else if (typeof callback === \"function\") {\n      return value * callback(unit);\n    } else if (absoluteLength.has(unit)) {\n      return value * Number(absoluteLength.get(unit));\n    } else if (relativeLength.has(unit)) {\n      return value * Number(relativeLength.get(unit)) * rem;\n    } else if (relativeLength.has(`r${unit}`)) {\n      return value * Number(relativeLength.get(`r${unit}`)) * em;\n    } else {\n      switch (unit) {\n        case \"vb\":\n        case \"vi\": {\n          return value * vw;\n        }\n        case \"vmax\": {\n          if (vh > vw) {\n            return value * vh;\n          }\n          return value * vw;\n        }\n        case \"vmin\": {\n          if (vh < vw) {\n            return value * vh;\n          }\n          return value * vw;\n        }\n        default: {\n          return Number.NaN;\n        }\n      }\n    }\n  }\n  return Number.NaN;\n};\n\n// src/js/cache.ts\nvar MAX_CACHE = 4096;\nvar CacheItem = class {\n  /* private */\n  #isNull;\n  #item;\n  /**\n   * constructor\n   */\n  constructor(item, isNull = false) {\n    this.#item = item;\n    this.#isNull = !!isNull;\n  }\n  get item() {\n    return this.#item;\n  }\n  get isNull() {\n    return this.#isNull;\n  }\n};\nvar NullObject = class extends CacheItem {\n  /**\n   * constructor\n   */\n  constructor() {\n    super(/* @__PURE__ */ Symbol(\"null\"), true);\n  }\n};\nvar lruCache = new import_lru_cache.LRUCache({\n  max: MAX_CACHE\n});\nvar setCache = (key, value) => {\n  if (key) {\n    if (value === null) {\n      lruCache.set(key, new NullObject());\n    } else if (value instanceof CacheItem) {\n      lruCache.set(key, value);\n    } else {\n      lruCache.set(key, new CacheItem(value));\n    }\n  }\n};\nvar getCache = (key) => {\n  if (key && lruCache.has(key)) {\n    const item = lruCache.get(key);\n    if (item instanceof CacheItem) {\n      return item;\n    }\n    lruCache.delete(key);\n    return false;\n  }\n  return false;\n};\nvar createCacheKey = (keyData, opt = {}) => {\n  const { customProperty = {}, dimension = {} } = opt;\n  let cacheKey = \"\";\n  if (keyData && Object.keys(keyData).length && typeof customProperty.callback !== \"function\" && typeof dimension.callback !== \"function\") {\n    keyData.opt = valueToJsonString(opt);\n    cacheKey = valueToJsonString(keyData);\n  }\n  return cacheKey;\n};\n\n// src/js/css-calc.ts\nvar {\n  CloseParen: PAREN_CLOSE4,\n  Comment: COMMENT4,\n  Dimension: DIM2,\n  EOF: EOF4,\n  Function: FUNC3,\n  OpenParen: PAREN_OPEN3,\n  Whitespace: W_SPACE4\n} = import_css_tokenizer4.TokenType;\nvar NAMESPACE6 = \"css-calc\";\nvar TRIA2 = 3;\nvar HEX4 = 16;\nvar MAX_PCT3 = 100;\nvar REG_FN_CALC3 = new RegExp(SYN_FN_CALC);\nvar REG_FN_CALC_NUM = new RegExp(`^calc\\\\((${NUM})\\\\)$`);\nvar REG_FN_MATH_START2 = new RegExp(SYN_FN_MATH_START);\nvar REG_FN_VAR4 = new RegExp(SYN_FN_VAR);\nvar REG_FN_VAR_START = new RegExp(SYN_FN_VAR_START);\nvar REG_OPERATOR = /\\s[*+/-]\\s/;\nvar REG_TYPE_DIM = new RegExp(`^(${NUM})(${ANGLE}|${LENGTH})$`);\nvar REG_TYPE_DIM_PCT = new RegExp(`^(${NUM})(${ANGLE}|${LENGTH}|%)$`);\nvar REG_TYPE_PCT = new RegExp(`^(${NUM})%$`);\nvar Calculator = class {\n  /* private */\n  // number\n  #hasNum;\n  #numSum;\n  #numMul;\n  // percentage\n  #hasPct;\n  #pctSum;\n  #pctMul;\n  // dimension\n  #hasDim;\n  #dimSum;\n  #dimSub;\n  #dimMul;\n  #dimDiv;\n  // et cetra\n  #hasEtc;\n  #etcSum;\n  #etcSub;\n  #etcMul;\n  #etcDiv;\n  /**\n   * constructor\n   */\n  constructor() {\n    this.#hasNum = false;\n    this.#numSum = [];\n    this.#numMul = [];\n    this.#hasPct = false;\n    this.#pctSum = [];\n    this.#pctMul = [];\n    this.#hasDim = false;\n    this.#dimSum = [];\n    this.#dimSub = [];\n    this.#dimMul = [];\n    this.#dimDiv = [];\n    this.#hasEtc = false;\n    this.#etcSum = [];\n    this.#etcSub = [];\n    this.#etcMul = [];\n    this.#etcDiv = [];\n  }\n  get hasNum() {\n    return this.#hasNum;\n  }\n  set hasNum(value) {\n    this.#hasNum = !!value;\n  }\n  get numSum() {\n    return this.#numSum;\n  }\n  get numMul() {\n    return this.#numMul;\n  }\n  get hasPct() {\n    return this.#hasPct;\n  }\n  set hasPct(value) {\n    this.#hasPct = !!value;\n  }\n  get pctSum() {\n    return this.#pctSum;\n  }\n  get pctMul() {\n    return this.#pctMul;\n  }\n  get hasDim() {\n    return this.#hasDim;\n  }\n  set hasDim(value) {\n    this.#hasDim = !!value;\n  }\n  get dimSum() {\n    return this.#dimSum;\n  }\n  get dimSub() {\n    return this.#dimSub;\n  }\n  get dimMul() {\n    return this.#dimMul;\n  }\n  get dimDiv() {\n    return this.#dimDiv;\n  }\n  get hasEtc() {\n    return this.#hasEtc;\n  }\n  set hasEtc(value) {\n    this.#hasEtc = !!value;\n  }\n  get etcSum() {\n    return this.#etcSum;\n  }\n  get etcSub() {\n    return this.#etcSub;\n  }\n  get etcMul() {\n    return this.#etcMul;\n  }\n  get etcDiv() {\n    return this.#etcDiv;\n  }\n  /**\n   * clear values\n   * @returns void\n   */\n  clear() {\n    this.#hasNum = false;\n    this.#numSum = [];\n    this.#numMul = [];\n    this.#hasPct = false;\n    this.#pctSum = [];\n    this.#pctMul = [];\n    this.#hasDim = false;\n    this.#dimSum = [];\n    this.#dimSub = [];\n    this.#dimMul = [];\n    this.#dimDiv = [];\n    this.#hasEtc = false;\n    this.#etcSum = [];\n    this.#etcSub = [];\n    this.#etcMul = [];\n    this.#etcDiv = [];\n  }\n  /**\n   * sort values\n   * @param values - values\n   * @returns sorted values\n   */\n  sort(values = []) {\n    const arr = [...values];\n    if (arr.length > 1) {\n      arr.sort((a, b) => {\n        let res;\n        if (REG_TYPE_DIM_PCT.test(a) && REG_TYPE_DIM_PCT.test(b)) {\n          const [, valA, unitA] = a.match(REG_TYPE_DIM_PCT);\n          const [, valB, unitB] = b.match(REG_TYPE_DIM_PCT);\n          if (unitA === unitB) {\n            if (Number(valA) === Number(valB)) {\n              res = 0;\n            } else if (Number(valA) > Number(valB)) {\n              res = 1;\n            } else {\n              res = -1;\n            }\n          } else if (unitA > unitB) {\n            res = 1;\n          } else {\n            res = -1;\n          }\n        } else {\n          if (a === b) {\n            res = 0;\n          } else if (a > b) {\n            res = 1;\n          } else {\n            res = -1;\n          }\n        }\n        return res;\n      });\n    }\n    return arr;\n  }\n  /**\n   * multiply values\n   * @returns resolved value\n   */\n  multiply() {\n    const value = [];\n    let num;\n    if (this.#hasNum) {\n      num = 1;\n      for (const i of this.#numMul) {\n        num *= i;\n        if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n          break;\n        }\n      }\n      if (!this.#hasPct && !this.#hasDim && !this.hasEtc) {\n        if (Number.isFinite(num)) {\n          num = roundToPrecision(num, HEX4);\n        }\n        value.push(num);\n      }\n    }\n    if (this.#hasPct) {\n      if (typeof num !== \"number\") {\n        num = 1;\n      }\n      for (const i of this.#pctMul) {\n        num *= i;\n        if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n          break;\n        }\n      }\n      if (Number.isFinite(num)) {\n        num = `${roundToPrecision(num, HEX4)}%`;\n      }\n      if (!this.#hasDim && !this.hasEtc) {\n        value.push(num);\n      }\n    }\n    if (this.#hasDim) {\n      let dim = \"\";\n      let mul = \"\";\n      let div = \"\";\n      if (this.#dimMul.length) {\n        if (this.#dimMul.length === 1) {\n          [mul] = this.#dimMul;\n        } else {\n          mul = `${this.sort(this.#dimMul).join(\" * \")}`;\n        }\n      }\n      if (this.#dimDiv.length) {\n        if (this.#dimDiv.length === 1) {\n          [div] = this.#dimDiv;\n        } else {\n          div = `${this.sort(this.#dimDiv).join(\" * \")}`;\n        }\n      }\n      if (Number.isFinite(num)) {\n        if (mul) {\n          if (div) {\n            if (div.includes(\"*\")) {\n              dim = (0, import_css_calc4.calc)(`calc(${num} * ${mul} / (${div}))`, {\n                toCanonicalUnits: true\n              });\n            } else {\n              dim = (0, import_css_calc4.calc)(`calc(${num} * ${mul} / ${div})`, {\n                toCanonicalUnits: true\n              });\n            }\n          } else {\n            dim = (0, import_css_calc4.calc)(`calc(${num} * ${mul})`, {\n              toCanonicalUnits: true\n            });\n          }\n        } else if (div.includes(\"*\")) {\n          dim = (0, import_css_calc4.calc)(`calc(${num} / (${div}))`, {\n            toCanonicalUnits: true\n          });\n        } else {\n          dim = (0, import_css_calc4.calc)(`calc(${num} / ${div})`, {\n            toCanonicalUnits: true\n          });\n        }\n        value.push(dim.replace(/^calc/, \"\"));\n      } else {\n        if (!value.length && num !== void 0) {\n          value.push(num);\n        }\n        if (mul) {\n          if (div) {\n            if (div.includes(\"*\")) {\n              dim = (0, import_css_calc4.calc)(`calc(${mul} / (${div}))`, {\n                toCanonicalUnits: true\n              });\n            } else {\n              dim = (0, import_css_calc4.calc)(`calc(${mul} / ${div})`, {\n                toCanonicalUnits: true\n              });\n            }\n          } else {\n            dim = (0, import_css_calc4.calc)(`calc(${mul})`, {\n              toCanonicalUnits: true\n            });\n          }\n          if (value.length) {\n            value.push(\"*\", dim.replace(/^calc/, \"\"));\n          } else {\n            value.push(dim.replace(/^calc/, \"\"));\n          }\n        } else {\n          dim = (0, import_css_calc4.calc)(`calc(${div})`, {\n            toCanonicalUnits: true\n          });\n          if (value.length) {\n            value.push(\"/\", dim.replace(/^calc/, \"\"));\n          } else {\n            value.push(\"1\", \"/\", dim.replace(/^calc/, \"\"));\n          }\n        }\n      }\n    }\n    if (this.#hasEtc) {\n      if (this.#etcMul.length) {\n        if (!value.length && num !== void 0) {\n          value.push(num);\n        }\n        const mul = this.sort(this.#etcMul).join(\" * \");\n        if (value.length) {\n          value.push(`* ${mul}`);\n        } else {\n          value.push(`${mul}`);\n        }\n      }\n      if (this.#etcDiv.length) {\n        const div = this.sort(this.#etcDiv).join(\" * \");\n        if (div.includes(\"*\")) {\n          if (value.length) {\n            value.push(`/ (${div})`);\n          } else {\n            value.push(`1 / (${div})`);\n          }\n        } else if (value.length) {\n          value.push(`/ ${div}`);\n        } else {\n          value.push(`1 / ${div}`);\n        }\n      }\n    }\n    if (value.length) {\n      return value.join(\" \");\n    }\n    return \"\";\n  }\n  /**\n   * sum values\n   * @returns resolved value\n   */\n  sum() {\n    const value = [];\n    if (this.#hasNum) {\n      let num = 0;\n      for (const i of this.#numSum) {\n        num += i;\n        if (!Number.isFinite(num) || Number.isNaN(num)) {\n          break;\n        }\n      }\n      value.push(num);\n    }\n    if (this.#hasPct) {\n      let num = 0;\n      for (const i of this.#pctSum) {\n        num += i;\n        if (!Number.isFinite(num)) {\n          break;\n        }\n      }\n      if (Number.isFinite(num)) {\n        num = `${num}%`;\n      }\n      if (value.length) {\n        value.push(`+ ${num}`);\n      } else {\n        value.push(num);\n      }\n    }\n    if (this.#hasDim) {\n      let dim, sum, sub;\n      if (this.#dimSum.length) {\n        sum = this.sort(this.#dimSum).join(\" + \");\n      }\n      if (this.#dimSub.length) {\n        sub = this.sort(this.#dimSub).join(\" + \");\n      }\n      if (sum) {\n        if (sub) {\n          if (sub.includes(\"-\")) {\n            dim = (0, import_css_calc4.calc)(`calc(${sum} - (${sub}))`, {\n              toCanonicalUnits: true\n            });\n          } else {\n            dim = (0, import_css_calc4.calc)(`calc(${sum} - ${sub})`, {\n              toCanonicalUnits: true\n            });\n          }\n        } else {\n          dim = (0, import_css_calc4.calc)(`calc(${sum})`, {\n            toCanonicalUnits: true\n          });\n        }\n      } else {\n        dim = (0, import_css_calc4.calc)(`calc(-1 * (${sub}))`, {\n          toCanonicalUnits: true\n        });\n      }\n      if (value.length) {\n        value.push(\"+\", dim.replace(/^calc/, \"\"));\n      } else {\n        value.push(dim.replace(/^calc/, \"\"));\n      }\n    }\n    if (this.#hasEtc) {\n      if (this.#etcSum.length) {\n        const sum = this.sort(this.#etcSum).map((item) => {\n          let res;\n          if (REG_OPERATOR.test(item) && !item.startsWith(\"(\") && !item.endsWith(\")\")) {\n            res = `(${item})`;\n          } else {\n            res = item;\n          }\n          return res;\n        }).join(\" + \");\n        if (value.length) {\n          if (this.#etcSum.length > 1) {\n            value.push(`+ (${sum})`);\n          } else {\n            value.push(`+ ${sum}`);\n          }\n        } else {\n          value.push(`${sum}`);\n        }\n      }\n      if (this.#etcSub.length) {\n        const sub = this.sort(this.#etcSub).map((item) => {\n          let res;\n          if (REG_OPERATOR.test(item) && !item.startsWith(\"(\") && !item.endsWith(\")\")) {\n            res = `(${item})`;\n          } else {\n            res = item;\n          }\n          return res;\n        }).join(\" + \");\n        if (value.length) {\n          if (this.#etcSub.length > 1) {\n            value.push(`- (${sub})`);\n          } else {\n            value.push(`- ${sub}`);\n          }\n        } else if (this.#etcSub.length > 1) {\n          value.push(`-1 * (${sub})`);\n        } else {\n          value.push(`-1 * ${sub}`);\n        }\n      }\n    }\n    if (value.length) {\n      return value.join(\" \");\n    }\n    return \"\";\n  }\n};\nvar sortCalcValues = (values = [], finalize = false) => {\n  if (values.length < TRIA2) {\n    throw new Error(`Unexpected array length ${values.length}.`);\n  }\n  const start = values.shift();\n  if (!isString(start) || !start.endsWith(\"(\")) {\n    throw new Error(`Unexpected token ${start}.`);\n  }\n  const end = values.pop();\n  if (end !== \")\") {\n    throw new Error(`Unexpected token ${end}.`);\n  }\n  if (values.length === 1) {\n    const [value] = values;\n    if (!isStringOrNumber(value)) {\n      throw new Error(`Unexpected token ${value}.`);\n    }\n    return `${start}${value}${end}`;\n  }\n  const sortedValues = [];\n  const cal = new Calculator();\n  let operator = \"\";\n  const l = values.length;\n  for (let i = 0; i < l; i++) {\n    const value = values[i];\n    if (!isStringOrNumber(value)) {\n      throw new Error(`Unexpected token ${value}.`);\n    }\n    if (value === \"*\" || value === \"/\") {\n      operator = value;\n    } else if (value === \"+\" || value === \"-\") {\n      const sortedValue = cal.multiply();\n      if (sortedValue) {\n        sortedValues.push(sortedValue, value);\n      }\n      cal.clear();\n      operator = \"\";\n    } else {\n      const numValue = Number(value);\n      const strValue = `${value}`;\n      switch (operator) {\n        case \"/\": {\n          if (Number.isFinite(numValue)) {\n            cal.hasNum = true;\n            cal.numMul.push(1 / numValue);\n          } else if (REG_TYPE_PCT.test(strValue)) {\n            const [, val] = strValue.match(REG_TYPE_PCT);\n            cal.hasPct = true;\n            cal.pctMul.push(MAX_PCT3 * MAX_PCT3 / Number(val));\n          } else if (REG_TYPE_DIM.test(strValue)) {\n            cal.hasDim = true;\n            cal.dimDiv.push(strValue);\n          } else {\n            cal.hasEtc = true;\n            cal.etcDiv.push(strValue);\n          }\n          break;\n        }\n        case \"*\":\n        default: {\n          if (Number.isFinite(numValue)) {\n            cal.hasNum = true;\n            cal.numMul.push(numValue);\n          } else if (REG_TYPE_PCT.test(strValue)) {\n            const [, val] = strValue.match(REG_TYPE_PCT);\n            cal.hasPct = true;\n            cal.pctMul.push(Number(val));\n          } else if (REG_TYPE_DIM.test(strValue)) {\n            cal.hasDim = true;\n            cal.dimMul.push(strValue);\n          } else {\n            cal.hasEtc = true;\n            cal.etcMul.push(strValue);\n          }\n        }\n      }\n    }\n    if (i === l - 1) {\n      const sortedValue = cal.multiply();\n      if (sortedValue) {\n        sortedValues.push(sortedValue);\n      }\n      cal.clear();\n      operator = \"\";\n    }\n  }\n  let resolvedValue = \"\";\n  if (finalize && (sortedValues.includes(\"+\") || sortedValues.includes(\"-\"))) {\n    const finalizedValues = [];\n    cal.clear();\n    operator = \"\";\n    const l2 = sortedValues.length;\n    for (let i = 0; i < l2; i++) {\n      const value = sortedValues[i];\n      if (isStringOrNumber(value)) {\n        if (value === \"+\" || value === \"-\") {\n          operator = value;\n        } else {\n          const numValue = Number(value);\n          const strValue = `${value}`;\n          switch (operator) {\n            case \"-\": {\n              if (Number.isFinite(numValue)) {\n                cal.hasNum = true;\n                cal.numSum.push(-1 * numValue);\n              } else if (REG_TYPE_PCT.test(strValue)) {\n                const [, val] = strValue.match(REG_TYPE_PCT);\n                cal.hasPct = true;\n                cal.pctSum.push(-1 * Number(val));\n              } else if (REG_TYPE_DIM.test(strValue)) {\n                cal.hasDim = true;\n                cal.dimSub.push(strValue);\n              } else {\n                cal.hasEtc = true;\n                cal.etcSub.push(strValue);\n              }\n              break;\n            }\n            case \"+\":\n            default: {\n              if (Number.isFinite(numValue)) {\n                cal.hasNum = true;\n                cal.numSum.push(numValue);\n              } else if (REG_TYPE_PCT.test(strValue)) {\n                const [, val] = strValue.match(REG_TYPE_PCT);\n                cal.hasPct = true;\n                cal.pctSum.push(Number(val));\n              } else if (REG_TYPE_DIM.test(strValue)) {\n                cal.hasDim = true;\n                cal.dimSum.push(strValue);\n              } else {\n                cal.hasEtc = true;\n                cal.etcSum.push(strValue);\n              }\n            }\n          }\n        }\n      }\n      if (i === l2 - 1) {\n        const sortedValue = cal.sum();\n        if (sortedValue) {\n          finalizedValues.push(sortedValue);\n        }\n        cal.clear();\n        operator = \"\";\n      }\n    }\n    resolvedValue = finalizedValues.join(\" \").replace(/\\+\\s-/g, \"- \");\n  } else {\n    resolvedValue = sortedValues.join(\" \").replace(/\\+\\s-/g, \"- \");\n  }\n  if (resolvedValue.startsWith(\"(\") && resolvedValue.endsWith(\")\") && resolvedValue.lastIndexOf(\"(\") === 0 && resolvedValue.indexOf(\")\") === resolvedValue.length - 1) {\n    resolvedValue = resolvedValue.replace(/^\\(/, \"\").replace(/\\)$/, \"\");\n  }\n  return `${start}${resolvedValue}${end}`;\n};\nvar serializeCalc = (value, opt = {}) => {\n  const { format = \"\" } = opt;\n  if (isString(value)) {\n    if (!REG_FN_VAR_START.test(value) || format !== VAL_SPEC) {\n      return value;\n    }\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE6,\n      name: \"serializeCalc\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const items = (0, import_css_tokenizer4.tokenize)({ css: value }).map((token) => {\n    const [type, value2] = token;\n    let res = \"\";\n    if (type !== W_SPACE4 && type !== COMMENT4) {\n      res = value2;\n    }\n    return res;\n  }).filter((v) => v);\n  let startIndex = items.findLastIndex((item) => /\\($/.test(item));\n  while (startIndex) {\n    const endIndex = items.findIndex((item, index) => {\n      return item === \")\" && index > startIndex;\n    });\n    const slicedValues = items.slice(startIndex, endIndex + 1);\n    let serializedValue = sortCalcValues(slicedValues);\n    if (REG_FN_VAR_START.test(serializedValue)) {\n      serializedValue = (0, import_css_calc4.calc)(serializedValue, {\n        toCanonicalUnits: true\n      });\n    }\n    items.splice(startIndex, endIndex - startIndex + 1, serializedValue);\n    startIndex = items.findLastIndex((item) => /\\($/.test(item));\n  }\n  const serializedCalc = sortCalcValues(items, true);\n  setCache(cacheKey, serializedCalc);\n  return serializedCalc;\n};\nvar resolveDimension = (token, opt = {}) => {\n  if (!Array.isArray(token)) {\n    throw new TypeError(`${token} is not an array.`);\n  }\n  const [, , , , detail = {}] = token;\n  const { unit, value } = detail;\n  if (unit === \"px\") {\n    return `${value}${unit}`;\n  }\n  const pixelValue = resolveLengthInPixels(Number(value), unit, opt);\n  if (Number.isFinite(pixelValue)) {\n    return `${roundToPrecision(pixelValue, HEX4)}px`;\n  }\n  return new NullObject();\n};\nvar parseTokens2 = (tokens, opt = {}) => {\n  if (!Array.isArray(tokens)) {\n    throw new TypeError(`${tokens} is not an array.`);\n  }\n  const { format = \"\" } = opt;\n  const mathFunc = /* @__PURE__ */ new Set();\n  let nest = 0;\n  const res = [];\n  while (tokens.length) {\n    const token = tokens.shift();\n    if (!Array.isArray(token)) {\n      throw new TypeError(`${token} is not an array.`);\n    }\n    const [type = \"\", value = \"\"] = token;\n    switch (type) {\n      case DIM2: {\n        if (format === VAL_SPEC && !mathFunc.has(nest)) {\n          res.push(value);\n        } else {\n          const resolvedValue = resolveDimension(token, opt);\n          if (isString(resolvedValue)) {\n            res.push(resolvedValue);\n          } else {\n            res.push(value);\n          }\n        }\n        break;\n      }\n      case FUNC3:\n      case PAREN_OPEN3: {\n        res.push(value);\n        nest++;\n        if (REG_FN_MATH_START2.test(value)) {\n          mathFunc.add(nest);\n        }\n        break;\n      }\n      case PAREN_CLOSE4: {\n        if (res.length) {\n          const lastValue = res[res.length - 1];\n          if (lastValue === \" \") {\n            res.splice(-1, 1, value);\n          } else {\n            res.push(value);\n          }\n        } else {\n          res.push(value);\n        }\n        if (mathFunc.has(nest)) {\n          mathFunc.delete(nest);\n        }\n        nest--;\n        break;\n      }\n      case W_SPACE4: {\n        if (res.length) {\n          const lastValue = res[res.length - 1];\n          if (isString(lastValue) && !lastValue.endsWith(\"(\") && lastValue !== \" \") {\n            res.push(value);\n          }\n        }\n        break;\n      }\n      default: {\n        if (type !== COMMENT4 && type !== EOF4) {\n          res.push(value);\n        }\n      }\n    }\n  }\n  return res;\n};\nvar cssCalc = (value, opt = {}) => {\n  const { format = \"\" } = opt;\n  if (isString(value)) {\n    if (REG_FN_VAR4.test(value)) {\n      if (format === VAL_SPEC) {\n        return value;\n      } else {\n        const resolvedValue2 = resolveVar(value, opt);\n        if (isString(resolvedValue2)) {\n          return resolvedValue2;\n        } else {\n          return \"\";\n        }\n      }\n    } else if (!REG_FN_CALC3.test(value)) {\n      return value;\n    }\n    value = value.toLowerCase().trim();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE6,\n      name: \"cssCalc\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const tokens = (0, import_css_tokenizer4.tokenize)({ css: value });\n  const values = parseTokens2(tokens, opt);\n  let resolvedValue = (0, import_css_calc4.calc)(values.join(\"\"), {\n    toCanonicalUnits: true\n  });\n  if (REG_FN_VAR_START.test(value)) {\n    if (REG_TYPE_DIM_PCT.test(resolvedValue)) {\n      const [, val, unit] = resolvedValue.match(\n        REG_TYPE_DIM_PCT\n      );\n      resolvedValue = `${roundToPrecision(Number(val), HEX4)}${unit}`;\n    }\n    if (resolvedValue && !REG_FN_VAR_START.test(resolvedValue) && format === VAL_SPEC) {\n      resolvedValue = `calc(${resolvedValue})`;\n    }\n  }\n  if (format === VAL_SPEC) {\n    if (/\\s[-+*/]\\s/.test(resolvedValue) && !resolvedValue.includes(\"NaN\")) {\n      resolvedValue = serializeCalc(resolvedValue, opt);\n    } else if (REG_FN_CALC_NUM.test(resolvedValue)) {\n      const [, val] = resolvedValue.match(REG_FN_CALC_NUM);\n      resolvedValue = `calc(${roundToPrecision(Number(val), HEX4)})`;\n    }\n  }\n  setCache(cacheKey, resolvedValue);\n  return resolvedValue;\n};\n\n// src/js/css-gradient.ts\nvar NAMESPACE7 = \"css-gradient\";\nvar DIM_ANGLE = `${NUM}(?:${ANGLE})`;\nvar DIM_ANGLE_PCT = `${DIM_ANGLE}|${PCT}`;\nvar DIM_LEN = `${NUM}(?:${LENGTH})|0`;\nvar DIM_LEN_PCT = `${DIM_LEN}|${PCT}`;\nvar DIM_LEN_PCT_POSI = `${NUM_POSITIVE}(?:${LENGTH}|%)|0`;\nvar DIM_LEN_POSI = `${NUM_POSITIVE}(?:${LENGTH})|0`;\nvar CTR = \"center\";\nvar L_R = \"left|right\";\nvar T_B = \"top|bottom\";\nvar S_E = \"start|end\";\nvar AXIS_X = `${L_R}|x-(?:${S_E})`;\nvar AXIS_Y = `${T_B}|y-(?:${S_E})`;\nvar BLOCK = `block-(?:${S_E})`;\nvar INLINE = `inline-(?:${S_E})`;\nvar POS_1 = `${CTR}|${AXIS_X}|${AXIS_Y}|${BLOCK}|${INLINE}|${DIM_LEN_PCT}`;\nvar POS_2 = [\n  `(?:${CTR}|${AXIS_X})\\\\s+(?:${CTR}|${AXIS_Y})`,\n  `(?:${CTR}|${AXIS_Y})\\\\s+(?:${CTR}|${AXIS_X})`,\n  `(?:${CTR}|${AXIS_X}|${DIM_LEN_PCT})\\\\s+(?:${CTR}|${AXIS_Y}|${DIM_LEN_PCT})`,\n  `(?:${CTR}|${BLOCK})\\\\s+(?:${CTR}|${INLINE})`,\n  `(?:${CTR}|${INLINE})\\\\s+(?:${CTR}|${BLOCK})`,\n  `(?:${CTR}|${S_E})\\\\s+(?:${CTR}|${S_E})`\n].join(\"|\");\nvar POS_4 = [\n  `(?:${AXIS_X})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${AXIS_Y})\\\\s+(?:${DIM_LEN_PCT})`,\n  `(?:${AXIS_Y})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${AXIS_X})\\\\s+(?:${DIM_LEN_PCT})`,\n  `(?:${BLOCK})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${INLINE})\\\\s+(?:${DIM_LEN_PCT})`,\n  `(?:${INLINE})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${BLOCK})\\\\s+(?:${DIM_LEN_PCT})`,\n  `(?:${S_E})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${S_E})\\\\s+(?:${DIM_LEN_PCT})`\n].join(\"|\");\nvar RAD_EXTENT = \"(?:clos|farth)est-(?:corner|side)\";\nvar RAD_SIZE = [\n  `${RAD_EXTENT}(?:\\\\s+${RAD_EXTENT})?`,\n  `${DIM_LEN_POSI}`,\n  `(?:${DIM_LEN_PCT_POSI})\\\\s+(?:${DIM_LEN_PCT_POSI})`\n].join(\"|\");\nvar RAD_SHAPE = \"circle|ellipse\";\nvar FROM_ANGLE = `from\\\\s+${DIM_ANGLE}`;\nvar AT_POSITION = `at\\\\s+(?:${POS_1}|${POS_2}|${POS_4})`;\nvar TO_SIDE_CORNER = `to\\\\s+(?:(?:${L_R})(?:\\\\s(?:${T_B}))?|(?:${T_B})(?:\\\\s(?:${L_R}))?)`;\nvar IN_COLOR_SPACE = `in\\\\s+(?:${CS_RECT}|${CS_HUE})`;\nvar REG_GRAD = /^(?:repeating-)?(?:conic|linear|radial)-gradient\\(/;\nvar REG_GRAD_CAPT = /^((?:repeating-)?(?:conic|linear|radial)-gradient)\\(/;\nvar getGradientType = (value) => {\n  if (isString(value)) {\n    value = value.trim();\n    if (REG_GRAD.test(value)) {\n      const [, type] = value.match(REG_GRAD_CAPT);\n      return type;\n    }\n  }\n  return \"\";\n};\nvar validateGradientLine = (value, type) => {\n  if (isString(value) && isString(type)) {\n    value = value.trim();\n    type = type.trim();\n    let lineSyntax = \"\";\n    const defaultValues = [];\n    if (/^(?:repeating-)?linear-gradient$/.test(type)) {\n      lineSyntax = [\n        `(?:${DIM_ANGLE}|${TO_SIDE_CORNER})(?:\\\\s+${IN_COLOR_SPACE})?`,\n        `${IN_COLOR_SPACE}(?:\\\\s+(?:${DIM_ANGLE}|${TO_SIDE_CORNER}))?`\n      ].join(\"|\");\n      defaultValues.push(/to\\s+bottom/);\n    } else if (/^(?:repeating-)?radial-gradient$/.test(type)) {\n      lineSyntax = [\n        `(?:${RAD_SHAPE})(?:\\\\s+(?:${RAD_SIZE}))?(?:\\\\s+${AT_POSITION})?(?:\\\\s+${IN_COLOR_SPACE})?`,\n        `(?:${RAD_SIZE})(?:\\\\s+(?:${RAD_SHAPE}))?(?:\\\\s+${AT_POSITION})?(?:\\\\s+${IN_COLOR_SPACE})?`,\n        `${AT_POSITION}(?:\\\\s+${IN_COLOR_SPACE})?`,\n        `${IN_COLOR_SPACE}(?:\\\\s+${RAD_SHAPE})(?:\\\\s+(?:${RAD_SIZE}))?(?:\\\\s+${AT_POSITION})?`,\n        `${IN_COLOR_SPACE}(?:\\\\s+${RAD_SIZE})(?:\\\\s+(?:${RAD_SHAPE}))?(?:\\\\s+${AT_POSITION})?`,\n        `${IN_COLOR_SPACE}(?:\\\\s+${AT_POSITION})?`\n      ].join(\"|\");\n      defaultValues.push(/ellipse/, /farthest-corner/, /at\\s+center/);\n    } else if (/^(?:repeating-)?conic-gradient$/.test(type)) {\n      lineSyntax = [\n        `${FROM_ANGLE}(?:\\\\s+${AT_POSITION})?(?:\\\\s+${IN_COLOR_SPACE})?`,\n        `${AT_POSITION}(?:\\\\s+${IN_COLOR_SPACE})?`,\n        `${IN_COLOR_SPACE}(?:\\\\s+${FROM_ANGLE})?(?:\\\\s+${AT_POSITION})?`\n      ].join(\"|\");\n      defaultValues.push(/at\\s+center/);\n    }\n    if (lineSyntax) {\n      const reg = new RegExp(`^(?:${lineSyntax})$`);\n      const valid = reg.test(value);\n      if (valid) {\n        let line = value;\n        for (const defaultValue of defaultValues) {\n          line = line.replace(defaultValue, \"\");\n        }\n        line = line.replace(/\\s{2,}/g, \" \").trim();\n        return {\n          line,\n          valid\n        };\n      }\n      return {\n        valid,\n        line: value\n      };\n    }\n  }\n  return {\n    line: value,\n    valid: false\n  };\n};\nvar validateColorStopList = (list, type, opt = {}) => {\n  if (Array.isArray(list) && list.length > 1) {\n    const dimension = /^(?:repeating-)?conic-gradient$/.test(type) ? DIM_ANGLE_PCT : DIM_LEN_PCT;\n    const regColorHint = new RegExp(`^(?:${dimension})$`);\n    const regDimension = new RegExp(`(?:\\\\s+(?:${dimension})){1,2}$`);\n    const valueTypes = [];\n    const valueList = [];\n    for (const item of list) {\n      if (isString(item)) {\n        if (regColorHint.test(item)) {\n          valueTypes.push(\"hint\");\n          valueList.push(item);\n        } else {\n          const itemColor = item.replace(regDimension, \"\");\n          if (isColor(itemColor, { format: VAL_SPEC })) {\n            const resolvedColor = resolveColor(itemColor, opt);\n            valueTypes.push(\"color\");\n            valueList.push(item.replace(itemColor, resolvedColor));\n          } else {\n            return {\n              colorStops: list,\n              valid: false\n            };\n          }\n        }\n      }\n    }\n    const valid = /^color(?:,(?:hint,)?color)+$/.test(valueTypes.join(\",\"));\n    return {\n      valid,\n      colorStops: valueList\n    };\n  }\n  return {\n    colorStops: list,\n    valid: false\n  };\n};\nvar parseGradient = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n    const cacheKey = createCacheKey(\n      {\n        namespace: NAMESPACE7,\n        name: \"parseGradient\",\n        value\n      },\n      opt\n    );\n    const cachedResult = getCache(cacheKey);\n    if (cachedResult instanceof CacheItem) {\n      if (cachedResult.isNull) {\n        return null;\n      }\n      return cachedResult.item;\n    }\n    const type = getGradientType(value);\n    const gradValue = value.replace(REG_GRAD, \"\").replace(/\\)$/, \"\");\n    if (type && gradValue) {\n      const [lineOrColorStop = \"\", ...itemList] = splitValue(gradValue, {\n        delimiter: \",\"\n      });\n      const dimension = /^(?:repeating-)?conic-gradient$/.test(type) ? DIM_ANGLE_PCT : DIM_LEN_PCT;\n      const regDimension = new RegExp(`(?:\\\\s+(?:${dimension})){1,2}$`);\n      let colorStop = \"\";\n      if (regDimension.test(lineOrColorStop)) {\n        const itemColor = lineOrColorStop.replace(regDimension, \"\");\n        if (isColor(itemColor, { format: VAL_SPEC })) {\n          const resolvedColor = resolveColor(itemColor, opt);\n          colorStop = lineOrColorStop.replace(itemColor, resolvedColor);\n        }\n      } else if (isColor(lineOrColorStop, { format: VAL_SPEC })) {\n        colorStop = resolveColor(lineOrColorStop, opt);\n      }\n      if (colorStop) {\n        itemList.unshift(colorStop);\n        const { colorStops, valid } = validateColorStopList(\n          itemList,\n          type,\n          opt\n        );\n        if (valid) {\n          const res = {\n            value,\n            type,\n            colorStopList: colorStops\n          };\n          setCache(cacheKey, res);\n          return res;\n        }\n      } else if (itemList.length > 1) {\n        const { line: gradientLine, valid: validLine } = validateGradientLine(\n          lineOrColorStop,\n          type\n        );\n        const { colorStops, valid: validColorStops } = validateColorStopList(\n          itemList,\n          type,\n          opt\n        );\n        if (validLine && validColorStops) {\n          const res = {\n            value,\n            type,\n            gradientLine,\n            colorStopList: colorStops\n          };\n          setCache(cacheKey, res);\n          return res;\n        }\n      }\n    }\n    setCache(cacheKey, null);\n    return null;\n  }\n  return null;\n};\nvar resolveGradient = (value, opt = {}) => {\n  const { format = VAL_COMP } = opt;\n  const gradient = parseGradient(value, opt);\n  if (gradient) {\n    const { type = \"\", gradientLine = \"\", colorStopList = [] } = gradient;\n    if (type && Array.isArray(colorStopList) && colorStopList.length > 1) {\n      if (gradientLine) {\n        return `${type}(${gradientLine}, ${colorStopList.join(\", \")})`;\n      }\n      return `${type}(${colorStopList.join(\", \")})`;\n    }\n  }\n  if (format === VAL_SPEC) {\n    return \"\";\n  }\n  return \"none\";\n};\nvar isGradient = (value, opt = {}) => {\n  const gradient = parseGradient(value, opt);\n  return gradient !== null;\n};\n\n// src/js/convert.ts\nvar NAMESPACE8 = \"convert\";\nvar REG_FN_CALC4 = new RegExp(SYN_FN_CALC);\nvar REG_FN_REL3 = new RegExp(SYN_FN_REL);\nvar REG_FN_VAR5 = new RegExp(SYN_FN_VAR);\nvar preProcess = (value, opt = {}) => {\n  if (isString(value)) {\n    value = value.trim();\n    if (!value) {\n      return new NullObject();\n    }\n  } else {\n    return new NullObject();\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"preProcess\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return cachedResult;\n    }\n    return cachedResult.item;\n  }\n  if (REG_FN_VAR5.test(value)) {\n    const resolvedValue = resolveVar(value, opt);\n    if (isString(resolvedValue)) {\n      value = resolvedValue;\n    } else {\n      setCache(cacheKey, null);\n      return new NullObject();\n    }\n  }\n  if (REG_FN_REL3.test(value)) {\n    const resolvedValue = resolveRelativeColor(value, opt);\n    if (isString(resolvedValue)) {\n      value = resolvedValue;\n    } else {\n      setCache(cacheKey, null);\n      return new NullObject();\n    }\n  } else if (REG_FN_CALC4.test(value)) {\n    value = cssCalc(value, opt);\n  }\n  if (value.startsWith(\"color-mix\")) {\n    const clonedOpt = structuredClone(opt);\n    clonedOpt.format = VAL_COMP;\n    clonedOpt.nullable = true;\n    const resolvedValue = resolveColor(value, clonedOpt);\n    setCache(cacheKey, resolvedValue);\n    return resolvedValue;\n  }\n  setCache(cacheKey, value);\n  return value;\n};\nvar numberToHex = (value) => {\n  const hex = numberToHexString(value);\n  return hex;\n};\nvar colorToHex = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return null;\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const { alpha = false } = opt;\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToHex\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    if (cachedResult.isNull) {\n      return null;\n    }\n    return cachedResult.item;\n  }\n  let hex;\n  opt.nullable = true;\n  if (alpha) {\n    opt.format = \"hexAlpha\";\n    hex = resolveColor(value, opt);\n  } else {\n    opt.format = \"hex\";\n    hex = resolveColor(value, opt);\n  }\n  if (isString(hex)) {\n    setCache(cacheKey, hex);\n    return hex;\n  }\n  setCache(cacheKey, null);\n  return null;\n};\nvar colorToHsl = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToHsl\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  opt.format = \"hsl\";\n  const hsl = convertColorToHsl(value, opt);\n  setCache(cacheKey, hsl);\n  return hsl;\n};\nvar colorToHwb = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToHwb\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  opt.format = \"hwb\";\n  const hwb = convertColorToHwb(value, opt);\n  setCache(cacheKey, hwb);\n  return hwb;\n};\nvar colorToLab = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToLab\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const lab = convertColorToLab(value, opt);\n  setCache(cacheKey, lab);\n  return lab;\n};\nvar colorToLch = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToLch\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const lch = convertColorToLch(value, opt);\n  setCache(cacheKey, lch);\n  return lch;\n};\nvar colorToOklab = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToOklab\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const lab = convertColorToOklab(value, opt);\n  setCache(cacheKey, lab);\n  return lab;\n};\nvar colorToOklch = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToOklch\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const lch = convertColorToOklch(value, opt);\n  setCache(cacheKey, lch);\n  return lch;\n};\nvar colorToRgb = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToRgb\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  const rgb = convertColorToRgb(value, opt);\n  setCache(cacheKey, rgb);\n  return rgb;\n};\nvar colorToXyz = (value, opt = {}) => {\n  if (isString(value)) {\n    const resolvedValue = preProcess(value, opt);\n    if (resolvedValue instanceof NullObject) {\n      return [0, 0, 0, 0];\n    }\n    value = resolvedValue.toLowerCase();\n  } else {\n    throw new TypeError(`${value} is not a string.`);\n  }\n  const cacheKey = createCacheKey(\n    {\n      namespace: NAMESPACE8,\n      name: \"colorToXyz\",\n      value\n    },\n    opt\n  );\n  const cachedResult = getCache(cacheKey);\n  if (cachedResult instanceof CacheItem) {\n    return cachedResult.item;\n  }\n  let xyz;\n  if (value.startsWith(\"color(\")) {\n    [, ...xyz] = parseColorFunc(value, opt);\n  } else {\n    [, ...xyz] = parseColorValue(value, opt);\n  }\n  setCache(cacheKey, xyz);\n  return xyz;\n};\nvar colorToXyzD50 = (value, opt = {}) => {\n  opt.d50 = true;\n  return colorToXyz(value, opt);\n};\nvar convert = {\n  colorToHex,\n  colorToHsl,\n  colorToHwb,\n  colorToLab,\n  colorToLch,\n  colorToOklab,\n  colorToOklch,\n  colorToRgb,\n  colorToXyz,\n  colorToXyzD50,\n  numberToHex\n};\n\n// src/index.ts\nvar utils = {\n  cssCalc,\n  cssVar,\n  extractDashedIdent,\n  isColor,\n  isGradient,\n  resolveGradient,\n  resolveLengthInPixels,\n  splitValue\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  convert,\n  resolve,\n  utils\n});\n/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n//# sourceMappingURL=index.cjs.map","","'use strict';\n\n// CSS Syntax Module Level 3\n// https://www.w3.org/TR/css-syntax-3/\nconst EOF = 0;                 // <EOF-token>\nconst Ident = 1;               // <ident-token>\nconst Function = 2;            // <function-token>\nconst AtKeyword = 3;           // <at-keyword-token>\nconst Hash = 4;                // <hash-token>\nconst String = 5;              // <string-token>\nconst BadString = 6;           // <bad-string-token>\nconst Url = 7;                 // <url-token>\nconst BadUrl = 8;              // <bad-url-token>\nconst Delim = 9;               // <delim-token>\nconst Number = 10;             // <number-token>\nconst Percentage = 11;         // <percentage-token>\nconst Dimension = 12;          // <dimension-token>\nconst WhiteSpace = 13;         // <whitespace-token>\nconst CDO = 14;                // <CDO-token>\nconst CDC = 15;                // <CDC-token>\nconst Colon = 16;              // <colon-token>     :\nconst Semicolon = 17;          // <semicolon-token> ;\nconst Comma = 18;              // <comma-token>     ,\nconst LeftSquareBracket = 19;  // <[-token>\nconst RightSquareBracket = 20; // <]-token>\nconst LeftParenthesis = 21;    // <(-token>\nconst RightParenthesis = 22;   // <)-token>\nconst LeftCurlyBracket = 23;   // <{-token>\nconst RightCurlyBracket = 24;  // <}-token>\nconst Comment = 25;\n\nexports.AtKeyword = AtKeyword;\nexports.BadString = BadString;\nexports.BadUrl = BadUrl;\nexports.CDC = CDC;\nexports.CDO = CDO;\nexports.Colon = Colon;\nexports.Comma = Comma;\nexports.Comment = Comment;\nexports.Delim = Delim;\nexports.Dimension = Dimension;\nexports.EOF = EOF;\nexports.Function = Function;\nexports.Hash = Hash;\nexports.Ident = Ident;\nexports.LeftCurlyBracket = LeftCurlyBracket;\nexports.LeftParenthesis = LeftParenthesis;\nexports.LeftSquareBracket = LeftSquareBracket;\nexports.Number = Number;\nexports.Percentage = Percentage;\nexports.RightCurlyBracket = RightCurlyBracket;\nexports.RightParenthesis = RightParenthesis;\nexports.RightSquareBracket = RightSquareBracket;\nexports.Semicolon = Semicolon;\nexports.String = String;\nexports.Url = Url;\nexports.WhiteSpace = WhiteSpace;\n","'use strict';\n\nconst EOF = 0;\n\n// https://drafts.csswg.org/css-syntax-3/\n// § 4.2. Definitions\n\n// digit\n// A code point between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9).\nfunction isDigit(code) {\n    return code >= 0x0030 && code <= 0x0039;\n}\n\n// hex digit\n// A digit, or a code point between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F),\n// or a code point between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f).\nfunction isHexDigit(code) {\n    return (\n        isDigit(code) || // 0 .. 9\n        (code >= 0x0041 && code <= 0x0046) || // A .. F\n        (code >= 0x0061 && code <= 0x0066)    // a .. f\n    );\n}\n\n// uppercase letter\n// A code point between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z).\nfunction isUppercaseLetter(code) {\n    return code >= 0x0041 && code <= 0x005A;\n}\n\n// lowercase letter\n// A code point between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z).\nfunction isLowercaseLetter(code) {\n    return code >= 0x0061 && code <= 0x007A;\n}\n\n// letter\n// An uppercase letter or a lowercase letter.\nfunction isLetter(code) {\n    return isUppercaseLetter(code) || isLowercaseLetter(code);\n}\n\n// non-ASCII code point\n// A code point with a value equal to or greater than U+0080 <control>.\n//\n// 2024-09-02: The latest spec narrows the range for non-ASCII characters (see https://github.com/csstree/csstree/issues/188).\n// However, all modern browsers support a wider range, and strictly following the latest spec could result\n// in some CSS being parsed incorrectly, even though it works in the browser. Therefore, this function adheres\n// to the previous, broader definition of non-ASCII characters.\nfunction isNonAscii(code) {\n    return code >= 0x0080;\n}\n\n// name-start code point\n// A letter, a non-ASCII code point, or U+005F LOW LINE (_).\nfunction isNameStart(code) {\n    return isLetter(code) || isNonAscii(code) || code === 0x005F;\n}\n\n// name code point\n// A name-start code point, a digit, or U+002D HYPHEN-MINUS (-).\nfunction isName(code) {\n    return isNameStart(code) || isDigit(code) || code === 0x002D;\n}\n\n// non-printable code point\n// A code point between U+0000 NULL and U+0008 BACKSPACE, or U+000B LINE TABULATION,\n// or a code point between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, or U+007F DELETE.\nfunction isNonPrintable(code) {\n    return (\n        (code >= 0x0000 && code <= 0x0008) ||\n        (code === 0x000B) ||\n        (code >= 0x000E && code <= 0x001F) ||\n        (code === 0x007F)\n    );\n}\n\n// newline\n// U+000A LINE FEED. Note that U+000D CARRIAGE RETURN and U+000C FORM FEED are not included in this definition,\n// as they are converted to U+000A LINE FEED during preprocessing.\n// TODO: we doesn't do a preprocessing, so check a code point for U+000D CARRIAGE RETURN and U+000C FORM FEED\nfunction isNewline(code) {\n    return code === 0x000A || code === 0x000D || code === 0x000C;\n}\n\n// whitespace\n// A newline, U+0009 CHARACTER TABULATION, or U+0020 SPACE.\nfunction isWhiteSpace(code) {\n    return isNewline(code) || code === 0x0020 || code === 0x0009;\n}\n\n// § 4.3.8. Check if two code points are a valid escape\nfunction isValidEscape(first, second) {\n    // If the first code point is not U+005C REVERSE SOLIDUS (\\), return false.\n    if (first !== 0x005C) {\n        return false;\n    }\n\n    // Otherwise, if the second code point is a newline or EOF, return false.\n    if (isNewline(second) || second === EOF) {\n        return false;\n    }\n\n    // Otherwise, return true.\n    return true;\n}\n\n// § 4.3.9. Check if three code points would start an identifier\nfunction isIdentifierStart(first, second, third) {\n    // Look at the first code point:\n\n    // U+002D HYPHEN-MINUS\n    if (first === 0x002D) {\n        // If the second code point is a name-start code point or a U+002D HYPHEN-MINUS,\n        // or the second and third code points are a valid escape, return true. Otherwise, return false.\n        return (\n            isNameStart(second) ||\n            second === 0x002D ||\n            isValidEscape(second, third)\n        );\n    }\n\n    // name-start code point\n    if (isNameStart(first)) {\n        // Return true.\n        return true;\n    }\n\n    // U+005C REVERSE SOLIDUS (\\)\n    if (first === 0x005C) {\n        // If the first and second code points are a valid escape, return true. Otherwise, return false.\n        return isValidEscape(first, second);\n    }\n\n    // anything else\n    // Return false.\n    return false;\n}\n\n// § 4.3.10. Check if three code points would start a number\nfunction isNumberStart(first, second, third) {\n    // Look at the first code point:\n\n    // U+002B PLUS SIGN (+)\n    // U+002D HYPHEN-MINUS (-)\n    if (first === 0x002B || first === 0x002D) {\n        // If the second code point is a digit, return true.\n        if (isDigit(second)) {\n            return 2;\n        }\n\n        // Otherwise, if the second code point is a U+002E FULL STOP (.)\n        // and the third code point is a digit, return true.\n        // Otherwise, return false.\n        return second === 0x002E && isDigit(third) ? 3 : 0;\n    }\n\n    // U+002E FULL STOP (.)\n    if (first === 0x002E) {\n        // If the second code point is a digit, return true. Otherwise, return false.\n        return isDigit(second) ? 2 : 0;\n    }\n\n    // digit\n    if (isDigit(first)) {\n        // Return true.\n        return 1;\n    }\n\n    // anything else\n    // Return false.\n    return 0;\n}\n\n//\n// Misc\n//\n\n// detect BOM (https://en.wikipedia.org/wiki/Byte_order_mark)\nfunction isBOM(code) {\n    // UTF-16BE\n    if (code === 0xFEFF) {\n        return 1;\n    }\n\n    // UTF-16LE\n    if (code === 0xFFFE) {\n        return 1;\n    }\n\n    return 0;\n}\n\n// Fast code category\n// Only ASCII code points has a special meaning, that's why we define a maps for 0..127 codes only\nconst CATEGORY = new Array(0x80);\nconst EofCategory = 0x80;\nconst WhiteSpaceCategory = 0x82;\nconst DigitCategory = 0x83;\nconst NameStartCategory = 0x84;\nconst NonPrintableCategory = 0x85;\n\nfor (let i = 0; i < CATEGORY.length; i++) {\n    CATEGORY[i] =\n        isWhiteSpace(i) && WhiteSpaceCategory ||\n        isDigit(i) && DigitCategory ||\n        isNameStart(i) && NameStartCategory ||\n        isNonPrintable(i) && NonPrintableCategory ||\n        i || EofCategory;\n}\n\nfunction charCodeCategory(code) {\n    return code < 0x80 ? CATEGORY[code] : NameStartCategory;\n}\n\nexports.DigitCategory = DigitCategory;\nexports.EofCategory = EofCategory;\nexports.NameStartCategory = NameStartCategory;\nexports.NonPrintableCategory = NonPrintableCategory;\nexports.WhiteSpaceCategory = WhiteSpaceCategory;\nexports.charCodeCategory = charCodeCategory;\nexports.isBOM = isBOM;\nexports.isDigit = isDigit;\nexports.isHexDigit = isHexDigit;\nexports.isIdentifierStart = isIdentifierStart;\nexports.isLetter = isLetter;\nexports.isLowercaseLetter = isLowercaseLetter;\nexports.isName = isName;\nexports.isNameStart = isNameStart;\nexports.isNewline = isNewline;\nexports.isNonAscii = isNonAscii;\nexports.isNonPrintable = isNonPrintable;\nexports.isNumberStart = isNumberStart;\nexports.isUppercaseLetter = isUppercaseLetter;\nexports.isValidEscape = isValidEscape;\nexports.isWhiteSpace = isWhiteSpace;\n","'use strict';\n\nconst charCodeDefinitions = require('./char-code-definitions.cjs');\n\nfunction getCharCode(source, offset) {\n    return offset < source.length ? source.charCodeAt(offset) : 0;\n}\n\nfunction getNewlineLength(source, offset, code) {\n    if (code === 13 /* \\r */ && getCharCode(source, offset + 1) === 10 /* \\n */) {\n        return 2;\n    }\n\n    return 1;\n}\n\nfunction cmpChar(testStr, offset, referenceCode) {\n    let code = testStr.charCodeAt(offset);\n\n    // code.toLowerCase() for A..Z\n    if (charCodeDefinitions.isUppercaseLetter(code)) {\n        code = code | 32;\n    }\n\n    return code === referenceCode;\n}\n\nfunction cmpStr(testStr, start, end, referenceStr) {\n    if (end - start !== referenceStr.length) {\n        return false;\n    }\n\n    if (start < 0 || end > testStr.length) {\n        return false;\n    }\n\n    for (let i = start; i < end; i++) {\n        const referenceCode = referenceStr.charCodeAt(i - start);\n        let testCode = testStr.charCodeAt(i);\n\n        // testCode.toLowerCase() for A..Z\n        if (charCodeDefinitions.isUppercaseLetter(testCode)) {\n            testCode = testCode | 32;\n        }\n\n        if (testCode !== referenceCode) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\nfunction findWhiteSpaceStart(source, offset) {\n    for (; offset >= 0; offset--) {\n        if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {\n            break;\n        }\n    }\n\n    return offset + 1;\n}\n\nfunction findWhiteSpaceEnd(source, offset) {\n    for (; offset < source.length; offset++) {\n        if (!charCodeDefinitions.isWhiteSpace(source.charCodeAt(offset))) {\n            break;\n        }\n    }\n\n    return offset;\n}\n\nfunction findDecimalNumberEnd(source, offset) {\n    for (; offset < source.length; offset++) {\n        if (!charCodeDefinitions.isDigit(source.charCodeAt(offset))) {\n            break;\n        }\n    }\n\n    return offset;\n}\n\n// § 4.3.7. Consume an escaped code point\nfunction consumeEscaped(source, offset) {\n    // It assumes that the U+005C REVERSE SOLIDUS (\\) has already been consumed and\n    // that the next input code point has already been verified to be part of a valid escape.\n    offset += 2;\n\n    // hex digit\n    if (charCodeDefinitions.isHexDigit(getCharCode(source, offset - 1))) {\n        // Consume as many hex digits as possible, but no more than 5.\n        // Note that this means 1-6 hex digits have been consumed in total.\n        for (const maxOffset = Math.min(source.length, offset + 5); offset < maxOffset; offset++) {\n            if (!charCodeDefinitions.isHexDigit(getCharCode(source, offset))) {\n                break;\n            }\n        }\n\n        // If the next input code point is whitespace, consume it as well.\n        const code = getCharCode(source, offset);\n        if (charCodeDefinitions.isWhiteSpace(code)) {\n            offset += getNewlineLength(source, offset, code);\n        }\n    }\n\n    return offset;\n}\n\n// §4.3.11. Consume a name\n// Note: This algorithm does not do the verification of the first few code points that are necessary\n// to ensure the returned code points would constitute an <ident-token>. If that is the intended use,\n// ensure that the stream starts with an identifier before calling this algorithm.\nfunction consumeName(source, offset) {\n    // Let result initially be an empty string.\n    // Repeatedly consume the next input code point from the stream:\n    for (; offset < source.length; offset++) {\n        const code = source.charCodeAt(offset);\n\n        // name code point\n        if (charCodeDefinitions.isName(code)) {\n            // Append the code point to result.\n            continue;\n        }\n\n        // the stream starts with a valid escape\n        if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {\n            // Consume an escaped code point. Append the returned code point to result.\n            offset = consumeEscaped(source, offset) - 1;\n            continue;\n        }\n\n        // anything else\n        // Reconsume the current input code point. Return result.\n        break;\n    }\n\n    return offset;\n}\n\n// §4.3.12. Consume a number\nfunction consumeNumber(source, offset) {\n    let code = source.charCodeAt(offset);\n\n    // 2. If the next input code point is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-),\n    // consume it and append it to repr.\n    if (code === 0x002B || code === 0x002D) {\n        code = source.charCodeAt(offset += 1);\n    }\n\n    // 3. While the next input code point is a digit, consume it and append it to repr.\n    if (charCodeDefinitions.isDigit(code)) {\n        offset = findDecimalNumberEnd(source, offset + 1);\n        code = source.charCodeAt(offset);\n    }\n\n    // 4. If the next 2 input code points are U+002E FULL STOP (.) followed by a digit, then:\n    if (code === 0x002E && charCodeDefinitions.isDigit(source.charCodeAt(offset + 1))) {\n        // 4.1 Consume them.\n        // 4.2 Append them to repr.\n        offset += 2;\n\n        // 4.3 Set type to \"number\".\n        // TODO\n\n        // 4.4 While the next input code point is a digit, consume it and append it to repr.\n\n        offset = findDecimalNumberEnd(source, offset);\n    }\n\n    // 5. If the next 2 or 3 input code points are U+0045 LATIN CAPITAL LETTER E (E)\n    // or U+0065 LATIN SMALL LETTER E (e), ... , followed by a digit, then:\n    if (cmpChar(source, offset, 101 /* e */)) {\n        let sign = 0;\n        code = source.charCodeAt(offset + 1);\n\n        // ... optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+) ...\n        if (code === 0x002D || code === 0x002B) {\n            sign = 1;\n            code = source.charCodeAt(offset + 2);\n        }\n\n        // ... followed by a digit\n        if (charCodeDefinitions.isDigit(code)) {\n            // 5.1 Consume them.\n            // 5.2 Append them to repr.\n\n            // 5.3 Set type to \"number\".\n            // TODO\n\n            // 5.4 While the next input code point is a digit, consume it and append it to repr.\n            offset = findDecimalNumberEnd(source, offset + 1 + sign + 1);\n        }\n    }\n\n    return offset;\n}\n\n// § 4.3.14. Consume the remnants of a bad url\n// ... its sole use is to consume enough of the input stream to reach a recovery point\n// where normal tokenizing can resume.\nfunction consumeBadUrlRemnants(source, offset) {\n    // Repeatedly consume the next input code point from the stream:\n    for (; offset < source.length; offset++) {\n        const code = source.charCodeAt(offset);\n\n        // U+0029 RIGHT PARENTHESIS ())\n        // EOF\n        if (code === 0x0029) {\n            // Return.\n            offset++;\n            break;\n        }\n\n        if (charCodeDefinitions.isValidEscape(code, getCharCode(source, offset + 1))) {\n            // Consume an escaped code point.\n            // Note: This allows an escaped right parenthesis (\"\\)\") to be encountered\n            // without ending the <bad-url-token>. This is otherwise identical to\n            // the \"anything else\" clause.\n            offset = consumeEscaped(source, offset);\n        }\n    }\n\n    return offset;\n}\n\n// § 4.3.7. Consume an escaped code point\n// Note: This algorithm assumes that escaped is valid without leading U+005C REVERSE SOLIDUS (\\)\nfunction decodeEscaped(escaped) {\n    // Single char escaped that's not a hex digit\n    if (escaped.length === 1 && !charCodeDefinitions.isHexDigit(escaped.charCodeAt(0))) {\n        return escaped[0];\n    }\n\n    // Interpret the hex digits as a hexadecimal number.\n    let code = parseInt(escaped, 16);\n\n    if (\n        (code === 0) ||                       // If this number is zero,\n        (code >= 0xD800 && code <= 0xDFFF) || // or is for a surrogate,\n        (code > 0x10FFFF)                     // or is greater than the maximum allowed code point\n    ) {\n        // ... return U+FFFD REPLACEMENT CHARACTER\n        code = 0xFFFD;\n    }\n\n    // Otherwise, return the code point with that value.\n    return String.fromCodePoint(code);\n}\n\nexports.cmpChar = cmpChar;\nexports.cmpStr = cmpStr;\nexports.consumeBadUrlRemnants = consumeBadUrlRemnants;\nexports.consumeEscaped = consumeEscaped;\nexports.consumeName = consumeName;\nexports.consumeNumber = consumeNumber;\nexports.decodeEscaped = decodeEscaped;\nexports.findDecimalNumberEnd = findDecimalNumberEnd;\nexports.findWhiteSpaceEnd = findWhiteSpaceEnd;\nexports.findWhiteSpaceStart = findWhiteSpaceStart;\nexports.getNewlineLength = getNewlineLength;\n","'use strict';\n\nconst tokenNames = [\n    'EOF-token',\n    'ident-token',\n    'function-token',\n    'at-keyword-token',\n    'hash-token',\n    'string-token',\n    'bad-string-token',\n    'url-token',\n    'bad-url-token',\n    'delim-token',\n    'number-token',\n    'percentage-token',\n    'dimension-token',\n    'whitespace-token',\n    'CDO-token',\n    'CDC-token',\n    'colon-token',\n    'semicolon-token',\n    'comma-token',\n    '[-token',\n    ']-token',\n    '(-token',\n    ')-token',\n    '{-token',\n    '}-token',\n    'comment-token'\n];\n\nmodule.exports = tokenNames;\n","'use strict';\n\nconst MIN_SIZE = 16 * 1024;\n\nfunction adoptBuffer(buffer = null, size) {\n    if (buffer === null || buffer.length < size) {\n        return new Uint32Array(Math.max(size + 1024, MIN_SIZE));\n    }\n\n    return buffer;\n}\n\nexports.adoptBuffer = adoptBuffer;\n","'use strict';\n\nconst adoptBuffer = require('./adopt-buffer.cjs');\nconst charCodeDefinitions = require('./char-code-definitions.cjs');\n\nconst N = 10;\nconst F = 12;\nconst R = 13;\n\nfunction computeLinesAndColumns(host) {\n    const source = host.source;\n    const sourceLength = source.length;\n    const startOffset = source.length > 0 ? charCodeDefinitions.isBOM(source.charCodeAt(0)) : 0;\n    const lines = adoptBuffer.adoptBuffer(host.lines, sourceLength);\n    const columns = adoptBuffer.adoptBuffer(host.columns, sourceLength);\n    let line = host.startLine;\n    let column = host.startColumn;\n\n    for (let i = startOffset; i < sourceLength; i++) {\n        const code = source.charCodeAt(i);\n\n        lines[i] = line;\n        columns[i] = column++;\n\n        if (code === N || code === R || code === F) {\n            if (code === R && i + 1 < sourceLength && source.charCodeAt(i + 1) === N) {\n                i++;\n                lines[i] = line;\n                columns[i] = column;\n            }\n\n            line++;\n            column = 1;\n        }\n    }\n\n    lines[sourceLength] = line;\n    columns[sourceLength] = column;\n\n    host.lines = lines;\n    host.columns = columns;\n    host.computed = true;\n}\n\nclass OffsetToLocation {\n    constructor(source, startOffset, startLine, startColumn) {\n        this.setSource(source, startOffset, startLine, startColumn);\n        this.lines = null;\n        this.columns = null;\n    }\n    setSource(source = '', startOffset = 0, startLine = 1, startColumn = 1) {\n        this.source = source;\n        this.startOffset = startOffset;\n        this.startLine = startLine;\n        this.startColumn = startColumn;\n        this.computed = false;\n    }\n    getLocation(offset, filename) {\n        if (!this.computed) {\n            computeLinesAndColumns(this);\n        }\n\n        return {\n            source: filename,\n            offset: this.startOffset + offset,\n            line: this.lines[offset],\n            column: this.columns[offset]\n        };\n    }\n    getLocationRange(start, end, filename) {\n        if (!this.computed) {\n            computeLinesAndColumns(this);\n        }\n\n        return {\n            source: filename,\n            start: {\n                offset: this.startOffset + start,\n                line: this.lines[start],\n                column: this.columns[start]\n            },\n            end: {\n                offset: this.startOffset + end,\n                line: this.lines[end],\n                column: this.columns[end]\n            }\n        };\n    }\n}\n\nexports.OffsetToLocation = OffsetToLocation;\n","'use strict';\n\nconst adoptBuffer = require('./adopt-buffer.cjs');\nconst utils = require('./utils.cjs');\nconst names = require('./names.cjs');\nconst types = require('./types.cjs');\n\nconst OFFSET_MASK = 0x00FFFFFF;\nconst TYPE_SHIFT = 24;\nconst balancePair = new Uint8Array(32); // 32b of memory ought to be enough for anyone (any number of tokens)\nbalancePair[types.Function] = types.RightParenthesis;\nbalancePair[types.LeftParenthesis] = types.RightParenthesis;\nbalancePair[types.LeftSquareBracket] = types.RightSquareBracket;\nbalancePair[types.LeftCurlyBracket] = types.RightCurlyBracket;\n\nfunction isBlockOpenerToken(tokenType) {\n    return balancePair[tokenType] !== 0;\n}\n\nclass TokenStream {\n    constructor(source, tokenize) {\n        this.setSource(source, tokenize);\n    }\n    reset() {\n        this.eof = false;\n        this.tokenIndex = -1;\n        this.tokenType = 0;\n        this.tokenStart = this.firstCharOffset;\n        this.tokenEnd = this.firstCharOffset;\n    }\n    setSource(source = '', tokenize = () => {}) {\n        source = String(source || '');\n\n        const sourceLength = source.length;\n        const offsetAndType = adoptBuffer.adoptBuffer(this.offsetAndType, source.length + 1); // +1 because of eof-token\n        const balance = adoptBuffer.adoptBuffer(this.balance, source.length + 1);\n        let tokenCount = 0;\n        let firstCharOffset = -1;\n        let balanceCloseType = 0;\n        let balanceStart = source.length;\n\n        // capture buffers\n        this.offsetAndType = null;\n        this.balance = null;\n        balance.fill(0);\n\n        tokenize(source, (type, start, end) => {\n            const index = tokenCount++;\n\n            // type & offset\n            offsetAndType[index] = (type << TYPE_SHIFT) | end;\n\n            if (firstCharOffset === -1) {\n                firstCharOffset = start;\n            }\n\n            // balance\n            balance[index] = balanceStart;\n\n            if (type === balanceCloseType) {\n                const prevBalanceStart = balance[balanceStart];\n\n                // set reference to balance end for a block opener\n                balance[balanceStart] = index;\n\n                // pop state\n                balanceStart = prevBalanceStart;\n                balanceCloseType = balancePair[offsetAndType[prevBalanceStart] >> TYPE_SHIFT];\n            } else if (isBlockOpenerToken(type)) { // check for FunctionToken, <(-token>, <[-token> and <{-token>\n                // push state\n                balanceStart = index;\n                balanceCloseType = balancePair[type];\n            }\n        });\n\n        // finalize buffers\n        offsetAndType[tokenCount] = (types.EOF << TYPE_SHIFT) | sourceLength; // <EOF-token>\n        balance[tokenCount] = tokenCount; // prevents false positive balance match with any token\n\n        // reverse references from balance start to end\n        // tokens\n        //   token:   a ( [ b c ] d e ) {\n        //   index:   0 1 2 3 4 5 6 7 8 9\n        // before\n        //   balance: 0 8 5 2 2 2 1 1 1 0\n        //            - > > < < < < < < -\n        // after\n        //   balance: 9 8 5 5 5 2 8 8 1 9\n        //            > > > > > < > > < >\n        for (let i = 0; i < tokenCount; i++) {\n            const balanceStart = balance[i];\n\n            if (balanceStart <= i) {\n                const balanceEnd = balance[balanceStart];\n\n                if (balanceEnd !== i) {\n                    balance[i] = balanceEnd;\n                }\n            } else if (balanceStart > tokenCount) {\n                balance[i] = tokenCount;\n            }\n        }\n\n        // balance[0] = tokenCount;\n\n        this.source = source;\n        this.firstCharOffset = firstCharOffset === -1 ? 0 : firstCharOffset;\n        this.tokenCount = tokenCount;\n        this.offsetAndType = offsetAndType;\n        this.balance = balance;\n\n        this.reset();\n        this.next();\n    }\n\n    lookupType(offset) {\n        offset += this.tokenIndex;\n\n        if (offset < this.tokenCount) {\n            return this.offsetAndType[offset] >> TYPE_SHIFT;\n        }\n\n        return types.EOF;\n    }\n    lookupTypeNonSC(idx) {\n        for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {\n            const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;\n\n            if (tokenType !== types.WhiteSpace && tokenType !== types.Comment) {\n                if (idx-- === 0) {\n                    return tokenType;\n                }\n            }\n        }\n\n        return types.EOF;\n    }\n    lookupOffset(offset) {\n        offset += this.tokenIndex;\n\n        if (offset < this.tokenCount) {\n            return this.offsetAndType[offset - 1] & OFFSET_MASK;\n        }\n\n        return this.source.length;\n    }\n    lookupOffsetNonSC(idx) {\n        for (let offset = this.tokenIndex; offset < this.tokenCount; offset++) {\n            const tokenType = this.offsetAndType[offset] >> TYPE_SHIFT;\n\n            if (tokenType !== types.WhiteSpace && tokenType !== types.Comment) {\n                if (idx-- === 0) {\n                    return offset - this.tokenIndex;\n                }\n            }\n        }\n\n        return types.EOF;\n    }\n    lookupValue(offset, referenceStr) {\n        offset += this.tokenIndex;\n\n        if (offset < this.tokenCount) {\n            return utils.cmpStr(\n                this.source,\n                this.offsetAndType[offset - 1] & OFFSET_MASK,\n                this.offsetAndType[offset] & OFFSET_MASK,\n                referenceStr\n            );\n        }\n\n        return false;\n    }\n    getTokenStart(tokenIndex) {\n        if (tokenIndex === this.tokenIndex) {\n            return this.tokenStart;\n        }\n\n        if (tokenIndex > 0) {\n            return tokenIndex < this.tokenCount\n                ? this.offsetAndType[tokenIndex - 1] & OFFSET_MASK\n                : this.offsetAndType[this.tokenCount] & OFFSET_MASK;\n        }\n\n        return this.firstCharOffset;\n    }\n    substrToCursor(start) {\n        return this.source.substring(start, this.tokenStart);\n    }\n\n    isBalanceEdge(pos) {\n        return this.balance[this.tokenIndex] < pos;\n        // return this.balance[this.balance[pos]] !== this.tokenIndex;\n    }\n    isDelim(code, offset) {\n        if (offset) {\n            return (\n                this.lookupType(offset) === types.Delim &&\n                this.source.charCodeAt(this.lookupOffset(offset)) === code\n            );\n        }\n\n        return (\n            this.tokenType === types.Delim &&\n            this.source.charCodeAt(this.tokenStart) === code\n        );\n    }\n\n    skip(tokenCount) {\n        let next = this.tokenIndex + tokenCount;\n\n        if (next < this.tokenCount) {\n            this.tokenIndex = next;\n            this.tokenStart = this.offsetAndType[next - 1] & OFFSET_MASK;\n            next = this.offsetAndType[next];\n            this.tokenType = next >> TYPE_SHIFT;\n            this.tokenEnd = next & OFFSET_MASK;\n        } else {\n            this.tokenIndex = this.tokenCount;\n            this.next();\n        }\n    }\n    next() {\n        let next = this.tokenIndex + 1;\n\n        if (next < this.tokenCount) {\n            this.tokenIndex = next;\n            this.tokenStart = this.tokenEnd;\n            next = this.offsetAndType[next];\n            this.tokenType = next >> TYPE_SHIFT;\n            this.tokenEnd = next & OFFSET_MASK;\n        } else {\n            this.eof = true;\n            this.tokenIndex = this.tokenCount;\n            this.tokenType = types.EOF;\n            this.tokenStart = this.tokenEnd = this.source.length;\n        }\n    }\n    skipSC() {\n        while (this.tokenType === types.WhiteSpace || this.tokenType === types.Comment) {\n            this.next();\n        }\n    }\n    skipUntilBalanced(startToken, stopConsume) {\n        let cursor = startToken;\n        let balanceEnd = 0;\n        let offset = 0;\n\n        loop:\n        for (; cursor < this.tokenCount; cursor++) {\n            balanceEnd = this.balance[cursor];\n\n            // stop scanning on balance edge that points to offset before start token\n            if (balanceEnd < startToken) {\n                break loop;\n            }\n\n            offset = cursor > 0 ? this.offsetAndType[cursor - 1] & OFFSET_MASK : this.firstCharOffset;\n\n            // check stop condition\n            switch (stopConsume(this.source.charCodeAt(offset))) {\n                case 1: // just stop\n                    break loop;\n\n                case 2: // stop & included\n                    cursor++;\n                    break loop;\n\n                default:\n                    // fast forward to the end of balanced block for an open block tokens\n                    if (isBlockOpenerToken(this.offsetAndType[cursor] >> TYPE_SHIFT)) {\n                        cursor = balanceEnd;\n                    }\n            }\n        }\n\n        this.skip(cursor - this.tokenIndex);\n    }\n\n    forEachToken(fn) {\n        for (let i = 0, offset = this.firstCharOffset; i < this.tokenCount; i++) {\n            const start = offset;\n            const item = this.offsetAndType[i];\n            const end = item & OFFSET_MASK;\n            const type = item >> TYPE_SHIFT;\n\n            offset = end;\n\n            fn(type, start, end, i);\n        }\n    }\n    dump() {\n        const tokens = new Array(this.tokenCount);\n\n        this.forEachToken((type, start, end, index) => {\n            tokens[index] = {\n                idx: index,\n                type: names[type],\n                chunk: this.source.substring(start, end),\n                balance: this.balance[index]\n            };\n        });\n\n        return tokens;\n    }\n}\n\nexports.TokenStream = TokenStream;\n","'use strict';\n\nconst types = require('./types.cjs');\nconst charCodeDefinitions = require('./char-code-definitions.cjs');\nconst utils = require('./utils.cjs');\nconst names = require('./names.cjs');\nconst OffsetToLocation = require('./OffsetToLocation.cjs');\nconst TokenStream = require('./TokenStream.cjs');\n\nfunction tokenize(source, onToken) {\n    function getCharCode(offset) {\n        return offset < sourceLength ? source.charCodeAt(offset) : 0;\n    }\n\n    // § 4.3.3. Consume a numeric token\n    function consumeNumericToken() {\n        // Consume a number and let number be the result.\n        offset = utils.consumeNumber(source, offset);\n\n        // If the next 3 input code points would start an identifier, then:\n        if (charCodeDefinitions.isIdentifierStart(getCharCode(offset), getCharCode(offset + 1), getCharCode(offset + 2))) {\n            // Create a <dimension-token> with the same value and type flag as number, and a unit set initially to the empty string.\n            // Consume a name. Set the <dimension-token>’s unit to the returned value.\n            // Return the <dimension-token>.\n            type = types.Dimension;\n            offset = utils.consumeName(source, offset);\n            return;\n        }\n\n        // Otherwise, if the next input code point is U+0025 PERCENTAGE SIGN (%), consume it.\n        if (getCharCode(offset) === 0x0025) {\n            // Create a <percentage-token> with the same value as number, and return it.\n            type = types.Percentage;\n            offset++;\n            return;\n        }\n\n        // Otherwise, create a <number-token> with the same value and type flag as number, and return it.\n        type = types.Number;\n    }\n\n    // § 4.3.4. Consume an ident-like token\n    function consumeIdentLikeToken() {\n        const nameStartOffset = offset;\n\n        // Consume a name, and let string be the result.\n        offset = utils.consumeName(source, offset);\n\n        // If string’s value is an ASCII case-insensitive match for \"url\",\n        // and the next input code point is U+0028 LEFT PARENTHESIS ((), consume it.\n        if (utils.cmpStr(source, nameStartOffset, offset, 'url') && getCharCode(offset) === 0x0028) {\n            // While the next two input code points are whitespace, consume the next input code point.\n            offset = utils.findWhiteSpaceEnd(source, offset + 1);\n\n            // If the next one or two input code points are U+0022 QUOTATION MARK (\"), U+0027 APOSTROPHE ('),\n            // or whitespace followed by U+0022 QUOTATION MARK (\") or U+0027 APOSTROPHE ('),\n            // then create a <function-token> with its value set to string and return it.\n            if (getCharCode(offset) === 0x0022 ||\n                getCharCode(offset) === 0x0027) {\n                type = types.Function;\n                offset = nameStartOffset + 4;\n                return;\n            }\n\n            // Otherwise, consume a url token, and return it.\n            consumeUrlToken();\n            return;\n        }\n\n        // Otherwise, if the next input code point is U+0028 LEFT PARENTHESIS ((), consume it.\n        // Create a <function-token> with its value set to string and return it.\n        if (getCharCode(offset) === 0x0028) {\n            type = types.Function;\n            offset++;\n            return;\n        }\n\n        // Otherwise, create an <ident-token> with its value set to string and return it.\n        type = types.Ident;\n    }\n\n    // § 4.3.5. Consume a string token\n    function consumeStringToken(endingCodePoint) {\n        // This algorithm may be called with an ending code point, which denotes the code point\n        // that ends the string. If an ending code point is not specified,\n        // the current input code point is used.\n        if (!endingCodePoint) {\n            endingCodePoint = getCharCode(offset++);\n        }\n\n        // Initially create a <string-token> with its value set to the empty string.\n        type = types.String;\n\n        // Repeatedly consume the next input code point from the stream:\n        for (; offset < source.length; offset++) {\n            const code = source.charCodeAt(offset);\n\n            switch (charCodeDefinitions.charCodeCategory(code)) {\n                // ending code point\n                case endingCodePoint:\n                    // Return the <string-token>.\n                    offset++;\n                    return;\n\n                    // EOF\n                    // case EofCategory:\n                    // This is a parse error. Return the <string-token>.\n                    // return;\n\n                // newline\n                case charCodeDefinitions.WhiteSpaceCategory:\n                    if (charCodeDefinitions.isNewline(code)) {\n                        // This is a parse error. Reconsume the current input code point,\n                        // create a <bad-string-token>, and return it.\n                        offset += utils.getNewlineLength(source, offset, code);\n                        type = types.BadString;\n                        return;\n                    }\n                    break;\n\n                // U+005C REVERSE SOLIDUS (\\)\n                case 0x005C:\n                    // If the next input code point is EOF, do nothing.\n                    if (offset === source.length - 1) {\n                        break;\n                    }\n\n                    const nextCode = getCharCode(offset + 1);\n\n                    // Otherwise, if the next input code point is a newline, consume it.\n                    if (charCodeDefinitions.isNewline(nextCode)) {\n                        offset += utils.getNewlineLength(source, offset + 1, nextCode);\n                    } else if (charCodeDefinitions.isValidEscape(code, nextCode)) {\n                        // Otherwise, (the stream starts with a valid escape) consume\n                        // an escaped code point and append the returned code point to\n                        // the <string-token>’s value.\n                        offset = utils.consumeEscaped(source, offset) - 1;\n                    }\n                    break;\n\n                // anything else\n                // Append the current input code point to the <string-token>’s value.\n            }\n        }\n    }\n\n    // § 4.3.6. Consume a url token\n    // Note: This algorithm assumes that the initial \"url(\" has already been consumed.\n    // This algorithm also assumes that it’s being called to consume an \"unquoted\" value, like url(foo).\n    // A quoted value, like url(\"foo\"), is parsed as a <function-token>. Consume an ident-like token\n    // automatically handles this distinction; this algorithm shouldn’t be called directly otherwise.\n    function consumeUrlToken() {\n        // Initially create a <url-token> with its value set to the empty string.\n        type = types.Url;\n\n        // Consume as much whitespace as possible.\n        offset = utils.findWhiteSpaceEnd(source, offset);\n\n        // Repeatedly consume the next input code point from the stream:\n        for (; offset < source.length; offset++) {\n            const code = source.charCodeAt(offset);\n\n            switch (charCodeDefinitions.charCodeCategory(code)) {\n                // U+0029 RIGHT PARENTHESIS ())\n                case 0x0029:\n                    // Return the <url-token>.\n                    offset++;\n                    return;\n\n                    // EOF\n                    // case EofCategory:\n                    // This is a parse error. Return the <url-token>.\n                    // return;\n\n                // whitespace\n                case charCodeDefinitions.WhiteSpaceCategory:\n                    // Consume as much whitespace as possible.\n                    offset = utils.findWhiteSpaceEnd(source, offset);\n\n                    // If the next input code point is U+0029 RIGHT PARENTHESIS ()) or EOF,\n                    // consume it and return the <url-token>\n                    // (if EOF was encountered, this is a parse error);\n                    if (getCharCode(offset) === 0x0029 || offset >= source.length) {\n                        if (offset < source.length) {\n                            offset++;\n                        }\n                        return;\n                    }\n\n                    // otherwise, consume the remnants of a bad url, create a <bad-url-token>,\n                    // and return it.\n                    offset = utils.consumeBadUrlRemnants(source, offset);\n                    type = types.BadUrl;\n                    return;\n\n                // U+0022 QUOTATION MARK (\")\n                // U+0027 APOSTROPHE (')\n                // U+0028 LEFT PARENTHESIS (()\n                // non-printable code point\n                case 0x0022:\n                case 0x0027:\n                case 0x0028:\n                case charCodeDefinitions.NonPrintableCategory:\n                    // This is a parse error. Consume the remnants of a bad url,\n                    // create a <bad-url-token>, and return it.\n                    offset = utils.consumeBadUrlRemnants(source, offset);\n                    type = types.BadUrl;\n                    return;\n\n                // U+005C REVERSE SOLIDUS (\\)\n                case 0x005C:\n                    // If the stream starts with a valid escape, consume an escaped code point and\n                    // append the returned code point to the <url-token>’s value.\n                    if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {\n                        offset = utils.consumeEscaped(source, offset) - 1;\n                        break;\n                    }\n\n                    // Otherwise, this is a parse error. Consume the remnants of a bad url,\n                    // create a <bad-url-token>, and return it.\n                    offset = utils.consumeBadUrlRemnants(source, offset);\n                    type = types.BadUrl;\n                    return;\n\n                // anything else\n                // Append the current input code point to the <url-token>’s value.\n            }\n        }\n    }\n\n    // ensure source is a string\n    source = String(source || '');\n\n    const sourceLength = source.length;\n    let start = charCodeDefinitions.isBOM(getCharCode(0));\n    let offset = start;\n    let type;\n\n    // https://drafts.csswg.org/css-syntax-3/#consume-token\n    // § 4.3.1. Consume a token\n    while (offset < sourceLength) {\n        const code = source.charCodeAt(offset);\n\n        switch (charCodeDefinitions.charCodeCategory(code)) {\n            // whitespace\n            case charCodeDefinitions.WhiteSpaceCategory:\n                // Consume as much whitespace as possible. Return a <whitespace-token>.\n                type = types.WhiteSpace;\n                offset = utils.findWhiteSpaceEnd(source, offset + 1);\n                break;\n\n            // U+0022 QUOTATION MARK (\")\n            case 0x0022:\n                // Consume a string token and return it.\n                consumeStringToken();\n                break;\n\n            // U+0023 NUMBER SIGN (#)\n            case 0x0023:\n                // If the next input code point is a name code point or the next two input code points are a valid escape, then:\n                if (charCodeDefinitions.isName(getCharCode(offset + 1)) || charCodeDefinitions.isValidEscape(getCharCode(offset + 1), getCharCode(offset + 2))) {\n                    // Create a <hash-token>.\n                    type = types.Hash;\n\n                    // If the next 3 input code points would start an identifier, set the <hash-token>’s type flag to \"id\".\n                    // if (isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {\n                    //     // TODO: set id flag\n                    // }\n\n                    // Consume a name, and set the <hash-token>’s value to the returned string.\n                    offset = utils.consumeName(source, offset + 1);\n\n                    // Return the <hash-token>.\n                } else {\n                    // Otherwise, return a <delim-token> with its value set to the current input code point.\n                    type = types.Delim;\n                    offset++;\n                }\n\n                break;\n\n            // U+0027 APOSTROPHE (')\n            case 0x0027:\n                // Consume a string token and return it.\n                consumeStringToken();\n                break;\n\n            // U+0028 LEFT PARENTHESIS (()\n            case 0x0028:\n                // Return a <(-token>.\n                type = types.LeftParenthesis;\n                offset++;\n                break;\n\n            // U+0029 RIGHT PARENTHESIS ())\n            case 0x0029:\n                // Return a <)-token>.\n                type = types.RightParenthesis;\n                offset++;\n                break;\n\n            // U+002B PLUS SIGN (+)\n            case 0x002B:\n                // If the input stream starts with a number, ...\n                if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n                    // ... reconsume the current input code point, consume a numeric token, and return it.\n                    consumeNumericToken();\n                } else {\n                    // Otherwise, return a <delim-token> with its value set to the current input code point.\n                    type = types.Delim;\n                    offset++;\n                }\n                break;\n\n            // U+002C COMMA (,)\n            case 0x002C:\n                // Return a <comma-token>.\n                type = types.Comma;\n                offset++;\n                break;\n\n            // U+002D HYPHEN-MINUS (-)\n            case 0x002D:\n                // If the input stream starts with a number, reconsume the current input code point, consume a numeric token, and return it.\n                if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n                    consumeNumericToken();\n                } else {\n                    // Otherwise, if the next 2 input code points are U+002D HYPHEN-MINUS U+003E GREATER-THAN SIGN (->), consume them and return a <CDC-token>.\n                    if (getCharCode(offset + 1) === 0x002D &&\n                        getCharCode(offset + 2) === 0x003E) {\n                        type = types.CDC;\n                        offset = offset + 3;\n                    } else {\n                        // Otherwise, if the input stream starts with an identifier, ...\n                        if (charCodeDefinitions.isIdentifierStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n                            // ... reconsume the current input code point, consume an ident-like token, and return it.\n                            consumeIdentLikeToken();\n                        } else {\n                            // Otherwise, return a <delim-token> with its value set to the current input code point.\n                            type = types.Delim;\n                            offset++;\n                        }\n                    }\n                }\n                break;\n\n            // U+002E FULL STOP (.)\n            case 0x002E:\n                // If the input stream starts with a number, ...\n                if (charCodeDefinitions.isNumberStart(code, getCharCode(offset + 1), getCharCode(offset + 2))) {\n                    // ... reconsume the current input code point, consume a numeric token, and return it.\n                    consumeNumericToken();\n                } else {\n                    // Otherwise, return a <delim-token> with its value set to the current input code point.\n                    type = types.Delim;\n                    offset++;\n                }\n\n                break;\n\n            // U+002F SOLIDUS (/)\n            case 0x002F:\n                // If the next two input code point are U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*),\n                if (getCharCode(offset + 1) === 0x002A) {\n                    // ... consume them and all following code points up to and including the first U+002A ASTERISK (*)\n                    // followed by a U+002F SOLIDUS (/), or up to an EOF code point.\n                    type = types.Comment;\n                    offset = source.indexOf('*/', offset + 2);\n                    offset = offset === -1 ? source.length : offset + 2;\n                } else {\n                    type = types.Delim;\n                    offset++;\n                }\n                break;\n\n            // U+003A COLON (:)\n            case 0x003A:\n                // Return a <colon-token>.\n                type = types.Colon;\n                offset++;\n                break;\n\n            // U+003B SEMICOLON (;)\n            case 0x003B:\n                // Return a <semicolon-token>.\n                type = types.Semicolon;\n                offset++;\n                break;\n\n            // U+003C LESS-THAN SIGN (<)\n            case 0x003C:\n                // If the next 3 input code points are U+0021 EXCLAMATION MARK U+002D HYPHEN-MINUS U+002D HYPHEN-MINUS (!--), ...\n                if (getCharCode(offset + 1) === 0x0021 &&\n                    getCharCode(offset + 2) === 0x002D &&\n                    getCharCode(offset + 3) === 0x002D) {\n                    // ... consume them and return a <CDO-token>.\n                    type = types.CDO;\n                    offset = offset + 4;\n                } else {\n                    // Otherwise, return a <delim-token> with its value set to the current input code point.\n                    type = types.Delim;\n                    offset++;\n                }\n\n                break;\n\n            // U+0040 COMMERCIAL AT (@)\n            case 0x0040:\n                // If the next 3 input code points would start an identifier, ...\n                if (charCodeDefinitions.isIdentifierStart(getCharCode(offset + 1), getCharCode(offset + 2), getCharCode(offset + 3))) {\n                    // ... consume a name, create an <at-keyword-token> with its value set to the returned value, and return it.\n                    type = types.AtKeyword;\n                    offset = utils.consumeName(source, offset + 1);\n                } else {\n                    // Otherwise, return a <delim-token> with its value set to the current input code point.\n                    type = types.Delim;\n                    offset++;\n                }\n\n                break;\n\n            // U+005B LEFT SQUARE BRACKET ([)\n            case 0x005B:\n                // Return a <[-token>.\n                type = types.LeftSquareBracket;\n                offset++;\n                break;\n\n            // U+005C REVERSE SOLIDUS (\\)\n            case 0x005C:\n                // If the input stream starts with a valid escape, ...\n                if (charCodeDefinitions.isValidEscape(code, getCharCode(offset + 1))) {\n                    // ... reconsume the current input code point, consume an ident-like token, and return it.\n                    consumeIdentLikeToken();\n                } else {\n                    // Otherwise, this is a parse error. Return a <delim-token> with its value set to the current input code point.\n                    type = types.Delim;\n                    offset++;\n                }\n                break;\n\n            // U+005D RIGHT SQUARE BRACKET (])\n            case 0x005D:\n                // Return a <]-token>.\n                type = types.RightSquareBracket;\n                offset++;\n                break;\n\n            // U+007B LEFT CURLY BRACKET ({)\n            case 0x007B:\n                // Return a <{-token>.\n                type = types.LeftCurlyBracket;\n                offset++;\n                break;\n\n            // U+007D RIGHT CURLY BRACKET (})\n            case 0x007D:\n                // Return a <}-token>.\n                type = types.RightCurlyBracket;\n                offset++;\n                break;\n\n            // digit\n            case charCodeDefinitions.DigitCategory:\n                // Reconsume the current input code point, consume a numeric token, and return it.\n                consumeNumericToken();\n                break;\n\n            // name-start code point\n            case charCodeDefinitions.NameStartCategory:\n                // Reconsume the current input code point, consume an ident-like token, and return it.\n                consumeIdentLikeToken();\n                break;\n\n                // EOF\n                // case EofCategory:\n                // Return an <EOF-token>.\n                // break;\n\n            // anything else\n            default:\n                // Return a <delim-token> with its value set to the current input code point.\n                type = types.Delim;\n                offset++;\n        }\n\n        // put token to stream\n        onToken(type, start, start = offset);\n    }\n}\n\nexports.AtKeyword = types.AtKeyword;\nexports.BadString = types.BadString;\nexports.BadUrl = types.BadUrl;\nexports.CDC = types.CDC;\nexports.CDO = types.CDO;\nexports.Colon = types.Colon;\nexports.Comma = types.Comma;\nexports.Comment = types.Comment;\nexports.Delim = types.Delim;\nexports.Dimension = types.Dimension;\nexports.EOF = types.EOF;\nexports.Function = types.Function;\nexports.Hash = types.Hash;\nexports.Ident = types.Ident;\nexports.LeftCurlyBracket = types.LeftCurlyBracket;\nexports.LeftParenthesis = types.LeftParenthesis;\nexports.LeftSquareBracket = types.LeftSquareBracket;\nexports.Number = types.Number;\nexports.Percentage = types.Percentage;\nexports.RightCurlyBracket = types.RightCurlyBracket;\nexports.RightParenthesis = types.RightParenthesis;\nexports.RightSquareBracket = types.RightSquareBracket;\nexports.Semicolon = types.Semicolon;\nexports.String = types.String;\nexports.Url = types.Url;\nexports.WhiteSpace = types.WhiteSpace;\nexports.tokenTypes = types;\nexports.DigitCategory = charCodeDefinitions.DigitCategory;\nexports.EofCategory = charCodeDefinitions.EofCategory;\nexports.NameStartCategory = charCodeDefinitions.NameStartCategory;\nexports.NonPrintableCategory = charCodeDefinitions.NonPrintableCategory;\nexports.WhiteSpaceCategory = charCodeDefinitions.WhiteSpaceCategory;\nexports.charCodeCategory = charCodeDefinitions.charCodeCategory;\nexports.isBOM = charCodeDefinitions.isBOM;\nexports.isDigit = charCodeDefinitions.isDigit;\nexports.isHexDigit = charCodeDefinitions.isHexDigit;\nexports.isIdentifierStart = charCodeDefinitions.isIdentifierStart;\nexports.isLetter = charCodeDefinitions.isLetter;\nexports.isLowercaseLetter = charCodeDefinitions.isLowercaseLetter;\nexports.isName = charCodeDefinitions.isName;\nexports.isNameStart = charCodeDefinitions.isNameStart;\nexports.isNewline = charCodeDefinitions.isNewline;\nexports.isNonAscii = charCodeDefinitions.isNonAscii;\nexports.isNonPrintable = charCodeDefinitions.isNonPrintable;\nexports.isNumberStart = charCodeDefinitions.isNumberStart;\nexports.isUppercaseLetter = charCodeDefinitions.isUppercaseLetter;\nexports.isValidEscape = charCodeDefinitions.isValidEscape;\nexports.isWhiteSpace = charCodeDefinitions.isWhiteSpace;\nexports.cmpChar = utils.cmpChar;\nexports.cmpStr = utils.cmpStr;\nexports.consumeBadUrlRemnants = utils.consumeBadUrlRemnants;\nexports.consumeEscaped = utils.consumeEscaped;\nexports.consumeName = utils.consumeName;\nexports.consumeNumber = utils.consumeNumber;\nexports.decodeEscaped = utils.decodeEscaped;\nexports.findDecimalNumberEnd = utils.findDecimalNumberEnd;\nexports.findWhiteSpaceEnd = utils.findWhiteSpaceEnd;\nexports.findWhiteSpaceStart = utils.findWhiteSpaceStart;\nexports.getNewlineLength = utils.getNewlineLength;\nexports.tokenNames = names;\nexports.OffsetToLocation = OffsetToLocation.OffsetToLocation;\nexports.TokenStream = TokenStream.TokenStream;\nexports.tokenize = tokenize;\n","'use strict';\n\n//\n//                              list\n//                            ┌──────┐\n//             ┌──────────────┼─head │\n//             │              │ tail─┼──────────────┐\n//             │              └──────┘              │\n//             ▼                                    ▼\n//            item        item        item        item\n//          ┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐\n//  null ◀──┼─prev │◀───┼─prev │◀───┼─prev │◀───┼─prev │\n//          │ next─┼───▶│ next─┼───▶│ next─┼───▶│ next─┼──▶ null\n//          ├──────┤    ├──────┤    ├──────┤    ├──────┤\n//          │ data │    │ data │    │ data │    │ data │\n//          └──────┘    └──────┘    └──────┘    └──────┘\n//\n\nlet releasedCursors = null;\n\nclass List {\n    static createItem(data) {\n        return {\n            prev: null,\n            next: null,\n            data\n        };\n    }\n\n    constructor() {\n        this.head = null;\n        this.tail = null;\n        this.cursor = null;\n    }\n    createItem(data) {\n        return List.createItem(data);\n    }\n\n    // cursor helpers\n    allocateCursor(prev, next) {\n        let cursor;\n\n        if (releasedCursors !== null) {\n            cursor = releasedCursors;\n            releasedCursors = releasedCursors.cursor;\n            cursor.prev = prev;\n            cursor.next = next;\n            cursor.cursor = this.cursor;\n        } else {\n            cursor = {\n                prev,\n                next,\n                cursor: this.cursor\n            };\n        }\n\n        this.cursor = cursor;\n\n        return cursor;\n    }\n    releaseCursor() {\n        const { cursor } = this;\n\n        this.cursor = cursor.cursor;\n        cursor.prev = null;\n        cursor.next = null;\n        cursor.cursor = releasedCursors;\n        releasedCursors = cursor;\n    }\n    updateCursors(prevOld, prevNew, nextOld, nextNew) {\n        let { cursor } = this;\n\n        while (cursor !== null) {\n            if (cursor.prev === prevOld) {\n                cursor.prev = prevNew;\n            }\n\n            if (cursor.next === nextOld) {\n                cursor.next = nextNew;\n            }\n\n            cursor = cursor.cursor;\n        }\n    }\n    *[Symbol.iterator]() {\n        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n            yield cursor.data;\n        }\n    }\n\n    // getters\n    get size() {\n        let size = 0;\n\n        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n            size++;\n        }\n\n        return size;\n    }\n    get isEmpty() {\n        return this.head === null;\n    }\n    get first() {\n        return this.head && this.head.data;\n    }\n    get last() {\n        return this.tail && this.tail.data;\n    }\n\n    // convertors\n    fromArray(array) {\n        let cursor = null;\n        this.head = null;\n\n        for (let data of array) {\n            const item = List.createItem(data);\n\n            if (cursor !== null) {\n                cursor.next = item;\n            } else {\n                this.head = item;\n            }\n\n            item.prev = cursor;\n            cursor = item;\n        }\n\n        this.tail = cursor;\n        return this;\n    }\n    toArray() {\n        return [...this];\n    }\n    toJSON() {\n        return [...this];\n    }\n\n    // array-like methods\n    forEach(fn, thisArg = this) {\n        // push cursor\n        const cursor = this.allocateCursor(null, this.head);\n\n        while (cursor.next !== null) {\n            const item = cursor.next;\n            cursor.next = item.next;\n            fn.call(thisArg, item.data, item, this);\n        }\n\n        // pop cursor\n        this.releaseCursor();\n    }\n    forEachRight(fn, thisArg = this) {\n        // push cursor\n        const cursor = this.allocateCursor(this.tail, null);\n\n        while (cursor.prev !== null) {\n            const item = cursor.prev;\n            cursor.prev = item.prev;\n            fn.call(thisArg, item.data, item, this);\n        }\n\n        // pop cursor\n        this.releaseCursor();\n    }\n    reduce(fn, initialValue, thisArg = this) {\n        // push cursor\n        let cursor = this.allocateCursor(null, this.head);\n        let acc = initialValue;\n        let item;\n\n        while (cursor.next !== null) {\n            item = cursor.next;\n            cursor.next = item.next;\n\n            acc = fn.call(thisArg, acc, item.data, item, this);\n        }\n\n        // pop cursor\n        this.releaseCursor();\n\n        return acc;\n    }\n    reduceRight(fn, initialValue, thisArg = this) {\n        // push cursor\n        let cursor = this.allocateCursor(this.tail, null);\n        let acc = initialValue;\n        let item;\n\n        while (cursor.prev !== null) {\n            item = cursor.prev;\n            cursor.prev = item.prev;\n\n            acc = fn.call(thisArg, acc, item.data, item, this);\n        }\n\n        // pop cursor\n        this.releaseCursor();\n\n        return acc;\n    }\n    some(fn, thisArg = this) {\n        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n            if (fn.call(thisArg, cursor.data, cursor, this)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n    map(fn, thisArg = this) {\n        const result = new List();\n\n        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n            result.appendData(fn.call(thisArg, cursor.data, cursor, this));\n        }\n\n        return result;\n    }\n    filter(fn, thisArg = this) {\n        const result = new List();\n\n        for (let cursor = this.head; cursor !== null; cursor = cursor.next) {\n            if (fn.call(thisArg, cursor.data, cursor, this)) {\n                result.appendData(cursor.data);\n            }\n        }\n\n        return result;\n    }\n\n    nextUntil(start, fn, thisArg = this) {\n        if (start === null) {\n            return;\n        }\n\n        // push cursor\n        const cursor = this.allocateCursor(null, start);\n\n        while (cursor.next !== null) {\n            const item = cursor.next;\n            cursor.next = item.next;\n            if (fn.call(thisArg, item.data, item, this)) {\n                break;\n            }\n        }\n\n        // pop cursor\n        this.releaseCursor();\n    }\n    prevUntil(start, fn, thisArg = this) {\n        if (start === null) {\n            return;\n        }\n\n        // push cursor\n        const cursor = this.allocateCursor(start, null);\n\n        while (cursor.prev !== null) {\n            const item = cursor.prev;\n            cursor.prev = item.prev;\n            if (fn.call(thisArg, item.data, item, this)) {\n                break;\n            }\n        }\n\n        // pop cursor\n        this.releaseCursor();\n    }\n\n    // mutation\n    clear() {\n        this.head = null;\n        this.tail = null;\n    }\n    copy() {\n        const result = new List();\n\n        for (let data of this) {\n            result.appendData(data);\n        }\n\n        return result;\n    }\n    prepend(item) {\n        //      head\n        //    ^\n        // item\n        this.updateCursors(null, item, this.head, item);\n\n        // insert to the beginning of the list\n        if (this.head !== null) {\n            // new item <- first item\n            this.head.prev = item;\n            // new item -> first item\n            item.next = this.head;\n        } else {\n            // if list has no head, then it also has no tail\n            // in this case tail points to the new item\n            this.tail = item;\n        }\n\n        // head always points to new item\n        this.head = item;\n        return this;\n    }\n    prependData(data) {\n        return this.prepend(List.createItem(data));\n    }\n    append(item) {\n        return this.insert(item);\n    }\n    appendData(data) {\n        return this.insert(List.createItem(data));\n    }\n    insert(item, before = null) {\n        if (before !== null) {\n            // prev   before\n            //      ^\n            //     item\n            this.updateCursors(before.prev, item, before, item);\n\n            if (before.prev === null) {\n                // insert to the beginning of list\n                if (this.head !== before) {\n                    throw new Error('before doesn\\'t belong to list');\n                }\n                // since head points to before therefore list doesn't empty\n                // no need to check tail\n                this.head = item;\n                before.prev = item;\n                item.next = before;\n                this.updateCursors(null, item);\n            } else {\n                // insert between two items\n                before.prev.next = item;\n                item.prev = before.prev;\n                before.prev = item;\n                item.next = before;\n            }\n        } else {\n            // tail\n            //      ^\n            //      item\n            this.updateCursors(this.tail, item, null, item);\n\n            // insert to the ending of the list\n            if (this.tail !== null) {\n                // last item -> new item\n                this.tail.next = item;\n                // last item <- new item\n                item.prev = this.tail;\n            } else {\n                // if list has no tail, then it also has no head\n                // in this case head points to new item\n                this.head = item;\n            }\n\n            // tail always points to new item\n            this.tail = item;\n        }\n\n        return this;\n    }\n    insertData(data, before) {\n        return this.insert(List.createItem(data), before);\n    }\n    remove(item) {\n        //      item\n        //       ^\n        // prev     next\n        this.updateCursors(item, item.prev, item, item.next);\n\n        if (item.prev !== null) {\n            item.prev.next = item.next;\n        } else {\n            if (this.head !== item) {\n                throw new Error('item doesn\\'t belong to list');\n            }\n\n            this.head = item.next;\n        }\n\n        if (item.next !== null) {\n            item.next.prev = item.prev;\n        } else {\n            if (this.tail !== item) {\n                throw new Error('item doesn\\'t belong to list');\n            }\n\n            this.tail = item.prev;\n        }\n\n        item.prev = null;\n        item.next = null;\n\n        return item;\n    }\n    push(data) {\n        this.insert(List.createItem(data));\n    }\n    pop() {\n        return this.tail !== null ? this.remove(this.tail) : null;\n    }\n    unshift(data) {\n        this.prepend(List.createItem(data));\n    }\n    shift() {\n        return this.head !== null ? this.remove(this.head) : null;\n    }\n    prependList(list) {\n        return this.insertList(list, this.head);\n    }\n    appendList(list) {\n        return this.insertList(list);\n    }\n    insertList(list, before) {\n        // ignore empty lists\n        if (list.head === null) {\n            return this;\n        }\n\n        if (before !== undefined && before !== null) {\n            this.updateCursors(before.prev, list.tail, before, list.head);\n\n            // insert in the middle of dist list\n            if (before.prev !== null) {\n                // before.prev <-> list.head\n                before.prev.next = list.head;\n                list.head.prev = before.prev;\n            } else {\n                this.head = list.head;\n            }\n\n            before.prev = list.tail;\n            list.tail.next = before;\n        } else {\n            this.updateCursors(this.tail, list.tail, null, list.head);\n\n            // insert to end of the list\n            if (this.tail !== null) {\n                // if destination list has a tail, then it also has a head,\n                // but head doesn't change\n                // dest tail -> source head\n                this.tail.next = list.head;\n                // dest tail <- source head\n                list.head.prev = this.tail;\n            } else {\n                // if list has no a tail, then it also has no a head\n                // in this case points head to new item\n                this.head = list.head;\n            }\n\n            // tail always start point to new item\n            this.tail = list.tail;\n        }\n\n        list.head = null;\n        list.tail = null;\n        return this;\n    }\n    replace(oldItem, newItemOrList) {\n        if ('head' in newItemOrList) {\n            this.insertList(newItemOrList, oldItem);\n        } else {\n            this.insert(newItemOrList, oldItem);\n        }\n\n        this.remove(oldItem);\n    }\n}\n\nexports.List = List;\n","'use strict';\n\nfunction createCustomError(name, message) {\n    // use Object.create(), because some VMs prevent setting line/column otherwise\n    // (iOS Safari 10 even throws an exception)\n    const error = Object.create(SyntaxError.prototype);\n    const errorStack = new Error();\n\n    return Object.assign(error, {\n        name,\n        message,\n        get stack() {\n            return (errorStack.stack || '').replace(/^(.+\\n){1,3}/, `${name}: ${message}\\n`);\n        }\n    });\n}\n\nexports.createCustomError = createCustomError;\n","'use strict';\n\nconst createCustomError = require('../utils/create-custom-error.cjs');\n\nconst MAX_LINE_LENGTH = 100;\nconst OFFSET_CORRECTION = 60;\nconst TAB_REPLACEMENT = '    ';\n\nfunction sourceFragment({ source, line, column, baseLine, baseColumn }, extraLines) {\n    function processLines(start, end) {\n        return lines\n            .slice(start, end)\n            .map((line, idx) =>\n                String(start + idx + 1).padStart(maxNumLength) + ' |' + line\n            ).join('\\n');\n    }\n\n    const prelines = '\\n'.repeat(Math.max(baseLine - 1, 0));\n    const precolumns = ' '.repeat(Math.max(baseColumn - 1, 0));\n    const lines = (prelines + precolumns + source).split(/\\r\\n?|\\n|\\f/);\n    const startLine = Math.max(1, line - extraLines) - 1;\n    const endLine = Math.min(line + extraLines, lines.length + 1);\n    const maxNumLength = Math.max(4, String(endLine).length) + 1;\n    let cutLeft = 0;\n\n    // column correction according to replaced tab before column\n    column += (TAB_REPLACEMENT.length - 1) * (lines[line - 1].substr(0, column - 1).match(/\\t/g) || []).length;\n\n    if (column > MAX_LINE_LENGTH) {\n        cutLeft = column - OFFSET_CORRECTION + 3;\n        column = OFFSET_CORRECTION - 2;\n    }\n\n    for (let i = startLine; i <= endLine; i++) {\n        if (i >= 0 && i < lines.length) {\n            lines[i] = lines[i].replace(/\\t/g, TAB_REPLACEMENT);\n            lines[i] =\n                (cutLeft > 0 && lines[i].length > cutLeft ? '\\u2026' : '') +\n                lines[i].substr(cutLeft, MAX_LINE_LENGTH - 2) +\n                (lines[i].length > cutLeft + MAX_LINE_LENGTH - 1 ? '\\u2026' : '');\n        }\n    }\n\n    return [\n        processLines(startLine, line),\n        new Array(column + maxNumLength + 2).join('-') + '^',\n        processLines(line, endLine)\n    ].filter(Boolean)\n        .join('\\n')\n        .replace(/^(\\s+\\d+\\s+\\|\\n)+/, '')\n        .replace(/\\n(\\s+\\d+\\s+\\|)+$/, '');\n}\n\nfunction SyntaxError(message, source, offset, line, column, baseLine = 1, baseColumn = 1) {\n    const error = Object.assign(createCustomError.createCustomError('SyntaxError', message), {\n        source,\n        offset,\n        line,\n        column,\n        sourceFragment(extraLines) {\n            return sourceFragment({ source, line, column, baseLine, baseColumn }, isNaN(extraLines) ? 0 : extraLines);\n        },\n        get formattedMessage() {\n            return (\n                `Parse error: ${message}\\n` +\n                sourceFragment({ source, line, column, baseLine, baseColumn }, 2)\n            );\n        }\n    });\n\n    return error;\n}\n\nexports.SyntaxError = SyntaxError;\n","'use strict';\n\nconst types = require('../tokenizer/types.cjs');\n\nfunction readSequence(recognizer) {\n    const children = this.createList();\n    let space = false;\n    const context = {\n        recognizer\n    };\n\n    while (!this.eof) {\n        switch (this.tokenType) {\n            case types.Comment:\n                this.next();\n                continue;\n\n            case types.WhiteSpace:\n                space = true;\n                this.next();\n                continue;\n        }\n\n        let child = recognizer.getNode.call(this, context);\n\n        if (child === undefined) {\n            break;\n        }\n\n        if (space) {\n            if (recognizer.onWhiteSpace) {\n                recognizer.onWhiteSpace.call(this, child, children, context);\n            }\n            space = false;\n        }\n\n        children.push(child);\n    }\n\n    if (space && recognizer.onWhiteSpace) {\n        recognizer.onWhiteSpace.call(this, null, children, context);\n    }\n\n    return children;\n}\n\nexports.readSequence = readSequence;\n","'use strict';\n\nconst List = require('../utils/List.cjs');\nconst SyntaxError = require('./SyntaxError.cjs');\nconst index = require('../tokenizer/index.cjs');\nconst sequence = require('./sequence.cjs');\nconst OffsetToLocation = require('../tokenizer/OffsetToLocation.cjs');\nconst TokenStream = require('../tokenizer/TokenStream.cjs');\nconst utils = require('../tokenizer/utils.cjs');\nconst types = require('../tokenizer/types.cjs');\nconst names = require('../tokenizer/names.cjs');\n\nconst NOOP = () => {};\nconst EXCLAMATIONMARK = 0x0021;  // U+0021 EXCLAMATION MARK (!)\nconst NUMBERSIGN = 0x0023;       // U+0023 NUMBER SIGN (#)\nconst SEMICOLON = 0x003B;        // U+003B SEMICOLON (;)\nconst LEFTCURLYBRACKET = 0x007B; // U+007B LEFT CURLY BRACKET ({)\nconst NULL = 0;\n\nfunction createParseContext(name) {\n    return function() {\n        return this[name]();\n    };\n}\n\nfunction fetchParseValues(dict) {\n    const result = Object.create(null);\n\n    for (const name of Object.keys(dict)) {\n        const item = dict[name];\n        const fn = item.parse || item;\n\n        if (fn) {\n            result[name] = fn;\n        }\n    }\n\n    return result;\n}\n\nfunction processConfig(config) {\n    const parseConfig = {\n        context: Object.create(null),\n        features: Object.assign(Object.create(null), config.features),\n        scope: Object.assign(Object.create(null), config.scope),\n        atrule: fetchParseValues(config.atrule),\n        pseudo: fetchParseValues(config.pseudo),\n        node: fetchParseValues(config.node)\n    };\n\n    for (const [name, context] of Object.entries(config.parseContext)) {\n        switch (typeof context) {\n            case 'function':\n                parseConfig.context[name] = context;\n                break;\n\n            case 'string':\n                parseConfig.context[name] = createParseContext(context);\n                break;\n        }\n    }\n\n    return {\n        config: parseConfig,\n        ...parseConfig,\n        ...parseConfig.node\n    };\n}\n\nfunction createParser(config) {\n    let source = '';\n    let filename = '<unknown>';\n    let needPositions = false;\n    let onParseError = NOOP;\n    let onParseErrorThrow = false;\n\n    const locationMap = new OffsetToLocation.OffsetToLocation();\n    const parser = Object.assign(new TokenStream.TokenStream(), processConfig(config || {}), {\n        parseAtrulePrelude: true,\n        parseRulePrelude: true,\n        parseValue: true,\n        parseCustomProperty: false,\n\n        readSequence: sequence.readSequence,\n\n        consumeUntilBalanceEnd: () => 0,\n        consumeUntilLeftCurlyBracket(code) {\n            return code === LEFTCURLYBRACKET ? 1 : 0;\n        },\n        consumeUntilLeftCurlyBracketOrSemicolon(code) {\n            return code === LEFTCURLYBRACKET || code === SEMICOLON ? 1 : 0;\n        },\n        consumeUntilExclamationMarkOrSemicolon(code) {\n            return code === EXCLAMATIONMARK || code === SEMICOLON ? 1 : 0;\n        },\n        consumeUntilSemicolonIncluded(code) {\n            return code === SEMICOLON ? 2 : 0;\n        },\n\n        createList() {\n            return new List.List();\n        },\n        createSingleNodeList(node) {\n            return new List.List().appendData(node);\n        },\n        getFirstListNode(list) {\n            return list && list.first;\n        },\n        getLastListNode(list) {\n            return list && list.last;\n        },\n\n        parseWithFallback(consumer, fallback) {\n            const startIndex = this.tokenIndex;\n\n            try {\n                return consumer.call(this);\n            } catch (e) {\n                if (onParseErrorThrow) {\n                    throw e;\n                }\n\n                this.skip(startIndex - this.tokenIndex);\n                const fallbackNode = fallback.call(this);\n\n                onParseErrorThrow = true;\n                onParseError(e, fallbackNode);\n                onParseErrorThrow = false;\n\n                return fallbackNode;\n            }\n        },\n\n        lookupNonWSType(offset) {\n            let type;\n\n            do {\n                type = this.lookupType(offset++);\n                if (type !== types.WhiteSpace && type !== types.Comment) {\n                    return type;\n                }\n            } while (type !== NULL);\n\n            return NULL;\n        },\n\n        charCodeAt(offset) {\n            return offset >= 0 && offset < source.length ? source.charCodeAt(offset) : 0;\n        },\n        substring(offsetStart, offsetEnd) {\n            return source.substring(offsetStart, offsetEnd);\n        },\n        substrToCursor(start) {\n            return this.source.substring(start, this.tokenStart);\n        },\n\n        cmpChar(offset, charCode) {\n            return utils.cmpChar(source, offset, charCode);\n        },\n        cmpStr(offsetStart, offsetEnd, str) {\n            return utils.cmpStr(source, offsetStart, offsetEnd, str);\n        },\n\n        consume(tokenType) {\n            const start = this.tokenStart;\n\n            this.eat(tokenType);\n\n            return this.substrToCursor(start);\n        },\n        consumeFunctionName() {\n            const name = source.substring(this.tokenStart, this.tokenEnd - 1);\n\n            this.eat(types.Function);\n\n            return name;\n        },\n        consumeNumber(type) {\n            const number = source.substring(this.tokenStart, utils.consumeNumber(source, this.tokenStart));\n\n            this.eat(type);\n\n            return number;\n        },\n\n        eat(tokenType) {\n            if (this.tokenType !== tokenType) {\n                const tokenName = names[tokenType].slice(0, -6).replace(/-/g, ' ').replace(/^./, m => m.toUpperCase());\n                let message = `${/[[\\](){}]/.test(tokenName) ? `\"${tokenName}\"` : tokenName} is expected`;\n                let offset = this.tokenStart;\n\n                // tweak message and offset\n                switch (tokenType) {\n                    case types.Ident:\n                        // when identifier is expected but there is a function or url\n                        if (this.tokenType === types.Function || this.tokenType === types.Url) {\n                            offset = this.tokenEnd - 1;\n                            message = 'Identifier is expected but function found';\n                        } else {\n                            message = 'Identifier is expected';\n                        }\n                        break;\n\n                    case types.Hash:\n                        if (this.isDelim(NUMBERSIGN)) {\n                            this.next();\n                            offset++;\n                            message = 'Name is expected';\n                        }\n                        break;\n\n                    case types.Percentage:\n                        if (this.tokenType === types.Number) {\n                            offset = this.tokenEnd;\n                            message = 'Percent sign is expected';\n                        }\n                        break;\n                }\n\n                this.error(message, offset);\n            }\n\n            this.next();\n        },\n        eatIdent(name) {\n            if (this.tokenType !== types.Ident || this.lookupValue(0, name) === false) {\n                this.error(`Identifier \"${name}\" is expected`);\n            }\n\n            this.next();\n        },\n        eatDelim(code) {\n            if (!this.isDelim(code)) {\n                this.error(`Delim \"${String.fromCharCode(code)}\" is expected`);\n            }\n\n            this.next();\n        },\n\n        getLocation(start, end) {\n            if (needPositions) {\n                return locationMap.getLocationRange(\n                    start,\n                    end,\n                    filename\n                );\n            }\n\n            return null;\n        },\n        getLocationFromList(list) {\n            if (needPositions) {\n                const head = this.getFirstListNode(list);\n                const tail = this.getLastListNode(list);\n                return locationMap.getLocationRange(\n                    head !== null ? head.loc.start.offset - locationMap.startOffset : this.tokenStart,\n                    tail !== null ? tail.loc.end.offset - locationMap.startOffset : this.tokenStart,\n                    filename\n                );\n            }\n\n            return null;\n        },\n\n        error(message, offset) {\n            const location = typeof offset !== 'undefined' && offset < source.length\n                ? locationMap.getLocation(offset)\n                : this.eof\n                    ? locationMap.getLocation(utils.findWhiteSpaceStart(source, source.length - 1))\n                    : locationMap.getLocation(this.tokenStart);\n\n            throw new SyntaxError.SyntaxError(\n                message || 'Unexpected input',\n                source,\n                location.offset,\n                location.line,\n                location.column,\n                locationMap.startLine,\n                locationMap.startColumn\n            );\n        }\n    });\n\n    const parse = function(source_, options) {\n        source = source_;\n        options = options || {};\n\n        parser.setSource(source, index.tokenize);\n        locationMap.setSource(\n            source,\n            options.offset,\n            options.line,\n            options.column\n        );\n\n        filename = options.filename || '<unknown>';\n        needPositions = Boolean(options.positions);\n        onParseError = typeof options.onParseError === 'function' ? options.onParseError : NOOP;\n        onParseErrorThrow = false;\n\n        parser.parseAtrulePrelude = 'parseAtrulePrelude' in options ? Boolean(options.parseAtrulePrelude) : true;\n        parser.parseRulePrelude = 'parseRulePrelude' in options ? Boolean(options.parseRulePrelude) : true;\n        parser.parseValue = 'parseValue' in options ? Boolean(options.parseValue) : true;\n        parser.parseCustomProperty = 'parseCustomProperty' in options ? Boolean(options.parseCustomProperty) : false;\n\n        const { context = 'default', onComment } = options;\n\n        if (context in parser.context === false) {\n            throw new Error('Unknown context `' + context + '`');\n        }\n\n        if (typeof onComment === 'function') {\n            parser.forEachToken((type, start, end) => {\n                if (type === types.Comment) {\n                    const loc = parser.getLocation(start, end);\n                    const value = utils.cmpStr(source, end - 2, end, '*/')\n                        ? source.slice(start + 2, end - 2)\n                        : source.slice(start + 2, end);\n\n                    onComment(value, loc);\n                }\n            });\n        }\n\n        const ast = parser.context[context].call(parser, options);\n\n        if (!parser.eof) {\n            parser.error();\n        }\n\n        return ast;\n    };\n\n    return Object.assign(parse, {\n        SyntaxError: SyntaxError.SyntaxError,\n        config: parser.config\n    });\n}\n\nexports.createParser = createParser;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\nvar MAX_CACHED_INPUTS = 32;\n\n/**\n * Takes some function `f(input) -> result` and returns a memoized version of\n * `f`.\n *\n * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The\n * memoization is a dumb-simple, linear least-recently-used cache.\n */\nfunction lruMemoize(f) {\n  var cache = [];\n\n  return function(input) {\n    for (var i = 0; i < cache.length; i++) {\n      if (cache[i].input === input) {\n        var temp = cache[0];\n        cache[0] = cache[i];\n        cache[i] = temp;\n        return cache[0].result;\n      }\n    }\n\n    var result = f(input);\n\n    cache.unshift({\n      input,\n      result,\n    });\n\n    if (cache.length > MAX_CACHED_INPUTS) {\n      cache.pop();\n    }\n\n    return result;\n  };\n}\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nvar normalize = lruMemoize(function normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n  // Split the path into parts between `/` characters. This is much faster than\n  // using `.split(/\\/+/g)`.\n  var parts = [];\n  var start = 0;\n  var i = 0;\n  while (true) {\n    start = i;\n    i = path.indexOf(\"/\", start);\n    if (i === -1) {\n      parts.push(path.slice(start));\n      break;\n    } else {\n      parts.push(path.slice(start, i));\n      while (i < path.length && path[i] === \"/\") {\n        i++;\n      }\n    }\n  }\n\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n});\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\nfunction compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n  return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n  sourceURL = sourceURL || '';\n\n  if (sourceRoot) {\n    // This follows what Chrome does.\n    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n      sourceRoot += '/';\n    }\n    // The spec says:\n    //   Line 4: An optional source root, useful for relocating source\n    //   files on a server or removing repeated values in the\n    //   “sources” entry.  This value is prepended to the individual\n    //   entries in the “source” field.\n    sourceURL = sourceRoot + sourceURL;\n  }\n\n  // Historically, SourceMapConsumer did not take the sourceMapURL as\n  // a parameter.  This mode is still somewhat supported, which is why\n  // this code block is conditional.  However, it's preferable to pass\n  // the source map URL to SourceMapConsumer, so that this function\n  // can implement the source URL resolution algorithm as outlined in\n  // the spec.  This block is basically the equivalent of:\n  //    new URL(sourceURL, sourceMapURL).toString()\n  // ... except it avoids using URL, which wasn't available in the\n  // older releases of node still supported by this library.\n  //\n  // The spec says:\n  //   If the sources are not absolute URLs after prepending of the\n  //   “sourceRoot”, the sources are resolved relative to the\n  //   SourceMap (like resolving script src in a html document).\n  if (sourceMapURL) {\n    var parsed = urlParse(sourceMapURL);\n    if (!parsed) {\n      throw new Error(\"sourceMapURL could not be parsed\");\n    }\n    if (parsed.path) {\n      // Strip the last path component, but keep the \"/\".\n      var index = parsed.path.lastIndexOf('/');\n      if (index >= 0) {\n        parsed.path = parsed.path.substring(0, index + 1);\n      }\n    }\n    sourceURL = join(urlGenerate(parsed), sourceURL);\n  }\n\n  return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    if (hasNativeMap) {\n      this._set.set(aStr, idx);\n    } else {\n      this._set[sStr] = idx;\n    }\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  if (hasNativeMap) {\n    return this._set.has(aStr);\n  } else {\n    var sStr = util.toSetString(aStr);\n    return has.call(this._set, sStr);\n  }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  if (hasNativeMap) {\n    var idx = this._set.get(aStr);\n    if (idx >= 0) {\n        return idx;\n    }\n  } else {\n    var sStr = util.toSetString(aStr);\n    if (has.call(this._set, sStr)) {\n      return this._set[sStr];\n    }\n  }\n\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    }));\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var sourceRelative = sourceFile;\n      if (sourceRoot !== null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      if (this._validateMapping(generated, original, source, name) === false) {\n        return;\n      }\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n      var message = 'original.line and original.column are not numbers -- you probably meant to omit ' +\n      'the original mapping entirely and only map the generated position. If so, pass ' +\n      'null for the original mapping instead of an object with empty or null values.'\n\n      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message);\n      }\n    }\n\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      var message = 'Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      });\n\n      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message)\n      }\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","'use strict';\n\nconst sourceMapGenerator_js = require('source-map-js/lib/source-map-generator.js');\n\nconst trackNodes = new Set(['Atrule', 'Selector', 'Declaration']);\n\nfunction generateSourceMap(handlers) {\n    const map = new sourceMapGenerator_js.SourceMapGenerator();\n    const generated = {\n        line: 1,\n        column: 0\n    };\n    const original = {\n        line: 0, // should be zero to add first mapping\n        column: 0\n    };\n    const activatedGenerated = {\n        line: 1,\n        column: 0\n    };\n    const activatedMapping = {\n        generated: activatedGenerated\n    };\n    let line = 1;\n    let column = 0;\n    let sourceMappingActive = false;\n\n    const origHandlersNode = handlers.node;\n    handlers.node = function(node) {\n        if (node.loc && node.loc.start && trackNodes.has(node.type)) {\n            const nodeLine = node.loc.start.line;\n            const nodeColumn = node.loc.start.column - 1;\n\n            if (original.line !== nodeLine ||\n                original.column !== nodeColumn) {\n                original.line = nodeLine;\n                original.column = nodeColumn;\n\n                generated.line = line;\n                generated.column = column;\n\n                if (sourceMappingActive) {\n                    sourceMappingActive = false;\n                    if (generated.line !== activatedGenerated.line ||\n                        generated.column !== activatedGenerated.column) {\n                        map.addMapping(activatedMapping);\n                    }\n                }\n\n                sourceMappingActive = true;\n                map.addMapping({\n                    source: node.loc.source,\n                    original,\n                    generated\n                });\n            }\n        }\n\n        origHandlersNode.call(this, node);\n\n        if (sourceMappingActive && trackNodes.has(node.type)) {\n            activatedGenerated.line = line;\n            activatedGenerated.column = column;\n        }\n    };\n\n    const origHandlersEmit = handlers.emit;\n    handlers.emit = function(value, type, auto) {\n        for (let i = 0; i < value.length; i++) {\n            if (value.charCodeAt(i) === 10) { // \\n\n                line++;\n                column = 0;\n            } else {\n                column++;\n            }\n        }\n\n        origHandlersEmit(value, type, auto);\n    };\n\n    const origHandlersResult = handlers.result;\n    handlers.result = function() {\n        if (sourceMappingActive) {\n            map.addMapping(activatedMapping);\n        }\n\n        return {\n            css: origHandlersResult(),\n            map\n        };\n    };\n\n    return handlers;\n}\n\nexports.generateSourceMap = generateSourceMap;\n","'use strict';\n\nconst types = require('../tokenizer/types.cjs');\n\nconst PLUSSIGN = 0x002B;    // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\n\nconst code = (type, value) => {\n    if (type === types.Delim) {\n        type = value;\n    }\n\n    if (typeof type === 'string') {\n        const charCode = type.charCodeAt(0);\n        return charCode > 0x7F ? 0x8000 : charCode << 8;\n    }\n\n    return type;\n};\n\n// https://www.w3.org/TR/css-syntax-3/#serialization\n// The only requirement for serialization is that it must \"round-trip\" with parsing,\n// that is, parsing the stylesheet must produce the same data structures as parsing,\n// serializing, and parsing again, except for consecutive <whitespace-token>s,\n// which may be collapsed into a single token.\n\nconst specPairs = [\n    [types.Ident, types.Ident],\n    [types.Ident, types.Function],\n    [types.Ident, types.Url],\n    [types.Ident, types.BadUrl],\n    [types.Ident, '-'],\n    [types.Ident, types.Number],\n    [types.Ident, types.Percentage],\n    [types.Ident, types.Dimension],\n    [types.Ident, types.CDC],\n    [types.Ident, types.LeftParenthesis],\n\n    [types.AtKeyword, types.Ident],\n    [types.AtKeyword, types.Function],\n    [types.AtKeyword, types.Url],\n    [types.AtKeyword, types.BadUrl],\n    [types.AtKeyword, '-'],\n    [types.AtKeyword, types.Number],\n    [types.AtKeyword, types.Percentage],\n    [types.AtKeyword, types.Dimension],\n    [types.AtKeyword, types.CDC],\n\n    [types.Hash, types.Ident],\n    [types.Hash, types.Function],\n    [types.Hash, types.Url],\n    [types.Hash, types.BadUrl],\n    [types.Hash, '-'],\n    [types.Hash, types.Number],\n    [types.Hash, types.Percentage],\n    [types.Hash, types.Dimension],\n    [types.Hash, types.CDC],\n\n    [types.Dimension, types.Ident],\n    [types.Dimension, types.Function],\n    [types.Dimension, types.Url],\n    [types.Dimension, types.BadUrl],\n    [types.Dimension, '-'],\n    [types.Dimension, types.Number],\n    [types.Dimension, types.Percentage],\n    [types.Dimension, types.Dimension],\n    [types.Dimension, types.CDC],\n\n    ['#', types.Ident],\n    ['#', types.Function],\n    ['#', types.Url],\n    ['#', types.BadUrl],\n    ['#', '-'],\n    ['#', types.Number],\n    ['#', types.Percentage],\n    ['#', types.Dimension],\n    ['#', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n    ['-', types.Ident],\n    ['-', types.Function],\n    ['-', types.Url],\n    ['-', types.BadUrl],\n    ['-', '-'],\n    ['-', types.Number],\n    ['-', types.Percentage],\n    ['-', types.Dimension],\n    ['-', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n    [types.Number, types.Ident],\n    [types.Number, types.Function],\n    [types.Number, types.Url],\n    [types.Number, types.BadUrl],\n    [types.Number, types.Number],\n    [types.Number, types.Percentage],\n    [types.Number, types.Dimension],\n    [types.Number, '%'],\n    [types.Number, types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n    ['@', types.Ident],\n    ['@', types.Function],\n    ['@', types.Url],\n    ['@', types.BadUrl],\n    ['@', '-'],\n    ['@', types.CDC], // https://github.com/w3c/csswg-drafts/pull/6874\n\n    ['.', types.Number],\n    ['.', types.Percentage],\n    ['.', types.Dimension],\n\n    ['+', types.Number],\n    ['+', types.Percentage],\n    ['+', types.Dimension],\n\n    ['/', '*']\n];\n// validate with scripts/generate-safe\nconst safePairs = specPairs.concat([\n    [types.Ident, types.Hash],\n\n    [types.Dimension, types.Hash],\n\n    [types.Hash, types.Hash],\n\n    [types.AtKeyword, types.LeftParenthesis],\n    [types.AtKeyword, types.String],\n    [types.AtKeyword, types.Colon],\n\n    [types.Percentage, types.Percentage],\n    [types.Percentage, types.Dimension],\n    [types.Percentage, types.Function],\n    [types.Percentage, '-'],\n\n    [types.RightParenthesis, types.Ident],\n    [types.RightParenthesis, types.Function],\n    [types.RightParenthesis, types.Percentage],\n    [types.RightParenthesis, types.Dimension],\n    [types.RightParenthesis, types.Hash],\n    [types.RightParenthesis, '-']\n]);\n\nfunction createMap(pairs) {\n    const isWhiteSpaceRequired = new Set(\n        pairs.map(([prev, next]) => (code(prev) << 16 | code(next)))\n    );\n\n    return function(prevCode, type, value) {\n        const nextCode = code(type, value);\n        const nextCharCode = value.charCodeAt(0);\n        const emitWs =\n            (nextCharCode === HYPHENMINUS &&\n                type !== types.Ident &&\n                type !== types.Function &&\n                type !== types.CDC) ||\n            (nextCharCode === PLUSSIGN)\n                ? isWhiteSpaceRequired.has(prevCode << 16 | nextCharCode << 8)\n                : isWhiteSpaceRequired.has(prevCode << 16 | nextCode);\n\n        if (emitWs) {\n            this.emit(' ', types.WhiteSpace, true);\n        }\n\n        return nextCode;\n    };\n}\n\nconst spec = createMap(specPairs);\nconst safe = createMap(safePairs);\n\nexports.safe = safe;\nexports.spec = spec;\n","'use strict';\n\nconst index = require('../tokenizer/index.cjs');\nconst sourceMap = require('./sourceMap.cjs');\nconst tokenBefore = require('./token-before.cjs');\nconst types = require('../tokenizer/types.cjs');\n\nconst REVERSESOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\n\nfunction processChildren(node, delimeter) {\n    if (typeof delimeter === 'function') {\n        let prev = null;\n\n        node.children.forEach(node => {\n            if (prev !== null) {\n                delimeter.call(this, prev);\n            }\n\n            this.node(node);\n            prev = node;\n        });\n\n        return;\n    }\n\n    node.children.forEach(this.node, this);\n}\n\nfunction processChunk(chunk) {\n    index.tokenize(chunk, (type, start, end) => {\n        this.token(type, chunk.slice(start, end));\n    });\n}\n\nfunction createGenerator(config) {\n    const types$1 = new Map();\n\n    for (let [name, item] of Object.entries(config.node)) {\n        const fn = item.generate || item;\n\n        if (typeof fn === 'function') {\n            types$1.set(name, item.generate || item);\n        }\n    }\n\n    return function(node, options) {\n        let buffer = '';\n        let prevCode = 0;\n        let handlers = {\n            node(node) {\n                if (types$1.has(node.type)) {\n                    types$1.get(node.type).call(publicApi, node);\n                } else {\n                    throw new Error('Unknown node type: ' + node.type);\n                }\n            },\n            tokenBefore: tokenBefore.safe,\n            token(type, value) {\n                prevCode = this.tokenBefore(prevCode, type, value);\n\n                this.emit(value, type, false);\n\n                if (type === types.Delim && value.charCodeAt(0) === REVERSESOLIDUS) {\n                    this.emit('\\n', types.WhiteSpace, true);\n                }\n            },\n            emit(value) {\n                buffer += value;\n            },\n            result() {\n                return buffer;\n            }\n        };\n\n        if (options) {\n            if (typeof options.decorator === 'function') {\n                handlers = options.decorator(handlers);\n            }\n\n            if (options.sourceMap) {\n                handlers = sourceMap.generateSourceMap(handlers);\n            }\n\n            if (options.mode in tokenBefore) {\n                handlers.tokenBefore = tokenBefore[options.mode];\n            }\n        }\n\n        const publicApi = {\n            node: (node) => handlers.node(node),\n            children: processChildren,\n            token: (type, value) => handlers.token(type, value),\n            tokenize: processChunk\n        };\n\n        handlers.node(node);\n\n        return handlers.result();\n    };\n}\n\nexports.createGenerator = createGenerator;\n","'use strict';\n\nconst List = require('../utils/List.cjs');\n\nfunction createConvertor(walk) {\n    return {\n        fromPlainObject(ast) {\n            walk(ast, {\n                enter(node) {\n                    if (node.children && node.children instanceof List.List === false) {\n                        node.children = new List.List().fromArray(node.children);\n                    }\n                }\n            });\n\n            return ast;\n        },\n        toPlainObject(ast) {\n            walk(ast, {\n                leave(node) {\n                    if (node.children && node.children instanceof List.List) {\n                        node.children = node.children.toArray();\n                    }\n                }\n            });\n\n            return ast;\n        }\n    };\n}\n\nexports.createConvertor = createConvertor;\n","'use strict';\n\nconst { hasOwnProperty } = Object.prototype;\nconst noop = function() {};\n\nfunction ensureFunction(value) {\n    return typeof value === 'function' ? value : noop;\n}\n\nfunction invokeForType(fn, type) {\n    return function(node, item, list) {\n        if (node.type === type) {\n            fn.call(this, node, item, list);\n        }\n    };\n}\n\nfunction getWalkersFromStructure(name, nodeType) {\n    const structure = nodeType.structure;\n    const walkers = [];\n\n    for (const key in structure) {\n        if (hasOwnProperty.call(structure, key) === false) {\n            continue;\n        }\n\n        let fieldTypes = structure[key];\n        const walker = {\n            name: key,\n            type: false,\n            nullable: false\n        };\n\n        if (!Array.isArray(fieldTypes)) {\n            fieldTypes = [fieldTypes];\n        }\n\n        for (const fieldType of fieldTypes) {\n            if (fieldType === null) {\n                walker.nullable = true;\n            } else if (typeof fieldType === 'string') {\n                walker.type = 'node';\n            } else if (Array.isArray(fieldType)) {\n                walker.type = 'list';\n            }\n        }\n\n        if (walker.type) {\n            walkers.push(walker);\n        }\n    }\n\n    if (walkers.length) {\n        return {\n            context: nodeType.walkContext,\n            fields: walkers\n        };\n    }\n\n    return null;\n}\n\nfunction getTypesFromConfig(config) {\n    const types = {};\n\n    for (const name in config.node) {\n        if (hasOwnProperty.call(config.node, name)) {\n            const nodeType = config.node[name];\n\n            if (!nodeType.structure) {\n                throw new Error('Missed `structure` field in `' + name + '` node type definition');\n            }\n\n            types[name] = getWalkersFromStructure(name, nodeType);\n        }\n    }\n\n    return types;\n}\n\nfunction createTypeIterator(config, reverse) {\n    const fields = config.fields.slice();\n    const contextName = config.context;\n    const useContext = typeof contextName === 'string';\n\n    if (reverse) {\n        fields.reverse();\n    }\n\n    return function(node, context, walk, walkReducer) {\n        let prevContextValue;\n\n        if (useContext) {\n            prevContextValue = context[contextName];\n            context[contextName] = node;\n        }\n\n        for (const field of fields) {\n            const ref = node[field.name];\n\n            if (!field.nullable || ref) {\n                if (field.type === 'list') {\n                    const breakWalk = reverse\n                        ? ref.reduceRight(walkReducer, false)\n                        : ref.reduce(walkReducer, false);\n\n                    if (breakWalk) {\n                        return true;\n                    }\n                } else if (walk(ref)) {\n                    return true;\n                }\n            }\n        }\n\n        if (useContext) {\n            context[contextName] = prevContextValue;\n        }\n    };\n}\n\nfunction createFastTraveralMap({\n    StyleSheet,\n    Atrule,\n    Rule,\n    Block,\n    DeclarationList\n}) {\n    return {\n        Atrule: {\n            StyleSheet,\n            Atrule,\n            Rule,\n            Block\n        },\n        Rule: {\n            StyleSheet,\n            Atrule,\n            Rule,\n            Block\n        },\n        Declaration: {\n            StyleSheet,\n            Atrule,\n            Rule,\n            Block,\n            DeclarationList\n        }\n    };\n}\n\nfunction createWalker(config) {\n    const types = getTypesFromConfig(config);\n    const iteratorsNatural = {};\n    const iteratorsReverse = {};\n    const breakWalk = Symbol('break-walk');\n    const skipNode = Symbol('skip-node');\n\n    for (const name in types) {\n        if (hasOwnProperty.call(types, name) && types[name] !== null) {\n            iteratorsNatural[name] = createTypeIterator(types[name], false);\n            iteratorsReverse[name] = createTypeIterator(types[name], true);\n        }\n    }\n\n    const fastTraversalIteratorsNatural = createFastTraveralMap(iteratorsNatural);\n    const fastTraversalIteratorsReverse = createFastTraveralMap(iteratorsReverse);\n\n    const walk = function(root, options) {\n        function walkNode(node, item, list) {\n            const enterRet = enter.call(context, node, item, list);\n\n            if (enterRet === breakWalk) {\n                return true;\n            }\n\n            if (enterRet === skipNode) {\n                return false;\n            }\n\n            if (iterators.hasOwnProperty(node.type)) {\n                if (iterators[node.type](node, context, walkNode, walkReducer)) {\n                    return true;\n                }\n            }\n\n            if (leave.call(context, node, item, list) === breakWalk) {\n                return true;\n            }\n\n            return false;\n        }\n\n        let enter = noop;\n        let leave = noop;\n        let iterators = iteratorsNatural;\n        let walkReducer = (ret, data, item, list) => ret || walkNode(data, item, list);\n        const context = {\n            break: breakWalk,\n            skip: skipNode,\n\n            root,\n            stylesheet: null,\n            atrule: null,\n            atrulePrelude: null,\n            rule: null,\n            selector: null,\n            block: null,\n            declaration: null,\n            function: null\n        };\n\n        if (typeof options === 'function') {\n            enter = options;\n        } else if (options) {\n            enter = ensureFunction(options.enter);\n            leave = ensureFunction(options.leave);\n\n            if (options.reverse) {\n                iterators = iteratorsReverse;\n            }\n\n            if (options.visit) {\n                if (fastTraversalIteratorsNatural.hasOwnProperty(options.visit)) {\n                    iterators = options.reverse\n                        ? fastTraversalIteratorsReverse[options.visit]\n                        : fastTraversalIteratorsNatural[options.visit];\n                } else if (!types.hasOwnProperty(options.visit)) {\n                    throw new Error('Bad value `' + options.visit + '` for `visit` option (should be: ' + Object.keys(types).sort().join(', ') + ')');\n                }\n\n                enter = invokeForType(enter, options.visit);\n                leave = invokeForType(leave, options.visit);\n            }\n        }\n\n        if (enter === noop && leave === noop) {\n            throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\\'t a function');\n        }\n\n        walkNode(root);\n    };\n\n    walk.break = breakWalk;\n    walk.skip = skipNode;\n\n    walk.find = function(ast, fn) {\n        let found = null;\n\n        walk(ast, function(node, item, list) {\n            if (fn.call(this, node, item, list)) {\n                found = node;\n                return breakWalk;\n            }\n        });\n\n        return found;\n    };\n\n    walk.findLast = function(ast, fn) {\n        let found = null;\n\n        walk(ast, {\n            reverse: true,\n            enter(node, item, list) {\n                if (fn.call(this, node, item, list)) {\n                    found = node;\n                    return breakWalk;\n                }\n            }\n        });\n\n        return found;\n    };\n\n    walk.findAll = function(ast, fn) {\n        const found = [];\n\n        walk(ast, function(node, item, list) {\n            if (fn.call(this, node, item, list)) {\n                found.push(node);\n            }\n        });\n\n        return found;\n    };\n\n    return walk;\n}\n\nexports.createWalker = createWalker;\n","'use strict';\n\nfunction noop(value) {\n    return value;\n}\n\nfunction generateMultiplier(multiplier) {\n    const { min, max, comma } = multiplier;\n\n    if (min === 0 && max === 0) {\n        return comma ? '#?' : '*';\n    }\n\n    if (min === 0 && max === 1) {\n        return '?';\n    }\n\n    if (min === 1 && max === 0) {\n        return comma ? '#' : '+';\n    }\n\n    if (min === 1 && max === 1) {\n        return '';\n    }\n\n    return (\n        (comma ? '#' : '') +\n        (min === max\n            ? '{' + min + '}'\n            : '{' + min + ',' + (max !== 0 ? max : '') + '}'\n        )\n    );\n}\n\nfunction generateTypeOpts(node) {\n    switch (node.type) {\n        case 'Range':\n            return (\n                ' [' +\n                (node.min === null ? '-∞' : node.min) +\n                ',' +\n                (node.max === null ? '∞' : node.max) +\n                ']'\n            );\n\n        default:\n            throw new Error('Unknown node type `' + node.type + '`');\n    }\n}\n\nfunction generateSequence(node, decorate, forceBraces, compact) {\n    const combinator = node.combinator === ' ' || compact ? node.combinator : ' ' + node.combinator + ' ';\n    const result = node.terms\n        .map(term => internalGenerate(term, decorate, forceBraces, compact))\n        .join(combinator);\n\n    if (node.explicit || forceBraces) {\n        return (compact || result[0] === ',' ? '[' : '[ ') + result + (compact ? ']' : ' ]');\n    }\n\n    return result;\n}\n\nfunction internalGenerate(node, decorate, forceBraces, compact) {\n    let result;\n\n    switch (node.type) {\n        case 'Group':\n            result =\n                generateSequence(node, decorate, forceBraces, compact) +\n                (node.disallowEmpty ? '!' : '');\n            break;\n\n        case 'Multiplier':\n            // return since node is a composition\n            return (\n                internalGenerate(node.term, decorate, forceBraces, compact) +\n                decorate(generateMultiplier(node), node)\n            );\n\n        case 'Boolean':\n            result = '<boolean-expr[' + internalGenerate(node.term, decorate, forceBraces, compact) + ']>';\n            break;\n\n        case 'Type':\n            result = '<' + node.name + (node.opts ? decorate(generateTypeOpts(node.opts), node.opts) : '') + '>';\n            break;\n\n        case 'Property':\n            result = '<\\'' + node.name + '\\'>';\n            break;\n\n        case 'Keyword':\n            result = node.name;\n            break;\n\n        case 'AtKeyword':\n            result = '@' + node.name;\n            break;\n\n        case 'Function':\n            result = node.name + '(';\n            break;\n\n        case 'String':\n        case 'Token':\n            result = node.value;\n            break;\n\n        case 'Comma':\n            result = ',';\n            break;\n\n        default:\n            throw new Error('Unknown node type `' + node.type + '`');\n    }\n\n    return decorate(result, node);\n}\n\nfunction generate(node, options) {\n    let decorate = noop;\n    let forceBraces = false;\n    let compact = false;\n\n    if (typeof options === 'function') {\n        decorate = options;\n    } else if (options) {\n        forceBraces = Boolean(options.forceBraces);\n        compact = Boolean(options.compact);\n        if (typeof options.decorate === 'function') {\n            decorate = options.decorate;\n        }\n    }\n\n    return internalGenerate(node, decorate, forceBraces, compact);\n}\n\nexports.generate = generate;\n","'use strict';\n\nconst createCustomError = require('../utils/create-custom-error.cjs');\nconst generate = require('../definition-syntax/generate.cjs');\n\nconst defaultLoc = { offset: 0, line: 1, column: 1 };\n\nfunction locateMismatch(matchResult, node) {\n    const tokens = matchResult.tokens;\n    const longestMatch = matchResult.longestMatch;\n    const mismatchNode = longestMatch < tokens.length ? tokens[longestMatch].node || null : null;\n    const badNode = mismatchNode !== node ? mismatchNode : null;\n    let mismatchOffset = 0;\n    let mismatchLength = 0;\n    let entries = 0;\n    let css = '';\n    let start;\n    let end;\n\n    for (let i = 0; i < tokens.length; i++) {\n        const token = tokens[i].value;\n\n        if (i === longestMatch) {\n            mismatchLength = token.length;\n            mismatchOffset = css.length;\n        }\n\n        if (badNode !== null && tokens[i].node === badNode) {\n            if (i <= longestMatch) {\n                entries++;\n            } else {\n                entries = 0;\n            }\n        }\n\n        css += token;\n    }\n\n    if (longestMatch === tokens.length || entries > 1) { // last\n        start = fromLoc(badNode || node, 'end') || buildLoc(defaultLoc, css);\n        end = buildLoc(start);\n    } else {\n        start = fromLoc(badNode, 'start') ||\n            buildLoc(fromLoc(node, 'start') || defaultLoc, css.slice(0, mismatchOffset));\n        end = fromLoc(badNode, 'end') ||\n            buildLoc(start, css.substr(mismatchOffset, mismatchLength));\n    }\n\n    return {\n        css,\n        mismatchOffset,\n        mismatchLength,\n        start,\n        end\n    };\n}\n\nfunction fromLoc(node, point) {\n    const value = node && node.loc && node.loc[point];\n\n    if (value) {\n        return 'line' in value ? buildLoc(value) : value;\n    }\n\n    return null;\n}\n\nfunction buildLoc({ offset, line, column }, extra) {\n    const loc = {\n        offset,\n        line,\n        column\n    };\n\n    if (extra) {\n        const lines = extra.split(/\\n|\\r\\n?|\\f/);\n\n        loc.offset += extra.length;\n        loc.line += lines.length - 1;\n        loc.column = lines.length === 1 ? loc.column + extra.length : lines.pop().length + 1;\n    }\n\n    return loc;\n}\n\nconst SyntaxReferenceError = function(type, referenceName) {\n    const error = createCustomError.createCustomError(\n        'SyntaxReferenceError',\n        type + (referenceName ? ' `' + referenceName + '`' : '')\n    );\n\n    error.reference = referenceName;\n\n    return error;\n};\n\nconst SyntaxMatchError = function(message, syntax, node, matchResult) {\n    const error = createCustomError.createCustomError('SyntaxMatchError', message);\n    const {\n        css,\n        mismatchOffset,\n        mismatchLength,\n        start,\n        end\n    } = locateMismatch(matchResult, node);\n\n    error.rawMessage = message;\n    error.syntax = syntax ? generate.generate(syntax) : '<generic>';\n    error.css = css;\n    error.mismatchOffset = mismatchOffset;\n    error.mismatchLength = mismatchLength;\n    error.message = message + '\\n' +\n        '  syntax: ' + error.syntax + '\\n' +\n        '   value: ' + (css || '<empty string>') + '\\n' +\n        '  --------' + new Array(error.mismatchOffset + 1).join('-') + '^';\n\n    Object.assign(error, start);\n    error.loc = {\n        source: (node && node.loc && node.loc.source) || '<unknown>',\n        start,\n        end\n    };\n\n    return error;\n};\n\nexports.SyntaxMatchError = SyntaxMatchError;\nexports.SyntaxReferenceError = SyntaxReferenceError;\n","'use strict';\n\nconst keywords = new Map();\nconst properties = new Map();\nconst HYPHENMINUS = 45; // '-'.charCodeAt()\n\nconst keyword = getKeywordDescriptor;\nconst property = getPropertyDescriptor;\nconst vendorPrefix = getVendorPrefix;\nfunction isCustomProperty(str, offset) {\n    offset = offset || 0;\n\n    return str.length - offset >= 2 &&\n           str.charCodeAt(offset) === HYPHENMINUS &&\n           str.charCodeAt(offset + 1) === HYPHENMINUS;\n}\n\nfunction getVendorPrefix(str, offset) {\n    offset = offset || 0;\n\n    // verdor prefix should be at least 3 chars length\n    if (str.length - offset >= 3) {\n        // vendor prefix starts with hyper minus following non-hyper minus\n        if (str.charCodeAt(offset) === HYPHENMINUS &&\n            str.charCodeAt(offset + 1) !== HYPHENMINUS) {\n            // vendor prefix should contain a hyper minus at the ending\n            const secondDashIndex = str.indexOf('-', offset + 2);\n\n            if (secondDashIndex !== -1) {\n                return str.substring(offset, secondDashIndex + 1);\n            }\n        }\n    }\n\n    return '';\n}\n\nfunction getKeywordDescriptor(keyword) {\n    if (keywords.has(keyword)) {\n        return keywords.get(keyword);\n    }\n\n    const name = keyword.toLowerCase();\n    let descriptor = keywords.get(name);\n\n    if (descriptor === undefined) {\n        const custom = isCustomProperty(name, 0);\n        const vendor = !custom ? getVendorPrefix(name, 0) : '';\n        descriptor = Object.freeze({\n            basename: name.substr(vendor.length),\n            name,\n            prefix: vendor,\n            vendor,\n            custom\n        });\n    }\n\n    keywords.set(keyword, descriptor);\n\n    return descriptor;\n}\n\nfunction getPropertyDescriptor(property) {\n    if (properties.has(property)) {\n        return properties.get(property);\n    }\n\n    let name = property;\n    let hack = property[0];\n\n    if (hack === '/') {\n        hack = property[1] === '/' ? '//' : '/';\n    } else if (hack !== '_' &&\n               hack !== '*' &&\n               hack !== '$' &&\n               hack !== '#' &&\n               hack !== '+' &&\n               hack !== '&') {\n        hack = '';\n    }\n\n    const custom = isCustomProperty(name, hack.length);\n\n    // re-use result when possible (the same as for lower case)\n    if (!custom) {\n        name = name.toLowerCase();\n        if (properties.has(name)) {\n            const descriptor = properties.get(name);\n            properties.set(property, descriptor);\n            return descriptor;\n        }\n    }\n\n    const vendor = !custom ? getVendorPrefix(name, hack.length) : '';\n    const prefix = name.substr(0, hack.length + vendor.length);\n    const descriptor = Object.freeze({\n        basename: name.substr(prefix.length),\n        name: name.substr(hack.length),\n        hack,\n        vendor,\n        prefix,\n        custom\n    });\n\n    properties.set(property, descriptor);\n\n    return descriptor;\n}\n\nexports.isCustomProperty = isCustomProperty;\nexports.keyword = keyword;\nexports.property = property;\nexports.vendorPrefix = vendorPrefix;\n","'use strict';\n\n// https://drafts.csswg.org/css-cascade-5/\nconst cssWideKeywords = [\n    'initial',\n    'inherit',\n    'unset',\n    'revert',\n    'revert-layer'\n];\n\nexports.cssWideKeywords = cssWideKeywords;\n","'use strict';\n\nconst charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');\nconst types = require('../tokenizer/types.cjs');\nconst utils = require('../tokenizer/utils.cjs');\n\nconst PLUSSIGN = 0x002B;    // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst N = 0x006E;           // U+006E LATIN SMALL LETTER N (n)\nconst DISALLOW_SIGN = true;\nconst ALLOW_SIGN = false;\n\nfunction isDelim(token, code) {\n    return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;\n}\n\nfunction skipSC(token, offset, getNextToken) {\n    while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment)) {\n        token = getNextToken(++offset);\n    }\n\n    return offset;\n}\n\nfunction checkInteger(token, valueOffset, disallowSign, offset) {\n    if (!token) {\n        return 0;\n    }\n\n    const code = token.value.charCodeAt(valueOffset);\n\n    if (code === PLUSSIGN || code === HYPHENMINUS) {\n        if (disallowSign) {\n            // Number sign is not allowed\n            return 0;\n        }\n        valueOffset++;\n    }\n\n    for (; valueOffset < token.value.length; valueOffset++) {\n        if (!charCodeDefinitions.isDigit(token.value.charCodeAt(valueOffset))) {\n            // Integer is expected\n            return 0;\n        }\n    }\n\n    return offset + 1;\n}\n\n// ... <signed-integer>\n// ... ['+' | '-'] <signless-integer>\nfunction consumeB(token, offset_, getNextToken) {\n    let sign = false;\n    let offset = skipSC(token, offset_, getNextToken);\n\n    token = getNextToken(offset);\n\n    if (token === null) {\n        return offset_;\n    }\n\n    if (token.type !== types.Number) {\n        if (isDelim(token, PLUSSIGN) || isDelim(token, HYPHENMINUS)) {\n            sign = true;\n            offset = skipSC(getNextToken(++offset), offset, getNextToken);\n            token = getNextToken(offset);\n\n            if (token === null || token.type !== types.Number) {\n                return 0;\n            }\n        } else {\n            return offset_;\n        }\n    }\n\n    if (!sign) {\n        const code = token.value.charCodeAt(0);\n        if (code !== PLUSSIGN && code !== HYPHENMINUS) {\n            // Number sign is expected\n            return 0;\n        }\n    }\n\n    return checkInteger(token, sign ? 0 : 1, sign, offset);\n}\n\n// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb\nfunction anPlusB(token, getNextToken) {\n    /* eslint-disable brace-style*/\n    let offset = 0;\n\n    if (!token) {\n        return 0;\n    }\n\n    // <integer>\n    if (token.type === types.Number) {\n        return checkInteger(token, 0, ALLOW_SIGN, offset); // b\n    }\n\n    // -n\n    // -n <signed-integer>\n    // -n ['+' | '-'] <signless-integer>\n    // -n- <signless-integer>\n    // <dashndashdigit-ident>\n    else if (token.type === types.Ident && token.value.charCodeAt(0) === HYPHENMINUS) {\n        // expect 1st char is N\n        if (!utils.cmpChar(token.value, 1, N)) {\n            return 0;\n        }\n\n        switch (token.value.length) {\n            // -n\n            // -n <signed-integer>\n            // -n ['+' | '-'] <signless-integer>\n            case 2:\n                return consumeB(getNextToken(++offset), offset, getNextToken);\n\n            // -n- <signless-integer>\n            case 3:\n                if (token.value.charCodeAt(2) !== HYPHENMINUS) {\n                    return 0;\n                }\n\n                offset = skipSC(getNextToken(++offset), offset, getNextToken);\n                token = getNextToken(offset);\n\n                return checkInteger(token, 0, DISALLOW_SIGN, offset);\n\n            // <dashndashdigit-ident>\n            default:\n                if (token.value.charCodeAt(2) !== HYPHENMINUS) {\n                    return 0;\n                }\n\n                return checkInteger(token, 3, DISALLOW_SIGN, offset);\n        }\n    }\n\n    // '+'? n\n    // '+'? n <signed-integer>\n    // '+'? n ['+' | '-'] <signless-integer>\n    // '+'? n- <signless-integer>\n    // '+'? <ndashdigit-ident>\n    else if (token.type === types.Ident || (isDelim(token, PLUSSIGN) && getNextToken(offset + 1).type === types.Ident)) {\n        // just ignore a plus\n        if (token.type !== types.Ident) {\n            token = getNextToken(++offset);\n        }\n\n        if (token === null || !utils.cmpChar(token.value, 0, N)) {\n            return 0;\n        }\n\n        switch (token.value.length) {\n            // '+'? n\n            // '+'? n <signed-integer>\n            // '+'? n ['+' | '-'] <signless-integer>\n            case 1:\n                return consumeB(getNextToken(++offset), offset, getNextToken);\n\n            // '+'? n- <signless-integer>\n            case 2:\n                if (token.value.charCodeAt(1) !== HYPHENMINUS) {\n                    return 0;\n                }\n\n                offset = skipSC(getNextToken(++offset), offset, getNextToken);\n                token = getNextToken(offset);\n\n                return checkInteger(token, 0, DISALLOW_SIGN, offset);\n\n            // '+'? <ndashdigit-ident>\n            default:\n                if (token.value.charCodeAt(1) !== HYPHENMINUS) {\n                    return 0;\n                }\n\n                return checkInteger(token, 2, DISALLOW_SIGN, offset);\n        }\n    }\n\n    // <ndashdigit-dimension>\n    // <ndash-dimension> <signless-integer>\n    // <n-dimension>\n    // <n-dimension> <signed-integer>\n    // <n-dimension> ['+' | '-'] <signless-integer>\n    else if (token.type === types.Dimension) {\n        let code = token.value.charCodeAt(0);\n        let sign = code === PLUSSIGN || code === HYPHENMINUS ? 1 : 0;\n        let i = sign;\n\n        for (; i < token.value.length; i++) {\n            if (!charCodeDefinitions.isDigit(token.value.charCodeAt(i))) {\n                break;\n            }\n        }\n\n        if (i === sign) {\n            // Integer is expected\n            return 0;\n        }\n\n        if (!utils.cmpChar(token.value, i, N)) {\n            return 0;\n        }\n\n        // <n-dimension>\n        // <n-dimension> <signed-integer>\n        // <n-dimension> ['+' | '-'] <signless-integer>\n        if (i + 1 === token.value.length) {\n            return consumeB(getNextToken(++offset), offset, getNextToken);\n        } else {\n            if (token.value.charCodeAt(i + 1) !== HYPHENMINUS) {\n                return 0;\n            }\n\n            // <ndash-dimension> <signless-integer>\n            if (i + 2 === token.value.length) {\n                offset = skipSC(getNextToken(++offset), offset, getNextToken);\n                token = getNextToken(offset);\n\n                return checkInteger(token, 0, DISALLOW_SIGN, offset);\n            }\n            // <ndashdigit-dimension>\n            else {\n                return checkInteger(token, i + 2, DISALLOW_SIGN, offset);\n            }\n        }\n    }\n\n    return 0;\n}\n\nmodule.exports = anPlusB;\n","'use strict';\n\nconst charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');\nconst types = require('../tokenizer/types.cjs');\nconst utils = require('../tokenizer/utils.cjs');\n\nconst PLUSSIGN = 0x002B;     // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D;  // U+002D HYPHEN-MINUS (-)\nconst QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)\nconst U = 0x0075;            // U+0075 LATIN SMALL LETTER U (u)\n\nfunction isDelim(token, code) {\n    return token !== null && token.type === types.Delim && token.value.charCodeAt(0) === code;\n}\n\nfunction startsWith(token, code) {\n    return token.value.charCodeAt(0) === code;\n}\n\nfunction hexSequence(token, offset, allowDash) {\n    let hexlen = 0;\n\n    for (let pos = offset; pos < token.value.length; pos++) {\n        const code = token.value.charCodeAt(pos);\n\n        if (code === HYPHENMINUS && allowDash && hexlen !== 0) {\n            hexSequence(token, offset + hexlen + 1, false);\n            return 6; // dissallow following question marks\n        }\n\n        if (!charCodeDefinitions.isHexDigit(code)) {\n            return 0; // not a hex digit\n        }\n\n        if (++hexlen > 6) {\n            return 0; // too many hex digits\n        }    }\n\n    return hexlen;\n}\n\nfunction withQuestionMarkSequence(consumed, length, getNextToken) {\n    if (!consumed) {\n        return 0; // nothing consumed\n    }\n\n    while (isDelim(getNextToken(length), QUESTIONMARK)) {\n        if (++consumed > 6) {\n            return 0; // too many question marks\n        }\n\n        length++;\n    }\n\n    return length;\n}\n\n// https://drafts.csswg.org/css-syntax/#urange\n// Informally, the <urange> production has three forms:\n// U+0001\n//      Defines a range consisting of a single code point, in this case the code point \"1\".\n// U+0001-00ff\n//      Defines a range of codepoints between the first and the second value, in this case\n//      the range between \"1\" and \"ff\" (255 in decimal) inclusive.\n// U+00??\n//      Defines a range of codepoints where the \"?\" characters range over all hex digits,\n//      in this case defining the same as the value U+0000-00ff.\n// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat \"?\" as a hexadecimal digit).\n//\n// <urange> =\n//   u '+' <ident-token> '?'* |\n//   u <dimension-token> '?'* |\n//   u <number-token> '?'* |\n//   u <number-token> <dimension-token> |\n//   u <number-token> <number-token> |\n//   u '+' '?'+\nfunction urange(token, getNextToken) {\n    let length = 0;\n\n    // should start with `u` or `U`\n    if (token === null || token.type !== types.Ident || !utils.cmpChar(token.value, 0, U)) {\n        return 0;\n    }\n\n    token = getNextToken(++length);\n    if (token === null) {\n        return 0;\n    }\n\n    // u '+' <ident-token> '?'*\n    // u '+' '?'+\n    if (isDelim(token, PLUSSIGN)) {\n        token = getNextToken(++length);\n        if (token === null) {\n            return 0;\n        }\n\n        if (token.type === types.Ident) {\n            // u '+' <ident-token> '?'*\n            return withQuestionMarkSequence(hexSequence(token, 0, true), ++length, getNextToken);\n        }\n\n        if (isDelim(token, QUESTIONMARK)) {\n            // u '+' '?'+\n            return withQuestionMarkSequence(1, ++length, getNextToken);\n        }\n\n        // Hex digit or question mark is expected\n        return 0;\n    }\n\n    // u <number-token> '?'*\n    // u <number-token> <dimension-token>\n    // u <number-token> <number-token>\n    if (token.type === types.Number) {\n        const consumedHexLength = hexSequence(token, 1, true);\n        if (consumedHexLength === 0) {\n            return 0;\n        }\n\n        token = getNextToken(++length);\n        if (token === null) {\n            // u <number-token> <eof>\n            return length;\n        }\n\n        if (token.type === types.Dimension || token.type === types.Number) {\n            // u <number-token> <dimension-token>\n            // u <number-token> <number-token>\n            if (!startsWith(token, HYPHENMINUS) || !hexSequence(token, 1, false)) {\n                return 0;\n            }\n\n            return length + 1;\n        }\n\n        // u <number-token> '?'*\n        return withQuestionMarkSequence(consumedHexLength, length, getNextToken);\n    }\n\n    // u <dimension-token> '?'*\n    if (token.type === types.Dimension) {\n        return withQuestionMarkSequence(hexSequence(token, 1, true), ++length, getNextToken);\n    }\n\n    return 0;\n}\n\nmodule.exports = urange;\n","'use strict';\n\nconst genericConst = require('./generic-const.cjs');\nconst genericAnPlusB = require('./generic-an-plus-b.cjs');\nconst genericUrange = require('./generic-urange.cjs');\nconst charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');\nconst types = require('../tokenizer/types.cjs');\nconst utils = require('../tokenizer/utils.cjs');\n\nconst calcFunctionNames = ['calc(', '-moz-calc(', '-webkit-calc('];\nconst balancePair = new Map([\n    [types.Function, types.RightParenthesis],\n    [types.LeftParenthesis, types.RightParenthesis],\n    [types.LeftSquareBracket, types.RightSquareBracket],\n    [types.LeftCurlyBracket, types.RightCurlyBracket]\n]);\n\n// safe char code getter\nfunction charCodeAt(str, index) {\n    return index < str.length ? str.charCodeAt(index) : 0;\n}\n\nfunction eqStr(actual, expected) {\n    return utils.cmpStr(actual, 0, actual.length, expected);\n}\n\nfunction eqStrAny(actual, expected) {\n    for (let i = 0; i < expected.length; i++) {\n        if (eqStr(actual, expected[i])) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\n// IE postfix hack, i.e. 123\\0 or 123px\\9\nfunction isPostfixIeHack(str, offset) {\n    if (offset !== str.length - 2) {\n        return false;\n    }\n\n    return (\n        charCodeAt(str, offset) === 0x005C &&  // U+005C REVERSE SOLIDUS (\\)\n        charCodeDefinitions.isDigit(charCodeAt(str, offset + 1))\n    );\n}\n\nfunction outOfRange(opts, value, numEnd) {\n    if (opts && opts.type === 'Range') {\n        const num = Number(\n            numEnd !== undefined && numEnd !== value.length\n                ? value.substr(0, numEnd)\n                : value\n        );\n\n        if (isNaN(num)) {\n            return true;\n        }\n\n        // FIXME: when opts.min is a string it's a dimension, skip a range validation\n        // for now since it requires a type covertation which is not implmented yet\n        if (opts.min !== null && num < opts.min && typeof opts.min !== 'string') {\n            return true;\n        }\n\n        // FIXME: when opts.max is a string it's a dimension, skip a range validation\n        // for now since it requires a type covertation which is not implmented yet\n        if (opts.max !== null && num > opts.max && typeof opts.max !== 'string') {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nfunction consumeFunction(token, getNextToken) {\n    let balanceCloseType = 0;\n    let balanceStash = [];\n    let length = 0;\n\n    // balanced token consuming\n    scan:\n    do {\n        switch (token.type) {\n            case types.RightCurlyBracket:\n            case types.RightParenthesis:\n            case types.RightSquareBracket:\n                if (token.type !== balanceCloseType) {\n                    break scan;\n                }\n\n                balanceCloseType = balanceStash.pop();\n\n                if (balanceStash.length === 0) {\n                    length++;\n                    break scan;\n                }\n\n                break;\n\n            case types.Function:\n            case types.LeftParenthesis:\n            case types.LeftSquareBracket:\n            case types.LeftCurlyBracket:\n                balanceStash.push(balanceCloseType);\n                balanceCloseType = balancePair.get(token.type);\n                break;\n        }\n\n        length++;\n    } while (token = getNextToken(length));\n\n    return length;\n}\n\n// TODO: implement\n// can be used wherever <length>, <frequency>, <angle>, <time>, <percentage>, <number>, or <integer> values are allowed\n// https://drafts.csswg.org/css-values/#calc-notation\nfunction calc(next) {\n    return function(token, getNextToken, opts) {\n        if (token === null) {\n            return 0;\n        }\n\n        if (token.type === types.Function && eqStrAny(token.value, calcFunctionNames)) {\n            return consumeFunction(token, getNextToken);\n        }\n\n        return next(token, getNextToken, opts);\n    };\n}\n\nfunction tokenType(expectedTokenType) {\n    return function(token) {\n        if (token === null || token.type !== expectedTokenType) {\n            return 0;\n        }\n\n        return 1;\n    };\n}\n\n// =========================\n// Complex types\n//\n\n// https://drafts.csswg.org/css-values-4/#custom-idents\n// 4.2. Author-defined Identifiers: the <custom-ident> type\n// Some properties accept arbitrary author-defined identifiers as a component value.\n// This generic data type is denoted by <custom-ident>, and represents any valid CSS identifier\n// that would not be misinterpreted as a pre-defined keyword in that property’s value definition.\n//\n// See also: https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident\nfunction customIdent(token) {\n    if (token === null || token.type !== types.Ident) {\n        return 0;\n    }\n\n    const name = token.value.toLowerCase();\n\n    // The CSS-wide keywords are not valid <custom-ident>s\n    if (eqStrAny(name, genericConst.cssWideKeywords)) {\n        return 0;\n    }\n\n    // The default keyword is reserved and is also not a valid <custom-ident>\n    if (eqStr(name, 'default')) {\n        return 0;\n    }\n\n    // TODO: ignore property specific keywords (as described https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident)\n    // Specifications using <custom-ident> must specify clearly what other keywords\n    // are excluded from <custom-ident>, if any—for example by saying that any pre-defined keywords\n    // in that property’s value definition are excluded. Excluded keywords are excluded\n    // in all ASCII case permutations.\n\n    return 1;\n}\n\n// https://drafts.csswg.org/css-values-4/#dashed-idents\n// The <dashed-ident> production is a <custom-ident>, with all the case-sensitivity that implies,\n// with the additional restriction that it must start with two dashes (U+002D HYPHEN-MINUS).\nfunction dashedIdent(token) {\n    if (token === null || token.type !== types.Ident) {\n        return 0;\n    }\n\n    // ... must start with two dashes (U+002D HYPHEN-MINUS)\n    if (charCodeAt(token.value, 0) !== 0x002D || charCodeAt(token.value, 1) !== 0x002D) {\n        return 0;\n    }\n\n    return 1;\n}\n\n// https://drafts.csswg.org/css-variables/#typedef-custom-property-name\n// A custom property is any property whose name starts with two dashes (U+002D HYPHEN-MINUS), like --foo.\n// The <custom-property-name> production corresponds to this: it’s defined as any <dashed-ident>\n// (a valid identifier that starts with two dashes), except -- itself, which is reserved for future use by CSS.\nfunction customPropertyName(token) {\n    // ... it’s defined as any <dashed-ident>\n    if (!dashedIdent(token)) {\n        return 0;\n    }\n\n    // ... except -- itself, which is reserved for future use by CSS\n    if (token.value === '--') {\n        return 0;\n    }\n\n    return 1;\n}\n\n// https://drafts.csswg.org/css-color-4/#hex-notation\n// The syntax of a <hex-color> is a <hash-token> token whose value consists of 3, 4, 6, or 8 hexadecimal digits.\n// In other words, a hex color is written as a hash character, \"#\", followed by some number of digits 0-9 or\n// letters a-f (the case of the letters doesn’t matter - #00ff00 is identical to #00FF00).\nfunction hexColor(token) {\n    if (token === null || token.type !== types.Hash) {\n        return 0;\n    }\n\n    const length = token.value.length;\n\n    // valid values (length): #rgb (4), #rgba (5), #rrggbb (7), #rrggbbaa (9)\n    if (length !== 4 && length !== 5 && length !== 7 && length !== 9) {\n        return 0;\n    }\n\n    for (let i = 1; i < length; i++) {\n        if (!charCodeDefinitions.isHexDigit(charCodeAt(token.value, i))) {\n            return 0;\n        }\n    }\n\n    return 1;\n}\n\nfunction idSelector(token) {\n    if (token === null || token.type !== types.Hash) {\n        return 0;\n    }\n\n    if (!charCodeDefinitions.isIdentifierStart(charCodeAt(token.value, 1), charCodeAt(token.value, 2), charCodeAt(token.value, 3))) {\n        return 0;\n    }\n\n    return 1;\n}\n\n// https://drafts.csswg.org/css-syntax/#any-value\n// It represents the entirety of what a valid declaration can have as its value.\nfunction declarationValue(token, getNextToken) {\n    if (!token) {\n        return 0;\n    }\n\n    let balanceCloseType = 0;\n    let balanceStash = [];\n    let length = 0;\n\n    // The <declaration-value> production matches any sequence of one or more tokens,\n    // so long as the sequence does not contain ...\n    scan:\n    do {\n        switch (token.type) {\n            // ... <bad-string-token>, <bad-url-token>,\n            case types.BadString:\n            case types.BadUrl:\n                break scan;\n\n            // ... unmatched <)-token>, <]-token>, or <}-token>,\n            case types.RightCurlyBracket:\n            case types.RightParenthesis:\n            case types.RightSquareBracket:\n                if (token.type !== balanceCloseType) {\n                    break scan;\n                }\n\n                balanceCloseType = balanceStash.pop();\n                break;\n\n            // ... or top-level <semicolon-token> tokens\n            case types.Semicolon:\n                if (balanceCloseType === 0) {\n                    break scan;\n                }\n\n                break;\n\n            // ... or <delim-token> tokens with a value of \"!\"\n            case types.Delim:\n                if (balanceCloseType === 0 && token.value === '!') {\n                    break scan;\n                }\n\n                break;\n\n            case types.Function:\n            case types.LeftParenthesis:\n            case types.LeftSquareBracket:\n            case types.LeftCurlyBracket:\n                balanceStash.push(balanceCloseType);\n                balanceCloseType = balancePair.get(token.type);\n                break;\n        }\n\n        length++;\n    } while (token = getNextToken(length));\n\n    return length;\n}\n\n// https://drafts.csswg.org/css-syntax/#any-value\n// The <any-value> production is identical to <declaration-value>, but also\n// allows top-level <semicolon-token> tokens and <delim-token> tokens\n// with a value of \"!\". It represents the entirety of what valid CSS can be in any context.\nfunction anyValue(token, getNextToken) {\n    if (!token) {\n        return 0;\n    }\n\n    let balanceCloseType = 0;\n    let balanceStash = [];\n    let length = 0;\n\n    // The <any-value> production matches any sequence of one or more tokens,\n    // so long as the sequence ...\n    scan:\n    do {\n        switch (token.type) {\n            // ... does not contain <bad-string-token>, <bad-url-token>,\n            case types.BadString:\n            case types.BadUrl:\n                break scan;\n\n            // ... unmatched <)-token>, <]-token>, or <}-token>,\n            case types.RightCurlyBracket:\n            case types.RightParenthesis:\n            case types.RightSquareBracket:\n                if (token.type !== balanceCloseType) {\n                    break scan;\n                }\n\n                balanceCloseType = balanceStash.pop();\n                break;\n\n            case types.Function:\n            case types.LeftParenthesis:\n            case types.LeftSquareBracket:\n            case types.LeftCurlyBracket:\n                balanceStash.push(balanceCloseType);\n                balanceCloseType = balancePair.get(token.type);\n                break;\n        }\n\n        length++;\n    } while (token = getNextToken(length));\n\n    return length;\n}\n\n// =========================\n// Dimensions\n//\n\nfunction dimension(type) {\n    if (type) {\n        type = new Set(type);\n    }\n\n    return function(token, getNextToken, opts) {\n        if (token === null || token.type !== types.Dimension) {\n            return 0;\n        }\n\n        const numberEnd = utils.consumeNumber(token.value, 0);\n\n        // check unit\n        if (type !== null) {\n            // check for IE postfix hack, i.e. 123px\\0 or 123px\\9\n            const reverseSolidusOffset = token.value.indexOf('\\\\', numberEnd);\n            const unit = reverseSolidusOffset === -1 || !isPostfixIeHack(token.value, reverseSolidusOffset)\n                ? token.value.substr(numberEnd)\n                : token.value.substring(numberEnd, reverseSolidusOffset);\n\n            if (type.has(unit.toLowerCase()) === false) {\n                return 0;\n            }\n        }\n\n        // check range if specified\n        if (outOfRange(opts, token.value, numberEnd)) {\n            return 0;\n        }\n\n        return 1;\n    };\n}\n\n// =========================\n// Percentage\n//\n\n// §5.5. Percentages: the <percentage> type\n// https://drafts.csswg.org/css-values-4/#percentages\nfunction percentage(token, getNextToken, opts) {\n    // ... corresponds to the <percentage-token> production\n    if (token === null || token.type !== types.Percentage) {\n        return 0;\n    }\n\n    // check range if specified\n    if (outOfRange(opts, token.value, token.value.length - 1)) {\n        return 0;\n    }\n\n    return 1;\n}\n\n// =========================\n// Numeric\n//\n\n// https://drafts.csswg.org/css-values-4/#numbers\n// The value <zero> represents a literal number with the value 0. Expressions that merely\n// evaluate to a <number> with the value 0 (for example, calc(0)) do not match <zero>;\n// only literal <number-token>s do.\nfunction zero(next) {\n    if (typeof next !== 'function') {\n        next = function() {\n            return 0;\n        };\n    }\n\n    return function(token, getNextToken, opts) {\n        if (token !== null && token.type === types.Number) {\n            if (Number(token.value) === 0) {\n                return 1;\n            }\n        }\n\n        return next(token, getNextToken, opts);\n    };\n}\n\n// § 5.3. Real Numbers: the <number> type\n// https://drafts.csswg.org/css-values-4/#numbers\n// Number values are denoted by <number>, and represent real numbers, possibly with a fractional component.\n// ... It corresponds to the <number-token> production\nfunction number(token, getNextToken, opts) {\n    if (token === null) {\n        return 0;\n    }\n\n    const numberEnd = utils.consumeNumber(token.value, 0);\n    const isNumber = numberEnd === token.value.length;\n    if (!isNumber && !isPostfixIeHack(token.value, numberEnd)) {\n        return 0;\n    }\n\n    // check range if specified\n    if (outOfRange(opts, token.value, numberEnd)) {\n        return 0;\n    }\n\n    return 1;\n}\n\n// §5.2. Integers: the <integer> type\n// https://drafts.csswg.org/css-values-4/#integers\nfunction integer(token, getNextToken, opts) {\n    // ... corresponds to a subset of the <number-token> production\n    if (token === null || token.type !== types.Number) {\n        return 0;\n    }\n\n    // The first digit of an integer may be immediately preceded by `-` or `+` to indicate the integer’s sign.\n    let i = charCodeAt(token.value, 0) === 0x002B ||       // U+002B PLUS SIGN (+)\n            charCodeAt(token.value, 0) === 0x002D ? 1 : 0; // U+002D HYPHEN-MINUS (-)\n\n    // When written literally, an integer is one or more decimal digits 0 through 9 ...\n    for (; i < token.value.length; i++) {\n        if (!charCodeDefinitions.isDigit(charCodeAt(token.value, i))) {\n            return 0;\n        }\n    }\n\n    // check range if specified\n    if (outOfRange(opts, token.value, i)) {\n        return 0;\n    }\n\n    return 1;\n}\n\n// token types\nconst tokenTypes = {\n    'ident-token': tokenType(types.Ident),\n    'function-token': tokenType(types.Function),\n    'at-keyword-token': tokenType(types.AtKeyword),\n    'hash-token': tokenType(types.Hash),\n    'string-token': tokenType(types.String),\n    'bad-string-token': tokenType(types.BadString),\n    'url-token': tokenType(types.Url),\n    'bad-url-token': tokenType(types.BadUrl),\n    'delim-token': tokenType(types.Delim),\n    'number-token': tokenType(types.Number),\n    'percentage-token': tokenType(types.Percentage),\n    'dimension-token': tokenType(types.Dimension),\n    'whitespace-token': tokenType(types.WhiteSpace),\n    'CDO-token': tokenType(types.CDO),\n    'CDC-token': tokenType(types.CDC),\n    'colon-token': tokenType(types.Colon),\n    'semicolon-token': tokenType(types.Semicolon),\n    'comma-token': tokenType(types.Comma),\n    '[-token': tokenType(types.LeftSquareBracket),\n    ']-token': tokenType(types.RightSquareBracket),\n    '(-token': tokenType(types.LeftParenthesis),\n    ')-token': tokenType(types.RightParenthesis),\n    '{-token': tokenType(types.LeftCurlyBracket),\n    '}-token': tokenType(types.RightCurlyBracket)\n};\n\n// token production types\nconst productionTypes = {\n    // token type aliases\n    'string': tokenType(types.String),\n    'ident': tokenType(types.Ident),\n\n    // percentage\n    'percentage': calc(percentage),\n\n    // numeric\n    'zero': zero(),\n    'number': calc(number),\n    'integer': calc(integer),\n\n    // complex types\n    'custom-ident': customIdent,\n    'dashed-ident': dashedIdent,\n    'custom-property-name': customPropertyName,\n    'hex-color': hexColor,\n    'id-selector': idSelector, // element( <id-selector> )\n    'an-plus-b': genericAnPlusB,\n    'urange': genericUrange,\n    'declaration-value': declarationValue,\n    'any-value': anyValue\n};\n\n// dimensions types depend on units set\nfunction createDemensionTypes(units) {\n    const {\n        angle,\n        decibel,\n        frequency,\n        flex,\n        length,\n        resolution,\n        semitones,\n        time\n    } = units || {};\n\n    return {\n        'dimension': calc(dimension(null)),\n        'angle': calc(dimension(angle)),\n        'decibel': calc(dimension(decibel)),\n        'frequency': calc(dimension(frequency)),\n        'flex': calc(dimension(flex)),\n        'length': calc(zero(dimension(length))),\n        'resolution': calc(dimension(resolution)),\n        'semitones': calc(dimension(semitones)),\n        'time': calc(dimension(time))\n    };\n}\n\nfunction createGenericTypes(units) {\n    return {\n        ...tokenTypes,\n        ...productionTypes,\n        ...createDemensionTypes(units)\n    };\n}\n\nexports.createDemensionTypes = createDemensionTypes;\nexports.createGenericTypes = createGenericTypes;\nexports.productionTypes = productionTypes;\nexports.tokenTypes = tokenTypes;\n","'use strict';\n\nconst length = [\n    // absolute length units https://www.w3.org/TR/css-values-3/#lengths\n    'cm', 'mm', 'q', 'in', 'pt', 'pc', 'px',\n    // font-relative length units https://drafts.csswg.org/css-values-4/#font-relative-lengths\n    'em', 'rem',\n    'ex', 'rex',\n    'cap', 'rcap',\n    'ch', 'rch',\n    'ic', 'ric',\n    'lh', 'rlh',\n    // viewport-percentage lengths https://drafts.csswg.org/css-values-4/#viewport-relative-lengths\n    'vw', 'svw', 'lvw', 'dvw',\n    'vh', 'svh', 'lvh', 'dvh',\n    'vi', 'svi', 'lvi', 'dvi',\n    'vb', 'svb', 'lvb', 'dvb',\n    'vmin', 'svmin', 'lvmin', 'dvmin',\n    'vmax', 'svmax', 'lvmax', 'dvmax',\n    // container relative lengths https://drafts.csswg.org/css-contain-3/#container-lengths\n    'cqw', 'cqh', 'cqi', 'cqb', 'cqmin', 'cqmax'\n];\nconst angle = ['deg', 'grad', 'rad', 'turn'];    // https://www.w3.org/TR/css-values-3/#angles\nconst time = ['s', 'ms'];                        // https://www.w3.org/TR/css-values-3/#time\nconst frequency = ['hz', 'khz'];                 // https://www.w3.org/TR/css-values-3/#frequency\nconst resolution = ['dpi', 'dpcm', 'dppx', 'x']; // https://www.w3.org/TR/css-values-3/#resolution\nconst flex = ['fr'];                             // https://drafts.csswg.org/css-grid/#fr-unit\nconst decibel = ['db'];                          // https://www.w3.org/TR/css3-speech/#mixing-props-voice-volume\nconst semitones = ['st'];                        // https://www.w3.org/TR/css3-speech/#voice-props-voice-pitch\n\nexports.angle = angle;\nexports.decibel = decibel;\nexports.flex = flex;\nexports.frequency = frequency;\nexports.length = length;\nexports.resolution = resolution;\nexports.semitones = semitones;\nexports.time = time;\n","'use strict';\n\nconst index = require('../tokenizer/index.cjs');\n\nconst astToTokens = {\n    decorator(handlers) {\n        const tokens = [];\n        let curNode = null;\n\n        return {\n            ...handlers,\n            node(node) {\n                const tmp = curNode;\n                curNode = node;\n                handlers.node.call(this, node);\n                curNode = tmp;\n            },\n            emit(value, type, auto) {\n                tokens.push({\n                    type,\n                    value,\n                    node: auto ? null : curNode\n                });\n            },\n            result() {\n                return tokens;\n            }\n        };\n    }\n};\n\nfunction stringToTokens(str) {\n    const tokens = [];\n\n    index.tokenize(str, (type, start, end) =>\n        tokens.push({\n            type,\n            value: str.slice(start, end),\n            node: null\n        })\n    );\n\n    return tokens;\n}\n\nfunction prepareTokens(value, syntax) {\n    if (typeof value === 'string') {\n        return stringToTokens(value);\n    }\n\n    return syntax.generate(value, astToTokens);\n}\n\nmodule.exports = prepareTokens;\n","'use strict';\n\nconst createCustomError = require('../utils/create-custom-error.cjs');\n\nfunction SyntaxError(message, input, offset) {\n    return Object.assign(createCustomError.createCustomError('SyntaxError', message), {\n        input,\n        offset,\n        rawMessage: message,\n        message: message + '\\n' +\n            '  ' + input + '\\n' +\n            '--' + new Array((offset || input.length) + 1).join('-') + '^'\n    });\n}\n\nexports.SyntaxError = SyntaxError;\n","'use strict';\n\nconst SyntaxError = require('./SyntaxError.cjs');\n\nconst TAB = 9;\nconst N = 10;\nconst F = 12;\nconst R = 13;\nconst SPACE = 32;\nconst NAME_CHAR = new Uint8Array(128).map((_, idx) =>\n    /[a-zA-Z0-9\\-]/.test(String.fromCharCode(idx)) ? 1 : 0\n);\n\nclass Scanner {\n    constructor(str) {\n        this.str = str;\n        this.pos = 0;\n    }\n\n    charCodeAt(pos) {\n        return pos < this.str.length ? this.str.charCodeAt(pos) : 0;\n    }\n    charCode() {\n        return this.charCodeAt(this.pos);\n    }\n    isNameCharCode(code = this.charCode()) {\n        return code < 128 && NAME_CHAR[code] === 1;\n    }\n    nextCharCode() {\n        return this.charCodeAt(this.pos + 1);\n    }\n    nextNonWsCode(pos) {\n        return this.charCodeAt(this.findWsEnd(pos));\n    }\n    skipWs() {\n        this.pos = this.findWsEnd(this.pos);\n    }\n    findWsEnd(pos) {\n        for (; pos < this.str.length; pos++) {\n            const code = this.str.charCodeAt(pos);\n            if (code !== R && code !== N && code !== F && code !== SPACE && code !== TAB) {\n                break;\n            }\n        }\n\n        return pos;\n    }\n    substringToPos(end) {\n        return this.str.substring(this.pos, this.pos = end);\n    }\n    eat(code) {\n        if (this.charCode() !== code) {\n            this.error('Expect `' + String.fromCharCode(code) + '`');\n        }\n\n        this.pos++;\n    }\n    peek() {\n        return this.pos < this.str.length ? this.str.charAt(this.pos++) : '';\n    }\n    error(message) {\n        throw new SyntaxError.SyntaxError(message, this.str, this.pos);\n    }\n\n    scanSpaces() {\n        return this.substringToPos(this.findWsEnd(this.pos));\n    }\n    scanWord() {\n        let end = this.pos;\n\n        for (; end < this.str.length; end++) {\n            const code = this.str.charCodeAt(end);\n            if (code >= 128 || NAME_CHAR[code] === 0) {\n                break;\n            }\n        }\n\n        if (this.pos === end) {\n            this.error('Expect a keyword');\n        }\n\n        return this.substringToPos(end);\n    }\n    scanNumber() {\n        let end = this.pos;\n\n        for (; end < this.str.length; end++) {\n            const code = this.str.charCodeAt(end);\n\n            if (code < 48 || code > 57) {\n                break;\n            }\n        }\n\n        if (this.pos === end) {\n            this.error('Expect a number');\n        }\n\n        return this.substringToPos(end);\n    }\n    scanString() {\n        const end = this.str.indexOf('\\'', this.pos + 1);\n\n        if (end === -1) {\n            this.pos = this.str.length;\n            this.error('Expect an apostrophe');\n        }\n\n        return this.substringToPos(end + 1);\n    }\n}\n\nexports.Scanner = Scanner;\n","'use strict';\n\nconst scanner = require('./scanner.cjs');\n\nconst TAB = 9;\nconst N = 10;\nconst F = 12;\nconst R = 13;\nconst SPACE = 32;\nconst EXCLAMATIONMARK = 33;    // !\nconst NUMBERSIGN = 35;         // #\nconst AMPERSAND = 38;          // &\nconst APOSTROPHE = 39;         // '\nconst LEFTPARENTHESIS = 40;    // (\nconst RIGHTPARENTHESIS = 41;   // )\nconst ASTERISK = 42;           // *\nconst PLUSSIGN = 43;           // +\nconst COMMA = 44;              // ,\nconst HYPERMINUS = 45;         // -\nconst LESSTHANSIGN = 60;       // <\nconst GREATERTHANSIGN = 62;    // >\nconst QUESTIONMARK = 63;       // ?\nconst COMMERCIALAT = 64;       // @\nconst LEFTSQUAREBRACKET = 91;  // [\nconst RIGHTSQUAREBRACKET = 93; // ]\nconst LEFTCURLYBRACKET = 123;  // {\nconst VERTICALLINE = 124;      // |\nconst RIGHTCURLYBRACKET = 125; // }\nconst INFINITY = 8734;         // ∞\nconst COMBINATOR_PRECEDENCE = {\n    ' ': 1,\n    '&&': 2,\n    '||': 3,\n    '|': 4\n};\n\nfunction readMultiplierRange(scanner) {\n    let min = null;\n    let max = null;\n\n    scanner.eat(LEFTCURLYBRACKET);\n    scanner.skipWs();\n\n    min = scanner.scanNumber(scanner);\n    scanner.skipWs();\n\n    if (scanner.charCode() === COMMA) {\n        scanner.pos++;\n        scanner.skipWs();\n\n        if (scanner.charCode() !== RIGHTCURLYBRACKET) {\n            max = scanner.scanNumber(scanner);\n            scanner.skipWs();\n        }\n    } else {\n        max = min;\n    }\n\n    scanner.eat(RIGHTCURLYBRACKET);\n\n    return {\n        min: Number(min),\n        max: max ? Number(max) : 0\n    };\n}\n\nfunction readMultiplier(scanner) {\n    let range = null;\n    let comma = false;\n\n    switch (scanner.charCode()) {\n        case ASTERISK:\n            scanner.pos++;\n\n            range = {\n                min: 0,\n                max: 0\n            };\n\n            break;\n\n        case PLUSSIGN:\n            scanner.pos++;\n\n            range = {\n                min: 1,\n                max: 0\n            };\n\n            break;\n\n        case QUESTIONMARK:\n            scanner.pos++;\n\n            range = {\n                min: 0,\n                max: 1\n            };\n\n            break;\n\n        case NUMBERSIGN:\n            scanner.pos++;\n\n            comma = true;\n\n            if (scanner.charCode() === LEFTCURLYBRACKET) {\n                range = readMultiplierRange(scanner);\n            } else if (scanner.charCode() === QUESTIONMARK) {\n                // https://www.w3.org/TR/css-values-4/#component-multipliers\n                // > the # and ? multipliers may be stacked as #?\n                // In this case just treat \"#?\" as a single multiplier\n                // { min: 0, max: 0, comma: true }\n                scanner.pos++;\n                range = {\n                    min: 0,\n                    max: 0\n                };\n            } else {\n                range = {\n                    min: 1,\n                    max: 0\n                };\n            }\n\n            break;\n\n        case LEFTCURLYBRACKET:\n            range = readMultiplierRange(scanner);\n            break;\n\n        default:\n            return null;\n    }\n\n    return {\n        type: 'Multiplier',\n        comma,\n        min: range.min,\n        max: range.max,\n        term: null\n    };\n}\n\nfunction maybeMultiplied(scanner, node) {\n    const multiplier = readMultiplier(scanner);\n\n    if (multiplier !== null) {\n        multiplier.term = node;\n\n        // https://www.w3.org/TR/css-values-4/#component-multipliers\n        // > The + and # multipliers may be stacked as +#;\n        // Represent \"+#\" as nested multipliers:\n        // { ...<multiplier #>,\n        //   term: {\n        //     ...<multipler +>,\n        //     term: node\n        //   }\n        // }\n        if (scanner.charCode() === NUMBERSIGN &&\n            scanner.charCodeAt(scanner.pos - 1) === PLUSSIGN) {\n            return maybeMultiplied(scanner, multiplier);\n        }\n\n        return multiplier;\n    }\n\n    return node;\n}\n\nfunction maybeToken(scanner) {\n    const ch = scanner.peek();\n\n    if (ch === '') {\n        return null;\n    }\n\n    return maybeMultiplied(scanner, {\n        type: 'Token',\n        value: ch\n    });\n}\n\nfunction readProperty(scanner) {\n    let name;\n\n    scanner.eat(LESSTHANSIGN);\n    scanner.eat(APOSTROPHE);\n\n    name = scanner.scanWord();\n\n    scanner.eat(APOSTROPHE);\n    scanner.eat(GREATERTHANSIGN);\n\n    return maybeMultiplied(scanner, {\n        type: 'Property',\n        name\n    });\n}\n\n// https://drafts.csswg.org/css-values-3/#numeric-ranges\n// 4.1. Range Restrictions and Range Definition Notation\n//\n// Range restrictions can be annotated in the numeric type notation using CSS bracketed\n// range notation—[min,max]—within the angle brackets, after the identifying keyword,\n// indicating a closed range between (and including) min and max.\n// For example, <integer [0, 10]> indicates an integer between 0 and 10, inclusive.\nfunction readTypeRange(scanner) {\n    // use null for Infinity to make AST format JSON serializable/deserializable\n    let min = null; // -Infinity\n    let max = null; // Infinity\n    let sign = 1;\n\n    scanner.eat(LEFTSQUAREBRACKET);\n\n    if (scanner.charCode() === HYPERMINUS) {\n        scanner.peek();\n        sign = -1;\n    }\n\n    if (sign == -1 && scanner.charCode() === INFINITY) {\n        scanner.peek();\n    } else {\n        min = sign * Number(scanner.scanNumber(scanner));\n\n        if (scanner.isNameCharCode()) {\n            min += scanner.scanWord();\n        }\n    }\n\n    scanner.skipWs();\n    scanner.eat(COMMA);\n    scanner.skipWs();\n\n    if (scanner.charCode() === INFINITY) {\n        scanner.peek();\n    } else {\n        sign = 1;\n\n        if (scanner.charCode() === HYPERMINUS) {\n            scanner.peek();\n            sign = -1;\n        }\n\n        max = sign * Number(scanner.scanNumber(scanner));\n\n        if (scanner.isNameCharCode()) {\n            max += scanner.scanWord();\n        }\n    }\n\n    scanner.eat(RIGHTSQUAREBRACKET);\n\n    return {\n        type: 'Range',\n        min,\n        max\n    };\n}\n\nfunction readType(scanner) {\n    let name;\n    let opts = null;\n\n    scanner.eat(LESSTHANSIGN);\n    name = scanner.scanWord();\n\n    // https://drafts.csswg.org/css-values-5/#boolean\n    if (name === 'boolean-expr') {\n        scanner.eat(LEFTSQUAREBRACKET);\n\n        const implicitGroup = readImplicitGroup(scanner, RIGHTSQUAREBRACKET);\n\n        scanner.eat(RIGHTSQUAREBRACKET);\n        scanner.eat(GREATERTHANSIGN);\n\n        return maybeMultiplied(scanner, {\n            type: 'Boolean',\n            term: implicitGroup.terms.length === 1\n                ? implicitGroup.terms[0]\n                : implicitGroup\n        });\n    }\n\n    if (scanner.charCode() === LEFTPARENTHESIS &&\n        scanner.nextCharCode() === RIGHTPARENTHESIS) {\n        scanner.pos += 2;\n        name += '()';\n    }\n\n    if (scanner.charCodeAt(scanner.findWsEnd(scanner.pos)) === LEFTSQUAREBRACKET) {\n        scanner.skipWs();\n        opts = readTypeRange(scanner);\n    }\n\n    scanner.eat(GREATERTHANSIGN);\n\n    return maybeMultiplied(scanner, {\n        type: 'Type',\n        name,\n        opts\n    });\n}\n\nfunction readKeywordOrFunction(scanner) {\n    const name = scanner.scanWord();\n\n    if (scanner.charCode() === LEFTPARENTHESIS) {\n        scanner.pos++;\n\n        return {\n            type: 'Function',\n            name\n        };\n    }\n\n    return maybeMultiplied(scanner, {\n        type: 'Keyword',\n        name\n    });\n}\n\nfunction regroupTerms(terms, combinators) {\n    function createGroup(terms, combinator) {\n        return {\n            type: 'Group',\n            terms,\n            combinator,\n            disallowEmpty: false,\n            explicit: false\n        };\n    }\n\n    let combinator;\n\n    combinators = Object.keys(combinators)\n        .sort((a, b) => COMBINATOR_PRECEDENCE[a] - COMBINATOR_PRECEDENCE[b]);\n\n    while (combinators.length > 0) {\n        combinator = combinators.shift();\n\n        let i = 0;\n        let subgroupStart = 0;\n\n        for (; i < terms.length; i++) {\n            const term = terms[i];\n\n            if (term.type === 'Combinator') {\n                if (term.value === combinator) {\n                    if (subgroupStart === -1) {\n                        subgroupStart = i - 1;\n                    }\n                    terms.splice(i, 1);\n                    i--;\n                } else {\n                    if (subgroupStart !== -1 && i - subgroupStart > 1) {\n                        terms.splice(\n                            subgroupStart,\n                            i - subgroupStart,\n                            createGroup(terms.slice(subgroupStart, i), combinator)\n                        );\n                        i = subgroupStart + 1;\n                    }\n                    subgroupStart = -1;\n                }\n            }\n        }\n\n        if (subgroupStart !== -1 && combinators.length) {\n            terms.splice(\n                subgroupStart,\n                i - subgroupStart,\n                createGroup(terms.slice(subgroupStart, i), combinator)\n            );\n        }\n    }\n\n    return combinator;\n}\n\nfunction readImplicitGroup(scanner, stopCharCode) {\n    const combinators = Object.create(null);\n    const terms = [];\n    let token;\n    let prevToken = null;\n    let prevTokenPos = scanner.pos;\n\n    while (scanner.charCode() !== stopCharCode && (token = peek(scanner, stopCharCode))) {\n        if (token.type !== 'Spaces') {\n            if (token.type === 'Combinator') {\n                // check for combinator in group beginning and double combinator sequence\n                if (prevToken === null || prevToken.type === 'Combinator') {\n                    scanner.pos = prevTokenPos;\n                    scanner.error('Unexpected combinator');\n                }\n\n                combinators[token.value] = true;\n            } else if (prevToken !== null && prevToken.type !== 'Combinator') {\n                combinators[' '] = true;  // a b\n                terms.push({\n                    type: 'Combinator',\n                    value: ' '\n                });\n            }\n\n            terms.push(token);\n            prevToken = token;\n            prevTokenPos = scanner.pos;\n        }\n    }\n\n    // check for combinator in group ending\n    if (prevToken !== null && prevToken.type === 'Combinator') {\n        scanner.pos -= prevTokenPos;\n        scanner.error('Unexpected combinator');\n    }\n\n    return {\n        type: 'Group',\n        terms,\n        combinator: regroupTerms(terms, combinators) || ' ',\n        disallowEmpty: false,\n        explicit: false\n    };\n}\n\nfunction readGroup(scanner, stopCharCode) {\n    let result;\n\n    scanner.eat(LEFTSQUAREBRACKET);\n    result = readImplicitGroup(scanner, stopCharCode);\n    scanner.eat(RIGHTSQUAREBRACKET);\n\n    result.explicit = true;\n\n    if (scanner.charCode() === EXCLAMATIONMARK) {\n        scanner.pos++;\n        result.disallowEmpty = true;\n    }\n\n    return result;\n}\n\nfunction peek(scanner, stopCharCode) {\n    let code = scanner.charCode();\n\n    switch (code) {\n        case RIGHTSQUAREBRACKET:\n            // don't eat, stop scan a group\n            break;\n\n        case LEFTSQUAREBRACKET:\n            return maybeMultiplied(scanner, readGroup(scanner, stopCharCode));\n\n        case LESSTHANSIGN:\n            return scanner.nextCharCode() === APOSTROPHE\n                ? readProperty(scanner)\n                : readType(scanner);\n\n        case VERTICALLINE:\n            return {\n                type: 'Combinator',\n                value: scanner.substringToPos(\n                    scanner.pos + (scanner.nextCharCode() === VERTICALLINE ? 2 : 1)\n                )\n            };\n\n        case AMPERSAND:\n            scanner.pos++;\n            scanner.eat(AMPERSAND);\n\n            return {\n                type: 'Combinator',\n                value: '&&'\n            };\n\n        case COMMA:\n            scanner.pos++;\n            return {\n                type: 'Comma'\n            };\n\n        case APOSTROPHE:\n            return maybeMultiplied(scanner, {\n                type: 'String',\n                value: scanner.scanString()\n            });\n\n        case SPACE:\n        case TAB:\n        case N:\n        case R:\n        case F:\n            return {\n                type: 'Spaces',\n                value: scanner.scanSpaces()\n            };\n\n        case COMMERCIALAT:\n            code = scanner.nextCharCode();\n\n            if (scanner.isNameCharCode(code)) {\n                scanner.pos++;\n                return {\n                    type: 'AtKeyword',\n                    name: scanner.scanWord()\n                };\n            }\n\n            return maybeToken(scanner);\n\n        case ASTERISK:\n        case PLUSSIGN:\n        case QUESTIONMARK:\n        case NUMBERSIGN:\n        case EXCLAMATIONMARK:\n            // prohibited tokens (used as a multiplier start)\n            break;\n\n        case LEFTCURLYBRACKET:\n            // LEFTCURLYBRACKET is allowed since mdn/data uses it w/o quoting\n            // check next char isn't a number, because it's likely a disjoined multiplier\n            code = scanner.nextCharCode();\n\n            if (code < 48 || code > 57) {\n                return maybeToken(scanner);\n            }\n\n            break;\n\n        default:\n            if (scanner.isNameCharCode(code)) {\n                return readKeywordOrFunction(scanner);\n            }\n\n            return maybeToken(scanner);\n    }\n}\n\nfunction parse(source) {\n    const scanner$1 = new scanner.Scanner(source);\n    const result = readImplicitGroup(scanner$1);\n\n    if (scanner$1.pos !== source.length) {\n        scanner$1.error('Unexpected input');\n    }\n\n    // reduce redundant groups with single group term\n    if (result.terms.length === 1 && result.terms[0].type === 'Group') {\n        return result.terms[0];\n    }\n\n    return result;\n}\n\nexports.parse = parse;\n","'use strict';\n\nconst parse = require('../definition-syntax/parse.cjs');\n\nconst MATCH = { type: 'Match' };\nconst MISMATCH = { type: 'Mismatch' };\nconst DISALLOW_EMPTY = { type: 'DisallowEmpty' };\n\nconst LEFTPARENTHESIS = 40;  // (\nconst RIGHTPARENTHESIS = 41; // )\n\nfunction createCondition(match, thenBranch, elseBranch) {\n    // reduce node count\n    if (thenBranch === MATCH && elseBranch === MISMATCH) {\n        return match;\n    }\n\n    if (match === MATCH && thenBranch === MATCH && elseBranch === MATCH) {\n        return match;\n    }\n\n    if (match.type === 'If' && match.else === MISMATCH && thenBranch === MATCH) {\n        thenBranch = match.then;\n        match = match.match;\n    }\n\n    return {\n        type: 'If',\n        match,\n        then: thenBranch,\n        else: elseBranch\n    };\n}\n\nfunction isFunctionType(name) {\n    return (\n        name.length > 2 &&\n        name.charCodeAt(name.length - 2) === LEFTPARENTHESIS &&\n        name.charCodeAt(name.length - 1) === RIGHTPARENTHESIS\n    );\n}\n\nfunction isEnumCapatible(term) {\n    return (\n        term.type === 'Keyword' ||\n        term.type === 'AtKeyword' ||\n        term.type === 'Function' ||\n        term.type === 'Type' && isFunctionType(term.name)\n    );\n}\n\nfunction groupNode(terms, combinator = ' ', explicit = false) {\n    return {\n        type: 'Group',\n        terms,\n        combinator,\n        disallowEmpty: false,\n        explicit\n    };\n}\n\nfunction replaceTypeInGraph(node, replacements, visited = new Set()) {\n    if (!visited.has(node)) {\n        visited.add(node);\n\n        switch (node.type) {\n            case 'If':\n                node.match = replaceTypeInGraph(node.match, replacements, visited);\n                node.then = replaceTypeInGraph(node.then, replacements, visited);\n                node.else = replaceTypeInGraph(node.else, replacements, visited);\n                break;\n\n            case 'Type':\n                return replacements[node.name] || node;\n        }\n    }\n\n    return node;\n}\n\nfunction buildGroupMatchGraph(combinator, terms, atLeastOneTermMatched) {\n    switch (combinator) {\n        case ' ': {\n            // Juxtaposing components means that all of them must occur, in the given order.\n            //\n            // a b c\n            // =\n            // match a\n            //   then match b\n            //     then match c\n            //       then MATCH\n            //       else MISMATCH\n            //     else MISMATCH\n            //   else MISMATCH\n            let result = MATCH;\n\n            for (let i = terms.length - 1; i >= 0; i--) {\n                const term = terms[i];\n\n                result = createCondition(\n                    term,\n                    result,\n                    MISMATCH\n                );\n            }\n            return result;\n        }\n\n        case '|': {\n            // A bar (|) separates two or more alternatives: exactly one of them must occur.\n            //\n            // a | b | c\n            // =\n            // match a\n            //   then MATCH\n            //   else match b\n            //     then MATCH\n            //     else match c\n            //       then MATCH\n            //       else MISMATCH\n\n            let result = MISMATCH;\n            let map = null;\n\n            for (let i = terms.length - 1; i >= 0; i--) {\n                let term = terms[i];\n\n                // reduce sequence of keywords into a Enum\n                if (isEnumCapatible(term)) {\n                    if (map === null && i > 0 && isEnumCapatible(terms[i - 1])) {\n                        map = Object.create(null);\n                        result = createCondition(\n                            {\n                                type: 'Enum',\n                                map\n                            },\n                            MATCH,\n                            result\n                        );\n                    }\n\n                    if (map !== null) {\n                        const key = (isFunctionType(term.name) ? term.name.slice(0, -1) : term.name).toLowerCase();\n                        if (key in map === false) {\n                            map[key] = term;\n                            continue;\n                        }\n                    }\n                }\n\n                map = null;\n\n                // create a new conditonal node\n                result = createCondition(\n                    term,\n                    MATCH,\n                    result\n                );\n            }\n            return result;\n        }\n\n        case '&&': {\n            // A double ampersand (&&) separates two or more components,\n            // all of which must occur, in any order.\n\n            // Use MatchOnce for groups with a large number of terms,\n            // since &&-groups produces at least N!-node trees\n            if (terms.length > 5) {\n                return {\n                    type: 'MatchOnce',\n                    terms,\n                    all: true\n                };\n            }\n\n            // Use a combination tree for groups with small number of terms\n            //\n            // a && b && c\n            // =\n            // match a\n            //   then [b && c]\n            //   else match b\n            //     then [a && c]\n            //     else match c\n            //       then [a && b]\n            //       else MISMATCH\n            //\n            // a && b\n            // =\n            // match a\n            //   then match b\n            //     then MATCH\n            //     else MISMATCH\n            //   else match b\n            //     then match a\n            //       then MATCH\n            //       else MISMATCH\n            //     else MISMATCH\n            let result = MISMATCH;\n\n            for (let i = terms.length - 1; i >= 0; i--) {\n                const term = terms[i];\n                let thenClause;\n\n                if (terms.length > 1) {\n                    thenClause = buildGroupMatchGraph(\n                        combinator,\n                        terms.filter(function(newGroupTerm) {\n                            return newGroupTerm !== term;\n                        }),\n                        false\n                    );\n                } else {\n                    thenClause = MATCH;\n                }\n\n                result = createCondition(\n                    term,\n                    thenClause,\n                    result\n                );\n            }\n            return result;\n        }\n\n        case '||': {\n            // A double bar (||) separates two or more options:\n            // one or more of them must occur, in any order.\n\n            // Use MatchOnce for groups with a large number of terms,\n            // since ||-groups produces at least N!-node trees\n            if (terms.length > 5) {\n                return {\n                    type: 'MatchOnce',\n                    terms,\n                    all: false\n                };\n            }\n\n            // Use a combination tree for groups with small number of terms\n            //\n            // a || b || c\n            // =\n            // match a\n            //   then [b || c]\n            //   else match b\n            //     then [a || c]\n            //     else match c\n            //       then [a || b]\n            //       else MISMATCH\n            //\n            // a || b\n            // =\n            // match a\n            //   then match b\n            //     then MATCH\n            //     else MATCH\n            //   else match b\n            //     then match a\n            //       then MATCH\n            //       else MATCH\n            //     else MISMATCH\n            let result = atLeastOneTermMatched ? MATCH : MISMATCH;\n\n            for (let i = terms.length - 1; i >= 0; i--) {\n                const term = terms[i];\n                let thenClause;\n\n                if (terms.length > 1) {\n                    thenClause = buildGroupMatchGraph(\n                        combinator,\n                        terms.filter(function(newGroupTerm) {\n                            return newGroupTerm !== term;\n                        }),\n                        true\n                    );\n                } else {\n                    thenClause = MATCH;\n                }\n\n                result = createCondition(\n                    term,\n                    thenClause,\n                    result\n                );\n            }\n            return result;\n        }\n    }\n}\n\nfunction buildMultiplierMatchGraph(node) {\n    let result = MATCH;\n    let matchTerm = buildMatchGraphInternal(node.term);\n\n    if (node.max === 0) {\n        // disable repeating of empty match to prevent infinite loop\n        matchTerm = createCondition(\n            matchTerm,\n            DISALLOW_EMPTY,\n            MISMATCH\n        );\n\n        // an occurrence count is not limited, make a cycle;\n        // to collect more terms on each following matching mismatch\n        result = createCondition(\n            matchTerm,\n            null, // will be a loop\n            MISMATCH\n        );\n\n        result.then = createCondition(\n            MATCH,\n            MATCH,\n            result // make a loop\n        );\n\n        if (node.comma) {\n            result.then.else = createCondition(\n                { type: 'Comma', syntax: node },\n                result,\n                MISMATCH\n            );\n        }\n    } else {\n        // create a match node chain for [min .. max] interval with optional matches\n        for (let i = node.min || 1; i <= node.max; i++) {\n            if (node.comma && result !== MATCH) {\n                result = createCondition(\n                    { type: 'Comma', syntax: node },\n                    result,\n                    MISMATCH\n                );\n            }\n\n            result = createCondition(\n                matchTerm,\n                createCondition(\n                    MATCH,\n                    MATCH,\n                    result\n                ),\n                MISMATCH\n            );\n        }\n    }\n\n    if (node.min === 0) {\n        // allow zero match\n        result = createCondition(\n            MATCH,\n            MATCH,\n            result\n        );\n    } else {\n        // create a match node chain to collect [0 ... min - 1] required matches\n        for (let i = 0; i < node.min - 1; i++) {\n            if (node.comma && result !== MATCH) {\n                result = createCondition(\n                    { type: 'Comma', syntax: node },\n                    result,\n                    MISMATCH\n                );\n            }\n\n            result = createCondition(\n                matchTerm,\n                result,\n                MISMATCH\n            );\n        }\n    }\n\n    return result;\n}\n\nfunction buildMatchGraphInternal(node) {\n    if (typeof node === 'function') {\n        return {\n            type: 'Generic',\n            fn: node\n        };\n    }\n\n    switch (node.type) {\n        case 'Group': {\n            let result = buildGroupMatchGraph(\n                node.combinator,\n                node.terms.map(buildMatchGraphInternal),\n                false\n            );\n\n            if (node.disallowEmpty) {\n                result = createCondition(\n                    result,\n                    DISALLOW_EMPTY,\n                    MISMATCH\n                );\n            }\n\n            return result;\n        }\n\n        case 'Multiplier':\n            return buildMultiplierMatchGraph(node);\n\n        // https://drafts.csswg.org/css-values-5/#boolean\n        case 'Boolean': {\n            const term = buildMatchGraphInternal(node.term);\n            // <boolean-expr[ <test> ]> = not <boolean-expr-group> | <boolean-expr-group> [ [ and <boolean-expr-group> ]* | [ or <boolean-expr-group> ]* ]\n            const matchNode = buildMatchGraphInternal(groupNode([\n                groupNode([\n                    { type: 'Keyword', name: 'not' },\n                    { type: 'Type', name: '!boolean-group' }\n                ]),\n                groupNode([\n                    { type: 'Type', name: '!boolean-group' },\n                    groupNode([\n                        { type: 'Multiplier', comma: false, min: 0, max: 0, term: groupNode([\n                            { type: 'Keyword', name: 'and' },\n                            { type: 'Type', name: '!boolean-group' }\n                        ]) },\n                        { type: 'Multiplier', comma: false, min: 0, max: 0, term: groupNode([\n                            { type: 'Keyword', name: 'or' },\n                            { type: 'Type', name: '!boolean-group' }\n                        ]) }\n                    ], '|')\n                ])\n            ], '|'));\n            // <boolean-expr-group> = <test> | ( <boolean-expr[ <test> ]> ) | <general-enclosed>\n            const booleanGroup = buildMatchGraphInternal(\n                groupNode([\n                    { type: 'Type', name: '!term' },\n                    groupNode([\n                        { type: 'Token', value: '(' },\n                        { type: 'Type', name: '!self' },\n                        { type: 'Token', value: ')' }\n                    ]),\n                    { type: 'Type', name: 'general-enclosed' }\n                ], '|')\n            );\n\n            replaceTypeInGraph(booleanGroup, { '!term': term, '!self': matchNode });\n            replaceTypeInGraph(matchNode, { '!boolean-group': booleanGroup });\n\n            return matchNode;\n        }\n\n        case 'Type':\n        case 'Property':\n            return {\n                type: node.type,\n                name: node.name,\n                syntax: node\n            };\n\n        case 'Keyword':\n            return {\n                type: node.type,\n                name: node.name.toLowerCase(),\n                syntax: node\n            };\n\n        case 'AtKeyword':\n            return {\n                type: node.type,\n                name: '@' + node.name.toLowerCase(),\n                syntax: node\n            };\n\n        case 'Function':\n            return {\n                type: node.type,\n                name: node.name.toLowerCase() + '(',\n                syntax: node\n            };\n\n        case 'String':\n            // convert a one char length String to a Token\n            if (node.value.length === 3) {\n                return {\n                    type: 'Token',\n                    value: node.value.charAt(1),\n                    syntax: node\n                };\n            }\n\n            // otherwise use it as is\n            return {\n                type: node.type,\n                value: node.value.substr(1, node.value.length - 2).replace(/\\\\'/g, '\\''),\n                syntax: node\n            };\n\n        case 'Token':\n            return {\n                type: node.type,\n                value: node.value,\n                syntax: node\n            };\n\n        case 'Comma':\n            return {\n                type: node.type,\n                syntax: node\n            };\n\n        default:\n            throw new Error('Unknown node type:', node.type);\n    }\n}\n\nfunction buildMatchGraph(syntaxTree, ref) {\n    if (typeof syntaxTree === 'string') {\n        syntaxTree = parse.parse(syntaxTree);\n    }\n\n    return {\n        type: 'MatchGraph',\n        match: buildMatchGraphInternal(syntaxTree),\n        syntax: ref || null,\n        source: syntaxTree\n    };\n}\n\nexports.DISALLOW_EMPTY = DISALLOW_EMPTY;\nexports.MATCH = MATCH;\nexports.MISMATCH = MISMATCH;\nexports.buildMatchGraph = buildMatchGraph;\n","'use strict';\n\nconst matchGraph = require('./match-graph.cjs');\nconst types = require('../tokenizer/types.cjs');\n\nconst { hasOwnProperty } = Object.prototype;\nconst STUB = 0;\nconst TOKEN = 1;\nconst OPEN_SYNTAX = 2;\nconst CLOSE_SYNTAX = 3;\n\nconst EXIT_REASON_MATCH = 'Match';\nconst EXIT_REASON_MISMATCH = 'Mismatch';\nconst EXIT_REASON_ITERATION_LIMIT = 'Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)';\n\nconst ITERATION_LIMIT = 15000;\n\nfunction reverseList(list) {\n    let prev = null;\n    let next = null;\n    let item = list;\n\n    while (item !== null) {\n        next = item.prev;\n        item.prev = prev;\n        prev = item;\n        item = next;\n    }\n\n    return prev;\n}\n\nfunction areStringsEqualCaseInsensitive(testStr, referenceStr) {\n    if (testStr.length !== referenceStr.length) {\n        return false;\n    }\n\n    for (let i = 0; i < testStr.length; i++) {\n        const referenceCode = referenceStr.charCodeAt(i);\n        let testCode = testStr.charCodeAt(i);\n\n        // testCode.toLowerCase() for U+0041 LATIN CAPITAL LETTER A (A) .. U+005A LATIN CAPITAL LETTER Z (Z).\n        if (testCode >= 0x0041 && testCode <= 0x005A) {\n            testCode = testCode | 32;\n        }\n\n        if (testCode !== referenceCode) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\nfunction isContextEdgeDelim(token) {\n    if (token.type !== types.Delim) {\n        return false;\n    }\n\n    // Fix matching for unicode-range: U+30??, U+FF00-FF9F\n    // Probably we need to check out previous match instead\n    return token.value !== '?';\n}\n\nfunction isCommaContextStart(token) {\n    if (token === null) {\n        return true;\n    }\n\n    return (\n        token.type === types.Comma ||\n        token.type === types.Function ||\n        token.type === types.LeftParenthesis ||\n        token.type === types.LeftSquareBracket ||\n        token.type === types.LeftCurlyBracket ||\n        isContextEdgeDelim(token)\n    );\n}\n\nfunction isCommaContextEnd(token) {\n    if (token === null) {\n        return true;\n    }\n\n    return (\n        token.type === types.RightParenthesis ||\n        token.type === types.RightSquareBracket ||\n        token.type === types.RightCurlyBracket ||\n        (token.type === types.Delim && token.value === '/')\n    );\n}\n\nfunction internalMatch(tokens, state, syntaxes) {\n    function moveToNextToken() {\n        do {\n            tokenIndex++;\n            token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;\n        } while (token !== null && (token.type === types.WhiteSpace || token.type === types.Comment));\n    }\n\n    function getNextToken(offset) {\n        const nextIndex = tokenIndex + offset;\n\n        return nextIndex < tokens.length ? tokens[nextIndex] : null;\n    }\n\n    function stateSnapshotFromSyntax(nextState, prev) {\n        return {\n            nextState,\n            matchStack,\n            syntaxStack,\n            thenStack,\n            tokenIndex,\n            prev\n        };\n    }\n\n    function pushThenStack(nextState) {\n        thenStack = {\n            nextState,\n            matchStack,\n            syntaxStack,\n            prev: thenStack\n        };\n    }\n\n    function pushElseStack(nextState) {\n        elseStack = stateSnapshotFromSyntax(nextState, elseStack);\n    }\n\n    function addTokenToMatch() {\n        matchStack = {\n            type: TOKEN,\n            syntax: state.syntax,\n            token,\n            prev: matchStack\n        };\n\n        moveToNextToken();\n        syntaxStash = null;\n\n        if (tokenIndex > longestMatch) {\n            longestMatch = tokenIndex;\n        }\n    }\n\n    function openSyntax() {\n        syntaxStack = {\n            syntax: state.syntax,\n            opts: state.syntax.opts || (syntaxStack !== null && syntaxStack.opts) || null,\n            prev: syntaxStack\n        };\n\n        matchStack = {\n            type: OPEN_SYNTAX,\n            syntax: state.syntax,\n            token: matchStack.token,\n            prev: matchStack\n        };\n    }\n\n    function closeSyntax() {\n        if (matchStack.type === OPEN_SYNTAX) {\n            matchStack = matchStack.prev;\n        } else {\n            matchStack = {\n                type: CLOSE_SYNTAX,\n                syntax: syntaxStack.syntax,\n                token: matchStack.token,\n                prev: matchStack\n            };\n        }\n\n        syntaxStack = syntaxStack.prev;\n    }\n\n    let syntaxStack = null;\n    let thenStack = null;\n    let elseStack = null;\n\n    // null – stashing allowed, nothing stashed\n    // false – stashing disabled, nothing stashed\n    // anithing else – fail stashable syntaxes, some syntax stashed\n    let syntaxStash = null;\n\n    let iterationCount = 0; // count iterations and prevent infinite loop\n    let exitReason = null;\n\n    let token = null;\n    let tokenIndex = -1;\n    let longestMatch = 0;\n    let matchStack = {\n        type: STUB,\n        syntax: null,\n        token: null,\n        prev: null\n    };\n\n    moveToNextToken();\n\n    while (exitReason === null && ++iterationCount < ITERATION_LIMIT) {\n        // function mapList(list, fn) {\n        //     const result = [];\n        //     while (list) {\n        //         result.unshift(fn(list));\n        //         list = list.prev;\n        //     }\n        //     return result;\n        // }\n        // console.log('--\\n',\n        //     '#' + iterationCount,\n        //     require('util').inspect({\n        //         match: mapList(matchStack, x => x.type === TOKEN ? x.token && x.token.value : x.syntax ? ({ [OPEN_SYNTAX]: '<', [CLOSE_SYNTAX]: '</' }[x.type] || x.type) + '!' + x.syntax.name : null),\n        //         token: token && token.value,\n        //         tokenIndex,\n        //         syntax: syntax.type + (syntax.id ? ' #' + syntax.id : '')\n        //     }, { depth: null })\n        // );\n        switch (state.type) {\n            case 'Match':\n                if (thenStack === null) {\n                    // turn to MISMATCH when some tokens left unmatched\n                    if (token !== null) {\n                        // doesn't mismatch if just one token left and it's an IE hack\n                        if (tokenIndex !== tokens.length - 1 || (token.value !== '\\\\0' && token.value !== '\\\\9')) {\n                            state = matchGraph.MISMATCH;\n                            break;\n                        }\n                    }\n\n                    // break the main loop, return a result - MATCH\n                    exitReason = EXIT_REASON_MATCH;\n                    break;\n                }\n\n                // go to next syntax (`then` branch)\n                state = thenStack.nextState;\n\n                // check match is not empty\n                if (state === matchGraph.DISALLOW_EMPTY) {\n                    if (thenStack.matchStack === matchStack) {\n                        state = matchGraph.MISMATCH;\n                        break;\n                    } else {\n                        state = matchGraph.MATCH;\n                    }\n                }\n\n                // close syntax if needed\n                while (thenStack.syntaxStack !== syntaxStack) {\n                    closeSyntax();\n                }\n\n                // pop stack\n                thenStack = thenStack.prev;\n                break;\n\n            case 'Mismatch':\n                // when some syntax is stashed\n                if (syntaxStash !== null && syntaxStash !== false) {\n                    // there is no else branches or a branch reduce match stack\n                    if (elseStack === null || tokenIndex > elseStack.tokenIndex) {\n                        // restore state from the stash\n                        elseStack = syntaxStash;\n                        syntaxStash = false; // disable stashing\n                    }\n                } else if (elseStack === null) {\n                    // no else branches -> break the main loop\n                    // return a result - MISMATCH\n                    exitReason = EXIT_REASON_MISMATCH;\n                    break;\n                }\n\n                // go to next syntax (`else` branch)\n                state = elseStack.nextState;\n\n                // restore all the rest stack states\n                thenStack = elseStack.thenStack;\n                syntaxStack = elseStack.syntaxStack;\n                matchStack = elseStack.matchStack;\n                tokenIndex = elseStack.tokenIndex;\n                token = tokenIndex < tokens.length ? tokens[tokenIndex] : null;\n\n                // pop stack\n                elseStack = elseStack.prev;\n                break;\n\n            case 'MatchGraph':\n                state = state.match;\n                break;\n\n            case 'If':\n                // IMPORTANT: else stack push must go first,\n                // since it stores the state of thenStack before changes\n                if (state.else !== matchGraph.MISMATCH) {\n                    pushElseStack(state.else);\n                }\n\n                if (state.then !== matchGraph.MATCH) {\n                    pushThenStack(state.then);\n                }\n\n                state = state.match;\n                break;\n\n            case 'MatchOnce':\n                state = {\n                    type: 'MatchOnceBuffer',\n                    syntax: state,\n                    index: 0,\n                    mask: 0\n                };\n                break;\n\n            case 'MatchOnceBuffer': {\n                const terms = state.syntax.terms;\n\n                if (state.index === terms.length) {\n                    // no matches at all or it's required all terms to be matched\n                    if (state.mask === 0 || state.syntax.all) {\n                        state = matchGraph.MISMATCH;\n                        break;\n                    }\n\n                    // a partial match is ok\n                    state = matchGraph.MATCH;\n                    break;\n                }\n\n                // all terms are matched\n                if (state.mask === (1 << terms.length) - 1) {\n                    state = matchGraph.MATCH;\n                    break;\n                }\n\n                for (; state.index < terms.length; state.index++) {\n                    const matchFlag = 1 << state.index;\n\n                    if ((state.mask & matchFlag) === 0) {\n                        // IMPORTANT: else stack push must go first,\n                        // since it stores the state of thenStack before changes\n                        pushElseStack(state);\n                        pushThenStack({\n                            type: 'AddMatchOnce',\n                            syntax: state.syntax,\n                            mask: state.mask | matchFlag\n                        });\n\n                        // match\n                        state = terms[state.index++];\n                        break;\n                    }\n                }\n                break;\n            }\n\n            case 'AddMatchOnce':\n                state = {\n                    type: 'MatchOnceBuffer',\n                    syntax: state.syntax,\n                    index: 0,\n                    mask: state.mask\n                };\n                break;\n\n            case 'Enum':\n                if (token !== null) {\n                    let name = token.value.toLowerCase();\n\n                    // drop \\0 and \\9 hack from keyword name\n                    if (name.indexOf('\\\\') !== -1) {\n                        name = name.replace(/\\\\[09].*$/, '');\n                    }\n\n                    if (hasOwnProperty.call(state.map, name)) {\n                        state = state.map[name];\n                        break;\n                    }\n                }\n\n                state = matchGraph.MISMATCH;\n                break;\n\n            case 'Generic': {\n                const opts = syntaxStack !== null ? syntaxStack.opts : null;\n                const lastTokenIndex = tokenIndex + Math.floor(state.fn(token, getNextToken, opts));\n\n                if (!isNaN(lastTokenIndex) && lastTokenIndex > tokenIndex) {\n                    while (tokenIndex < lastTokenIndex) {\n                        addTokenToMatch();\n                    }\n\n                    state = matchGraph.MATCH;\n                } else {\n                    state = matchGraph.MISMATCH;\n                }\n\n                break;\n            }\n\n            case 'Type':\n            case 'Property': {\n                const syntaxDict = state.type === 'Type' ? 'types' : 'properties';\n                const dictSyntax = hasOwnProperty.call(syntaxes, syntaxDict) ? syntaxes[syntaxDict][state.name] : null;\n\n                if (!dictSyntax || !dictSyntax.match) {\n                    throw new Error(\n                        'Bad syntax reference: ' +\n                        (state.type === 'Type'\n                            ? '<' + state.name + '>'\n                            : '<\\'' + state.name + '\\'>')\n                    );\n                }\n\n                // stash a syntax for types with low priority\n                if (syntaxStash !== false && token !== null && state.type === 'Type') {\n                    const lowPriorityMatching =\n                        // https://drafts.csswg.org/css-values-4/#custom-idents\n                        // When parsing positionally-ambiguous keywords in a property value, a <custom-ident> production\n                        // can only claim the keyword if no other unfulfilled production can claim it.\n                        (state.name === 'custom-ident' && token.type === types.Ident) ||\n\n                        // https://drafts.csswg.org/css-values-4/#lengths\n                        // ... if a `0` could be parsed as either a <number> or a <length> in a property (such as line-height),\n                        // it must parse as a <number>\n                        (state.name === 'length' && token.value === '0');\n\n                    if (lowPriorityMatching) {\n                        if (syntaxStash === null) {\n                            syntaxStash = stateSnapshotFromSyntax(state, elseStack);\n                        }\n\n                        state = matchGraph.MISMATCH;\n                        break;\n                    }\n                }\n\n                openSyntax();\n                state = dictSyntax.matchRef || dictSyntax.match;\n                break;\n            }\n\n            case 'Keyword': {\n                const name = state.name;\n\n                if (token !== null) {\n                    let keywordName = token.value;\n\n                    // drop \\0 and \\9 hack from keyword name\n                    if (keywordName.indexOf('\\\\') !== -1) {\n                        keywordName = keywordName.replace(/\\\\[09].*$/, '');\n                    }\n\n                    if (areStringsEqualCaseInsensitive(keywordName, name)) {\n                        addTokenToMatch();\n                        state = matchGraph.MATCH;\n                        break;\n                    }\n                }\n\n                state = matchGraph.MISMATCH;\n                break;\n            }\n\n            case 'AtKeyword':\n            case 'Function':\n                if (token !== null && areStringsEqualCaseInsensitive(token.value, state.name)) {\n                    addTokenToMatch();\n                    state = matchGraph.MATCH;\n                    break;\n                }\n\n                state = matchGraph.MISMATCH;\n                break;\n\n            case 'Token':\n                if (token !== null && token.value === state.value) {\n                    addTokenToMatch();\n                    state = matchGraph.MATCH;\n                    break;\n                }\n\n                state = matchGraph.MISMATCH;\n                break;\n\n            case 'Comma':\n                if (token !== null && token.type === types.Comma) {\n                    if (isCommaContextStart(matchStack.token)) {\n                        state = matchGraph.MISMATCH;\n                    } else {\n                        addTokenToMatch();\n                        state = isCommaContextEnd(token) ? matchGraph.MISMATCH : matchGraph.MATCH;\n                    }\n                } else {\n                    state = isCommaContextStart(matchStack.token) || isCommaContextEnd(token) ? matchGraph.MATCH : matchGraph.MISMATCH;\n                }\n\n                break;\n\n            case 'String':\n                let string = '';\n                let lastTokenIndex = tokenIndex;\n\n                for (; lastTokenIndex < tokens.length && string.length < state.value.length; lastTokenIndex++) {\n                    string += tokens[lastTokenIndex].value;\n                }\n\n                if (areStringsEqualCaseInsensitive(string, state.value)) {\n                    while (tokenIndex < lastTokenIndex) {\n                        addTokenToMatch();\n                    }\n\n                    state = matchGraph.MATCH;\n                } else {\n                    state = matchGraph.MISMATCH;\n                }\n\n                break;\n\n            default:\n                throw new Error('Unknown node type: ' + state.type);\n        }\n    }\n\n    switch (exitReason) {\n        case null:\n            console.warn('[csstree-match] BREAK after ' + ITERATION_LIMIT + ' iterations');\n            exitReason = EXIT_REASON_ITERATION_LIMIT;\n            matchStack = null;\n            break;\n\n        case EXIT_REASON_MATCH:\n            while (syntaxStack !== null) {\n                closeSyntax();\n            }\n            break;\n\n        default:\n            matchStack = null;\n    }\n\n    return {\n        tokens,\n        reason: exitReason,\n        iterations: iterationCount,\n        match: matchStack,\n        longestMatch\n    };\n}\n\nfunction matchAsList(tokens, matchGraph, syntaxes) {\n    const matchResult = internalMatch(tokens, matchGraph, syntaxes || {});\n\n    if (matchResult.match !== null) {\n        let item = reverseList(matchResult.match).prev;\n\n        matchResult.match = [];\n\n        while (item !== null) {\n            switch (item.type) {\n                case OPEN_SYNTAX:\n                case CLOSE_SYNTAX:\n                    matchResult.match.push({\n                        type: item.type,\n                        syntax: item.syntax\n                    });\n                    break;\n\n                default:\n                    matchResult.match.push({\n                        token: item.token.value,\n                        node: item.token.node\n                    });\n                    break;\n            }\n\n            item = item.prev;\n        }\n    }\n\n    return matchResult;\n}\n\nfunction matchAsTree(tokens, matchGraph, syntaxes) {\n    const matchResult = internalMatch(tokens, matchGraph, syntaxes || {});\n\n    if (matchResult.match === null) {\n        return matchResult;\n    }\n\n    let item = matchResult.match;\n    let host = matchResult.match = {\n        syntax: matchGraph.syntax || null,\n        match: []\n    };\n    const hostStack = [host];\n\n    // revert a list and start with 2nd item since 1st is a stub item\n    item = reverseList(item).prev;\n\n    // build a tree\n    while (item !== null) {\n        switch (item.type) {\n            case OPEN_SYNTAX:\n                host.match.push(host = {\n                    syntax: item.syntax,\n                    match: []\n                });\n                hostStack.push(host);\n                break;\n\n            case CLOSE_SYNTAX:\n                hostStack.pop();\n                host = hostStack[hostStack.length - 1];\n                break;\n\n            default:\n                host.match.push({\n                    syntax: item.syntax || null,\n                    token: item.token.value,\n                    node: item.token.node\n                });\n        }\n\n        item = item.prev;\n    }\n\n    return matchResult;\n}\n\nexports.matchAsList = matchAsList;\nexports.matchAsTree = matchAsTree;\n","'use strict';\n\nfunction getTrace(node) {\n    function shouldPutToTrace(syntax) {\n        if (syntax === null) {\n            return false;\n        }\n\n        return (\n            syntax.type === 'Type' ||\n            syntax.type === 'Property' ||\n            syntax.type === 'Keyword'\n        );\n    }\n\n    function hasMatch(matchNode) {\n        if (Array.isArray(matchNode.match)) {\n            // use for-loop for better perfomance\n            for (let i = 0; i < matchNode.match.length; i++) {\n                if (hasMatch(matchNode.match[i])) {\n                    if (shouldPutToTrace(matchNode.syntax)) {\n                        result.unshift(matchNode.syntax);\n                    }\n\n                    return true;\n                }\n            }\n        } else if (matchNode.node === node) {\n            result = shouldPutToTrace(matchNode.syntax)\n                ? [matchNode.syntax]\n                : [];\n\n            return true;\n        }\n\n        return false;\n    }\n\n    let result = null;\n\n    if (this.matched !== null) {\n        hasMatch(this.matched);\n    }\n\n    return result;\n}\n\nfunction isType(node, type) {\n    return testNode(this, node, match => match.type === 'Type' && match.name === type);\n}\n\nfunction isProperty(node, property) {\n    return testNode(this, node, match => match.type === 'Property' && match.name === property);\n}\n\nfunction isKeyword(node) {\n    return testNode(this, node, match => match.type === 'Keyword');\n}\n\nfunction testNode(match, node, fn) {\n    const trace = getTrace.call(match, node);\n\n    if (trace === null) {\n        return false;\n    }\n\n    return trace.some(fn);\n}\n\nexports.getTrace = getTrace;\nexports.isKeyword = isKeyword;\nexports.isProperty = isProperty;\nexports.isType = isType;\n","'use strict';\n\nconst List = require('../utils/List.cjs');\n\nfunction getFirstMatchNode(matchNode) {\n    if ('node' in matchNode) {\n        return matchNode.node;\n    }\n\n    return getFirstMatchNode(matchNode.match[0]);\n}\n\nfunction getLastMatchNode(matchNode) {\n    if ('node' in matchNode) {\n        return matchNode.node;\n    }\n\n    return getLastMatchNode(matchNode.match[matchNode.match.length - 1]);\n}\n\nfunction matchFragments(lexer, ast, match, type, name) {\n    function findFragments(matchNode) {\n        if (matchNode.syntax !== null &&\n            matchNode.syntax.type === type &&\n            matchNode.syntax.name === name) {\n            const start = getFirstMatchNode(matchNode);\n            const end = getLastMatchNode(matchNode);\n\n            lexer.syntax.walk(ast, function(node, item, list) {\n                if (node === start) {\n                    const nodes = new List.List();\n\n                    do {\n                        nodes.appendData(item.data);\n\n                        if (item.data === end) {\n                            break;\n                        }\n\n                        item = item.next;\n                    } while (item !== null);\n\n                    fragments.push({\n                        parent: list,\n                        nodes\n                    });\n                }\n            });\n        }\n\n        if (Array.isArray(matchNode.match)) {\n            matchNode.match.forEach(findFragments);\n        }\n    }\n\n    const fragments = [];\n\n    if (match.matched !== null) {\n        findFragments(match.matched);\n    }\n\n    return fragments;\n}\n\nexports.matchFragments = matchFragments;\n","'use strict';\n\nconst List = require('../utils/List.cjs');\n\nconst { hasOwnProperty } = Object.prototype;\n\nfunction isValidNumber(value) {\n    // Number.isInteger(value) && value >= 0\n    return (\n        typeof value === 'number' &&\n        isFinite(value) &&\n        Math.floor(value) === value &&\n        value >= 0\n    );\n}\n\nfunction isValidLocation(loc) {\n    return (\n        Boolean(loc) &&\n        isValidNumber(loc.offset) &&\n        isValidNumber(loc.line) &&\n        isValidNumber(loc.column)\n    );\n}\n\nfunction createNodeStructureChecker(type, fields) {\n    return function checkNode(node, warn) {\n        if (!node || node.constructor !== Object) {\n            return warn(node, 'Type of node should be an Object');\n        }\n\n        for (let key in node) {\n            let valid = true;\n\n            if (hasOwnProperty.call(node, key) === false) {\n                continue;\n            }\n\n            if (key === 'type') {\n                if (node.type !== type) {\n                    warn(node, 'Wrong node type `' + node.type + '`, expected `' + type + '`');\n                }\n            } else if (key === 'loc') {\n                if (node.loc === null) {\n                    continue;\n                } else if (node.loc && node.loc.constructor === Object) {\n                    if (typeof node.loc.source !== 'string') {\n                        key += '.source';\n                    } else if (!isValidLocation(node.loc.start)) {\n                        key += '.start';\n                    } else if (!isValidLocation(node.loc.end)) {\n                        key += '.end';\n                    } else {\n                        continue;\n                    }\n                }\n\n                valid = false;\n            } else if (fields.hasOwnProperty(key)) {\n                valid = false;\n\n                for (let i = 0; !valid && i < fields[key].length; i++) {\n                    const fieldType = fields[key][i];\n\n                    switch (fieldType) {\n                        case String:\n                            valid = typeof node[key] === 'string';\n                            break;\n\n                        case Boolean:\n                            valid = typeof node[key] === 'boolean';\n                            break;\n\n                        case null:\n                            valid = node[key] === null;\n                            break;\n\n                        default:\n                            if (typeof fieldType === 'string') {\n                                valid = node[key] && node[key].type === fieldType;\n                            } else if (Array.isArray(fieldType)) {\n                                valid = node[key] instanceof List.List;\n                            }\n                    }\n                }\n            } else {\n                warn(node, 'Unknown field `' + key + '` for ' + type + ' node type');\n            }\n\n            if (!valid) {\n                warn(node, 'Bad value for `' + type + '.' + key + '`');\n            }\n        }\n\n        for (const key in fields) {\n            if (hasOwnProperty.call(fields, key) &&\n                hasOwnProperty.call(node, key) === false) {\n                warn(node, 'Field `' + type + '.' + key + '` is missed');\n            }\n        }\n    };\n}\n\nfunction genTypesList(fieldTypes, path) {\n    const docsTypes = [];\n\n    for (let i = 0; i < fieldTypes.length; i++) {\n        const fieldType = fieldTypes[i];\n        if (fieldType === String || fieldType === Boolean) {\n            docsTypes.push(fieldType.name.toLowerCase());\n        } else if (fieldType === null) {\n            docsTypes.push('null');\n        } else if (typeof fieldType === 'string') {\n            docsTypes.push(fieldType);\n        } else if (Array.isArray(fieldType)) {\n            docsTypes.push('List<' + (genTypesList(fieldType, path) || 'any') + '>'); // TODO: use type enum\n        } else {\n            throw new Error('Wrong value `' + fieldType + '` in `' + path + '` structure definition');\n        }\n    }\n\n    return docsTypes.join(' | ');\n}\n\nfunction processStructure(name, nodeType) {\n    const structure = nodeType.structure;\n    const fields = {\n        type: String,\n        loc: true\n    };\n    const docs = {\n        type: '\"' + name + '\"'\n    };\n\n    for (const key in structure) {\n        if (hasOwnProperty.call(structure, key) === false) {\n            continue;\n        }\n\n        const fieldTypes = fields[key] = Array.isArray(structure[key])\n            ? structure[key].slice()\n            : [structure[key]];\n\n        docs[key] = genTypesList(fieldTypes, name + '.' + key);\n    }\n\n    return {\n        docs,\n        check: createNodeStructureChecker(name, fields)\n    };\n}\n\nfunction getStructureFromConfig(config) {\n    const structure = {};\n\n    if (config.node) {\n        for (const name in config.node) {\n            if (hasOwnProperty.call(config.node, name)) {\n                const nodeType = config.node[name];\n\n                if (nodeType.structure) {\n                    structure[name] = processStructure(name, nodeType);\n                } else {\n                    throw new Error('Missed `structure` field in `' + name + '` node type definition');\n                }\n            }\n        }\n    }\n\n    return structure;\n}\n\nexports.getStructureFromConfig = getStructureFromConfig;\n","'use strict';\n\nconst noop = function() {};\n\nfunction ensureFunction(value) {\n    return typeof value === 'function' ? value : noop;\n}\n\nfunction walk(node, options, context) {\n    function walk(node) {\n        enter.call(context, node);\n\n        switch (node.type) {\n            case 'Group':\n                node.terms.forEach(walk);\n                break;\n\n            case 'Multiplier':\n            case 'Boolean':\n                walk(node.term);\n                break;\n\n            case 'Type':\n            case 'Property':\n            case 'Keyword':\n            case 'AtKeyword':\n            case 'Function':\n            case 'String':\n            case 'Token':\n            case 'Comma':\n                break;\n\n            default:\n                throw new Error('Unknown type: ' + node.type);\n        }\n\n        leave.call(context, node);\n    }\n\n    let enter = noop;\n    let leave = noop;\n\n    if (typeof options === 'function') {\n        enter = options;\n    } else if (options) {\n        enter = ensureFunction(options.enter);\n        leave = ensureFunction(options.leave);\n    }\n\n    if (enter === noop && leave === noop) {\n        throw new Error('Neither `enter` nor `leave` walker handler is set or both aren\\'t a function');\n    }\n\n    walk(node);\n}\n\nexports.walk = walk;\n","'use strict';\n\nconst error = require('./error.cjs');\nconst names = require('../utils/names.cjs');\nconst genericConst = require('./generic-const.cjs');\nconst generic = require('./generic.cjs');\nconst units = require('./units.cjs');\nconst prepareTokens = require('./prepare-tokens.cjs');\nconst matchGraph = require('./match-graph.cjs');\nconst match = require('./match.cjs');\nconst trace = require('./trace.cjs');\nconst search = require('./search.cjs');\nconst structure = require('./structure.cjs');\nconst parse = require('../definition-syntax/parse.cjs');\nconst generate = require('../definition-syntax/generate.cjs');\nconst walk = require('../definition-syntax/walk.cjs');\n\nfunction dumpMapSyntax(map, compact, syntaxAsAst) {\n    const result = {};\n\n    for (const name in map) {\n        if (map[name].syntax) {\n            result[name] = syntaxAsAst\n                ? map[name].syntax\n                : generate.generate(map[name].syntax, { compact });\n        }\n    }\n\n    return result;\n}\n\nfunction dumpAtruleMapSyntax(map, compact, syntaxAsAst) {\n    const result = {};\n\n    for (const [name, atrule] of Object.entries(map)) {\n        result[name] = {\n            prelude: atrule.prelude && (\n                syntaxAsAst\n                    ? atrule.prelude.syntax\n                    : generate.generate(atrule.prelude.syntax, { compact })\n            ),\n            descriptors: atrule.descriptors && dumpMapSyntax(atrule.descriptors, compact, syntaxAsAst)\n        };\n    }\n\n    return result;\n}\n\nfunction valueHasVar(tokens) {\n    for (let i = 0; i < tokens.length; i++) {\n        if (tokens[i].value.toLowerCase() === 'var(') {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nfunction syntaxHasTopLevelCommaMultiplier(syntax) {\n    const singleTerm = syntax.terms[0];\n\n    return (\n        syntax.explicit === false &&\n        syntax.terms.length === 1 &&\n        singleTerm.type === 'Multiplier' &&\n        singleTerm.comma === true\n    );\n}\n\nfunction buildMatchResult(matched, error, iterations) {\n    return {\n        matched,\n        iterations,\n        error,\n        ...trace\n    };\n}\n\nfunction matchSyntax(lexer, syntax, value, useCssWideKeywords) {\n    const tokens = prepareTokens(value, lexer.syntax);\n    let result;\n\n    if (valueHasVar(tokens)) {\n        return buildMatchResult(null, new Error('Matching for a tree with var() is not supported'));\n    }\n\n    if (useCssWideKeywords) {\n        result = match.matchAsTree(tokens, lexer.cssWideKeywordsSyntax, lexer);\n    }\n\n    if (!useCssWideKeywords || !result.match) {\n        result = match.matchAsTree(tokens, syntax.match, lexer);\n        if (!result.match) {\n            return buildMatchResult(\n                null,\n                new error.SyntaxMatchError(result.reason, syntax.syntax, value, result),\n                result.iterations\n            );\n        }\n    }\n\n    return buildMatchResult(result.match, null, result.iterations);\n}\n\nclass Lexer {\n    constructor(config, syntax, structure$1) {\n        this.cssWideKeywords = genericConst.cssWideKeywords;\n        this.syntax = syntax;\n        this.generic = false;\n        this.units = { ...units };\n        this.atrules = Object.create(null);\n        this.properties = Object.create(null);\n        this.types = Object.create(null);\n        this.structure = structure$1 || structure.getStructureFromConfig(config);\n\n        if (config) {\n            if (config.cssWideKeywords) {\n                this.cssWideKeywords = config.cssWideKeywords;\n            }\n\n            if (config.units) {\n                for (const group of Object.keys(units)) {\n                    if (Array.isArray(config.units[group])) {\n                        this.units[group] = config.units[group];\n                    }\n                }\n            }\n\n            if (config.types) {\n                for (const [name, type] of Object.entries(config.types)) {\n                    this.addType_(name, type);\n                }\n            }\n\n            if (config.generic) {\n                this.generic = true;\n                for (const [name, value] of Object.entries(generic.createGenericTypes(this.units))) {\n                    this.addType_(name, value);\n                }\n            }\n\n            if (config.atrules) {\n                for (const [name, atrule] of Object.entries(config.atrules)) {\n                    this.addAtrule_(name, atrule);\n                }\n            }\n\n            if (config.properties) {\n                for (const [name, property] of Object.entries(config.properties)) {\n                    this.addProperty_(name, property);\n                }\n            }\n        }\n\n        this.cssWideKeywordsSyntax = matchGraph.buildMatchGraph(this.cssWideKeywords.join(' |  '));\n    }\n\n    checkStructure(ast) {\n        function collectWarning(node, message) {\n            warns.push({ node, message });\n        }\n\n        const structure = this.structure;\n        const warns = [];\n\n        this.syntax.walk(ast, function(node) {\n            if (structure.hasOwnProperty(node.type)) {\n                structure[node.type].check(node, collectWarning);\n            } else {\n                collectWarning(node, 'Unknown node type `' + node.type + '`');\n            }\n        });\n\n        return warns.length ? warns : false;\n    }\n\n    createDescriptor(syntax, type, name, parent = null) {\n        const ref = {\n            type,\n            name\n        };\n        const descriptor = {\n            type,\n            name,\n            parent,\n            serializable: typeof syntax === 'string' || (syntax && typeof syntax.type === 'string'),\n            syntax: null,\n            match: null,\n            matchRef: null // used for properties when a syntax referenced as <'property'> in other syntax definitions\n        };\n\n        if (typeof syntax === 'function') {\n            descriptor.match = matchGraph.buildMatchGraph(syntax, ref);\n        } else {\n            if (typeof syntax === 'string') {\n                // lazy parsing on first access\n                Object.defineProperty(descriptor, 'syntax', {\n                    get() {\n                        Object.defineProperty(descriptor, 'syntax', {\n                            value: parse.parse(syntax)\n                        });\n\n                        return descriptor.syntax;\n                    }\n                });\n            } else {\n                descriptor.syntax = syntax;\n            }\n\n            // lazy graph build on first access\n            Object.defineProperty(descriptor, 'match', {\n                get() {\n                    Object.defineProperty(descriptor, 'match', {\n                        value: matchGraph.buildMatchGraph(descriptor.syntax, ref)\n                    });\n\n                    return descriptor.match;\n                }\n            });\n\n            if (type === 'Property') {\n                Object.defineProperty(descriptor, 'matchRef', {\n                    get() {\n                        const syntax = descriptor.syntax;\n                        const value = syntaxHasTopLevelCommaMultiplier(syntax)\n                            ? matchGraph.buildMatchGraph({\n                                ...syntax,\n                                terms: [syntax.terms[0].term]\n                            }, ref)\n                            : null;\n\n                        Object.defineProperty(descriptor, 'matchRef', {\n                            value\n                        });\n\n                        return value;\n                    }\n                });\n            }\n        }\n\n        return descriptor;\n    }\n    addAtrule_(name, syntax) {\n        if (!syntax) {\n            return;\n        }\n\n        this.atrules[name] = {\n            type: 'Atrule',\n            name: name,\n            prelude: syntax.prelude ? this.createDescriptor(syntax.prelude, 'AtrulePrelude', name) : null,\n            descriptors: syntax.descriptors\n                ? Object.keys(syntax.descriptors).reduce(\n                    (map, descName) => {\n                        map[descName] = this.createDescriptor(syntax.descriptors[descName], 'AtruleDescriptor', descName, name);\n                        return map;\n                    },\n                    Object.create(null)\n                )\n                : null\n        };\n    }\n    addProperty_(name, syntax) {\n        if (!syntax) {\n            return;\n        }\n\n        this.properties[name] = this.createDescriptor(syntax, 'Property', name);\n    }\n    addType_(name, syntax) {\n        if (!syntax) {\n            return;\n        }\n\n        this.types[name] = this.createDescriptor(syntax, 'Type', name);\n    }\n\n    checkAtruleName(atruleName) {\n        if (!this.getAtrule(atruleName)) {\n            return new error.SyntaxReferenceError('Unknown at-rule', '@' + atruleName);\n        }\n    }\n    checkAtrulePrelude(atruleName, prelude) {\n        const error = this.checkAtruleName(atruleName);\n\n        if (error) {\n            return error;\n        }\n\n        const atrule = this.getAtrule(atruleName);\n\n        if (!atrule.prelude && prelude) {\n            return new SyntaxError('At-rule `@' + atruleName + '` should not contain a prelude');\n        }\n\n        if (atrule.prelude && !prelude) {\n            if (!matchSyntax(this, atrule.prelude, '', false).matched) {\n                return new SyntaxError('At-rule `@' + atruleName + '` should contain a prelude');\n            }\n        }\n    }\n    checkAtruleDescriptorName(atruleName, descriptorName) {\n        const error$1 = this.checkAtruleName(atruleName);\n\n        if (error$1) {\n            return error$1;\n        }\n\n        const atrule = this.getAtrule(atruleName);\n        const descriptor = names.keyword(descriptorName);\n\n        if (!atrule.descriptors) {\n            return new SyntaxError('At-rule `@' + atruleName + '` has no known descriptors');\n        }\n\n        if (!atrule.descriptors[descriptor.name] &&\n            !atrule.descriptors[descriptor.basename]) {\n            return new error.SyntaxReferenceError('Unknown at-rule descriptor', descriptorName);\n        }\n    }\n    checkPropertyName(propertyName) {\n        if (!this.getProperty(propertyName)) {\n            return new error.SyntaxReferenceError('Unknown property', propertyName);\n        }\n    }\n\n    matchAtrulePrelude(atruleName, prelude) {\n        const error = this.checkAtrulePrelude(atruleName, prelude);\n\n        if (error) {\n            return buildMatchResult(null, error);\n        }\n\n        const atrule = this.getAtrule(atruleName);\n\n        if (!atrule.prelude) {\n            return buildMatchResult(null, null);\n        }\n\n        return matchSyntax(this, atrule.prelude, prelude || '', false);\n    }\n    matchAtruleDescriptor(atruleName, descriptorName, value) {\n        const error = this.checkAtruleDescriptorName(atruleName, descriptorName);\n\n        if (error) {\n            return buildMatchResult(null, error);\n        }\n\n        const atrule = this.getAtrule(atruleName);\n        const descriptor = names.keyword(descriptorName);\n\n        return matchSyntax(this, atrule.descriptors[descriptor.name] || atrule.descriptors[descriptor.basename], value, false);\n    }\n    matchDeclaration(node) {\n        if (node.type !== 'Declaration') {\n            return buildMatchResult(null, new Error('Not a Declaration node'));\n        }\n\n        return this.matchProperty(node.property, node.value);\n    }\n    matchProperty(propertyName, value) {\n        // don't match syntax for a custom property at the moment\n        if (names.property(propertyName).custom) {\n            return buildMatchResult(null, new Error('Lexer matching doesn\\'t applicable for custom properties'));\n        }\n\n        const error = this.checkPropertyName(propertyName);\n\n        if (error) {\n            return buildMatchResult(null, error);\n        }\n\n        return matchSyntax(this, this.getProperty(propertyName), value, true);\n    }\n    matchType(typeName, value) {\n        const typeSyntax = this.getType(typeName);\n\n        if (!typeSyntax) {\n            return buildMatchResult(null, new error.SyntaxReferenceError('Unknown type', typeName));\n        }\n\n        return matchSyntax(this, typeSyntax, value, false);\n    }\n    match(syntax, value) {\n        if (typeof syntax !== 'string' && (!syntax || !syntax.type)) {\n            return buildMatchResult(null, new error.SyntaxReferenceError('Bad syntax'));\n        }\n\n        if (typeof syntax === 'string' || !syntax.match) {\n            syntax = this.createDescriptor(syntax, 'Type', 'anonymous');\n        }\n\n        return matchSyntax(this, syntax, value, false);\n    }\n\n    findValueFragments(propertyName, value, type, name) {\n        return search.matchFragments(this, value, this.matchProperty(propertyName, value), type, name);\n    }\n    findDeclarationValueFragments(declaration, type, name) {\n        return search.matchFragments(this, declaration.value, this.matchDeclaration(declaration), type, name);\n    }\n    findAllFragments(ast, type, name) {\n        const result = [];\n\n        this.syntax.walk(ast, {\n            visit: 'Declaration',\n            enter: (declaration) => {\n                result.push.apply(result, this.findDeclarationValueFragments(declaration, type, name));\n            }\n        });\n\n        return result;\n    }\n\n    getAtrule(atruleName, fallbackBasename = true) {\n        const atrule = names.keyword(atruleName);\n        const atruleEntry = atrule.vendor && fallbackBasename\n            ? this.atrules[atrule.name] || this.atrules[atrule.basename]\n            : this.atrules[atrule.name];\n\n        return atruleEntry || null;\n    }\n    getAtrulePrelude(atruleName, fallbackBasename = true) {\n        const atrule = this.getAtrule(atruleName, fallbackBasename);\n\n        return atrule && atrule.prelude || null;\n    }\n    getAtruleDescriptor(atruleName, name) {\n        return this.atrules.hasOwnProperty(atruleName) && this.atrules.declarators\n            ? this.atrules[atruleName].declarators[name] || null\n            : null;\n    }\n    getProperty(propertyName, fallbackBasename = true) {\n        const property = names.property(propertyName);\n        const propertyEntry = property.vendor && fallbackBasename\n            ? this.properties[property.name] || this.properties[property.basename]\n            : this.properties[property.name];\n\n        return propertyEntry || null;\n    }\n    getType(name) {\n        return hasOwnProperty.call(this.types, name) ? this.types[name] : null;\n    }\n\n    validate() {\n        function syntaxRef(name, isType) {\n            return isType ? `<${name}>` : `<'${name}'>`;\n        }\n\n        function validate(syntax, name, broken, descriptor) {\n            if (broken.has(name)) {\n                return broken.get(name);\n            }\n\n            broken.set(name, false);\n            if (descriptor.syntax !== null) {\n                walk.walk(descriptor.syntax, function(node) {\n                    if (node.type !== 'Type' && node.type !== 'Property') {\n                        return;\n                    }\n\n                    const map = node.type === 'Type' ? syntax.types : syntax.properties;\n                    const brokenMap = node.type === 'Type' ? brokenTypes : brokenProperties;\n\n                    if (!hasOwnProperty.call(map, node.name)) {\n                        errors.push(`${syntaxRef(name, broken === brokenTypes)} used missed syntax definition ${syntaxRef(node.name, node.type === 'Type')}`);\n                        broken.set(name, true);\n                    } else if (validate(syntax, node.name, brokenMap, map[node.name])) {\n                        errors.push(`${syntaxRef(name, broken === brokenTypes)} used broken syntax definition ${syntaxRef(node.name, node.type === 'Type')}`);\n                        broken.set(name, true);\n                    }\n                }, this);\n            }\n        }\n\n        const errors = [];\n        let brokenTypes = new Map();\n        let brokenProperties = new Map();\n\n        for (const key in this.types) {\n            validate(this, key, brokenTypes, this.types[key]);\n        }\n\n        for (const key in this.properties) {\n            validate(this, key, brokenProperties, this.properties[key]);\n        }\n\n        const brokenTypesArray = [...brokenTypes.keys()].filter(name => brokenTypes.get(name));\n        const brokenPropertiesArray = [...brokenProperties.keys()].filter(name => brokenProperties.get(name));\n\n        if (brokenTypesArray.length || brokenPropertiesArray.length) {\n            return {\n                errors,\n                types: brokenTypesArray,\n                properties: brokenPropertiesArray\n            };\n        }\n\n        return null;\n    }\n    dump(syntaxAsAst, pretty) {\n        return {\n            generic: this.generic,\n            cssWideKeywords: this.cssWideKeywords,\n            units: this.units,\n            types: dumpMapSyntax(this.types, !pretty, syntaxAsAst),\n            properties: dumpMapSyntax(this.properties, !pretty, syntaxAsAst),\n            atrules: dumpAtruleMapSyntax(this.atrules, !pretty, syntaxAsAst)\n        };\n    }\n    toString() {\n        return JSON.stringify(this.dump());\n    }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\nfunction appendOrSet(a, b) {\n    if (typeof b === 'string' && /^\\s*\\|/.test(b)) {\n        return typeof a === 'string'\n            ? a + b\n            : b.replace(/^\\s*\\|\\s*/, '');\n    }\n\n    return b || null;\n}\n\nfunction sliceProps(obj, props) {\n    const result = Object.create(null);\n\n    for (const [key, value] of Object.entries(obj)) {\n        if (value) {\n            result[key] = {};\n            for (const prop of Object.keys(value)) {\n                if (props.includes(prop)) {\n                    result[key][prop] = value[prop];\n                }\n            }\n        }\n    }\n\n    return result;\n}\n\nfunction mix(dest, src) {\n    const result = { ...dest };\n\n    for (const [prop, value] of Object.entries(src)) {\n        switch (prop) {\n            case 'generic':\n                result[prop] = Boolean(value);\n                break;\n\n            case 'cssWideKeywords':\n                result[prop] = dest[prop]\n                    ? [...dest[prop], ...value]\n                    : value || [];\n                break;\n\n            case 'units':\n                result[prop] = { ...dest[prop] };\n                for (const [name, patch] of Object.entries(value)) {\n                    result[prop][name] = Array.isArray(patch) ? patch : [];\n                }\n                break;\n\n            case 'atrules':\n                result[prop] = { ...dest[prop] };\n\n                for (const [name, atrule] of Object.entries(value)) {\n                    const exists = result[prop][name] || {};\n                    const current = result[prop][name] = {\n                        prelude: exists.prelude || null,\n                        descriptors: {\n                            ...exists.descriptors\n                        }\n                    };\n\n                    if (!atrule) {\n                        continue;\n                    }\n\n                    current.prelude = atrule.prelude\n                        ? appendOrSet(current.prelude, atrule.prelude)\n                        : current.prelude || null;\n\n                    for (const [descriptorName, descriptorValue] of Object.entries(atrule.descriptors || {})) {\n                        current.descriptors[descriptorName] = descriptorValue\n                            ? appendOrSet(current.descriptors[descriptorName], descriptorValue)\n                            : null;\n                    }\n\n                    if (!Object.keys(current.descriptors).length) {\n                        current.descriptors = null;\n                    }\n                }\n                break;\n\n            case 'types':\n            case 'properties':\n                result[prop] = { ...dest[prop] };\n                for (const [name, syntax] of Object.entries(value)) {\n                    result[prop][name] = appendOrSet(result[prop][name], syntax);\n                }\n                break;\n\n            case 'scope':\n            case 'features':\n                result[prop] = { ...dest[prop] };\n                for (const [name, props] of Object.entries(value)) {\n                    result[prop][name] = { ...result[prop][name], ...props };\n                }\n                break;\n\n            case 'parseContext':\n                result[prop] = {\n                    ...dest[prop],\n                    ...value\n                };\n                break;\n\n            case 'atrule':\n            case 'pseudo':\n                result[prop] = {\n                    ...dest[prop],\n                    ...sliceProps(value, ['parse'])\n                };\n                break;\n\n            case 'node':\n                result[prop] = {\n                    ...dest[prop],\n                    ...sliceProps(value, ['name', 'structure', 'parse', 'generate', 'walkContext'])\n                };\n                break;\n        }\n    }\n\n    return result;\n}\n\nmodule.exports = mix;\n","'use strict';\n\nconst index = require('../tokenizer/index.cjs');\nconst create = require('../parser/create.cjs');\nconst create$2 = require('../generator/create.cjs');\nconst create$3 = require('../convertor/create.cjs');\nconst create$1 = require('../walker/create.cjs');\nconst Lexer = require('../lexer/Lexer.cjs');\nconst mix = require('./config/mix.cjs');\n\nfunction createSyntax(config) {\n    const parse = create.createParser(config);\n    const walk = create$1.createWalker(config);\n    const generate = create$2.createGenerator(config);\n    const { fromPlainObject, toPlainObject } = create$3.createConvertor(walk);\n\n    const syntax = {\n        lexer: null,\n        createLexer: config => new Lexer.Lexer(config, syntax, syntax.lexer.structure),\n\n        tokenize: index.tokenize,\n        parse,\n        generate,\n\n        walk,\n        find: walk.find,\n        findLast: walk.findLast,\n        findAll: walk.findAll,\n\n        fromPlainObject,\n        toPlainObject,\n\n        fork(extension) {\n            const base = mix({}, config); // copy of config\n\n            return createSyntax(\n                typeof extension === 'function'\n                    ? extension(base) // TODO: remove Object.assign as second parameter\n                    : mix(base, extension)\n            );\n        }\n    };\n\n    syntax.lexer = new Lexer.Lexer({\n        generic: config.generic,\n        cssWideKeywords: config.cssWideKeywords,\n        units: config.units,\n        types: config.types,\n        atrules: config.atrules,\n        properties: config.properties,\n        node: config.node\n    }, syntax);\n\n    return syntax;\n}\nconst createSyntax$1 = config => createSyntax(mix({}, config));\n\nmodule.exports = createSyntax$1;\n","","'use strict';\n\nconst patch = require('../data/patch.json');\n\nconst patch$1 = patch;\n\nmodule.exports = patch$1;\n","","","","'use strict';\n\nconst dataPatch = require('./data-patch.cjs');\n\nconst mdnAtrules = require('mdn-data/css/at-rules.json');\nconst mdnProperties = require('mdn-data/css/properties.json');\nconst mdnSyntaxes = require('mdn-data/css/syntaxes.json');\n\nconst hasOwn = Object.hasOwn || ((object, property) => Object.prototype.hasOwnProperty.call(object, property));\nconst extendSyntax = /^\\s*\\|\\s*/;\n\nfunction preprocessAtrules(dict) {\n    const result = Object.create(null);\n\n    for (const [atruleName, atrule] of Object.entries(dict)) {\n        let descriptors = null;\n\n        if (atrule.descriptors) {\n            descriptors = Object.create(null);\n\n            for (const [name, descriptor] of Object.entries(atrule.descriptors)) {\n                descriptors[name] = descriptor.syntax;\n            }\n        }\n\n        result[atruleName.substr(1)] = {\n            prelude: atrule.syntax.trim().replace(/\\{(.|\\s)+\\}/, '').match(/^@\\S+\\s+([^;\\{]*)/)[1].trim() || null,\n            descriptors\n        };\n    }\n\n    return result;\n}\n\nfunction patchDictionary(dict, patchDict) {\n    const result = Object.create(null);\n\n    // copy all syntaxes for an original dict\n    for (const [key, value] of Object.entries(dict)) {\n        if (value) {\n            result[key] = value.syntax || value;\n        }\n    }\n\n    // apply a patch\n    for (const key of Object.keys(patchDict)) {\n        if (hasOwn(dict, key)) {\n            if (patchDict[key].syntax) {\n                result[key] = extendSyntax.test(patchDict[key].syntax)\n                    ? result[key] + ' ' + patchDict[key].syntax.trim()\n                    : patchDict[key].syntax;\n            } else {\n                delete result[key];\n            }\n        } else {\n            if (patchDict[key].syntax) {\n                result[key] = patchDict[key].syntax.replace(extendSyntax, '');\n            }\n        }\n    }\n\n    return result;\n}\n\nfunction preprocessPatchAtrulesDescritors(declarations) {\n    const result = {};\n\n    for (const [key, value] of Object.entries(declarations || {})) {\n        result[key] = typeof value === 'string'\n            ? { syntax: value }\n            : value;\n    }\n\n    return result;\n}\n\nfunction patchAtrules(dict, patchDict) {\n    const result = {};\n\n    // copy all syntaxes for an original dict\n    for (const key in dict) {\n        if (patchDict[key] === null) {\n            continue;\n        }\n\n        const atrulePatch = patchDict[key] || {};\n\n        result[key] = {\n            prelude: key in patchDict && 'prelude' in atrulePatch\n                ? atrulePatch.prelude\n                : dict[key].prelude || null,\n            descriptors: patchDictionary(\n                dict[key].descriptors || {},\n                preprocessPatchAtrulesDescritors(atrulePatch.descriptors)\n            )\n        };\n    }\n\n    // apply a patch\n    for (const [key, atrulePatch] of Object.entries(patchDict)) {\n        if (atrulePatch && !hasOwn(dict, key)) {\n            result[key] = {\n                prelude: atrulePatch.prelude || null,\n                descriptors: atrulePatch.descriptors\n                    ? patchDictionary({}, preprocessPatchAtrulesDescritors(atrulePatch.descriptors))\n                    : null\n            };\n        }\n    }\n\n    return result;\n}\n\nconst definitions = {\n    types: patchDictionary(mdnSyntaxes, dataPatch.types),\n    atrules: patchAtrules(preprocessAtrules(mdnAtrules), dataPatch.atrules),\n    properties: patchDictionary(mdnProperties, dataPatch.properties)\n};\n\nmodule.exports = definitions;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\nconst charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs');\n\nconst PLUSSIGN = 0x002B;    // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst N = 0x006E;           // U+006E LATIN SMALL LETTER N (n)\nconst DISALLOW_SIGN = true;\nconst ALLOW_SIGN = false;\n\nfunction checkInteger(offset, disallowSign) {\n    let pos = this.tokenStart + offset;\n    const code = this.charCodeAt(pos);\n\n    if (code === PLUSSIGN || code === HYPHENMINUS) {\n        if (disallowSign) {\n            this.error('Number sign is not allowed');\n        }\n        pos++;\n    }\n\n    for (; pos < this.tokenEnd; pos++) {\n        if (!charCodeDefinitions.isDigit(this.charCodeAt(pos))) {\n            this.error('Integer is expected', pos);\n        }\n    }\n}\n\nfunction checkTokenIsInteger(disallowSign) {\n    return checkInteger.call(this, 0, disallowSign);\n}\n\nfunction expectCharCode(offset, code) {\n    if (!this.cmpChar(this.tokenStart + offset, code)) {\n        let msg = '';\n\n        switch (code) {\n            case N:\n                msg = 'N is expected';\n                break;\n            case HYPHENMINUS:\n                msg = 'HyphenMinus is expected';\n                break;\n        }\n\n        this.error(msg, this.tokenStart + offset);\n    }\n}\n\n// ... <signed-integer>\n// ... ['+' | '-'] <signless-integer>\nfunction consumeB() {\n    let offset = 0;\n    let sign = 0;\n    let type = this.tokenType;\n\n    while (type === types.WhiteSpace || type === types.Comment) {\n        type = this.lookupType(++offset);\n    }\n\n    if (type !== types.Number) {\n        if (this.isDelim(PLUSSIGN, offset) ||\n            this.isDelim(HYPHENMINUS, offset)) {\n            sign = this.isDelim(PLUSSIGN, offset) ? PLUSSIGN : HYPHENMINUS;\n\n            do {\n                type = this.lookupType(++offset);\n            } while (type === types.WhiteSpace || type === types.Comment);\n\n            if (type !== types.Number) {\n                this.skip(offset);\n                checkTokenIsInteger.call(this, DISALLOW_SIGN);\n            }\n        } else {\n            return null;\n        }\n    }\n\n    if (offset > 0) {\n        this.skip(offset);\n    }\n\n    if (sign === 0) {\n        type = this.charCodeAt(this.tokenStart);\n        if (type !== PLUSSIGN && type !== HYPHENMINUS) {\n            this.error('Number sign is expected');\n        }\n    }\n\n    checkTokenIsInteger.call(this, sign !== 0);\n    return sign === HYPHENMINUS ? '-' + this.consume(types.Number) : this.consume(types.Number);\n}\n\n// An+B microsyntax https://www.w3.org/TR/css-syntax-3/#anb\nconst name = 'AnPlusB';\nconst structure = {\n    a: [String, null],\n    b: [String, null]\n};\n\nfunction parse() {\n    /* eslint-disable brace-style*/\n    const start = this.tokenStart;\n    let a = null;\n    let b = null;\n\n    // <integer>\n    if (this.tokenType === types.Number) {\n        checkTokenIsInteger.call(this, ALLOW_SIGN);\n        b = this.consume(types.Number);\n    }\n\n    // -n\n    // -n <signed-integer>\n    // -n ['+' | '-'] <signless-integer>\n    // -n- <signless-integer>\n    // <dashndashdigit-ident>\n    else if (this.tokenType === types.Ident && this.cmpChar(this.tokenStart, HYPHENMINUS)) {\n        a = '-1';\n\n        expectCharCode.call(this, 1, N);\n\n        switch (this.tokenEnd - this.tokenStart) {\n            // -n\n            // -n <signed-integer>\n            // -n ['+' | '-'] <signless-integer>\n            case 2:\n                this.next();\n                b = consumeB.call(this);\n                break;\n\n            // -n- <signless-integer>\n            case 3:\n                expectCharCode.call(this, 2, HYPHENMINUS);\n\n                this.next();\n                this.skipSC();\n\n                checkTokenIsInteger.call(this, DISALLOW_SIGN);\n\n                b = '-' + this.consume(types.Number);\n                break;\n\n            // <dashndashdigit-ident>\n            default:\n                expectCharCode.call(this, 2, HYPHENMINUS);\n                checkInteger.call(this, 3, DISALLOW_SIGN);\n                this.next();\n\n                b = this.substrToCursor(start + 2);\n        }\n    }\n\n    // '+'? n\n    // '+'? n <signed-integer>\n    // '+'? n ['+' | '-'] <signless-integer>\n    // '+'? n- <signless-integer>\n    // '+'? <ndashdigit-ident>\n    else if (this.tokenType === types.Ident || (this.isDelim(PLUSSIGN) && this.lookupType(1) === types.Ident)) {\n        let sign = 0;\n        a = '1';\n\n        // just ignore a plus\n        if (this.isDelim(PLUSSIGN)) {\n            sign = 1;\n            this.next();\n        }\n\n        expectCharCode.call(this, 0, N);\n\n        switch (this.tokenEnd - this.tokenStart) {\n            // '+'? n\n            // '+'? n <signed-integer>\n            // '+'? n ['+' | '-'] <signless-integer>\n            case 1:\n                this.next();\n                b = consumeB.call(this);\n                break;\n\n            // '+'? n- <signless-integer>\n            case 2:\n                expectCharCode.call(this, 1, HYPHENMINUS);\n\n                this.next();\n                this.skipSC();\n\n                checkTokenIsInteger.call(this, DISALLOW_SIGN);\n\n                b = '-' + this.consume(types.Number);\n                break;\n\n            // '+'? <ndashdigit-ident>\n            default:\n                expectCharCode.call(this, 1, HYPHENMINUS);\n                checkInteger.call(this, 2, DISALLOW_SIGN);\n                this.next();\n\n                b = this.substrToCursor(start + sign + 1);\n        }\n    }\n\n    // <ndashdigit-dimension>\n    // <ndash-dimension> <signless-integer>\n    // <n-dimension>\n    // <n-dimension> <signed-integer>\n    // <n-dimension> ['+' | '-'] <signless-integer>\n    else if (this.tokenType === types.Dimension) {\n        const code = this.charCodeAt(this.tokenStart);\n        const sign = code === PLUSSIGN || code === HYPHENMINUS;\n        let i = this.tokenStart + sign;\n\n        for (; i < this.tokenEnd; i++) {\n            if (!charCodeDefinitions.isDigit(this.charCodeAt(i))) {\n                break;\n            }\n        }\n\n        if (i === this.tokenStart + sign) {\n            this.error('Integer is expected', this.tokenStart + sign);\n        }\n\n        expectCharCode.call(this, i - this.tokenStart, N);\n        a = this.substring(start, i);\n\n        // <n-dimension>\n        // <n-dimension> <signed-integer>\n        // <n-dimension> ['+' | '-'] <signless-integer>\n        if (i + 1 === this.tokenEnd) {\n            this.next();\n            b = consumeB.call(this);\n        } else {\n            expectCharCode.call(this, i - this.tokenStart + 1, HYPHENMINUS);\n\n            // <ndash-dimension> <signless-integer>\n            if (i + 2 === this.tokenEnd) {\n                this.next();\n                this.skipSC();\n                checkTokenIsInteger.call(this, DISALLOW_SIGN);\n                b = '-' + this.consume(types.Number);\n            }\n            // <ndashdigit-dimension>\n            else {\n                checkInteger.call(this, i - this.tokenStart + 2, DISALLOW_SIGN);\n                this.next();\n                b = this.substrToCursor(i + 1);\n            }\n        }\n    } else {\n        this.error();\n    }\n\n    if (a !== null && a.charCodeAt(0) === PLUSSIGN) {\n        a = a.substr(1);\n    }\n\n    if (b !== null && b.charCodeAt(0) === PLUSSIGN) {\n        b = b.substr(1);\n    }\n\n    return {\n        type: 'AnPlusB',\n        loc: this.getLocation(start, this.tokenStart),\n        a,\n        b\n    };\n}\n\nfunction generate(node) {\n    if (node.a) {\n        const a =\n            node.a === '+1' && 'n' ||\n            node.a ===  '1' && 'n' ||\n            node.a === '-1' && '-n' ||\n            node.a + 'n';\n\n        if (node.b) {\n            const b = node.b[0] === '-' || node.b[0] === '+'\n                ? node.b\n                : '+' + node.b;\n            this.tokenize(a + b);\n        } else {\n            this.tokenize(a);\n        }\n    } else {\n        this.tokenize(node.b);\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nfunction consumeRaw() {\n    return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon, true);\n}\n\nfunction isDeclarationBlockAtrule() {\n    for (let offset = 1, type; type = this.lookupType(offset); offset++) {\n        if (type === types.RightCurlyBracket) {\n            return true;\n        }\n\n        if (type === types.LeftCurlyBracket ||\n            type === types.AtKeyword) {\n            return false;\n        }\n    }\n\n    return false;\n}\n\n\nconst name = 'Atrule';\nconst walkContext = 'atrule';\nconst structure = {\n    name: String,\n    prelude: ['AtrulePrelude', 'Raw', null],\n    block: ['Block', null]\n};\n\nfunction parse(isDeclaration = false) {\n    const start = this.tokenStart;\n    let name;\n    let nameLowerCase;\n    let prelude = null;\n    let block = null;\n\n    this.eat(types.AtKeyword);\n\n    name = this.substrToCursor(start + 1);\n    nameLowerCase = name.toLowerCase();\n    this.skipSC();\n\n    // parse prelude\n    if (this.eof === false &&\n        this.tokenType !== types.LeftCurlyBracket &&\n        this.tokenType !== types.Semicolon) {\n        if (this.parseAtrulePrelude) {\n            prelude = this.parseWithFallback(this.AtrulePrelude.bind(this, name, isDeclaration), consumeRaw);\n        } else {\n            prelude = consumeRaw.call(this, this.tokenIndex);\n        }\n\n        this.skipSC();\n    }\n\n    switch (this.tokenType) {\n        case types.Semicolon:\n            this.next();\n            break;\n\n        case types.LeftCurlyBracket:\n            if (hasOwnProperty.call(this.atrule, nameLowerCase) &&\n                typeof this.atrule[nameLowerCase].block === 'function') {\n                block = this.atrule[nameLowerCase].block.call(this, isDeclaration);\n            } else {\n                // TODO: should consume block content as Raw?\n                block = this.Block(isDeclarationBlockAtrule.call(this));\n            }\n\n            break;\n    }\n\n    return {\n        type: 'Atrule',\n        loc: this.getLocation(start, this.tokenStart),\n        name,\n        prelude,\n        block\n    };\n}\n\nfunction generate(node) {\n    this.token(types.AtKeyword, '@' + node.name);\n\n    if (node.prelude !== null) {\n        this.node(node.prelude);\n    }\n\n    if (node.block) {\n        this.node(node.block);\n    } else {\n        this.token(types.Semicolon, ';');\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'AtrulePrelude';\nconst walkContext = 'atrulePrelude';\nconst structure = {\n    children: [[]]\n};\n\nfunction parse(name) {\n    let children = null;\n\n    if (name !== null) {\n        name = name.toLowerCase();\n    }\n\n    this.skipSC();\n\n    if (hasOwnProperty.call(this.atrule, name) &&\n        typeof this.atrule[name].prelude === 'function') {\n        // custom consumer\n        children = this.atrule[name].prelude.call(this);\n    } else {\n        // default consumer\n        children = this.readSequence(this.scope.AtrulePrelude);\n    }\n\n    this.skipSC();\n\n    if (this.eof !== true &&\n        this.tokenType !== types.LeftCurlyBracket &&\n        this.tokenType !== types.Semicolon) {\n        this.error('Semicolon or block is expected');\n    }\n\n    return {\n        type: 'AtrulePrelude',\n        loc: this.getLocationFromList(children),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst DOLLARSIGN = 0x0024;       // U+0024 DOLLAR SIGN ($)\nconst ASTERISK = 0x002A;         // U+002A ASTERISK (*)\nconst EQUALSSIGN = 0x003D;       // U+003D EQUALS SIGN (=)\nconst CIRCUMFLEXACCENT = 0x005E; // U+005E (^)\nconst VERTICALLINE = 0x007C;     // U+007C VERTICAL LINE (|)\nconst TILDE = 0x007E;            // U+007E TILDE (~)\n\nfunction getAttributeName() {\n    if (this.eof) {\n        this.error('Unexpected end of input');\n    }\n\n    const start = this.tokenStart;\n    let expectIdent = false;\n\n    if (this.isDelim(ASTERISK)) {\n        expectIdent = true;\n        this.next();\n    } else if (!this.isDelim(VERTICALLINE)) {\n        this.eat(types.Ident);\n    }\n\n    if (this.isDelim(VERTICALLINE)) {\n        if (this.charCodeAt(this.tokenStart + 1) !== EQUALSSIGN) {\n            this.next();\n            this.eat(types.Ident);\n        } else if (expectIdent) {\n            this.error('Identifier is expected', this.tokenEnd);\n        }\n    } else if (expectIdent) {\n        this.error('Vertical line is expected');\n    }\n\n    return {\n        type: 'Identifier',\n        loc: this.getLocation(start, this.tokenStart),\n        name: this.substrToCursor(start)\n    };\n}\n\nfunction getOperator() {\n    const start = this.tokenStart;\n    const code = this.charCodeAt(start);\n\n    if (code !== EQUALSSIGN &&        // =\n        code !== TILDE &&             // ~=\n        code !== CIRCUMFLEXACCENT &&  // ^=\n        code !== DOLLARSIGN &&        // $=\n        code !== ASTERISK &&          // *=\n        code !== VERTICALLINE         // |=\n    ) {\n        this.error('Attribute selector (=, ~=, ^=, $=, *=, |=) is expected');\n    }\n\n    this.next();\n\n    if (code !== EQUALSSIGN) {\n        if (!this.isDelim(EQUALSSIGN)) {\n            this.error('Equal sign is expected');\n        }\n\n        this.next();\n    }\n\n    return this.substrToCursor(start);\n}\n\n// '[' <wq-name> ']'\n// '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'\nconst name = 'AttributeSelector';\nconst structure = {\n    name: 'Identifier',\n    matcher: [String, null],\n    value: ['String', 'Identifier', null],\n    flags: [String, null]\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n    let name;\n    let matcher = null;\n    let value = null;\n    let flags = null;\n\n    this.eat(types.LeftSquareBracket);\n    this.skipSC();\n\n    name = getAttributeName.call(this);\n    this.skipSC();\n\n    if (this.tokenType !== types.RightSquareBracket) {\n        // avoid case `[name i]`\n        if (this.tokenType !== types.Ident) {\n            matcher = getOperator.call(this);\n\n            this.skipSC();\n\n            value = this.tokenType === types.String\n                ? this.String()\n                : this.Identifier();\n\n            this.skipSC();\n        }\n\n        // attribute flags\n        if (this.tokenType === types.Ident) {\n            flags = this.consume(types.Ident);\n\n            this.skipSC();\n        }\n    }\n\n    this.eat(types.RightSquareBracket);\n\n    return {\n        type: 'AttributeSelector',\n        loc: this.getLocation(start, this.tokenStart),\n        name,\n        matcher,\n        value,\n        flags\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Delim, '[');\n    this.node(node.name);\n\n    if (node.matcher !== null) {\n        this.tokenize(node.matcher);\n        this.node(node.value);\n    }\n\n    if (node.flags !== null) {\n        this.token(types.Ident, node.flags);\n    }\n\n    this.token(types.Delim, ']');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst AMPERSAND = 0x0026;       // U+0026 AMPERSAND (&)\n\nfunction consumeRaw() {\n    return this.Raw(null, true);\n}\nfunction consumeRule() {\n    return this.parseWithFallback(this.Rule, consumeRaw);\n}\nfunction consumeRawDeclaration() {\n    return this.Raw(this.consumeUntilSemicolonIncluded, true);\n}\nfunction consumeDeclaration() {\n    if (this.tokenType === types.Semicolon) {\n        return consumeRawDeclaration.call(this, this.tokenIndex);\n    }\n\n    const node = this.parseWithFallback(this.Declaration, consumeRawDeclaration);\n\n    if (this.tokenType === types.Semicolon) {\n        this.next();\n    }\n\n    return node;\n}\n\nconst name = 'Block';\nconst walkContext = 'block';\nconst structure = {\n    children: [[\n        'Atrule',\n        'Rule',\n        'Declaration'\n    ]]\n};\n\nfunction parse(isStyleBlock) {\n    const consumer = isStyleBlock ? consumeDeclaration : consumeRule;\n    const start = this.tokenStart;\n    let children = this.createList();\n\n    this.eat(types.LeftCurlyBracket);\n\n    scan:\n    while (!this.eof) {\n        switch (this.tokenType) {\n            case types.RightCurlyBracket:\n                break scan;\n\n            case types.WhiteSpace:\n            case types.Comment:\n                this.next();\n                break;\n\n            case types.AtKeyword:\n                children.push(this.parseWithFallback(this.Atrule.bind(this, isStyleBlock), consumeRaw));\n                break;\n\n            default:\n                if (isStyleBlock && this.isDelim(AMPERSAND))  {\n                    children.push(consumeRule.call(this));\n                } else {\n                    children.push(consumer.call(this));\n                }\n        }\n    }\n\n    if (!this.eof) {\n        this.eat(types.RightCurlyBracket);\n    }\n\n    return {\n        type: 'Block',\n        loc: this.getLocation(start, this.tokenStart),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.token(types.LeftCurlyBracket, '{');\n    this.children(node, prev => {\n        if (prev.type === 'Declaration') {\n            this.token(types.Semicolon, ';');\n        }\n    });\n    this.token(types.RightCurlyBracket, '}');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Brackets';\nconst structure = {\n    children: [[]]\n};\n\nfunction parse(readSequence, recognizer) {\n    const start = this.tokenStart;\n    let children = null;\n\n    this.eat(types.LeftSquareBracket);\n\n    children = readSequence.call(this, recognizer);\n\n    if (!this.eof) {\n        this.eat(types.RightSquareBracket);\n    }\n\n    return {\n        type: 'Brackets',\n        loc: this.getLocation(start, this.tokenStart),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Delim, '[');\n    this.children(node);\n    this.token(types.Delim, ']');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'CDC';\nconst structure = [];\n\nfunction parse() {\n    const start = this.tokenStart;\n\n    this.eat(types.CDC); // -->\n\n    return {\n        type: 'CDC',\n        loc: this.getLocation(start, this.tokenStart)\n    };\n}\n\nfunction generate() {\n    this.token(types.CDC, '-->');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'CDO';\nconst structure = [];\n\nfunction parse() {\n    const start = this.tokenStart;\n\n    this.eat(types.CDO); // <!--\n\n    return {\n        type: 'CDO',\n        loc: this.getLocation(start, this.tokenStart)\n    };\n}\n\nfunction generate() {\n    this.token(types.CDO, '<!--');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst FULLSTOP = 0x002E; // U+002E FULL STOP (.)\n\n// '.' ident\nconst name = 'ClassSelector';\nconst structure = {\n    name: String\n};\n\nfunction parse() {\n    this.eatDelim(FULLSTOP);\n\n    return {\n        type: 'ClassSelector',\n        loc: this.getLocation(this.tokenStart - 1, this.tokenEnd),\n        name: this.consume(types.Ident)\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Delim, '.');\n    this.token(types.Ident, node.name);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst PLUSSIGN = 0x002B;        // U+002B PLUS SIGN (+)\nconst SOLIDUS = 0x002F;         // U+002F SOLIDUS (/)\nconst GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)\nconst TILDE = 0x007E;           // U+007E TILDE (~)\n\nconst name = 'Combinator';\nconst structure = {\n    name: String\n};\n\n// + | > | ~ | /deep/\nfunction parse() {\n    const start = this.tokenStart;\n    let name;\n\n    switch (this.tokenType) {\n        case types.WhiteSpace:\n            name = ' ';\n            break;\n\n        case types.Delim:\n            switch (this.charCodeAt(this.tokenStart)) {\n                case GREATERTHANSIGN:\n                case PLUSSIGN:\n                case TILDE:\n                    this.next();\n                    break;\n\n                case SOLIDUS:\n                    this.next();\n                    this.eatIdent('deep');\n                    this.eatDelim(SOLIDUS);\n                    break;\n\n                default:\n                    this.error('Combinator is expected');\n            }\n\n            name = this.substrToCursor(start);\n            break;\n    }\n\n    return {\n        type: 'Combinator',\n        loc: this.getLocation(start, this.tokenStart),\n        name\n    };\n}\n\nfunction generate(node) {\n    this.tokenize(node.name);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst ASTERISK = 0x002A;        // U+002A ASTERISK (*)\nconst SOLIDUS = 0x002F;         // U+002F SOLIDUS (/)\n\n\nconst name = 'Comment';\nconst structure = {\n    value: String\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n    let end = this.tokenEnd;\n\n    this.eat(types.Comment);\n\n    if ((end - start + 2) >= 2 &&\n        this.charCodeAt(end - 2) === ASTERISK &&\n        this.charCodeAt(end - 1) === SOLIDUS) {\n        end -= 2;\n    }\n\n    return {\n        type: 'Comment',\n        loc: this.getLocation(start, this.tokenStart),\n        value: this.substring(start + 2, end)\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Comment, '/*' + node.value + '*/');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst likelyFeatureToken = new Set([types.Colon, types.RightParenthesis, types.EOF]);\n\nconst name = 'Condition';\nconst structure = {\n    kind: String,\n    children: [[\n        'Identifier',\n        'Feature',\n        'FeatureFunction',\n        'FeatureRange',\n        'SupportsDeclaration'\n    ]]\n};\n\nfunction featureOrRange(kind) {\n    if (this.lookupTypeNonSC(1) === types.Ident &&\n        likelyFeatureToken.has(this.lookupTypeNonSC(2))) {\n        return this.Feature(kind);\n    }\n\n    return this.FeatureRange(kind);\n}\n\nconst parentheses = {\n    media: featureOrRange,\n    container: featureOrRange,\n    supports() {\n        return this.SupportsDeclaration();\n    }\n};\n\nfunction parse(kind = 'media') {\n    const children = this.createList();\n\n    scan: while (!this.eof) {\n        switch (this.tokenType) {\n            case types.Comment:\n            case types.WhiteSpace:\n                this.next();\n                continue;\n\n            case types.Ident:\n                children.push(this.Identifier());\n                break;\n\n            case types.LeftParenthesis: {\n                let term = this.parseWithFallback(\n                    () => parentheses[kind].call(this, kind),\n                    () => null\n                );\n\n                if (!term) {\n                    term = this.parseWithFallback(\n                        () => {\n                            this.eat(types.LeftParenthesis);\n                            const res = this.Condition(kind);\n                            this.eat(types.RightParenthesis);\n                            return res;\n                        },\n                        () => {\n                            return this.GeneralEnclosed(kind);\n                        }\n                    );\n                }\n\n                children.push(term);\n                break;\n            }\n\n            case types.Function: {\n                let term = this.parseWithFallback(\n                    () => this.FeatureFunction(kind),\n                    () => null\n                );\n\n                if (!term) {\n                    term = this.GeneralEnclosed(kind);\n                }\n\n                children.push(term);\n                break;\n            }\n\n            default:\n                break scan;\n        }\n    }\n\n    if (children.isEmpty) {\n        this.error('Condition is expected');\n    }\n\n    return {\n        type: 'Condition',\n        loc: this.getLocationFromList(children),\n        kind,\n        children\n    };\n}\n\nfunction generate(node) {\n    node.children.forEach(child => {\n        if (child.type === 'Condition') {\n            this.token(types.LeftParenthesis, '(');\n            this.node(child);\n            this.token(types.RightParenthesis, ')');\n        } else {\n            this.node(child);\n        }\n    });\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst names = require('../../utils/names.cjs');\nconst types = require('../../tokenizer/types.cjs');\n\nconst EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)\nconst NUMBERSIGN = 0x0023;      // U+0023 NUMBER SIGN (#)\nconst DOLLARSIGN = 0x0024;      // U+0024 DOLLAR SIGN ($)\nconst AMPERSAND = 0x0026;       // U+0026 AMPERSAND (&)\nconst ASTERISK = 0x002A;        // U+002A ASTERISK (*)\nconst PLUSSIGN = 0x002B;        // U+002B PLUS SIGN (+)\nconst SOLIDUS = 0x002F;         // U+002F SOLIDUS (/)\n\nfunction consumeValueRaw() {\n    return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, true);\n}\n\nfunction consumeCustomPropertyRaw() {\n    return this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);\n}\n\nfunction consumeValue() {\n    const startValueToken = this.tokenIndex;\n    const value = this.Value();\n\n    if (value.type !== 'Raw' &&\n        this.eof === false &&\n        this.tokenType !== types.Semicolon &&\n        this.isDelim(EXCLAMATIONMARK) === false &&\n        this.isBalanceEdge(startValueToken) === false) {\n        this.error();\n    }\n\n    return value;\n}\n\nconst name = 'Declaration';\nconst walkContext = 'declaration';\nconst structure = {\n    important: [Boolean, String],\n    property: String,\n    value: ['Value', 'Raw']\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n    const startToken = this.tokenIndex;\n    const property = readProperty.call(this);\n    const customProperty = names.isCustomProperty(property);\n    const parseValue = customProperty ? this.parseCustomProperty : this.parseValue;\n    const consumeRaw = customProperty ? consumeCustomPropertyRaw : consumeValueRaw;\n    let important = false;\n    let value;\n\n    this.skipSC();\n    this.eat(types.Colon);\n\n    const valueStart = this.tokenIndex;\n\n    if (!customProperty) {\n        this.skipSC();\n    }\n\n    if (parseValue) {\n        value = this.parseWithFallback(consumeValue, consumeRaw);\n    } else {\n        value = consumeRaw.call(this, this.tokenIndex);\n    }\n\n    if (customProperty && value.type === 'Value' && value.children.isEmpty) {\n        for (let offset = valueStart - this.tokenIndex; offset <= 0; offset++) {\n            if (this.lookupType(offset) === types.WhiteSpace) {\n                value.children.appendData({\n                    type: 'WhiteSpace',\n                    loc: null,\n                    value: ' '\n                });\n                break;\n            }\n        }\n    }\n\n    if (this.isDelim(EXCLAMATIONMARK)) {\n        important = getImportant.call(this);\n        this.skipSC();\n    }\n\n    // Do not include semicolon to range per spec\n    // https://drafts.csswg.org/css-syntax/#declaration-diagram\n\n    if (this.eof === false &&\n        this.tokenType !== types.Semicolon &&\n        this.isBalanceEdge(startToken) === false) {\n        this.error();\n    }\n\n    return {\n        type: 'Declaration',\n        loc: this.getLocation(start, this.tokenStart),\n        important,\n        property,\n        value\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Ident, node.property);\n    this.token(types.Colon, ':');\n    this.node(node.value);\n\n    if (node.important) {\n        this.token(types.Delim, '!');\n        this.token(types.Ident, node.important === true ? 'important' : node.important);\n    }\n}\n\nfunction readProperty() {\n    const start = this.tokenStart;\n\n    // hacks\n    if (this.tokenType === types.Delim) {\n        switch (this.charCodeAt(this.tokenStart)) {\n            case ASTERISK:\n            case DOLLARSIGN:\n            case PLUSSIGN:\n            case NUMBERSIGN:\n            case AMPERSAND:\n                this.next();\n                break;\n\n            // TODO: not sure we should support this hack\n            case SOLIDUS:\n                this.next();\n                if (this.isDelim(SOLIDUS)) {\n                    this.next();\n                }\n                break;\n        }\n    }\n\n    if (this.tokenType === types.Hash) {\n        this.eat(types.Hash);\n    } else {\n        this.eat(types.Ident);\n    }\n\n    return this.substrToCursor(start);\n}\n\n// ! ws* important\nfunction getImportant() {\n    this.eat(types.Delim);\n    this.skipSC();\n\n    const important = this.consume(types.Ident);\n\n    // store original value in case it differ from `important`\n    // for better original source restoring and hacks like `!ie` support\n    return important === 'important' ? true : important;\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst AMPERSAND = 0x0026;       // U+0026 AMPERSAND (&)\n\nfunction consumeRaw() {\n    return this.Raw(this.consumeUntilSemicolonIncluded, true);\n}\n\nconst name = 'DeclarationList';\nconst structure = {\n    children: [[\n        'Declaration',\n        'Atrule',\n        'Rule'\n    ]]\n};\n\nfunction parse() {\n    const children = this.createList();\n\n    while (!this.eof) {\n        switch (this.tokenType) {\n            case types.WhiteSpace:\n            case types.Comment:\n            case types.Semicolon:\n                this.next();\n                break;\n\n            case types.AtKeyword:\n                children.push(this.parseWithFallback(this.Atrule.bind(this, true), consumeRaw));\n                break;\n\n            default:\n                if (this.isDelim(AMPERSAND))  {\n                    children.push(this.parseWithFallback(this.Rule, consumeRaw));\n                } else {\n                    children.push(this.parseWithFallback(this.Declaration, consumeRaw));\n                }\n        }\n    }\n\n    return {\n        type: 'DeclarationList',\n        loc: this.getLocationFromList(children),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node, prev => {\n        if (prev.type === 'Declaration') {\n            this.token(types.Semicolon, ';');\n        }\n    });\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Dimension';\nconst structure = {\n    value: String,\n    unit: String\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n    const value = this.consumeNumber(types.Dimension);\n\n    return {\n        type: 'Dimension',\n        loc: this.getLocation(start, this.tokenStart),\n        value,\n        unit: this.substring(start + value.length, this.tokenStart)\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Dimension, node.value + node.unit);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst SOLIDUS = 0x002F;  // U+002F SOLIDUS (/)\n\nconst name = 'Feature';\nconst structure = {\n    kind: String,\n    name: String,\n    value: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function', null]\n};\n\nfunction parse(kind) {\n    const start = this.tokenStart;\n    let name;\n    let value = null;\n\n    this.eat(types.LeftParenthesis);\n    this.skipSC();\n\n    name = this.consume(types.Ident);\n    this.skipSC();\n\n    if (this.tokenType !== types.RightParenthesis) {\n        this.eat(types.Colon);\n        this.skipSC();\n\n        switch (this.tokenType) {\n            case types.Number:\n                if (this.lookupNonWSType(1) === types.Delim) {\n                    value = this.Ratio();\n                } else {\n                    value = this.Number();\n                }\n\n                break;\n\n            case types.Dimension:\n                value = this.Dimension();\n                break;\n\n            case types.Ident:\n                value = this.Identifier();\n                break;\n\n            case types.Function:\n                value = this.parseWithFallback(\n                    () => {\n                        const res = this.Function(this.readSequence, this.scope.Value);\n\n                        this.skipSC();\n\n                        if (this.isDelim(SOLIDUS)) {\n                            this.error();\n                        }\n\n                        return res;\n                    },\n                    () => {\n                        return this.Ratio();\n                    }\n                );\n                break;\n\n            default:\n                this.error('Number, dimension, ratio or identifier is expected');\n        }\n\n        this.skipSC();\n    }\n\n    if (!this.eof) {\n        this.eat(types.RightParenthesis);\n    }\n\n    return {\n        type: 'Feature',\n        loc: this.getLocation(start, this.tokenStart),\n        kind,\n        name,\n        value\n    };\n}\n\nfunction generate(node) {\n    this.token(types.LeftParenthesis, '(');\n    this.token(types.Ident, node.name);\n\n    if (node.value !== null) {\n        this.token(types.Colon, ':');\n        this.node(node.value);\n    }\n\n    this.token(types.RightParenthesis, ')');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'FeatureFunction';\nconst structure = {\n    kind: String,\n    feature: String,\n    value: ['Declaration', 'Selector']\n};\n\nfunction getFeatureParser(kind, name) {\n    const featuresOfKind = this.features[kind] || {};\n    const parser = featuresOfKind[name];\n\n    if (typeof parser !== 'function') {\n        this.error(`Unknown feature ${name}()`);\n    }\n\n    return parser;\n}\n\nfunction parse(kind = 'unknown') {\n    const start = this.tokenStart;\n    const functionName = this.consumeFunctionName();\n    const valueParser = getFeatureParser.call(this, kind, functionName.toLowerCase());\n\n    this.skipSC();\n\n    const value = this.parseWithFallback(\n        () => {\n            const startValueToken = this.tokenIndex;\n            const value = valueParser.call(this);\n\n            if (this.eof === false &&\n                this.isBalanceEdge(startValueToken) === false) {\n                this.error();\n            }\n\n            return value;\n        },\n        () => this.Raw(null, false)\n    );\n\n    if (!this.eof) {\n        this.eat(types.RightParenthesis);\n    }\n\n    return {\n        type: 'FeatureFunction',\n        loc: this.getLocation(start, this.tokenStart),\n        kind,\n        feature: functionName,\n        value\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Function, node.feature + '(');\n    this.node(node.value);\n    this.token(types.RightParenthesis, ')');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst SOLIDUS = 0x002F;         // U+002F SOLIDUS (/)\nconst LESSTHANSIGN = 0x003C;    // U+003C LESS-THAN SIGN (<)\nconst EQUALSSIGN = 0x003D;      // U+003D EQUALS SIGN (=)\nconst GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)\n\nconst name = 'FeatureRange';\nconst structure = {\n    kind: String,\n    left: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function'],\n    leftComparison: String,\n    middle: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function'],\n    rightComparison: [String, null],\n    right: ['Identifier', 'Number', 'Dimension', 'Ratio', 'Function', null]\n};\n\nfunction readTerm() {\n    this.skipSC();\n\n    switch (this.tokenType) {\n        case types.Number:\n            if (this.isDelim(SOLIDUS, this.lookupOffsetNonSC(1))) {\n                return this.Ratio();\n            } else {\n                return this.Number();\n            }\n\n        case types.Dimension:\n            return this.Dimension();\n\n        case types.Ident:\n            return this.Identifier();\n\n        case types.Function:\n            return this.parseWithFallback(\n                () => {\n                    const res = this.Function(this.readSequence, this.scope.Value);\n\n                    this.skipSC();\n\n                    if (this.isDelim(SOLIDUS)) {\n                        this.error();\n                    }\n\n                    return res;\n                },\n                () => {\n                    return this.Ratio();\n                }\n            );\n\n        default:\n            this.error('Number, dimension, ratio or identifier is expected');\n    }\n}\n\nfunction readComparison(expectColon) {\n    this.skipSC();\n\n    if (this.isDelim(LESSTHANSIGN) ||\n        this.isDelim(GREATERTHANSIGN)) {\n        const value = this.source[this.tokenStart];\n\n        this.next();\n\n        if (this.isDelim(EQUALSSIGN)) {\n            this.next();\n            return value + '=';\n        }\n\n        return value;\n    }\n\n    if (this.isDelim(EQUALSSIGN)) {\n        return '=';\n    }\n\n    this.error(`Expected ${expectColon ? '\":\", ' : ''}\"<\", \">\", \"=\" or \")\"`);\n}\n\nfunction parse(kind = 'unknown') {\n    const start = this.tokenStart;\n\n    this.skipSC();\n    this.eat(types.LeftParenthesis);\n\n    const left = readTerm.call(this);\n    const leftComparison = readComparison.call(this, left.type === 'Identifier');\n    const middle = readTerm.call(this);\n    let rightComparison = null;\n    let right = null;\n\n    if (this.lookupNonWSType(0) !== types.RightParenthesis) {\n        rightComparison = readComparison.call(this);\n        right = readTerm.call(this);\n    }\n\n    this.skipSC();\n    this.eat(types.RightParenthesis);\n\n    return {\n        type: 'FeatureRange',\n        loc: this.getLocation(start, this.tokenStart),\n        kind,\n        left,\n        leftComparison,\n        middle,\n        rightComparison,\n        right\n    };\n}\n\nfunction generate(node) {\n    this.token(types.LeftParenthesis, '(');\n    this.node(node.left);\n    this.tokenize(node.leftComparison);\n    this.node(node.middle);\n\n    if (node.right) {\n        this.tokenize(node.rightComparison);\n        this.node(node.right);\n    }\n\n    this.token(types.RightParenthesis, ')');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Function';\nconst walkContext = 'function';\nconst structure = {\n    name: String,\n    children: [[]]\n};\n\n// <function-token> <sequence> )\nfunction parse(readSequence, recognizer) {\n    const start = this.tokenStart;\n    const name = this.consumeFunctionName();\n    const nameLowerCase = name.toLowerCase();\n    let children;\n\n    children = recognizer.hasOwnProperty(nameLowerCase)\n        ? recognizer[nameLowerCase].call(this, recognizer)\n        : readSequence.call(this, recognizer);\n\n    if (!this.eof) {\n        this.eat(types.RightParenthesis);\n    }\n\n    return {\n        type: 'Function',\n        loc: this.getLocation(start, this.tokenStart),\n        name,\n        children\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Function, node.name + '(');\n    this.children(node);\n    this.token(types.RightParenthesis, ')');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'GeneralEnclosed';\nconst structure = {\n    kind: String,\n    function: [String, null],\n    children: [[]]\n};\n\n// <function-token> <any-value> )\n// ( <any-value> )\nfunction parse(kind) {\n    const start = this.tokenStart;\n    let functionName = null;\n\n    if (this.tokenType === types.Function) {\n        functionName = this.consumeFunctionName();\n    } else {\n        this.eat(types.LeftParenthesis);\n    }\n\n    const children = this.parseWithFallback(\n        () => {\n            const startValueToken = this.tokenIndex;\n            const children = this.readSequence(this.scope.Value);\n\n            if (this.eof === false &&\n                this.isBalanceEdge(startValueToken) === false) {\n                this.error();\n            }\n\n            return children;\n        },\n        () => this.createSingleNodeList(\n            this.Raw(null, false)\n        )\n    );\n\n    if (!this.eof) {\n        this.eat(types.RightParenthesis);\n    }\n\n    return {\n        type: 'GeneralEnclosed',\n        loc: this.getLocation(start, this.tokenStart),\n        kind,\n        function: functionName,\n        children\n    };\n}\n\nfunction generate(node) {\n    if (node.function) {\n        this.token(types.Function, node.function + '(');\n    } else {\n        this.token(types.LeftParenthesis, '(');\n    }\n\n    this.children(node);\n    this.token(types.RightParenthesis, ')');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\n// '#' ident\nconst xxx = 'XXX';\nconst name = 'Hash';\nconst structure = {\n    value: String\n};\nfunction parse() {\n    const start = this.tokenStart;\n\n    this.eat(types.Hash);\n\n    return {\n        type: 'Hash',\n        loc: this.getLocation(start, this.tokenStart),\n        value: this.substrToCursor(start + 1)\n    };\n}\nfunction generate(node) {\n    this.token(types.Hash, '#' + node.value);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.xxx = xxx;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Identifier';\nconst structure = {\n    name: String\n};\n\nfunction parse() {\n    return {\n        type: 'Identifier',\n        loc: this.getLocation(this.tokenStart, this.tokenEnd),\n        name: this.consume(types.Ident)\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Ident, node.name);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'IdSelector';\nconst structure = {\n    name: String\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n\n    // TODO: check value is an ident\n    this.eat(types.Hash);\n\n    return {\n        type: 'IdSelector',\n        loc: this.getLocation(start, this.tokenStart),\n        name: this.substrToCursor(start + 1)\n    };\n}\n\nfunction generate(node) {\n    // Using Delim instead of Hash is a hack to avoid for a whitespace between ident and id-selector\n    // in safe mode (e.g. \"a#id\"), because IE11 doesn't allow a sequence <ident-token> <hash-token>\n    // without a whitespace in values (e.g. \"1px solid#000\")\n    this.token(types.Delim, '#' + node.name);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst FULLSTOP = 0x002E; // U+002E FULL STOP (.)\n\nconst name = 'Layer';\nconst structure = {\n    name: String\n};\n\nfunction parse() {\n    let tokenStart = this.tokenStart;\n    let name = this.consume(types.Ident);\n\n    while (this.isDelim(FULLSTOP)) {\n        this.eat(types.Delim);\n        name += '.' + this.consume(types.Ident);\n    }\n\n    return {\n        type: 'Layer',\n        loc: this.getLocation(tokenStart, this.tokenStart),\n        name\n    };\n}\n\nfunction generate(node) {\n    this.tokenize(node.name);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'LayerList';\nconst structure = {\n    children: [[\n        'Layer'\n    ]]\n};\n\nfunction parse() {\n    const children = this.createList();\n\n    this.skipSC();\n\n    while (!this.eof) {\n        children.push(this.Layer());\n\n        if (this.lookupTypeNonSC(0) !== types.Comma) {\n            break;\n        }\n\n        this.skipSC();\n        this.next();\n        this.skipSC();\n    }\n\n    return {\n        type: 'LayerList',\n        loc: this.getLocationFromList(children),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node, () => this.token(types.Comma, ','));\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'MediaQuery';\nconst structure = {\n    modifier: [String, null],\n    mediaType: [String, null],\n    condition: ['Condition', null]\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n    let modifier = null;\n    let mediaType = null;\n    let condition = null;\n\n    this.skipSC();\n\n    if (this.tokenType === types.Ident && this.lookupTypeNonSC(1) !== types.LeftParenthesis) {\n        // [ not | only ]? <media-type>\n        const ident = this.consume(types.Ident);\n        const identLowerCase = ident.toLowerCase();\n\n        if (identLowerCase === 'not' || identLowerCase === 'only') {\n            this.skipSC();\n            modifier = identLowerCase;\n            mediaType = this.consume(types.Ident);\n        } else {\n            mediaType = ident;\n        }\n\n        switch (this.lookupTypeNonSC(0)) {\n            case types.Ident: {\n                // and <media-condition-without-or>\n                this.skipSC();\n                this.eatIdent('and');\n                condition = this.Condition('media');\n                break;\n            }\n\n            case types.LeftCurlyBracket:\n            case types.Semicolon:\n            case types.Comma:\n            case types.EOF:\n                break;\n\n            default:\n                this.error('Identifier or parenthesis is expected');\n        }\n    } else {\n        switch (this.tokenType) {\n            case types.Ident:\n            case types.LeftParenthesis:\n            case types.Function: {\n                // <media-condition>\n                condition = this.Condition('media');\n                break;\n            }\n\n            case types.LeftCurlyBracket:\n            case types.Semicolon:\n            case types.EOF:\n                break;\n\n            default:\n                this.error('Identifier or parenthesis is expected');\n        }\n    }\n\n    return {\n        type: 'MediaQuery',\n        loc: this.getLocation(start, this.tokenStart),\n        modifier,\n        mediaType,\n        condition\n    };\n}\n\nfunction generate(node) {\n    if (node.mediaType) {\n        if (node.modifier) {\n            this.token(types.Ident, node.modifier);\n        }\n\n        this.token(types.Ident, node.mediaType);\n\n        if (node.condition) {\n            this.token(types.Ident, 'and');\n            this.node(node.condition);\n        }\n    } else if (node.condition) {\n        this.node(node.condition);\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'MediaQueryList';\nconst structure = {\n    children: [[\n        'MediaQuery'\n    ]]\n};\n\nfunction parse() {\n    const children = this.createList();\n\n    this.skipSC();\n\n    while (!this.eof) {\n        children.push(this.MediaQuery());\n\n        if (this.tokenType !== types.Comma) {\n            break;\n        }\n\n        this.next();\n    }\n\n    return {\n        type: 'MediaQueryList',\n        loc: this.getLocationFromList(children),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node, () => this.token(types.Comma, ','));\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst AMPERSAND = 0x0026;       // U+0026 AMPERSAND (&)\n\nconst name = 'NestingSelector';\nconst structure = {\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n\n    this.eatDelim(AMPERSAND);\n\n    return {\n        type: 'NestingSelector',\n        loc: this.getLocation(start, this.tokenStart)\n    };\n}\n\nfunction generate() {\n    this.token(types.Delim, '&');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Nth';\nconst structure = {\n    nth: ['AnPlusB', 'Identifier'],\n    selector: ['SelectorList', null]\n};\n\nfunction parse() {\n    this.skipSC();\n\n    const start = this.tokenStart;\n    let end = start;\n    let selector = null;\n    let nth;\n\n    if (this.lookupValue(0, 'odd') || this.lookupValue(0, 'even')) {\n        nth = this.Identifier();\n    } else {\n        nth = this.AnPlusB();\n    }\n\n    end = this.tokenStart;\n    this.skipSC();\n\n    if (this.lookupValue(0, 'of')) {\n        this.next();\n\n        selector = this.SelectorList();\n        end = this.tokenStart;\n    }\n\n    return {\n        type: 'Nth',\n        loc: this.getLocation(start, end),\n        nth,\n        selector\n    };\n}\n\nfunction generate(node) {\n    this.node(node.nth);\n    if (node.selector !== null) {\n        this.token(types.Ident, 'of');\n        this.node(node.selector);\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Number';\nconst structure = {\n    value: String\n};\n\nfunction parse() {\n    return {\n        type: 'Number',\n        loc: this.getLocation(this.tokenStart, this.tokenEnd),\n        value: this.consume(types.Number)\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Number, node.value);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\n// '/' | '*' | ',' | ':' | '+' | '-'\nconst name = 'Operator';\nconst structure = {\n    value: String\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n\n    this.next();\n\n    return {\n        type: 'Operator',\n        loc: this.getLocation(start, this.tokenStart),\n        value: this.substrToCursor(start)\n    };\n}\n\nfunction generate(node) {\n    this.tokenize(node.value);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Parentheses';\nconst structure = {\n    children: [[]]\n};\n\nfunction parse(readSequence, recognizer) {\n    const start = this.tokenStart;\n    let children = null;\n\n    this.eat(types.LeftParenthesis);\n\n    children = readSequence.call(this, recognizer);\n\n    if (!this.eof) {\n        this.eat(types.RightParenthesis);\n    }\n\n    return {\n        type: 'Parentheses',\n        loc: this.getLocation(start, this.tokenStart),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.token(types.LeftParenthesis, '(');\n    this.children(node);\n    this.token(types.RightParenthesis, ')');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Percentage';\nconst structure = {\n    value: String\n};\n\nfunction parse() {\n    return {\n        type: 'Percentage',\n        loc: this.getLocation(this.tokenStart, this.tokenEnd),\n        value: this.consumeNumber(types.Percentage)\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Percentage, node.value + '%');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'PseudoClassSelector';\nconst walkContext = 'function';\nconst structure = {\n    name: String,\n    children: [['Raw'], null]\n};\n\n// : [ <ident> | <function-token> <any-value>? ) ]\nfunction parse() {\n    const start = this.tokenStart;\n    let children = null;\n    let name;\n    let nameLowerCase;\n\n    this.eat(types.Colon);\n\n    if (this.tokenType === types.Function) {\n        name = this.consumeFunctionName();\n        nameLowerCase = name.toLowerCase();\n\n        if (this.lookupNonWSType(0) == types.RightParenthesis) {\n            children = this.createList();\n        } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {\n            this.skipSC();\n            children = this.pseudo[nameLowerCase].call(this);\n            this.skipSC();\n        } else {\n            children = this.createList();\n            children.push(\n                this.Raw(null, false)\n            );\n        }\n\n        this.eat(types.RightParenthesis);\n    } else {\n        name = this.consume(types.Ident);\n    }\n\n    return {\n        type: 'PseudoClassSelector',\n        loc: this.getLocation(start, this.tokenStart),\n        name,\n        children\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Colon, ':');\n\n    if (node.children === null) {\n        this.token(types.Ident, node.name);\n    } else {\n        this.token(types.Function, node.name + '(');\n        this.children(node);\n        this.token(types.RightParenthesis, ')');\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'PseudoElementSelector';\nconst walkContext = 'function';\nconst structure = {\n    name: String,\n    children: [['Raw'], null]\n};\n\n// :: [ <ident> | <function-token> <any-value>? ) ]\nfunction parse() {\n    const start = this.tokenStart;\n    let children = null;\n    let name;\n    let nameLowerCase;\n\n    this.eat(types.Colon);\n    this.eat(types.Colon);\n\n    if (this.tokenType === types.Function) {\n        name = this.consumeFunctionName();\n        nameLowerCase = name.toLowerCase();\n\n        if (this.lookupNonWSType(0) == types.RightParenthesis) {\n            children = this.createList();\n        } else if (hasOwnProperty.call(this.pseudo, nameLowerCase)) {\n            this.skipSC();\n            children = this.pseudo[nameLowerCase].call(this);\n            this.skipSC();\n        } else {\n            children = this.createList();\n            children.push(\n                this.Raw(null, false)\n            );\n        }\n\n        this.eat(types.RightParenthesis);\n    } else {\n        name = this.consume(types.Ident);\n    }\n\n    return {\n        type: 'PseudoElementSelector',\n        loc: this.getLocation(start, this.tokenStart),\n        name,\n        children\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Colon, ':');\n    this.token(types.Colon, ':');\n\n    if (node.children === null) {\n        this.token(types.Ident, node.name);\n    } else {\n        this.token(types.Function, node.name + '(');\n        this.children(node);\n        this.token(types.RightParenthesis, ')');\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst SOLIDUS = 0x002F;  // U+002F SOLIDUS (/)\n\n// Media Queries Level 3 defines terms of <ratio> as a positive (not zero or negative)\n// integers (see https://drafts.csswg.org/mediaqueries-3/#values)\n// However, Media Queries Level 4 removes any definition of values\n// (see https://drafts.csswg.org/mediaqueries-4/#values) and refers to\n// CSS Values and Units for detail. In CSS Values and Units Level 4 a <ratio>\n// definition was added (see https://drafts.csswg.org/css-values-4/#ratios) which\n// defines ratio as \"<number [0,∞]> [ / <number [0,∞]> ]?\" and based on it\n// any constrains on terms were removed. Parser also doesn't test numbers\n// in any way to make possible for linting and fixing them by the tools using CSSTree.\n// An additional syntax examination may be applied by a lexer.\nfunction consumeTerm() {\n    this.skipSC();\n\n    switch (this.tokenType) {\n        case types.Number:\n            return this.Number();\n\n        case types.Function:\n            return this.Function(this.readSequence, this.scope.Value);\n\n        default:\n            this.error('Number of function is expected');\n    }\n}\n\nconst name = 'Ratio';\nconst structure = {\n    left: ['Number', 'Function'],\n    right: ['Number', 'Function', null]\n};\n\n// <number [0,∞]> [ / <number [0,∞]> ]?\nfunction parse() {\n    const start = this.tokenStart;\n    const left = consumeTerm.call(this);\n    let right = null;\n\n    this.skipSC();\n    if (this.isDelim(SOLIDUS)) {\n        this.eatDelim(SOLIDUS);\n        right = consumeTerm.call(this);\n    }\n\n    return {\n        type: 'Ratio',\n        loc: this.getLocation(start, this.tokenStart),\n        left,\n        right\n    };\n}\n\nfunction generate(node) {\n    this.node(node.left);\n    this.token(types.Delim, '/');\n    if (node.right) {\n        this.node(node.right);\n    } else {\n        this.node(types.Number, 1);\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nfunction getOffsetExcludeWS() {\n    if (this.tokenIndex > 0) {\n        if (this.lookupType(-1) === types.WhiteSpace) {\n            return this.tokenIndex > 1\n                ? this.getTokenStart(this.tokenIndex - 1)\n                : this.firstCharOffset;\n        }\n    }\n\n    return this.tokenStart;\n}\n\nconst name = 'Raw';\nconst structure = {\n    value: String\n};\n\nfunction parse(consumeUntil, excludeWhiteSpace) {\n    const startOffset = this.getTokenStart(this.tokenIndex);\n    let endOffset;\n\n    this.skipUntilBalanced(this.tokenIndex, consumeUntil || this.consumeUntilBalanceEnd);\n\n    if (excludeWhiteSpace && this.tokenStart > startOffset) {\n        endOffset = getOffsetExcludeWS.call(this);\n    } else {\n        endOffset = this.tokenStart;\n    }\n\n    return {\n        type: 'Raw',\n        loc: this.getLocation(startOffset, endOffset),\n        value: this.substring(startOffset, endOffset)\n    };\n}\n\nfunction generate(node) {\n    this.tokenize(node.value);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nfunction consumeRaw() {\n    return this.Raw(this.consumeUntilLeftCurlyBracket, true);\n}\n\nfunction consumePrelude() {\n    const prelude = this.SelectorList();\n\n    if (prelude.type !== 'Raw' &&\n        this.eof === false &&\n        this.tokenType !== types.LeftCurlyBracket) {\n        this.error();\n    }\n\n    return prelude;\n}\n\nconst name = 'Rule';\nconst walkContext = 'rule';\nconst structure = {\n    prelude: ['SelectorList', 'Raw'],\n    block: ['Block']\n};\n\nfunction parse() {\n    const startToken = this.tokenIndex;\n    const startOffset = this.tokenStart;\n    let prelude;\n    let block;\n\n    if (this.parseRulePrelude) {\n        prelude = this.parseWithFallback(consumePrelude, consumeRaw);\n    } else {\n        prelude = consumeRaw.call(this, startToken);\n    }\n\n    block = this.Block(true);\n\n    return {\n        type: 'Rule',\n        loc: this.getLocation(startOffset, this.tokenStart),\n        prelude,\n        block\n    };\n}\nfunction generate(node) {\n    this.node(node.prelude);\n    this.node(node.block);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Scope';\nconst structure = {\n    root: ['SelectorList', 'Raw', null],\n    limit: ['SelectorList', 'Raw', null]\n};\n\nfunction parse() {\n    let root = null;\n    let limit = null;\n\n    this.skipSC();\n\n    const startOffset = this.tokenStart;\n    if (this.tokenType === types.LeftParenthesis) {\n        this.next();\n        this.skipSC();\n        root = this.parseWithFallback(\n            this.SelectorList,\n            () => this.Raw(false, true)\n        );\n        this.skipSC();\n        this.eat(types.RightParenthesis);\n    }\n\n    if (this.lookupNonWSType(0) === types.Ident) {\n        this.skipSC();\n        this.eatIdent('to');\n        this.skipSC();\n        this.eat(types.LeftParenthesis);\n        this.skipSC();\n        limit = this.parseWithFallback(\n            this.SelectorList,\n            () => this.Raw(false, true)\n        );\n        this.skipSC();\n        this.eat(types.RightParenthesis);\n    }\n\n    return {\n        type: 'Scope',\n        loc: this.getLocation(startOffset, this.tokenStart),\n        root,\n        limit\n    };\n}\n\nfunction generate(node) {\n    if (node.root) {\n        this.token(types.LeftParenthesis, '(');\n        this.node(node.root);\n        this.token(types.RightParenthesis, ')');\n    }\n\n    if (node.limit) {\n        this.token(types.Ident, 'to');\n        this.token(types.LeftParenthesis, '(');\n        this.node(node.limit);\n        this.token(types.RightParenthesis, ')');\n    }\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst name = 'Selector';\nconst structure = {\n    children: [[\n        'TypeSelector',\n        'IdSelector',\n        'ClassSelector',\n        'AttributeSelector',\n        'PseudoClassSelector',\n        'PseudoElementSelector',\n        'Combinator'\n    ]]\n};\n\nfunction parse() {\n    const children = this.readSequence(this.scope.Selector);\n\n    // nothing were consumed\n    if (this.getFirstListNode(children) === null) {\n        this.error('Selector is expected');\n    }\n\n    return {\n        type: 'Selector',\n        loc: this.getLocationFromList(children),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'SelectorList';\nconst walkContext = 'selector';\nconst structure = {\n    children: [[\n        'Selector',\n        'Raw'\n    ]]\n};\n\nfunction parse() {\n    const children = this.createList();\n\n    while (!this.eof) {\n        children.push(this.Selector());\n\n        if (this.tokenType === types.Comma) {\n            this.next();\n            continue;\n        }\n\n        break;\n    }\n\n    return {\n        type: 'SelectorList',\n        loc: this.getLocationFromList(children),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node, () => this.token(types.Comma, ','));\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');\nconst utils = require('../tokenizer/utils.cjs');\n\nconst REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\nconst QUOTATION_MARK = 0x0022;  // \"\nconst APOSTROPHE = 0x0027;      // '\n\nfunction decode(str) {\n    const len = str.length;\n    const firstChar = str.charCodeAt(0);\n    const start = firstChar === QUOTATION_MARK || firstChar === APOSTROPHE ? 1 : 0;\n    const end = start === 1 && len > 1 && str.charCodeAt(len - 1) === firstChar ? len - 2 : len - 1;\n    let decoded = '';\n\n    for (let i = start; i <= end; i++) {\n        let code = str.charCodeAt(i);\n\n        if (code === REVERSE_SOLIDUS) {\n            // special case at the ending\n            if (i === end) {\n                // if the next input code point is EOF, do nothing\n                // otherwise include last quote as escaped\n                if (i !== len - 1) {\n                    decoded = str.substr(i + 1);\n                }\n                break;\n            }\n\n            code = str.charCodeAt(++i);\n\n            // consume escaped\n            if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {\n                const escapeStart = i - 1;\n                const escapeEnd = utils.consumeEscaped(str, escapeStart);\n\n                i = escapeEnd - 1;\n                decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));\n            } else {\n                // \\r\\n\n                if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {\n                    i++;\n                }\n            }\n        } else {\n            decoded += str[i];\n        }\n    }\n\n    return decoded;\n}\n\n// https://drafts.csswg.org/cssom/#serialize-a-string\n// § 2.1. Common Serializing Idioms\nfunction encode(str, apostrophe) {\n    const quote = apostrophe ? '\\'' : '\"';\n    const quoteCode = apostrophe ? APOSTROPHE : QUOTATION_MARK;\n    let encoded = '';\n    let wsBeforeHexIsNeeded = false;\n\n    for (let i = 0; i < str.length; i++) {\n        const code = str.charCodeAt(i);\n\n        // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).\n        if (code === 0x0000) {\n            encoded += '\\uFFFD';\n            continue;\n        }\n\n        // If the character is in the range [\\1-\\1f] (U+0001 to U+001F) or is U+007F,\n        // the character escaped as code point.\n        // Note: Do not compare with 0x0001 since 0x0000 is precessed before\n        if (code <= 0x001f || code === 0x007F) {\n            encoded += '\\\\' + code.toString(16);\n            wsBeforeHexIsNeeded = true;\n            continue;\n        }\n\n        // If the character is '\"' (U+0022) or \"\\\" (U+005C), the escaped character.\n        if (code === quoteCode || code === REVERSE_SOLIDUS) {\n            encoded += '\\\\' + str.charAt(i);\n            wsBeforeHexIsNeeded = false;\n        } else {\n            if (wsBeforeHexIsNeeded && (charCodeDefinitions.isHexDigit(code) || charCodeDefinitions.isWhiteSpace(code))) {\n                encoded += ' ';\n            }\n\n            // Otherwise, the character itself.\n            encoded += str.charAt(i);\n            wsBeforeHexIsNeeded = false;\n        }\n    }\n\n    return quote + encoded + quote;\n}\n\nexports.decode = decode;\nexports.encode = encode;\n","'use strict';\n\nconst string = require('../../utils/string.cjs');\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'String';\nconst structure = {\n    value: String\n};\n\nfunction parse() {\n    return {\n        type: 'String',\n        loc: this.getLocation(this.tokenStart, this.tokenEnd),\n        value: string.decode(this.consume(types.String))\n    };\n}\n\nfunction generate(node) {\n    this.token(types.String, string.encode(node.value));\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst EXCLAMATIONMARK = 0x0021; // U+0021 EXCLAMATION MARK (!)\n\nfunction consumeRaw() {\n    return this.Raw(null, false);\n}\n\nconst name = 'StyleSheet';\nconst walkContext = 'stylesheet';\nconst structure = {\n    children: [[\n        'Comment',\n        'CDO',\n        'CDC',\n        'Atrule',\n        'Rule',\n        'Raw'\n    ]]\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n    const children = this.createList();\n    let child;\n\n    while (!this.eof) {\n        switch (this.tokenType) {\n            case types.WhiteSpace:\n                this.next();\n                continue;\n\n            case types.Comment:\n                // ignore comments except exclamation comments (i.e. /*! .. */) on top level\n                if (this.charCodeAt(this.tokenStart + 2) !== EXCLAMATIONMARK) {\n                    this.next();\n                    continue;\n                }\n\n                child = this.Comment();\n                break;\n\n            case types.CDO: // <!--\n                child = this.CDO();\n                break;\n\n            case types.CDC: // -->\n                child = this.CDC();\n                break;\n\n            // CSS Syntax Module Level 3\n            // §2.2 Error handling\n            // At the \"top level\" of a stylesheet, an <at-keyword-token> starts an at-rule.\n            case types.AtKeyword:\n                child = this.parseWithFallback(this.Atrule, consumeRaw);\n                break;\n\n            // Anything else starts a qualified rule ...\n            default:\n                child = this.parseWithFallback(this.Rule, consumeRaw);\n        }\n\n        children.push(child);\n    }\n\n    return {\n        type: 'StyleSheet',\n        loc: this.getLocation(start, this.tokenStart),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\nexports.walkContext = walkContext;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'SupportsDeclaration';\nconst structure = {\n    declaration: 'Declaration'\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n\n    this.eat(types.LeftParenthesis);\n    this.skipSC();\n\n    const declaration = this.Declaration();\n\n    if (!this.eof) {\n        this.eat(types.RightParenthesis);\n    }\n\n    return {\n        type: 'SupportsDeclaration',\n        loc: this.getLocation(start, this.tokenStart),\n        declaration\n    };\n}\n\nfunction generate(node) {\n    this.token(types.LeftParenthesis, '(');\n    this.node(node.declaration);\n    this.token(types.RightParenthesis, ')');\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst ASTERISK = 0x002A;     // U+002A ASTERISK (*)\nconst VERTICALLINE = 0x007C; // U+007C VERTICAL LINE (|)\n\nfunction eatIdentifierOrAsterisk() {\n    if (this.tokenType !== types.Ident &&\n        this.isDelim(ASTERISK) === false) {\n        this.error('Identifier or asterisk is expected');\n    }\n\n    this.next();\n}\n\nconst name = 'TypeSelector';\nconst structure = {\n    name: String\n};\n\n// ident\n// ident|ident\n// ident|*\n// *\n// *|ident\n// *|*\n// |ident\n// |*\nfunction parse() {\n    const start = this.tokenStart;\n\n    if (this.isDelim(VERTICALLINE)) {\n        this.next();\n        eatIdentifierOrAsterisk.call(this);\n    } else {\n        eatIdentifierOrAsterisk.call(this);\n\n        if (this.isDelim(VERTICALLINE)) {\n            this.next();\n            eatIdentifierOrAsterisk.call(this);\n        }\n    }\n\n    return {\n        type: 'TypeSelector',\n        loc: this.getLocation(start, this.tokenStart),\n        name: this.substrToCursor(start)\n    };\n}\n\nfunction generate(node) {\n    this.tokenize(node.name);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\nconst charCodeDefinitions = require('../../tokenizer/char-code-definitions.cjs');\n\nconst PLUSSIGN = 0x002B;     // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D;  // U+002D HYPHEN-MINUS (-)\nconst QUESTIONMARK = 0x003F; // U+003F QUESTION MARK (?)\n\nfunction eatHexSequence(offset, allowDash) {\n    let len = 0;\n\n    for (let pos = this.tokenStart + offset; pos < this.tokenEnd; pos++) {\n        const code = this.charCodeAt(pos);\n\n        if (code === HYPHENMINUS && allowDash && len !== 0) {\n            eatHexSequence.call(this, offset + len + 1, false);\n            return -1;\n        }\n\n        if (!charCodeDefinitions.isHexDigit(code)) {\n            this.error(\n                allowDash && len !== 0\n                    ? 'Hyphen minus' + (len < 6 ? ' or hex digit' : '') + ' is expected'\n                    : (len < 6 ? 'Hex digit is expected' : 'Unexpected input'),\n                pos\n            );\n        }\n\n        if (++len > 6) {\n            this.error('Too many hex digits', pos);\n        }    }\n\n    this.next();\n    return len;\n}\n\nfunction eatQuestionMarkSequence(max) {\n    let count = 0;\n\n    while (this.isDelim(QUESTIONMARK)) {\n        if (++count > max) {\n            this.error('Too many question marks');\n        }\n\n        this.next();\n    }\n}\n\nfunction startsWith(code) {\n    if (this.charCodeAt(this.tokenStart) !== code) {\n        this.error((code === PLUSSIGN ? 'Plus sign' : 'Hyphen minus') + ' is expected');\n    }\n}\n\n// https://drafts.csswg.org/css-syntax/#urange\n// Informally, the <urange> production has three forms:\n// U+0001\n//      Defines a range consisting of a single code point, in this case the code point \"1\".\n// U+0001-00ff\n//      Defines a range of codepoints between the first and the second value, in this case\n//      the range between \"1\" and \"ff\" (255 in decimal) inclusive.\n// U+00??\n//      Defines a range of codepoints where the \"?\" characters range over all hex digits,\n//      in this case defining the same as the value U+0000-00ff.\n// In each form, a maximum of 6 digits is allowed for each hexadecimal number (if you treat \"?\" as a hexadecimal digit).\n//\n// <urange> =\n//   u '+' <ident-token> '?'* |\n//   u <dimension-token> '?'* |\n//   u <number-token> '?'* |\n//   u <number-token> <dimension-token> |\n//   u <number-token> <number-token> |\n//   u '+' '?'+\nfunction scanUnicodeRange() {\n    let hexLength = 0;\n\n    switch (this.tokenType) {\n        case types.Number:\n            // u <number-token> '?'*\n            // u <number-token> <dimension-token>\n            // u <number-token> <number-token>\n            hexLength = eatHexSequence.call(this, 1, true);\n\n            if (this.isDelim(QUESTIONMARK)) {\n                eatQuestionMarkSequence.call(this, 6 - hexLength);\n                break;\n            }\n\n            if (this.tokenType === types.Dimension ||\n                this.tokenType === types.Number) {\n                startsWith.call(this, HYPHENMINUS);\n                eatHexSequence.call(this, 1, false);\n                break;\n            }\n\n            break;\n\n        case types.Dimension:\n            // u <dimension-token> '?'*\n            hexLength = eatHexSequence.call(this, 1, true);\n\n            if (hexLength > 0) {\n                eatQuestionMarkSequence.call(this, 6 - hexLength);\n            }\n\n            break;\n\n        default:\n            // u '+' <ident-token> '?'*\n            // u '+' '?'+\n            this.eatDelim(PLUSSIGN);\n\n            if (this.tokenType === types.Ident) {\n                hexLength = eatHexSequence.call(this, 0, true);\n                if (hexLength > 0) {\n                    eatQuestionMarkSequence.call(this, 6 - hexLength);\n                }\n                break;\n            }\n\n            if (this.isDelim(QUESTIONMARK)) {\n                this.next();\n                eatQuestionMarkSequence.call(this, 5);\n                break;\n            }\n\n            this.error('Hex digit or question mark is expected');\n    }\n}\n\nconst name = 'UnicodeRange';\nconst structure = {\n    value: String\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n\n    // U or u\n    this.eatIdent('u');\n    scanUnicodeRange.call(this);\n\n    return {\n        type: 'UnicodeRange',\n        loc: this.getLocation(start, this.tokenStart),\n        value: this.substrToCursor(start)\n    };\n}\n\nfunction generate(node) {\n    this.tokenize(node.value);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');\nconst utils = require('../tokenizer/utils.cjs');\n\nconst SPACE = 0x0020;            // U+0020 SPACE\nconst REVERSE_SOLIDUS = 0x005c;  // U+005C REVERSE SOLIDUS (\\)\nconst QUOTATION_MARK = 0x0022;   // \"\nconst APOSTROPHE = 0x0027;       // '\nconst LEFTPARENTHESIS = 0x0028;  // U+0028 LEFT PARENTHESIS (()\nconst RIGHTPARENTHESIS = 0x0029; // U+0029 RIGHT PARENTHESIS ())\n\nfunction decode(str) {\n    const len = str.length;\n    let start = 4; // length of \"url(\"\n    let end = str.charCodeAt(len - 1) === RIGHTPARENTHESIS ? len - 2 : len - 1;\n    let decoded = '';\n\n    while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(start))) {\n        start++;\n    }\n\n    while (start < end && charCodeDefinitions.isWhiteSpace(str.charCodeAt(end))) {\n        end--;\n    }\n\n    for (let i = start; i <= end; i++) {\n        let code = str.charCodeAt(i);\n\n        if (code === REVERSE_SOLIDUS) {\n            // special case at the ending\n            if (i === end) {\n                // if the next input code point is EOF, do nothing\n                // otherwise include last left parenthesis as escaped\n                if (i !== len - 1) {\n                    decoded = str.substr(i + 1);\n                }\n                break;\n            }\n\n            code = str.charCodeAt(++i);\n\n            // consume escaped\n            if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {\n                const escapeStart = i - 1;\n                const escapeEnd = utils.consumeEscaped(str, escapeStart);\n\n                i = escapeEnd - 1;\n                decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));\n            } else {\n                // \\r\\n\n                if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {\n                    i++;\n                }\n            }\n        } else {\n            decoded += str[i];\n        }\n    }\n\n    return decoded;\n}\n\nfunction encode(str) {\n    let encoded = '';\n    let wsBeforeHexIsNeeded = false;\n\n    for (let i = 0; i < str.length; i++) {\n        const code = str.charCodeAt(i);\n\n        // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).\n        if (code === 0x0000) {\n            encoded += '\\uFFFD';\n            continue;\n        }\n\n        // If the character is in the range [\\1-\\1f] (U+0001 to U+001F) or is U+007F,\n        // the character escaped as code point.\n        // Note: Do not compare with 0x0001 since 0x0000 is precessed before\n        if (code <= 0x001f || code === 0x007F) {\n            encoded += '\\\\' + code.toString(16);\n            wsBeforeHexIsNeeded = true;\n            continue;\n        }\n\n        if (code === SPACE ||\n            code === REVERSE_SOLIDUS ||\n            code === QUOTATION_MARK ||\n            code === APOSTROPHE ||\n            code === LEFTPARENTHESIS ||\n            code === RIGHTPARENTHESIS) {\n            encoded += '\\\\' + str.charAt(i);\n            wsBeforeHexIsNeeded = false;\n        } else {\n            if (wsBeforeHexIsNeeded && charCodeDefinitions.isHexDigit(code)) {\n                encoded += ' ';\n            }\n\n            encoded += str.charAt(i);\n            wsBeforeHexIsNeeded = false;\n        }\n    }\n\n    return 'url(' + encoded + ')';\n}\n\nexports.decode = decode;\nexports.encode = encode;\n","'use strict';\n\nconst url = require('../../utils/url.cjs');\nconst string = require('../../utils/string.cjs');\nconst types = require('../../tokenizer/types.cjs');\n\nconst name = 'Url';\nconst structure = {\n    value: String\n};\n\n// <url-token> | <function-token> <string> )\nfunction parse() {\n    const start = this.tokenStart;\n    let value;\n\n    switch (this.tokenType) {\n        case types.Url:\n            value = url.decode(this.consume(types.Url));\n            break;\n\n        case types.Function:\n            if (!this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')) {\n                this.error('Function name must be `url`');\n            }\n\n            this.eat(types.Function);\n            this.skipSC();\n            value = string.decode(this.consume(types.String));\n            this.skipSC();\n            if (!this.eof) {\n                this.eat(types.RightParenthesis);\n            }\n            break;\n\n        default:\n            this.error('Url or Function is expected');\n    }\n\n    return {\n        type: 'Url',\n        loc: this.getLocation(start, this.tokenStart),\n        value\n    };\n}\n\nfunction generate(node) {\n    this.token(types.Url, url.encode(node.value));\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst name = 'Value';\nconst structure = {\n    children: [[]]\n};\n\nfunction parse() {\n    const start = this.tokenStart;\n    const children = this.readSequence(this.scope.Value);\n\n    return {\n        type: 'Value',\n        loc: this.getLocation(start, this.tokenStart),\n        children\n    };\n}\n\nfunction generate(node) {\n    this.children(node);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst SPACE = Object.freeze({\n    type: 'WhiteSpace',\n    loc: null,\n    value: ' '\n});\n\nconst name = 'WhiteSpace';\nconst structure = {\n    value: String\n};\n\nfunction parse() {\n    this.eat(types.WhiteSpace);\n    return SPACE;\n\n    // return {\n    //     type: 'WhiteSpace',\n    //     loc: this.getLocation(this.tokenStart, this.tokenEnd),\n    //     value: this.consume(WHITESPACE)\n    // };\n}\n\nfunction generate(node) {\n    this.token(types.WhiteSpace, node.value);\n}\n\nexports.generate = generate;\nexports.name = name;\nexports.parse = parse;\nexports.structure = structure;\n","'use strict';\n\nconst AnPlusB = require('./AnPlusB.cjs');\nconst Atrule = require('./Atrule.cjs');\nconst AtrulePrelude = require('./AtrulePrelude.cjs');\nconst AttributeSelector = require('./AttributeSelector.cjs');\nconst Block = require('./Block.cjs');\nconst Brackets = require('./Brackets.cjs');\nconst CDC = require('./CDC.cjs');\nconst CDO = require('./CDO.cjs');\nconst ClassSelector = require('./ClassSelector.cjs');\nconst Combinator = require('./Combinator.cjs');\nconst Comment = require('./Comment.cjs');\nconst Condition = require('./Condition.cjs');\nconst Declaration = require('./Declaration.cjs');\nconst DeclarationList = require('./DeclarationList.cjs');\nconst Dimension = require('./Dimension.cjs');\nconst Feature = require('./Feature.cjs');\nconst FeatureFunction = require('./FeatureFunction.cjs');\nconst FeatureRange = require('./FeatureRange.cjs');\nconst Function = require('./Function.cjs');\nconst GeneralEnclosed = require('./GeneralEnclosed.cjs');\nconst Hash = require('./Hash.cjs');\nconst Identifier = require('./Identifier.cjs');\nconst IdSelector = require('./IdSelector.cjs');\nconst Layer = require('./Layer.cjs');\nconst LayerList = require('./LayerList.cjs');\nconst MediaQuery = require('./MediaQuery.cjs');\nconst MediaQueryList = require('./MediaQueryList.cjs');\nconst NestingSelector = require('./NestingSelector.cjs');\nconst Nth = require('./Nth.cjs');\nconst Number$1 = require('./Number.cjs');\nconst Operator = require('./Operator.cjs');\nconst Parentheses = require('./Parentheses.cjs');\nconst Percentage = require('./Percentage.cjs');\nconst PseudoClassSelector = require('./PseudoClassSelector.cjs');\nconst PseudoElementSelector = require('./PseudoElementSelector.cjs');\nconst Ratio = require('./Ratio.cjs');\nconst Raw = require('./Raw.cjs');\nconst Rule = require('./Rule.cjs');\nconst Scope = require('./Scope.cjs');\nconst Selector = require('./Selector.cjs');\nconst SelectorList = require('./SelectorList.cjs');\nconst String$1 = require('./String.cjs');\nconst StyleSheet = require('./StyleSheet.cjs');\nconst SupportsDeclaration = require('./SupportsDeclaration.cjs');\nconst TypeSelector = require('./TypeSelector.cjs');\nconst UnicodeRange = require('./UnicodeRange.cjs');\nconst Url = require('./Url.cjs');\nconst Value = require('./Value.cjs');\nconst WhiteSpace = require('./WhiteSpace.cjs');\n\n\n\nexports.AnPlusB = AnPlusB;\nexports.Atrule = Atrule;\nexports.AtrulePrelude = AtrulePrelude;\nexports.AttributeSelector = AttributeSelector;\nexports.Block = Block;\nexports.Brackets = Brackets;\nexports.CDC = CDC;\nexports.CDO = CDO;\nexports.ClassSelector = ClassSelector;\nexports.Combinator = Combinator;\nexports.Comment = Comment;\nexports.Condition = Condition;\nexports.Declaration = Declaration;\nexports.DeclarationList = DeclarationList;\nexports.Dimension = Dimension;\nexports.Feature = Feature;\nexports.FeatureFunction = FeatureFunction;\nexports.FeatureRange = FeatureRange;\nexports.Function = Function;\nexports.GeneralEnclosed = GeneralEnclosed;\nexports.Hash = Hash;\nexports.Identifier = Identifier;\nexports.IdSelector = IdSelector;\nexports.Layer = Layer;\nexports.LayerList = LayerList;\nexports.MediaQuery = MediaQuery;\nexports.MediaQueryList = MediaQueryList;\nexports.NestingSelector = NestingSelector;\nexports.Nth = Nth;\nexports.Number = Number$1;\nexports.Operator = Operator;\nexports.Parentheses = Parentheses;\nexports.Percentage = Percentage;\nexports.PseudoClassSelector = PseudoClassSelector;\nexports.PseudoElementSelector = PseudoElementSelector;\nexports.Ratio = Ratio;\nexports.Raw = Raw;\nexports.Rule = Rule;\nexports.Scope = Scope;\nexports.Selector = Selector;\nexports.SelectorList = SelectorList;\nexports.String = String$1;\nexports.StyleSheet = StyleSheet;\nexports.SupportsDeclaration = SupportsDeclaration;\nexports.TypeSelector = TypeSelector;\nexports.UnicodeRange = UnicodeRange;\nexports.Url = Url;\nexports.Value = Value;\nexports.WhiteSpace = WhiteSpace;\n","'use strict';\n\nconst genericConst = require('../../lexer/generic-const.cjs');\nconst data = require('../../data.cjs');\nconst index = require('../node/index.cjs');\n\nconst lexerConfig = {\n    generic: true,\n    cssWideKeywords: genericConst.cssWideKeywords,\n    ...data,\n    node: index\n};\n\nmodule.exports = lexerConfig;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst NUMBERSIGN = 0x0023;  // U+0023 NUMBER SIGN (#)\nconst ASTERISK = 0x002A;    // U+002A ASTERISK (*)\nconst PLUSSIGN = 0x002B;    // U+002B PLUS SIGN (+)\nconst HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)\nconst SOLIDUS = 0x002F;     // U+002F SOLIDUS (/)\nconst U = 0x0075;           // U+0075 LATIN SMALL LETTER U (u)\n\nfunction defaultRecognizer(context) {\n    switch (this.tokenType) {\n        case types.Hash:\n            return this.Hash();\n\n        case types.Comma:\n            return this.Operator();\n\n        case types.LeftParenthesis:\n            return this.Parentheses(this.readSequence, context.recognizer);\n\n        case types.LeftSquareBracket:\n            return this.Brackets(this.readSequence, context.recognizer);\n\n        case types.String:\n            return this.String();\n\n        case types.Dimension:\n            return this.Dimension();\n\n        case types.Percentage:\n            return this.Percentage();\n\n        case types.Number:\n            return this.Number();\n\n        case types.Function:\n            return this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')\n                ? this.Url()\n                : this.Function(this.readSequence, context.recognizer);\n\n        case types.Url:\n            return this.Url();\n\n        case types.Ident:\n            // check for unicode range, it should start with u+ or U+\n            if (this.cmpChar(this.tokenStart, U) &&\n                this.cmpChar(this.tokenStart + 1, PLUSSIGN)) {\n                return this.UnicodeRange();\n            } else {\n                return this.Identifier();\n            }\n\n        case types.Delim: {\n            const code = this.charCodeAt(this.tokenStart);\n\n            if (code === SOLIDUS ||\n                code === ASTERISK ||\n                code === PLUSSIGN ||\n                code === HYPHENMINUS) {\n                return this.Operator(); // TODO: replace with Delim\n            }\n\n            // TODO: produce a node with Delim node type\n\n            if (code === NUMBERSIGN) {\n                this.error('Hex or identifier is expected', this.tokenStart + 1);\n            }\n\n            break;\n        }\n    }\n}\n\nmodule.exports = defaultRecognizer;\n","'use strict';\n\nconst _default = require('./default.cjs');\n\nconst atrulePrelude = {\n    getNode: _default\n};\n\nmodule.exports = atrulePrelude;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nconst NUMBERSIGN = 0x0023;      // U+0023 NUMBER SIGN (#)\nconst AMPERSAND = 0x0026;       // U+0026 AMPERSAND (&)\nconst ASTERISK = 0x002A;        // U+002A ASTERISK (*)\nconst PLUSSIGN = 0x002B;        // U+002B PLUS SIGN (+)\nconst SOLIDUS = 0x002F;         // U+002F SOLIDUS (/)\nconst FULLSTOP = 0x002E;        // U+002E FULL STOP (.)\nconst GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)\nconst VERTICALLINE = 0x007C;    // U+007C VERTICAL LINE (|)\nconst TILDE = 0x007E;           // U+007E TILDE (~)\n\nfunction onWhiteSpace(next, children) {\n    if (children.last !== null && children.last.type !== 'Combinator' &&\n        next !== null && next.type !== 'Combinator') {\n        children.push({  // FIXME: this.Combinator() should be used instead\n            type: 'Combinator',\n            loc: null,\n            name: ' '\n        });\n    }\n}\n\nfunction getNode() {\n    switch (this.tokenType) {\n        case types.LeftSquareBracket:\n            return this.AttributeSelector();\n\n        case types.Hash:\n            return this.IdSelector();\n\n        case types.Colon:\n            if (this.lookupType(1) === types.Colon) {\n                return this.PseudoElementSelector();\n            } else {\n                return this.PseudoClassSelector();\n            }\n\n        case types.Ident:\n            return this.TypeSelector();\n\n        case types.Number:\n        case types.Percentage:\n            return this.Percentage();\n\n        case types.Dimension:\n            // throws when .123ident\n            if (this.charCodeAt(this.tokenStart) === FULLSTOP) {\n                this.error('Identifier is expected', this.tokenStart + 1);\n            }\n            break;\n\n        case types.Delim: {\n            const code = this.charCodeAt(this.tokenStart);\n\n            switch (code) {\n                case PLUSSIGN:\n                case GREATERTHANSIGN:\n                case TILDE:\n                case SOLIDUS:  // /deep/\n                    return this.Combinator();\n\n                case FULLSTOP:\n                    return this.ClassSelector();\n\n                case ASTERISK:\n                case VERTICALLINE:\n                    return this.TypeSelector();\n\n                case NUMBERSIGN:\n                    return this.IdSelector();\n\n                case AMPERSAND:\n                    return this.NestingSelector();\n            }\n\n            break;\n        }\n    }\n}\nconst Selector = {\n    onWhiteSpace,\n    getNode\n};\n\nmodule.exports = Selector;\n","'use strict';\n\n// legacy IE function\n// expression( <any-value> )\nfunction expressionFn() {\n    return this.createSingleNodeList(\n        this.Raw(null, false)\n    );\n}\n\nmodule.exports = expressionFn;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\n// var( <ident> , <value>? )\nfunction varFn() {\n    const children = this.createList();\n\n    this.skipSC();\n\n    // NOTE: Don't check more than a first argument is an ident, rest checks are for lexer\n    children.push(this.Identifier());\n\n    this.skipSC();\n\n    if (this.tokenType === types.Comma) {\n        children.push(this.Operator());\n\n        const startIndex = this.tokenIndex;\n        const value = this.parseCustomProperty\n            ? this.Value(null)\n            : this.Raw(this.consumeUntilExclamationMarkOrSemicolon, false);\n\n        if (value.type === 'Value' && value.children.isEmpty) {\n            for (let offset = startIndex - this.tokenIndex; offset <= 0; offset++) {\n                if (this.lookupType(offset) === types.WhiteSpace) {\n                    value.children.appendData({\n                        type: 'WhiteSpace',\n                        loc: null,\n                        value: ' '\n                    });\n                    break;\n                }\n            }\n        }\n\n        children.push(value);\n    }\n\n    return children;\n}\n\nmodule.exports = varFn;\n","'use strict';\n\nconst _default = require('./default.cjs');\nconst expression = require('../function/expression.cjs');\nconst _var = require('../function/var.cjs');\n\nfunction isPlusMinusOperator(node) {\n    return (\n        node !== null &&\n        node.type === 'Operator' &&\n        (node.value[node.value.length - 1] === '-' || node.value[node.value.length - 1] === '+')\n    );\n}\n\nconst value = {\n    getNode: _default,\n    onWhiteSpace(next, children) {\n        if (isPlusMinusOperator(next)) {\n            next.value = ' ' + next.value;\n        }\n        if (isPlusMinusOperator(children.last)) {\n            children.last.value += ' ';\n        }\n    },\n    'expression': expression,\n    'var': _var\n};\n\nmodule.exports = value;\n","'use strict';\n\nconst atrulePrelude = require('./atrulePrelude.cjs');\nconst selector = require('./selector.cjs');\nconst value = require('./value.cjs');\n\n\n\nexports.AtrulePrelude = atrulePrelude;\nexports.Selector = selector;\nexports.Value = value;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\n// https://drafts.csswg.org/css-contain-3/#container-rule\n// The keywords `none`, `and`, `not`, and `or` are excluded from the <custom-ident> above.\nconst nonContainerNameKeywords = new Set(['none', 'and', 'not', 'or']);\n\nconst container = {\n    parse: {\n        prelude() {\n            const children = this.createList();\n\n            if (this.tokenType === types.Ident) {\n                const name = this.substring(this.tokenStart, this.tokenEnd);\n\n                if (!nonContainerNameKeywords.has(name.toLowerCase())) {\n                    children.push(this.Identifier());\n                }\n            }\n\n            children.push(this.Condition('container'));\n\n            return children;\n        },\n        block(nested = false) {\n            return this.Block(nested);\n        }\n    }\n};\n\nmodule.exports = container;\n","'use strict';\n\nconst fontFace = {\n    parse: {\n        prelude: null,\n        block() {\n            return this.Block(true);\n        }\n    }\n};\n\nmodule.exports = fontFace;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nfunction parseWithFallback(parse, fallback) {\n    return this.parseWithFallback(\n        () => {\n            try {\n                return parse.call(this);\n            } finally {\n                this.skipSC();\n                if (this.lookupNonWSType(0) !== types.RightParenthesis) {\n                    this.error();\n                }\n            }\n        },\n        fallback || (() => this.Raw(null, true))\n    );\n}\n\nconst parseFunctions = {\n    layer() {\n        this.skipSC();\n\n        const children = this.createList();\n        const node = parseWithFallback.call(this, this.Layer);\n\n        if (node.type !== 'Raw' || node.value !== '') {\n            children.push(node);\n        }\n\n        return children;\n    },\n    supports() {\n        this.skipSC();\n\n        const children = this.createList();\n        const node = parseWithFallback.call(\n            this,\n            this.Declaration,\n            () => parseWithFallback.call(this, () => this.Condition('supports'))\n        );\n\n        if (node.type !== 'Raw' || node.value !== '') {\n            children.push(node);\n        }\n\n        return children;\n    }\n};\n\nconst importAtrule = {\n    parse: {\n        prelude() {\n            const children = this.createList();\n\n            switch (this.tokenType) {\n                case types.String:\n                    children.push(this.String());\n                    break;\n\n                case types.Url:\n                case types.Function:\n                    children.push(this.Url());\n                    break;\n\n                default:\n                    this.error('String or url() is expected');\n            }\n\n            this.skipSC();\n\n            if (this.tokenType === types.Ident &&\n                this.cmpStr(this.tokenStart, this.tokenEnd, 'layer')) {\n                children.push(this.Identifier());\n            } else if (\n                this.tokenType === types.Function &&\n                this.cmpStr(this.tokenStart, this.tokenEnd, 'layer(')\n            ) {\n                children.push(this.Function(null, parseFunctions));\n            }\n\n            this.skipSC();\n\n            if (this.tokenType === types.Function &&\n                this.cmpStr(this.tokenStart, this.tokenEnd, 'supports(')) {\n                children.push(this.Function(null, parseFunctions));\n            }\n\n            if (this.lookupNonWSType(0) === types.Ident ||\n                this.lookupNonWSType(0) === types.LeftParenthesis) {\n                children.push(this.MediaQueryList());\n            }\n\n            return children;\n        },\n        block: null\n    }\n};\n\nmodule.exports = importAtrule;\n","'use strict';\n\nconst layer = {\n    parse: {\n        prelude() {\n            return this.createSingleNodeList(\n                this.LayerList()\n            );\n        },\n        block() {\n            return this.Block(false);\n        }\n    }\n};\n\nmodule.exports = layer;\n","'use strict';\n\nconst media = {\n    parse: {\n        prelude() {\n            return this.createSingleNodeList(\n                this.MediaQueryList()\n            );\n        },\n        block(nested = false) {\n            return this.Block(nested);\n        }\n    }\n};\n\nmodule.exports = media;\n","'use strict';\n\nconst nest = {\n    parse: {\n        prelude() {\n            return this.createSingleNodeList(\n                this.SelectorList()\n            );\n        },\n        block() {\n            return this.Block(true);\n        }\n    }\n};\n\nmodule.exports = nest;\n","'use strict';\n\nconst page = {\n    parse: {\n        prelude() {\n            return this.createSingleNodeList(\n                this.SelectorList()\n            );\n        },\n        block() {\n            return this.Block(true);\n        }\n    }\n};\n\nmodule.exports = page;\n","'use strict';\n\nconst scope = {\n    parse: {\n        prelude() {\n            return this.createSingleNodeList(\n                this.Scope()\n            );\n        },\n        block(nested = false) {\n            return this.Block(nested);\n        }\n    }\n};\n\nmodule.exports = scope;\n","'use strict';\n\nconst startingStyle = {\n    parse: {\n        prelude: null,\n        block(nested = false) {\n            return this.Block(nested);\n        }\n    }\n};\n\nmodule.exports = startingStyle;\n","'use strict';\n\nconst supports = {\n    parse: {\n        prelude() {\n            return this.createSingleNodeList(\n                this.Condition('supports')\n            );\n        },\n        block(nested = false) {\n            return this.Block(nested);\n        }\n    }\n};\n\nmodule.exports = supports;\n","'use strict';\n\nconst container = require('./container.cjs');\nconst fontFace = require('./font-face.cjs');\nconst _import = require('./import.cjs');\nconst layer = require('./layer.cjs');\nconst media = require('./media.cjs');\nconst nest = require('./nest.cjs');\nconst page = require('./page.cjs');\nconst scope = require('./scope.cjs');\nconst startingStyle = require('./starting-style.cjs');\nconst supports = require('./supports.cjs');\n\nconst atrule = {\n    container,\n    'font-face': fontFace,\n    import: _import,\n    layer,\n    media,\n    nest,\n    page,\n    scope,\n    'starting-style': startingStyle,\n    supports\n};\n\nmodule.exports = atrule;\n","'use strict';\n\nconst types = require('../../tokenizer/types.cjs');\n\nfunction parseLanguageRangeList() {\n    const children = this.createList();\n\n    this.skipSC();\n\n    loop: while (!this.eof) {\n        switch (this.tokenType) {\n            case types.Ident:\n                children.push(this.Identifier());\n                break;\n\n            case types.String:\n                children.push(this.String());\n                break;\n\n            case types.Comma:\n                children.push(this.Operator());\n                break;\n\n            case types.RightParenthesis:\n                break loop;\n\n            default:\n                this.error('Identifier, string or comma is expected');\n        }\n\n        this.skipSC();\n    }\n\n    return children;\n}\n\nexports.parseLanguageRangeList = parseLanguageRangeList;\n","'use strict';\n\nconst lang = require('./lang.cjs');\n\nconst selectorList = {\n    parse() {\n        return this.createSingleNodeList(\n            this.SelectorList()\n        );\n    }\n};\n\nconst selector = {\n    parse() {\n        return this.createSingleNodeList(\n            this.Selector()\n        );\n    }\n};\n\nconst identList = {\n    parse() {\n        return this.createSingleNodeList(\n            this.Identifier()\n        );\n    }\n};\n\nconst langList = {\n    parse: lang.parseLanguageRangeList\n};\n\nconst nth = {\n    parse() {\n        return this.createSingleNodeList(\n            this.Nth()\n        );\n    }\n};\n\nconst pseudo = {\n    'dir': identList,\n    'has': selectorList,\n    'lang': langList,\n    'matches': selectorList,\n    'is': selectorList,\n    '-moz-any': selectorList,\n    '-webkit-any': selectorList,\n    'where': selectorList,\n    'not': selectorList,\n    'nth-child': nth,\n    'nth-last-child': nth,\n    'nth-last-of-type': nth,\n    'nth-of-type': nth,\n    'slotted': selector,\n    'host': selector,\n    'host-context': selector\n};\n\nmodule.exports = pseudo;\n","'use strict';\n\nconst AnPlusB = require('./AnPlusB.cjs');\nconst Atrule = require('./Atrule.cjs');\nconst AtrulePrelude = require('./AtrulePrelude.cjs');\nconst AttributeSelector = require('./AttributeSelector.cjs');\nconst Block = require('./Block.cjs');\nconst Brackets = require('./Brackets.cjs');\nconst CDC = require('./CDC.cjs');\nconst CDO = require('./CDO.cjs');\nconst ClassSelector = require('./ClassSelector.cjs');\nconst Combinator = require('./Combinator.cjs');\nconst Comment = require('./Comment.cjs');\nconst Condition = require('./Condition.cjs');\nconst Declaration = require('./Declaration.cjs');\nconst DeclarationList = require('./DeclarationList.cjs');\nconst Dimension = require('./Dimension.cjs');\nconst Feature = require('./Feature.cjs');\nconst FeatureFunction = require('./FeatureFunction.cjs');\nconst FeatureRange = require('./FeatureRange.cjs');\nconst Function = require('./Function.cjs');\nconst GeneralEnclosed = require('./GeneralEnclosed.cjs');\nconst Hash = require('./Hash.cjs');\nconst Identifier = require('./Identifier.cjs');\nconst IdSelector = require('./IdSelector.cjs');\nconst Layer = require('./Layer.cjs');\nconst LayerList = require('./LayerList.cjs');\nconst MediaQuery = require('./MediaQuery.cjs');\nconst MediaQueryList = require('./MediaQueryList.cjs');\nconst NestingSelector = require('./NestingSelector.cjs');\nconst Nth = require('./Nth.cjs');\nconst Number = require('./Number.cjs');\nconst Operator = require('./Operator.cjs');\nconst Parentheses = require('./Parentheses.cjs');\nconst Percentage = require('./Percentage.cjs');\nconst PseudoClassSelector = require('./PseudoClassSelector.cjs');\nconst PseudoElementSelector = require('./PseudoElementSelector.cjs');\nconst Ratio = require('./Ratio.cjs');\nconst Raw = require('./Raw.cjs');\nconst Rule = require('./Rule.cjs');\nconst Scope = require('./Scope.cjs');\nconst Selector = require('./Selector.cjs');\nconst SelectorList = require('./SelectorList.cjs');\nconst String = require('./String.cjs');\nconst StyleSheet = require('./StyleSheet.cjs');\nconst SupportsDeclaration = require('./SupportsDeclaration.cjs');\nconst TypeSelector = require('./TypeSelector.cjs');\nconst UnicodeRange = require('./UnicodeRange.cjs');\nconst Url = require('./Url.cjs');\nconst Value = require('./Value.cjs');\nconst WhiteSpace = require('./WhiteSpace.cjs');\n\n\n\nexports.AnPlusB = AnPlusB.parse;\nexports.Atrule = Atrule.parse;\nexports.AtrulePrelude = AtrulePrelude.parse;\nexports.AttributeSelector = AttributeSelector.parse;\nexports.Block = Block.parse;\nexports.Brackets = Brackets.parse;\nexports.CDC = CDC.parse;\nexports.CDO = CDO.parse;\nexports.ClassSelector = ClassSelector.parse;\nexports.Combinator = Combinator.parse;\nexports.Comment = Comment.parse;\nexports.Condition = Condition.parse;\nexports.Declaration = Declaration.parse;\nexports.DeclarationList = DeclarationList.parse;\nexports.Dimension = Dimension.parse;\nexports.Feature = Feature.parse;\nexports.FeatureFunction = FeatureFunction.parse;\nexports.FeatureRange = FeatureRange.parse;\nexports.Function = Function.parse;\nexports.GeneralEnclosed = GeneralEnclosed.parse;\nexports.Hash = Hash.parse;\nexports.Identifier = Identifier.parse;\nexports.IdSelector = IdSelector.parse;\nexports.Layer = Layer.parse;\nexports.LayerList = LayerList.parse;\nexports.MediaQuery = MediaQuery.parse;\nexports.MediaQueryList = MediaQueryList.parse;\nexports.NestingSelector = NestingSelector.parse;\nexports.Nth = Nth.parse;\nexports.Number = Number.parse;\nexports.Operator = Operator.parse;\nexports.Parentheses = Parentheses.parse;\nexports.Percentage = Percentage.parse;\nexports.PseudoClassSelector = PseudoClassSelector.parse;\nexports.PseudoElementSelector = PseudoElementSelector.parse;\nexports.Ratio = Ratio.parse;\nexports.Raw = Raw.parse;\nexports.Rule = Rule.parse;\nexports.Scope = Scope.parse;\nexports.Selector = Selector.parse;\nexports.SelectorList = SelectorList.parse;\nexports.String = String.parse;\nexports.StyleSheet = StyleSheet.parse;\nexports.SupportsDeclaration = SupportsDeclaration.parse;\nexports.TypeSelector = TypeSelector.parse;\nexports.UnicodeRange = UnicodeRange.parse;\nexports.Url = Url.parse;\nexports.Value = Value.parse;\nexports.WhiteSpace = WhiteSpace.parse;\n","'use strict';\n\nconst index = require('../scope/index.cjs');\nconst index$1 = require('../atrule/index.cjs');\nconst index$2 = require('../pseudo/index.cjs');\nconst indexParse = require('../node/index-parse.cjs');\n\nconst config = {\n    parseContext: {\n        default: 'StyleSheet',\n        stylesheet: 'StyleSheet',\n        atrule: 'Atrule',\n        atrulePrelude(options) {\n            return this.AtrulePrelude(options.atrule ? String(options.atrule) : null);\n        },\n        mediaQueryList: 'MediaQueryList',\n        mediaQuery: 'MediaQuery',\n        condition(options) {\n            return this.Condition(options.kind);\n        },\n        rule: 'Rule',\n        selectorList: 'SelectorList',\n        selector: 'Selector',\n        block() {\n            return this.Block(true);\n        },\n        declarationList: 'DeclarationList',\n        declaration: 'Declaration',\n        value: 'Value'\n    },\n    features: {\n        supports: {\n            selector() {\n                return this.Selector();\n            }\n        },\n        container: {\n            style() {\n                return this.Declaration();\n            }\n        }\n    },\n    scope: index,\n    atrule: index$1,\n    pseudo: index$2,\n    node: indexParse\n};\n\nmodule.exports = config;\n","'use strict';\n\nconst index = require('../node/index.cjs');\n\nconst config = {\n    node: index\n};\n\nmodule.exports = config;\n","'use strict';\n\nconst create = require('./create.cjs');\nconst lexer = require('./config/lexer.cjs');\nconst parser = require('./config/parser.cjs');\nconst walker = require('./config/walker.cjs');\n\nconst syntax = create({\n    ...lexer,\n    ...parser,\n    ...walker\n});\n\nmodule.exports = syntax;\n","","'use strict';\n\nconst { version } = require('../package.json');\n\nexports.version = version;\n","'use strict';\n\nconst SyntaxError = require('./SyntaxError.cjs');\nconst generate = require('./generate.cjs');\nconst parse = require('./parse.cjs');\nconst walk = require('./walk.cjs');\n\n\n\nexports.SyntaxError = SyntaxError.SyntaxError;\nexports.generate = generate.generate;\nexports.parse = parse.parse;\nexports.walk = walk.walk;\n","'use strict';\n\nconst List = require('./List.cjs');\n\nfunction clone(node) {\n    const result = {};\n\n    for (const key of Object.keys(node)) {\n        let value = node[key];\n\n        if (value) {\n            if (Array.isArray(value) || value instanceof List.List) {\n                value = value.map(clone);\n            } else if (value.constructor === Object) {\n                value = clone(value);\n            }\n        }\n\n        result[key] = value;\n    }\n\n    return result;\n}\n\nexports.clone = clone;\n","'use strict';\n\nconst charCodeDefinitions = require('../tokenizer/char-code-definitions.cjs');\nconst utils = require('../tokenizer/utils.cjs');\n\nconst REVERSE_SOLIDUS = 0x005c; // U+005C REVERSE SOLIDUS (\\)\n\nfunction decode(str) {\n    const end = str.length - 1;\n    let decoded = '';\n\n    for (let i = 0; i < str.length; i++) {\n        let code = str.charCodeAt(i);\n\n        if (code === REVERSE_SOLIDUS) {\n            // special case at the ending\n            if (i === end) {\n                // if the next input code point is EOF, do nothing\n                break;\n            }\n\n            code = str.charCodeAt(++i);\n\n            // consume escaped\n            if (charCodeDefinitions.isValidEscape(REVERSE_SOLIDUS, code)) {\n                const escapeStart = i - 1;\n                const escapeEnd = utils.consumeEscaped(str, escapeStart);\n\n                i = escapeEnd - 1;\n                decoded += utils.decodeEscaped(str.substring(escapeStart + 1, escapeEnd));\n            } else {\n                // \\r\\n\n                if (code === 0x000d && str.charCodeAt(i + 1) === 0x000a) {\n                    i++;\n                }\n            }\n        } else {\n            decoded += str[i];\n        }\n    }\n\n    return decoded;\n}\n\n// https://drafts.csswg.org/cssom/#serialize-an-identifier\n// § 2.1. Common Serializing Idioms\nfunction encode(str) {\n    let encoded = '';\n\n    // If the character is the first character and is a \"-\" (U+002D),\n    // and there is no second character, then the escaped character.\n    // Note: That's means a single dash string \"-\" return as escaped dash,\n    // so move the condition out of the main loop\n    if (str.length === 1 && str.charCodeAt(0) === 0x002D) {\n        return '\\\\-';\n    }\n\n    // To serialize an identifier means to create a string represented\n    // by the concatenation of, for each character of the identifier:\n    for (let i = 0; i < str.length; i++) {\n        const code = str.charCodeAt(i);\n\n        // If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).\n        if (code === 0x0000) {\n            encoded += '\\uFFFD';\n            continue;\n        }\n\n        if (\n            // If the character is in the range [\\1-\\1f] (U+0001 to U+001F) or is U+007F ...\n            // Note: Do not compare with 0x0001 since 0x0000 is precessed before\n            code <= 0x001F || code === 0x007F ||\n            // [or] ... is in the range [0-9] (U+0030 to U+0039),\n            (code >= 0x0030 && code <= 0x0039 && (\n                // If the character is the first character ...\n                i === 0 ||\n                // If the character is the second character ... and the first character is a \"-\" (U+002D)\n                i === 1 && str.charCodeAt(0) === 0x002D\n            ))\n        ) {\n            // ... then the character escaped as code point.\n            encoded += '\\\\' + code.toString(16) + ' ';\n            continue;\n        }\n\n        // If the character is not handled by one of the above rules and is greater\n        // than or equal to U+0080, is \"-\" (U+002D) or \"_\" (U+005F), or is in one\n        // of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to U+005A),\n        // or \\[a-z] (U+0061 to U+007A), then the character itself.\n        if (charCodeDefinitions.isName(code)) {\n            encoded += str.charAt(i);\n        } else {\n            // Otherwise, the escaped character.\n            encoded += '\\\\' + str.charAt(i);\n        }\n    }\n\n    return encoded;\n}\n\nexports.decode = decode;\nexports.encode = encode;\n","'use strict';\n\nconst index$1 = require('./syntax/index.cjs');\nconst version = require('./version.cjs');\nconst create = require('./syntax/create.cjs');\nconst List = require('./utils/List.cjs');\nconst Lexer = require('./lexer/Lexer.cjs');\nconst index = require('./definition-syntax/index.cjs');\nconst clone = require('./utils/clone.cjs');\nconst names$1 = require('./utils/names.cjs');\nconst ident = require('./utils/ident.cjs');\nconst string = require('./utils/string.cjs');\nconst url = require('./utils/url.cjs');\nconst types = require('./tokenizer/types.cjs');\nconst names = require('./tokenizer/names.cjs');\nconst TokenStream = require('./tokenizer/TokenStream.cjs');\nconst OffsetToLocation = require('./tokenizer/OffsetToLocation.cjs');\n\nconst {\n    tokenize,\n    parse,\n    generate,\n    lexer,\n    createLexer,\n\n    walk,\n    find,\n    findLast,\n    findAll,\n\n    toPlainObject,\n    fromPlainObject,\n\n    fork\n} = index$1;\n\nexports.version = version.version;\nexports.createSyntax = create;\nexports.List = List.List;\nexports.Lexer = Lexer.Lexer;\nexports.definitionSyntax = index;\nexports.clone = clone.clone;\nexports.isCustomProperty = names$1.isCustomProperty;\nexports.keyword = names$1.keyword;\nexports.property = names$1.property;\nexports.vendorPrefix = names$1.vendorPrefix;\nexports.ident = ident;\nexports.string = string;\nexports.url = url;\nexports.tokenTypes = types;\nexports.tokenNames = names;\nexports.TokenStream = TokenStream.TokenStream;\nexports.OffsetToLocation = OffsetToLocation.OffsetToLocation;\nexports.createLexer = createLexer;\nexports.find = find;\nexports.findAll = findAll;\nexports.findLast = findLast;\nexports.fork = fork;\nexports.fromPlainObject = fromPlainObject;\nexports.generate = generate;\nexports.lexer = lexer;\nexports.parse = parse;\nexports.toPlainObject = toPlainObject;\nexports.tokenize = tokenize;\nexports.walk = walk;\n","\"use strict\";\n// autogenerated - 2026-02-06\n\nmodule.exports = new Map([\n  [\n    \"-webkit-align-content\",\n    {\n      \"name\": \"-webkit-align-content\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-align-content\",\n      \"legacyAliasOf\": \"align-content\",\n      \"styleDeclaration\": [\n        \"-webkit-align-content\",\n        \"WebkitAlignContent\",\n        \"webkitAlignContent\"\n      ],\n      \"syntax\": \"normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>\"\n    }\n  ],\n  [\n    \"-webkit-align-items\",\n    {\n      \"name\": \"-webkit-align-items\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-align-items\",\n      \"legacyAliasOf\": \"align-items\",\n      \"styleDeclaration\": [\n        \"-webkit-align-items\",\n        \"WebkitAlignItems\",\n        \"webkitAlignItems\"\n      ],\n      \"syntax\": \"normal | stretch | <baseline-position> | <overflow-position>? <self-position>\"\n    }\n  ],\n  [\n    \"-webkit-align-self\",\n    {\n      \"name\": \"-webkit-align-self\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-align-self\",\n      \"legacyAliasOf\": \"align-self\",\n      \"styleDeclaration\": [\n        \"-webkit-align-self\",\n        \"WebkitAlignSelf\",\n        \"webkitAlignSelf\"\n      ],\n      \"syntax\": \"auto | <overflow-position>? [ normal | <self-position> ]| stretch | <baseline-position>\"\n    }\n  ],\n  [\n    \"-webkit-animation\",\n    {\n      \"name\": \"-webkit-animation\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation\",\n      \"legacyAliasOf\": \"animation\",\n      \"styleDeclaration\": [\n        \"-webkit-animation\",\n        \"WebkitAnimation\",\n        \"webkitAnimation\"\n      ],\n      \"syntax\": \"<single-animation>#\"\n    }\n  ],\n  [\n    \"-webkit-animation-delay\",\n    {\n      \"name\": \"-webkit-animation-delay\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-delay\",\n      \"legacyAliasOf\": \"animation-delay\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-delay\",\n        \"WebkitAnimationDelay\",\n        \"webkitAnimationDelay\"\n      ],\n      \"syntax\": \"<time>#\"\n    }\n  ],\n  [\n    \"-webkit-animation-direction\",\n    {\n      \"name\": \"-webkit-animation-direction\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-direction\",\n      \"legacyAliasOf\": \"animation-direction\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-direction\",\n        \"WebkitAnimationDirection\",\n        \"webkitAnimationDirection\"\n      ],\n      \"syntax\": \"<single-animation-direction>#\"\n    }\n  ],\n  [\n    \"-webkit-animation-duration\",\n    {\n      \"name\": \"-webkit-animation-duration\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-duration\",\n      \"legacyAliasOf\": \"animation-duration\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-duration\",\n        \"WebkitAnimationDuration\",\n        \"webkitAnimationDuration\"\n      ],\n      \"syntax\": \"<time [0s,∞]>#\"\n    }\n  ],\n  [\n    \"-webkit-animation-fill-mode\",\n    {\n      \"name\": \"-webkit-animation-fill-mode\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-fill-mode\",\n      \"legacyAliasOf\": \"animation-fill-mode\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-fill-mode\",\n        \"WebkitAnimationFillMode\",\n        \"webkitAnimationFillMode\"\n      ],\n      \"syntax\": \"<single-animation-fill-mode>#\"\n    }\n  ],\n  [\n    \"-webkit-animation-iteration-count\",\n    {\n      \"name\": \"-webkit-animation-iteration-count\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-iteration-count\",\n      \"legacyAliasOf\": \"animation-iteration-count\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-iteration-count\",\n        \"WebkitAnimationIterationCount\",\n        \"webkitAnimationIterationCount\"\n      ],\n      \"syntax\": \"<single-animation-iteration-count>#\"\n    }\n  ],\n  [\n    \"-webkit-animation-name\",\n    {\n      \"name\": \"-webkit-animation-name\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-name\",\n      \"legacyAliasOf\": \"animation-name\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-name\",\n        \"WebkitAnimationName\",\n        \"webkitAnimationName\"\n      ],\n      \"syntax\": \"[ none | <keyframes-name> ]#\"\n    }\n  ],\n  [\n    \"-webkit-animation-play-state\",\n    {\n      \"name\": \"-webkit-animation-play-state\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-play-state\",\n      \"legacyAliasOf\": \"animation-play-state\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-play-state\",\n        \"WebkitAnimationPlayState\",\n        \"webkitAnimationPlayState\"\n      ],\n      \"syntax\": \"<single-animation-play-state>#\"\n    }\n  ],\n  [\n    \"-webkit-animation-timing-function\",\n    {\n      \"name\": \"-webkit-animation-timing-function\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-animation-timing-function\",\n      \"legacyAliasOf\": \"animation-timing-function\",\n      \"styleDeclaration\": [\n        \"-webkit-animation-timing-function\",\n        \"WebkitAnimationTimingFunction\",\n        \"webkitAnimationTimingFunction\"\n      ],\n      \"syntax\": \"<easing-function>#\"\n    }\n  ],\n  [\n    \"-webkit-appearance\",\n    {\n      \"name\": \"-webkit-appearance\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef--webkit-appearance\",\n      \"legacyAliasOf\": \"appearance\",\n      \"styleDeclaration\": [\n        \"-webkit-appearance\",\n        \"WebkitAppearance\",\n        \"webkitAppearance\"\n      ],\n      \"syntax\": \"none | auto | base | base-select | <compat-auto> | <compat-special> | base\"\n    }\n  ],\n  [\n    \"-webkit-backface-visibility\",\n    {\n      \"name\": \"-webkit-backface-visibility\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-backface-visibility\",\n      \"legacyAliasOf\": \"backface-visibility\",\n      \"styleDeclaration\": [\n        \"-webkit-backface-visibility\",\n        \"WebkitBackfaceVisibility\",\n        \"webkitBackfaceVisibility\"\n      ],\n      \"syntax\": \"visible | hidden\"\n    }\n  ],\n  [\n    \"-webkit-background-clip\",\n    {\n      \"name\": \"-webkit-background-clip\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-background-clip\",\n      \"legacyAliasOf\": \"background-clip\",\n      \"styleDeclaration\": [\n        \"-webkit-background-clip\",\n        \"WebkitBackgroundClip\",\n        \"webkitBackgroundClip\"\n      ],\n      \"syntax\": \"<visual-box>#\"\n    }\n  ],\n  [\n    \"-webkit-background-origin\",\n    {\n      \"name\": \"-webkit-background-origin\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-background-origin\",\n      \"legacyAliasOf\": \"background-origin\",\n      \"styleDeclaration\": [\n        \"-webkit-background-origin\",\n        \"WebkitBackgroundOrigin\",\n        \"webkitBackgroundOrigin\"\n      ],\n      \"syntax\": \"<visual-box>#\"\n    }\n  ],\n  [\n    \"-webkit-background-size\",\n    {\n      \"name\": \"-webkit-background-size\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-background-size\",\n      \"legacyAliasOf\": \"background-size\",\n      \"styleDeclaration\": [\n        \"-webkit-background-size\",\n        \"WebkitBackgroundSize\",\n        \"webkitBackgroundSize\"\n      ],\n      \"syntax\": \"<bg-size>#\"\n    }\n  ],\n  [\n    \"-webkit-border-bottom-left-radius\",\n    {\n      \"name\": \"-webkit-border-bottom-left-radius\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-border-bottom-left-radius\",\n      \"legacyAliasOf\": \"border-bottom-left-radius\",\n      \"styleDeclaration\": [\n        \"-webkit-border-bottom-left-radius\",\n        \"WebkitBorderBottomLeftRadius\",\n        \"webkitBorderBottomLeftRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"-webkit-border-bottom-right-radius\",\n    {\n      \"name\": \"-webkit-border-bottom-right-radius\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-border-bottom-right-radius\",\n      \"legacyAliasOf\": \"border-bottom-right-radius\",\n      \"styleDeclaration\": [\n        \"-webkit-border-bottom-right-radius\",\n        \"WebkitBorderBottomRightRadius\",\n        \"webkitBorderBottomRightRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"-webkit-border-radius\",\n    {\n      \"name\": \"-webkit-border-radius\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-border-radius\",\n      \"legacyAliasOf\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"-webkit-border-radius\",\n        \"WebkitBorderRadius\",\n        \"webkitBorderRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?\"\n    }\n  ],\n  [\n    \"-webkit-border-top-left-radius\",\n    {\n      \"name\": \"-webkit-border-top-left-radius\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-border-top-left-radius\",\n      \"legacyAliasOf\": \"border-top-left-radius\",\n      \"styleDeclaration\": [\n        \"-webkit-border-top-left-radius\",\n        \"WebkitBorderTopLeftRadius\",\n        \"webkitBorderTopLeftRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"-webkit-border-top-right-radius\",\n    {\n      \"name\": \"-webkit-border-top-right-radius\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-border-top-right-radius\",\n      \"legacyAliasOf\": \"border-top-right-radius\",\n      \"styleDeclaration\": [\n        \"-webkit-border-top-right-radius\",\n        \"WebkitBorderTopRightRadius\",\n        \"webkitBorderTopRightRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"-webkit-box-align\",\n    {\n      \"name\": \"-webkit-box-align\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-box-align\",\n      \"styleDeclaration\": [\n        \"-webkit-box-align\",\n        \"WebkitBoxAlign\",\n        \"webkitBoxAlign\"\n      ]\n    }\n  ],\n  [\n    \"-webkit-box-flex\",\n    {\n      \"name\": \"-webkit-box-flex\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-box-flex\",\n      \"styleDeclaration\": [\n        \"-webkit-box-flex\",\n        \"WebkitBoxFlex\",\n        \"webkitBoxFlex\"\n      ]\n    }\n  ],\n  [\n    \"-webkit-box-ordinal-group\",\n    {\n      \"name\": \"-webkit-box-ordinal-group\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-box-ordinal-group\",\n      \"styleDeclaration\": [\n        \"-webkit-box-ordinal-group\",\n        \"WebkitBoxOrdinalGroup\",\n        \"webkitBoxOrdinalGroup\"\n      ]\n    }\n  ],\n  [\n    \"-webkit-box-orient\",\n    {\n      \"name\": \"-webkit-box-orient\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-box-orient\",\n      \"styleDeclaration\": [\n        \"-webkit-box-orient\",\n        \"WebkitBoxOrient\",\n        \"webkitBoxOrient\"\n      ]\n    }\n  ],\n  [\n    \"-webkit-box-pack\",\n    {\n      \"name\": \"-webkit-box-pack\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-box-pack\",\n      \"styleDeclaration\": [\n        \"-webkit-box-pack\",\n        \"WebkitBoxPack\",\n        \"webkitBoxPack\"\n      ]\n    }\n  ],\n  [\n    \"-webkit-box-shadow\",\n    {\n      \"name\": \"-webkit-box-shadow\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-box-shadow\",\n      \"legacyAliasOf\": \"box-shadow\",\n      \"styleDeclaration\": [\n        \"-webkit-box-shadow\",\n        \"WebkitBoxShadow\",\n        \"webkitBoxShadow\"\n      ],\n      \"syntax\": \"<spread-shadow>#\"\n    }\n  ],\n  [\n    \"-webkit-box-sizing\",\n    {\n      \"name\": \"-webkit-box-sizing\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-box-sizing\",\n      \"legacyAliasOf\": \"box-sizing\",\n      \"styleDeclaration\": [\n        \"-webkit-box-sizing\",\n        \"WebkitBoxSizing\",\n        \"webkitBoxSizing\"\n      ],\n      \"syntax\": \"content-box | border-box\"\n    }\n  ],\n  [\n    \"-webkit-filter\",\n    {\n      \"name\": \"-webkit-filter\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-filter\",\n      \"legacyAliasOf\": \"filter\",\n      \"styleDeclaration\": [\n        \"-webkit-filter\",\n        \"WebkitFilter\",\n        \"webkitFilter\"\n      ],\n      \"syntax\": \"none | <filter-value-list>\"\n    }\n  ],\n  [\n    \"-webkit-flex\",\n    {\n      \"name\": \"-webkit-flex\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-flex-propdef\",\n      \"legacyAliasOf\": \"flex\",\n      \"styleDeclaration\": [\n        \"-webkit-flex\",\n        \"WebkitFlex\",\n        \"webkitFlex\"\n      ],\n      \"syntax\": \"none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]\"\n    }\n  ],\n  [\n    \"-webkit-flex-basis\",\n    {\n      \"name\": \"-webkit-flex-basis\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-flex-basis\",\n      \"legacyAliasOf\": \"flex-basis\",\n      \"styleDeclaration\": [\n        \"-webkit-flex-basis\",\n        \"WebkitFlexBasis\",\n        \"webkitFlexBasis\"\n      ],\n      \"syntax\": \"content | <'width'>\"\n    }\n  ],\n  [\n    \"-webkit-flex-direction\",\n    {\n      \"name\": \"-webkit-flex-direction\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-flex-direction\",\n      \"legacyAliasOf\": \"flex-direction\",\n      \"styleDeclaration\": [\n        \"-webkit-flex-direction\",\n        \"WebkitFlexDirection\",\n        \"webkitFlexDirection\"\n      ],\n      \"syntax\": \"row | row-reverse | column | column-reverse\"\n    }\n  ],\n  [\n    \"-webkit-flex-flow\",\n    {\n      \"name\": \"-webkit-flex-flow\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-flex-flow\",\n      \"legacyAliasOf\": \"flex-flow\",\n      \"styleDeclaration\": [\n        \"-webkit-flex-flow\",\n        \"WebkitFlexFlow\",\n        \"webkitFlexFlow\"\n      ],\n      \"syntax\": \"<'flex-direction'> || <'flex-wrap'>\"\n    }\n  ],\n  [\n    \"-webkit-flex-grow\",\n    {\n      \"name\": \"-webkit-flex-grow\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-flex-grow\",\n      \"legacyAliasOf\": \"flex-grow\",\n      \"styleDeclaration\": [\n        \"-webkit-flex-grow\",\n        \"WebkitFlexGrow\",\n        \"webkitFlexGrow\"\n      ],\n      \"syntax\": \"<number [0,∞]>\"\n    }\n  ],\n  [\n    \"-webkit-flex-shrink\",\n    {\n      \"name\": \"-webkit-flex-shrink\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-flex-shrink\",\n      \"legacyAliasOf\": \"flex-shrink\",\n      \"styleDeclaration\": [\n        \"-webkit-flex-shrink\",\n        \"WebkitFlexShrink\",\n        \"webkitFlexShrink\"\n      ],\n      \"syntax\": \"<number [0,∞]>\"\n    }\n  ],\n  [\n    \"-webkit-flex-wrap\",\n    {\n      \"name\": \"-webkit-flex-wrap\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-flex-wrap\",\n      \"legacyAliasOf\": \"flex-wrap\",\n      \"styleDeclaration\": [\n        \"-webkit-flex-wrap\",\n        \"WebkitFlexWrap\",\n        \"webkitFlexWrap\"\n      ],\n      \"syntax\": \"nowrap | wrap | wrap-reverse\"\n    }\n  ],\n  [\n    \"-webkit-justify-content\",\n    {\n      \"name\": \"-webkit-justify-content\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-justify-content\",\n      \"legacyAliasOf\": \"justify-content\",\n      \"styleDeclaration\": [\n        \"-webkit-justify-content\",\n        \"WebkitJustifyContent\",\n        \"webkitJustifyContent\"\n      ],\n      \"syntax\": \"normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]\"\n    }\n  ],\n  [\n    \"-webkit-line-clamp\",\n    {\n      \"name\": \"-webkit-line-clamp\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef--webkit-line-clamp\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"-webkit-line-clamp\",\n        \"WebkitLineClamp\",\n        \"webkitLineClamp\"\n      ],\n      \"syntax\": \"none | <integer [1,∞]>\"\n    }\n  ],\n  [\n    \"-webkit-mask\",\n    {\n      \"name\": \"-webkit-mask\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask\",\n      \"legacyAliasOf\": \"mask\",\n      \"styleDeclaration\": [\n        \"-webkit-mask\",\n        \"WebkitMask\",\n        \"webkitMask\"\n      ],\n      \"syntax\": \"<mask-layer>#\"\n    }\n  ],\n  [\n    \"-webkit-mask-box-image\",\n    {\n      \"name\": \"-webkit-mask-box-image\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image\",\n      \"legacyAliasOf\": \"mask-border\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-box-image\",\n        \"WebkitMaskBoxImage\",\n        \"webkitMaskBoxImage\"\n      ],\n      \"syntax\": \"<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>\"\n    }\n  ],\n  [\n    \"-webkit-mask-box-image-outset\",\n    {\n      \"name\": \"-webkit-mask-box-image-outset\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-outset\",\n      \"legacyAliasOf\": \"mask-border-outset\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-box-image-outset\",\n        \"WebkitMaskBoxImageOutset\",\n        \"webkitMaskBoxImageOutset\"\n      ],\n      \"syntax\": \"[ <length> | <number> ]{1,4}\"\n    }\n  ],\n  [\n    \"-webkit-mask-box-image-repeat\",\n    {\n      \"name\": \"-webkit-mask-box-image-repeat\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-repeat\",\n      \"legacyAliasOf\": \"mask-border-repeat\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-box-image-repeat\",\n        \"WebkitMaskBoxImageRepeat\",\n        \"webkitMaskBoxImageRepeat\"\n      ],\n      \"syntax\": \"[ stretch | repeat | round | space ]{1,2}\"\n    }\n  ],\n  [\n    \"-webkit-mask-box-image-slice\",\n    {\n      \"name\": \"-webkit-mask-box-image-slice\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-slice\",\n      \"legacyAliasOf\": \"mask-border-slice\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-box-image-slice\",\n        \"WebkitMaskBoxImageSlice\",\n        \"webkitMaskBoxImageSlice\"\n      ],\n      \"syntax\": \"[ <number> | <percentage> ]{1,4} fill?\"\n    }\n  ],\n  [\n    \"-webkit-mask-box-image-source\",\n    {\n      \"name\": \"-webkit-mask-box-image-source\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-source\",\n      \"legacyAliasOf\": \"mask-border-source\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-box-image-source\",\n        \"WebkitMaskBoxImageSource\",\n        \"webkitMaskBoxImageSource\"\n      ],\n      \"syntax\": \"none | <image>\"\n    }\n  ],\n  [\n    \"-webkit-mask-box-image-width\",\n    {\n      \"name\": \"-webkit-mask-box-image-width\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image-width\",\n      \"legacyAliasOf\": \"mask-border-width\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-box-image-width\",\n        \"WebkitMaskBoxImageWidth\",\n        \"webkitMaskBoxImageWidth\"\n      ],\n      \"syntax\": \"[ <length-percentage> | <number> | auto ]{1,4}\"\n    }\n  ],\n  [\n    \"-webkit-mask-clip\",\n    {\n      \"name\": \"-webkit-mask-clip\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-clip\",\n      \"legacyAliasOf\": \"mask-clip\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-clip\",\n        \"WebkitMaskClip\",\n        \"webkitMaskClip\"\n      ],\n      \"syntax\": \"[ <coord-box> | no-clip ]#\"\n    }\n  ],\n  [\n    \"-webkit-mask-composite\",\n    {\n      \"name\": \"-webkit-mask-composite\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-composite\",\n      \"legacyAliasOf\": \"mask-composite\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-composite\",\n        \"WebkitMaskComposite\",\n        \"webkitMaskComposite\"\n      ],\n      \"syntax\": \"<compositing-operator>#\"\n    }\n  ],\n  [\n    \"-webkit-mask-image\",\n    {\n      \"name\": \"-webkit-mask-image\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-image\",\n      \"legacyAliasOf\": \"mask-image\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-image\",\n        \"WebkitMaskImage\",\n        \"webkitMaskImage\"\n      ],\n      \"syntax\": \"<mask-reference>#\"\n    }\n  ],\n  [\n    \"-webkit-mask-origin\",\n    {\n      \"name\": \"-webkit-mask-origin\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-origin\",\n      \"legacyAliasOf\": \"mask-origin\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-origin\",\n        \"WebkitMaskOrigin\",\n        \"webkitMaskOrigin\"\n      ],\n      \"syntax\": \"<coord-box>#\"\n    }\n  ],\n  [\n    \"-webkit-mask-position\",\n    {\n      \"name\": \"-webkit-mask-position\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-position\",\n      \"legacyAliasOf\": \"mask-position\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-position\",\n        \"WebkitMaskPosition\",\n        \"webkitMaskPosition\"\n      ],\n      \"syntax\": \"<position>#\"\n    }\n  ],\n  [\n    \"-webkit-mask-repeat\",\n    {\n      \"name\": \"-webkit-mask-repeat\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-repeat\",\n      \"legacyAliasOf\": \"mask-repeat\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-repeat\",\n        \"WebkitMaskRepeat\",\n        \"webkitMaskRepeat\"\n      ],\n      \"syntax\": \"<repeat-style>#\"\n    }\n  ],\n  [\n    \"-webkit-mask-size\",\n    {\n      \"name\": \"-webkit-mask-size\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-mask-size\",\n      \"legacyAliasOf\": \"mask-size\",\n      \"styleDeclaration\": [\n        \"-webkit-mask-size\",\n        \"WebkitMaskSize\",\n        \"webkitMaskSize\"\n      ],\n      \"syntax\": \"<bg-size>#\"\n    }\n  ],\n  [\n    \"-webkit-order\",\n    {\n      \"name\": \"-webkit-order\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-order\",\n      \"legacyAliasOf\": \"order\",\n      \"styleDeclaration\": [\n        \"-webkit-order\",\n        \"WebkitOrder\",\n        \"webkitOrder\"\n      ],\n      \"syntax\": \"<integer>\"\n    }\n  ],\n  [\n    \"-webkit-perspective\",\n    {\n      \"name\": \"-webkit-perspective\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-perspective\",\n      \"legacyAliasOf\": \"perspective\",\n      \"styleDeclaration\": [\n        \"-webkit-perspective\",\n        \"WebkitPerspective\",\n        \"webkitPerspective\"\n      ],\n      \"syntax\": \"none | <length [0,∞]>\"\n    }\n  ],\n  [\n    \"-webkit-perspective-origin\",\n    {\n      \"name\": \"-webkit-perspective-origin\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-perspective-origin\",\n      \"legacyAliasOf\": \"perspective-origin\",\n      \"styleDeclaration\": [\n        \"-webkit-perspective-origin\",\n        \"WebkitPerspectiveOrigin\",\n        \"webkitPerspectiveOrigin\"\n      ],\n      \"syntax\": \"<position>\"\n    }\n  ],\n  [\n    \"-webkit-text-fill-color\",\n    {\n      \"name\": \"-webkit-text-fill-color\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-text-fill-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"an RGBA color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"-webkit-text-fill-color\",\n        \"WebkitTextFillColor\",\n        \"webkitTextFillColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"-webkit-text-size-adjust\",\n    {\n      \"name\": \"-webkit-text-size-adjust\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-text-size-adjust\",\n      \"legacyAliasOf\": \"text-size-adjust\",\n      \"styleDeclaration\": [\n        \"-webkit-text-size-adjust\",\n        \"WebkitTextSizeAdjust\",\n        \"webkitTextSizeAdjust\"\n      ],\n      \"syntax\": \"auto | none | <percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"-webkit-text-stroke\",\n    {\n      \"name\": \"-webkit-text-stroke\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-text-stroke\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"See individual properties\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"See individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"See individual properties\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"-webkit-text-stroke\",\n        \"WebkitTextStroke\",\n        \"webkitTextStroke\"\n      ],\n      \"syntax\": \"<line-width> || <color>\"\n    }\n  ],\n  [\n    \"-webkit-text-stroke-color\",\n    {\n      \"name\": \"-webkit-text-stroke-color\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-text-stroke-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"an RGBA color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"-webkit-text-stroke-color\",\n        \"WebkitTextStrokeColor\",\n        \"webkitTextStrokeColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"-webkit-text-stroke-width\",\n    {\n      \"name\": \"-webkit-text-stroke-width\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-text-stroke-width\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"-webkit-text-stroke-width\",\n        \"WebkitTextStrokeWidth\",\n        \"webkitTextStrokeWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"-webkit-transform\",\n    {\n      \"name\": \"-webkit-transform\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transform\",\n      \"legacyAliasOf\": \"transform\",\n      \"styleDeclaration\": [\n        \"-webkit-transform\",\n        \"WebkitTransform\",\n        \"webkitTransform\"\n      ],\n      \"syntax\": \"none | <transform-list>\"\n    }\n  ],\n  [\n    \"-webkit-transform-origin\",\n    {\n      \"name\": \"-webkit-transform-origin\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transform-origin\",\n      \"legacyAliasOf\": \"transform-origin\",\n      \"styleDeclaration\": [\n        \"-webkit-transform-origin\",\n        \"WebkitTransformOrigin\",\n        \"webkitTransformOrigin\"\n      ],\n      \"syntax\": \"[ left | center | right | top | bottom | <length-percentage> ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ] <length>? | [ [ center | left | right ] && [ center | top | bottom ] ] <length>?\"\n    }\n  ],\n  [\n    \"-webkit-transform-style\",\n    {\n      \"name\": \"-webkit-transform-style\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transform-style\",\n      \"legacyAliasOf\": \"transform-style\",\n      \"styleDeclaration\": [\n        \"-webkit-transform-style\",\n        \"WebkitTransformStyle\",\n        \"webkitTransformStyle\"\n      ],\n      \"syntax\": \"flat | preserve-3d\"\n    }\n  ],\n  [\n    \"-webkit-transition\",\n    {\n      \"name\": \"-webkit-transition\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transition\",\n      \"legacyAliasOf\": \"transition\",\n      \"styleDeclaration\": [\n        \"-webkit-transition\",\n        \"WebkitTransition\",\n        \"webkitTransition\"\n      ],\n      \"syntax\": \"<single-transition>#\"\n    }\n  ],\n  [\n    \"-webkit-transition-delay\",\n    {\n      \"name\": \"-webkit-transition-delay\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transition-delay\",\n      \"legacyAliasOf\": \"transition-delay\",\n      \"styleDeclaration\": [\n        \"-webkit-transition-delay\",\n        \"WebkitTransitionDelay\",\n        \"webkitTransitionDelay\"\n      ],\n      \"syntax\": \"<time>#\"\n    }\n  ],\n  [\n    \"-webkit-transition-duration\",\n    {\n      \"name\": \"-webkit-transition-duration\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transition-duration\",\n      \"legacyAliasOf\": \"transition-duration\",\n      \"styleDeclaration\": [\n        \"-webkit-transition-duration\",\n        \"WebkitTransitionDuration\",\n        \"webkitTransitionDuration\"\n      ],\n      \"syntax\": \"<time [0s,∞]>#\"\n    }\n  ],\n  [\n    \"-webkit-transition-property\",\n    {\n      \"name\": \"-webkit-transition-property\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transition-property\",\n      \"legacyAliasOf\": \"transition-property\",\n      \"styleDeclaration\": [\n        \"-webkit-transition-property\",\n        \"WebkitTransitionProperty\",\n        \"webkitTransitionProperty\"\n      ],\n      \"syntax\": \"none | <single-transition-property>#\"\n    }\n  ],\n  [\n    \"-webkit-transition-timing-function\",\n    {\n      \"name\": \"-webkit-transition-timing-function\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef--webkit-transition-timing-function\",\n      \"legacyAliasOf\": \"transition-timing-function\",\n      \"styleDeclaration\": [\n        \"-webkit-transition-timing-function\",\n        \"WebkitTransitionTimingFunction\",\n        \"webkitTransitionTimingFunction\"\n      ],\n      \"syntax\": \"<easing-function>#\"\n    }\n  ],\n  [\n    \"-webkit-user-select\",\n    {\n      \"name\": \"-webkit-user-select\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef--webkit-user-select\",\n      \"styleDeclaration\": [\n        \"-webkit-user-select\",\n        \"WebkitUserSelect\",\n        \"webkitUserSelect\"\n      ],\n      \"syntax\": \"auto | text | none | contain | all\"\n    }\n  ],\n  [\n    \"accent-color\",\n    {\n      \"name\": \"accent-color\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-accent-color\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword auto or a computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"accent-color\",\n        \"accentColor\"\n      ],\n      \"syntax\": \"auto | <color>\"\n    }\n  ],\n  [\n    \"align-content\",\n    {\n      \"name\": \"align-content\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-align-content\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"block containers, multicol containers, flex containers, and grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"align-content\",\n        \"alignContent\"\n      ],\n      \"syntax\": \"normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>\"\n    }\n  ],\n  [\n    \"align-items\",\n    {\n      \"name\": \"align-items\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-align-items\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"align-items\",\n        \"alignItems\"\n      ],\n      \"syntax\": \"normal | stretch | <baseline-position> | <overflow-position>? <self-position> | anchor-center\"\n    }\n  ],\n  [\n    \"align-self\",\n    {\n      \"name\": \"align-self\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-align-self\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"flex items, grid items, and absolutely-positioned boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"align-self\",\n        \"alignSelf\"\n      ],\n      \"syntax\": \"auto | <overflow-position>? [ normal | <self-position> ]| stretch | <baseline-position> | anchor-center\"\n    }\n  ],\n  [\n    \"alignment-baseline\",\n    {\n      \"name\": \"alignment-baseline\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-alignment-baseline\",\n      \"initial\": \"baseline\",\n      \"appliesTo\": \"inline-level boxes, flex items, grid items, table cells, and SVG text content elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"alignment-baseline\",\n        \"alignmentBaseline\"\n      ],\n      \"syntax\": \"baseline | text-bottom | alphabetic | ideographic | middle | central | mathematical | text-top\"\n    }\n  ],\n  [\n    \"all\",\n    {\n      \"name\": \"all\",\n      \"href\": \"https://drafts.csswg.org/css-cascade-5/#propdef-all\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"all\"\n      ],\n      \"syntax\": \"initial | inherit | unset | revert | revert-layer | revert-rule\"\n    }\n  ],\n  [\n    \"anchor-name\",\n    {\n      \"name\": \"anchor-name\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-anchor-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements that generate a principal box\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"anchor-name\",\n        \"anchorName\"\n      ],\n      \"syntax\": \"none | <anchor-name>#\"\n    }\n  ],\n  [\n    \"anchor-scope\",\n    {\n      \"name\": \"anchor-scope\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-anchor-scope\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"anchor-scope\",\n        \"anchorScope\"\n      ],\n      \"syntax\": \"none | all | <anchor-name>#\"\n    }\n  ],\n  [\n    \"animation\",\n    {\n      \"name\": \"animation\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation\"\n      ],\n      \"syntax\": \"<single-animation>#\"\n    }\n  ],\n  [\n    \"animation-composition\",\n    {\n      \"name\": \"animation-composition\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-animation-composition\",\n      \"initial\": \"replace\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-composition\",\n        \"animationComposition\"\n      ],\n      \"syntax\": \"<single-animation-composition>#\"\n    }\n  ],\n  [\n    \"animation-delay\",\n    {\n      \"name\": \"animation-delay\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation-delay\",\n      \"initial\": \"0s\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a duration\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-delay\",\n        \"animationDelay\"\n      ],\n      \"syntax\": \"<time>#\"\n    }\n  ],\n  [\n    \"animation-direction\",\n    {\n      \"name\": \"animation-direction\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation-direction\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-direction\",\n        \"animationDirection\"\n      ],\n      \"syntax\": \"<single-animation-direction>#\"\n    }\n  ],\n  [\n    \"animation-duration\",\n    {\n      \"name\": \"animation-duration\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-animation-duration\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item either a time or the keyword auto\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-duration\",\n        \"animationDuration\"\n      ],\n      \"syntax\": \"[ auto | <time [0s,∞]> ]#\"\n    }\n  ],\n  [\n    \"animation-fill-mode\",\n    {\n      \"name\": \"animation-fill-mode\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation-fill-mode\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-fill-mode\",\n        \"animationFillMode\"\n      ],\n      \"syntax\": \"<single-animation-fill-mode>#\"\n    }\n  ],\n  [\n    \"animation-iteration-count\",\n    {\n      \"name\": \"animation-iteration-count\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation-iteration-count\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item either a number or the keyword infinite\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-iteration-count\",\n        \"animationIterationCount\"\n      ],\n      \"syntax\": \"<single-animation-iteration-count>#\"\n    }\n  ],\n  [\n    \"animation-name\",\n    {\n      \"name\": \"animation-name\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item either a case-sensitive css identifier or the keyword none\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-name\",\n        \"animationName\"\n      ],\n      \"syntax\": \"[ none | <keyframes-name> ]#\"\n    }\n  ],\n  [\n    \"animation-play-state\",\n    {\n      \"name\": \"animation-play-state\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation-play-state\",\n      \"initial\": \"running\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-play-state\",\n        \"animationPlayState\"\n      ],\n      \"syntax\": \"<single-animation-play-state>#\"\n    }\n  ],\n  [\n    \"animation-range\",\n    {\n      \"name\": \"animation-range\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-animation-range\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"animation-range\",\n        \"animationRange\"\n      ],\n      \"syntax\": \"[ <'animation-range-start'> <'animation-range-end'>? ]#\"\n    }\n  ],\n  [\n    \"animation-range-center\",\n    {\n      \"name\": \"animation-range-center\",\n      \"href\": \"https://drafts.csswg.org/pointer-animations-1/#propdef-animation-range-center\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the corresponding dimension of the specified timeline range center subject, else relative to the start of the animation attachment range\",\n      \"computedValue\": \"list, each item either the keyword normal or a timeline range center subject and a length-percentage value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-range-center\",\n        \"animationRangeCenter\"\n      ],\n      \"syntax\": \"[ normal | [ <length-percentage> | <timeline-range-center-subject> <length-percentage>? ] ]#\"\n    }\n  ],\n  [\n    \"animation-range-end\",\n    {\n      \"name\": \"animation-range-end\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-animation-range-end\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the specified named timeline range if one was specified, else to the entire timeline\",\n      \"computedValue\": \"list, each item either the keyword normal or a timeline range and progress percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-range-end\",\n        \"animationRangeEnd\"\n      ],\n      \"syntax\": \"[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#\"\n    }\n  ],\n  [\n    \"animation-range-start\",\n    {\n      \"name\": \"animation-range-start\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-animation-range-start\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the specified named timeline range if one was specified, else to the entire timeline\",\n      \"computedValue\": \"list, each item either the keyword normal or a timeline range and progress percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-range-start\",\n        \"animationRangeStart\"\n      ],\n      \"syntax\": \"[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#\"\n    }\n  ],\n  [\n    \"animation-timeline\",\n    {\n      \"name\": \"animation-timeline\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-animation-timeline\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item either the keyword none, the keyword auto, a case-sensitive css identifier, a computed scroll() function, or a computed view() function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-timeline\",\n        \"animationTimeline\"\n      ],\n      \"syntax\": \"<single-animation-timeline>#\"\n    }\n  ],\n  [\n    \"animation-timing-function\",\n    {\n      \"name\": \"animation-timing-function\",\n      \"href\": \"https://drafts.csswg.org/css-animations-1/#propdef-animation-timing-function\",\n      \"initial\": \"ease\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a computed <easing-function>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-timing-function\",\n        \"animationTimingFunction\"\n      ],\n      \"syntax\": \"<easing-function>#\"\n    }\n  ],\n  [\n    \"animation-trigger\",\n    {\n      \"name\": \"animation-trigger\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-animation-trigger\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"animation-trigger\",\n        \"animationTrigger\"\n      ],\n      \"syntax\": \"[ none | [ <dashed-ident> <animation-action>+ ]+ ]#\"\n    }\n  ],\n  [\n    \"appearance\",\n    {\n      \"name\": \"appearance\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-appearance\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"appearance\"\n      ],\n      \"syntax\": \"none | auto | base | base-select | <compat-auto> | <compat-special> | base\"\n    }\n  ],\n  [\n    \"aspect-ratio\",\n    {\n      \"name\": \"aspect-ratio\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-4/#propdef-aspect-ratio\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements except inline boxes and internal ruby or table boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword or a pair of numbers\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"aspect-ratio\",\n        \"aspectRatio\"\n      ],\n      \"syntax\": \"auto || <ratio>\"\n    }\n  ],\n  [\n    \"backdrop-filter\",\n    {\n      \"name\": \"backdrop-filter\",\n      \"href\": \"https://drafts.csswg.org/filter-effects-2/#propdef-backdrop-filter\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements without the defs element and all graphics elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose in Filter Effects 1 § 14. Animation of Filters.\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"backdrop-filter\",\n        \"backdropFilter\"\n      ],\n      \"syntax\": \"none | <filter-value-list>\"\n    }\n  ],\n  [\n    \"backface-visibility\",\n    {\n      \"name\": \"backface-visibility\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-2/#propdef-backface-visibility\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"backface-visibility\",\n        \"backfaceVisibility\"\n      ],\n      \"syntax\": \"visible | hidden\"\n    }\n  ],\n  [\n    \"background\",\n    {\n      \"name\": \"background\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"background\"\n      ],\n      \"syntax\": \"<bg-layer>#? , <final-bg-layer>\"\n    }\n  ],\n  [\n    \"background-attachment\",\n    {\n      \"name\": \"background-attachment\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-attachment\",\n      \"initial\": \"scroll\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item the keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"background-attachment\",\n        \"backgroundAttachment\"\n      ],\n      \"syntax\": \"<attachment>#\"\n    }\n  ],\n  [\n    \"background-blend-mode\",\n    {\n      \"name\": \"background-blend-mode\",\n      \"href\": \"https://drafts.csswg.org/compositing-2/#propdef-background-blend-mode\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"All HTML elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"background-blend-mode\",\n        \"backgroundBlendMode\"\n      ],\n      \"syntax\": \"<'mix-blend-mode'>#\"\n    }\n  ],\n  [\n    \"background-clip\",\n    {\n      \"name\": \"background-clip\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-clip\",\n      \"initial\": \"border-box\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"styleDeclaration\": [\n        \"background-clip\",\n        \"backgroundClip\"\n      ],\n      \"syntax\": \"<bg-clip>#\"\n    }\n  ],\n  [\n    \"background-color\",\n    {\n      \"name\": \"background-color\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-color\",\n      \"initial\": \"transparent\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"background-color\",\n        \"backgroundColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"background-image\",\n    {\n      \"name\": \"background-image\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-image\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item either an <image> or the keyword none\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"background-image\",\n        \"backgroundImage\"\n      ],\n      \"syntax\": \"<bg-image>#\"\n    }\n  ],\n  [\n    \"background-origin\",\n    {\n      \"name\": \"background-origin\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-origin\",\n      \"initial\": \"padding-box\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"styleDeclaration\": [\n        \"background-origin\",\n        \"backgroundOrigin\"\n      ],\n      \"syntax\": \"<visual-box>#\"\n    }\n  ],\n  [\n    \"background-position\",\n    {\n      \"name\": \"background-position\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position\",\n      \"initial\": \"0% 0%\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of background positioning area minus size of background image; see text\",\n      \"computedValue\": \"a list, each item a pair of offsets (horizontal and vertical) from the top left origin, each offset given as a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"styleDeclaration\": [\n        \"background-position\",\n        \"backgroundPosition\"\n      ],\n      \"syntax\": \"<bg-position>#\"\n    }\n  ],\n  [\n    \"background-position-block\",\n    {\n      \"name\": \"background-position-block\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position-block\",\n      \"initial\": \"0%\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of background positioning area minus size of background image\",\n      \"computedValue\": \"A list, each item consisting of: an offset given as a computed <length-percentage> value, plus an origin keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"logicalPropertyGroup\": \"background-position\",\n      \"styleDeclaration\": [\n        \"background-position-block\",\n        \"backgroundPositionBlock\"\n      ],\n      \"syntax\": \"[ center | [ [ start | end ]? <length-percentage>? ]! ]#\"\n    }\n  ],\n  [\n    \"background-position-inline\",\n    {\n      \"name\": \"background-position-inline\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position-inline\",\n      \"initial\": \"0%\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to inline-size of background positioning area minus inline-size of background image\",\n      \"computedValue\": \"A list, each item consisting of: an offset given as a computed <length-percentage> value, plus an origin keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"logicalPropertyGroup\": \"background-position\",\n      \"styleDeclaration\": [\n        \"background-position-inline\",\n        \"backgroundPositionInline\"\n      ],\n      \"syntax\": \"[ center | [ [ start | end ]? <length-percentage>? ]! ]#\"\n    }\n  ],\n  [\n    \"background-position-x\",\n    {\n      \"name\": \"background-position-x\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position-x\",\n      \"initial\": \"0%\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to width of background positioning area minus width of background image\",\n      \"computedValue\": \"A list, each item consisting of: an offset given as a computed <length-percentage> value, plus an origin keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"logicalPropertyGroup\": \"background-position\",\n      \"styleDeclaration\": [\n        \"background-position-x\",\n        \"backgroundPositionX\"\n      ],\n      \"syntax\": \"[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#\"\n    }\n  ],\n  [\n    \"background-position-y\",\n    {\n      \"name\": \"background-position-y\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-position-y\",\n      \"initial\": \"0%\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to height of background positioning area minus height of background image\",\n      \"computedValue\": \"A list, each item consisting of: an offset given as a computed <length-percentage> value, plus an origin keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"logicalPropertyGroup\": \"background-position\",\n      \"styleDeclaration\": [\n        \"background-position-y\",\n        \"backgroundPositionY\"\n      ],\n      \"syntax\": \"[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#\"\n    }\n  ],\n  [\n    \"background-repeat\",\n    {\n      \"name\": \"background-repeat\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a pair of keywords, one per dimension\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"background-repeat\",\n        \"backgroundRepeat\"\n      ],\n      \"syntax\": \"<repeat-style>#\"\n    }\n  ],\n  [\n    \"background-repeat-block\",\n    {\n      \"name\": \"background-repeat-block\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat-block\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"background-repeat\",\n      \"styleDeclaration\": [\n        \"background-repeat-block\",\n        \"backgroundRepeatBlock\"\n      ],\n      \"syntax\": \"<repetition>#\"\n    }\n  ],\n  [\n    \"background-repeat-inline\",\n    {\n      \"name\": \"background-repeat-inline\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat-inline\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"background-repeat\",\n      \"styleDeclaration\": [\n        \"background-repeat-inline\",\n        \"backgroundRepeatInline\"\n      ],\n      \"syntax\": \"<repetition>#\"\n    }\n  ],\n  [\n    \"background-repeat-x\",\n    {\n      \"name\": \"background-repeat-x\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat-x\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"background-repeat\",\n      \"styleDeclaration\": [\n        \"background-repeat-x\",\n        \"backgroundRepeatX\"\n      ],\n      \"syntax\": \"<repetition>#\"\n    }\n  ],\n  [\n    \"background-repeat-y\",\n    {\n      \"name\": \"background-repeat-y\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-repeat-y\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"background-repeat\",\n      \"styleDeclaration\": [\n        \"background-repeat-y\",\n        \"backgroundRepeatY\"\n      ],\n      \"syntax\": \"<repetition>#\"\n    }\n  ],\n  [\n    \"background-size\",\n    {\n      \"name\": \"background-size\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-size\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see text\",\n      \"computedValue\": \"list, each item a pair of sizes (one per axis) each represented as either a keyword or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"styleDeclaration\": [\n        \"background-size\",\n        \"backgroundSize\"\n      ],\n      \"syntax\": \"<bg-size>#\"\n    }\n  ],\n  [\n    \"background-tbd\",\n    {\n      \"name\": \"background-tbd\",\n      \"href\": \"https://drafts.csswg.org/css-backgrounds-4/#propdef-background-tbd\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"background-tbd\",\n        \"backgroundTbd\"\n      ],\n      \"syntax\": \"<bg-layer>#\"\n    }\n  ],\n  [\n    \"baseline-shift\",\n    {\n      \"name\": \"baseline-shift\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-baseline-shift\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"inline-level boxes and SVG text content elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the used value of line-height\",\n      \"computedValue\": \"the specified keyword or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"baseline-shift\",\n        \"baselineShift\"\n      ],\n      \"syntax\": \"<length-percentage> | sub | super | top | center | bottom\"\n    }\n  ],\n  [\n    \"baseline-source\",\n    {\n      \"name\": \"baseline-source\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-baseline-source\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"inline-level boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"baseline-source\",\n        \"baselineSource\"\n      ],\n      \"syntax\": \"auto | first | last\"\n    }\n  ],\n  [\n    \"block-ellipsis\",\n    {\n      \"name\": \"block-ellipsis\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-block-ellipsis\",\n      \"initial\": \"no-ellipsis\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"block-ellipsis\",\n        \"blockEllipsis\"\n      ],\n      \"syntax\": \"no-ellipsis | auto | <string>\"\n    }\n  ],\n  [\n    \"block-size\",\n    {\n      \"name\": \"block-size\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-block-size\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"Same as height and width\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as height, width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"size\",\n      \"styleDeclaration\": [\n        \"block-size\",\n        \"blockSize\"\n      ],\n      \"syntax\": \"<'width'>\"\n    }\n  ],\n  [\n    \"block-step\",\n    {\n      \"name\": \"block-step\",\n      \"href\": \"https://drafts.csswg.org/css-rhythm-1/#propdef-block-step\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"block-level boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"block-step\",\n        \"blockStep\"\n      ],\n      \"syntax\": \"<'block-step-size'> || <'block-step-insert'> || <'block-step-align'> || <'block-step-round'>\"\n    }\n  ],\n  [\n    \"block-step-align\",\n    {\n      \"name\": \"block-step-align\",\n      \"href\": \"https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-align\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"block-step-align\",\n        \"blockStepAlign\"\n      ],\n      \"syntax\": \"auto | center | start | end\"\n    }\n  ],\n  [\n    \"block-step-insert\",\n    {\n      \"name\": \"block-step-insert\",\n      \"href\": \"https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-insert\",\n      \"initial\": \"margin-box\",\n      \"appliesTo\": \"block-level boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"block-step-insert\",\n        \"blockStepInsert\"\n      ],\n      \"syntax\": \"margin-box | padding-box | content-box\"\n    }\n  ],\n  [\n    \"block-step-round\",\n    {\n      \"name\": \"block-step-round\",\n      \"href\": \"https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-round\",\n      \"initial\": \"up\",\n      \"appliesTo\": \"block-level boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"block-step-round\",\n        \"blockStepRound\"\n      ],\n      \"syntax\": \"up | down | nearest\"\n    }\n  ],\n  [\n    \"block-step-size\",\n    {\n      \"name\": \"block-step-size\",\n      \"href\": \"https://drafts.csswg.org/css-rhythm-1/#propdef-block-step-size\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block-level boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword or absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"block-step-size\",\n        \"blockStepSize\"\n      ],\n      \"syntax\": \"none | <length [0,∞]>\"\n    }\n  ],\n  [\n    \"bookmark-label\",\n    {\n      \"name\": \"bookmark-label\",\n      \"href\": \"https://drafts.csswg.org/css-content-3/#propdef-bookmark-label\",\n      \"initial\": \"content(text)\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"bookmark-label\",\n        \"bookmarkLabel\"\n      ],\n      \"syntax\": \"<content-list>\"\n    }\n  ],\n  [\n    \"bookmark-level\",\n    {\n      \"name\": \"bookmark-level\",\n      \"href\": \"https://drafts.csswg.org/css-content-3/#propdef-bookmark-level\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword none or the specified integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"bookmark-level\",\n        \"bookmarkLevel\"\n      ],\n      \"syntax\": \"none | <integer [1,∞]>\"\n    }\n  ],\n  [\n    \"bookmark-state\",\n    {\n      \"name\": \"bookmark-state\",\n      \"href\": \"https://drafts.csswg.org/css-content-3/#propdef-bookmark-state\",\n      \"initial\": \"open\",\n      \"appliesTo\": \"block-level elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"bookmark-state\",\n        \"bookmarkState\"\n      ],\n      \"syntax\": \"open | closed\"\n    }\n  ],\n  [\n    \"border\",\n    {\n      \"name\": \"border\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-block\",\n    {\n      \"name\": \"border-block\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block\",\n        \"borderBlock\"\n      ],\n      \"syntax\": \"<'border-block-start'>\"\n    }\n  ],\n  [\n    \"border-block-clip\",\n    {\n      \"name\": \"border-block-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-clip\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-clip\",\n        \"borderBlockClip\"\n      ],\n      \"syntax\": \"<'border-top-clip'>\"\n    }\n  ],\n  [\n    \"border-block-color\",\n    {\n      \"name\": \"border-block-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-color\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-color\",\n        \"borderBlockColor\"\n      ],\n      \"syntax\": \"<'border-top-color'>{1,2}\"\n    }\n  ],\n  [\n    \"border-block-end\",\n    {\n      \"name\": \"border-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-end\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-end\",\n        \"borderBlockEnd\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-block-end-clip\",\n    {\n      \"name\": \"border-block-end-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-block-end-clip\",\n        \"borderBlockEndClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-block-end-color\",\n    {\n      \"name\": \"border-block-end-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-block-end-color\",\n        \"borderBlockEndColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-block-end-radius\",\n    {\n      \"name\": \"border-block-end-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-end-radius\",\n        \"borderBlockEndRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-block-end-style\",\n    {\n      \"name\": \"border-block-end-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-block-end-style\",\n        \"borderBlockEndStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-block-end-width\",\n    {\n      \"name\": \"border-block-end-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-end-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-block-end-width\",\n        \"borderBlockEndWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-block-start\",\n    {\n      \"name\": \"border-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-start\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-start\",\n        \"borderBlockStart\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-block-start-clip\",\n    {\n      \"name\": \"border-block-start-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-block-start-clip\",\n        \"borderBlockStartClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-block-start-color\",\n    {\n      \"name\": \"border-block-start-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-block-start-color\",\n        \"borderBlockStartColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-block-start-radius\",\n    {\n      \"name\": \"border-block-start-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-start-radius\",\n        \"borderBlockStartRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-block-start-style\",\n    {\n      \"name\": \"border-block-start-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-block-start-style\",\n        \"borderBlockStartStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-block-start-width\",\n    {\n      \"name\": \"border-block-start-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-start-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-block-start-width\",\n        \"borderBlockStartWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-block-style\",\n    {\n      \"name\": \"border-block-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-style\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-style\",\n        \"borderBlockStyle\"\n      ],\n      \"syntax\": \"<'border-top-style'>{1,2}\"\n    }\n  ],\n  [\n    \"border-block-width\",\n    {\n      \"name\": \"border-block-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-block-width\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-block-width\",\n        \"borderBlockWidth\"\n      ],\n      \"syntax\": \"<'border-top-width'>{1,2}\"\n    }\n  ],\n  [\n    \"border-bottom\",\n    {\n      \"name\": \"border-bottom\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-bottom\",\n        \"borderBottom\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-bottom-clip\",\n    {\n      \"name\": \"border-bottom-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-bottom-clip\",\n        \"borderBottomClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-bottom-color\",\n    {\n      \"name\": \"border-bottom-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-bottom-color\",\n        \"borderBottomColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-bottom-left-radius\",\n    {\n      \"name\": \"border-bottom-left-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-left-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-bottom-left-radius\",\n        \"borderBottomLeftRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-bottom-radius\",\n    {\n      \"name\": \"border-bottom-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-bottom-radius\",\n        \"borderBottomRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-bottom-right-radius\",\n    {\n      \"name\": \"border-bottom-right-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-right-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-bottom-right-radius\",\n        \"borderBottomRightRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-bottom-style\",\n    {\n      \"name\": \"border-bottom-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-bottom-style\",\n        \"borderBottomStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-bottom-width\",\n    {\n      \"name\": \"border-bottom-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-bottom-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-bottom-width\",\n        \"borderBottomWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-boundary\",\n    {\n      \"name\": \"border-boundary\",\n      \"href\": \"https://drafts.csswg.org/css-round-display-1/#propdef-border-boundary\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"border-boundary\",\n        \"borderBoundary\"\n      ],\n      \"syntax\": \"none | parent | display\"\n    }\n  ],\n  [\n    \"border-clip\",\n    {\n      \"name\": \"border-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-clip\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-clip\",\n        \"borderClip\"\n      ],\n      \"syntax\": \"<'border-top-clip'>\"\n    }\n  ],\n  [\n    \"border-collapse\",\n    {\n      \"name\": \"border-collapse\",\n      \"href\": \"https://drafts.csswg.org/css-tables-3/#propdef-border-collapse\",\n      \"initial\": \"separate\",\n      \"appliesTo\": \"table grid boxes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"border-collapse\",\n        \"borderCollapse\"\n      ],\n      \"syntax\": \"separate | collapse\"\n    }\n  ],\n  [\n    \"border-color\",\n    {\n      \"name\": \"border-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-color\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-color\",\n        \"borderColor\"\n      ],\n      \"syntax\": \"[ <color> | <image-1D> ]{1,4}\"\n    }\n  ],\n  [\n    \"border-end-end-radius\",\n    {\n      \"name\": \"border-end-end-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-end-end-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-end-end-radius\",\n        \"borderEndEndRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-end-start-radius\",\n    {\n      \"name\": \"border-end-start-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-end-start-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-end-start-radius\",\n        \"borderEndStartRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-image\",\n    {\n      \"name\": \"border-image\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-image\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"See individual properties\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"See individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"See individual properties\",\n      \"styleDeclaration\": [\n        \"border-image\",\n        \"borderImage\"\n      ],\n      \"syntax\": \"<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>\"\n    }\n  ],\n  [\n    \"border-image-outset\",\n    {\n      \"name\": \"border-image-outset\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-image-outset\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"All elements, except internal table elements when border-collapse is collapse\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"four values, each a number or absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"border-image-outset\",\n        \"borderImageOutset\"\n      ],\n      \"syntax\": \"[ <length [0,∞]> | <number [0,∞]> ]{1,4}\"\n    }\n  ],\n  [\n    \"border-image-repeat\",\n    {\n      \"name\": \"border-image-repeat\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-image-repeat\",\n      \"initial\": \"stretch\",\n      \"appliesTo\": \"All elements, except internal table elements when border-collapse is collapse\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"two keywords, one per axis\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"border-image-repeat\",\n        \"borderImageRepeat\"\n      ],\n      \"syntax\": \"[ stretch | repeat | round | space ]{1,2}\"\n    }\n  ],\n  [\n    \"border-image-slice\",\n    {\n      \"name\": \"border-image-slice\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-image-slice\",\n      \"initial\": \"100%\",\n      \"appliesTo\": \"All elements, except internal table elements when border-collapse is collapse\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of the border image\",\n      \"computedValue\": \"four values, each either a number or percentage; plus a fill keyword if specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"border-image-slice\",\n        \"borderImageSlice\"\n      ],\n      \"syntax\": \"[<number [0,∞]> | <percentage [0,∞]>]{1,4} && fill?\"\n    }\n  ],\n  [\n    \"border-image-source\",\n    {\n      \"name\": \"border-image-source\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-image-source\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"All elements, except internal table elements when border-collapse is collapse\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword none or the computed <image>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"border-image-source\",\n        \"borderImageSource\"\n      ],\n      \"syntax\": \"none | <image>\"\n    }\n  ],\n  [\n    \"border-image-width\",\n    {\n      \"name\": \"border-image-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-image-width\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"All elements, except internal table elements when border-collapse is collapse\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Relative to width/height of the border image area\",\n      \"computedValue\": \"four values, each either a number, the keyword auto, or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"border-image-width\",\n        \"borderImageWidth\"\n      ],\n      \"syntax\": \"[ <length-percentage [0,∞]> | <number [0,∞]> | auto ]{1,4}\"\n    }\n  ],\n  [\n    \"border-inline\",\n    {\n      \"name\": \"border-inline\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline\",\n        \"borderInline\"\n      ],\n      \"syntax\": \"<'border-block-start'>\"\n    }\n  ],\n  [\n    \"border-inline-clip\",\n    {\n      \"name\": \"border-inline-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-clip\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-clip\",\n        \"borderInlineClip\"\n      ],\n      \"syntax\": \"<'border-top-clip'>\"\n    }\n  ],\n  [\n    \"border-inline-color\",\n    {\n      \"name\": \"border-inline-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-color\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-color\",\n        \"borderInlineColor\"\n      ],\n      \"syntax\": \"<'border-top-color'>{1,2}\"\n    }\n  ],\n  [\n    \"border-inline-end\",\n    {\n      \"name\": \"border-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-end\",\n        \"borderInlineEnd\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-inline-end-clip\",\n    {\n      \"name\": \"border-inline-end-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-inline-end-clip\",\n        \"borderInlineEndClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-inline-end-color\",\n    {\n      \"name\": \"border-inline-end-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-inline-end-color\",\n        \"borderInlineEndColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-inline-end-radius\",\n    {\n      \"name\": \"border-inline-end-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-end-radius\",\n        \"borderInlineEndRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-inline-end-style\",\n    {\n      \"name\": \"border-inline-end-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-inline-end-style\",\n        \"borderInlineEndStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-inline-end-width\",\n    {\n      \"name\": \"border-inline-end-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-end-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-inline-end-width\",\n        \"borderInlineEndWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-inline-start\",\n    {\n      \"name\": \"border-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-start\",\n        \"borderInlineStart\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-inline-start-clip\",\n    {\n      \"name\": \"border-inline-start-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-inline-start-clip\",\n        \"borderInlineStartClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-inline-start-color\",\n    {\n      \"name\": \"border-inline-start-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-inline-start-color\",\n        \"borderInlineStartColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-inline-start-radius\",\n    {\n      \"name\": \"border-inline-start-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-start-radius\",\n        \"borderInlineStartRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-inline-start-style\",\n    {\n      \"name\": \"border-inline-start-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-inline-start-style\",\n        \"borderInlineStartStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-inline-start-width\",\n    {\n      \"name\": \"border-inline-start-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-start-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-inline-start-width\",\n        \"borderInlineStartWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-inline-style\",\n    {\n      \"name\": \"border-inline-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-style\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-style\",\n        \"borderInlineStyle\"\n      ],\n      \"syntax\": \"<'border-top-style'>{1,2}\"\n    }\n  ],\n  [\n    \"border-inline-width\",\n    {\n      \"name\": \"border-inline-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-inline-width\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-inline-width\",\n        \"borderInlineWidth\"\n      ],\n      \"syntax\": \"<'border-top-width'>{1,2}\"\n    }\n  ],\n  [\n    \"border-left\",\n    {\n      \"name\": \"border-left\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-left\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-left\",\n        \"borderLeft\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-left-clip\",\n    {\n      \"name\": \"border-left-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-left-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-left-clip\",\n        \"borderLeftClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-left-color\",\n    {\n      \"name\": \"border-left-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-left-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-left-color\",\n        \"borderLeftColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-left-radius\",\n    {\n      \"name\": \"border-left-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-left-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-left-radius\",\n        \"borderLeftRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-left-style\",\n    {\n      \"name\": \"border-left-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-left-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-left-style\",\n        \"borderLeftStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-left-width\",\n    {\n      \"name\": \"border-left-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-left-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-left-width\",\n        \"borderLeftWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-limit\",\n    {\n      \"name\": \"border-limit\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-limit\",\n      \"initial\": \"all\",\n      \"appliesTo\": \"all elements, except table element when border-collapse is collapse\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to border-box\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"border-limit\",\n        \"borderLimit\"\n      ],\n      \"syntax\": \"all | [ sides | corners ] <length-percentage [0,∞]>? | [ top | right | bottom | left ] <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"border-radius\",\n    {\n      \"name\": \"border-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-radius\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-radius\",\n        \"borderRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?\"\n    }\n  ],\n  [\n    \"border-right\",\n    {\n      \"name\": \"border-right\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-right\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-right\",\n        \"borderRight\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-right-clip\",\n    {\n      \"name\": \"border-right-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-right-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-right-clip\",\n        \"borderRightClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-right-color\",\n    {\n      \"name\": \"border-right-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-right-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-right-color\",\n        \"borderRightColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-right-radius\",\n    {\n      \"name\": \"border-right-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-right-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-right-radius\",\n        \"borderRightRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-right-style\",\n    {\n      \"name\": \"border-right-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-right-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-right-style\",\n        \"borderRightStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-right-width\",\n    {\n      \"name\": \"border-right-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-right-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-right-width\",\n        \"borderRightWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-shape\",\n    {\n      \"name\": \"border-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-shape\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see prose\",\n      \"computedValue\": \"list, each item a computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"border-shape\",\n        \"borderShape\"\n      ],\n      \"syntax\": \"none | [ <basic-shape> <geometry-box>?]{1,2}\"\n    }\n  ],\n  [\n    \"border-spacing\",\n    {\n      \"name\": \"border-spacing\",\n      \"href\": \"https://drafts.csswg.org/css-tables-3/#propdef-border-spacing\",\n      \"initial\": \"0px 0px\",\n      \"appliesTo\": \"table grid boxes when border-collapse is separate\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"two absolute lengths\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"border-spacing\",\n        \"borderSpacing\"\n      ],\n      \"syntax\": \"<length>{1,2}\"\n    }\n  ],\n  [\n    \"border-start-end-radius\",\n    {\n      \"name\": \"border-start-end-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-start-end-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-start-end-radius\",\n        \"borderStartEndRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-start-start-radius\",\n    {\n      \"name\": \"border-start-start-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-start-start-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-start-start-radius\",\n        \"borderStartStartRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-style\",\n    {\n      \"name\": \"border-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-style\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-style\",\n        \"borderStyle\"\n      ],\n      \"syntax\": \"<'border-top-style'>{1,4}\"\n    }\n  ],\n  [\n    \"border-top\",\n    {\n      \"name\": \"border-top\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-top\",\n        \"borderTop\"\n      ],\n      \"syntax\": \"<line-width> || <line-style> || <color>\"\n    }\n  ],\n  [\n    \"border-top-clip\",\n    {\n      \"name\": \"border-top-clip\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top-clip\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to length of border-edge side\",\n      \"computedValue\": \"none, or a list consisting of absolute lengths, or percentages as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-clip\",\n      \"styleDeclaration\": [\n        \"border-top-clip\",\n        \"borderTopClip\"\n      ],\n      \"syntax\": \"none | [ <length-percentage [0,∞]> | <flex> ]+\"\n    }\n  ],\n  [\n    \"border-top-color\",\n    {\n      \"name\": \"border-top-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color and/or a one-dimensional image function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"logicalPropertyGroup\": \"border-color\",\n      \"styleDeclaration\": [\n        \"border-top-color\",\n        \"borderTopColor\"\n      ],\n      \"syntax\": \"<color> | <image-1D>\"\n    }\n  ],\n  [\n    \"border-top-left-radius\",\n    {\n      \"name\": \"border-top-left-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top-left-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-top-left-radius\",\n        \"borderTopLeftRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-top-radius\",\n    {\n      \"name\": \"border-top-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-top-radius\",\n        \"borderTopRadius\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>{1,2} [ / <length-percentage [0,∞]>{1,2} ]?\"\n    }\n  ],\n  [\n    \"border-top-right-radius\",\n    {\n      \"name\": \"border-top-right-radius\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top-right-radius\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"pair of computed <length-percentage> values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-radius\",\n      \"styleDeclaration\": [\n        \"border-top-right-radius\",\n        \"borderTopRightRadius\"\n      ],\n      \"syntax\": \"<border-radius>\"\n    }\n  ],\n  [\n    \"border-top-style\",\n    {\n      \"name\": \"border-top-style\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"border-style\",\n      \"styleDeclaration\": [\n        \"border-top-style\",\n        \"borderTopStyle\"\n      ],\n      \"syntax\": \"<line-style>\"\n    }\n  ],\n  [\n    \"border-top-width\",\n    {\n      \"name\": \"border-top-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-top-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements except ruby base containers and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"logicalPropertyGroup\": \"border-width\",\n      \"styleDeclaration\": [\n        \"border-top-width\",\n        \"borderTopWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"border-width\",\n    {\n      \"name\": \"border-width\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-border-width\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"border-width\",\n        \"borderWidth\"\n      ],\n      \"syntax\": \"<'border-top-width'>{1,4}\"\n    }\n  ],\n  [\n    \"bottom\",\n    {\n      \"name\": \"bottom\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-bottom\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"bottom\"\n      ],\n      \"syntax\": \"auto | <length-percentage> | <anchor()> | <anchor-size()>\"\n    }\n  ],\n  [\n    \"box-decoration-break\",\n    {\n      \"name\": \"box-decoration-break\",\n      \"href\": \"https://drafts.csswg.org/css-break-4/#propdef-box-decoration-break\",\n      \"initial\": \"slice\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"box-decoration-break\",\n        \"boxDecorationBreak\"\n      ],\n      \"syntax\": \"slice | clone\"\n    }\n  ],\n  [\n    \"box-shadow\",\n    {\n      \"name\": \"box-shadow\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-box-shadow\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"box-shadow\",\n        \"boxShadow\"\n      ],\n      \"syntax\": \"<spread-shadow>#\"\n    }\n  ],\n  [\n    \"box-shadow-blur\",\n    {\n      \"name\": \"box-shadow-blur\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-blur\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a <length>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"box-shadow-blur\",\n        \"boxShadowBlur\"\n      ],\n      \"syntax\": \"<length [0,∞]>#\"\n    }\n  ],\n  [\n    \"box-shadow-color\",\n    {\n      \"name\": \"box-shadow-color\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"box-shadow-color\",\n        \"boxShadowColor\"\n      ],\n      \"syntax\": \"<color>#\"\n    }\n  ],\n  [\n    \"box-shadow-offset\",\n    {\n      \"name\": \"box-shadow-offset\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-offset\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item either none or a pair of offsets (horizontal and vertical) from the element‘s box\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value, treating none as 0 0 when interpolated with non-none values.\",\n      \"styleDeclaration\": [\n        \"box-shadow-offset\",\n        \"boxShadowOffset\"\n      ],\n      \"syntax\": \"[ none | <length>{1,2} ]#\"\n    }\n  ],\n  [\n    \"box-shadow-position\",\n    {\n      \"name\": \"box-shadow-position\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-position\",\n      \"initial\": \"outset\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item one of the keywords\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"box-shadow-position\",\n        \"boxShadowPosition\"\n      ],\n      \"syntax\": \"[ outset | inset ]#\"\n    }\n  ],\n  [\n    \"box-shadow-spread\",\n    {\n      \"name\": \"box-shadow-spread\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-box-shadow-spread\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a <length>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"box-shadow-spread\",\n        \"boxShadowSpread\"\n      ],\n      \"syntax\": \"<length>#\"\n    }\n  ],\n  [\n    \"box-sizing\",\n    {\n      \"name\": \"box-sizing\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-3/#propdef-box-sizing\",\n      \"initial\": \"content-box\",\n      \"appliesTo\": \"all elements that accept width or height\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"box-sizing\",\n        \"boxSizing\"\n      ],\n      \"syntax\": \"content-box | border-box\"\n    }\n  ],\n  [\n    \"box-snap\",\n    {\n      \"name\": \"box-snap\",\n      \"href\": \"https://drafts.csswg.org/css-line-grid-1/#propdef-box-snap\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block-level boxes and internal table elements except table cells\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"box-snap\",\n        \"boxSnap\"\n      ],\n      \"syntax\": \"none | block-start | block-end | center | baseline | last-baseline\"\n    }\n  ],\n  [\n    \"break-after\",\n    {\n      \"name\": \"break-after\",\n      \"href\": \"https://drafts.csswg.org/css-break-4/#propdef-break-after\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level boxes, grid items, flex items, table row groups, table rows (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"break-after\",\n        \"breakAfter\"\n      ],\n      \"syntax\": \"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region\"\n    }\n  ],\n  [\n    \"break-before\",\n    {\n      \"name\": \"break-before\",\n      \"href\": \"https://drafts.csswg.org/css-break-4/#propdef-break-before\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level boxes, grid items, flex items, table row groups, table rows (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"break-before\",\n        \"breakBefore\"\n      ],\n      \"syntax\": \"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region\"\n    }\n  ],\n  [\n    \"break-inside\",\n    {\n      \"name\": \"break-inside\",\n      \"href\": \"https://drafts.csswg.org/css-break-4/#propdef-break-inside\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements except inline-level boxes, internal ruby boxes, table column boxes, table column group boxes, absolutely-positioned boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"break-inside\",\n        \"breakInside\"\n      ],\n      \"syntax\": \"auto | avoid | avoid-page | avoid-column | avoid-region\"\n    }\n  ],\n  [\n    \"caption-side\",\n    {\n      \"name\": \"caption-side\",\n      \"href\": \"https://drafts.csswg.org/css-tables-3/#propdef-caption-side\",\n      \"initial\": \"top\",\n      \"appliesTo\": \"table-caption boxes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"caption-side\",\n        \"captionSide\"\n      ],\n      \"syntax\": \"top | bottom\"\n    }\n  ],\n  [\n    \"caret\",\n    {\n      \"name\": \"caret\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-caret\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text or elements that accept text input\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"caret\"\n      ],\n      \"syntax\": \"<'caret-color'> || <'caret-animation'> || <'caret-shape'>\"\n    }\n  ],\n  [\n    \"caret-animation\",\n    {\n      \"name\": \"caret-animation\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-caret-animation\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text or elements that accept text input\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"caret-animation\",\n        \"caretAnimation\"\n      ],\n      \"syntax\": \"auto | manual\"\n    }\n  ],\n  [\n    \"caret-color\",\n    {\n      \"name\": \"caret-color\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-caret-color\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text or elements that accept text input\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"The computed value for auto is auto. For <color> values, see CSS Color 4 § 14. Resolving <color> Values.\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"caret-color\",\n        \"caretColor\"\n      ],\n      \"syntax\": \"auto | <color>\"\n    }\n  ],\n  [\n    \"caret-shape\",\n    {\n      \"name\": \"caret-shape\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-caret-shape\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text or elements that accept text input\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"caret-shape\",\n        \"caretShape\"\n      ],\n      \"syntax\": \"auto | bar | block | underscore\"\n    }\n  ],\n  [\n    \"clear\",\n    {\n      \"name\": \"clear\",\n      \"href\": \"https://drafts.csswg.org/css-page-floats-3/#propdef-clear\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block-level elements, floats, regions, pages\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"clear\"\n      ],\n      \"syntax\": \"inline-start | inline-end | block-start | block-end | left | right | top | bottom | both-inline | both-block | both | none\"\n    }\n  ],\n  [\n    \"clip\",\n    {\n      \"name\": \"clip\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-clip\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"Absolutely positioned elements. In SVG, it applies to elements which establish a new viewport, pattern elements and mask elements.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"clip\"\n      ],\n      \"syntax\": \"<rect()> | auto\"\n    }\n  ],\n  [\n    \"clip-path\",\n    {\n      \"name\": \"clip-path\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-clip-path\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified, but with <url> values made absolute\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"clip-path\",\n        \"clipPath\"\n      ],\n      \"syntax\": \"<clip-source> | [ <basic-shape> || <geometry-box> ] | none\"\n    }\n  ],\n  [\n    \"clip-rule\",\n    {\n      \"name\": \"clip-rule\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-clip-rule\",\n      \"initial\": \"nonzero\",\n      \"appliesTo\": \"Applies to SVG graphics elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"clip-rule\",\n        \"clipRule\"\n      ],\n      \"syntax\": \"nonzero | evenodd\"\n    }\n  ],\n  [\n    \"color\",\n    {\n      \"name\": \"color\",\n      \"href\": \"https://drafts.csswg.org/css-color-4/#propdef-color\",\n      \"initial\": \"CanvasText\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"computed color, see resolving color values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"color\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"color-adjust\",\n    {\n      \"name\": \"color-adjust\",\n      \"href\": \"https://drafts.csswg.org/css-color-adjust-1/#propdef-color-adjust\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"color-adjust\",\n        \"colorAdjust\"\n      ],\n      \"syntax\": \"<'print-color-adjust'>\"\n    }\n  ],\n  [\n    \"color-interpolation\",\n    {\n      \"name\": \"color-interpolation\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#ColorInterpolationProperty\",\n      \"initial\": \"sRGB\",\n      \"appliesTo\": \"container elements, graphics elements, gradient elements, ‘use’ and ‘animate’\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"color-interpolation\",\n        \"colorInterpolation\"\n      ],\n      \"syntax\": \"auto | sRGB | linearRGB\"\n    }\n  ],\n  [\n    \"color-interpolation-filters\",\n    {\n      \"name\": \"color-interpolation-filters\",\n      \"href\": \"https://drafts.csswg.org/filter-effects-1/#propdef-color-interpolation-filters\",\n      \"initial\": \"linearRGB\",\n      \"appliesTo\": \"All filter primitives\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"color-interpolation-filters\",\n        \"colorInterpolationFilters\"\n      ],\n      \"syntax\": \"auto | sRGB | linearRGB\"\n    }\n  ],\n  [\n    \"color-scheme\",\n    {\n      \"name\": \"color-scheme\",\n      \"href\": \"https://drafts.csswg.org/css-color-adjust-1/#propdef-color-scheme\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword normal, or an ordered list of specified color scheme keywords\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"color-scheme\",\n        \"colorScheme\"\n      ],\n      \"syntax\": \"normal | [ light | dark | <custom-ident> ]+ && only?\"\n    }\n  ],\n  [\n    \"column-count\",\n    {\n      \"name\": \"column-count\",\n      \"href\": \"https://drafts.csswg.org/css-multicol-2/#propdef-column-count\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers except table wrapper boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"column-count\",\n        \"columnCount\"\n      ],\n      \"syntax\": \"auto | <integer [1,∞]>\"\n    }\n  ],\n  [\n    \"column-fill\",\n    {\n      \"name\": \"column-fill\",\n      \"href\": \"https://drafts.csswg.org/css-multicol-2/#propdef-column-fill\",\n      \"initial\": \"balance\",\n      \"appliesTo\": \"multicol containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"column-fill\",\n        \"columnFill\"\n      ],\n      \"syntax\": \"auto | balance | balance-all\"\n    }\n  ],\n  [\n    \"column-gap\",\n    {\n      \"name\": \"column-gap\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-column-gap\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"multi-column containers, flex containers, grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see § 8.3 Percentages In gap Properties\",\n      \"computedValue\": \"specified keyword, else a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"column-gap\",\n        \"columnGap\"\n      ],\n      \"syntax\": \"normal | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"column-height\",\n    {\n      \"name\": \"column-height\",\n      \"href\": \"https://drafts.csswg.org/css-multicol-2/#propdef-column-height\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers except table wrapper boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword auto or an absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"column-height\",\n        \"columnHeight\"\n      ],\n      \"syntax\": \"auto | <length [0,∞]>\"\n    }\n  ],\n  [\n    \"column-rule\",\n    {\n      \"name\": \"column-rule\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"column-rule\",\n        \"columnRule\"\n      ],\n      \"syntax\": \"<gap-rule-list> | <gap-auto-rule-list>\"\n    }\n  ],\n  [\n    \"column-rule-break\",\n    {\n      \"name\": \"column-rule-break\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-break\",\n      \"initial\": \"spanning-item\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"column-rule-break\",\n        \"columnRuleBreak\"\n      ],\n      \"syntax\": \"none | spanning-item | intersection\"\n    }\n  ],\n  [\n    \"column-rule-color\",\n    {\n      \"name\": \"column-rule-color\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list, see § 3.4.1 Interpolation behavior.\",\n      \"styleDeclaration\": [\n        \"column-rule-color\",\n        \"columnRuleColor\"\n      ],\n      \"syntax\": \"<line-color-list> | <auto-line-color-list>\"\n    }\n  ],\n  [\n    \"column-rule-edge-inset\",\n    {\n      \"name\": \"column-rule-edge-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-edge-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-edge-inset-start, column-rule-interior-inset-start, row-rule-edge-inset-end, and row-rule-interior-inset-end\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"column-rule-edge-inset\",\n        \"columnRuleEdgeInset\"\n      ],\n      \"syntax\": \"<length-percentage> [ <length-percentage> ]?\"\n    }\n  ],\n  [\n    \"column-rule-edge-inset-end\",\n    {\n      \"name\": \"column-rule-edge-inset-end\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-edge-inset-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"column-rule-edge-inset-end\",\n        \"columnRuleEdgeInsetEnd\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"column-rule-edge-inset-start\",\n    {\n      \"name\": \"column-rule-edge-inset-start\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-edge-inset-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"column-rule-edge-inset-start\",\n        \"columnRuleEdgeInsetStart\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"column-rule-inset\",\n    {\n      \"name\": \"column-rule-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-edge-inset, column-rule-interior-inset, row-rule-edge-inset, and row-rule-interior-inset\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"column-rule-inset\",\n        \"columnRuleInset\"\n      ],\n      \"syntax\": \"<length-percentage> <length-percentage>? [/ <length-percentage> <length-percentage>?]?\"\n    }\n  ],\n  [\n    \"column-rule-inset-end\",\n    {\n      \"name\": \"column-rule-inset-end\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-inset-end\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"column-rule-edge-inset-end and column-rule-interior-inset-end for column-rule-inset-end, row-rule-edge-inset-end and row-rule-interior-inset-end for row-rule-inset-end\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"column-rule-inset-end\",\n        \"columnRuleInsetEnd\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"column-rule-inset-start\",\n    {\n      \"name\": \"column-rule-inset-start\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-inset-start\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"column-rule-edge-inset-start and column-rule-interior-inset-start for column-rule-inset-start, row-rule-edge-inset-start and row-rule-interior-inset-start for row-rule-inset-start\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"column-rule-inset-start\",\n        \"columnRuleInsetStart\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"column-rule-interior-inset\",\n    {\n      \"name\": \"column-rule-interior-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-interior-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-edge-inset-start, column-rule-interior-inset-start, row-rule-edge-inset-end, and row-rule-interior-inset-end\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"column-rule-interior-inset\",\n        \"columnRuleInteriorInset\"\n      ],\n      \"syntax\": \"<length-percentage> [ <length-percentage> ]?\"\n    }\n  ],\n  [\n    \"column-rule-interior-inset-end\",\n    {\n      \"name\": \"column-rule-interior-inset-end\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-interior-inset-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"column-rule-interior-inset-end\",\n        \"columnRuleInteriorInsetEnd\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"column-rule-interior-inset-start\",\n    {\n      \"name\": \"column-rule-interior-inset-start\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-interior-inset-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"column-rule-interior-inset-start\",\n        \"columnRuleInteriorInsetStart\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"column-rule-style\",\n    {\n      \"name\": \"column-rule-style\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"column-rule-style\",\n        \"columnRuleStyle\"\n      ],\n      \"syntax\": \"<line-style-list> | <auto-line-style-list>\"\n    }\n  ],\n  [\n    \"column-rule-visibility-items\",\n    {\n      \"name\": \"column-rule-visibility-items\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-visibility-items\",\n      \"initial\": \"all\",\n      \"appliesTo\": \"grid containers, and multicol containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"column-rule-visibility-items\",\n        \"columnRuleVisibilityItems\"\n      ],\n      \"syntax\": \"all | around | between\"\n    }\n  ],\n  [\n    \"column-rule-width\",\n    {\n      \"name\": \"column-rule-width\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-column-rule-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list of absolute lengths, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list, see § 3.4.1 Interpolation behavior.\",\n      \"styleDeclaration\": [\n        \"column-rule-width\",\n        \"columnRuleWidth\"\n      ],\n      \"syntax\": \"<line-width-list> | <auto-line-width-list>\"\n    }\n  ],\n  [\n    \"column-span\",\n    {\n      \"name\": \"column-span\",\n      \"href\": \"https://drafts.csswg.org/css-multicol-2/#propdef-column-span\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"in-flow block-level elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"column-span\",\n        \"columnSpan\"\n      ],\n      \"syntax\": \"none | <integer [1,∞]> | all | auto\"\n    }\n  ],\n  [\n    \"column-width\",\n    {\n      \"name\": \"column-width\",\n      \"href\": \"https://drafts.csswg.org/css-multicol-2/#propdef-column-width\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers except table wrapper boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword auto or an absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"column-width\",\n        \"columnWidth\"\n      ],\n      \"syntax\": \"auto | <length [0,∞]> | min-content | max-content | fit-content(<length-percentage>)\"\n    }\n  ],\n  [\n    \"column-wrap\",\n    {\n      \"name\": \"column-wrap\",\n      \"href\": \"https://drafts.csswg.org/css-multicol-2/#propdef-column-wrap\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"multicol containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"column-wrap\",\n        \"columnWrap\"\n      ],\n      \"syntax\": \"auto | nowrap | wrap\"\n    }\n  ],\n  [\n    \"columns\",\n    {\n      \"name\": \"columns\",\n      \"href\": \"https://drafts.csswg.org/css-multicol-2/#propdef-columns\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"columns\"\n      ],\n      \"syntax\": \"[ <'column-width'> || <'column-count'> ] [ / <'column-height'> ]?\"\n    }\n  ],\n  [\n    \"contain\",\n    {\n      \"name\": \"contain\",\n      \"href\": \"https://drafts.csswg.org/css-contain-2/#propdef-contain\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"See below\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or one or more of size, layout, paint\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"contain\"\n      ],\n      \"syntax\": \"none | strict | content | [ [size | inline-size] || layout || style || paint ]\"\n    }\n  ],\n  [\n    \"contain-intrinsic-block-size\",\n    {\n      \"name\": \"contain-intrinsic-block-size\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-block-size\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"elements with size containment\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified, with <length> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"contain-intrinsic-size\",\n      \"styleDeclaration\": [\n        \"contain-intrinsic-block-size\",\n        \"containIntrinsicBlockSize\"\n      ],\n      \"syntax\": \"[ auto | from-element ]? [ none | <length [0,∞]> ]\"\n    }\n  ],\n  [\n    \"contain-intrinsic-height\",\n    {\n      \"name\": \"contain-intrinsic-height\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-height\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"elements with size containment\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified, with <length> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"contain-intrinsic-size\",\n      \"styleDeclaration\": [\n        \"contain-intrinsic-height\",\n        \"containIntrinsicHeight\"\n      ],\n      \"syntax\": \"[ auto | from-element ]? [ none | <length [0,∞]> ]\"\n    }\n  ],\n  [\n    \"contain-intrinsic-inline-size\",\n    {\n      \"name\": \"contain-intrinsic-inline-size\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-inline-size\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"elements with size containment\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified, with <length> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"contain-intrinsic-size\",\n      \"styleDeclaration\": [\n        \"contain-intrinsic-inline-size\",\n        \"containIntrinsicInlineSize\"\n      ],\n      \"syntax\": \"[ auto | from-element ]? [ none | <length [0,∞]> ]\"\n    }\n  ],\n  [\n    \"contain-intrinsic-size\",\n    {\n      \"name\": \"contain-intrinsic-size\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-size\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"contain-intrinsic-size\",\n        \"containIntrinsicSize\"\n      ],\n      \"syntax\": \"[ [ auto | from-element ]? [ none | <length [0,∞]> ] ]{1,2}\"\n    }\n  ],\n  [\n    \"contain-intrinsic-width\",\n    {\n      \"name\": \"contain-intrinsic-width\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-4/#propdef-contain-intrinsic-width\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"elements with size containment\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified, with <length> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"contain-intrinsic-size\",\n      \"styleDeclaration\": [\n        \"contain-intrinsic-width\",\n        \"containIntrinsicWidth\"\n      ],\n      \"syntax\": \"[ auto | from-element ]? [ none | <length [0,∞]> ]\"\n    }\n  ],\n  [\n    \"container\",\n    {\n      \"name\": \"container\",\n      \"href\": \"https://drafts.csswg.org/css-conditional-5/#propdef-container\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"container\"\n      ],\n      \"syntax\": \"<'container-name'> [ / <'container-type'> ]?\"\n    }\n  ],\n  [\n    \"container-name\",\n    {\n      \"name\": \"container-name\",\n      \"href\": \"https://drafts.csswg.org/css-conditional-5/#propdef-container-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none, or an ordered list of identifiers\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"container-name\",\n        \"containerName\"\n      ],\n      \"syntax\": \"none | <custom-ident>+\"\n    }\n  ],\n  [\n    \"container-type\",\n    {\n      \"name\": \"container-type\",\n      \"href\": \"https://drafts.csswg.org/css-conditional-5/#propdef-container-type\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"container-type\",\n        \"containerType\"\n      ],\n      \"syntax\": \"normal | [ [ size | inline-size ] || scroll-state ]\"\n    }\n  ],\n  [\n    \"content\",\n    {\n      \"name\": \"content\",\n      \"href\": \"https://drafts.csswg.org/css-content-3/#propdef-content\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements, tree-abiding pseudo-elements, and page margin boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"See prose below\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"content\"\n      ],\n      \"syntax\": \"normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> | <attr()> ]+ ]? | <element()>\"\n    }\n  ],\n  [\n    \"content-visibility\",\n    {\n      \"name\": \"content-visibility\",\n      \"href\": \"https://drafts.csswg.org/css-contain-2/#propdef-content-visibility\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"elements for which size containment can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see § 4.1 Animating and Interpolating content-visibility\",\n      \"styleDeclaration\": [\n        \"content-visibility\",\n        \"contentVisibility\"\n      ],\n      \"syntax\": \"visible | auto | hidden\"\n    }\n  ],\n  [\n    \"continue\",\n    {\n      \"name\": \"continue\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-continue\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers and multicol containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"continue\"\n      ],\n      \"syntax\": \"auto | discard | collapse | -webkit-legacy | overflow | paginate | fragments\"\n    }\n  ],\n  [\n    \"copy-into\",\n    {\n      \"name\": \"copy-into\",\n      \"href\": \"https://drafts.csswg.org/css-gcpm-4/#propdef-copy-into\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements and pseudo-elements, but not ::first-line or ::first-letter.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"copy-into\",\n        \"copyInto\"\n      ],\n      \"syntax\": \"none | [ [ <custom-ident> <content-level>] [, <custom-ident> <content-level>]* ]?\"\n    }\n  ],\n  [\n    \"corner\",\n    {\n      \"name\": \"corner\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner\"\n      ],\n      \"syntax\": \"<'border-radius'> || <'corner-shape'>\"\n    }\n  ],\n  [\n    \"corner-block-end\",\n    {\n      \"name\": \"corner-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-block-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-block-end\",\n        \"cornerBlockEnd\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-block-end-shape\",\n    {\n      \"name\": \"corner-block-end-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-block-end-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-block-end-shape\",\n        \"cornerBlockEndShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"corner-block-start\",\n    {\n      \"name\": \"corner-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-block-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-block-start\",\n        \"cornerBlockStart\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-block-start-shape\",\n    {\n      \"name\": \"corner-block-start-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-block-start-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-block-start-shape\",\n        \"cornerBlockStartShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"corner-bottom\",\n    {\n      \"name\": \"corner-bottom\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-bottom\",\n        \"cornerBottom\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-bottom-left\",\n    {\n      \"name\": \"corner-bottom-left\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-left\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-bottom-left\",\n        \"cornerBottomLeft\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-bottom-left-shape\",\n    {\n      \"name\": \"corner-bottom-left-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-left-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-bottom-left-shape\",\n        \"cornerBottomLeftShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-bottom-right\",\n    {\n      \"name\": \"corner-bottom-right\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-right\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-bottom-right\",\n        \"cornerBottomRight\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-bottom-right-shape\",\n    {\n      \"name\": \"corner-bottom-right-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-right-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-bottom-right-shape\",\n        \"cornerBottomRightShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-bottom-shape\",\n    {\n      \"name\": \"corner-bottom-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-bottom-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-bottom-shape\",\n        \"cornerBottomShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"corner-end-end\",\n    {\n      \"name\": \"corner-end-end\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-end-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-end-end\",\n        \"cornerEndEnd\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-end-end-shape\",\n    {\n      \"name\": \"corner-end-end-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-end-end-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-end-end-shape\",\n        \"cornerEndEndShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-end-start\",\n    {\n      \"name\": \"corner-end-start\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-end-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-end-start\",\n        \"cornerEndStart\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-end-start-shape\",\n    {\n      \"name\": \"corner-end-start-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-end-start-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-end-start-shape\",\n        \"cornerEndStartShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-inline-end\",\n    {\n      \"name\": \"corner-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-inline-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-inline-end\",\n        \"cornerInlineEnd\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-inline-end-shape\",\n    {\n      \"name\": \"corner-inline-end-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-inline-end-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-inline-end-shape\",\n        \"cornerInlineEndShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"corner-inline-start\",\n    {\n      \"name\": \"corner-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-inline-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-inline-start\",\n        \"cornerInlineStart\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-inline-start-shape\",\n    {\n      \"name\": \"corner-inline-start-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-inline-start-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-inline-start-shape\",\n        \"cornerInlineStartShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"corner-left\",\n    {\n      \"name\": \"corner-left\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-left\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-left\",\n        \"cornerLeft\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-left-shape\",\n    {\n      \"name\": \"corner-left-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-left-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-left-shape\",\n        \"cornerLeftShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"corner-right\",\n    {\n      \"name\": \"corner-right\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-right\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-right\",\n        \"cornerRight\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-right-shape\",\n    {\n      \"name\": \"corner-right-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-right-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-right-shape\",\n        \"cornerRightShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"corner-shape\",\n    {\n      \"name\": \"corner-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-shape\",\n        \"cornerShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,4}\"\n    }\n  ],\n  [\n    \"corner-start-end\",\n    {\n      \"name\": \"corner-start-end\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-start-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-start-end\",\n        \"cornerStartEnd\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-start-end-shape\",\n    {\n      \"name\": \"corner-start-end-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-start-end-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-start-end-shape\",\n        \"cornerStartEndShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-start-start\",\n    {\n      \"name\": \"corner-start-start\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-start-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-start-start\",\n        \"cornerStartStart\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-start-start-shape\",\n    {\n      \"name\": \"corner-start-start-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-start-start-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-start-start-shape\",\n        \"cornerStartStartShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-top\",\n    {\n      \"name\": \"corner-top\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-top\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-top\",\n        \"cornerTop\"\n      ],\n      \"syntax\": \"<'border-top-radius'> || <'corner-top-shape'>\"\n    }\n  ],\n  [\n    \"corner-top-left\",\n    {\n      \"name\": \"corner-top-left\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-top-left\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-top-left\",\n        \"cornerTopLeft\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-top-left-shape\",\n    {\n      \"name\": \"corner-top-left-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-top-left-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-top-left-shape\",\n        \"cornerTopLeftShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-top-right\",\n    {\n      \"name\": \"corner-top-right\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-top-right\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements (but see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to corresponding dimension of the border box.\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"corner-top-right\",\n        \"cornerTopRight\"\n      ],\n      \"syntax\": \"<'border-top-left-radius'> || <'corner-top-left-shape'>\"\n    }\n  ],\n  [\n    \"corner-top-right-shape\",\n    {\n      \"name\": \"corner-top-right-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-top-right-shape\",\n      \"initial\": \"round\",\n      \"appliesTo\": \"all elements where border-radius can apply\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the corresponding superellipse() value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see superellipse interpolation\",\n      \"logicalPropertyGroup\": \"corner-shape\",\n      \"styleDeclaration\": [\n        \"corner-top-right-shape\",\n        \"cornerTopRightShape\"\n      ],\n      \"syntax\": \"<corner-shape-value>\"\n    }\n  ],\n  [\n    \"corner-top-shape\",\n    {\n      \"name\": \"corner-top-shape\",\n      \"href\": \"https://drafts.csswg.org/css-borders-4/#propdef-corner-top-shape\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"corner-top-shape\",\n        \"cornerTopShape\"\n      ],\n      \"syntax\": \"<'corner-top-left-shape'>{1,2}\"\n    }\n  ],\n  [\n    \"counter-increment\",\n    {\n      \"name\": \"counter-increment\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-counter-increment\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list, each item an identifier paired with an integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"counter-increment\",\n        \"counterIncrement\"\n      ],\n      \"syntax\": \"[ <counter-name> <integer>? ]+ | none\"\n    }\n  ],\n  [\n    \"counter-reset\",\n    {\n      \"name\": \"counter-reset\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-counter-reset\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list, each item an identifier or a reversed() function paired with an integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"counter-reset\",\n        \"counterReset\"\n      ],\n      \"syntax\": \"[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none\"\n    }\n  ],\n  [\n    \"counter-set\",\n    {\n      \"name\": \"counter-set\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-counter-set\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list, each item an identifier paired with an integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"counter-set\",\n        \"counterSet\"\n      ],\n      \"syntax\": \"[ <counter-name> <integer>? ]+ | none\"\n    }\n  ],\n  [\n    \"cue\",\n    {\n      \"name\": \"cue\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-cue\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"cue\"\n      ],\n      \"syntax\": \"<'cue-before'> <'cue-after'>?\"\n    }\n  ],\n  [\n    \"cue-after\",\n    {\n      \"name\": \"cue-after\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-cue-after\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"cue-after\",\n        \"cueAfter\"\n      ],\n      \"syntax\": \"<uri> <decibel>? | none\"\n    }\n  ],\n  [\n    \"cue-before\",\n    {\n      \"name\": \"cue-before\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-cue-before\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"cue-before\",\n        \"cueBefore\"\n      ],\n      \"syntax\": \"<uri> <decibel>? | none\"\n    }\n  ],\n  [\n    \"cursor\",\n    {\n      \"name\": \"cursor\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-cursor\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified, except with any relative URLs converted to absolute\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"cursor\"\n      ],\n      \"syntax\": \"[<cursor-image>,]* <cursor-predefined>\"\n    }\n  ],\n  [\n    \"cx\",\n    {\n      \"name\": \"cx\",\n      \"href\": \"https://svgwg.org/svg2-draft/geometry.html#CxProperty\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"‘circle’ and ‘ellipse’ elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the width of the current SVG viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computedValue\": \"an absolute length or percentage\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"cx\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"cy\",\n    {\n      \"name\": \"cy\",\n      \"href\": \"https://svgwg.org/svg2-draft/geometry.html#CyProperty\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"‘circle’ and ‘ellipse’ elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the height of the current SVG viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computedValue\": \"an absolute length or percentage\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"cy\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"d\",\n    {\n      \"name\": \"d\",\n      \"href\": \"https://svgwg.org/svg2-draft/paths.html#DProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"‘path’\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"See prose\",\n      \"styleDeclaration\": [\n        \"d\"\n      ],\n      \"syntax\": \"none | <string>\"\n    }\n  ],\n  [\n    \"direction\",\n    {\n      \"name\": \"direction\",\n      \"href\": \"https://drafts.csswg.org/css-writing-modes-4/#propdef-direction\",\n      \"initial\": \"ltr\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"direction\"\n      ],\n      \"syntax\": \"ltr | rtl\"\n    }\n  ],\n  [\n    \"display\",\n    {\n      \"name\": \"display\",\n      \"href\": \"https://drafts.csswg.org/css-display-4/#propdef-display\",\n      \"initial\": \"inline\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"a pair of keywords representing the inner and outer display types plus optional list-item flag, or a <display-internal> or <display-box> keyword; see prose in a variety of specs for computation rules\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see § 2.9 Animating and Interpolating display\",\n      \"styleDeclaration\": [\n        \"display\"\n      ],\n      \"syntax\": \"[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy> | grid-lanes | inline-grid-lanes | ruby | ruby-base | ruby-text | ruby-base-container | ruby-text-container | <display-outside> || [ <display-inside> | math ]\"\n    }\n  ],\n  [\n    \"dominant-baseline\",\n    {\n      \"name\": \"dominant-baseline\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-dominant-baseline\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers, inline boxes, table rows, grid containers, flex containers, and SVG text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"dominant-baseline\",\n        \"dominantBaseline\"\n      ],\n      \"syntax\": \"auto | text-bottom | alphabetic | ideographic | middle | central | mathematical | hanging | text-top\"\n    }\n  ],\n  [\n    \"dynamic-range-limit\",\n    {\n      \"name\": \"dynamic-range-limit\",\n      \"href\": \"https://drafts.csswg.org/css-color-hdr-1/#propdef-dynamic-range-limit\",\n      \"initial\": \"no-limit\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"see Computed Value for dynamic-range-limit\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by dynamic-range-limit-mix()\",\n      \"styleDeclaration\": [\n        \"dynamic-range-limit\",\n        \"dynamicRangeLimit\"\n      ],\n      \"syntax\": \"standard | no-limit | constrained | <dynamic-range-limit-mix()>\"\n    }\n  ],\n  [\n    \"empty-cells\",\n    {\n      \"name\": \"empty-cells\",\n      \"href\": \"https://drafts.csswg.org/css-tables-3/#propdef-empty-cells\",\n      \"initial\": \"show\",\n      \"appliesTo\": \"table-cell boxes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"empty-cells\",\n        \"emptyCells\"\n      ],\n      \"syntax\": \"show | hide\"\n    }\n  ],\n  [\n    \"event-trigger\",\n    {\n      \"name\": \"event-trigger\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-event-trigger\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"event-trigger\",\n        \"eventTrigger\"\n      ],\n      \"syntax\": \"none | [ <'event-trigger-name'> <'event-trigger-source'> ]#\"\n    }\n  ],\n  [\n    \"event-trigger-name\",\n    {\n      \"name\": \"event-trigger-name\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-event-trigger-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"event-trigger-name\",\n        \"eventTriggerName\"\n      ],\n      \"syntax\": \"none | <dashed-ident>#\"\n    }\n  ],\n  [\n    \"event-trigger-source\",\n    {\n      \"name\": \"event-trigger-source\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-event-trigger-source\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"event-trigger-source\",\n        \"eventTriggerSource\"\n      ],\n      \"syntax\": \"[ none | <event-trigger-event>+ [ / <event-trigger-event>+ ]? ]#\"\n    }\n  ],\n  [\n    \"field-sizing\",\n    {\n      \"name\": \"field-sizing\",\n      \"href\": \"https://drafts.csswg.org/css-forms-1/#propdef-field-sizing\",\n      \"initial\": \"fixed\",\n      \"appliesTo\": \"elements with default preferred size\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"field-sizing\",\n        \"fieldSizing\"\n      ],\n      \"syntax\": \"fixed | content\"\n    }\n  ],\n  [\n    \"fill\",\n    {\n      \"name\": \"fill\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#FillProperty\",\n      \"initial\": \"black\",\n      \"appliesTo\": \"shapes and text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified, but with <color> values computed and <url> values made absolute\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"fill\"\n      ],\n      \"syntax\": \"<paint>\"\n    }\n  ],\n  [\n    \"fill-break\",\n    {\n      \"name\": \"fill-break\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-break\",\n      \"initial\": \"bounding-box\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes?\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-break\",\n        \"fillBreak\"\n      ],\n      \"syntax\": \"bounding-box | slice | clone\"\n    }\n  ],\n  [\n    \"fill-color\",\n    {\n      \"name\": \"fill-color\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-color\",\n        \"fillColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"fill-image\",\n    {\n      \"name\": \"fill-image\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-image\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified, with any <image> computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-image\",\n        \"fillImage\"\n      ],\n      \"syntax\": \"<paint>#\"\n    }\n  ],\n  [\n    \"fill-opacity\",\n    {\n      \"name\": \"fill-opacity\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-opacity\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the specified value converted to a <number>, clamped to the range [0,1]\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-opacity\",\n        \"fillOpacity\"\n      ],\n      \"syntax\": \"<'opacity'>\"\n    }\n  ],\n  [\n    \"fill-origin\",\n    {\n      \"name\": \"fill-origin\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-origin\",\n      \"initial\": \"match-parent\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-origin\",\n        \"fillOrigin\"\n      ],\n      \"syntax\": \"match-parent | fill-box | stroke-box | content-box | padding-box | border-box\"\n    }\n  ],\n  [\n    \"fill-position\",\n    {\n      \"name\": \"fill-position\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-position\",\n      \"initial\": \"0% 0%\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"A list, each item consisting of: a pair of offsets (horizontal and vertical) from the top left origin each given as a combination of an absolute length and a percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-position\",\n        \"fillPosition\"\n      ],\n      \"syntax\": \"<position>#\"\n    }\n  ],\n  [\n    \"fill-repeat\",\n    {\n      \"name\": \"fill-repeat\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-repeat\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"A list, each item consisting of: two keywords, one per dimension\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-repeat\",\n        \"fillRepeat\"\n      ],\n      \"syntax\": \"<repeat-style>#\"\n    }\n  ],\n  [\n    \"fill-rule\",\n    {\n      \"name\": \"fill-rule\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-rule\",\n      \"initial\": \"nonzero\",\n      \"appliesTo\": \"SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-rule\",\n        \"fillRule\"\n      ],\n      \"syntax\": \"nonzero | evenodd\"\n    }\n  ],\n  [\n    \"fill-size\",\n    {\n      \"name\": \"fill-size\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-fill-size\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified, but with lengths made absolute and omitted auto keywords filled in\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"fill-size\",\n        \"fillSize\"\n      ],\n      \"syntax\": \"<bg-size>#\"\n    }\n  ],\n  [\n    \"filter\",\n    {\n      \"name\": \"filter\",\n      \"href\": \"https://drafts.csswg.org/filter-effects-1/#propdef-filter\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements without the defs element, all graphics elements and the use element.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"See prose in Animation of Filters.\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"filter\"\n      ],\n      \"syntax\": \"none | <filter-value-list>\"\n    }\n  ],\n  [\n    \"flex\",\n    {\n      \"name\": \"flex\",\n      \"href\": \"https://drafts.csswg.org/css-flexbox-1/#propdef-flex\",\n      \"initial\": \"0 1 auto\",\n      \"appliesTo\": \"flex items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"by computed value type\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"flex\"\n      ],\n      \"syntax\": \"none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]\"\n    }\n  ],\n  [\n    \"flex-basis\",\n    {\n      \"name\": \"flex-basis\",\n      \"href\": \"https://drafts.csswg.org/css-flexbox-1/#propdef-flex-basis\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"flex items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the flex container’s inner main size\",\n      \"computedValue\": \"specified keyword or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"flex-basis\",\n        \"flexBasis\"\n      ],\n      \"syntax\": \"content | <'width'>\"\n    }\n  ],\n  [\n    \"flex-direction\",\n    {\n      \"name\": \"flex-direction\",\n      \"href\": \"https://drafts.csswg.org/css-flexbox-1/#propdef-flex-direction\",\n      \"initial\": \"row\",\n      \"appliesTo\": \"flex containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"flex-direction\",\n        \"flexDirection\"\n      ],\n      \"syntax\": \"row | row-reverse | column | column-reverse\"\n    }\n  ],\n  [\n    \"flex-flow\",\n    {\n      \"name\": \"flex-flow\",\n      \"href\": \"https://drafts.csswg.org/css-flexbox-1/#propdef-flex-flow\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"flex-flow\",\n        \"flexFlow\"\n      ],\n      \"syntax\": \"<'flex-direction'> || <'flex-wrap'>\"\n    }\n  ],\n  [\n    \"flex-grow\",\n    {\n      \"name\": \"flex-grow\",\n      \"href\": \"https://drafts.csswg.org/css-flexbox-1/#propdef-flex-grow\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"flex items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified number\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"flex-grow\",\n        \"flexGrow\"\n      ],\n      \"syntax\": \"<number [0,∞]>\"\n    }\n  ],\n  [\n    \"flex-shrink\",\n    {\n      \"name\": \"flex-shrink\",\n      \"href\": \"https://drafts.csswg.org/css-flexbox-1/#propdef-flex-shrink\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"flex items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"number\",\n      \"styleDeclaration\": [\n        \"flex-shrink\",\n        \"flexShrink\"\n      ],\n      \"syntax\": \"<number [0,∞]>\"\n    }\n  ],\n  [\n    \"flex-wrap\",\n    {\n      \"name\": \"flex-wrap\",\n      \"href\": \"https://drafts.csswg.org/css-flexbox-1/#propdef-flex-wrap\",\n      \"initial\": \"nowrap\",\n      \"appliesTo\": \"flex containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"flex-wrap\",\n        \"flexWrap\"\n      ],\n      \"syntax\": \"nowrap | wrap | wrap-reverse\"\n    }\n  ],\n  [\n    \"float\",\n    {\n      \"name\": \"float\",\n      \"href\": \"https://drafts.csswg.org/css-page-floats-3/#propdef-float\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"float\"\n      ],\n      \"syntax\": \"block-start | block-end | inline-start | inline-end | snap-block | <snap-block()> | snap-inline | <snap-inline()> | left | right | top | bottom | none | footnote\"\n    }\n  ],\n  [\n    \"float-defer\",\n    {\n      \"name\": \"float-defer\",\n      \"href\": \"https://drafts.csswg.org/css-page-floats-3/#propdef-float-defer\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"floats\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword or integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"float-defer\",\n        \"floatDefer\"\n      ],\n      \"syntax\": \"<integer> | last | none\"\n    }\n  ],\n  [\n    \"float-offset\",\n    {\n      \"name\": \"float-offset\",\n      \"href\": \"https://drafts.csswg.org/css-page-floats-3/#propdef-float-offset\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"floats\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see prose\",\n      \"computedValue\": \"computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"float-offset\",\n        \"floatOffset\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"float-reference\",\n    {\n      \"name\": \"float-reference\",\n      \"href\": \"https://drafts.csswg.org/css-page-floats-3/#propdef-float-reference\",\n      \"initial\": \"inline\",\n      \"appliesTo\": \"all elements.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"float-reference\",\n        \"floatReference\"\n      ],\n      \"syntax\": \"inline | column | region | page\"\n    }\n  ],\n  [\n    \"flood-color\",\n    {\n      \"name\": \"flood-color\",\n      \"href\": \"https://drafts.csswg.org/filter-effects-1/#propdef-flood-color\",\n      \"initial\": \"black\",\n      \"appliesTo\": \"feFlood and feDropShadow elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"flood-color\",\n        \"floodColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"flood-opacity\",\n    {\n      \"name\": \"flood-opacity\",\n      \"href\": \"https://drafts.csswg.org/filter-effects-1/#propdef-flood-opacity\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"feFlood and feDropShadow elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the specified value converted to a number, clamped to the range [0,1]\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"flood-opacity\",\n        \"floodOpacity\"\n      ],\n      \"syntax\": \"<'opacity'>\"\n    }\n  ],\n  [\n    \"flow-from\",\n    {\n      \"name\": \"flow-from\",\n      \"href\": \"https://drafts.csswg.org/css-regions-1/#propdef-flow-from\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"Non-replaced block containers. This might be expanded in future versions of the specification to allow other types of containers to receive flow content.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"flow-from\",\n        \"flowFrom\"\n      ],\n      \"syntax\": \"<custom-ident> | none\"\n    }\n  ],\n  [\n    \"flow-into\",\n    {\n      \"name\": \"flow-into\",\n      \"href\": \"https://drafts.csswg.org/css-regions-1/#propdef-flow-into\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"All elements, but not pseudo-elements such as ::first-line, ::first-letter, ::before or ::after.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"flow-into\",\n        \"flowInto\"\n      ],\n      \"syntax\": \"none | <custom-ident> [element | content]?\"\n    }\n  ],\n  [\n    \"flow-tolerance\",\n    {\n      \"name\": \"flow-tolerance\",\n      \"href\": \"https://drafts.csswg.org/css-grid-3/#propdef-flow-tolerance\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the grid-axis content box size of the grid lanes container\",\n      \"computedValue\": \"a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"as length\",\n      \"styleDeclaration\": [\n        \"flow-tolerance\",\n        \"flowTolerance\"\n      ],\n      \"syntax\": \"normal | <length-percentage> | infinite\"\n    }\n  ],\n  [\n    \"font\",\n    {\n      \"name\": \"font\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"font\"\n      ],\n      \"syntax\": \"[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name>\"\n    }\n  ],\n  [\n    \"font-family\",\n    {\n      \"name\": \"font-family\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-family\",\n      \"initial\": \"depends on user agent\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item a string and/or <generic-family> keywords\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-family\",\n        \"fontFamily\"\n      ],\n      \"syntax\": \"[ <family-name> | <generic-family> ]#\"\n    }\n  ],\n  [\n    \"font-feature-settings\",\n    {\n      \"name\": \"font-feature-settings\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-feature-settings\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-feature-settings\",\n        \"fontFeatureSettings\"\n      ],\n      \"syntax\": \"normal | <feature-tag-value>#\"\n    }\n  ],\n  [\n    \"font-kerning\",\n    {\n      \"name\": \"font-kerning\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-kerning\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-kerning\",\n        \"fontKerning\"\n      ],\n      \"syntax\": \"auto | normal | none\"\n    }\n  ],\n  [\n    \"font-language-override\",\n    {\n      \"name\": \"font-language-override\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-language-override\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified string or the keyword none\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-language-override\",\n        \"fontLanguageOverride\"\n      ],\n      \"syntax\": \"normal | <string>\"\n    }\n  ],\n  [\n    \"font-optical-sizing\",\n    {\n      \"name\": \"font-optical-sizing\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-optical-sizing\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-optical-sizing\",\n        \"fontOpticalSizing\"\n      ],\n      \"syntax\": \"auto | none\"\n    }\n  ],\n  [\n    \"font-palette\",\n    {\n      \"name\": \"font-palette\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-palette\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/a\",\n      \"computedValue\": \"specified keyword, identifier or <palette-mix()> function. <palette-mix()> must be simplified to a single keyword or identifier if resulting palette is equivalent.\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"font-palette\",\n        \"fontPalette\"\n      ],\n      \"syntax\": \"normal | light | dark | <palette-identifier> | <palette-mix()>\"\n    }\n  ],\n  [\n    \"font-size\",\n    {\n      \"name\": \"font-size\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-size\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"refer to parent element’s font size\",\n      \"computedValue\": \"an absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"font-size\",\n        \"fontSize\"\n      ],\n      \"syntax\": \"<absolute-size> | <relative-size> | <length-percentage [0,∞]> | math\"\n    }\n  ],\n  [\n    \"font-size-adjust\",\n    {\n      \"name\": \"font-size-adjust\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-5/#propdef-font-size-adjust\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword none, or a pair of a metric keyword and a <number>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete if the keywords differ, otherwise by computed value type\",\n      \"styleDeclaration\": [\n        \"font-size-adjust\",\n        \"fontSizeAdjust\"\n      ],\n      \"syntax\": \"none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ]\"\n    }\n  ],\n  [\n    \"font-stretch\",\n    {\n      \"name\": \"font-stretch\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-stretch\",\n      \"legacyAliasOf\": \"font-width\",\n      \"styleDeclaration\": [\n        \"font-stretch\",\n        \"fontStretch\"\n      ],\n      \"syntax\": \"normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded\"\n    }\n  ],\n  [\n    \"font-style\",\n    {\n      \"name\": \"font-style\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-style\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword specified, plus angle in degrees if specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type; normal animates as oblique 0deg\",\n      \"styleDeclaration\": [\n        \"font-style\",\n        \"fontStyle\"\n      ],\n      \"syntax\": \"normal | italic | left | right | oblique <angle [-90deg,90deg]>?\"\n    }\n  ],\n  [\n    \"font-synthesis\",\n    {\n      \"name\": \"font-synthesis\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis\",\n      \"initial\": \"weight style small-caps position\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-synthesis\",\n        \"fontSynthesis\"\n      ],\n      \"syntax\": \"none | [ weight || style || small-caps || position]\"\n    }\n  ],\n  [\n    \"font-synthesis-position\",\n    {\n      \"name\": \"font-synthesis-position\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-position\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-synthesis-position\",\n        \"fontSynthesisPosition\"\n      ],\n      \"syntax\": \"auto | none\"\n    }\n  ],\n  [\n    \"font-synthesis-small-caps\",\n    {\n      \"name\": \"font-synthesis-small-caps\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-small-caps\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-synthesis-small-caps\",\n        \"fontSynthesisSmallCaps\"\n      ],\n      \"syntax\": \"auto | none\"\n    }\n  ],\n  [\n    \"font-synthesis-style\",\n    {\n      \"name\": \"font-synthesis-style\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-style\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"font-synthesis-style\",\n        \"fontSynthesisStyle\"\n      ],\n      \"syntax\": \"auto | none | oblique-only\"\n    }\n  ],\n  [\n    \"font-synthesis-weight\",\n    {\n      \"name\": \"font-synthesis-weight\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-synthesis-weight\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"font-synthesis-weight\",\n        \"fontSynthesisWeight\"\n      ],\n      \"syntax\": \"auto | none\"\n    }\n  ],\n  [\n    \"font-variant\",\n    {\n      \"name\": \"font-variant\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant\",\n        \"fontVariant\"\n      ],\n      \"syntax\": \"normal | none | [ [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ] || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || [ stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) ] || [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ] || [ <east-asian-variant-values> || <east-asian-width-values> || ruby ] || [ sub | super ] || [ text | emoji | unicode ] ]\"\n    }\n  ],\n  [\n    \"font-variant-alternates\",\n    {\n      \"name\": \"font-variant-alternates\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-alternates\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant-alternates\",\n        \"fontVariantAlternates\"\n      ],\n      \"syntax\": \"normal | [ stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) ]\"\n    }\n  ],\n  [\n    \"font-variant-caps\",\n    {\n      \"name\": \"font-variant-caps\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-caps\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant-caps\",\n        \"fontVariantCaps\"\n      ],\n      \"syntax\": \"normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps\"\n    }\n  ],\n  [\n    \"font-variant-east-asian\",\n    {\n      \"name\": \"font-variant-east-asian\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-east-asian\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant-east-asian\",\n        \"fontVariantEastAsian\"\n      ],\n      \"syntax\": \"normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]\"\n    }\n  ],\n  [\n    \"font-variant-emoji\",\n    {\n      \"name\": \"font-variant-emoji\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-emoji\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant-emoji\",\n        \"fontVariantEmoji\"\n      ],\n      \"syntax\": \"normal | text | emoji | unicode\"\n    }\n  ],\n  [\n    \"font-variant-ligatures\",\n    {\n      \"name\": \"font-variant-ligatures\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-ligatures\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant-ligatures\",\n        \"fontVariantLigatures\"\n      ],\n      \"syntax\": \"normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]\"\n    }\n  ],\n  [\n    \"font-variant-numeric\",\n    {\n      \"name\": \"font-variant-numeric\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-numeric\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant-numeric\",\n        \"fontVariantNumeric\"\n      ],\n      \"syntax\": \"normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]\"\n    }\n  ],\n  [\n    \"font-variant-position\",\n    {\n      \"name\": \"font-variant-position\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variant-position\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"font-variant-position\",\n        \"fontVariantPosition\"\n      ],\n      \"syntax\": \"normal | sub | super\"\n    }\n  ],\n  [\n    \"font-variation-settings\",\n    {\n      \"name\": \"font-variation-settings\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-variation-settings\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword normal or a list, each item a string paired with a number\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"styleDeclaration\": [\n        \"font-variation-settings\",\n        \"fontVariationSettings\"\n      ],\n      \"syntax\": \"normal | [ <opentype-tag> <number> ]#\"\n    }\n  ],\n  [\n    \"font-weight\",\n    {\n      \"name\": \"font-weight\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-weight\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"a number, see below\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"font-weight\",\n        \"fontWeight\"\n      ],\n      \"syntax\": \"<font-weight-absolute> | bolder | lighter\"\n    }\n  ],\n  [\n    \"font-width\",\n    {\n      \"name\": \"font-width\",\n      \"href\": \"https://drafts.csswg.org/css-fonts-4/#propdef-font-width\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"Not resolved\",\n      \"computedValue\": \"a percentage, see below\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"font-width\",\n        \"fontWidth\"\n      ],\n      \"syntax\": \"normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded\"\n    }\n  ],\n  [\n    \"footnote-display\",\n    {\n      \"name\": \"footnote-display\",\n      \"href\": \"https://drafts.csswg.org/css-gcpm-3/#propdef-footnote-display\",\n      \"initial\": \"block\",\n      \"appliesTo\": \"elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"footnote-display\",\n        \"footnoteDisplay\"\n      ],\n      \"syntax\": \"block | inline | compact\"\n    }\n  ],\n  [\n    \"footnote-policy\",\n    {\n      \"name\": \"footnote-policy\",\n      \"href\": \"https://drafts.csswg.org/css-gcpm-3/#propdef-footnote-policy\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"footnote-policy\",\n        \"footnotePolicy\"\n      ],\n      \"syntax\": \"auto | line | block\"\n    }\n  ],\n  [\n    \"forced-color-adjust\",\n    {\n      \"name\": \"forced-color-adjust\",\n      \"href\": \"https://drafts.csswg.org/css-color-adjust-1/#propdef-forced-color-adjust\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"forced-color-adjust\",\n        \"forcedColorAdjust\"\n      ],\n      \"syntax\": \"auto | none | preserve-parent-color\"\n    }\n  ],\n  [\n    \"gap\",\n    {\n      \"name\": \"gap\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-gap\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"multi-column containers, flex containers, grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to corresponding dimension of the content area\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"gap\"\n      ],\n      \"syntax\": \"<'row-gap'> <'column-gap'>?\"\n    }\n  ],\n  [\n    \"glyph-orientation-vertical\",\n    {\n      \"name\": \"glyph-orientation-vertical\",\n      \"href\": \"https://drafts.csswg.org/css-writing-modes-4/#propdef-glyph-orientation-vertical\",\n      \"initial\": \"n/a\",\n      \"appliesTo\": \"n/a\",\n      \"inherited\": \"n/a\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"n/a\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"n/a\",\n      \"styleDeclaration\": [\n        \"glyph-orientation-vertical\",\n        \"glyphOrientationVertical\"\n      ],\n      \"syntax\": \"auto | 0deg | 90deg | 0 | 90\"\n    }\n  ],\n  [\n    \"grid\",\n    {\n      \"name\": \"grid\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"grid\"\n      ],\n      \"syntax\": \"<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>\"\n    }\n  ],\n  [\n    \"grid-area\",\n    {\n      \"name\": \"grid-area\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-area\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid items and absolutely-positioned boxes whose containing block is a grid container\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"grid-area\",\n        \"gridArea\"\n      ],\n      \"syntax\": \"<grid-line> [ / <grid-line> ]{0,3}\"\n    }\n  ],\n  [\n    \"grid-auto-columns\",\n    {\n      \"name\": \"grid-auto-columns\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-auto-columns\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see Track Sizing\",\n      \"computedValue\": \"see Track Sizing\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"if the list lengths match, by computed value type per item; discrete otherwise\",\n      \"styleDeclaration\": [\n        \"grid-auto-columns\",\n        \"gridAutoColumns\"\n      ],\n      \"syntax\": \"<track-size>+\"\n    }\n  ],\n  [\n    \"grid-auto-flow\",\n    {\n      \"name\": \"grid-auto-flow\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-auto-flow\",\n      \"initial\": \"row\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"grid-auto-flow\",\n        \"gridAutoFlow\"\n      ],\n      \"syntax\": \"[ row | column ] || dense\"\n    }\n  ],\n  [\n    \"grid-auto-rows\",\n    {\n      \"name\": \"grid-auto-rows\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-auto-rows\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see Track Sizing\",\n      \"computedValue\": \"see Track Sizing\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"if the list lengths match, by computed value type per item; discrete otherwise\",\n      \"styleDeclaration\": [\n        \"grid-auto-rows\",\n        \"gridAutoRows\"\n      ],\n      \"syntax\": \"<track-size>+\"\n    }\n  ],\n  [\n    \"grid-column\",\n    {\n      \"name\": \"grid-column\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-column\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid items and absolutely-positioned boxes whose containing block is a grid container\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"grid-column\",\n        \"gridColumn\"\n      ],\n      \"syntax\": \"<grid-line> [ / <grid-line> ]?\"\n    }\n  ],\n  [\n    \"grid-column-end\",\n    {\n      \"name\": \"grid-column-end\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-column-end\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid items and absolutely-positioned boxes whose containing block is a grid container\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword, identifier, and/or integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"grid-column-end\",\n        \"gridColumnEnd\"\n      ],\n      \"syntax\": \"<grid-line>\"\n    }\n  ],\n  [\n    \"grid-column-gap\",\n    {\n      \"name\": \"grid-column-gap\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-grid-column-gap\",\n      \"legacyAliasOf\": \"column-gap\",\n      \"styleDeclaration\": [\n        \"grid-column-gap\",\n        \"gridColumnGap\"\n      ],\n      \"syntax\": \"normal | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"grid-column-start\",\n    {\n      \"name\": \"grid-column-start\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-column-start\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid items and absolutely-positioned boxes whose containing block is a grid container\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword, identifier, and/or integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"grid-column-start\",\n        \"gridColumnStart\"\n      ],\n      \"syntax\": \"<grid-line>\"\n    }\n  ],\n  [\n    \"grid-gap\",\n    {\n      \"name\": \"grid-gap\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-grid-gap\",\n      \"legacyAliasOf\": \"gap\",\n      \"styleDeclaration\": [\n        \"grid-gap\",\n        \"gridGap\"\n      ],\n      \"syntax\": \"<'row-gap'> <'column-gap'>?\"\n    }\n  ],\n  [\n    \"grid-row\",\n    {\n      \"name\": \"grid-row\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-row\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid items and absolutely-positioned boxes whose containing block is a grid container\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"grid-row\",\n        \"gridRow\"\n      ],\n      \"syntax\": \"<grid-line> [ / <grid-line> ]?\"\n    }\n  ],\n  [\n    \"grid-row-end\",\n    {\n      \"name\": \"grid-row-end\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-row-end\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid items and absolutely-positioned boxes whose containing block is a grid container\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword, identifier, and/or integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"grid-row-end\",\n        \"gridRowEnd\"\n      ],\n      \"syntax\": \"<grid-line>\"\n    }\n  ],\n  [\n    \"grid-row-gap\",\n    {\n      \"name\": \"grid-row-gap\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-grid-row-gap\",\n      \"legacyAliasOf\": \"row-gap\",\n      \"styleDeclaration\": [\n        \"grid-row-gap\",\n        \"gridRowGap\"\n      ],\n      \"syntax\": \"normal | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"grid-row-start\",\n    {\n      \"name\": \"grid-row-start\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-row-start\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"grid items and absolutely-positioned boxes whose containing block is a grid container\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword, identifier, and/or integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"grid-row-start\",\n        \"gridRowStart\"\n      ],\n      \"syntax\": \"<grid-line>\"\n    }\n  ],\n  [\n    \"grid-template\",\n    {\n      \"name\": \"grid-template\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-template\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"grid-template\",\n        \"gridTemplate\"\n      ],\n      \"syntax\": \"none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?\"\n    }\n  ],\n  [\n    \"grid-template-areas\",\n    {\n      \"name\": \"grid-template-areas\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-template-areas\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list of string values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"grid-template-areas\",\n        \"gridTemplateAreas\"\n      ],\n      \"syntax\": \"none | <string>+\"\n    }\n  ],\n  [\n    \"grid-template-columns\",\n    {\n      \"name\": \"grid-template-columns\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-template-columns\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to corresponding dimension of the content area\",\n      \"computedValue\": \"the keyword none or a computed track list\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"if the list lengths match, by computed value type per item in the computed track list (see § 7.2.5 Computed Value of a Track Listing and § 7.2.3.3 Interpolation/Combination of repeat()); discrete otherwise\",\n      \"styleDeclaration\": [\n        \"grid-template-columns\",\n        \"gridTemplateColumns\"\n      ],\n      \"syntax\": \"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?\"\n    }\n  ],\n  [\n    \"grid-template-rows\",\n    {\n      \"name\": \"grid-template-rows\",\n      \"href\": \"https://drafts.csswg.org/css-grid-2/#propdef-grid-template-rows\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to corresponding dimension of the content area\",\n      \"computedValue\": \"the keyword none or a computed track list\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"if the list lengths match, by computed value type per item in the computed track list (see § 7.2.5 Computed Value of a Track Listing and § 7.2.3.3 Interpolation/Combination of repeat()); discrete otherwise\",\n      \"styleDeclaration\": [\n        \"grid-template-rows\",\n        \"gridTemplateRows\"\n      ],\n      \"syntax\": \"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?\"\n    }\n  ],\n  [\n    \"hanging-punctuation\",\n    {\n      \"name\": \"hanging-punctuation\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-hanging-punctuation\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"hanging-punctuation\",\n        \"hangingPunctuation\"\n      ],\n      \"syntax\": \"none | [ first || [ force-end | allow-end ] || last ]\"\n    }\n  ],\n  [\n    \"height\",\n    {\n      \"name\": \"height\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-3/#propdef-height\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements except non-replaced inlines\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to width/height of containing block\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type, recursing into fit-content()\",\n      \"logicalPropertyGroup\": \"size\",\n      \"styleDeclaration\": [\n        \"height\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain\"\n    }\n  ],\n  [\n    \"hyphenate-character\",\n    {\n      \"name\": \"hyphenate-character\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-hyphenate-character\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"hyphenate-character\",\n        \"hyphenateCharacter\"\n      ],\n      \"syntax\": \"auto | <string>\"\n    }\n  ],\n  [\n    \"hyphenate-limit-chars\",\n    {\n      \"name\": \"hyphenate-limit-chars\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-chars\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"three values, each either the auto keyword or an integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"hyphenate-limit-chars\",\n        \"hyphenateLimitChars\"\n      ],\n      \"syntax\": \"[ auto | <integer> ]{1,3}\"\n    }\n  ],\n  [\n    \"hyphenate-limit-last\",\n    {\n      \"name\": \"hyphenate-limit-last\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-last\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"hyphenate-limit-last\",\n        \"hyphenateLimitLast\"\n      ],\n      \"syntax\": \"none | always | column | page | spread\"\n    }\n  ],\n  [\n    \"hyphenate-limit-lines\",\n    {\n      \"name\": \"hyphenate-limit-lines\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-lines\",\n      \"initial\": \"no-limit\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword or integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"hyphenate-limit-lines\",\n        \"hyphenateLimitLines\"\n      ],\n      \"syntax\": \"no-limit | <integer>\"\n    }\n  ],\n  [\n    \"hyphenate-limit-zone\",\n    {\n      \"name\": \"hyphenate-limit-zone\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-hyphenate-limit-zone\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"refers to length of the line box\",\n      \"computedValue\": \"computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"hyphenate-limit-zone\",\n        \"hyphenateLimitZone\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"hyphens\",\n    {\n      \"name\": \"hyphens\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-hyphens\",\n      \"initial\": \"manual\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"hyphens\"\n      ],\n      \"syntax\": \"none | manual | auto\"\n    }\n  ],\n  [\n    \"image-orientation\",\n    {\n      \"name\": \"image-orientation\",\n      \"href\": \"https://drafts.csswg.org/css-images-3/#propdef-image-orientation\",\n      \"initial\": \"from-image\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the specified keyword, or an <angle>, rounded and normalized (see text), plus optionally a flip keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"image-orientation\",\n        \"imageOrientation\"\n      ],\n      \"syntax\": \"from-image | none | [ <angle> || flip ]\"\n    }\n  ],\n  [\n    \"image-rendering\",\n    {\n      \"name\": \"image-rendering\",\n      \"href\": \"https://drafts.csswg.org/css-images-3/#propdef-image-rendering\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"image-rendering\",\n        \"imageRendering\"\n      ],\n      \"syntax\": \"auto | smooth | high-quality | pixelated | crisp-edges\"\n    }\n  ],\n  [\n    \"image-resolution\",\n    {\n      \"name\": \"image-resolution\",\n      \"href\": \"https://drafts.csswg.org/css-images-4/#propdef-image-resolution\",\n      \"initial\": \"1dppx\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s) and/or <resolution> (possibly adjusted for snap, see below)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"image-resolution\",\n        \"imageResolution\"\n      ],\n      \"syntax\": \"[ from-image || <resolution> ] && snap?\"\n    }\n  ],\n  [\n    \"initial-letter\",\n    {\n      \"name\": \"initial-letter\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-initial-letter\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"certain inline-level boxes and ::first-letter and inside ::marker boxes (see prose)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword normal or a number paired with an integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"initial-letter\",\n        \"initialLetter\"\n      ],\n      \"syntax\": \"normal | <number [1,∞]> <integer [1,∞]> | <number [1,∞]> && [ drop | raise ]?\"\n    }\n  ],\n  [\n    \"initial-letter-align\",\n    {\n      \"name\": \"initial-letter-align\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-initial-letter-align\",\n      \"initial\": \"alphabetic\",\n      \"appliesTo\": \"certain inline-level boxes and ::first-letter and inside ::marker boxes (see prose)\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"initial-letter-align\",\n        \"initialLetterAlign\"\n      ],\n      \"syntax\": \"[ border-box? [ alphabetic | ideographic | hanging | leading ]? ]!\"\n    }\n  ],\n  [\n    \"initial-letter-wrap\",\n    {\n      \"name\": \"initial-letter-wrap\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-initial-letter-wrap\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"certain inline-level boxes and ::first-letter and inside ::marker boxes (see prose)\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"relative to logical width of (last fragment of) initial letter\",\n      \"computedValue\": \"specified keyword or computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"initial-letter-wrap\",\n        \"initialLetterWrap\"\n      ],\n      \"syntax\": \"none | first | all | grid | <length-percentage>\"\n    }\n  ],\n  [\n    \"inline-size\",\n    {\n      \"name\": \"inline-size\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-inline-size\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"Same as height and width\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as height, width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"size\",\n      \"styleDeclaration\": [\n        \"inline-size\",\n        \"inlineSize\"\n      ],\n      \"syntax\": \"<'width'>\"\n    }\n  ],\n  [\n    \"inline-sizing\",\n    {\n      \"name\": \"inline-sizing\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-inline-sizing\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"inline boxes, but not ruby container boxes nor internal ruby boxes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"inline-sizing\",\n        \"inlineSizing\"\n      ],\n      \"syntax\": \"normal | stretch\"\n    }\n  ],\n  [\n    \"input-security\",\n    {\n      \"name\": \"input-security\",\n      \"href\": \"https://drafts.csswg.org/css-forms-1/#propdef-input-security\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"sensitive text inputs\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"input-security\",\n        \"inputSecurity\"\n      ],\n      \"syntax\": \"auto | none\"\n    }\n  ],\n  [\n    \"inset\",\n    {\n      \"name\": \"inset\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-inset\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"inset\"\n      ],\n      \"syntax\": \"<'top'>{1,4}\"\n    }\n  ],\n  [\n    \"inset-block\",\n    {\n      \"name\": \"inset-block\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-inset-block\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"inset-block\",\n        \"insetBlock\"\n      ],\n      \"syntax\": \"<'top'>{1,2}\"\n    }\n  ],\n  [\n    \"inset-block-end\",\n    {\n      \"name\": \"inset-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-inset-block-end\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"inset-block-end\",\n        \"insetBlockEnd\"\n      ],\n      \"syntax\": \"auto | <length-percentage>\"\n    }\n  ],\n  [\n    \"inset-block-start\",\n    {\n      \"name\": \"inset-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-inset-block-start\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"inset-block-start\",\n        \"insetBlockStart\"\n      ],\n      \"syntax\": \"auto | <length-percentage>\"\n    }\n  ],\n  [\n    \"inset-inline\",\n    {\n      \"name\": \"inset-inline\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-inset-inline\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"inset-inline\",\n        \"insetInline\"\n      ],\n      \"syntax\": \"<'top'>{1,2}\"\n    }\n  ],\n  [\n    \"inset-inline-end\",\n    {\n      \"name\": \"inset-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-inset-inline-end\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"inset-inline-end\",\n        \"insetInlineEnd\"\n      ],\n      \"syntax\": \"auto | <length-percentage>\"\n    }\n  ],\n  [\n    \"inset-inline-start\",\n    {\n      \"name\": \"inset-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-inset-inline-start\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"inset-inline-start\",\n        \"insetInlineStart\"\n      ],\n      \"syntax\": \"auto | <length-percentage>\"\n    }\n  ],\n  [\n    \"interactivity\",\n    {\n      \"name\": \"interactivity\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-interactivity\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"interactivity\"\n      ],\n      \"syntax\": \"auto | inert\"\n    }\n  ],\n  [\n    \"interest-delay\",\n    {\n      \"name\": \"interest-delay\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-interest-delay\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"interest-delay\",\n        \"interestDelay\"\n      ],\n      \"syntax\": \"<'interest-delay-start'>{1,2}\"\n    }\n  ],\n  [\n    \"interest-delay-end\",\n    {\n      \"name\": \"interest-delay-end\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-interest-delay-end\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword normal or a computed time\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"interest-delay-end\",\n        \"interestDelayEnd\"\n      ],\n      \"syntax\": \"normal | <time>\"\n    }\n  ],\n  [\n    \"interest-delay-start\",\n    {\n      \"name\": \"interest-delay-start\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-interest-delay-start\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword normal or a computed time\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"interest-delay-start\",\n        \"interestDelayStart\"\n      ],\n      \"syntax\": \"normal | <time>\"\n    }\n  ],\n  [\n    \"interpolate-size\",\n    {\n      \"name\": \"interpolate-size\",\n      \"href\": \"https://drafts.csswg.org/css-values-5/#propdef-interpolate-size\",\n      \"initial\": \"numeric-only\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"interpolate-size\",\n        \"interpolateSize\"\n      ],\n      \"syntax\": \"numeric-only | allow-keywords\"\n    }\n  ],\n  [\n    \"isolation\",\n    {\n      \"name\": \"isolation\",\n      \"href\": \"https://drafts.csswg.org/compositing-2/#propdef-isolation\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements, graphics elements and graphics referencing elements. [SVG11]\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"isolation\"\n      ],\n      \"syntax\": \"<isolation-mode>\"\n    }\n  ],\n  [\n    \"item-cross\",\n    {\n      \"name\": \"item-cross\",\n      \"href\": \"https://drafts.csswg.org/css-grid-3/#propdef-item-cross\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"flex containers, grid containers, grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"item-cross\",\n        \"itemCross\"\n      ],\n      \"syntax\": \"[ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse\"\n    }\n  ],\n  [\n    \"item-direction\",\n    {\n      \"name\": \"item-direction\",\n      \"href\": \"https://drafts.csswg.org/css-grid-3/#propdef-item-direction\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"flex containers, grid containers, grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"item-direction\",\n        \"itemDirection\"\n      ],\n      \"syntax\": \"auto | row | column | row-reverse | column-reverse\"\n    }\n  ],\n  [\n    \"item-flow\",\n    {\n      \"name\": \"item-flow\",\n      \"href\": \"https://drafts.csswg.org/css-grid-3/#propdef-item-flow\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"item-flow\",\n        \"itemFlow\"\n      ],\n      \"syntax\": \"<'item-direction'> || <'item-wrap'> || <'item-pack'> || <'flow-tolerance'>\"\n    }\n  ],\n  [\n    \"item-pack\",\n    {\n      \"name\": \"item-pack\",\n      \"href\": \"https://drafts.csswg.org/css-grid-3/#propdef-item-pack\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"flex containers, grid containers, grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"item-pack\",\n        \"itemPack\"\n      ],\n      \"syntax\": \"normal | dense || balance\"\n    }\n  ],\n  [\n    \"item-track\",\n    {\n      \"name\": \"item-track\",\n      \"href\": \"https://drafts.csswg.org/css-grid-3/#propdef-item-track\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"flex containers, grid containers, grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"item-track\",\n        \"itemTrack\"\n      ],\n      \"syntax\": \"auto | row | column | row-reverse | column-reverse\"\n    }\n  ],\n  [\n    \"item-wrap\",\n    {\n      \"name\": \"item-wrap\",\n      \"href\": \"https://drafts.csswg.org/css-grid-3/#propdef-item-wrap\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"flex containers, grid containers, grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"item-wrap\",\n        \"itemWrap\"\n      ],\n      \"syntax\": \"[ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse\"\n    }\n  ],\n  [\n    \"justify-content\",\n    {\n      \"name\": \"justify-content\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-justify-content\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"multicol containers, flex containers, and grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"justify-content\",\n        \"justifyContent\"\n      ],\n      \"syntax\": \"normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]\"\n    }\n  ],\n  [\n    \"justify-items\",\n    {\n      \"name\": \"justify-items\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-justify-items\",\n      \"initial\": \"legacy\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s), except for legacy (see prose)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"justify-items\",\n        \"justifyItems\"\n      ],\n      \"syntax\": \"normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ] | anchor-center\"\n    }\n  ],\n  [\n    \"justify-self\",\n    {\n      \"name\": \"justify-self\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-justify-self\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level boxes, absolutely-positioned boxes, and grid items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"justify-self\",\n        \"justifySelf\"\n      ],\n      \"syntax\": \"auto | <overflow-position>? [ normal | <self-position> | left | right ] | stretch | <baseline-position> | anchor-center\"\n    }\n  ],\n  [\n    \"left\",\n    {\n      \"name\": \"left\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-left\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"left\"\n      ],\n      \"syntax\": \"auto | <length-percentage> | <anchor()> | <anchor-size()>\"\n    }\n  ],\n  [\n    \"letter-spacing\",\n    {\n      \"name\": \"letter-spacing\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-letter-spacing\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"inline boxes and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"relative to computed font-size, i.e. 1em\",\n      \"computedValue\": \"an absolute length and/or a percentage\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"letter-spacing\",\n        \"letterSpacing\"\n      ],\n      \"syntax\": \"normal | <length-percentage>\"\n    }\n  ],\n  [\n    \"lighting-color\",\n    {\n      \"name\": \"lighting-color\",\n      \"href\": \"https://drafts.csswg.org/filter-effects-1/#propdef-lighting-color\",\n      \"initial\": \"white\",\n      \"appliesTo\": \"feDiffuseLighting and feSpecularLighting elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"lighting-color\",\n        \"lightingColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"line-break\",\n    {\n      \"name\": \"line-break\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-line-break\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"line-break\",\n        \"lineBreak\"\n      ],\n      \"syntax\": \"auto | loose | normal | strict | anywhere\"\n    }\n  ],\n  [\n    \"line-clamp\",\n    {\n      \"name\": \"line-clamp\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-line-clamp\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"line-clamp\",\n        \"lineClamp\"\n      ],\n      \"syntax\": \"none | [<integer [1,∞]> || <'block-ellipsis'>] -webkit-legacy?\"\n    }\n  ],\n  [\n    \"line-fit-edge\",\n    {\n      \"name\": \"line-fit-edge\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-line-fit-edge\",\n      \"initial\": \"leading\",\n      \"appliesTo\": \"inline boxes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"line-fit-edge\",\n        \"lineFitEdge\"\n      ],\n      \"syntax\": \"leading | <text-edge>\"\n    }\n  ],\n  [\n    \"line-grid\",\n    {\n      \"name\": \"line-grid\",\n      \"href\": \"https://drafts.csswg.org/css-line-grid-1/#propdef-line-grid\",\n      \"initial\": \"match-parent\",\n      \"appliesTo\": \"block, flex and grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"line-grid\",\n        \"lineGrid\"\n      ],\n      \"syntax\": \"match-parent | create\"\n    }\n  ],\n  [\n    \"line-height\",\n    {\n      \"name\": \"line-height\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-line-height\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"non-replaced inline boxes and SVG text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"computed relative to 1em\",\n      \"computedValue\": \"the specified keyword, a number, or a computed <length> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"line-height\",\n        \"lineHeight\"\n      ],\n      \"syntax\": \"normal | <number [0,∞]> | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"line-height-step\",\n    {\n      \"name\": \"line-height-step\",\n      \"href\": \"https://drafts.csswg.org/css-rhythm-1/#propdef-line-height-step\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"line-height-step\",\n        \"lineHeightStep\"\n      ],\n      \"syntax\": \"<length [0,∞]>\"\n    }\n  ],\n  [\n    \"line-padding\",\n    {\n      \"name\": \"line-padding\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-line-padding\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"inline boxes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"line-padding\",\n        \"linePadding\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"line-snap\",\n    {\n      \"name\": \"line-snap\",\n      \"href\": \"https://drafts.csswg.org/css-line-grid-1/#propdef-line-snap\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block container elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"line-snap\",\n        \"lineSnap\"\n      ],\n      \"syntax\": \"none | baseline | contain\"\n    }\n  ],\n  [\n    \"link-parameters\",\n    {\n      \"name\": \"link-parameters\",\n      \"href\": \"https://drafts.csswg.org/css-link-params-1/#propdef-link-parameters\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements and pseudo-elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"link-parameters\",\n        \"linkParameters\"\n      ],\n      \"syntax\": \"none | <param()>#\"\n    }\n  ],\n  [\n    \"list-style\",\n    {\n      \"name\": \"list-style\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-list-style\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"list items\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"list-style\",\n        \"listStyle\"\n      ],\n      \"syntax\": \"<'list-style-position'> || <'list-style-image'> || <'list-style-type'>\"\n    }\n  ],\n  [\n    \"list-style-image\",\n    {\n      \"name\": \"list-style-image\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-list-style-image\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"list items\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword noneor the computed <image>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"list-style-image\",\n        \"listStyleImage\"\n      ],\n      \"syntax\": \"<image> | none\"\n    }\n  ],\n  [\n    \"list-style-position\",\n    {\n      \"name\": \"list-style-position\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-list-style-position\",\n      \"initial\": \"outside\",\n      \"appliesTo\": \"list items\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"keyword, but see prose\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"list-style-position\",\n        \"listStylePosition\"\n      ],\n      \"syntax\": \"inside | outside\"\n    }\n  ],\n  [\n    \"list-style-type\",\n    {\n      \"name\": \"list-style-type\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-list-style-type\",\n      \"initial\": \"disc\",\n      \"appliesTo\": \"list items\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"list-style-type\",\n        \"listStyleType\"\n      ],\n      \"syntax\": \"<counter-style> | <string> | none\"\n    }\n  ],\n  [\n    \"margin\",\n    {\n      \"name\": \"margin\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-margin\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except internal table elements, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"margin\"\n      ],\n      \"syntax\": \"<'margin-top'>{1,4}\"\n    }\n  ],\n  [\n    \"margin-block\",\n    {\n      \"name\": \"margin-block\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-margin-block\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"margin-block\",\n        \"marginBlock\"\n      ],\n      \"syntax\": \"<'margin-top'>{1,2}\"\n    }\n  ],\n  [\n    \"margin-block-end\",\n    {\n      \"name\": \"margin-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-margin-block-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as margin-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding margin-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-block-end\",\n        \"marginBlockEnd\"\n      ],\n      \"syntax\": \"<'margin-top'>\"\n    }\n  ],\n  [\n    \"margin-block-start\",\n    {\n      \"name\": \"margin-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-margin-block-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as margin-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding margin-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-block-start\",\n        \"marginBlockStart\"\n      ],\n      \"syntax\": \"<'margin-top'>\"\n    }\n  ],\n  [\n    \"margin-bottom\",\n    {\n      \"name\": \"margin-bottom\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-margin-bottom\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except internal table elements, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-bottom\",\n        \"marginBottom\"\n      ],\n      \"syntax\": \"<length-percentage> | auto | <anchor-size()>\"\n    }\n  ],\n  [\n    \"margin-break\",\n    {\n      \"name\": \"margin-break\",\n      \"href\": \"https://drafts.csswg.org/css-break-4/#propdef-margin-break\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"margin-break\",\n        \"marginBreak\"\n      ],\n      \"syntax\": \"auto | keep | discard\"\n    }\n  ],\n  [\n    \"margin-inline\",\n    {\n      \"name\": \"margin-inline\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-margin-inline\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"margin-inline\",\n        \"marginInline\"\n      ],\n      \"syntax\": \"<'margin-top'>{1,2}\"\n    }\n  ],\n  [\n    \"margin-inline-end\",\n    {\n      \"name\": \"margin-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-margin-inline-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as margin-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding margin-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-inline-end\",\n        \"marginInlineEnd\"\n      ],\n      \"syntax\": \"<'margin-top'>\"\n    }\n  ],\n  [\n    \"margin-inline-start\",\n    {\n      \"name\": \"margin-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-margin-inline-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as margin-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding margin-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-inline-start\",\n        \"marginInlineStart\"\n      ],\n      \"syntax\": \"<'margin-top'>\"\n    }\n  ],\n  [\n    \"margin-left\",\n    {\n      \"name\": \"margin-left\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-margin-left\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except internal table elements, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-left\",\n        \"marginLeft\"\n      ],\n      \"syntax\": \"<length-percentage> | auto | <anchor-size()>\"\n    }\n  ],\n  [\n    \"margin-right\",\n    {\n      \"name\": \"margin-right\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-margin-right\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except internal table elements, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-right\",\n        \"marginRight\"\n      ],\n      \"syntax\": \"<length-percentage> | auto | <anchor-size()>\"\n    }\n  ],\n  [\n    \"margin-top\",\n    {\n      \"name\": \"margin-top\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-margin-top\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except internal table elements, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"margin\",\n      \"styleDeclaration\": [\n        \"margin-top\",\n        \"marginTop\"\n      ],\n      \"syntax\": \"<length-percentage> | auto | <anchor-size()>\"\n    }\n  ],\n  [\n    \"margin-trim\",\n    {\n      \"name\": \"margin-trim\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-margin-trim\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block containers, multi-column containers, flex containers, grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"a set of zero to four keywords indicating which sides to trim\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"margin-trim\",\n        \"marginTrim\"\n      ],\n      \"syntax\": \"none | [ block || inline ] | [ block-start || inline-start || block-end || inline-end ]\"\n    }\n  ],\n  [\n    \"marker\",\n    {\n      \"name\": \"marker\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#MarkerProperty\",\n      \"initial\": \"not defined for shorthand properties\",\n      \"appliesTo\": \"shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"marker\"\n      ],\n      \"syntax\": \"none | <marker-ref>\"\n    }\n  ],\n  [\n    \"marker-end\",\n    {\n      \"name\": \"marker-end\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#MarkerEndProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified, but with <url> values (that are part of a <marker-ref>) made absolute\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"marker-end\",\n        \"markerEnd\"\n      ],\n      \"syntax\": \"none | <marker-ref>\"\n    }\n  ],\n  [\n    \"marker-mid\",\n    {\n      \"name\": \"marker-mid\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#MarkerMidProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified, but with <url> values (that are part of a <marker-ref>) made absolute\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"marker-mid\",\n        \"markerMid\"\n      ],\n      \"syntax\": \"none | <marker-ref>\"\n    }\n  ],\n  [\n    \"marker-side\",\n    {\n      \"name\": \"marker-side\",\n      \"href\": \"https://drafts.csswg.org/css-lists-3/#propdef-marker-side\",\n      \"initial\": \"match-self\",\n      \"appliesTo\": \"list items\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"marker-side\",\n        \"markerSide\"\n      ],\n      \"syntax\": \"match-self | match-parent\"\n    }\n  ],\n  [\n    \"marker-start\",\n    {\n      \"name\": \"marker-start\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#MarkerStartProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified, but with <url> values (that are part of a <marker-ref>) made absolute\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"marker-start\",\n        \"markerStart\"\n      ],\n      \"syntax\": \"none | <marker-ref>\"\n    }\n  ],\n  [\n    \"mask\",\n    {\n      \"name\": \"mask\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask\"\n      ],\n      \"syntax\": \"<mask-layer>#\"\n    }\n  ],\n  [\n    \"mask-border\",\n    {\n      \"name\": \"mask-border\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-border\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"See individual properties\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"See individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"See individual properties\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-border\",\n        \"maskBorder\"\n      ],\n      \"syntax\": \"<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>\"\n    }\n  ],\n  [\n    \"mask-border-mode\",\n    {\n      \"name\": \"mask-border-mode\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-border-mode\",\n      \"initial\": \"alpha\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-border-mode\",\n        \"maskBorderMode\"\n      ],\n      \"syntax\": \"luminance | alpha\"\n    }\n  ],\n  [\n    \"mask-border-outset\",\n    {\n      \"name\": \"mask-border-outset\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-border-outset\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"all <length>s made absolute, otherwise as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-border-outset\",\n        \"maskBorderOutset\"\n      ],\n      \"syntax\": \"[ <length> | <number> ]{1,4}\"\n    }\n  ],\n  [\n    \"mask-border-repeat\",\n    {\n      \"name\": \"mask-border-repeat\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-border-repeat\",\n      \"initial\": \"stretch\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-border-repeat\",\n        \"maskBorderRepeat\"\n      ],\n      \"syntax\": \"[ stretch | repeat | round | space ]{1,2}\"\n    }\n  ],\n  [\n    \"mask-border-slice\",\n    {\n      \"name\": \"mask-border-slice\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-border-slice\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of the mask border image\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-border-slice\",\n        \"maskBorderSlice\"\n      ],\n      \"syntax\": \"[ <number> | <percentage> ]{1,4} fill?\"\n    }\n  ],\n  [\n    \"mask-border-source\",\n    {\n      \"name\": \"mask-border-source\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-border-source\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"they keyword none or the computed <image>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-border-source\",\n        \"maskBorderSource\"\n      ],\n      \"syntax\": \"none | <image>\"\n    }\n  ],\n  [\n    \"mask-border-width\",\n    {\n      \"name\": \"mask-border-width\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-border-width\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to width/height of the mask border image area\",\n      \"computedValue\": \"all <length>s made absolute, otherwise as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-border-width\",\n        \"maskBorderWidth\"\n      ],\n      \"syntax\": \"[ <length-percentage> | <number> | auto ]{1,4}\"\n    }\n  ],\n  [\n    \"mask-clip\",\n    {\n      \"name\": \"mask-clip\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-clip\",\n      \"initial\": \"border-box\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item the keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-clip\",\n        \"maskClip\"\n      ],\n      \"syntax\": \"[ <coord-box> | no-clip ]#\"\n    }\n  ],\n  [\n    \"mask-composite\",\n    {\n      \"name\": \"mask-composite\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-composite\",\n      \"initial\": \"add\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements without the defs element and all graphics elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item the keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-composite\",\n        \"maskComposite\"\n      ],\n      \"syntax\": \"<compositing-operator>#\"\n    }\n  ],\n  [\n    \"mask-image\",\n    {\n      \"name\": \"mask-image\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-image\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item the keyword none, a computed <image>, or a computed <url>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-image\",\n        \"maskImage\"\n      ],\n      \"syntax\": \"<mask-reference>#\"\n    }\n  ],\n  [\n    \"mask-mode\",\n    {\n      \"name\": \"mask-mode\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-mode\",\n      \"initial\": \"match-source\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item the keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-mode\",\n        \"maskMode\"\n      ],\n      \"syntax\": \"<masking-mode>#\"\n    }\n  ],\n  [\n    \"mask-origin\",\n    {\n      \"name\": \"mask-origin\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-origin\",\n      \"initial\": \"border-box\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item the keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-origin\",\n        \"maskOrigin\"\n      ],\n      \"syntax\": \"<coord-box>#\"\n    }\n  ],\n  [\n    \"mask-position\",\n    {\n      \"name\": \"mask-position\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-position\",\n      \"initial\": \"0% 0%\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of mask painting area minus size of mask layer image; see text background-position [CSS3BG]\",\n      \"computedValue\": \"list, each item consists of two keywords representing the origin and two offsets from that origin, each given as an absolute length (if given a <length>), otherwise as a percentage.\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-position\",\n        \"maskPosition\"\n      ],\n      \"syntax\": \"<position>#\"\n    }\n  ],\n  [\n    \"mask-repeat\",\n    {\n      \"name\": \"mask-repeat\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-repeat\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item a pair of keywords, one per dimension\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-repeat\",\n        \"maskRepeat\"\n      ],\n      \"syntax\": \"<repeat-style>#\"\n    }\n  ],\n  [\n    \"mask-size\",\n    {\n      \"name\": \"mask-size\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-size\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements excluding the defs element, all graphics elements and the use element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list, each item as specified, but with lengths made absolute\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-size\",\n        \"maskSize\"\n      ],\n      \"syntax\": \"<bg-size>#\"\n    }\n  ],\n  [\n    \"mask-type\",\n    {\n      \"name\": \"mask-type\",\n      \"href\": \"https://drafts.csswg.org/css-masking-1/#propdef-mask-type\",\n      \"initial\": \"luminance\",\n      \"appliesTo\": \"mask elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mask-type\",\n        \"maskType\"\n      ],\n      \"syntax\": \"luminance | alpha\"\n    }\n  ],\n  [\n    \"math-depth\",\n    {\n      \"name\": \"math-depth\",\n      \"href\": \"https://w3c.github.io/mathml-core/#propdef-math-depth\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"All elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"an integer, see below\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"by computed value type\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"math-depth\",\n        \"mathDepth\"\n      ],\n      \"syntax\": \"auto-add | add(<integer>) | <integer>\"\n    }\n  ],\n  [\n    \"math-shift\",\n    {\n      \"name\": \"math-shift\",\n      \"href\": \"https://w3c.github.io/mathml-core/#propdef-math-shift\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"All elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"by computed value type\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"math-shift\",\n        \"mathShift\"\n      ],\n      \"syntax\": \"normal | compact\"\n    }\n  ],\n  [\n    \"math-style\",\n    {\n      \"name\": \"math-style\",\n      \"href\": \"https://w3c.github.io/mathml-core/#propdef-math-style\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"All elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"by computed value type\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"math-style\",\n        \"mathStyle\"\n      ],\n      \"syntax\": \"normal | compact\"\n    }\n  ],\n  [\n    \"max-block-size\",\n    {\n      \"name\": \"max-block-size\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-max-block-size\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"same as height and width\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as max-height, max-width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"max-size\",\n      \"styleDeclaration\": [\n        \"max-block-size\",\n        \"maxBlockSize\"\n      ],\n      \"syntax\": \"<'max-width'>\"\n    }\n  ],\n  [\n    \"max-height\",\n    {\n      \"name\": \"max-height\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-3/#propdef-max-height\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements that accept width or height\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to width/height of containing block\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value, recursing into fit-content()\",\n      \"logicalPropertyGroup\": \"max-size\",\n      \"styleDeclaration\": [\n        \"max-height\",\n        \"maxHeight\"\n      ],\n      \"syntax\": \"none | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain\"\n    }\n  ],\n  [\n    \"max-inline-size\",\n    {\n      \"name\": \"max-inline-size\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-max-inline-size\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"same as height and width\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as max-height, max-width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"max-size\",\n      \"styleDeclaration\": [\n        \"max-inline-size\",\n        \"maxInlineSize\"\n      ],\n      \"syntax\": \"<'max-width'>\"\n    }\n  ],\n  [\n    \"max-lines\",\n    {\n      \"name\": \"max-lines\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-max-lines\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block containers which are also either line-clamp containers or fragmentation containers that capture region breaks\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword none or an integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"max-lines\",\n        \"maxLines\"\n      ],\n      \"syntax\": \"none | <integer [1,∞]>\"\n    }\n  ],\n  [\n    \"max-width\",\n    {\n      \"name\": \"max-width\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-3/#propdef-max-width\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements that accept width or height\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to width/height of containing block\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value, recursing into fit-content()\",\n      \"logicalPropertyGroup\": \"max-size\",\n      \"styleDeclaration\": [\n        \"max-width\",\n        \"maxWidth\"\n      ],\n      \"syntax\": \"none | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain\"\n    }\n  ],\n  [\n    \"min-block-size\",\n    {\n      \"name\": \"min-block-size\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-min-block-size\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"same as height and width\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as min-height, min-width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"min-size\",\n      \"styleDeclaration\": [\n        \"min-block-size\",\n        \"minBlockSize\"\n      ],\n      \"syntax\": \"<'min-width'>\"\n    }\n  ],\n  [\n    \"min-height\",\n    {\n      \"name\": \"min-height\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-3/#propdef-min-height\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements that accept width or height\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to width/height of containing block\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value, recursing into fit-content()\",\n      \"logicalPropertyGroup\": \"min-size\",\n      \"styleDeclaration\": [\n        \"min-height\",\n        \"minHeight\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain\"\n    }\n  ],\n  [\n    \"min-inline-size\",\n    {\n      \"name\": \"min-inline-size\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-min-inline-size\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"same as height and width\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as min-height, min-width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"min-size\",\n      \"styleDeclaration\": [\n        \"min-inline-size\",\n        \"minInlineSize\"\n      ],\n      \"syntax\": \"<'min-width'>\"\n    }\n  ],\n  [\n    \"min-intrinsic-sizing\",\n    {\n      \"name\": \"min-intrinsic-sizing\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-4/#propdef-min-intrinsic-sizing\",\n      \"initial\": \"legacy\",\n      \"appliesTo\": \"all elements except inline boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"min-intrinsic-sizing\",\n        \"minIntrinsicSizing\"\n      ],\n      \"syntax\": \"legacy | zero-if-scroll || zero-if-extrinsic\"\n    }\n  ],\n  [\n    \"min-width\",\n    {\n      \"name\": \"min-width\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-3/#propdef-min-width\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements that accept width or height\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to width/height of containing block\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value, recursing into fit-content()\",\n      \"logicalPropertyGroup\": \"min-size\",\n      \"styleDeclaration\": [\n        \"min-width\",\n        \"minWidth\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain\"\n    }\n  ],\n  [\n    \"mix-blend-mode\",\n    {\n      \"name\": \"mix-blend-mode\",\n      \"href\": \"https://drafts.csswg.org/compositing-2/#propdef-mix-blend-mode\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"All elements. In SVG, it applies to container elements, graphics elements and graphics referencing elements. [SVG11]\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"mix-blend-mode\",\n        \"mixBlendMode\"\n      ],\n      \"syntax\": \"<blend-mode> | plus-lighter\"\n    }\n  ],\n  [\n    \"nav-down\",\n    {\n      \"name\": \"nav-down\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-nav-down\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all enabled elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"nav-down\",\n        \"navDown\"\n      ],\n      \"syntax\": \"auto | <id> [ current | root | <target-name> ]?\"\n    }\n  ],\n  [\n    \"nav-left\",\n    {\n      \"name\": \"nav-left\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-nav-left\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all enabled elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"nav-left\",\n        \"navLeft\"\n      ],\n      \"syntax\": \"auto | <id> [ current | root | <target-name> ]?\"\n    }\n  ],\n  [\n    \"nav-right\",\n    {\n      \"name\": \"nav-right\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-nav-right\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all enabled elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"nav-right\",\n        \"navRight\"\n      ],\n      \"syntax\": \"auto | <id> [ current | root | <target-name> ]?\"\n    }\n  ],\n  [\n    \"nav-up\",\n    {\n      \"name\": \"nav-up\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-nav-up\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all enabled elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"nav-up\",\n        \"navUp\"\n      ],\n      \"syntax\": \"auto | <id> [ current | root | <target-name> ]?\"\n    }\n  ],\n  [\n    \"object-fit\",\n    {\n      \"name\": \"object-fit\",\n      \"href\": \"https://drafts.csswg.org/css-images-4/#propdef-object-fit\",\n      \"initial\": \"fill\",\n      \"appliesTo\": \"replaced elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"object-fit\",\n        \"objectFit\"\n      ],\n      \"syntax\": \"fill | none | [contain | cover] || scale-down\"\n    }\n  ],\n  [\n    \"object-position\",\n    {\n      \"name\": \"object-position\",\n      \"href\": \"https://drafts.csswg.org/css-images-3/#propdef-object-position\",\n      \"initial\": \"50% 50%\",\n      \"appliesTo\": \"replaced elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to width and height of element itself\",\n      \"computedValue\": \"as for background-position\",\n      \"canonicalOrder\": \"the horizontal component of the <position>, followed by the vertical component\",\n      \"animationType\": \"as for background-position\",\n      \"styleDeclaration\": [\n        \"object-position\",\n        \"objectPosition\"\n      ],\n      \"syntax\": \"<position>\"\n    }\n  ],\n  [\n    \"object-view-box\",\n    {\n      \"name\": \"object-view-box\",\n      \"href\": \"https://drafts.csswg.org/css-images-5/#propdef-object-view-box\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"replaced elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword, or computed <basic-shape> function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"as <basic-shape> if possible, otherwise discrete\",\n      \"styleDeclaration\": [\n        \"object-view-box\",\n        \"objectViewBox\"\n      ],\n      \"syntax\": \"none | <basic-shape-rect>\"\n    }\n  ],\n  [\n    \"offset\",\n    {\n      \"name\": \"offset\",\n      \"href\": \"https://drafts.csswg.org/motion-1/#propdef-offset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"offset\"\n      ],\n      \"syntax\": \"[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?\"\n    }\n  ],\n  [\n    \"offset-anchor\",\n    {\n      \"name\": \"offset-anchor\",\n      \"href\": \"https://drafts.csswg.org/motion-1/#propdef-offset-anchor\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the width and the height of the element’s reference box\",\n      \"computedValue\": \"the auto keyword or a computed <position>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"offset-anchor\",\n        \"offsetAnchor\"\n      ],\n      \"syntax\": \"auto | <position>\"\n    }\n  ],\n  [\n    \"offset-distance\",\n    {\n      \"name\": \"offset-distance\",\n      \"href\": \"https://drafts.csswg.org/motion-1/#propdef-offset-distance\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the offset path length\",\n      \"computedValue\": \"a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"offset-distance\",\n        \"offsetDistance\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"offset-path\",\n    {\n      \"name\": \"offset-path\",\n      \"href\": \"https://drafts.csswg.org/motion-1/#propdef-offset-path\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"offset-path\",\n        \"offsetPath\"\n      ],\n      \"syntax\": \"none | <offset-path> || <coord-box>\"\n    }\n  ],\n  [\n    \"offset-position\",\n    {\n      \"name\": \"offset-position\",\n      \"href\": \"https://drafts.csswg.org/motion-1/#propdef-offset-position\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Refer to the size of containing block\",\n      \"computedValue\": \"The normal or auto keywords, or a computed <position>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"offset-position\",\n        \"offsetPosition\"\n      ],\n      \"syntax\": \"normal | auto | <position>\"\n    }\n  ],\n  [\n    \"offset-rotate\",\n    {\n      \"name\": \"offset-rotate\",\n      \"href\": \"https://drafts.csswg.org/motion-1/#propdef-offset-rotate\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"computed <angle> value, optionally preceded by auto\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"offset-rotate\",\n        \"offsetRotate\"\n      ],\n      \"syntax\": \"[ auto | reverse ] || <angle>\"\n    }\n  ],\n  [\n    \"opacity\",\n    {\n      \"name\": \"opacity\",\n      \"href\": \"https://drafts.csswg.org/css-color-4/#propdef-opacity\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"map to the range [0,1]\",\n      \"computedValue\": \"specified number, clamped to the range [0,1]\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"opacity\"\n      ],\n      \"syntax\": \"<opacity-value>\"\n    }\n  ],\n  [\n    \"order\",\n    {\n      \"name\": \"order\",\n      \"href\": \"https://drafts.csswg.org/css-display-4/#propdef-order\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"flex items and grid items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"order\"\n      ],\n      \"syntax\": \"<integer>\"\n    }\n  ],\n  [\n    \"orphans\",\n    {\n      \"name\": \"orphans\",\n      \"href\": \"https://drafts.csswg.org/css-break-4/#propdef-orphans\",\n      \"initial\": \"2\",\n      \"appliesTo\": \"block containers that establish an inline formatting context\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"orphans\"\n      ],\n      \"syntax\": \"<integer [1,∞]>\"\n    }\n  ],\n  [\n    \"outline\",\n    {\n      \"name\": \"outline\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-outline\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"outline\"\n      ],\n      \"syntax\": \"<'outline-width'> || <'outline-style'> || <'outline-color'>\"\n    }\n  ],\n  [\n    \"outline-color\",\n    {\n      \"name\": \"outline-color\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-outline-color\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see below\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"outline-color\",\n        \"outlineColor\"\n      ],\n      \"syntax\": \"auto | <'border-top-color'>\"\n    }\n  ],\n  [\n    \"outline-offset\",\n    {\n      \"name\": \"outline-offset\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-outline-offset\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"outline-offset\",\n        \"outlineOffset\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"outline-style\",\n    {\n      \"name\": \"outline-style\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-outline-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"outline-style\",\n        \"outlineStyle\"\n      ],\n      \"syntax\": \"auto | <outline-line-style>\"\n    }\n  ],\n  [\n    \"outline-width\",\n    {\n      \"name\": \"outline-width\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-outline-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"absolute length, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"outline-width\",\n        \"outlineWidth\"\n      ],\n      \"syntax\": \"<line-width>\"\n    }\n  ],\n  [\n    \"overflow\",\n    {\n      \"name\": \"overflow\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-3/#propdef-overflow\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"block containers [CSS2], flex containers [CSS3-FLEXBOX], and grid containers [CSS3-GRID-LAYOUT]\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"overflow\"\n      ],\n      \"syntax\": \"<'overflow-block'>{1,2}\"\n    }\n  ],\n  [\n    \"overflow-anchor\",\n    {\n      \"name\": \"overflow-anchor\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-anchoring-1/#propdef-overflow-anchor\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"overflow-anchor\",\n        \"overflowAnchor\"\n      ],\n      \"syntax\": \"auto | none\"\n    }\n  ],\n  [\n    \"overflow-block\",\n    {\n      \"name\": \"overflow-block\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-3/#propdef-overflow-block\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"usually specified value, but see text\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overflow\",\n      \"styleDeclaration\": [\n        \"overflow-block\",\n        \"overflowBlock\"\n      ],\n      \"syntax\": \"visible | hidden | clip | scroll | auto\"\n    }\n  ],\n  [\n    \"overflow-clip-margin\",\n    {\n      \"name\": \"overflow-clip-margin\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin\",\n        \"overflowClipMargin\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-block\",\n    {\n      \"name\": \"overflow-clip-margin-block\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-block\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-block\",\n        \"overflowClipMarginBlock\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-block-end\",\n    {\n      \"name\": \"overflow-clip-margin-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-block-end\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-block-end\",\n        \"overflowClipMarginBlockEnd\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-block-start\",\n    {\n      \"name\": \"overflow-clip-margin-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-block-start\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-block-start\",\n        \"overflowClipMarginBlockStart\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-bottom\",\n    {\n      \"name\": \"overflow-clip-margin-bottom\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-bottom\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-bottom\",\n        \"overflowClipMarginBottom\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-inline\",\n    {\n      \"name\": \"overflow-clip-margin-inline\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-inline\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-inline\",\n        \"overflowClipMarginInline\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-inline-end\",\n    {\n      \"name\": \"overflow-clip-margin-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-inline-end\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-inline-end\",\n        \"overflowClipMarginInlineEnd\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-inline-start\",\n    {\n      \"name\": \"overflow-clip-margin-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-inline-start\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-inline-start\",\n        \"overflowClipMarginInlineStart\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-left\",\n    {\n      \"name\": \"overflow-clip-margin-left\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-left\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-left\",\n        \"overflowClipMarginLeft\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-right\",\n    {\n      \"name\": \"overflow-clip-margin-right\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-right\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-right\",\n        \"overflowClipMarginRight\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-clip-margin-top\",\n    {\n      \"name\": \"overflow-clip-margin-top\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-overflow-clip-margin-top\",\n      \"initial\": \"0px\",\n      \"appliesTo\": \"boxes to which overflow applies\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"the computed <length> and a <visual-box> keyword\",\n      \"animationType\": \"per computed value if the <visual-box> values match; otherwise discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"logicalPropertyGroup\": \"overflow-clip-margin\",\n      \"styleDeclaration\": [\n        \"overflow-clip-margin-top\",\n        \"overflowClipMarginTop\"\n      ],\n      \"syntax\": \"<visual-box> || <length [0,∞]>\"\n    }\n  ],\n  [\n    \"overflow-inline\",\n    {\n      \"name\": \"overflow-inline\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-3/#propdef-overflow-inline\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"usually specified value, but see text\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overflow\",\n      \"styleDeclaration\": [\n        \"overflow-inline\",\n        \"overflowInline\"\n      ],\n      \"syntax\": \"visible | hidden | clip | scroll | auto\"\n    }\n  ],\n  [\n    \"overflow-wrap\",\n    {\n      \"name\": \"overflow-wrap\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-overflow-wrap\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"overflow-wrap\",\n        \"overflowWrap\"\n      ],\n      \"syntax\": \"normal | break-word | anywhere\"\n    }\n  ],\n  [\n    \"overflow-x\",\n    {\n      \"name\": \"overflow-x\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-3/#propdef-overflow-x\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"usually specified value, but see text\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overflow\",\n      \"styleDeclaration\": [\n        \"overflow-x\",\n        \"overflowX\"\n      ],\n      \"syntax\": \"visible | hidden | clip | scroll | auto\"\n    }\n  ],\n  [\n    \"overflow-y\",\n    {\n      \"name\": \"overflow-y\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-3/#propdef-overflow-y\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"block containers [CSS2], flex containers [CSS3-FLEXBOX], grid containers [CSS3-GRID-LAYOUT]\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"usually specified value, but see text\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overflow\",\n      \"styleDeclaration\": [\n        \"overflow-y\",\n        \"overflowY\"\n      ],\n      \"syntax\": \"visible | hidden | clip | scroll | auto\"\n    }\n  ],\n  [\n    \"overlay\",\n    {\n      \"name\": \"overlay\",\n      \"href\": \"https://drafts.csswg.org/css-position-4/#propdef-overlay\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see prose\",\n      \"styleDeclaration\": [\n        \"overlay\"\n      ],\n      \"syntax\": \"none | auto\"\n    }\n  ],\n  [\n    \"overscroll-behavior\",\n    {\n      \"name\": \"overscroll-behavior\",\n      \"href\": \"https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior\",\n      \"initial\": \"auto auto\",\n      \"appliesTo\": \"scroll container elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"overscroll-behavior\",\n        \"overscrollBehavior\"\n      ],\n      \"syntax\": \"[ contain | none | auto ]{1,2}\"\n    }\n  ],\n  [\n    \"overscroll-behavior-block\",\n    {\n      \"name\": \"overscroll-behavior-block\",\n      \"href\": \"https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-block\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll container elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overscroll-behavior\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"overscroll-behavior-block\",\n        \"overscrollBehaviorBlock\"\n      ],\n      \"syntax\": \"contain | none | auto\"\n    }\n  ],\n  [\n    \"overscroll-behavior-inline\",\n    {\n      \"name\": \"overscroll-behavior-inline\",\n      \"href\": \"https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-inline\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll container elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overscroll-behavior\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"overscroll-behavior-inline\",\n        \"overscrollBehaviorInline\"\n      ],\n      \"syntax\": \"contain | none | auto\"\n    }\n  ],\n  [\n    \"overscroll-behavior-x\",\n    {\n      \"name\": \"overscroll-behavior-x\",\n      \"href\": \"https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-x\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll container elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overscroll-behavior\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"overscroll-behavior-x\",\n        \"overscrollBehaviorX\"\n      ],\n      \"syntax\": \"contain | none | auto\"\n    }\n  ],\n  [\n    \"overscroll-behavior-y\",\n    {\n      \"name\": \"overscroll-behavior-y\",\n      \"href\": \"https://drafts.csswg.org/css-overscroll-1/#propdef-overscroll-behavior-y\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll container elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"logicalPropertyGroup\": \"overscroll-behavior\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"overscroll-behavior-y\",\n        \"overscrollBehaviorY\"\n      ],\n      \"syntax\": \"contain | none | auto\"\n    }\n  ],\n  [\n    \"padding\",\n    {\n      \"name\": \"padding\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-padding\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"padding\"\n      ],\n      \"syntax\": \"<'padding-top'>{1,4}\"\n    }\n  ],\n  [\n    \"padding-block\",\n    {\n      \"name\": \"padding-block\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-padding-block\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"padding-block\",\n        \"paddingBlock\"\n      ],\n      \"syntax\": \"<'padding-top'>{1,2}\"\n    }\n  ],\n  [\n    \"padding-block-end\",\n    {\n      \"name\": \"padding-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-padding-block-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as padding-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding padding-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-block-end\",\n        \"paddingBlockEnd\"\n      ],\n      \"syntax\": \"<'padding-top'>\"\n    }\n  ],\n  [\n    \"padding-block-start\",\n    {\n      \"name\": \"padding-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-padding-block-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as padding-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding padding-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-block-start\",\n        \"paddingBlockStart\"\n      ],\n      \"syntax\": \"<'padding-top'>\"\n    }\n  ],\n  [\n    \"padding-bottom\",\n    {\n      \"name\": \"padding-bottom\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-padding-bottom\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-bottom\",\n        \"paddingBottom\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"padding-inline\",\n    {\n      \"name\": \"padding-inline\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-padding-inline\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"padding-inline\",\n        \"paddingInline\"\n      ],\n      \"syntax\": \"<'padding-top'>{1,2}\"\n    }\n  ],\n  [\n    \"padding-inline-end\",\n    {\n      \"name\": \"padding-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-padding-inline-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as padding-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding padding-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-inline-end\",\n        \"paddingInlineEnd\"\n      ],\n      \"syntax\": \"<'padding-top'>\"\n    }\n  ],\n  [\n    \"padding-inline-start\",\n    {\n      \"name\": \"padding-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-logical-1/#propdef-padding-inline-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Same as padding-top\",\n      \"inherited\": \"no\",\n      \"percentages\": \"As for the corresponding physical property\",\n      \"computedValue\": \"Same as corresponding padding-* properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-inline-start\",\n        \"paddingInlineStart\"\n      ],\n      \"syntax\": \"<'padding-top'>\"\n    }\n  ],\n  [\n    \"padding-left\",\n    {\n      \"name\": \"padding-left\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-padding-left\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-left\",\n        \"paddingLeft\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"padding-right\",\n    {\n      \"name\": \"padding-right\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-padding-right\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-right\",\n        \"paddingRight\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"padding-top\",\n    {\n      \"name\": \"padding-top\",\n      \"href\": \"https://drafts.csswg.org/css-box-4/#propdef-padding-top\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements except: internal table elements other than table cells, ruby base containers, and ruby annotation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to logical width of containing block\",\n      \"computedValue\": \"a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"padding\",\n      \"styleDeclaration\": [\n        \"padding-top\",\n        \"paddingTop\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"page\",\n    {\n      \"name\": \"page\",\n      \"href\": \"https://drafts.csswg.org/css-page-3/#propdef-page\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"boxes that create class A break points\",\n      \"inherited\": \"no (but see prose)\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"page\"\n      ],\n      \"syntax\": \"auto | <custom-ident>\"\n    }\n  ],\n  [\n    \"page-break-after\",\n    {\n      \"name\": \"page-break-after\",\n      \"href\": \"https://drafts.csswg.org/css2/#propdef-page-break-after\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level elements (but see text)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual, paged\",\n      \"styleDeclaration\": [\n        \"page-break-after\",\n        \"pageBreakAfter\"\n      ],\n      \"syntax\": \"auto | always | avoid | left | right | inherit\"\n    }\n  ],\n  [\n    \"page-break-before\",\n    {\n      \"name\": \"page-break-before\",\n      \"href\": \"https://drafts.csswg.org/css2/#propdef-page-break-before\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level elements (but see text)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual, paged\",\n      \"styleDeclaration\": [\n        \"page-break-before\",\n        \"pageBreakBefore\"\n      ],\n      \"syntax\": \"auto | always | avoid | left | right | inherit\"\n    }\n  ],\n  [\n    \"page-break-inside\",\n    {\n      \"name\": \"page-break-inside\",\n      \"href\": \"https://drafts.csswg.org/css2/#propdef-page-break-inside\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level elements (but see text)\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual, paged\",\n      \"styleDeclaration\": [\n        \"page-break-inside\",\n        \"pageBreakInside\"\n      ],\n      \"syntax\": \"avoid | auto | inherit\"\n    }\n  ],\n  [\n    \"paint-order\",\n    {\n      \"name\": \"paint-order\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#PaintOrderProperty\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"shapes and text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"paint-order\",\n        \"paintOrder\"\n      ],\n      \"syntax\": \"normal | [ fill || stroke || markers ]\"\n    }\n  ],\n  [\n    \"pause\",\n    {\n      \"name\": \"pause\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-pause\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"pause\"\n      ],\n      \"syntax\": \"<'pause-before'> <'pause-after'>?\"\n    }\n  ],\n  [\n    \"pause-after\",\n    {\n      \"name\": \"pause-after\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-pause-after\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"pause-after\",\n        \"pauseAfter\"\n      ],\n      \"syntax\": \"<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong\"\n    }\n  ],\n  [\n    \"pause-before\",\n    {\n      \"name\": \"pause-before\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-pause-before\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"pause-before\",\n        \"pauseBefore\"\n      ],\n      \"syntax\": \"<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong\"\n    }\n  ],\n  [\n    \"perspective\",\n    {\n      \"name\": \"perspective\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-2/#propdef-perspective\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword none or an absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"perspective\"\n      ],\n      \"syntax\": \"none | <length [0,∞]>\"\n    }\n  ],\n  [\n    \"perspective-origin\",\n    {\n      \"name\": \"perspective-origin\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-2/#propdef-perspective-origin\",\n      \"initial\": \"50% 50%\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the size of the reference box\",\n      \"computedValue\": \"see background-position\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"perspective-origin\",\n        \"perspectiveOrigin\"\n      ],\n      \"syntax\": \"<position>\"\n    }\n  ],\n  [\n    \"place-content\",\n    {\n      \"name\": \"place-content\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-place-content\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"place-content\",\n        \"placeContent\"\n      ],\n      \"syntax\": \"<'align-content'> <'justify-content'>?\"\n    }\n  ],\n  [\n    \"place-items\",\n    {\n      \"name\": \"place-items\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-place-items\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"place-items\",\n        \"placeItems\"\n      ],\n      \"syntax\": \"<'align-items'> <'justify-items'>?\"\n    }\n  ],\n  [\n    \"place-self\",\n    {\n      \"name\": \"place-self\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-place-self\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"place-self\",\n        \"placeSelf\"\n      ],\n      \"syntax\": \"<'align-self'> <'justify-self'>?\"\n    }\n  ],\n  [\n    \"pointer-events\",\n    {\n      \"name\": \"pointer-events\",\n      \"href\": \"https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"container elements, graphics elements and ‘use’\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"pointer-events\",\n        \"pointerEvents\"\n      ],\n      \"syntax\": \"auto | bounding-box | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none\"\n    }\n  ],\n  [\n    \"pointer-timeline\",\n    {\n      \"name\": \"pointer-timeline\",\n      \"href\": \"https://drafts.csswg.org/pointer-animations-1/#propdef-pointer-timeline\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"pointer-timeline\",\n        \"pointerTimeline\"\n      ],\n      \"syntax\": \"[ <'pointer-timeline-name'> <'pointer-timeline-axis'>? ]#\"\n    }\n  ],\n  [\n    \"pointer-timeline-axis\",\n    {\n      \"name\": \"pointer-timeline-axis\",\n      \"href\": \"https://drafts.csswg.org/pointer-animations-1/#propdef-pointer-timeline-axis\",\n      \"initial\": \"block\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"a list of the keywords specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"pointer-timeline-axis\",\n        \"pointerTimelineAxis\"\n      ],\n      \"syntax\": \"[ block | inline | x | y ]#\"\n    }\n  ],\n  [\n    \"pointer-timeline-name\",\n    {\n      \"name\": \"pointer-timeline-name\",\n      \"href\": \"https://drafts.csswg.org/pointer-animations-1/#propdef-pointer-timeline-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list of CSS identifiers\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"pointer-timeline-name\",\n        \"pointerTimelineName\"\n      ],\n      \"syntax\": \"[ none | <dashed-ident> ]#\"\n    }\n  ],\n  [\n    \"position\",\n    {\n      \"name\": \"position\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-position\",\n      \"initial\": \"static\",\n      \"appliesTo\": \"all elements except table-column-group and table-column\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"position\"\n      ],\n      \"syntax\": \"static | relative | absolute | sticky | fixed | <running()>\"\n    }\n  ],\n  [\n    \"position-anchor\",\n    {\n      \"name\": \"position-anchor\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-position-anchor\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"absolutely positioned boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"position-anchor\",\n        \"positionAnchor\"\n      ],\n      \"syntax\": \"normal | none | auto | <anchor-name>\"\n    }\n  ],\n  [\n    \"position-area\",\n    {\n      \"name\": \"position-area\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-position-area\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"positioned boxes with a default anchor box\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a pair of keywords, see § 3.1.3 Computed Value and Serialization of <position-area>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"TBD\",\n      \"styleDeclaration\": [\n        \"position-area\",\n        \"positionArea\"\n      ],\n      \"syntax\": \"none | <position-area>\"\n    }\n  ],\n  [\n    \"position-try\",\n    {\n      \"name\": \"position-try\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-position-try\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"position-try\",\n        \"positionTry\"\n      ],\n      \"syntax\": \"<'position-try-order'>? <'position-try-fallbacks'>\"\n    }\n  ],\n  [\n    \"position-try-fallbacks\",\n    {\n      \"name\": \"position-try-fallbacks\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-position-try-fallbacks\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"absolutely positioned boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"position-try-fallbacks\",\n        \"positionTryFallbacks\"\n      ],\n      \"syntax\": \"none | [ [<dashed-ident> || <try-tactic>] | <position-area> ]#\"\n    }\n  ],\n  [\n    \"position-try-order\",\n    {\n      \"name\": \"position-try-order\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-position-try-order\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"absolutely positioned boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"position-try-order\",\n        \"positionTryOrder\"\n      ],\n      \"syntax\": \"normal | <try-size>\"\n    }\n  ],\n  [\n    \"position-visibility\",\n    {\n      \"name\": \"position-visibility\",\n      \"href\": \"https://drafts.csswg.org/css-anchor-position-1/#propdef-position-visibility\",\n      \"initial\": \"anchors-visible\",\n      \"appliesTo\": \"absolutely positioned boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"position-visibility\",\n        \"positionVisibility\"\n      ],\n      \"syntax\": \"always | [ anchors-valid || anchors-visible || no-overflow ]\"\n    }\n  ],\n  [\n    \"print-color-adjust\",\n    {\n      \"name\": \"print-color-adjust\",\n      \"href\": \"https://drafts.csswg.org/css-color-adjust-1/#propdef-print-color-adjust\",\n      \"initial\": \"economy\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"print-color-adjust\",\n        \"printColorAdjust\"\n      ],\n      \"syntax\": \"economy | exact\"\n    }\n  ],\n  [\n    \"quotes\",\n    {\n      \"name\": \"quotes\",\n      \"href\": \"https://drafts.csswg.org/css-content-3/#propdef-quotes\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none, the keyword auto or match-parent, or a list, each item a pair of string values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"quotes\"\n      ],\n      \"syntax\": \"auto | none | match-parent | [ <string> <string> ]+\"\n    }\n  ],\n  [\n    \"r\",\n    {\n      \"name\": \"r\",\n      \"href\": \"https://svgwg.org/svg2-draft/geometry.html#RProperty\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"‘circle’ element\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the normalized diagonal of the current SVG viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computedValue\": \"an absolute length or percentage\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"r\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"reading-flow\",\n    {\n      \"name\": \"reading-flow\",\n      \"href\": \"https://drafts.csswg.org/css-display-4/#propdef-reading-flow\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"block, flex and grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"reading-flow\",\n        \"readingFlow\"\n      ],\n      \"syntax\": \"normal | source-order | flex-visual | flex-flow | grid-rows | grid-columns | grid-order\"\n    }\n  ],\n  [\n    \"reading-order\",\n    {\n      \"name\": \"reading-order\",\n      \"href\": \"https://drafts.csswg.org/css-display-4/#propdef-reading-order\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"Direct block-level, grid item, or flex item children of a reading flow container.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"reading-order\",\n        \"readingOrder\"\n      ],\n      \"syntax\": \"<integer>\"\n    }\n  ],\n  [\n    \"region-fragment\",\n    {\n      \"name\": \"region-fragment\",\n      \"href\": \"https://drafts.csswg.org/css-regions-1/#propdef-region-fragment\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"CSS Regions\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"region-fragment\",\n        \"regionFragment\"\n      ],\n      \"syntax\": \"auto | break\"\n    }\n  ],\n  [\n    \"resize\",\n    {\n      \"name\": \"resize\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-resize\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"elements that are scroll containers and optionally replaced elements such as images, videos, and iframes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"resize\"\n      ],\n      \"syntax\": \"none | both | horizontal | vertical | block | inline\"\n    }\n  ],\n  [\n    \"rest\",\n    {\n      \"name\": \"rest\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-rest\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rest\"\n      ],\n      \"syntax\": \"<'rest-before'> <'rest-after'>?\"\n    }\n  ],\n  [\n    \"rest-after\",\n    {\n      \"name\": \"rest-after\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-rest-after\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"rest-after\",\n        \"restAfter\"\n      ],\n      \"syntax\": \"<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong\"\n    }\n  ],\n  [\n    \"rest-before\",\n    {\n      \"name\": \"rest-before\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-rest-before\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"rest-before\",\n        \"restBefore\"\n      ],\n      \"syntax\": \"<time [0s,∞]> | none | x-weak | weak | medium | strong | x-strong\"\n    }\n  ],\n  [\n    \"right\",\n    {\n      \"name\": \"right\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-right\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"right\"\n      ],\n      \"syntax\": \"auto | <length-percentage> | <anchor()> | <anchor-size()>\"\n    }\n  ],\n  [\n    \"rotate\",\n    {\n      \"name\": \"rotate\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-2/#propdef-rotate\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none, or an <angle> with an axis consisting of a list of three <number>s\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"as SLERP, but see below for none\",\n      \"styleDeclaration\": [\n        \"rotate\"\n      ],\n      \"syntax\": \"none | <angle> | [ x | y | z | <number>{3} ] && <angle>\"\n    }\n  ],\n  [\n    \"row-gap\",\n    {\n      \"name\": \"row-gap\",\n      \"href\": \"https://drafts.csswg.org/css-align-3/#propdef-row-gap\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"multi-column containers, flex containers, grid containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see § 8.3 Percentages In gap Properties\",\n      \"computedValue\": \"specified keyword, else a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"row-gap\",\n        \"rowGap\"\n      ],\n      \"syntax\": \"normal | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"row-rule\",\n    {\n      \"name\": \"row-rule\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"row-rule\",\n        \"rowRule\"\n      ],\n      \"syntax\": \"<gap-rule-list> | <gap-auto-rule-list>\"\n    }\n  ],\n  [\n    \"row-rule-break\",\n    {\n      \"name\": \"row-rule-break\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-break\",\n      \"initial\": \"spanning-item\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"row-rule-break\",\n        \"rowRuleBreak\"\n      ],\n      \"syntax\": \"none | spanning-item | intersection\"\n    }\n  ],\n  [\n    \"row-rule-color\",\n    {\n      \"name\": \"row-rule-color\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list, see § 3.4.1 Interpolation behavior.\",\n      \"styleDeclaration\": [\n        \"row-rule-color\",\n        \"rowRuleColor\"\n      ],\n      \"syntax\": \"<line-color-list> | <auto-line-color-list>\"\n    }\n  ],\n  [\n    \"row-rule-edge-inset\",\n    {\n      \"name\": \"row-rule-edge-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-edge-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-edge-inset-start, column-rule-interior-inset-start, row-rule-edge-inset-end, and row-rule-interior-inset-end\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"row-rule-edge-inset\",\n        \"rowRuleEdgeInset\"\n      ],\n      \"syntax\": \"<length-percentage> [ <length-percentage> ]?\"\n    }\n  ],\n  [\n    \"row-rule-edge-inset-end\",\n    {\n      \"name\": \"row-rule-edge-inset-end\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-edge-inset-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"row-rule-edge-inset-end\",\n        \"rowRuleEdgeInsetEnd\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"row-rule-edge-inset-start\",\n    {\n      \"name\": \"row-rule-edge-inset-start\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-edge-inset-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"row-rule-edge-inset-start\",\n        \"rowRuleEdgeInsetStart\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"row-rule-inset\",\n    {\n      \"name\": \"row-rule-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-edge-inset, column-rule-interior-inset, row-rule-edge-inset, and row-rule-interior-inset\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"row-rule-inset\",\n        \"rowRuleInset\"\n      ],\n      \"syntax\": \"<length-percentage> <length-percentage>? [/ <length-percentage> <length-percentage>?]?\"\n    }\n  ],\n  [\n    \"row-rule-inset-end\",\n    {\n      \"name\": \"row-rule-inset-end\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-inset-end\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"column-rule-edge-inset-end and column-rule-interior-inset-end for column-rule-inset-end, row-rule-edge-inset-end and row-rule-interior-inset-end for row-rule-inset-end\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"row-rule-inset-end\",\n        \"rowRuleInsetEnd\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"row-rule-inset-start\",\n    {\n      \"name\": \"row-rule-inset-start\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-inset-start\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"column-rule-edge-inset-start and column-rule-interior-inset-start for column-rule-inset-start, row-rule-edge-inset-start and row-rule-interior-inset-start for row-rule-inset-start\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"row-rule-inset-start\",\n        \"rowRuleInsetStart\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"row-rule-interior-inset\",\n    {\n      \"name\": \"row-rule-interior-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-interior-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-edge-inset-start, column-rule-interior-inset-start, row-rule-edge-inset-end, and row-rule-interior-inset-end\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"row-rule-interior-inset\",\n        \"rowRuleInteriorInset\"\n      ],\n      \"syntax\": \"<length-percentage> [ <length-percentage> ]?\"\n    }\n  ],\n  [\n    \"row-rule-interior-inset-end\",\n    {\n      \"name\": \"row-rule-interior-inset-end\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-interior-inset-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"row-rule-interior-inset-end\",\n        \"rowRuleInteriorInsetEnd\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"row-rule-interior-inset-start\",\n    {\n      \"name\": \"row-rule-interior-inset-start\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-interior-inset-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the crossing gap width\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"row-rule-interior-inset-start\",\n        \"rowRuleInteriorInsetStart\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"row-rule-style\",\n    {\n      \"name\": \"row-rule-style\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"row-rule-style\",\n        \"rowRuleStyle\"\n      ],\n      \"syntax\": \"<line-style-list> | <auto-line-style-list>\"\n    }\n  ],\n  [\n    \"row-rule-visibility-items\",\n    {\n      \"name\": \"row-rule-visibility-items\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-visibility-items\",\n      \"initial\": \"all\",\n      \"appliesTo\": \"grid containers, and multicol containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"row-rule-visibility-items\",\n        \"rowRuleVisibilityItems\"\n      ],\n      \"syntax\": \"all | around | between\"\n    }\n  ],\n  [\n    \"row-rule-width\",\n    {\n      \"name\": \"row-rule-width\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-row-rule-width\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"grid containers, flex containers, multicol containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"list of absolute lengths, snapped as a border width\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list, see § 3.4.1 Interpolation behavior.\",\n      \"styleDeclaration\": [\n        \"row-rule-width\",\n        \"rowRuleWidth\"\n      ],\n      \"syntax\": \"<line-width-list> | <auto-line-width-list>\"\n    }\n  ],\n  [\n    \"ruby-align\",\n    {\n      \"name\": \"ruby-align\",\n      \"href\": \"https://drafts.csswg.org/css-ruby-1/#propdef-ruby-align\",\n      \"initial\": \"space-around\",\n      \"appliesTo\": \"ruby bases, ruby annotations, ruby base containers, ruby annotation containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"ruby-align\",\n        \"rubyAlign\"\n      ],\n      \"syntax\": \"start | center | space-between | space-around\"\n    }\n  ],\n  [\n    \"ruby-merge\",\n    {\n      \"name\": \"ruby-merge\",\n      \"href\": \"https://drafts.csswg.org/css-ruby-1/#propdef-ruby-merge\",\n      \"initial\": \"separate\",\n      \"appliesTo\": \"interlinear ruby annotation containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"ruby-merge\",\n        \"rubyMerge\"\n      ],\n      \"syntax\": \"separate | merge | auto\"\n    }\n  ],\n  [\n    \"ruby-overhang\",\n    {\n      \"name\": \"ruby-overhang\",\n      \"href\": \"https://drafts.csswg.org/css-ruby-1/#propdef-ruby-overhang\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"ruby annotation containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"ruby-overhang\",\n        \"rubyOverhang\"\n      ],\n      \"syntax\": \"auto | none\"\n    }\n  ],\n  [\n    \"ruby-position\",\n    {\n      \"name\": \"ruby-position\",\n      \"href\": \"https://drafts.csswg.org/css-ruby-1/#propdef-ruby-position\",\n      \"initial\": \"alternate\",\n      \"appliesTo\": \"ruby annotation containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"ruby-position\",\n        \"rubyPosition\"\n      ],\n      \"syntax\": \"[ alternate || [ over | under ] ] | inter-character\"\n    }\n  ],\n  [\n    \"rule\",\n    {\n      \"name\": \"rule\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule and row-rule\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule\"\n      ],\n      \"syntax\": \"<'column-rule'>\"\n    }\n  ],\n  [\n    \"rule-break\",\n    {\n      \"name\": \"rule-break\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-break\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-break and row-rule-break\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-break\",\n        \"ruleBreak\"\n      ],\n      \"syntax\": \"<'column-rule-break'>\"\n    }\n  ],\n  [\n    \"rule-color\",\n    {\n      \"name\": \"rule-color\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-color\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-color and row-rule-color\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-color\",\n        \"ruleColor\"\n      ],\n      \"syntax\": \"<'column-rule-color'>\"\n    }\n  ],\n  [\n    \"rule-edge-inset\",\n    {\n      \"name\": \"rule-edge-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-edge-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-edge-inset and row-rule-edge-inset\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-edge-inset\",\n        \"ruleEdgeInset\"\n      ],\n      \"syntax\": \"<'column-rule-edge-inset'>\"\n    }\n  ],\n  [\n    \"rule-inset\",\n    {\n      \"name\": \"rule-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-inset and row-rule-inset\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-inset\",\n        \"ruleInset\"\n      ],\n      \"syntax\": \"<'column-rule-inset'>\"\n    }\n  ],\n  [\n    \"rule-inset-end\",\n    {\n      \"name\": \"rule-inset-end\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-inset-end\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-inset-end and row-rule-inset-end\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-inset-end\",\n        \"ruleInsetEnd\"\n      ],\n      \"syntax\": \"<'column-rule-inset-end'>\"\n    }\n  ],\n  [\n    \"rule-inset-start\",\n    {\n      \"name\": \"rule-inset-start\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-inset-start\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-inset-start and row-rule-inset-start\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-inset-start\",\n        \"ruleInsetStart\"\n      ],\n      \"syntax\": \"<'column-rule-inset-start'>\"\n    }\n  ],\n  [\n    \"rule-interior-inset\",\n    {\n      \"name\": \"rule-interior-inset\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-interior-inset\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-interior-inset and row-rule-interior-inset\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-interior-inset\",\n        \"ruleInteriorInset\"\n      ],\n      \"syntax\": \"<'column-rule-interior-inset'>\"\n    }\n  ],\n  [\n    \"rule-overlap\",\n    {\n      \"name\": \"rule-overlap\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-overlap\",\n      \"initial\": \"row-over-column\",\n      \"appliesTo\": \"grid containers, flex containers, and grid lanes containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"rule-overlap\",\n        \"ruleOverlap\"\n      ],\n      \"syntax\": \"row-over-column | column-over-row\"\n    }\n  ],\n  [\n    \"rule-style\",\n    {\n      \"name\": \"rule-style\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-style\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-style and row-rule-style\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-style\",\n        \"ruleStyle\"\n      ],\n      \"syntax\": \"<'column-rule-style'>\"\n    }\n  ],\n  [\n    \"rule-visibility-items\",\n    {\n      \"name\": \"rule-visibility-items\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-visibility-items\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-visibility-items and row-rule-visibility-items\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-visibility-items\",\n        \"ruleVisibilityItems\"\n      ],\n      \"syntax\": \"<'column-rule-visibility-items'>\"\n    }\n  ],\n  [\n    \"rule-width\",\n    {\n      \"name\": \"rule-width\",\n      \"href\": \"https://drafts.csswg.org/css-gaps-1/#propdef-rule-width\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"Same as column-rule-width and row-rule-width\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"rule-width\",\n        \"ruleWidth\"\n      ],\n      \"syntax\": \"<'column-rule-width'>\"\n    }\n  ],\n  [\n    \"rx\",\n    {\n      \"name\": \"rx\",\n      \"href\": \"https://svgwg.org/svg2-draft/geometry.html#RxProperty\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"‘ellipse’, ‘rect’ elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the width of the current SVG viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computedValue\": \"an absolute length or percentage\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"rx\"\n      ],\n      \"syntax\": \"<length-percentage> | auto\"\n    }\n  ],\n  [\n    \"ry\",\n    {\n      \"name\": \"ry\",\n      \"href\": \"https://svgwg.org/svg2-draft/geometry.html#RyProperty\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"‘ellipse’, ‘rect’\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the height of the current SVG viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computedValue\": \"an absolute length or percentage\",\n      \"animatableType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"ry\"\n      ],\n      \"syntax\": \"<length-percentage> | auto\"\n    }\n  ],\n  [\n    \"scale\",\n    {\n      \"name\": \"scale\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-2/#propdef-scale\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none, or a list of 3 <number>s\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value, but see below for none\",\n      \"styleDeclaration\": [\n        \"scale\"\n      ],\n      \"syntax\": \"none | [ <number> | <percentage> ]{1,3}\"\n    }\n  ],\n  [\n    \"scroll-behavior\",\n    {\n      \"name\": \"scroll-behavior\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-3/#propdef-scroll-behavior\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"scroll-behavior\",\n        \"scrollBehavior\"\n      ],\n      \"syntax\": \"auto | smooth\"\n    }\n  ],\n  [\n    \"scroll-initial-target\",\n    {\n      \"name\": \"scroll-initial-target\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-2/#propdef-scroll-initial-target\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"none\",\n      \"styleDeclaration\": [\n        \"scroll-initial-target\",\n        \"scrollInitialTarget\"\n      ],\n      \"syntax\": \"none | nearest\"\n    }\n  ],\n  [\n    \"scroll-margin\",\n    {\n      \"name\": \"scroll-margin\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"per side, an absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"scroll-margin\",\n        \"scrollMargin\"\n      ],\n      \"syntax\": \"<length>{1,4}\"\n    }\n  ],\n  [\n    \"scroll-margin-block\",\n    {\n      \"name\": \"scroll-margin-block\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"by computed value type\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"scroll-margin-block\",\n        \"scrollMarginBlock\"\n      ],\n      \"syntax\": \"<length>{1,2}\"\n    }\n  ],\n  [\n    \"scroll-margin-block-end\",\n    {\n      \"name\": \"scroll-margin-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-block-end\",\n        \"scrollMarginBlockEnd\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-margin-block-start\",\n    {\n      \"name\": \"scroll-margin-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-block-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-block-start\",\n        \"scrollMarginBlockStart\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-margin-bottom\",\n    {\n      \"name\": \"scroll-margin-bottom\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-bottom\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-bottom\",\n        \"scrollMarginBottom\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-margin-inline\",\n    {\n      \"name\": \"scroll-margin-inline\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"by computed value type\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"scroll-margin-inline\",\n        \"scrollMarginInline\"\n      ],\n      \"syntax\": \"<length>{1,2}\"\n    }\n  ],\n  [\n    \"scroll-margin-inline-end\",\n    {\n      \"name\": \"scroll-margin-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline-end\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-inline-end\",\n        \"scrollMarginInlineEnd\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-margin-inline-start\",\n    {\n      \"name\": \"scroll-margin-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-inline-start\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-inline-start\",\n        \"scrollMarginInlineStart\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-margin-left\",\n    {\n      \"name\": \"scroll-margin-left\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-left\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-left\",\n        \"scrollMarginLeft\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-margin-right\",\n    {\n      \"name\": \"scroll-margin-right\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-right\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-right\",\n        \"scrollMarginRight\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-margin-top\",\n    {\n      \"name\": \"scroll-margin-top\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-margin-top\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-margin\",\n      \"styleDeclaration\": [\n        \"scroll-margin-top\",\n        \"scrollMarginTop\"\n      ],\n      \"syntax\": \"<length>\"\n    }\n  ],\n  [\n    \"scroll-marker-group\",\n    {\n      \"name\": \"scroll-marker-group\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-5/#propdef-scroll-marker-group\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"scroll-marker-group\",\n        \"scrollMarkerGroup\"\n      ],\n      \"syntax\": \"none | before | after\"\n    }\n  ],\n  [\n    \"scroll-padding\",\n    {\n      \"name\": \"scroll-padding\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the corresponding dimension of the scroll container’s scrollport\",\n      \"computedValue\": \"per side, either the keyword auto or a computed <length-percentage> value\",\n      \"animationType\": \"by computed value type\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"scroll-padding\",\n        \"scrollPadding\"\n      ],\n      \"syntax\": \"[ auto | <length-percentage [0,∞]> ]{1,4}\"\n    }\n  ],\n  [\n    \"scroll-padding-block\",\n    {\n      \"name\": \"scroll-padding-block\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"by computed value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"scroll-padding-block\",\n        \"scrollPaddingBlock\"\n      ],\n      \"syntax\": \"[ auto | <length-percentage [0,∞]> ]{1,2}\"\n    }\n  ],\n  [\n    \"scroll-padding-block-end\",\n    {\n      \"name\": \"scroll-padding-block-end\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block-end\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-block-end\",\n        \"scrollPaddingBlockEnd\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-padding-block-start\",\n    {\n      \"name\": \"scroll-padding-block-start\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-block-start\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-block-start\",\n        \"scrollPaddingBlockStart\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-padding-bottom\",\n    {\n      \"name\": \"scroll-padding-bottom\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-bottom\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-bottom\",\n        \"scrollPaddingBottom\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-padding-inline\",\n    {\n      \"name\": \"scroll-padding-inline\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"by computed value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"scroll-padding-inline\",\n        \"scrollPaddingInline\"\n      ],\n      \"syntax\": \"[ auto | <length-percentage [0,∞]> ]{1,2}\"\n    }\n  ],\n  [\n    \"scroll-padding-inline-end\",\n    {\n      \"name\": \"scroll-padding-inline-end\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline-end\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-inline-end\",\n        \"scrollPaddingInlineEnd\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-padding-inline-start\",\n    {\n      \"name\": \"scroll-padding-inline-start\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-inline-start\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-inline-start\",\n        \"scrollPaddingInlineStart\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-padding-left\",\n    {\n      \"name\": \"scroll-padding-left\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-left\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-left\",\n        \"scrollPaddingLeft\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-padding-right\",\n    {\n      \"name\": \"scroll-padding-right\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-right\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-right\",\n        \"scrollPaddingRight\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-padding-top\",\n    {\n      \"name\": \"scroll-padding-top\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-padding-top\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the scroll container’s scrollport\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"scroll-padding\",\n      \"styleDeclaration\": [\n        \"scroll-padding-top\",\n        \"scrollPaddingTop\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"scroll-snap-align\",\n    {\n      \"name\": \"scroll-snap-align\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-snap-align\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"two keywords\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"scroll-snap-align\",\n        \"scrollSnapAlign\"\n      ],\n      \"syntax\": \"[ none | start | end | center ]{1,2}\"\n    }\n  ],\n  [\n    \"scroll-snap-stop\",\n    {\n      \"name\": \"scroll-snap-stop\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-snap-stop\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"scroll-snap-stop\",\n        \"scrollSnapStop\"\n      ],\n      \"syntax\": \"normal | always\"\n    }\n  ],\n  [\n    \"scroll-snap-type\",\n    {\n      \"name\": \"scroll-snap-type\",\n      \"href\": \"https://drafts.csswg.org/css-scroll-snap-1/#propdef-scroll-snap-type\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"scroll-snap-type\",\n        \"scrollSnapType\"\n      ],\n      \"syntax\": \"none | [ x | y | block | inline | both ] [ mandatory | proximity ]?\"\n    }\n  ],\n  [\n    \"scroll-target-group\",\n    {\n      \"name\": \"scroll-target-group\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-5/#propdef-scroll-target-group\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"scroll-target-group\",\n        \"scrollTargetGroup\"\n      ],\n      \"syntax\": \"none | auto\"\n    }\n  ],\n  [\n    \"scroll-timeline\",\n    {\n      \"name\": \"scroll-timeline\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-scroll-timeline\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"not animatable\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"scroll-timeline\",\n        \"scrollTimeline\"\n      ],\n      \"syntax\": \"[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#\"\n    }\n  ],\n  [\n    \"scroll-timeline-axis\",\n    {\n      \"name\": \"scroll-timeline-axis\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-scroll-timeline-axis\",\n      \"initial\": \"block\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"a list of the keywords specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"scroll-timeline-axis\",\n        \"scrollTimelineAxis\"\n      ],\n      \"syntax\": \"[ block | inline | x | y ]#\"\n    }\n  ],\n  [\n    \"scroll-timeline-name\",\n    {\n      \"name\": \"scroll-timeline-name\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-scroll-timeline-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list of CSS identifiers\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"scroll-timeline-name\",\n        \"scrollTimelineName\"\n      ],\n      \"syntax\": \"[ none | <dashed-ident> ]#\"\n    }\n  ],\n  [\n    \"scrollbar-color\",\n    {\n      \"name\": \"scrollbar-color\",\n      \"href\": \"https://drafts.csswg.org/css-scrollbars-1/#propdef-scrollbar-color\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword or two computed colors\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"scrollbar-color\",\n        \"scrollbarColor\"\n      ],\n      \"syntax\": \"auto | <color>{2}\"\n    }\n  ],\n  [\n    \"scrollbar-gutter\",\n    {\n      \"name\": \"scrollbar-gutter\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-3/#propdef-scrollbar-gutter\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"scrollbar-gutter\",\n        \"scrollbarGutter\"\n      ],\n      \"syntax\": \"auto | stable && both-edges?\"\n    }\n  ],\n  [\n    \"scrollbar-width\",\n    {\n      \"name\": \"scrollbar-width\",\n      \"href\": \"https://drafts.csswg.org/css-scrollbars-1/#propdef-scrollbar-width\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"scrollbar-width\",\n        \"scrollbarWidth\"\n      ],\n      \"syntax\": \"auto | thin | none\"\n    }\n  ],\n  [\n    \"shape-image-threshold\",\n    {\n      \"name\": \"shape-image-threshold\",\n      \"href\": \"https://drafts.csswg.org/css-shapes-1/#propdef-shape-image-threshold\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"floats\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified number, clamped to the range [0,1]\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"shape-image-threshold\",\n        \"shapeImageThreshold\"\n      ],\n      \"syntax\": \"<opacity-value>\"\n    }\n  ],\n  [\n    \"shape-inside\",\n    {\n      \"name\": \"shape-inside\",\n      \"href\": \"https://drafts.csswg.org/css-shapes-2/#propdef-shape-inside\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"computed lengths for <basic-shape>, the absolute URL for <url>, otherwise as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"as defined for <basic-shape>, otherwise discrete\",\n      \"styleDeclaration\": [\n        \"shape-inside\",\n        \"shapeInside\"\n      ],\n      \"syntax\": \"auto | outside-shape | [ <basic-shape> || shape-box ] | <image> | display\"\n    }\n  ],\n  [\n    \"shape-margin\",\n    {\n      \"name\": \"shape-margin\",\n      \"href\": \"https://drafts.csswg.org/css-shapes-1/#propdef-shape-margin\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"floats and initial letter boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the inline size of the containing block\",\n      \"computedValue\": \"computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"shape-margin\",\n        \"shapeMargin\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"shape-outside\",\n    {\n      \"name\": \"shape-outside\",\n      \"href\": \"https://drafts.csswg.org/css-shapes-1/#propdef-shape-outside\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"floats and initial letter boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as defined for <basic-shape> (with <shape-box> following, if supplied); else the computed <image>; else the keyword as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"as defined for <basic-shape>, otherwise discrete\",\n      \"styleDeclaration\": [\n        \"shape-outside\",\n        \"shapeOutside\"\n      ],\n      \"syntax\": \"none | [ <basic-shape> || <shape-box> ] | <image>\"\n    }\n  ],\n  [\n    \"shape-padding\",\n    {\n      \"name\": \"shape-padding\",\n      \"href\": \"https://drafts.csswg.org/css-shapes-2/#propdef-shape-padding\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"block-level elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the inline size of the containing block\",\n      \"computedValue\": \"computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"shape-padding\",\n        \"shapePadding\"\n      ],\n      \"syntax\": \"<length-percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"shape-rendering\",\n    {\n      \"name\": \"shape-rendering\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#ShapeRenderingProperty\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"shape-rendering\",\n        \"shapeRendering\"\n      ],\n      \"syntax\": \"auto | optimizeSpeed | crispEdges | geometricPrecision\"\n    }\n  ],\n  [\n    \"shape-subtract\",\n    {\n      \"name\": \"shape-subtract\",\n      \"href\": \"https://svgwg.org/svg2-draft/text.html#ShapesubtractProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"‘text’ elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Relative to the ‘viewBox’\",\n      \"media\": \"visual\",\n      \"computedValue\": \"computed lengths for any <basic-shape>, the absolute URI for <uri>, otherwise as specified\",\n      \"animationType\": \"See Interpolation of Basic Shapes\",\n      \"styleDeclaration\": [\n        \"shape-subtract\",\n        \"shapeSubtract\"\n      ],\n      \"syntax\": \"none | [ <basic-shape> | <uri> ]+\"\n    }\n  ],\n  [\n    \"slider-orientation\",\n    {\n      \"name\": \"slider-orientation\",\n      \"href\": \"https://drafts.csswg.org/css-forms-1/#propdef-slider-orientation\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"slider-orientation\",\n        \"sliderOrientation\"\n      ],\n      \"syntax\": \"auto | left-to-right | right-to-left | top-to-bottom | bottom-to-top\"\n    }\n  ],\n  [\n    \"spatial-navigation-action\",\n    {\n      \"name\": \"spatial-navigation-action\",\n      \"href\": \"https://drafts.csswg.org/css-nav-1/#propdef-spatial-navigation-action\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"scroll containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"spatial-navigation-action\",\n        \"spatialNavigationAction\"\n      ],\n      \"syntax\": \"auto | focus | scroll\"\n    }\n  ],\n  [\n    \"spatial-navigation-contain\",\n    {\n      \"name\": \"spatial-navigation-contain\",\n      \"href\": \"https://drafts.csswg.org/css-nav-1/#propdef-spatial-navigation-contain\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"spatial-navigation-contain\",\n        \"spatialNavigationContain\"\n      ],\n      \"syntax\": \"auto | contain\"\n    }\n  ],\n  [\n    \"spatial-navigation-function\",\n    {\n      \"name\": \"spatial-navigation-function\",\n      \"href\": \"https://drafts.csswg.org/css-nav-1/#propdef-spatial-navigation-function\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"spatial navigation containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"spatial-navigation-function\",\n        \"spatialNavigationFunction\"\n      ],\n      \"syntax\": \"normal | grid\"\n    }\n  ],\n  [\n    \"speak\",\n    {\n      \"name\": \"speak\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-speak\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"speak\"\n      ],\n      \"syntax\": \"auto | never | always\"\n    }\n  ],\n  [\n    \"speak-as\",\n    {\n      \"name\": \"speak-as\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-speak-as\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"speak-as\",\n        \"speakAs\"\n      ],\n      \"syntax\": \"normal | spell-out || digits || [ literal-punctuation | no-punctuation ]\"\n    }\n  ],\n  [\n    \"stop-color\",\n    {\n      \"name\": \"stop-color\",\n      \"href\": \"https://svgwg.org/svg2-draft/pservers.html#StopColorProperty\",\n      \"styleDeclaration\": [\n        \"stop-color\",\n        \"stopColor\"\n      ],\n      \"syntax\": \"<'color'>\"\n    }\n  ],\n  [\n    \"stop-opacity\",\n    {\n      \"name\": \"stop-opacity\",\n      \"href\": \"https://svgwg.org/svg2-draft/pservers.html#StopOpacityProperty\",\n      \"styleDeclaration\": [\n        \"stop-opacity\",\n        \"stopOpacity\"\n      ],\n      \"syntax\": \"<'opacity'>\"\n    }\n  ],\n  [\n    \"string-set\",\n    {\n      \"name\": \"string-set\",\n      \"href\": \"https://drafts.csswg.org/css-content-3/#propdef-string-set\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements, but not pseudo-elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword none or a list, each item an identifier paired with a list of string values\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"string-set\",\n        \"stringSet\"\n      ],\n      \"syntax\": \"none | [ <custom-ident> <string>+ ]#\"\n    }\n  ],\n  [\n    \"stroke\",\n    {\n      \"name\": \"stroke\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#StrokeProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"shapes and text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified, but with <color> values computed and <url> values made absolute\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"stroke\"\n      ],\n      \"syntax\": \"<paint>\"\n    }\n  ],\n  [\n    \"stroke-align\",\n    {\n      \"name\": \"stroke-align\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-align\",\n      \"initial\": \"center\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-align\",\n        \"strokeAlign\"\n      ],\n      \"syntax\": \"center | inset | outset\"\n    }\n  ],\n  [\n    \"stroke-alignment\",\n    {\n      \"name\": \"stroke-alignment\",\n      \"href\": \"https://svgwg.org/specs/strokes/#StrokeAlignmentProperty\",\n      \"initial\": \"center\",\n      \"appliesTo\": \"shapes and text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computed value\": \"as specified\",\n      \"animatable\": \"yes\",\n      \"styleDeclaration\": [\n        \"stroke-alignment\",\n        \"strokeAlignment\"\n      ],\n      \"syntax\": \"center | inner | outer\"\n    }\n  ],\n  [\n    \"stroke-break\",\n    {\n      \"name\": \"stroke-break\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-break\",\n      \"initial\": \"bounding-box\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"?\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-break\",\n        \"strokeBreak\"\n      ],\n      \"syntax\": \"bounding-box | slice | clone\"\n    }\n  ],\n  [\n    \"stroke-color\",\n    {\n      \"name\": \"stroke-color\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-color\",\n      \"initial\": \"transparent\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-color\",\n        \"strokeColor\"\n      ],\n      \"syntax\": \"<color>#\"\n    }\n  ],\n  [\n    \"stroke-dash-corner\",\n    {\n      \"name\": \"stroke-dash-corner\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-dash-corner\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value, with lengths made absolute\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value if <length>, otherwise discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-dash-corner\",\n        \"strokeDashCorner\"\n      ],\n      \"syntax\": \"none | <length>\"\n    }\n  ],\n  [\n    \"stroke-dash-justify\",\n    {\n      \"name\": \"stroke-dash-justify\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-dash-justify\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value, with lengths made absolute\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-dash-justify\",\n        \"strokeDashJustify\"\n      ],\n      \"syntax\": \"none | [ stretch | compress ] || [ dashes || gaps ]\"\n    }\n  ],\n  [\n    \"stroke-dashadjust\",\n    {\n      \"name\": \"stroke-dashadjust\",\n      \"href\": \"https://svgwg.org/specs/strokes/#StrokeDashadjustProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"shapes and text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computed value\": \"as specified\",\n      \"animatable\": \"yes\",\n      \"styleDeclaration\": [\n        \"stroke-dashadjust\",\n        \"strokeDashadjust\"\n      ],\n      \"syntax\": \"none | [stretch | compress] [dashes | gaps]?\"\n    }\n  ],\n  [\n    \"stroke-dasharray\",\n    {\n      \"name\": \"stroke-dasharray\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-dasharray\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"relative to the scaled viewport size\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-dasharray\",\n        \"strokeDasharray\"\n      ],\n      \"syntax\": \"none | [<length-percentage> | <number>]+#\"\n    }\n  ],\n  [\n    \"stroke-dashcorner\",\n    {\n      \"name\": \"stroke-dashcorner\",\n      \"href\": \"https://svgwg.org/specs/strokes/#StrokeDashcornerProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"shapes and text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"refer to the size of the current viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computed value\": \"absolute length or keyword specified\",\n      \"animatable\": \"yes\",\n      \"styleDeclaration\": [\n        \"stroke-dashcorner\",\n        \"strokeDashcorner\"\n      ],\n      \"syntax\": \"none | <length>\"\n    }\n  ],\n  [\n    \"stroke-dashoffset\",\n    {\n      \"name\": \"stroke-dashoffset\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-dashoffset\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"relative to the scaled viewport size\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-dashoffset\",\n        \"strokeDashoffset\"\n      ],\n      \"syntax\": \"<length-percentage> | <number>\"\n    }\n  ],\n  [\n    \"stroke-image\",\n    {\n      \"name\": \"stroke-image\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-image\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified, with any <image> computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-image\",\n        \"strokeImage\"\n      ],\n      \"syntax\": \"<paint>#\"\n    }\n  ],\n  [\n    \"stroke-linecap\",\n    {\n      \"name\": \"stroke-linecap\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-linecap\",\n      \"initial\": \"butt\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-linecap\",\n        \"strokeLinecap\"\n      ],\n      \"syntax\": \"butt | round | square\"\n    }\n  ],\n  [\n    \"stroke-linejoin\",\n    {\n      \"name\": \"stroke-linejoin\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-linejoin\",\n      \"initial\": \"miter\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-linejoin\",\n        \"strokeLinejoin\"\n      ],\n      \"syntax\": \"[ crop | arcs | miter ] || [ bevel | round | fallback ]\"\n    }\n  ],\n  [\n    \"stroke-miterlimit\",\n    {\n      \"name\": \"stroke-miterlimit\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-miterlimit\",\n      \"initial\": \"4\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"a number\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-miterlimit\",\n        \"strokeMiterlimit\"\n      ],\n      \"syntax\": \"<number>\"\n    }\n  ],\n  [\n    \"stroke-opacity\",\n    {\n      \"name\": \"stroke-opacity\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-opacity\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the specified value converted to a <number>, clamped to the range [0,1]\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-opacity\",\n        \"strokeOpacity\"\n      ],\n      \"syntax\": \"<'opacity'>\"\n    }\n  ],\n  [\n    \"stroke-origin\",\n    {\n      \"name\": \"stroke-origin\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-origin\",\n      \"initial\": \"match-parent\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-origin\",\n        \"strokeOrigin\"\n      ],\n      \"syntax\": \"match-parent | fill-box | stroke-box | content-box | padding-box | border-box\"\n    }\n  ],\n  [\n    \"stroke-position\",\n    {\n      \"name\": \"stroke-position\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-position\",\n      \"initial\": \"0% 0%\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"A list, each item consisting of: a pair of offsets (horizontal and vertical) from the top left origin each given as a combination of an absolute length and a percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-position\",\n        \"strokePosition\"\n      ],\n      \"syntax\": \"<position>#\"\n    }\n  ],\n  [\n    \"stroke-repeat\",\n    {\n      \"name\": \"stroke-repeat\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-repeat\",\n      \"initial\": \"repeat\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"A list, each item consisting of: two keywords, one per dimension\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-repeat\",\n        \"strokeRepeat\"\n      ],\n      \"syntax\": \"<repeat-style>#\"\n    }\n  ],\n  [\n    \"stroke-size\",\n    {\n      \"name\": \"stroke-size\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-size\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified, but with lengths made absolute and omitted auto keywords filled in\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"repeatable list\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-size\",\n        \"strokeSize\"\n      ],\n      \"syntax\": \"<bg-size>#\"\n    }\n  ],\n  [\n    \"stroke-width\",\n    {\n      \"name\": \"stroke-width\",\n      \"href\": \"https://drafts.csswg.org/fill-stroke-3/#propdef-stroke-width\",\n      \"initial\": \"1px\",\n      \"appliesTo\": \"text and SVG shapes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"relative to the scaled viewport size\",\n      \"computedValue\": \"the absolute length, or percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"stroke-width\",\n        \"strokeWidth\"\n      ],\n      \"syntax\": \"[<length-percentage> | <number>]#\"\n    }\n  ],\n  [\n    \"tab-size\",\n    {\n      \"name\": \"tab-size\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-tab-size\",\n      \"initial\": \"8\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the specified number or absolute length\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"tab-size\",\n        \"tabSize\"\n      ],\n      \"syntax\": \"<number [0,∞]> | <length [0,∞]>\"\n    }\n  ],\n  [\n    \"table-layout\",\n    {\n      \"name\": \"table-layout\",\n      \"href\": \"https://drafts.csswg.org/css-tables-3/#propdef-table-layout\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"table grid boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"table-layout\",\n        \"tableLayout\"\n      ],\n      \"syntax\": \"auto | fixed\"\n    }\n  ],\n  [\n    \"text-align\",\n    {\n      \"name\": \"text-align\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-align\",\n      \"initial\": \"start\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"discrete\",\n      \"canonicalOrder\": \"n/a\",\n      \"styleDeclaration\": [\n        \"text-align\",\n        \"textAlign\"\n      ],\n      \"syntax\": \"start | end | left | right | center | <string> | justify | match-parent | justify-all\"\n    }\n  ],\n  [\n    \"text-align-all\",\n    {\n      \"name\": \"text-align-all\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-align-all\",\n      \"initial\": \"start\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"keyword as specified, except for match-parent which computes as defined above\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-align-all\",\n        \"textAlignAll\"\n      ],\n      \"syntax\": \"start | end | left | right | center | <string> | justify | match-parent\"\n    }\n  ],\n  [\n    \"text-align-last\",\n    {\n      \"name\": \"text-align-last\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-align-last\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"keyword as specified, except for match-parent which computes as defined above\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-align-last\",\n        \"textAlignLast\"\n      ],\n      \"syntax\": \"auto | start | end | left | right | center | justify | match-parent\"\n    }\n  ],\n  [\n    \"text-anchor\",\n    {\n      \"name\": \"text-anchor\",\n      \"href\": \"https://svgwg.org/svg2-draft/text.html#TextAnchorProperty\",\n      \"initial\": \"start\",\n      \"appliesTo\": \"text content elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-anchor\",\n        \"textAnchor\"\n      ],\n      \"syntax\": \"start | middle | end\"\n    }\n  ],\n  [\n    \"text-autospace\",\n    {\n      \"name\": \"text-autospace\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-autospace\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-autospace\",\n        \"textAutospace\"\n      ],\n      \"syntax\": \"normal | <autospace> | auto\"\n    }\n  ],\n  [\n    \"text-box\",\n    {\n      \"name\": \"text-box\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-text-box\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"block containers, multi-column containers, and inline boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-box\",\n        \"textBox\"\n      ],\n      \"syntax\": \"normal | <'text-box-trim'> || <'text-box-edge'>\"\n    }\n  ],\n  [\n    \"text-box-edge\",\n    {\n      \"name\": \"text-box-edge\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-text-box-edge\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers and inline boxes\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-box-edge\",\n        \"textBoxEdge\"\n      ],\n      \"syntax\": \"auto | <text-edge>\"\n    }\n  ],\n  [\n    \"text-box-trim\",\n    {\n      \"name\": \"text-box-trim\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-text-box-trim\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block containers, multi-column containers, and inline boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-box-trim\",\n        \"textBoxTrim\"\n      ],\n      \"syntax\": \"none | trim-start | trim-end | trim-both\"\n    }\n  ],\n  [\n    \"text-combine-upright\",\n    {\n      \"name\": \"text-combine-upright\",\n      \"href\": \"https://drafts.csswg.org/css-writing-modes-4/#propdef-text-combine-upright\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"inline boxes and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword, plus integer if digits\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"text-combine-upright\",\n        \"textCombineUpright\"\n      ],\n      \"syntax\": \"none | all | [ digits <integer [2,4]>? ]\"\n    }\n  ],\n  [\n    \"text-decoration\",\n    {\n      \"name\": \"text-decoration\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"text-decoration\",\n        \"textDecoration\"\n      ],\n      \"syntax\": \"<'text-decoration-line'> || <'text-decoration-thickness'> || <'text-decoration-style'> || <'text-decoration-color'>\"\n    }\n  ],\n  [\n    \"text-decoration-color\",\n    {\n      \"name\": \"text-decoration-color\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"text-decoration-color\",\n        \"textDecorationColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"text-decoration-inset\",\n    {\n      \"name\": \"text-decoration-inset\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-inset\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword or absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"text-decoration-inset\",\n        \"textDecorationInset\"\n      ],\n      \"syntax\": \"<length>{1,2} | auto\"\n    }\n  ],\n  [\n    \"text-decoration-line\",\n    {\n      \"name\": \"text-decoration-line\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-line\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no (but see prose, above)\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-decoration-line\",\n        \"textDecorationLine\"\n      ],\n      \"syntax\": \"none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error\"\n    }\n  ],\n  [\n    \"text-decoration-skip\",\n    {\n      \"name\": \"text-decoration-skip\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip\",\n      \"initial\": \"See individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"See individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-decoration-skip\",\n        \"textDecorationSkip\"\n      ],\n      \"syntax\": \"none | auto\"\n    }\n  ],\n  [\n    \"text-decoration-skip-box\",\n    {\n      \"name\": \"text-decoration-skip-box\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-box\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-decoration-skip-box\",\n        \"textDecorationSkipBox\"\n      ],\n      \"syntax\": \"none | all\"\n    }\n  ],\n  [\n    \"text-decoration-skip-ink\",\n    {\n      \"name\": \"text-decoration-skip-ink\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-ink\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-decoration-skip-ink\",\n        \"textDecorationSkipInk\"\n      ],\n      \"syntax\": \"auto | none | all\"\n    }\n  ],\n  [\n    \"text-decoration-skip-self\",\n    {\n      \"name\": \"text-decoration-skip-self\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-self\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s) except for skip-all, see below\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-decoration-skip-self\",\n        \"textDecorationSkipSelf\"\n      ],\n      \"syntax\": \"auto | skip-all | [ skip-underline || skip-overline || skip-line-through ] | no-skip\"\n    }\n  ],\n  [\n    \"text-decoration-skip-spaces\",\n    {\n      \"name\": \"text-decoration-skip-spaces\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-spaces\",\n      \"initial\": \"start end\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-decoration-skip-spaces\",\n        \"textDecorationSkipSpaces\"\n      ],\n      \"syntax\": \"none | all | [ start || end ]\"\n    }\n  ],\n  [\n    \"text-decoration-style\",\n    {\n      \"name\": \"text-decoration-style\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-style\",\n      \"initial\": \"solid\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-decoration-style\",\n        \"textDecorationStyle\"\n      ],\n      \"syntax\": \"solid | double | dotted | dashed | wavy\"\n    }\n  ],\n  [\n    \"text-decoration-thickness\",\n    {\n      \"name\": \"text-decoration-thickness\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-thickness\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"text-decoration-thickness\",\n        \"textDecorationThickness\"\n      ],\n      \"syntax\": \"auto | from-font | <length-percentage>\"\n    }\n  ],\n  [\n    \"text-emphasis\",\n    {\n      \"name\": \"text-emphasis\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"text-emphasis\",\n        \"textEmphasis\"\n      ],\n      \"syntax\": \"<'text-emphasis-style'> || <'text-emphasis-color'>\"\n    }\n  ],\n  [\n    \"text-emphasis-color\",\n    {\n      \"name\": \"text-emphasis-color\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-color\",\n      \"initial\": \"currentcolor\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"computed color\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"text-emphasis-color\",\n        \"textEmphasisColor\"\n      ],\n      \"syntax\": \"<color>\"\n    }\n  ],\n  [\n    \"text-emphasis-position\",\n    {\n      \"name\": \"text-emphasis-position\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-position\",\n      \"initial\": \"over right\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-emphasis-position\",\n        \"textEmphasisPosition\"\n      ],\n      \"syntax\": \"[ over | under ] && [ right | left ]?\"\n    }\n  ],\n  [\n    \"text-emphasis-skip\",\n    {\n      \"name\": \"text-emphasis-skip\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-skip\",\n      \"initial\": \"spaces punctuation\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-emphasis-skip\",\n        \"textEmphasisSkip\"\n      ],\n      \"syntax\": \"spaces || punctuation || symbols || narrow\"\n    }\n  ],\n  [\n    \"text-emphasis-style\",\n    {\n      \"name\": \"text-emphasis-style\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-emphasis-style\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none, a pair of keywords representing the shape and fill, or a string\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-emphasis-style\",\n        \"textEmphasisStyle\"\n      ],\n      \"syntax\": \"none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>\"\n    }\n  ],\n  [\n    \"text-group-align\",\n    {\n      \"name\": \"text-group-align\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-group-align\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-group-align\",\n        \"textGroupAlign\"\n      ],\n      \"syntax\": \"none | start | end | left | right | center\"\n    }\n  ],\n  [\n    \"text-indent\",\n    {\n      \"name\": \"text-indent\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-indent\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"refers to block container’s own inline-axis inner size\",\n      \"computedValue\": \"computed <length-percentage> value, plus any specified keywords\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"text-indent\",\n        \"textIndent\"\n      ],\n      \"syntax\": \"[ <length-percentage> ] && hanging? && each-line?\"\n    }\n  ],\n  [\n    \"text-justify\",\n    {\n      \"name\": \"text-justify\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-justify\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword (except for the distribute legacy value)\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-justify\",\n        \"textJustify\"\n      ],\n      \"syntax\": \"[ auto | none | inter-word | inter-character | ruby ] || no-compress\"\n    }\n  ],\n  [\n    \"text-orientation\",\n    {\n      \"name\": \"text-orientation\",\n      \"href\": \"https://drafts.csswg.org/css-writing-modes-4/#propdef-text-orientation\",\n      \"initial\": \"mixed\",\n      \"appliesTo\": \"all elements except table row groups, rows, column groups, and columns; and text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"text-orientation\",\n        \"textOrientation\"\n      ],\n      \"syntax\": \"mixed | upright | sideways\"\n    }\n  ],\n  [\n    \"text-overflow\",\n    {\n      \"name\": \"text-overflow\",\n      \"href\": \"https://drafts.csswg.org/css-overflow-4/#propdef-text-overflow\",\n      \"initial\": \"clip\",\n      \"appliesTo\": \"block containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the width of the line box\",\n      \"computedValue\": \"as specified, with lengths made absolute\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"text-overflow\",\n        \"textOverflow\"\n      ],\n      \"syntax\": \"[ clip | ellipsis | <string> | fade | <fade()> ]{1,2}\"\n    }\n  ],\n  [\n    \"text-rendering\",\n    {\n      \"name\": \"text-rendering\",\n      \"href\": \"https://svgwg.org/svg2-draft/painting.html#TextRenderingProperty\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"‘text’\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-rendering\",\n        \"textRendering\"\n      ],\n      \"syntax\": \"auto | optimizeSpeed | optimizeLegibility | geometricPrecision\"\n    }\n  ],\n  [\n    \"text-shadow\",\n    {\n      \"name\": \"text-shadow\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-shadow\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"either the keyword none or a list, each item consisting of four absolute lengths plus a computed color and optionally also an inset keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"as shadow list\",\n      \"styleDeclaration\": [\n        \"text-shadow\",\n        \"textShadow\"\n      ],\n      \"syntax\": \"none | <shadow>#\"\n    }\n  ],\n  [\n    \"text-size-adjust\",\n    {\n      \"name\": \"text-size-adjust\",\n      \"href\": \"https://drafts.csswg.org/css-size-adjust-1/#propdef-text-size-adjust\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"see below\",\n      \"computedValue\": \"specified keyword or percentage\",\n      \"canonicalOrder\": \"N/A\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"text-size-adjust\",\n        \"textSizeAdjust\"\n      ],\n      \"syntax\": \"auto | none | <percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"text-spacing\",\n    {\n      \"name\": \"text-spacing\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-spacing\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"animationType\": \"discrete\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"text-spacing\",\n        \"textSpacing\"\n      ],\n      \"syntax\": \"none | auto | <spacing-trim> || <autospace>\"\n    }\n  ],\n  [\n    \"text-spacing-trim\",\n    {\n      \"name\": \"text-spacing-trim\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-spacing-trim\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-spacing-trim\",\n        \"textSpacingTrim\"\n      ],\n      \"syntax\": \"<spacing-trim> | auto\"\n    }\n  ],\n  [\n    \"text-transform\",\n    {\n      \"name\": \"text-transform\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-transform\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-transform\",\n        \"textTransform\"\n      ],\n      \"syntax\": \"none | [capitalize | uppercase | lowercase ] || full-width || full-size-kana | math-auto\"\n    }\n  ],\n  [\n    \"text-underline-offset\",\n    {\n      \"name\": \"text-underline-offset\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-underline-offset\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"text-underline-offset\",\n        \"textUnderlineOffset\"\n      ],\n      \"syntax\": \"auto | <length-percentage>\"\n    }\n  ],\n  [\n    \"text-underline-position\",\n    {\n      \"name\": \"text-underline-position\",\n      \"href\": \"https://drafts.csswg.org/css-text-decor-4/#propdef-text-underline-position\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-underline-position\",\n        \"textUnderlinePosition\"\n      ],\n      \"syntax\": \"auto | [ from-font | under ] || [ left | right ]\"\n    }\n  ],\n  [\n    \"text-wrap\",\n    {\n      \"name\": \"text-wrap\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-wrap\",\n      \"initial\": \"wrap\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"see individual properties\",\n      \"styleDeclaration\": [\n        \"text-wrap\",\n        \"textWrap\"\n      ],\n      \"syntax\": \"<'text-wrap-mode'> || <'text-wrap-style'>\"\n    }\n  ],\n  [\n    \"text-wrap-mode\",\n    {\n      \"name\": \"text-wrap-mode\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-wrap-mode\",\n      \"initial\": \"wrap\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-wrap-mode\",\n        \"textWrapMode\"\n      ],\n      \"syntax\": \"wrap | nowrap\"\n    }\n  ],\n  [\n    \"text-wrap-style\",\n    {\n      \"name\": \"text-wrap-style\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-text-wrap-style\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block containers hat establish an inline formatting context\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"text-wrap-style\",\n        \"textWrapStyle\"\n      ],\n      \"syntax\": \"auto | balance | stable | pretty | avoid-orphans\"\n    }\n  ],\n  [\n    \"timeline-scope\",\n    {\n      \"name\": \"timeline-scope\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-timeline-scope\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list of CSS identifiers\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"timeline-scope\",\n        \"timelineScope\"\n      ],\n      \"syntax\": \"none | all | <dashed-ident>#\"\n    }\n  ],\n  [\n    \"timeline-trigger\",\n    {\n      \"name\": \"timeline-trigger\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"timeline-trigger\",\n        \"timelineTrigger\"\n      ],\n      \"syntax\": \"none | [ <'timeline-trigger-name'> <'timeline-trigger-source'> <'timeline-trigger-range'> [ '/' <'timeline-trigger-exit-range'> ]? ]#\"\n    }\n  ],\n  [\n    \"timeline-trigger-exit-range\",\n    {\n      \"name\": \"timeline-trigger-exit-range\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-exit-range\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-exit-range\",\n        \"timelineTriggerExitRange\"\n      ],\n      \"syntax\": \"[ <'timeline-trigger-exit-range-start'> <'timeline-trigger-exit-range-end'>? ]#\"\n    }\n  ],\n  [\n    \"timeline-trigger-exit-range-end\",\n    {\n      \"name\": \"timeline-trigger-exit-range-end\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-exit-range-end\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the specified named timeline range if one was specified, else to the entire timeline\",\n      \"computedValue\": \"list, each item either the keyword normal or a timeline range and progress percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-exit-range-end\",\n        \"timelineTriggerExitRangeEnd\"\n      ],\n      \"syntax\": \"[ auto | normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#\"\n    }\n  ],\n  [\n    \"timeline-trigger-exit-range-start\",\n    {\n      \"name\": \"timeline-trigger-exit-range-start\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-exit-range-start\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the specified named timeline range if one was specified, else to the entire timeline\",\n      \"computedValue\": \"list, each item either the keyword normal or a timeline range and progress percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-exit-range-start\",\n        \"timelineTriggerExitRangeStart\"\n      ],\n      \"syntax\": \"[ auto | normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#\"\n    }\n  ],\n  [\n    \"timeline-trigger-name\",\n    {\n      \"name\": \"timeline-trigger-name\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-name\",\n        \"timelineTriggerName\"\n      ],\n      \"syntax\": \"none | <dashed-ident>#\"\n    }\n  ],\n  [\n    \"timeline-trigger-range\",\n    {\n      \"name\": \"timeline-trigger-range\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-range\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-range\",\n        \"timelineTriggerRange\"\n      ],\n      \"syntax\": \"[ <'timeline-trigger-range-start'> <'timeline-trigger-range-end'>? ]#\"\n    }\n  ],\n  [\n    \"timeline-trigger-range-end\",\n    {\n      \"name\": \"timeline-trigger-range-end\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-range-end\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the specified named timeline range if one was specified, else to the entire timeline\",\n      \"computedValue\": \"list, each item either the keyword normal or a timeline range and progress percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-range-end\",\n        \"timelineTriggerRangeEnd\"\n      ],\n      \"syntax\": \"[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#\"\n    }\n  ],\n  [\n    \"timeline-trigger-range-start\",\n    {\n      \"name\": \"timeline-trigger-range-start\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-range-start\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the specified named timeline range if one was specified, else to the entire timeline\",\n      \"computedValue\": \"list, each item either the keyword normal or a timeline range and progress percentage\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-range-start\",\n        \"timelineTriggerRangeStart\"\n      ],\n      \"syntax\": \"[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#\"\n    }\n  ],\n  [\n    \"timeline-trigger-source\",\n    {\n      \"name\": \"timeline-trigger-source\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-timeline-trigger-source\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item either the keyword none, the keyword auto, a case-sensitive css identifier, a computed scroll() function, or a computed view() function\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"timeline-trigger-source\",\n        \"timelineTriggerSource\"\n      ],\n      \"syntax\": \"<single-animation-timeline>#\"\n    }\n  ],\n  [\n    \"top\",\n    {\n      \"name\": \"top\",\n      \"href\": \"https://drafts.csswg.org/css-position-3/#propdef-top\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to size of containing block; see prose\",\n      \"computedValue\": \"the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"logicalPropertyGroup\": \"inset\",\n      \"styleDeclaration\": [\n        \"top\"\n      ],\n      \"syntax\": \"auto | <length-percentage> | <anchor()> | <anchor-size()>\"\n    }\n  ],\n  [\n    \"touch-action\",\n    {\n      \"name\": \"touch-action\",\n      \"href\": \"https://compat.spec.whatwg.org/#propdef-touch-action\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements except: non-replaced inline elements, table rows, row groups, table columns, and column groups.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"Same as specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"touch-action\",\n        \"touchAction\"\n      ],\n      \"syntax\": \"auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation\"\n    }\n  ],\n  [\n    \"transform\",\n    {\n      \"name\": \"transform\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-1/#propdef-transform\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the size of reference box\",\n      \"computedValue\": \"as specified, but with lengths made absolute\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"transform list, see interpolation rules\",\n      \"styleDeclaration\": [\n        \"transform\"\n      ],\n      \"syntax\": \"none | <transform-list>\"\n    }\n  ],\n  [\n    \"transform-box\",\n    {\n      \"name\": \"transform-box\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-1/#propdef-transform-box\",\n      \"initial\": \"view-box\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"transform-box\",\n        \"transformBox\"\n      ],\n      \"syntax\": \"content-box | border-box | fill-box | stroke-box | view-box\"\n    }\n  ],\n  [\n    \"transform-origin\",\n    {\n      \"name\": \"transform-origin\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-1/#propdef-transform-origin\",\n      \"initial\": \"50% 50%\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the size of reference box\",\n      \"computedValue\": \"see background-position\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"transform-origin\",\n        \"transformOrigin\"\n      ],\n      \"syntax\": \"[ left | center | right | top | bottom | <length-percentage> ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ] <length>? | [ [ center | left | right ] && [ center | top | bottom ] ] <length>?\"\n    }\n  ],\n  [\n    \"transform-style\",\n    {\n      \"name\": \"transform-style\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-2/#propdef-transform-style\",\n      \"initial\": \"flat\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"usedValue\": \"flat if a grouping property is present, specified keyword otherwise\",\n      \"styleDeclaration\": [\n        \"transform-style\",\n        \"transformStyle\"\n      ],\n      \"syntax\": \"flat | preserve-3d\"\n    }\n  ],\n  [\n    \"transition\",\n    {\n      \"name\": \"transition\",\n      \"href\": \"https://drafts.csswg.org/css-transitions-1/#propdef-transition\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"not animatable\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"transition\"\n      ],\n      \"syntax\": \"<single-transition>#\"\n    }\n  ],\n  [\n    \"transition-behavior\",\n    {\n      \"name\": \"transition-behavior\",\n      \"href\": \"https://drafts.csswg.org/css-transitions-2/#propdef-transition-behavior\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"All elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"transition-behavior\",\n        \"transitionBehavior\"\n      ],\n      \"syntax\": \"<transition-behavior-value>#\"\n    }\n  ],\n  [\n    \"transition-delay\",\n    {\n      \"name\": \"transition-delay\",\n      \"href\": \"https://drafts.csswg.org/css-transitions-1/#propdef-transition-delay\",\n      \"initial\": \"0s\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a duration\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"transition-delay\",\n        \"transitionDelay\"\n      ],\n      \"syntax\": \"<time>#\"\n    }\n  ],\n  [\n    \"transition-duration\",\n    {\n      \"name\": \"transition-duration\",\n      \"href\": \"https://drafts.csswg.org/css-transitions-1/#propdef-transition-duration\",\n      \"initial\": \"0s\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"list, each item a duration\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"transition-duration\",\n        \"transitionDuration\"\n      ],\n      \"syntax\": \"<time [0s,∞]>#\"\n    }\n  ],\n  [\n    \"transition-property\",\n    {\n      \"name\": \"transition-property\",\n      \"href\": \"https://drafts.csswg.org/css-transitions-1/#propdef-transition-property\",\n      \"initial\": \"all\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the keyword none else a list of identifiers\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"transition-property\",\n        \"transitionProperty\"\n      ],\n      \"syntax\": \"none | <single-transition-property>#\"\n    }\n  ],\n  [\n    \"transition-timing-function\",\n    {\n      \"name\": \"transition-timing-function\",\n      \"href\": \"https://drafts.csswg.org/css-transitions-1/#propdef-transition-timing-function\",\n      \"initial\": \"ease\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"transition-timing-function\",\n        \"transitionTimingFunction\"\n      ],\n      \"syntax\": \"<easing-function>#\"\n    }\n  ],\n  [\n    \"translate\",\n    {\n      \"name\": \"translate\",\n      \"href\": \"https://drafts.csswg.org/css-transforms-2/#propdef-translate\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"transformable elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the width of the reference box (for the first value) or the height (for the second value)\",\n      \"computedValue\": \"the keyword none or a pair of computed <length-percentage> values and an absolute length\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value, but see below for none\",\n      \"styleDeclaration\": [\n        \"translate\"\n      ],\n      \"syntax\": \"none | <length-percentage> [ <length-percentage> <length>? ]?\"\n    }\n  ],\n  [\n    \"trigger-scope\",\n    {\n      \"name\": \"trigger-scope\",\n      \"href\": \"https://drafts.csswg.org/css-animations-2/#propdef-trigger-scope\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"trigger-scope\",\n        \"triggerScope\"\n      ],\n      \"syntax\": \"none | all | <dashed-ident>#\"\n    }\n  ],\n  [\n    \"unicode-bidi\",\n    {\n      \"name\": \"unicode-bidi\",\n      \"href\": \"https://drafts.csswg.org/css-writing-modes-4/#propdef-unicode-bidi\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements, but see prose\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"unicode-bidi\",\n        \"unicodeBidi\"\n      ],\n      \"syntax\": \"normal | embed | isolate | bidi-override | isolate-override | plaintext\"\n    }\n  ],\n  [\n    \"user-select\",\n    {\n      \"name\": \"user-select\",\n      \"href\": \"https://drafts.csswg.org/css-ui-4/#propdef-user-select\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements, and optionally to the ::before and ::after pseudo-elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"user-select\",\n        \"userSelect\"\n      ],\n      \"syntax\": \"auto | text | none | contain | all\"\n    }\n  ],\n  [\n    \"vector-effect\",\n    {\n      \"name\": \"vector-effect\",\n      \"href\": \"https://svgwg.org/svg2-draft/coords.html#VectorEffectProperty\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"graphics elements and ‘use’\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"media\": \"visual\",\n      \"computedValue\": \"as specified\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"vector-effect\",\n        \"vectorEffect\"\n      ],\n      \"syntax\": \"none | non-scaling-stroke | non-scaling-size | non-rotation | fixed-position\"\n    }\n  ],\n  [\n    \"vertical-align\",\n    {\n      \"name\": \"vertical-align\",\n      \"href\": \"https://drafts.csswg.org/css-inline-3/#propdef-vertical-align\",\n      \"initial\": \"baseline\",\n      \"appliesTo\": \"see individual properties\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"vertical-align\",\n        \"verticalAlign\"\n      ],\n      \"syntax\": \"[ first | last] || <'alignment-baseline'> || <'baseline-shift'>\"\n    }\n  ],\n  [\n    \"view-timeline\",\n    {\n      \"name\": \"view-timeline\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline\",\n      \"initial\": \"see individual properties\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"see individual properties\",\n      \"computedValue\": \"see individual properties\",\n      \"animationType\": \"see individual properties\",\n      \"canonicalOrder\": \"per grammar\",\n      \"styleDeclaration\": [\n        \"view-timeline\",\n        \"viewTimeline\"\n      ],\n      \"syntax\": \"[ <'view-timeline-name'> [ <'view-timeline-axis'> || <'view-timeline-inset'> ]? ]#\"\n    }\n  ],\n  [\n    \"view-timeline-axis\",\n    {\n      \"name\": \"view-timeline-axis\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline-axis\",\n      \"initial\": \"block\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"a list of the keywords specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"view-timeline-axis\",\n        \"viewTimelineAxis\"\n      ],\n      \"syntax\": \"[ block | inline | x | y ]#\"\n    }\n  ],\n  [\n    \"view-timeline-inset\",\n    {\n      \"name\": \"view-timeline-inset\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline-inset\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to the corresponding dimension of the relevant scrollport\",\n      \"computedValue\": \"a list consisting of two-value pairs representing the start and end insets each as either the keyword auto or a computed <length-percentage> value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"view-timeline-inset\",\n        \"viewTimelineInset\"\n      ],\n      \"syntax\": \"[ [ auto | <length-percentage> ]{1,2} ]#\"\n    }\n  ],\n  [\n    \"view-timeline-name\",\n    {\n      \"name\": \"view-timeline-name\",\n      \"href\": \"https://drafts.csswg.org/scroll-animations-1/#propdef-view-timeline-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"the keyword none or a list of CSS identifiers\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"view-timeline-name\",\n        \"viewTimelineName\"\n      ],\n      \"syntax\": \"[ none | <dashed-ident> ]#\"\n    }\n  ],\n  [\n    \"view-transition-class\",\n    {\n      \"name\": \"view-transition-class\",\n      \"href\": \"https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-class\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"view-transition-class\",\n        \"viewTransitionClass\"\n      ],\n      \"syntax\": \"none | <custom-ident>+\"\n    }\n  ],\n  [\n    \"view-transition-group\",\n    {\n      \"name\": \"view-transition-group\",\n      \"href\": \"https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-group\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"view-transition-group\",\n        \"viewTransitionGroup\"\n      ],\n      \"syntax\": \"normal | contain | nearest | <custom-ident>\"\n    }\n  ],\n  [\n    \"view-transition-name\",\n    {\n      \"name\": \"view-transition-name\",\n      \"href\": \"https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-name\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"view-transition-name\",\n        \"viewTransitionName\"\n      ],\n      \"syntax\": \"none | <custom-ident>\"\n    }\n  ],\n  [\n    \"view-transition-scope\",\n    {\n      \"name\": \"view-transition-scope\",\n      \"href\": \"https://drafts.csswg.org/css-view-transitions-2/#propdef-view-transition-scope\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"view-transition-scope\",\n        \"viewTransitionScope\"\n      ],\n      \"syntax\": \"none | auto\"\n    }\n  ],\n  [\n    \"visibility\",\n    {\n      \"name\": \"visibility\",\n      \"href\": \"https://drafts.csswg.org/css-display-4/#propdef-visibility\",\n      \"initial\": \"visible\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"visibility\"\n      ],\n      \"syntax\": \"visible | hidden | force-hidden | collapse\"\n    }\n  ],\n  [\n    \"voice-balance\",\n    {\n      \"name\": \"voice-balance\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-balance\",\n      \"initial\": \"center\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"the specified value resolved to a <number> between -100 and 100 (inclusive)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"voice-balance\",\n        \"voiceBalance\"\n      ],\n      \"syntax\": \"<number> | left | center | right | leftwards | rightwards\"\n    }\n  ],\n  [\n    \"voice-duration\",\n    {\n      \"name\": \"voice-duration\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-duration\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"voice-duration\",\n        \"voiceDuration\"\n      ],\n      \"syntax\": \"auto | <time [0s,∞]>\"\n    }\n  ],\n  [\n    \"voice-family\",\n    {\n      \"name\": \"voice-family\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-family\",\n      \"initial\": \"implementation-dependent\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"voice-family\",\n        \"voiceFamily\"\n      ],\n      \"syntax\": \"[ <voice-family-name> | <generic-voice> ]# | preserve\"\n    }\n  ],\n  [\n    \"voice-pitch\",\n    {\n      \"name\": \"voice-pitch\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-pitch\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"refer to inherited value\",\n      \"computedValue\": \"one of the predefined pitch keywords if only the keyword is specified by itself, otherwise an absolute frequency calculated by converting the keyword value (if any) to a fixed frequency based on the current voice-family and by applying the specified relative offset (if any)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"voice-pitch\",\n        \"voicePitch\"\n      ],\n      \"syntax\": \"<frequency [0Hz,∞]> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency [0Hz,∞]> | <semitones> | <percentage> ] ]\"\n    }\n  ],\n  [\n    \"voice-range\",\n    {\n      \"name\": \"voice-range\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-range\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"refer to inherited value\",\n      \"computedValue\": \"one of the predefined pitch keywords if only the keyword is specified by itself, otherwise an absolute frequency calculated by converting the keyword value (if any) to a fixed frequency based on the current voice-family and by applying the specified relative offset (if any)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"voice-range\",\n        \"voiceRange\"\n      ],\n      \"syntax\": \"<frequency [0Hz,∞]> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency [0Hz,∞]> | <semitones> | <percentage> ] ]\"\n    }\n  ],\n  [\n    \"voice-rate\",\n    {\n      \"name\": \"voice-rate\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-rate\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"refer to default value\",\n      \"computedValue\": \"a keyword value, and optionally also a percentage relative to the keyword (if not 100%)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"voice-rate\",\n        \"voiceRate\"\n      ],\n      \"syntax\": \"[ normal | x-slow | slow | medium | fast | x-fast ] || <percentage [0,∞]>\"\n    }\n  ],\n  [\n    \"voice-stress\",\n    {\n      \"name\": \"voice-stress\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-stress\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"voice-stress\",\n        \"voiceStress\"\n      ],\n      \"syntax\": \"normal | strong | moderate | none | reduced\"\n    }\n  ],\n  [\n    \"voice-volume\",\n    {\n      \"name\": \"voice-volume\",\n      \"href\": \"https://drafts.csswg.org/css-speech-1/#propdef-voice-volume\",\n      \"initial\": \"medium\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"silent, or a keyword value and optionally also a decibel offset (if not zero)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"voice-volume\",\n        \"voiceVolume\"\n      ],\n      \"syntax\": \"silent | [ [ x-soft | soft | medium | loud | x-loud ] || <decibel> ]\"\n    }\n  ],\n  [\n    \"white-space\",\n    {\n      \"name\": \"white-space\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-white-space\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"see individual properties\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"white-space\",\n        \"whiteSpace\"\n      ],\n      \"syntax\": \"normal | pre | pre-wrap | pre-line | <'white-space-collapse'> || <'text-wrap-mode'> || <'white-space-trim'>\"\n    }\n  ],\n  [\n    \"white-space-collapse\",\n    {\n      \"name\": \"white-space-collapse\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-white-space-collapse\",\n      \"initial\": \"collapse\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"white-space-collapse\",\n        \"whiteSpaceCollapse\"\n      ],\n      \"syntax\": \"collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces\"\n    }\n  ],\n  [\n    \"white-space-trim\",\n    {\n      \"name\": \"white-space-trim\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-white-space-trim\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"inline boxes and block containers\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword(s)\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"white-space-trim\",\n        \"whiteSpaceTrim\"\n      ],\n      \"syntax\": \"none | discard-before || discard-after || discard-inner\"\n    }\n  ],\n  [\n    \"widows\",\n    {\n      \"name\": \"widows\",\n      \"href\": \"https://drafts.csswg.org/css-break-4/#propdef-widows\",\n      \"initial\": \"2\",\n      \"appliesTo\": \"block containers that establish an inline formatting context\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified integer\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"widows\"\n      ],\n      \"syntax\": \"<integer [1,∞]>\"\n    }\n  ],\n  [\n    \"width\",\n    {\n      \"name\": \"width\",\n      \"href\": \"https://drafts.csswg.org/css-sizing-3/#propdef-width\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements except non-replaced inlines\",\n      \"inherited\": \"no\",\n      \"percentages\": \"relative to width/height of containing block\",\n      \"computedValue\": \"as specified, with <length-percentage> values computed\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type, recursing into fit-content()\",\n      \"logicalPropertyGroup\": \"size\",\n      \"styleDeclaration\": [\n        \"width\"\n      ],\n      \"syntax\": \"auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()> | stretch | fit-content | contain\"\n    }\n  ],\n  [\n    \"will-change\",\n    {\n      \"name\": \"will-change\",\n      \"href\": \"https://drafts.csswg.org/css-will-change-1/#propdef-will-change\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"will-change\",\n        \"willChange\"\n      ],\n      \"syntax\": \"auto | <animateable-feature>#\"\n    }\n  ],\n  [\n    \"word-break\",\n    {\n      \"name\": \"word-break\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-word-break\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"word-break\",\n        \"wordBreak\"\n      ],\n      \"syntax\": \"normal | break-all | keep-all | manual | auto-phrase | break-word\"\n    }\n  ],\n  [\n    \"word-space-transform\",\n    {\n      \"name\": \"word-space-transform\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-word-space-transform\",\n      \"initial\": \"none\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"word-space-transform\",\n        \"wordSpaceTransform\"\n      ],\n      \"syntax\": \"none | [ space | ideographic-space ] && auto-phrase?\"\n    }\n  ],\n  [\n    \"word-spacing\",\n    {\n      \"name\": \"word-spacing\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-word-spacing\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"relative to computed font-size, i.e. 1em\",\n      \"computedValue\": \"an absolute length and/or a percentage\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"by computed value type\",\n      \"styleDeclaration\": [\n        \"word-spacing\",\n        \"wordSpacing\"\n      ],\n      \"syntax\": \"normal | <length-percentage>\"\n    }\n  ],\n  [\n    \"word-wrap\",\n    {\n      \"name\": \"word-wrap\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-word-wrap\",\n      \"initial\": \"normal\",\n      \"appliesTo\": \"text\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"word-wrap\",\n        \"wordWrap\"\n      ],\n      \"syntax\": \"normal | break-word | anywhere\"\n    }\n  ],\n  [\n    \"wrap-after\",\n    {\n      \"name\": \"wrap-after\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-wrap-after\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"inline-level boxes and flex items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"wrap-after\",\n        \"wrapAfter\"\n      ],\n      \"syntax\": \"auto | avoid | avoid-line | avoid-flex | line | flex\"\n    }\n  ],\n  [\n    \"wrap-before\",\n    {\n      \"name\": \"wrap-before\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-wrap-before\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"inline-level boxes and flex items\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"wrap-before\",\n        \"wrapBefore\"\n      ],\n      \"syntax\": \"auto | avoid | avoid-line | avoid-flex | line | flex\"\n    }\n  ],\n  [\n    \"wrap-flow\",\n    {\n      \"name\": \"wrap-flow\",\n      \"href\": \"https://drafts.csswg.org/css-exclusions-1/#propdef-wrap-flow\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"block-level elements.\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified except for element’s whose float computed value is not none, in which case the computed value is auto.\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"wrap-flow\",\n        \"wrapFlow\"\n      ],\n      \"syntax\": \"auto | both | start | end | minimum | maximum | clear\"\n    }\n  ],\n  [\n    \"wrap-inside\",\n    {\n      \"name\": \"wrap-inside\",\n      \"href\": \"https://drafts.csswg.org/css-text-4/#propdef-wrap-inside\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"inline boxes\",\n      \"inherited\": \"no\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified keyword\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"wrap-inside\",\n        \"wrapInside\"\n      ],\n      \"syntax\": \"auto | avoid\"\n    }\n  ],\n  [\n    \"wrap-through\",\n    {\n      \"name\": \"wrap-through\",\n      \"href\": \"https://drafts.csswg.org/css-exclusions-1/#propdef-wrap-through\",\n      \"initial\": \"wrap\",\n      \"appliesTo\": \"block-level elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"discrete\",\n      \"styleDeclaration\": [\n        \"wrap-through\",\n        \"wrapThrough\"\n      ],\n      \"syntax\": \"wrap | none\"\n    }\n  ],\n  [\n    \"writing-mode\",\n    {\n      \"name\": \"writing-mode\",\n      \"href\": \"https://drafts.csswg.org/css-writing-modes-4/#propdef-writing-mode\",\n      \"initial\": \"horizontal-tb\",\n      \"appliesTo\": \"All elements except table row groups, table column groups, table rows, table columns, ruby base containers, ruby annotation containers\",\n      \"inherited\": \"yes\",\n      \"percentages\": \"n/a\",\n      \"computedValue\": \"specified value\",\n      \"canonicalOrder\": \"n/a\",\n      \"animationType\": \"not animatable\",\n      \"styleDeclaration\": [\n        \"writing-mode\",\n        \"writingMode\"\n      ],\n      \"syntax\": \"horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr\"\n    }\n  ],\n  [\n    \"x\",\n    {\n      \"name\": \"x\",\n      \"href\": \"https://svgwg.org/svg2-draft/geometry.html#XProperty\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"‘svg’, ‘rect’, ‘image’, ‘foreignObject’ elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the width of the current SVG viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computedValue\": \"an absolute length or percentage\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"x\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"y\",\n    {\n      \"name\": \"y\",\n      \"href\": \"https://svgwg.org/svg2-draft/geometry.html#YProperty\",\n      \"initial\": \"0\",\n      \"appliesTo\": \"‘svg’, ‘rect’, ‘image’, ‘foreignObject’ elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"refer to the height of the current SVG viewport (see Units)\",\n      \"media\": \"visual\",\n      \"computedValue\": \"an absolute length or percentage\",\n      \"animationType\": \"by computed value\",\n      \"styleDeclaration\": [\n        \"y\"\n      ],\n      \"syntax\": \"<length-percentage>\"\n    }\n  ],\n  [\n    \"z-index\",\n    {\n      \"name\": \"z-index\",\n      \"href\": \"https://drafts.csswg.org/css2/#propdef-z-index\",\n      \"initial\": \"auto\",\n      \"appliesTo\": \"positioned elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"N/A\",\n      \"computedValue\": \"as specified\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"by computed value type\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"z-index\",\n        \"zIndex\"\n      ],\n      \"syntax\": \"auto | <integer> | inherit\"\n    }\n  ],\n  [\n    \"zoom\",\n    {\n      \"name\": \"zoom\",\n      \"href\": \"https://drafts.csswg.org/css-viewport/#propdef-zoom\",\n      \"initial\": \"1\",\n      \"appliesTo\": \"all <length> property values of all elements\",\n      \"inherited\": \"no\",\n      \"percentages\": \"Converted to <number>\",\n      \"computedValue\": \"as specified, but with <percentage> converted to the equivalent <number>\",\n      \"canonicalOrder\": \"per grammar\",\n      \"animationType\": \"not animatable\",\n      \"media\": \"visual\",\n      \"styleDeclaration\": [\n        \"zoom\"\n      ],\n      \"syntax\": \"<number [0,∞]> | <percentage [0,∞]>\"\n    }\n  ]\n]);\n","// Forked from https://github.com/jsdom/jsdom/blob/main/lib/jsdom/living/helpers/strings.js\n\n\"use strict\";\n\n/**\n * Converts a string to ASCII lowercase.\n *\n * @see https://infra.spec.whatwg.org/#ascii-lowercase\n * @param {string} s - The string to convert.\n * @returns {string} The converted string.\n */\nfunction asciiLowercase(s) {\n  if (!/[^\\x00-\\x7f]/.test(s)) {\n    return s.toLowerCase();\n  }\n  const len = s.length;\n  const out = new Array(len);\n  for (let i = 0; i < len; i++) {\n    const code = s.charCodeAt(i);\n    // If the character is between 'A' (65) and 'Z' (90), convert using bitwise OR with 32\n    out[i] = code >= 65 && code <= 90 ? String.fromCharCode(code | 32) : s[i];\n  }\n  return out.join(\"\");\n}\n\nmodule.exports = {\n  asciiLowercase\n};\n","\"use strict\";\n\nconst {\n  resolve: resolveColor,\n  utils: { cssCalc, resolveGradient, splitValue }\n} = require(\"@asamuzakjp/css-color\");\nconst { next: syntaxes } = require(\"@csstools/css-syntax-patches-for-csstree\");\nconst csstree = require(\"css-tree\");\nconst { LRUCache } = require(\"lru-cache\");\nconst propertyDefinitions = require(\"./generated/propertyDefinitions\");\nconst { asciiLowercase } = require(\"./utils/strings\");\n\n// Constants\nconst CALC_FUNC_NAMES = \"(?:a?(?:cos|sin|tan)|abs|atan2|calc|clamp|exp|hypot|log|max|min|mod|pow|rem|round|sign|sqrt)\";\n\n// CSS global keywords\n// @see https://drafts.csswg.org/css-cascade-5/#defaulting-keywords\nconst GLOBAL_KEYS = new Set([\"initial\", \"inherit\", \"unset\", \"revert\", \"revert-layer\"]);\n\n// System colors\n// @see https://drafts.csswg.org/css-color/#css-system-colors\n// @see https://drafts.csswg.org/css-color/#deprecated-system-colors\nconst SYS_COLORS = new Set([\n  \"accentcolor\",\n  \"accentcolortext\",\n  \"activeborder\",\n  \"activecaption\",\n  \"activetext\",\n  \"appworkspace\",\n  \"background\",\n  \"buttonborder\",\n  \"buttonface\",\n  \"buttonhighlight\",\n  \"buttonshadow\",\n  \"buttontext\",\n  \"canvas\",\n  \"canvastext\",\n  \"captiontext\",\n  \"field\",\n  \"fieldtext\",\n  \"graytext\",\n  \"highlight\",\n  \"highlighttext\",\n  \"inactiveborder\",\n  \"inactivecaption\",\n  \"inactivecaptiontext\",\n  \"infobackground\",\n  \"infotext\",\n  \"linktext\",\n  \"mark\",\n  \"marktext\",\n  \"menu\",\n  \"menutext\",\n  \"scrollbar\",\n  \"selecteditem\",\n  \"selecteditemtext\",\n  \"threeddarkshadow\",\n  \"threedface\",\n  \"threedhighlight\",\n  \"threedlightshadow\",\n  \"threedshadow\",\n  \"visitedtext\",\n  \"window\",\n  \"windowframe\",\n  \"windowtext\"\n]);\n\n// AST node types\nconst AST_TYPES = Object.freeze({\n  CALC: \"Calc\",\n  DIMENSION: \"Dimension\",\n  FUNCTION: \"Function\",\n  GLOBAL_KEYWORD: \"GlobalKeyword\",\n  HASH: \"Hash\",\n  IDENTIFIER: \"Identifier\",\n  NUMBER: \"Number\",\n  PERCENTAGE: \"Percentage\",\n  STRING: \"String\",\n  URL: \"Url\"\n});\n\n// Regular expressions\nconst calcRegEx = new RegExp(`^${CALC_FUNC_NAMES}\\\\(`);\nconst calcContainedRegEx = new RegExp(`(?<=[*/\\\\s(])${CALC_FUNC_NAMES}\\\\(`);\nconst calcNameRegEx = new RegExp(`^${CALC_FUNC_NAMES}$`);\nconst varRegEx = /^var\\(/;\nconst varContainedRegEx = /(?<=[*/\\s(])var\\(/;\n\n// Patched css-tree\nconst cssTree = csstree.fork(syntaxes);\n\n// Instance of the LRU Cache. Stores up to 4096 items.\nconst lruCache = new LRUCache({\n  max: 4096\n});\n\n/**\n * Prepares a stringified value.\n *\n * @param {string|number|null|undefined} value - The value to prepare.\n * @returns {string} The prepared value.\n */\nfunction prepareValue(value) {\n  // `null` is converted to an empty string.\n  // @see https://webidl.spec.whatwg.org/#LegacyNullToEmptyString\n  if (value === null) {\n    return \"\";\n  }\n  return `${value}`.trim();\n}\n\n/**\n * Checks if the value is a global keyword.\n *\n * @param {string} val - The value to check.\n * @returns {boolean} True if the value is a global keyword, false otherwise.\n */\nfunction isGlobalKeyword(val) {\n  return GLOBAL_KEYS.has(asciiLowercase(val));\n}\n\n/**\n * Checks if the value starts with or contains a CSS var() function.\n *\n * @param {string} val - The value to check.\n * @returns {boolean} True if the value contains a var() function, false otherwise.\n */\nfunction hasVarFunc(val) {\n  return varRegEx.test(val) || varContainedRegEx.test(val);\n}\n\n/**\n * Checks if the value starts with or contains CSS calc() or math functions.\n *\n * @param {string} val - The value to check.\n * @returns {boolean} True if the value contains calc() or math functions, false otherwise.\n */\nfunction hasCalcFunc(val) {\n  return calcRegEx.test(val) || calcContainedRegEx.test(val);\n}\n\n/**\n * Parses a CSS string into an AST.\n *\n * @param {string} val - The CSS string to parse.\n * @param {object} opt - The options for parsing.\n * @returns {object} The AST.\n */\nfunction parseCSS(val, opt) {\n  return cssTree.parse(prepareValue(val), opt);\n}\n\n/**\n * Checks if the value is a valid property value.\n * Returns false for custom properties or values containing var().\n *\n * @param {string} prop - The property name.\n * @param {string} val - The property value.\n * @returns {boolean} True if the value is valid, false otherwise.\n */\nfunction isValidPropertyValue(prop, val) {\n  if (!propertyDefinitions.has(prop)) {\n    return false;\n  }\n  val = prepareValue(val);\n  if (val === \"\") {\n    return true;\n  }\n  const cacheKey = `isValidPropertyValue_${prop}_${val}`;\n  const cachedValue = lruCache.get(cacheKey);\n  if (typeof cachedValue === \"boolean\") {\n    return cachedValue;\n  }\n  let result;\n  try {\n    const ast = parseCSS(val, {\n      context: \"value\"\n    });\n    const { error, matched } = cssTree.lexer.matchProperty(prop, ast);\n    result = error === null && matched !== null;\n  } catch {\n    result = false;\n  }\n  lruCache.set(cacheKey, result);\n  return result;\n}\n\n/**\n * Resolves CSS math functions.\n *\n * @param {string} val - The value to resolve.\n * @param {object} [opt={ format: \"specifiedValue\" }] - The options for resolving.\n * @returns {string|undefined} The resolved value.\n */\nfunction resolveCalc(val, opt = { format: \"specifiedValue\" }) {\n  val = prepareValue(val);\n  if (val === \"\" || hasVarFunc(val) || !hasCalcFunc(val)) {\n    return val;\n  }\n  const cacheKey = `resolveCalc_${val}`;\n  const cachedValue = lruCache.get(cacheKey);\n  if (typeof cachedValue === \"string\") {\n    return cachedValue;\n  }\n  const ast = parseCSS(val, { context: \"value\" });\n  if (!ast?.children) {\n    return;\n  }\n  const values = [];\n  for (const item of ast.children) {\n    const { type: itemType, name: itemName, value: itemValue } = item;\n    if (itemType === AST_TYPES.FUNCTION) {\n      const value = cssTree\n        .generate(item)\n        .replace(/\\)(?!\\)|\\s|,)/g, \") \")\n        .trim();\n      if (calcNameRegEx.test(itemName)) {\n        const newValue = cssCalc(value, opt);\n        values.push(newValue);\n      } else {\n        values.push(value);\n      }\n    } else if (itemType === AST_TYPES.STRING) {\n      values.push(`\"${itemValue}\"`);\n    } else {\n      values.push(itemName ?? itemValue);\n    }\n  }\n  const resolvedValue = values.join(\" \");\n  lruCache.set(cacheKey, resolvedValue);\n  return resolvedValue;\n}\n\n/**\n * Parses a property value.\n * Returns a string or an array of parsed objects.\n *\n * @param {string} prop - The property name.\n * @param {string} val - The property value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|Array<object>|undefined} The parsed value.\n */\nfunction parsePropertyValue(prop, val, opt = {}) {\n  if (!propertyDefinitions.has(prop)) {\n    return;\n  }\n  const { caseSensitive } = opt;\n  val = prepareValue(val);\n  if (val === \"\" || hasVarFunc(val)) {\n    return val;\n  } else if (hasCalcFunc(val)) {\n    const calculatedValue = resolveCalc(val, {\n      format: \"specifiedValue\"\n    });\n    if (typeof calculatedValue !== \"string\") {\n      return;\n    }\n    val = calculatedValue;\n  }\n  const cacheKey = `parsePropertyValue_${prop}_${val}_${caseSensitive}`;\n  const cachedValue = lruCache.get(cacheKey);\n  if (cachedValue === false) {\n    return;\n  } else if (cachedValue !== undefined) {\n    return cachedValue;\n  }\n  let parsedValue;\n  const lowerCasedValue = asciiLowercase(val);\n  if (GLOBAL_KEYS.has(lowerCasedValue)) {\n    parsedValue = [\n      {\n        type: AST_TYPES.GLOBAL_KEYWORD,\n        name: lowerCasedValue\n      }\n    ];\n  } else {\n    try {\n      const ast = parseCSS(val, {\n        context: \"value\"\n      });\n      const { error, matched } = cssTree.lexer.matchProperty(prop, ast);\n      if (error || !matched) {\n        parsedValue = false;\n      } else {\n        const items = ast.children;\n        const itemCount = items.size;\n        const values = [];\n        for (const item of items) {\n          const { children, name, type, value, unit } = item;\n          switch (type) {\n            case AST_TYPES.DIMENSION: {\n              values.push({\n                type,\n                value,\n                unit: asciiLowercase(unit)\n              });\n              break;\n            }\n            case AST_TYPES.FUNCTION: {\n              const raw = itemCount === 1 ? val : cssTree.generate(item).replace(/\\)(?!\\)|\\s|,)/g, \") \");\n              // Remove \"${name}(\" from the start and \")\" from the end\n              const itemValue = raw.trim().slice(name.length + 1, -1);\n              if (name === \"calc\") {\n                if (children.size === 1) {\n                  const child = children.first;\n                  if (child.type === AST_TYPES.NUMBER) {\n                    values.push({\n                      type: AST_TYPES.CALC,\n                      name,\n                      isNumber: true,\n                      value: `${parseFloat(child.value)}`\n                    });\n                  } else {\n                    values.push({\n                      type: AST_TYPES.CALC,\n                      name,\n                      isNumber: false,\n                      value: asciiLowercase(itemValue)\n                    });\n                  }\n                } else {\n                  values.push({\n                    type: AST_TYPES.CALC,\n                    name,\n                    isNumber: false,\n                    value: asciiLowercase(itemValue)\n                  });\n                }\n              } else {\n                values.push({\n                  type,\n                  name,\n                  value: caseSensitive ? itemValue : asciiLowercase(itemValue)\n                });\n              }\n              break;\n            }\n            case AST_TYPES.IDENTIFIER: {\n              if (caseSensitive) {\n                values.push(item);\n              } else {\n                values.push({\n                  type,\n                  name: asciiLowercase(name)\n                });\n              }\n              break;\n            }\n            default: {\n              values.push(item);\n            }\n          }\n        }\n        parsedValue = values;\n      }\n    } catch {\n      parsedValue = false;\n    }\n  }\n  lruCache.set(cacheKey, parsedValue);\n  if (parsedValue === false) {\n    return;\n  }\n  return parsedValue;\n}\n\n/**\n * Parses a numeric value (number, dimension, percentage).\n * Helper function for serializeNumber, serializeLength, etc.\n *\n * @param {Array<object>} val - The AST value.\n * @param {object} [opt={}] - The options for parsing.\n * @param {Function} validateType - Function to validate the node type.\n * @returns {object|undefined} The parsed result containing num and unit, or undefined.\n */\nfunction parseNumericValue(val, opt, validateType) {\n  const [item] = val;\n  const { type, value, unit } = item ?? {};\n  if (!validateType(type, value, unit)) {\n    return;\n  }\n  const { clamp } = opt || {};\n  const max = opt?.max ?? Number.INFINITY;\n  const min = opt?.min ?? Number.NEGATIVE_INFINITY;\n  let num = parseFloat(value);\n  if (clamp) {\n    if (num > max) {\n      num = max;\n    } else if (num < min) {\n      num = min;\n    }\n  } else if (num > max || num < min) {\n    return;\n  }\n  return {\n    num,\n    unit: unit ? asciiLowercase(unit) : null,\n    type\n  };\n}\n\n/**\n * Serializes a <number> value.\n *\n * @param {Array<object>} val - The AST value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The parsed number.\n */\nfunction serializeNumber(val, opt = {}) {\n  const res = parseNumericValue(val, opt, (type) => type === AST_TYPES.NUMBER);\n  if (!res) {\n    return;\n  }\n  return `${res.num}`;\n}\n\n/**\n * Serializes an <angle> value.\n *\n * @param {Array<object>} val - The AST value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The serialized angle.\n */\nfunction serializeAngle(val, opt = {}) {\n  const res = parseNumericValue(\n    val,\n    opt,\n    (type, value) => type === AST_TYPES.DIMENSION || (type === AST_TYPES.NUMBER && value === \"0\")\n  );\n  if (!res) {\n    return;\n  }\n  const { num, unit } = res;\n  if (unit) {\n    if (!/^(?:deg|g?rad|turn)$/i.test(unit)) {\n      return;\n    }\n    return `${num}${unit}`;\n  } else if (num === 0) {\n    return `${num}deg`;\n  }\n}\n\n/**\n * Serializes a <length> value.\n *\n * @param {Array<object>} val - The AST value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The serialized length.\n */\nfunction serializeLength(val, opt = {}) {\n  const res = parseNumericValue(\n    val,\n    opt,\n    (type, value) => type === AST_TYPES.DIMENSION || (type === AST_TYPES.NUMBER && value === \"0\")\n  );\n  if (!res) {\n    return;\n  }\n  const { num, unit } = res;\n  if (num === 0 && !unit) {\n    return `${num}px`;\n  } else if (unit) {\n    return `${num}${unit}`;\n  }\n}\n\n/**\n * Serializes a <dimension> value, e.g. <frequency>, <time> and <resolution>.\n *\n * @param {Array<object>} val - The AST value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The serialized dimension.\n */\nfunction serializeDimension(val, opt = {}) {\n  const res = parseNumericValue(val, opt, (type) => type === AST_TYPES.DIMENSION);\n  if (!res) {\n    return;\n  }\n  const { num, unit } = res;\n  if (unit) {\n    return `${num}${unit}`;\n  }\n}\n\n/**\n * Serializes a <percentage> value.\n *\n * @param {Array<object>} val - The AST value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The serialized percentage.\n */\nfunction serializePercentage(val, opt = {}) {\n  const res = parseNumericValue(\n    val,\n    opt,\n    (type, value) => type === AST_TYPES.PERCENTAGE || (type === AST_TYPES.NUMBER && value === \"0\")\n  );\n  if (!res) {\n    return;\n  }\n  const { num } = res;\n  return `${num}%`;\n}\n\n/**\n * Serializes a <url> value.\n *\n * @param {Array<object>} val - The AST value.\n * @returns {string|undefined} The serialized url.\n */\nfunction serializeURL(val) {\n  const [item] = val;\n  const { type, value } = item ?? {};\n  if (type !== AST_TYPES.URL) {\n    return;\n  }\n  const str = value.replace(/\\\\\\\\/g, \"\\\\\").replaceAll('\"', '\\\\\"');\n  return `url(\"${str}\")`;\n}\n\n/**\n * Serializes a <string> value.\n *\n * @param {Array<object>} val - The AST value.\n * @returns {string|undefined} The serialized string.\n */\nfunction serializeString(val) {\n  const [item] = val;\n  const { type, value } = item ?? {};\n  if (type !== AST_TYPES.STRING) {\n    return;\n  }\n  const str = value.replace(/\\\\\\\\/g, \"\\\\\").replaceAll('\"', '\\\\\"');\n  return `\"${str}\"`;\n}\n\n/**\n * Serializes a <color> value.\n *\n * @param {Array<object>} val - The AST value.\n * @returns {string|undefined} The serialized color.\n */\nfunction serializeColor(val) {\n  const [item] = val;\n  const { name, type, value } = item ?? {};\n  switch (type) {\n    case AST_TYPES.FUNCTION: {\n      const res = resolveColor(`${name}(${value})`, {\n        format: \"specifiedValue\"\n      });\n      if (res) {\n        return res;\n      }\n      break;\n    }\n    case AST_TYPES.HASH: {\n      const res = resolveColor(`#${value}`, {\n        format: \"specifiedValue\"\n      });\n      if (res) {\n        return res;\n      }\n      break;\n    }\n    case AST_TYPES.IDENTIFIER: {\n      if (SYS_COLORS.has(name)) {\n        return name;\n      }\n      const res = resolveColor(name, {\n        format: \"specifiedValue\"\n      });\n      if (res) {\n        return res;\n      }\n      break;\n    }\n    default:\n  }\n}\n\n/**\n * Serializes a <gradient> value.\n *\n * @param {Array<object>} val - The AST value.\n * @returns {string|undefined} The serialized gradient.\n */\nfunction serializeGradient(val) {\n  const [item] = val;\n  const { name, type, value } = item ?? {};\n  if (type !== AST_TYPES.FUNCTION) {\n    return;\n  }\n  const res = resolveGradient(`${name}(${value})`, {\n    format: \"specifiedValue\"\n  });\n  if (res) {\n    return res;\n  }\n}\n\n/**\n * Resolves a keyword value.\n *\n * @param {Array<object>} value - The AST node array containing the keyword value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The resolved keyword or undefined.\n */\nfunction resolveKeywordValue(value, opt = {}) {\n  const [{ name, type }] = value;\n  const { length } = opt;\n  switch (type) {\n    case AST_TYPES.GLOBAL_KEYWORD: {\n      if (length > 1) {\n        return;\n      }\n      return name;\n    }\n    case AST_TYPES.IDENTIFIER: {\n      return name;\n    }\n    default:\n  }\n}\n\n/**\n * Resolves a function value.\n *\n * @param {Array<object>} value - The AST node array containing the function value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The resolved function or undefined.\n */\nfunction resolveFunctionValue(value, opt = {}) {\n  const [{ name, type, value: itemValue }] = value;\n  const { length } = opt;\n  switch (type) {\n    case AST_TYPES.FUNCTION: {\n      return `${name}(${itemValue})`;\n    }\n    case AST_TYPES.GLOBAL_KEYWORD: {\n      if (length > 1) {\n        return;\n      }\n      return name;\n    }\n    case AST_TYPES.IDENTIFIER: {\n      return name;\n    }\n    default:\n  }\n}\n\n/**\n * Resolves a numeric value.\n *\n * @param {Array<object>} value - The AST node array containing the numeric value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The resolved length/percentage/number or undefined.\n */\nfunction resolveNumericValue(value, opt = {}) {\n  const [{ name, type: itemType, value: itemValue }] = value;\n  const { length, type } = opt;\n  switch (itemType) {\n    case AST_TYPES.CALC: {\n      return `${name}(${itemValue})`;\n    }\n    case AST_TYPES.DIMENSION: {\n      if (type === \"angle\") {\n        return serializeAngle(value, opt);\n      } else if (type === \"length\") {\n        return serializeLength(value, opt);\n      }\n      return serializeDimension(value, opt);\n    }\n    case AST_TYPES.GLOBAL_KEYWORD: {\n      if (length > 1) {\n        return;\n      }\n      return name;\n    }\n    case AST_TYPES.IDENTIFIER: {\n      return name;\n    }\n    case AST_TYPES.NUMBER: {\n      switch (type) {\n        case \"angle\": {\n          return serializeAngle(value, opt);\n        }\n        case \"length\": {\n          return serializeLength(value, opt);\n        }\n        case \"percentage\": {\n          return serializePercentage(value, opt);\n        }\n        default: {\n          return serializeNumber(value, opt);\n        }\n      }\n    }\n    case AST_TYPES.PERCENTAGE: {\n      return serializePercentage(value, opt);\n    }\n    default:\n  }\n}\n\n/**\n * Resolves a color value.\n *\n * @param {Array<object>} value - The AST node array containing the color value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The resolved color or undefined.\n */\nfunction resolveColorValue(value, opt = {}) {\n  const [{ name, type }] = value;\n  const { length } = opt;\n  switch (type) {\n    case AST_TYPES.GLOBAL_KEYWORD: {\n      if (length > 1) {\n        return;\n      }\n      return name;\n    }\n    default: {\n      return serializeColor(value, opt);\n    }\n  }\n}\n\n/**\n * Resolves an image value.\n *\n * @param {Array<object>} value - The AST node array containing the image value.\n * @param {object} [opt={}] - The options for parsing.\n * @returns {string|undefined} The resolved gradient/url or undefined.\n */\nfunction resolveImageValue(value, opt = {}) {\n  const [{ name, type }] = value;\n  const { length } = opt;\n  switch (type) {\n    case AST_TYPES.GLOBAL_KEYWORD: {\n      if (length > 1) {\n        return;\n      }\n      return name;\n    }\n    case AST_TYPES.IDENTIFIER: {\n      return name;\n    }\n    case AST_TYPES.URL: {\n      return serializeURL(value, opt);\n    }\n    default: {\n      return serializeGradient(value, opt);\n    }\n  }\n}\n\n/**\n * Resolves a border shorthand value.\n *\n * @param {Array<object>} value - The AST node array containing the shorthand value.\n * @param {object} subProps - The sub properties object.\n * @param {Map} parsedValues - The Map of parsed values.\n * @returns {Array|string|undefined} - The resolved [prop, value] pair, keyword or undefined.\n */\nfunction resolveBorderShorthandValue(value, subProps, parsedValues) {\n  const [{ isNumber, name, type, value: itemValue }] = value;\n  const { color: colorProp, style: styleProp, width: widthProp } = subProps;\n  switch (type) {\n    case AST_TYPES.CALC: {\n      if (isNumber || parsedValues.has(widthProp)) {\n        return;\n      }\n      return [widthProp, `${name}(${itemValue}`];\n    }\n    case AST_TYPES.DIMENSION:\n    case AST_TYPES.NUMBER: {\n      if (parsedValues.has(widthProp)) {\n        return;\n      }\n      const parsedValue = serializeLength(value, { min: 0 });\n      if (!parsedValue) {\n        return;\n      }\n      return [widthProp, parsedValue];\n    }\n    case AST_TYPES.FUNCTION:\n    case AST_TYPES.HASH: {\n      if (parsedValues.has(colorProp)) {\n        return;\n      }\n      const parsedValue = serializeColor(value);\n      if (!parsedValue) {\n        return;\n      }\n      return [colorProp, parsedValue];\n    }\n    case AST_TYPES.GLOBAL_KEYWORD: {\n      return name;\n    }\n    case AST_TYPES.IDENTIFIER: {\n      if (isValidPropertyValue(widthProp, name)) {\n        if (parsedValues.has(widthProp)) {\n          return;\n        }\n        return [widthProp, name];\n      } else if (isValidPropertyValue(styleProp, name)) {\n        if (parsedValues.has(styleProp)) {\n          return;\n        }\n        return [styleProp, name];\n      } else if (isValidPropertyValue(colorProp, name)) {\n        if (parsedValues.has(colorProp)) {\n          return;\n        }\n        return [colorProp, name];\n      }\n      break;\n    }\n    default:\n  }\n}\n\nmodule.exports = {\n  AST_TYPES,\n  hasCalcFunc,\n  hasVarFunc,\n  isGlobalKeyword,\n  isValidPropertyValue,\n  parseCSS,\n  parsePropertyValue,\n  prepareValue,\n  resolveBorderShorthandValue,\n  resolveCalc,\n  resolveColorValue,\n  resolveFunctionValue,\n  resolveImageValue,\n  resolveKeywordValue,\n  resolveNumericValue,\n  serializeAngle,\n  serializeColor,\n  serializeDimension,\n  serializeGradient,\n  serializeLength,\n  serializeNumber,\n  serializePercentage,\n  serializeString,\n  serializeURL,\n  splitValue\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"background-image\";\nconst shorthand = \"background\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-image property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, { delimiter: \",\" });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveImageValue(value);\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    } else {\n      return;\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"background-position\";\nconst shorthand = \"background\";\nconst keyX = [\"left\", \"right\"];\nconst keyY = [\"top\", \"bottom\"];\nconst keywordsX = [\"center\", ...keyX];\nconst keywordsY = [\"center\", ...keyY];\nconst keywords = [\"center\", ...keyX, ...keyY];\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-position property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, {\n    delimiter: \",\"\n  });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length) {\n      const [part1, part2, part3, part4] = value;\n      let parsedValue = \"\";\n      switch (value.length) {\n        case 1: {\n          if (part1.type === AST_TYPES.GLOBAL_KEYWORD) {\n            parsedValue = part1.name;\n          } else {\n            const val1 =\n              part1.type === AST_TYPES.IDENTIFIER\n                ? part1.name\n                : parsers.resolveNumericValue([part1], { type: \"length\" });\n            if (val1) {\n              if (val1 === \"center\") {\n                parsedValue = `${val1} ${val1}`;\n              } else if (val1 === \"top\" || val1 === \"bottom\") {\n                parsedValue = `center ${val1}`;\n              } else {\n                parsedValue = `${val1} center`;\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          const val1 =\n            part1.type === AST_TYPES.IDENTIFIER ? part1.name : parsers.resolveNumericValue([part1], { type: \"length\" });\n          const val2 =\n            part2.type === AST_TYPES.IDENTIFIER ? part2.name : parsers.resolveNumericValue([part2], { type: \"length\" });\n          if (val1 && val2) {\n            if (keywordsX.includes(val1) && keywordsY.includes(val2)) {\n              parsedValue = `${val1} ${val2}`;\n            } else if (keywordsY.includes(val1) && keywordsX.includes(val2)) {\n              parsedValue = `${val2} ${val1}`;\n            } else if (keywordsX.includes(val1)) {\n              if (val2 === \"center\" || !keywordsX.includes(val2)) {\n                parsedValue = `${val1} ${val2}`;\n              }\n            } else if (keywordsY.includes(val2)) {\n              if (!keywordsY.includes(val1)) {\n                parsedValue = `${val1} ${val2}`;\n              }\n            } else if (!keywordsY.includes(val1) && !keywordsX.includes(val2)) {\n              parsedValue = `${val1} ${val2}`;\n            }\n          }\n          break;\n        }\n        case 3: {\n          const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;\n          const val2 =\n            part2.type === AST_TYPES.IDENTIFIER ? part2.name : parsers.resolveNumericValue([part2], { type: \"length\" });\n          const val3 =\n            part3.type === AST_TYPES.IDENTIFIER ? part3.name : parsers.resolveNumericValue([part3], { type: \"length\" });\n          if (val1 && val2 && val3) {\n            let posX = \"\";\n            let offX = \"\";\n            let posY = \"\";\n            let offY = \"\";\n            if (keywordsX.includes(val1)) {\n              if (keyY.includes(val2)) {\n                if (!keywords.includes(val3)) {\n                  posX = val1;\n                  posY = val2;\n                  offY = val3;\n                }\n              } else if (keyY.includes(val3)) {\n                if (!keywords.includes(val2)) {\n                  posX = val1;\n                  offX = val2;\n                  posY = val3;\n                }\n              }\n            } else if (keywordsY.includes(val1)) {\n              if (keyX.includes(val2)) {\n                if (!keywords.includes(val3)) {\n                  posX = val2;\n                  offX = val3;\n                  posY = val1;\n                }\n              } else if (keyX.includes(val3)) {\n                if (!keywords.includes(val2)) {\n                  posX = val3;\n                  posY = val1;\n                  offY = val2;\n                }\n              }\n            }\n            if (posX && posY) {\n              if (offX) {\n                parsedValue = `${posX} ${offX} ${posY}`;\n              } else if (offY) {\n                parsedValue = `${posX} ${posY} ${offY}`;\n              }\n            }\n          }\n          break;\n        }\n        case 4: {\n          const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;\n          const val2 = parsers.resolveNumericValue([part2], { type: \"length\" });\n          const val3 = part3.type === AST_TYPES.IDENTIFIER && part3.name;\n          const val4 = parsers.resolveNumericValue([part4], { type: \"length\" });\n          if (val1 && val2 && val3 && val4) {\n            let posX = \"\";\n            let offX = \"\";\n            let posY = \"\";\n            let offY = \"\";\n            if (keywordsX.includes(val1) && keyY.includes(val3)) {\n              posX = val1;\n              offX = val2;\n              posY = val3;\n              offY = val4;\n            } else if (keyX.includes(val1) && keywordsY.includes(val3)) {\n              posX = val1;\n              offX = val2;\n              posY = val3;\n              offY = val4;\n            } else if (keyY.includes(val1) && keywordsX.includes(val3)) {\n              posX = val3;\n              offX = val4;\n              posY = val1;\n              offY = val2;\n            }\n            if (posX && offX && posY && offY) {\n              parsedValue = `${posX} ${offX} ${posY} ${offY}`;\n            }\n          }\n          break;\n        }\n        default:\n      }\n      if (parsedValue) {\n        parsedValues.push(parsedValue);\n      } else {\n        return;\n      }\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"background-size\";\nconst shorthand = \"background\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-size property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, {\n    delimiter: \",\"\n  });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length) {\n      if (value.length === 1) {\n        const [{ isNumber, name, type, value: itemValue }] = value;\n        switch (type) {\n          case AST_TYPES.CALC: {\n            if (isNumber) {\n              return;\n            }\n            parsedValues.push(`${name}(${itemValue})`);\n            break;\n          }\n          case AST_TYPES.GLOBAL_KEYWORD:\n          case AST_TYPES.IDENTIFIER: {\n            parsedValues.push(name);\n            break;\n          }\n          default: {\n            const parsedValue = parsers.resolveNumericValue(value, {\n              type: \"length\"\n            });\n            if (!parsedValue) {\n              return;\n            }\n            parsedValues.push(parsedValue);\n          }\n        }\n      } else {\n        const [val1, val2] = value;\n        const parts = [];\n        if (val1.type === AST_TYPES.CALC && !val1.isNumber) {\n          parts.push(`${val1.name}(${val1.value})`);\n        } else if (val1.type === AST_TYPES.IDENTIFIER) {\n          parts.push(val1.name);\n        } else if (val1.type === AST_TYPES.DIMENSION) {\n          parts.push(`${val1.value}${val1.unit}`);\n        } else if (val1.type === AST_TYPES.PERCENTAGE) {\n          parts.push(`${val1.value}%`);\n        } else {\n          return;\n        }\n        switch (val2.type) {\n          case AST_TYPES.CALC: {\n            if (val2.isNumber) {\n              return;\n            }\n            parts.push(`${val2.name}(${val2.value})`);\n            break;\n          }\n          case AST_TYPES.DIMENSION: {\n            parts.push(`${val2.value}${val2.unit}`);\n            break;\n          }\n          case AST_TYPES.IDENTIFIER: {\n            if (val2.name !== \"auto\") {\n              parts.push(val2.name);\n            }\n            break;\n          }\n          case AST_TYPES.PERCENTAGE: {\n            parts.push(`${val2.value}%`);\n            break;\n          }\n          default: {\n            return;\n          }\n        }\n        parsedValues.push(parts.join(\" \"));\n      }\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"background-repeat\";\nconst shorthand = \"background\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-repeat property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, {\n    delimiter: \",\"\n  });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length) {\n      let parsedValue = \"\";\n      switch (value.length) {\n        case 1: {\n          const [part1] = value;\n          if (part1.type === AST_TYPES.GLOBAL_KEYWORD || part1.type === AST_TYPES.IDENTIFIER) {\n            parsedValue = part1.name;\n          }\n          break;\n        }\n        case 2: {\n          const [part1, part2] = value;\n          const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;\n          const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name;\n          if (val1 && val2) {\n            if (val1 === \"repeat\" && val2 === \"no-repeat\") {\n              parsedValue = \"repeat-x\";\n            } else if (val1 === \"no-repeat\" && val2 === \"repeat\") {\n              parsedValue = \"repeat-y\";\n            } else if (val1 === val2) {\n              parsedValue = val1;\n            } else {\n              parsedValue = `${val1} ${val2}`;\n            }\n          }\n          break;\n        }\n        default:\n      }\n      if (parsedValue) {\n        parsedValues.push(parsedValue);\n      } else {\n        return;\n      }\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"background-origin\";\nconst shorthand = \"background\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-origin property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, { delimiter: \",\" });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveKeywordValue(value);\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"background-clip\";\nconst shorthand = \"background\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-clip property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, { delimiter: \",\" });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveKeywordValue(value);\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"background-attachment\";\nconst shorthand = \"background\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-attachment property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, { delimiter: \",\" });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveKeywordValue(value);\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"background-color\";\nconst shorthand = \"background\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst backgroundImage = require(\"./backgroundImage\");\nconst backgroundPosition = require(\"./backgroundPosition\");\nconst backgroundSize = require(\"./backgroundSize\");\nconst backgroundRepeat = require(\"./backgroundRepeat\");\nconst backgroundOrigin = require(\"./backgroundOrigin\");\nconst backgroundClip = require(\"./backgroundClip\");\nconst backgroundAttachment = require(\"./backgroundAttachment\");\nconst backgroundColor = require(\"./backgroundColor\");\n\nconst property = \"background\";\n\nconst initialValues = new Map([\n  [backgroundImage.property, \"none\"],\n  [backgroundPosition.property, \"0% 0%\"],\n  [backgroundSize.property, \"auto\"],\n  [backgroundRepeat.property, \"repeat\"],\n  [backgroundOrigin.property, \"padding-box\"],\n  [backgroundClip.property, \"border-box\"],\n  [backgroundAttachment.property, \"scroll\"],\n  [backgroundColor.property, \"transparent\"]\n]);\n\nconst shorthandFor = new Map([\n  [backgroundImage.property, backgroundImage],\n  [backgroundPosition.property, backgroundPosition],\n  [backgroundSize.property, backgroundSize],\n  [backgroundRepeat.property, backgroundRepeat],\n  [backgroundOrigin.property, backgroundOrigin],\n  [backgroundClip.property, backgroundClip],\n  [backgroundAttachment.property, backgroundAttachment],\n  [backgroundColor.property, backgroundColor]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (v === \"\" || parsers.hasVarFunc(v)) {\n      for (const [key] of shorthandFor) {\n        this._setProperty(key, \"\");\n      }\n      this._setProperty(property, v);\n    } else {\n      const bgValues = parse(v);\n      if (!Array.isArray(bgValues)) {\n        return;\n      }\n      const bgMap = new Map([\n        [backgroundImage.property, []],\n        [backgroundPosition.property, []],\n        [backgroundSize.property, []],\n        [backgroundRepeat.property, []],\n        [backgroundOrigin.property, []],\n        [backgroundClip.property, []],\n        [backgroundAttachment.property, []],\n        [backgroundColor.property, []]\n      ]);\n      const backgrounds = [];\n      for (const bgValue of bgValues) {\n        const bg = [];\n        for (const [longhand, value] of Object.entries(bgValue)) {\n          if (value) {\n            const arr = bgMap.get(longhand);\n            arr.push(value);\n            bgMap.set(longhand, arr);\n            if (value !== initialValues.get(longhand)) {\n              if (longhand === backgroundSize.property) {\n                bg.push(`/ ${value}`);\n              } else {\n                bg.push(value);\n              }\n            } else if (longhand === backgroundImage.property) {\n              if (v === \"none\") {\n                bg.push(value);\n              }\n            } else if (longhand === backgroundColor.property) {\n              if (v === \"transparent\") {\n                bg.push(value);\n              }\n            }\n          }\n        }\n        backgrounds.push(bg.join(\" \"));\n      }\n      const priority = this._priorities.get(property) ?? \"\";\n      for (const [longhand, value] of bgMap) {\n        this._setProperty(longhand, value.join(\", \"), priority);\n      }\n      this._setProperty(property, backgrounds.join(\", \"), priority);\n    }\n  },\n  get() {\n    const v = this.getPropertyValue(property);\n    if (parsers.hasVarFunc(v)) {\n      return v;\n    }\n    const bgMap = new Map();\n    let l = 0;\n    for (const [longhand] of shorthandFor) {\n      const val = this.getPropertyValue(longhand);\n      if (longhand === backgroundImage.property) {\n        if (val === \"none\" && v === \"none\" && this.getPropertyValue(backgroundColor.property) === \"transparent\") {\n          return val;\n        }\n        if (val !== initialValues.get(longhand)) {\n          const imgValues = parsers.splitValue(val, {\n            delimiter: \",\"\n          });\n          l = imgValues.length;\n          bgMap.set(longhand, imgValues);\n        }\n      } else if (longhand === backgroundColor.property) {\n        if (val !== initialValues.get(longhand) || v.includes(val)) {\n          bgMap.set(longhand, [val]);\n        }\n      } else if (val !== initialValues.get(longhand)) {\n        bgMap.set(\n          longhand,\n          parsers.splitValue(val, {\n            delimiter: \",\"\n          })\n        );\n      }\n    }\n    if (l === 0) {\n      const bgColArr = bgMap.get(backgroundColor.property);\n      const background = bgColArr ? bgColArr[0] : null;\n      if (background) {\n        return background;\n      }\n      return \"\";\n    }\n    const bgValues = [];\n    for (let i = 0; i < l; i++) {\n      bgValues[i] = [];\n    }\n    for (const [longhand, values] of bgMap) {\n      for (let i = 0; i < l; i++) {\n        switch (longhand) {\n          case backgroundColor.property: {\n            if (i === l - 1) {\n              const value = values[0];\n              if (parsers.hasVarFunc(value)) {\n                return \"\";\n              }\n              if (value && value !== initialValues.get(longhand)) {\n                const bgValue = bgValues[i];\n                bgValue.push(value);\n              }\n            }\n            break;\n          }\n          case backgroundSize.property: {\n            const value = values[i];\n            if (parsers.hasVarFunc(value)) {\n              return \"\";\n            }\n            if (value && value !== initialValues.get(longhand)) {\n              const bgValue = bgValues[i];\n              bgValue.push(`/ ${value}`);\n            }\n            break;\n          }\n          default: {\n            const value = values[i];\n            if (parsers.hasVarFunc(value)) {\n              return \"\";\n            }\n            if (value && value !== initialValues.get(longhand)) {\n              const bgValue = bgValues[i];\n              bgValue.push(value);\n            }\n          }\n        }\n      }\n    }\n    const backgrounds = [];\n    for (const bgValue of bgValues) {\n      backgrounds.push(bgValue.join(\" \"));\n    }\n    return backgrounds.join(\", \");\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the background property value.\n *\n * @param {string} v - The value to parse.\n * @returns {Array<object>|undefined} The parsed background values or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  } else if (parsers.hasCalcFunc(v)) {\n    v = parsers.resolveCalc(v);\n  }\n  if (!parsers.isValidPropertyValue(property, v)) {\n    return;\n  }\n  const values = parsers.splitValue(v, {\n    delimiter: \",\"\n  });\n  const bgValues = [];\n  const l = values.length;\n  for (let i = 0; i < l; i++) {\n    let bg = {\n      [backgroundImage.property]: initialValues.get(backgroundImage.property),\n      [backgroundPosition.property]: initialValues.get(backgroundPosition.property),\n      [backgroundSize.property]: initialValues.get(backgroundSize.property),\n      [backgroundRepeat.property]: initialValues.get(backgroundRepeat.property),\n      [backgroundOrigin.property]: initialValues.get(backgroundOrigin.property),\n      [backgroundClip.property]: initialValues.get(backgroundClip.property),\n      [backgroundAttachment.property]: initialValues.get(backgroundAttachment.property),\n      [backgroundColor.property]: initialValues.get(backgroundColor.property)\n    };\n    if (l > 1 && i !== l - 1) {\n      bg = {\n        [backgroundImage.property]: initialValues.get(backgroundImage.property),\n        [backgroundPosition.property]: initialValues.get(backgroundPosition.property),\n        [backgroundSize.property]: initialValues.get(backgroundSize.property),\n        [backgroundRepeat.property]: initialValues.get(backgroundRepeat.property),\n        [backgroundOrigin.property]: initialValues.get(backgroundOrigin.property),\n        [backgroundClip.property]: initialValues.get(backgroundClip.property),\n        [backgroundAttachment.property]: initialValues.get(backgroundAttachment.property)\n      };\n    }\n    const bgPosition = [];\n    const bgSize = [];\n    const bgRepeat = [];\n    const bgBox = [];\n    const bgParts = parsers.splitValue(values[i], {\n      delimiter: \"/\"\n    });\n    if (!bgParts.length || bgParts.length > 2) {\n      return;\n    }\n    const [bgPart1, bgPart2 = \"\"] = bgParts;\n    const parts1 = parsers.splitValue(bgPart1);\n    for (const part of parts1) {\n      let partValid = false;\n      for (const [longhand, value] of shorthandFor) {\n        if (parsers.isValidPropertyValue(longhand, part)) {\n          partValid = true;\n          switch (longhand) {\n            case backgroundClip.property:\n            case backgroundOrigin.property: {\n              const parsedValue = value.parse(part);\n              if (parsedValue) {\n                bgBox.push(parsedValue);\n              }\n              break;\n            }\n            case backgroundColor.property: {\n              if (i !== values.length - 1) {\n                return;\n              }\n              const parsedValue = value.parse(part);\n              if (parsedValue) {\n                bg[longhand] = parsedValue;\n              }\n              break;\n            }\n            case backgroundPosition.property: {\n              const parsedValue = value.parse(part);\n              if (parsedValue) {\n                bgPosition.push(parsedValue);\n              }\n              break;\n            }\n            case backgroundRepeat.property: {\n              const parsedValue = value.parse(part);\n              if (parsedValue) {\n                bgRepeat.push(parsedValue);\n              }\n              break;\n            }\n            case backgroundSize.property: {\n              break;\n            }\n            default: {\n              const parsedValue = value.parse(part);\n              if (parsedValue) {\n                bg[longhand] = parsedValue;\n              }\n            }\n          }\n        }\n      }\n      if (!partValid) {\n        return;\n      }\n    }\n    if (bgPart2) {\n      const parts2 = parsers.splitValue(bgPart2);\n      for (const part of parts2) {\n        let partValid = false;\n        for (const [longhand, value] of shorthandFor) {\n          if (parsers.isValidPropertyValue(longhand, part)) {\n            partValid = true;\n            switch (longhand) {\n              case backgroundClip.property:\n              case backgroundOrigin.property: {\n                const parsedValue = value.parse(part);\n                if (parsedValue) {\n                  bgBox.push(parsedValue);\n                }\n                break;\n              }\n              case backgroundColor.property: {\n                if (i !== l - 1) {\n                  return;\n                }\n                const parsedValue = value.parse(part);\n                if (parsedValue) {\n                  bg[longhand] = parsedValue;\n                }\n                break;\n              }\n              case backgroundPosition.property: {\n                break;\n              }\n              case backgroundRepeat.property: {\n                const parsedValue = value.parse(part);\n                if (parsedValue) {\n                  bgRepeat.push(parsedValue);\n                }\n                break;\n              }\n              case backgroundSize.property: {\n                const parsedValue = value.parse(part);\n                if (parsedValue) {\n                  bgSize.push(parsedValue);\n                }\n                break;\n              }\n              default: {\n                const parsedValue = value.parse(part);\n                if (parsedValue) {\n                  bg[longhand] = parsedValue;\n                }\n              }\n            }\n          }\n        }\n        if (!partValid) {\n          return;\n        }\n      }\n    }\n    if (bgPosition.length) {\n      const { parse: parser } = shorthandFor.get(backgroundPosition.property);\n      const value = parser(bgPosition.join(\" \"));\n      if (value) {\n        bg[backgroundPosition.property] = value;\n      }\n    }\n    if (bgSize.length) {\n      const { parse: parser } = shorthandFor.get(backgroundSize.property);\n      const value = parser(bgSize.join(\" \"));\n      if (value) {\n        bg[backgroundSize.property] = value;\n      }\n    }\n    if (bgRepeat.length) {\n      const { parse: parser } = shorthandFor.get(backgroundRepeat.property);\n      const value = parser(bgRepeat.join(\" \"));\n      if (value) {\n        bg[backgroundRepeat.property] = value;\n      }\n    }\n    if (bgBox.length) {\n      switch (bgBox.length) {\n        case 1: {\n          const [value] = bgBox;\n          bg[backgroundOrigin.property] = value;\n          bg[backgroundClip.property] = value;\n          break;\n        }\n        case 2: {\n          const [value1, value2] = bgBox;\n          bg[backgroundOrigin.property] = value1;\n          bg[backgroundClip.property] = value2;\n          break;\n        }\n        default: {\n          return;\n        }\n      }\n    }\n    bgValues.push(bg);\n  }\n  return bgValues;\n}\n\nmodule.exports = {\n  descriptor,\n  initialValues,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-top-width\";\nconst lineShorthand = \"border-width\";\nconst positionShorthand = \"border-top\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-top-width property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-right-width\";\nconst lineShorthand = \"border-width\";\nconst positionShorthand = \"border-right\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-right-width property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-bottom-width\";\nconst lineShorthand = \"border-width\";\nconst positionShorthand = \"border-bottom\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-bottom-width property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-left-width\";\nconst lineShorthand = \"border-width\";\nconst positionShorthand = \"border-left\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-left-width property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderTopWidth = require(\"./borderTopWidth\");\nconst borderRightWidth = require(\"./borderRightWidth\");\nconst borderBottomWidth = require(\"./borderBottomWidth\");\nconst borderLeftWidth = require(\"./borderLeftWidth\");\n\nconst property = \"border-width\";\nconst shorthand = \"border\";\n\nconst shorthandFor = new Map([\n  [borderTopWidth.property, borderTopWidth],\n  [borderRightWidth.property, borderRightWidth],\n  [borderBottomWidth.property, borderBottomWidth],\n  [borderLeftWidth.property, borderLeftWidth]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (Array.isArray(val) || typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-width property value.\n *\n * @param {string} v - The value to parse.\n * @returns {Array<string>|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.parsePropertyValue(property, v);\n  const parsedValues = [];\n  if (Array.isArray(values) && values.length) {\n    if (values.length > 4) {\n      return;\n    }\n    for (const value of values) {\n      const parsedValue = parsers.resolveNumericValue([value], {\n        length: values.length,\n        type: \"length\"\n      });\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    }\n  } else if (typeof values === \"string\") {\n    parsedValues.push(values);\n  }\n  if (parsedValues.length) {\n    switch (parsedValues.length) {\n      case 1: {\n        return parsedValues;\n      }\n      case 2: {\n        const [val1, val2] = parsedValues;\n        if (val1 === val2) {\n          return [val1];\n        }\n        return parsedValues;\n      }\n      case 3: {\n        const [val1, val2, val3] = parsedValues;\n        if (val1 === val3) {\n          if (val1 === val2) {\n            return [val1];\n          }\n          return [val1, val2];\n        }\n        return parsedValues;\n      }\n      case 4: {\n        const [val1, val2, val3, val4] = parsedValues;\n        if (val2 === val4) {\n          if (val1 === val3) {\n            if (val1 === val2) {\n              return [val1];\n            }\n            return [val1, val2];\n          }\n          return [val1, val2, val3];\n        }\n        return parsedValues;\n      }\n      default:\n    }\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-top-style\";\nconst lineShorthand = \"border-style\";\nconst positionShorthand = \"border-top\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-top-style property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveKeywordValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-right-style\";\nconst lineShorthand = \"border-style\";\nconst positionShorthand = \"border-right\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-right-style property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveKeywordValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-bottom-style\";\nconst lineShorthand = \"border-style\";\nconst positionShorthand = \"border-bottom\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-bottom-style property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveKeywordValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-left-style\";\nconst lineShorthand = \"border-style\";\nconst positionShorthand = \"border-left\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-left-style property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveKeywordValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderTopStyle = require(\"./borderTopStyle\");\nconst borderRightStyle = require(\"./borderRightStyle\");\nconst borderBottomStyle = require(\"./borderBottomStyle\");\nconst borderLeftStyle = require(\"./borderLeftStyle\");\n\nconst property = \"border-style\";\nconst shorthand = \"border\";\n\nconst shorthandFor = new Map([\n  [borderTopStyle.property, borderTopStyle],\n  [borderRightStyle.property, borderRightStyle],\n  [borderBottomStyle.property, borderBottomStyle],\n  [borderLeftStyle.property, borderLeftStyle]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (Array.isArray(val) || typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-style property value.\n *\n * @param {string} v - The value to parse.\n * @returns {Array<string>|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.parsePropertyValue(property, v);\n  const parsedValues = [];\n  if (Array.isArray(values) && values.length) {\n    if (values.length > 4) {\n      return;\n    }\n    for (const value of values) {\n      const parsedValue = parsers.resolveKeywordValue([value], {\n        length: values.length\n      });\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    }\n  } else if (typeof values === \"string\") {\n    parsedValues.push(values);\n  }\n  if (parsedValues.length) {\n    switch (parsedValues.length) {\n      case 1: {\n        return parsedValues;\n      }\n      case 2: {\n        const [val1, val2] = parsedValues;\n        if (val1 === val2) {\n          return [val1];\n        }\n        return parsedValues;\n      }\n      case 3: {\n        const [val1, val2, val3] = parsedValues;\n        if (val1 === val3) {\n          if (val1 === val2) {\n            return [val1];\n          }\n          return [val1, val2];\n        }\n        return parsedValues;\n      }\n      case 4: {\n        const [val1, val2, val3, val4] = parsedValues;\n        if (val2 === val4) {\n          if (val1 === val3) {\n            if (val1 === val2) {\n              return [val1];\n            }\n            return [val1, val2];\n          }\n          return [val1, val2, val3];\n        }\n        return parsedValues;\n      }\n      default:\n    }\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-top-color\";\nconst lineShorthand = \"border-color\";\nconst positionShorthand = \"border-top\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-top-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-right-color\";\nconst lineShorthand = \"border-color\";\nconst positionShorthand = \"border-right\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-right-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-bottom-color\";\nconst lineShorthand = \"border-color\";\nconst positionShorthand = \"border-bottom\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-bottom-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-left-color\";\nconst lineShorthand = \"border-color\";\nconst positionShorthand = \"border-left\";\nconst shorthand = \"border\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const shorthandPriority = this._priorities.get(shorthand);\n        const linePriority = this._priorities.get(lineShorthand);\n        const positionPriority = this._priorities.get(positionShorthand);\n        const priority =\n          !(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)\n            ? this._priorities.get(property)\n            : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-left-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderTopColor = require(\"./borderTopColor\");\nconst borderRightColor = require(\"./borderRightColor\");\nconst borderBottomColor = require(\"./borderBottomColor\");\nconst borderLeftColor = require(\"./borderLeftColor\");\n\nconst property = \"border-color\";\nconst shorthand = \"border\";\n\nconst shorthandFor = new Map([\n  [borderTopColor.property, borderTopColor],\n  [borderRightColor.property, borderRightColor],\n  [borderBottomColor.property, borderBottomColor],\n  [borderLeftColor.property, borderLeftColor]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (Array.isArray(val) || typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {Array<string>|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.parsePropertyValue(property, v);\n  const parsedValues = [];\n  if (Array.isArray(values) && values.length) {\n    if (values.length > 4) {\n      return;\n    }\n    for (const value of values) {\n      const parsedValue = parsers.resolveColorValue([value], {\n        length: values.length\n      });\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    }\n  } else if (typeof values === \"string\") {\n    parsedValues.push(values);\n  }\n  if (parsedValues.length) {\n    switch (parsedValues.length) {\n      case 1: {\n        return parsedValues;\n      }\n      case 2: {\n        const [val1, val2] = parsedValues;\n        if (val1 === val2) {\n          return [val1];\n        }\n        return parsedValues;\n      }\n      case 3: {\n        const [val1, val2, val3] = parsedValues;\n        if (val1 === val3) {\n          if (val1 === val2) {\n            return [val1];\n          }\n          return [val1, val2];\n        }\n        return parsedValues;\n      }\n      case 4: {\n        const [val1, val2, val3, val4] = parsedValues;\n        if (val2 === val4) {\n          if (val1 === val3) {\n            if (val1 === val2) {\n              return [val1];\n            }\n            return [val1, val2];\n          }\n          return [val1, val2, val3];\n        }\n        return parsedValues;\n      }\n      default:\n    }\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderTopWidth = require(\"./borderTopWidth\");\nconst borderTopStyle = require(\"./borderTopStyle\");\nconst borderTopColor = require(\"./borderTopColor\");\n\nconst property = \"border-top\";\nconst shorthand = \"border\";\n\nconst subProps = {\n  width: borderTopWidth.property,\n  style: borderTopStyle.property,\n  color: borderTopColor.property\n};\n\nconst initialValues = new Map([\n  [borderTopWidth.property, \"medium\"],\n  [borderTopStyle.property, \"none\"],\n  [borderTopColor.property, \"currentcolor\"]\n]);\n\nconst shorthandFor = new Map([\n  [borderTopWidth.property, borderTopWidth],\n  [borderTopStyle.property, borderTopStyle],\n  [borderTopColor.property, borderTopColor]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (val || typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-top property value.\n *\n * @param {string} v - The value to parse.\n * @returns {object|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v);\n  const parsedValues = new Map();\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);\n      if (typeof parsedValue === \"string\") {\n        return parsedValue;\n      } else if (Array.isArray(parsedValue)) {\n        const [key, resolvedVal] = parsedValue;\n        parsedValues.set(key, resolvedVal);\n      } else {\n        return;\n      }\n    } else {\n      return;\n    }\n  }\n  if (parsedValues.size) {\n    const keys = shorthandFor.keys();\n    const obj = {\n      [borderTopWidth.property]: \"medium\"\n    };\n    for (const key of keys) {\n      if (parsedValues.has(key)) {\n        const parsedValue = parsedValues.get(key);\n        if (parsedValue !== initialValues.get(key)) {\n          obj[key] = parsedValues.get(key);\n          if (obj[borderTopWidth.property] && obj[borderTopWidth.property] === \"medium\") {\n            delete obj[borderTopWidth.property];\n          }\n        }\n      }\n    }\n    return obj;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  initialValues,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderRightWidth = require(\"./borderRightWidth\");\nconst borderRightStyle = require(\"./borderRightStyle\");\nconst borderRightColor = require(\"./borderRightColor\");\n\nconst property = \"border-right\";\nconst shorthand = \"border\";\n\nconst subProps = {\n  width: borderRightWidth.property,\n  style: borderRightStyle.property,\n  color: borderRightColor.property\n};\n\nconst initialValues = new Map([\n  [borderRightWidth.property, \"medium\"],\n  [borderRightStyle.property, \"none\"],\n  [borderRightColor.property, \"currentcolor\"]\n]);\n\nconst shorthandFor = new Map([\n  [borderRightWidth.property, borderRightWidth],\n  [borderRightStyle.property, borderRightStyle],\n  [borderRightColor.property, borderRightColor]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (val || typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-right property value.\n *\n * @param {string} v - The value to parse.\n * @returns {object|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v);\n  const parsedValues = new Map();\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);\n      if (typeof parsedValue === \"string\") {\n        return parsedValue;\n      } else if (Array.isArray(parsedValue)) {\n        const [key, resolvedVal] = parsedValue;\n        parsedValues.set(key, resolvedVal);\n      } else {\n        return;\n      }\n    } else {\n      return;\n    }\n  }\n  if (parsedValues.size) {\n    const keys = shorthandFor.keys();\n    const obj = {\n      [borderRightWidth.property]: \"medium\"\n    };\n    for (const key of keys) {\n      if (parsedValues.has(key)) {\n        const parsedValue = parsedValues.get(key);\n        if (parsedValue !== initialValues.get(key)) {\n          obj[key] = parsedValues.get(key);\n          if (obj[borderRightWidth.property] && obj[borderRightWidth.property] === \"medium\") {\n            delete obj[borderRightWidth.property];\n          }\n        }\n      }\n    }\n    return obj;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  initialValues,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderBottomWidth = require(\"./borderBottomWidth\");\nconst borderBottomStyle = require(\"./borderBottomStyle\");\nconst borderBottomColor = require(\"./borderBottomColor\");\n\nconst property = \"border-bottom\";\nconst shorthand = \"border\";\n\nconst subProps = {\n  width: borderBottomWidth.property,\n  style: borderBottomStyle.property,\n  color: borderBottomColor.property\n};\n\nconst initialValues = new Map([\n  [borderBottomWidth.property, \"medium\"],\n  [borderBottomStyle.property, \"none\"],\n  [borderBottomColor.property, \"currentcolor\"]\n]);\n\nconst shorthandFor = new Map([\n  [borderBottomWidth.property, borderBottomWidth],\n  [borderBottomStyle.property, borderBottomStyle],\n  [borderBottomColor.property, borderBottomColor]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (val || typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-bottom property value.\n *\n * @param {string} v - The value to parse.\n * @returns {object|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v);\n  const parsedValues = new Map();\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);\n      if (typeof parsedValue === \"string\") {\n        return parsedValue;\n      } else if (Array.isArray(parsedValue)) {\n        const [key, resolvedVal] = parsedValue;\n        parsedValues.set(key, resolvedVal);\n      } else {\n        return;\n      }\n    } else {\n      return;\n    }\n  }\n  if (parsedValues.size) {\n    const keys = shorthandFor.keys();\n    const obj = {\n      [borderBottomWidth.property]: \"medium\"\n    };\n    for (const key of keys) {\n      if (parsedValues.has(key)) {\n        const parsedValue = parsedValues.get(key);\n        if (parsedValue !== initialValues.get(key)) {\n          obj[key] = parsedValues.get(key);\n          if (obj[borderBottomWidth.property] && obj[borderBottomWidth.property] === \"medium\") {\n            delete obj[borderBottomWidth.property];\n          }\n        }\n      }\n    }\n    return obj;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  initialValues,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderLeftWidth = require(\"./borderLeftWidth\");\nconst borderLeftStyle = require(\"./borderLeftStyle\");\nconst borderLeftColor = require(\"./borderLeftColor\");\n\nconst property = \"border-left\";\nconst shorthand = \"border\";\n\nconst subProps = {\n  width: borderLeftWidth.property,\n  style: borderLeftStyle.property,\n  color: borderLeftColor.property\n};\n\nconst initialValues = new Map([\n  [borderLeftWidth.property, \"medium\"],\n  [borderLeftStyle.property, \"none\"],\n  [borderLeftColor.property, \"currentcolor\"]\n]);\n\nconst shorthandFor = new Map([\n  [borderLeftWidth.property, borderLeftWidth],\n  [borderLeftStyle.property, borderLeftStyle],\n  [borderLeftColor.property, borderLeftColor]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (val || typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-left property value.\n *\n * @param {string} v - The value to parse.\n * @returns {object|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v);\n  const parsedValues = new Map();\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);\n      if (typeof parsedValue === \"string\") {\n        return parsedValue;\n      } else if (Array.isArray(parsedValue)) {\n        const [key, resolvedVal] = parsedValue;\n        parsedValues.set(key, resolvedVal);\n      } else {\n        return;\n      }\n    } else {\n      return;\n    }\n  }\n  if (parsedValues.size) {\n    const keys = shorthandFor.keys();\n    const obj = {\n      [borderLeftWidth.property]: \"medium\"\n    };\n    for (const key of keys) {\n      if (parsedValues.has(key)) {\n        const parsedValue = parsedValues.get(key);\n        if (parsedValue !== initialValues.get(key)) {\n          obj[key] = parsedValues.get(key);\n          if (obj[borderLeftWidth.property] && obj[borderLeftWidth.property] === \"medium\") {\n            delete obj[borderLeftWidth.property];\n          }\n        }\n      }\n    }\n    return obj;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  initialValues,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst borderWidth = require(\"./borderWidth\");\nconst borderStyle = require(\"./borderStyle\");\nconst borderColor = require(\"./borderColor\");\nconst borderTop = require(\"./borderTop\");\nconst borderRight = require(\"./borderRight\");\nconst borderBottom = require(\"./borderBottom\");\nconst borderLeft = require(\"./borderLeft\");\n\nconst property = \"border\";\n\nconst subProps = {\n  width: borderWidth.property,\n  style: borderStyle.property,\n  color: borderColor.property\n};\n\nconst initialValues = new Map([\n  [borderWidth.property, \"medium\"],\n  [borderStyle.property, \"none\"],\n  [borderColor.property, \"currentcolor\"]\n]);\n\nconst shorthandFor = new Map([\n  [borderWidth.property, borderWidth],\n  [borderStyle.property, borderStyle],\n  [borderColor.property, borderColor]\n]);\n\nconst positionShorthandFor = new Map([\n  [borderTop.property, borderTop],\n  [borderRight.property, borderRight],\n  [borderBottom.property, borderBottom],\n  [borderLeft.property, borderLeft]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._borderSetter(property, v, \"\");\n    } else {\n      const val = parse(v);\n      if (val || typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._borderSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border property value.\n *\n * @param {string} v - The value to parse.\n * @returns {object|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\" || parsers.hasVarFunc(v)) {\n    return v;\n  }\n  const values = parsers.splitValue(v);\n  const parsedValues = new Map();\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);\n      if (typeof parsedValue === \"string\") {\n        return parsedValue;\n      } else if (Array.isArray(parsedValue)) {\n        const [key, resolvedVal] = parsedValue;\n        parsedValues.set(key, resolvedVal);\n      } else {\n        return;\n      }\n    } else {\n      return;\n    }\n  }\n  if (parsedValues.size) {\n    const keys = shorthandFor.keys();\n    const obj = {\n      [borderWidth.property]: \"medium\"\n    };\n    for (const key of keys) {\n      if (parsedValues.has(key)) {\n        const parsedValue = parsedValues.get(key);\n        if (parsedValue !== initialValues.get(key)) {\n          obj[key] = parsedValues.get(key);\n          if (obj[borderWidth.property] && obj[borderWidth.property] === \"medium\") {\n            delete obj[borderWidth.property];\n          }\n        }\n      }\n    }\n    return obj;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  initialValues,\n  parse,\n  positionShorthandFor,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-block-end-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-block-end-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-block-start-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-block-start-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-collapse\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-collapse property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveKeywordValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-inline-end-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-inline-end-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-inline-start-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-inline-start-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"border-spacing\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the border-spacing property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length) {\n    switch (value.length) {\n      case 1: {\n        return parsers.resolveNumericValue(value, {\n          type: \"length\"\n        });\n      }\n      case 2: {\n        const [part1, part2] = value;\n        const val1 = parsers.resolveNumericValue([part1], {\n          type: \"length\"\n        });\n        const val2 = parsers.resolveNumericValue([part2], {\n          type: \"length\"\n        });\n        if (val1 && val2) {\n          return `${val1} ${val2}`;\n        }\n        break;\n      }\n      default:\n    }\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"bottom\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the bottom property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"clear\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the clear property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveKeywordValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n// deprecated\n// @see https://drafts.csswg.org/css-masking-1/#clip-property\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"clip\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the clip property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    const [{ name, type, value: itemValue }] = value;\n    switch (type) {\n      case AST_TYPES.FUNCTION: {\n        const values = parsers.splitValue(itemValue, {\n          delimiter: \",\"\n        });\n        const parsedValues = [];\n        for (const item of values) {\n          const parsedValue = parsers.parseCSS(item, { context: \"value\" });\n          const val = parsers.resolveNumericValue(parsedValue.children, {\n            type: \"length\"\n          });\n          if (val) {\n            parsedValues.push(val);\n          } else {\n            return;\n          }\n        }\n        return `${name}(${parsedValues.join(\", \")})`;\n      }\n      case AST_TYPES.GLOBAL_KEYWORD:\n      case AST_TYPES.IDENTIFIER: {\n        return name;\n      }\n      default:\n    }\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"display\";\n\n/* keywords */\nconst displayOutside = [\"block\", \"inline\", \"run-in\"];\nconst displayFlow = [\"flow\", \"flow-root\"];\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the display property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length) {\n    switch (value.length) {\n      case 1: {\n        const [{ name, type }] = value;\n        switch (type) {\n          case AST_TYPES.GLOBAL_KEYWORD: {\n            return name;\n          }\n          case AST_TYPES.IDENTIFIER: {\n            if (name === \"flow\") {\n              return \"block\";\n            }\n            return name;\n          }\n          default:\n        }\n        break;\n      }\n      case 2: {\n        const [part1, part2] = value;\n        const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;\n        const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name;\n        if (val1 && val2) {\n          let outerValue = \"\";\n          let innerValue = \"\";\n          if (val1 === \"list-item\") {\n            outerValue = val2;\n            innerValue = val1;\n          } else if (val2 === \"list-item\") {\n            outerValue = val1;\n            innerValue = val2;\n          } else if (displayOutside.includes(val1)) {\n            outerValue = val1;\n            innerValue = val2;\n          } else if (displayOutside.includes(val2)) {\n            outerValue = val2;\n            innerValue = val1;\n          }\n          if (innerValue === \"list-item\") {\n            switch (outerValue) {\n              case \"block\":\n              case \"flow\": {\n                return innerValue;\n              }\n              case \"flow-root\":\n              case \"inline\":\n              case \"run-in\": {\n                return `${outerValue} ${innerValue}`;\n              }\n              default:\n            }\n          } else if (outerValue === \"block\") {\n            switch (innerValue) {\n              case \"flow\": {\n                return outerValue;\n              }\n              case \"flow-root\":\n              case \"flex\":\n              case \"grid\":\n              case \"table\": {\n                return innerValue;\n              }\n              case \"ruby\": {\n                return `${outerValue} ${innerValue}`;\n              }\n              default:\n            }\n          } else if (outerValue === \"inline\") {\n            switch (innerValue) {\n              case \"flow\": {\n                return outerValue;\n              }\n              case \"flow-root\": {\n                return `${outerValue}-block`;\n              }\n              case \"flex\":\n              case \"grid\":\n              case \"table\": {\n                return `${outerValue}-${innerValue}`;\n              }\n              case \"ruby\": {\n                return innerValue;\n              }\n              default:\n            }\n          } else if (outerValue === \"run-in\") {\n            switch (innerValue) {\n              case \"flow\": {\n                return outerValue;\n              }\n              case \"flow-root\":\n              case \"flex\":\n              case \"grid\":\n              case \"table\":\n              case \"ruby\": {\n                return `${outerValue} ${innerValue}`;\n              }\n              default:\n            }\n          }\n        }\n        break;\n      }\n      case 3: {\n        const [part1, part2, part3] = value;\n        const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;\n        const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name;\n        const val3 = part3.type === AST_TYPES.IDENTIFIER && part3.name;\n        if (val1 && val2 && part3) {\n          let outerValue = \"\";\n          let flowValue = \"\";\n          let listItemValue = \"\";\n          if (val1 === \"list-item\") {\n            listItemValue = val1;\n            if (displayFlow.includes(val2)) {\n              flowValue = val2;\n              outerValue = val3;\n            } else if (displayFlow.includes(val3)) {\n              flowValue = val3;\n              outerValue = val2;\n            }\n          } else if (val2 === \"list-item\") {\n            listItemValue = val2;\n            if (displayFlow.includes(val1)) {\n              flowValue = val1;\n              outerValue = val3;\n            } else if (displayFlow.includes(val3)) {\n              flowValue = val3;\n              outerValue = val1;\n            }\n          } else if (val3 === \"list-item\") {\n            listItemValue = val3;\n            if (displayFlow.includes(val1)) {\n              flowValue = val1;\n              outerValue = val2;\n            } else if (displayFlow.includes(val2)) {\n              flowValue = val2;\n              outerValue = val1;\n            }\n          }\n          if (outerValue && flowValue && listItemValue) {\n            switch (outerValue) {\n              case \"block\": {\n                if (flowValue === \"flow\") {\n                  return listItemValue;\n                }\n                return `${flowValue} ${listItemValue}`;\n              }\n              case \"inline\":\n              case \"run-in\": {\n                if (flowValue === \"flow\") {\n                  return `${outerValue} ${listItemValue}`;\n                }\n                return `${outerValue} ${flowValue} ${listItemValue}`;\n              }\n            }\n          }\n        }\n        break;\n      }\n      default:\n    }\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"flex-grow\";\nconst shorthand = \"flex\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._flexBoxSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the flex-grow property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(\"flex-grow\", v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"flex-shrink\";\nconst shorthand = \"flex\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._flexBoxSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the flex-shrink property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"flex-basis\";\nconst shorthand = \"flex\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._flexBoxSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the flex-basis property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst flexGrow = require(\"./flexGrow\");\nconst flexShrink = require(\"./flexShrink\");\nconst flexBasis = require(\"./flexBasis\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"flex\";\n\nconst initialValues = new Map([\n  [flexGrow.property, \"0\"],\n  [flexShrink.property, \"1\"],\n  [flexBasis.property, \"auto\"]\n]);\n\nconst shorthandFor = new Map([\n  [flexGrow.property, flexGrow],\n  [flexShrink.property, flexShrink],\n  [flexBasis.property, flexBasis]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      for (const [longhand] of shorthandFor) {\n        this._setProperty(longhand, \"\");\n      }\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      const priority = this._priorities.get(property) ?? \"\";\n      if (typeof val === \"string\") {\n        for (const [longhand] of shorthandFor) {\n          this._setProperty(longhand, val, priority);\n        }\n        this._setProperty(property, val, priority);\n      } else if (val) {\n        const values = [];\n        for (const [longhand, value] of Object.entries(val)) {\n          values.push(value);\n          this._setProperty(longhand, value, priority);\n        }\n        this._setProperty(property, values.join(\" \"), priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the flex property value.\n *\n * @param {string} v - The value to parse.\n * @returns {object|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length) {\n    const flex = {\n      [flexGrow.property]: \"1\",\n      [flexShrink.property]: \"1\",\n      [flexBasis.property]: \"0%\"\n    };\n    if (value.length === 1) {\n      const [{ isNumber, name, type, unit, value: itemValue }] = value;\n      switch (type) {\n        case AST_TYPES.CALC: {\n          if (isNumber) {\n            flex[flexGrow.property] = `${name}(${itemValue})`;\n            return flex;\n          }\n          flex[flexBasis.property] = `${name}(${itemValue})`;\n          return flex;\n        }\n        case AST_TYPES.DIMENSION: {\n          flex[flexBasis.property] = `${itemValue}${unit}`;\n          return flex;\n        }\n        case AST_TYPES.GLOBAL_KEYWORD: {\n          return name;\n        }\n        case AST_TYPES.IDENTIFIER: {\n          if (name === \"none\") {\n            return {\n              [flexGrow.property]: \"0\",\n              [flexShrink.property]: \"0\",\n              [flexBasis.property]: \"auto\"\n            };\n          }\n          flex[flexBasis.property] = name;\n          return flex;\n        }\n        case AST_TYPES.NUMBER: {\n          flex[flexGrow.property] = itemValue;\n          return flex;\n        }\n        case AST_TYPES.PERCENTAGE: {\n          flex[flexBasis.property] = `${itemValue}%`;\n          return flex;\n        }\n        default:\n      }\n    } else {\n      const [val1, val2, val3] = value;\n      if (val1.type === AST_TYPES.CALC && val1.isNumber) {\n        flex[flexGrow.property] = `${val1.name}(${val1.value})`;\n      } else if (val1.type === AST_TYPES.NUMBER) {\n        flex[flexGrow.property] = val1.value;\n      } else {\n        return;\n      }\n      if (val3) {\n        if (val2.type === AST_TYPES.CALC && val2.isNumber) {\n          flex[flexShrink.property] = `${val2.name}(${val2.value})`;\n        } else if (val2.type === AST_TYPES.NUMBER) {\n          flex[flexShrink.property] = val2.value;\n        } else {\n          return;\n        }\n        if (val3.type === AST_TYPES.GLOBAL_KEYWORD || val3.type === AST_TYPES.IDENTIFIER) {\n          flex[flexBasis.property] = val3.name;\n        } else if (val3.type === AST_TYPES.CALC && !val3.isNumber) {\n          flex[flexBasis.property] = `${val3.name}(${val3.value})`;\n        } else if (val3.type === AST_TYPES.DIMENSION) {\n          flex[flexBasis.property] = `${val3.value}${val3.unit}`;\n        } else if (val3.type === AST_TYPES.PERCENTAGE) {\n          flex[flexBasis.property] = `${val3.value}%`;\n        } else {\n          return;\n        }\n      } else {\n        switch (val2.type) {\n          case AST_TYPES.CALC: {\n            if (val2.isNumber) {\n              flex[flexShrink.property] = `${val2.name}(${val2.value})`;\n            } else {\n              flex[flexBasis.property] = `${val2.name}(${val2.value})`;\n            }\n            break;\n          }\n          case AST_TYPES.DIMENSION: {\n            flex[flexBasis.property] = `${val2.value}${val2.unit}`;\n            break;\n          }\n          case AST_TYPES.NUMBER: {\n            flex[flexShrink.property] = val2.value;\n            break;\n          }\n          case AST_TYPES.PERCENTAGE: {\n            flex[flexBasis.property] = `${val2.value}%`;\n            break;\n          }\n          case AST_TYPES.IDENTIFIER: {\n            flex[flexBasis.property] = val2.name;\n            break;\n          }\n          default: {\n            return;\n          }\n        }\n      }\n      return flex;\n    }\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  initialValues,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"float\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the float property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveKeywordValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"flood-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the flood-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"font-style\";\nconst shorthand = \"font\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the font-style property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length) {\n    if (value.length === 1) {\n      const [{ name, type }] = value;\n      switch (type) {\n        case AST_TYPES.GLOBAL_KEYWORD:\n        case AST_TYPES.IDENTIFIER: {\n          return name;\n        }\n        default:\n      }\n    } else if (value.length === 2) {\n      const [part1, part2] = value;\n      const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;\n      const val2 = parsers.resolveNumericValue([part2], {\n        type: \"angle\"\n      });\n      if (val1 && val1 === \"oblique\" && val2) {\n        return `${val1} ${val2}`;\n      }\n    }\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"font-variant\";\nconst shorthand = \"font\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the font-variant property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v);\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val);\n    if (Array.isArray(value) && value.length === 1) {\n      const parsedValue = parsers.resolveFunctionValue(value);\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    }\n  }\n  if (parsedValues.length) {\n    if (parsedValues.length > 1) {\n      if (parsedValues.includes(\"normal\") || parsedValues.includes(\"none\")) {\n        return;\n      }\n    }\n    return parsedValues.join(\" \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"font-weight\";\nconst shorthand = \"font\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the font-weight property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    const parsedValue = parsers.resolveNumericValue(value, {\n      min: 1,\n      max: 1000\n    });\n    if (!parsedValue) {\n      return;\n    }\n    return parsedValue;\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"font-size\";\nconst shorthand = \"font\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the font-size property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"line-height\";\nconst shorthand = \"font\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the line-height property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"font-family\";\nconst shorthand = \"font\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the font-family property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.splitValue(v, {\n    delimiter: \",\"\n  });\n  const parsedValues = [];\n  for (const val of values) {\n    const value = parsers.parsePropertyValue(property, val, {\n      caseSensitive: true\n    });\n    if (Array.isArray(value) && value.length) {\n      if (value.length === 1) {\n        const [{ name, type, value: itemValue }] = value;\n        switch (type) {\n          case AST_TYPES.FUNCTION: {\n            parsedValues.push(`${name}(${itemValue})`);\n            break;\n          }\n          case AST_TYPES.GLOBAL_KEYWORD:\n          case AST_TYPES.IDENTIFIER: {\n            if (name === \"undefined\") {\n              return;\n            }\n            parsedValues.push(name);\n            break;\n          }\n          case \"String\": {\n            const parsedValue = itemValue.replaceAll(\"\\\\\", \"\").replaceAll('\"', '\\\\\"');\n            parsedValues.push(`\"${parsedValue}\"`);\n            break;\n          }\n          default: {\n            return;\n          }\n        }\n      } else {\n        const parts = [];\n        for (const item of value) {\n          const { name, type } = item;\n          if (type !== AST_TYPES.IDENTIFIER) {\n            return;\n          }\n          parts.push(name);\n        }\n        const parsedValue = parts.join(\" \").replaceAll(\"\\\\\", \"\").replaceAll('\"', '\\\\\"');\n        parsedValues.push(`\"${parsedValue}\"`);\n      }\n    } else if (typeof value === \"string\") {\n      parsedValues.push(value);\n    } else {\n      return;\n    }\n  }\n  if (parsedValues.length) {\n    return parsedValues.join(\", \");\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst fontStyle = require(\"./fontStyle\");\nconst fontVariant = require(\"./fontVariant\");\nconst fontWeight = require(\"./fontWeight\");\nconst fontSize = require(\"./fontSize\");\nconst lineHeight = require(\"./lineHeight\");\nconst fontFamily = require(\"./fontFamily\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\nconst property = \"font\";\n\nconst shorthandFor = new Map([\n  [fontStyle.property, fontStyle],\n  [fontVariant.property, fontVariant],\n  [fontWeight.property, fontWeight],\n  [fontSize.property, fontSize],\n  [lineHeight.property, lineHeight],\n  [fontFamily.property, fontFamily]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (v === \"\" || parsers.hasVarFunc(v)) {\n      for (const [key] of shorthandFor) {\n        this._setProperty(key, \"\");\n      }\n      this._setProperty(property, v);\n    } else {\n      const obj = parse(v);\n      if (!obj) {\n        return;\n      }\n      const priority = this._priorities.get(property) ?? \"\";\n      const str = new Set();\n      for (const [key] of shorthandFor) {\n        const val = obj[key];\n        if (typeof val === \"string\") {\n          this._setProperty(key, val, priority);\n          if (val && val !== \"normal\" && !str.has(val)) {\n            if (key === lineHeight.property) {\n              str.add(`/ ${val}`);\n            } else {\n              str.add(val);\n            }\n          }\n        }\n      }\n      this._setProperty(property, [...str].join(\" \"), priority);\n    }\n  },\n  get() {\n    const val = this.getPropertyValue(property);\n    if (parsers.hasVarFunc(val)) {\n      return val;\n    }\n    const str = new Set();\n    for (const [key] of shorthandFor) {\n      const v = this.getPropertyValue(key);\n      if (parsers.hasVarFunc(v)) {\n        return \"\";\n      }\n      if (v && v !== \"normal\" && !str.has(v)) {\n        if (key === lineHeight.property) {\n          str.add(`/ ${v}`);\n        } else {\n          str.add(`${v}`);\n        }\n      }\n    }\n    return [...str].join(\" \");\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the font property value.\n *\n * @param {string} v - The value to parse.\n * @returns {object|undefined} The parsed value object or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  } else if (parsers.hasCalcFunc(v)) {\n    v = parsers.resolveCalc(v);\n  }\n  if (!parsers.isValidPropertyValue(property, v)) {\n    return;\n  }\n  const [fontBlock, ...families] = parsers.splitValue(v, {\n    delimiter: \",\"\n  });\n  const [fontBlockA, fontBlockB] = parsers.splitValue(fontBlock, {\n    delimiter: \"/\"\n  });\n  const font = {\n    [fontStyle.property]: \"normal\",\n    [fontVariant.property]: \"normal\",\n    [fontWeight.property]: \"normal\"\n  };\n  const fontFamilies = new Set();\n  if (fontBlockB) {\n    const [lineB, ...familiesB] = fontBlockB.trim().split(\" \");\n    if (!lineB || !familiesB.length) {\n      return;\n    }\n    const lineHeightB = lineHeight.parse(lineB);\n    if (typeof lineHeightB !== \"string\") {\n      return;\n    }\n    const familyB = fontFamily.parse(familiesB.join(\" \"));\n    if (typeof familyB === \"string\") {\n      fontFamilies.add(familyB);\n    } else {\n      return;\n    }\n    const parts = parsers.splitValue(fontBlockA.trim());\n    const properties = [fontStyle.property, fontVariant.property, fontWeight.property, fontSize.property];\n    for (const part of parts) {\n      if (part === \"normal\") {\n        continue;\n      } else {\n        for (const longhand of properties) {\n          switch (longhand) {\n            case fontSize.property: {\n              const parsedValue = fontSize.parse(part);\n              if (typeof parsedValue === \"string\") {\n                font[longhand] = parsedValue;\n              }\n              break;\n            }\n            case fontStyle.property:\n            case fontWeight.property: {\n              if (font[longhand] === \"normal\") {\n                const longhandItem = shorthandFor.get(longhand);\n                const parsedValue = longhandItem.parse(part);\n                if (typeof parsedValue === \"string\") {\n                  font[longhand] = parsedValue;\n                }\n              }\n              break;\n            }\n            case fontVariant.property: {\n              if (font[longhand] === \"normal\") {\n                const parsedValue = fontVariant.parse(part);\n                if (typeof parsedValue === \"string\") {\n                  if (parsedValue === \"small-cap\") {\n                    font[longhand] = parsedValue;\n                  } else if (parsedValue !== \"normal\") {\n                    return;\n                  }\n                }\n              }\n              break;\n            }\n            default:\n          }\n        }\n      }\n    }\n    if (Object.hasOwn(font, fontSize.property)) {\n      font[lineHeight.property] = lineHeightB;\n    } else {\n      return;\n    }\n  } else {\n    const revParts = parsers.splitValue(fontBlockA.trim()).toReversed();\n    if (revParts.length === 1) {\n      const [part] = revParts;\n      const value = parsers.parsePropertyValue(property, part);\n      if (Array.isArray(value) && value.length === 1) {\n        const [{ name, type }] = value;\n        if (type === AST_TYPES.GLOBAL_KEYWORD) {\n          return {\n            [fontStyle.property]: name,\n            [fontVariant.property]: name,\n            [fontWeight.property]: name,\n            [fontSize.property]: name,\n            [lineHeight.property]: name,\n            [fontFamily.property]: name\n          };\n        }\n      }\n      return;\n    }\n    const properties = [fontStyle.property, fontVariant.property, fontWeight.property, lineHeight.property];\n    for (const longhand of properties) {\n      font[longhand] = \"normal\";\n    }\n    const revFontFamily = [];\n    let fontSizeA;\n    for (const part of revParts) {\n      if (fontSizeA) {\n        if (/^normal$/i.test(part)) {\n          continue;\n        } else {\n          for (const longhand of properties) {\n            switch (longhand) {\n              case fontStyle.property:\n              case fontWeight.property:\n              case lineHeight.property: {\n                if (font[longhand] === \"normal\") {\n                  const longhandItem = shorthandFor.get(longhand);\n                  const parsedValue = longhandItem.parse(part);\n                  if (typeof parsedValue === \"string\") {\n                    font[longhand] = parsedValue;\n                  }\n                }\n                break;\n              }\n              case fontVariant.property: {\n                if (font[longhand] === \"normal\") {\n                  const parsedValue = fontVariant.parse(part);\n                  if (typeof parsedValue === \"string\") {\n                    if (parsedValue === \"small-cap\") {\n                      font[longhand] = parsedValue;\n                    } else if (parsedValue !== \"normal\") {\n                      return;\n                    }\n                  }\n                }\n                break;\n              }\n              default:\n            }\n          }\n        }\n      } else {\n        const parsedFontSize = fontSize.parse(part);\n        if (typeof parsedFontSize === \"string\") {\n          fontSizeA = parsedFontSize;\n        } else {\n          const parsedFontFamily = fontFamily.parse(part);\n          if (typeof parsedFontFamily === \"string\") {\n            revFontFamily.push(parsedFontFamily);\n          } else {\n            return;\n          }\n        }\n      }\n    }\n    const family = fontFamily.parse(revFontFamily.toReversed().join(\" \"));\n    if (fontSizeA && family) {\n      font[fontSize.property] = fontSizeA;\n      fontFamilies.add(fontFamily.parse(family));\n    } else {\n      return;\n    }\n  }\n  for (const family of families) {\n    const parsedFontFamily = fontFamily.parse(family);\n    if (parsedFontFamily) {\n      fontFamilies.add(parsedFontFamily);\n    } else {\n      return;\n    }\n  }\n  font[fontFamily.property] = [...fontFamilies].join(\", \");\n  return font;\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"height\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the height property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"left\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the left property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"lighting-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the lighting-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"margin-top\";\nconst shorthand = \"margin\";\n\nconst position = \"top\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the margin-top property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"margin-right\";\nconst shorthand = \"margin\";\n\nconst position = \"right\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the margin-right property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"margin-bottom\";\nconst shorthand = \"margin\";\n\nconst position = \"bottom\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the margin-bottom property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"margin-left\";\nconst shorthand = \"margin\";\n\nconst position = \"left\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the margin-left property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst marginTop = require(\"./marginTop\");\nconst marginRight = require(\"./marginRight\");\nconst marginBottom = require(\"./marginBottom\");\nconst marginLeft = require(\"./marginLeft\");\n\nconst property = \"margin\";\n\nconst position = \"edges\";\n\nconst shorthandFor = new Map([\n  [marginTop.property, marginTop],\n  [marginRight.property, marginRight],\n  [marginBottom.property, marginBottom],\n  [marginLeft.property, marginLeft]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      for (const [longhand] of shorthandFor) {\n        this._setProperty(longhand, \"\");\n      }\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (Array.isArray(val) || typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._positionShorthandSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the margin property value.\n *\n * @param {string} v - The value to parse.\n * @returns {Array<string>|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.parsePropertyValue(property, v);\n  const parsedValues = [];\n  if (Array.isArray(values) && values.length) {\n    if (values.length > 4) {\n      return;\n    }\n    for (const value of values) {\n      const parsedValue = parsers.resolveNumericValue([value], {\n        length: values.length,\n        type: \"length\"\n      });\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    }\n  } else if (typeof values === \"string\") {\n    parsedValues.push(values);\n  }\n  if (parsedValues.length) {\n    return parsedValues;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"opacity\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the opacity property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      clamp: true\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"outline-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the outline-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"padding-top\";\nconst shorthand = \"padding\";\n\nconst position = \"top\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the padding-top property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"padding-right\";\nconst shorthand = \"padding\";\n\nconst position = \"right\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the padding-right property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"padding-bottom\";\nconst shorthand = \"padding\";\n\nconst position = \"bottom\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the padding-bottom property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"padding-left\";\nconst shorthand = \"padding\";\n\nconst position = \"left\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(shorthand, \"\");\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority =\n          !this._priorities.get(shorthand) && this._priorities.has(property) ? this._priorities.get(property) : \"\";\n        this._positionLonghandSetter(property, val, priority, shorthand);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the padding-left property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\nconst paddingTop = require(\"./paddingTop\");\nconst paddingRight = require(\"./paddingRight\");\nconst paddingBottom = require(\"./paddingBottom\");\nconst paddingLeft = require(\"./paddingLeft\");\n\nconst property = \"padding\";\n\nconst position = \"edges\";\n\nconst shorthandFor = new Map([\n  [paddingTop.property, paddingTop],\n  [paddingRight.property, paddingRight],\n  [paddingBottom.property, paddingBottom],\n  [paddingLeft.property, paddingLeft]\n]);\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      for (const [longhand] of shorthandFor) {\n        this._setProperty(longhand, \"\");\n      }\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (Array.isArray(val) || typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._positionShorthandSetter(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the padding property value.\n *\n * @param {string} v - The value to parse.\n * @returns {Array<string>|string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const values = parsers.parsePropertyValue(property, v);\n  const parsedValues = [];\n  if (Array.isArray(values) && values.length) {\n    if (values.length > 4) {\n      return;\n    }\n    for (const value of values) {\n      const parsedValue = parsers.resolveNumericValue([value], {\n        length: values.length,\n        min: 0,\n        type: \"length\"\n      });\n      if (!parsedValue) {\n        return;\n      }\n      parsedValues.push(parsedValue);\n    }\n  } else if (typeof values === \"string\") {\n    parsedValues.push(values);\n  }\n  if (parsedValues.length) {\n    return parsedValues;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  position,\n  property,\n  shorthandFor\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"right\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the right property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"stop-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the stop-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"text-emphasis-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the text-emphasis-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"top\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the top property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"-webkit-text-fill-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the -webkit-text-fill-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"-webkit-text-stroke-color\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the -webkit-text-stroke-color property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveColorValue(value);\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\nconst property = \"width\";\n\nconst descriptor = {\n  set(v) {\n    v = parsers.prepareValue(v);\n    if (parsers.hasVarFunc(v)) {\n      this._setProperty(property, v);\n    } else {\n      const val = parse(v);\n      if (typeof val === \"string\") {\n        const priority = this._priorities.get(property) ?? \"\";\n        this._setProperty(property, val, priority);\n      }\n    }\n  },\n  get() {\n    return this.getPropertyValue(property);\n  },\n  enumerable: true,\n  configurable: true\n};\n\n/**\n * Parses the width property value.\n *\n * @param {string} v - The value to parse.\n * @returns {string|undefined} The parsed value or undefined if invalid.\n */\nfunction parse(v) {\n  if (v === \"\") {\n    return v;\n  }\n  const value = parsers.parsePropertyValue(property, v);\n  if (Array.isArray(value) && value.length === 1) {\n    return parsers.resolveNumericValue(value, {\n      min: 0,\n      type: \"length\"\n    });\n  } else if (typeof value === \"string\") {\n    return value;\n  }\n}\n\nmodule.exports = {\n  descriptor,\n  parse,\n  property\n};\n","\"use strict\";\n\nconst parsers = require(\"../parsers\");\n\n// Constants\nconst { AST_TYPES } = parsers;\n\n/**\n * Creates a generic property descriptor for a given property. Such descriptors are used whenever we don't have a\n * specific handler in `./properties/*.js`. They perform some basic logic that works as a fallback, and is correct for\n * simple properties, but properties with more complex grammars will need their own handlers.\n *\n * @param {string} property - The canonical CSS property name (e.g. \"backdrop-filter\", not \"backdropFilter\").\n * @param {object} opts - The options object.\n * @param {boolean} opts.caseSensitive - True if value is case-sensitive, false otherwise.\n * @param {object} [opts.dimensionTypes={}] - An object containing information about the dimension types used by this\n * property, if any. Keys are a type of dimension, which determines which serializer to use, and values are the\n * information used by the serializer to serialize a parsed value.\n * @param {object} [opts.functionTypes={}] - An object containing information about the function types used by this\n * property, if any. Keys are a type of function, which determines which function to use; values are ignored.\n * @returns {object} The property descriptor object.\n */\nfunction createGenericPropertyDescriptor(property, { caseSensitive, dimensionTypes = {}, functionTypes = {} }) {\n  return {\n    set(v) {\n      const value = parsers.prepareValue(v);\n      if (parsers.hasVarFunc(value)) {\n        this._setProperty(property, value);\n      } else {\n        const parsedValue = parsers.parsePropertyValue(property, v, {\n          caseSensitive\n        });\n        const priority = this._priorities.get(property) ?? \"\";\n        if (Array.isArray(parsedValue)) {\n          if (parsedValue.length === 1) {\n            const {\n              angle: angleType,\n              dimension: dimensionType,\n              length: lengthType,\n              number: numberType,\n              percentage: percentageType\n            } = dimensionTypes;\n            const { color: colorType, image: imageType } = functionTypes;\n            const [{ name, type, value: itemValue }] = parsedValue;\n            switch (type) {\n              case AST_TYPES.CALC: {\n                this._setProperty(property, `${name}(${itemValue})`, priority);\n                break;\n              }\n              case AST_TYPES.DIMENSION: {\n                let val;\n                if (dimensionType && lengthType) {\n                  val = parsers.serializeLength(parsedValue, lengthType);\n                  if (!val) {\n                    val = parsers.serializeDimension(parsedValue, dimensionType);\n                  }\n                } else if (lengthType) {\n                  val = parsers.serializeLength(parsedValue, lengthType);\n                } else {\n                  val = parsers.serializeDimension(parsedValue, dimensionType);\n                }\n                this._setProperty(property, val, priority);\n                break;\n              }\n              case AST_TYPES.HASH: {\n                this._setProperty(property, parsers.serializeColor(parsedValue), priority);\n                break;\n              }\n              case AST_TYPES.NUMBER: {\n                let val;\n                if (numberType) {\n                  val = parsers.serializeNumber(parsedValue, numberType);\n                } else if (angleType) {\n                  val = parsers.serializeAngle(parsedValue, angleType);\n                } else if (lengthType) {\n                  val = parsers.serializeLength(parsedValue, lengthType);\n                } else if (percentageType) {\n                  val = parsers.serializePercentage(parsedValue, percentageType);\n                }\n                this._setProperty(property, val, priority);\n                break;\n              }\n              case AST_TYPES.GLOBAL_KEYWORD:\n              case AST_TYPES.IDENTIFIER: {\n                this._setProperty(property, name, priority);\n                break;\n              }\n              case AST_TYPES.PERCENTAGE: {\n                let numericType;\n                if (percentageType) {\n                  numericType = percentageType;\n                } else if (dimensionType) {\n                  numericType = dimensionType;\n                } else if (angleType) {\n                  numericType = angleType;\n                } else if (lengthType) {\n                  numericType = lengthType;\n                }\n                if (numericType) {\n                  this._setProperty(property, parsers.resolveNumericValue(parsedValue, numericType), priority);\n                }\n                break;\n              }\n              case AST_TYPES.STRING: {\n                this._setProperty(property, parsers.serializeString(parsedValue), priority);\n                break;\n              }\n              case AST_TYPES.URL: {\n                this._setProperty(property, parsers.serializeURL(parsedValue), priority);\n                break;\n              }\n              case AST_TYPES.FUNCTION:\n              default: {\n                if (colorType) {\n                  this._setProperty(property, parsers.serializeColor(parsedValue), priority);\n                } else if (imageType) {\n                  this._setProperty(property, parsers.serializeGradient(parsedValue), priority);\n                } else {\n                  this._setProperty(property, value, priority);\n                }\n              }\n            }\n          } else {\n            // Set the prepared value for lists containing multiple values.\n            this._setProperty(property, value, priority);\n          }\n        } else if (typeof parsedValue === \"string\") {\n          this._setProperty(property, parsedValue, priority);\n        }\n      }\n    },\n    get() {\n      return this.getPropertyValue(property);\n    },\n    enumerable: true,\n    configurable: true\n  };\n}\n\nmodule.exports = {\n  createGenericPropertyDescriptor\n};\n","\"use strict\";\n// autogenerated - 2026-02-06\n\nconst background = require(\"../properties/background.js\");\nconst backgroundAttachment = require(\"../properties/backgroundAttachment.js\");\nconst backgroundClip = require(\"../properties/backgroundClip.js\");\nconst backgroundColor = require(\"../properties/backgroundColor.js\");\nconst backgroundImage = require(\"../properties/backgroundImage.js\");\nconst backgroundOrigin = require(\"../properties/backgroundOrigin.js\");\nconst backgroundPosition = require(\"../properties/backgroundPosition.js\");\nconst backgroundRepeat = require(\"../properties/backgroundRepeat.js\");\nconst backgroundSize = require(\"../properties/backgroundSize.js\");\nconst border = require(\"../properties/border.js\");\nconst borderBlockEndColor = require(\"../properties/borderBlockEndColor.js\");\nconst borderBlockStartColor = require(\"../properties/borderBlockStartColor.js\");\nconst borderBottom = require(\"../properties/borderBottom.js\");\nconst borderBottomColor = require(\"../properties/borderBottomColor.js\");\nconst borderBottomStyle = require(\"../properties/borderBottomStyle.js\");\nconst borderBottomWidth = require(\"../properties/borderBottomWidth.js\");\nconst borderCollapse = require(\"../properties/borderCollapse.js\");\nconst borderColor = require(\"../properties/borderColor.js\");\nconst borderInlineEndColor = require(\"../properties/borderInlineEndColor.js\");\nconst borderInlineStartColor = require(\"../properties/borderInlineStartColor.js\");\nconst borderLeft = require(\"../properties/borderLeft.js\");\nconst borderLeftColor = require(\"../properties/borderLeftColor.js\");\nconst borderLeftStyle = require(\"../properties/borderLeftStyle.js\");\nconst borderLeftWidth = require(\"../properties/borderLeftWidth.js\");\nconst borderRight = require(\"../properties/borderRight.js\");\nconst borderRightColor = require(\"../properties/borderRightColor.js\");\nconst borderRightStyle = require(\"../properties/borderRightStyle.js\");\nconst borderRightWidth = require(\"../properties/borderRightWidth.js\");\nconst borderSpacing = require(\"../properties/borderSpacing.js\");\nconst borderStyle = require(\"../properties/borderStyle.js\");\nconst borderTop = require(\"../properties/borderTop.js\");\nconst borderTopColor = require(\"../properties/borderTopColor.js\");\nconst borderTopStyle = require(\"../properties/borderTopStyle.js\");\nconst borderTopWidth = require(\"../properties/borderTopWidth.js\");\nconst borderWidth = require(\"../properties/borderWidth.js\");\nconst bottom = require(\"../properties/bottom.js\");\nconst clear = require(\"../properties/clear.js\");\nconst clip = require(\"../properties/clip.js\");\nconst color = require(\"../properties/color.js\");\nconst display = require(\"../properties/display.js\");\nconst flex = require(\"../properties/flex.js\");\nconst flexBasis = require(\"../properties/flexBasis.js\");\nconst flexGrow = require(\"../properties/flexGrow.js\");\nconst flexShrink = require(\"../properties/flexShrink.js\");\nconst float = require(\"../properties/float.js\");\nconst floodColor = require(\"../properties/floodColor.js\");\nconst font = require(\"../properties/font.js\");\nconst fontFamily = require(\"../properties/fontFamily.js\");\nconst fontSize = require(\"../properties/fontSize.js\");\nconst fontStyle = require(\"../properties/fontStyle.js\");\nconst fontVariant = require(\"../properties/fontVariant.js\");\nconst fontWeight = require(\"../properties/fontWeight.js\");\nconst height = require(\"../properties/height.js\");\nconst left = require(\"../properties/left.js\");\nconst lightingColor = require(\"../properties/lightingColor.js\");\nconst lineHeight = require(\"../properties/lineHeight.js\");\nconst margin = require(\"../properties/margin.js\");\nconst marginBottom = require(\"../properties/marginBottom.js\");\nconst marginLeft = require(\"../properties/marginLeft.js\");\nconst marginRight = require(\"../properties/marginRight.js\");\nconst marginTop = require(\"../properties/marginTop.js\");\nconst opacity = require(\"../properties/opacity.js\");\nconst outlineColor = require(\"../properties/outlineColor.js\");\nconst padding = require(\"../properties/padding.js\");\nconst paddingBottom = require(\"../properties/paddingBottom.js\");\nconst paddingLeft = require(\"../properties/paddingLeft.js\");\nconst paddingRight = require(\"../properties/paddingRight.js\");\nconst paddingTop = require(\"../properties/paddingTop.js\");\nconst right = require(\"../properties/right.js\");\nconst stopColor = require(\"../properties/stopColor.js\");\nconst textEmphasisColor = require(\"../properties/textEmphasisColor.js\");\nconst top = require(\"../properties/top.js\");\nconst webkitTextFillColor = require(\"../properties/webkitTextFillColor.js\");\nconst webkitTextStrokeColor = require(\"../properties/webkitTextStrokeColor.js\");\nconst width = require(\"../properties/width.js\");\nconst { createGenericPropertyDescriptor } = require(\"../utils/propertyDescriptors.js\");\n\nmodule.exports = {\n  \"-webkit-align-content\": createGenericPropertyDescriptor(\"-webkit-align-content\", {\"caseSensitive\":false}),\n  \"WebkitAlignContent\": createGenericPropertyDescriptor(\"-webkit-align-content\", {\"caseSensitive\":false}),\n  \"webkitAlignContent\": createGenericPropertyDescriptor(\"-webkit-align-content\", {\"caseSensitive\":false}),\n  \"-webkit-align-items\": createGenericPropertyDescriptor(\"-webkit-align-items\", {\"caseSensitive\":false}),\n  \"WebkitAlignItems\": createGenericPropertyDescriptor(\"-webkit-align-items\", {\"caseSensitive\":false}),\n  \"webkitAlignItems\": createGenericPropertyDescriptor(\"-webkit-align-items\", {\"caseSensitive\":false}),\n  \"-webkit-align-self\": createGenericPropertyDescriptor(\"-webkit-align-self\", {\"caseSensitive\":false}),\n  \"WebkitAlignSelf\": createGenericPropertyDescriptor(\"-webkit-align-self\", {\"caseSensitive\":false}),\n  \"webkitAlignSelf\": createGenericPropertyDescriptor(\"-webkit-align-self\", {\"caseSensitive\":false}),\n  \"-webkit-animation\": createGenericPropertyDescriptor(\"-webkit-animation\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"dimension\":{\"type\":\"dimension\"}}}),\n  \"WebkitAnimation\": createGenericPropertyDescriptor(\"-webkit-animation\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"dimension\":{\"type\":\"dimension\"}}}),\n  \"webkitAnimation\": createGenericPropertyDescriptor(\"-webkit-animation\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"dimension\":{\"type\":\"dimension\"}}}),\n  \"-webkit-animation-delay\": createGenericPropertyDescriptor(\"-webkit-animation-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"WebkitAnimationDelay\": createGenericPropertyDescriptor(\"-webkit-animation-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"webkitAnimationDelay\": createGenericPropertyDescriptor(\"-webkit-animation-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"-webkit-animation-direction\": createGenericPropertyDescriptor(\"-webkit-animation-direction\", {\"caseSensitive\":false}),\n  \"WebkitAnimationDirection\": createGenericPropertyDescriptor(\"-webkit-animation-direction\", {\"caseSensitive\":false}),\n  \"webkitAnimationDirection\": createGenericPropertyDescriptor(\"-webkit-animation-direction\", {\"caseSensitive\":false}),\n  \"-webkit-animation-duration\": createGenericPropertyDescriptor(\"-webkit-animation-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"WebkitAnimationDuration\": createGenericPropertyDescriptor(\"-webkit-animation-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"webkitAnimationDuration\": createGenericPropertyDescriptor(\"-webkit-animation-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"-webkit-animation-fill-mode\": createGenericPropertyDescriptor(\"-webkit-animation-fill-mode\", {\"caseSensitive\":false}),\n  \"WebkitAnimationFillMode\": createGenericPropertyDescriptor(\"-webkit-animation-fill-mode\", {\"caseSensitive\":false}),\n  \"webkitAnimationFillMode\": createGenericPropertyDescriptor(\"-webkit-animation-fill-mode\", {\"caseSensitive\":false}),\n  \"-webkit-animation-iteration-count\": createGenericPropertyDescriptor(\"-webkit-animation-iteration-count\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"WebkitAnimationIterationCount\": createGenericPropertyDescriptor(\"-webkit-animation-iteration-count\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"webkitAnimationIterationCount\": createGenericPropertyDescriptor(\"-webkit-animation-iteration-count\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"-webkit-animation-name\": createGenericPropertyDescriptor(\"-webkit-animation-name\", {\"caseSensitive\":true}),\n  \"WebkitAnimationName\": createGenericPropertyDescriptor(\"-webkit-animation-name\", {\"caseSensitive\":true}),\n  \"webkitAnimationName\": createGenericPropertyDescriptor(\"-webkit-animation-name\", {\"caseSensitive\":true}),\n  \"-webkit-animation-play-state\": createGenericPropertyDescriptor(\"-webkit-animation-play-state\", {\"caseSensitive\":false}),\n  \"WebkitAnimationPlayState\": createGenericPropertyDescriptor(\"-webkit-animation-play-state\", {\"caseSensitive\":false}),\n  \"webkitAnimationPlayState\": createGenericPropertyDescriptor(\"-webkit-animation-play-state\", {\"caseSensitive\":false}),\n  \"-webkit-animation-timing-function\": createGenericPropertyDescriptor(\"-webkit-animation-timing-function\", {\"caseSensitive\":false}),\n  \"WebkitAnimationTimingFunction\": createGenericPropertyDescriptor(\"-webkit-animation-timing-function\", {\"caseSensitive\":false}),\n  \"webkitAnimationTimingFunction\": createGenericPropertyDescriptor(\"-webkit-animation-timing-function\", {\"caseSensitive\":false}),\n  \"-webkit-appearance\": createGenericPropertyDescriptor(\"-webkit-appearance\", {\"caseSensitive\":false}),\n  \"WebkitAppearance\": createGenericPropertyDescriptor(\"-webkit-appearance\", {\"caseSensitive\":false}),\n  \"webkitAppearance\": createGenericPropertyDescriptor(\"-webkit-appearance\", {\"caseSensitive\":false}),\n  \"-webkit-backface-visibility\": createGenericPropertyDescriptor(\"-webkit-backface-visibility\", {\"caseSensitive\":false}),\n  \"WebkitBackfaceVisibility\": createGenericPropertyDescriptor(\"-webkit-backface-visibility\", {\"caseSensitive\":false}),\n  \"webkitBackfaceVisibility\": createGenericPropertyDescriptor(\"-webkit-backface-visibility\", {\"caseSensitive\":false}),\n  \"-webkit-background-clip\": backgroundClip.descriptor,\n  \"WebkitBackgroundClip\": backgroundClip.descriptor,\n  \"webkitBackgroundClip\": backgroundClip.descriptor,\n  \"-webkit-background-origin\": backgroundOrigin.descriptor,\n  \"WebkitBackgroundOrigin\": backgroundOrigin.descriptor,\n  \"webkitBackgroundOrigin\": backgroundOrigin.descriptor,\n  \"-webkit-background-size\": backgroundSize.descriptor,\n  \"WebkitBackgroundSize\": backgroundSize.descriptor,\n  \"webkitBackgroundSize\": backgroundSize.descriptor,\n  \"-webkit-border-bottom-left-radius\": createGenericPropertyDescriptor(\"-webkit-border-bottom-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitBorderBottomLeftRadius\": createGenericPropertyDescriptor(\"-webkit-border-bottom-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitBorderBottomLeftRadius\": createGenericPropertyDescriptor(\"-webkit-border-bottom-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-border-bottom-right-radius\": createGenericPropertyDescriptor(\"-webkit-border-bottom-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitBorderBottomRightRadius\": createGenericPropertyDescriptor(\"-webkit-border-bottom-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitBorderBottomRightRadius\": createGenericPropertyDescriptor(\"-webkit-border-bottom-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-border-radius\": createGenericPropertyDescriptor(\"-webkit-border-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitBorderRadius\": createGenericPropertyDescriptor(\"-webkit-border-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitBorderRadius\": createGenericPropertyDescriptor(\"-webkit-border-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-border-top-left-radius\": createGenericPropertyDescriptor(\"-webkit-border-top-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitBorderTopLeftRadius\": createGenericPropertyDescriptor(\"-webkit-border-top-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitBorderTopLeftRadius\": createGenericPropertyDescriptor(\"-webkit-border-top-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-border-top-right-radius\": createGenericPropertyDescriptor(\"-webkit-border-top-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitBorderTopRightRadius\": createGenericPropertyDescriptor(\"-webkit-border-top-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitBorderTopRightRadius\": createGenericPropertyDescriptor(\"-webkit-border-top-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-box-align\": createGenericPropertyDescriptor(\"-webkit-box-align\", {\"caseSensitive\":false}),\n  \"WebkitBoxAlign\": createGenericPropertyDescriptor(\"-webkit-box-align\", {\"caseSensitive\":false}),\n  \"webkitBoxAlign\": createGenericPropertyDescriptor(\"-webkit-box-align\", {\"caseSensitive\":false}),\n  \"-webkit-box-flex\": createGenericPropertyDescriptor(\"-webkit-box-flex\", {\"caseSensitive\":false}),\n  \"WebkitBoxFlex\": createGenericPropertyDescriptor(\"-webkit-box-flex\", {\"caseSensitive\":false}),\n  \"webkitBoxFlex\": createGenericPropertyDescriptor(\"-webkit-box-flex\", {\"caseSensitive\":false}),\n  \"-webkit-box-ordinal-group\": createGenericPropertyDescriptor(\"-webkit-box-ordinal-group\", {\"caseSensitive\":false}),\n  \"WebkitBoxOrdinalGroup\": createGenericPropertyDescriptor(\"-webkit-box-ordinal-group\", {\"caseSensitive\":false}),\n  \"webkitBoxOrdinalGroup\": createGenericPropertyDescriptor(\"-webkit-box-ordinal-group\", {\"caseSensitive\":false}),\n  \"-webkit-box-orient\": createGenericPropertyDescriptor(\"-webkit-box-orient\", {\"caseSensitive\":false}),\n  \"WebkitBoxOrient\": createGenericPropertyDescriptor(\"-webkit-box-orient\", {\"caseSensitive\":false}),\n  \"webkitBoxOrient\": createGenericPropertyDescriptor(\"-webkit-box-orient\", {\"caseSensitive\":false}),\n  \"-webkit-box-pack\": createGenericPropertyDescriptor(\"-webkit-box-pack\", {\"caseSensitive\":false}),\n  \"WebkitBoxPack\": createGenericPropertyDescriptor(\"-webkit-box-pack\", {\"caseSensitive\":false}),\n  \"webkitBoxPack\": createGenericPropertyDescriptor(\"-webkit-box-pack\", {\"caseSensitive\":false}),\n  \"-webkit-box-shadow\": createGenericPropertyDescriptor(\"-webkit-box-shadow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"WebkitBoxShadow\": createGenericPropertyDescriptor(\"-webkit-box-shadow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"webkitBoxShadow\": createGenericPropertyDescriptor(\"-webkit-box-shadow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"-webkit-box-sizing\": createGenericPropertyDescriptor(\"-webkit-box-sizing\", {\"caseSensitive\":false}),\n  \"WebkitBoxSizing\": createGenericPropertyDescriptor(\"-webkit-box-sizing\", {\"caseSensitive\":false}),\n  \"webkitBoxSizing\": createGenericPropertyDescriptor(\"-webkit-box-sizing\", {\"caseSensitive\":false}),\n  \"-webkit-filter\": createGenericPropertyDescriptor(\"-webkit-filter\", {\"caseSensitive\":false}),\n  \"WebkitFilter\": createGenericPropertyDescriptor(\"-webkit-filter\", {\"caseSensitive\":false}),\n  \"webkitFilter\": createGenericPropertyDescriptor(\"-webkit-filter\", {\"caseSensitive\":false}),\n  \"-webkit-flex\": flex.descriptor,\n  \"WebkitFlex\": flex.descriptor,\n  \"webkitFlex\": flex.descriptor,\n  \"-webkit-flex-basis\": flexBasis.descriptor,\n  \"WebkitFlexBasis\": flexBasis.descriptor,\n  \"webkitFlexBasis\": flexBasis.descriptor,\n  \"-webkit-flex-direction\": createGenericPropertyDescriptor(\"-webkit-flex-direction\", {\"caseSensitive\":false}),\n  \"WebkitFlexDirection\": createGenericPropertyDescriptor(\"-webkit-flex-direction\", {\"caseSensitive\":false}),\n  \"webkitFlexDirection\": createGenericPropertyDescriptor(\"-webkit-flex-direction\", {\"caseSensitive\":false}),\n  \"-webkit-flex-flow\": createGenericPropertyDescriptor(\"-webkit-flex-flow\", {\"caseSensitive\":false}),\n  \"WebkitFlexFlow\": createGenericPropertyDescriptor(\"-webkit-flex-flow\", {\"caseSensitive\":false}),\n  \"webkitFlexFlow\": createGenericPropertyDescriptor(\"-webkit-flex-flow\", {\"caseSensitive\":false}),\n  \"-webkit-flex-grow\": flexGrow.descriptor,\n  \"WebkitFlexGrow\": flexGrow.descriptor,\n  \"webkitFlexGrow\": flexGrow.descriptor,\n  \"-webkit-flex-shrink\": flexShrink.descriptor,\n  \"WebkitFlexShrink\": flexShrink.descriptor,\n  \"webkitFlexShrink\": flexShrink.descriptor,\n  \"-webkit-flex-wrap\": createGenericPropertyDescriptor(\"-webkit-flex-wrap\", {\"caseSensitive\":false}),\n  \"WebkitFlexWrap\": createGenericPropertyDescriptor(\"-webkit-flex-wrap\", {\"caseSensitive\":false}),\n  \"webkitFlexWrap\": createGenericPropertyDescriptor(\"-webkit-flex-wrap\", {\"caseSensitive\":false}),\n  \"-webkit-justify-content\": createGenericPropertyDescriptor(\"-webkit-justify-content\", {\"caseSensitive\":false}),\n  \"WebkitJustifyContent\": createGenericPropertyDescriptor(\"-webkit-justify-content\", {\"caseSensitive\":false}),\n  \"webkitJustifyContent\": createGenericPropertyDescriptor(\"-webkit-justify-content\", {\"caseSensitive\":false}),\n  \"-webkit-line-clamp\": createGenericPropertyDescriptor(\"-webkit-line-clamp\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"WebkitLineClamp\": createGenericPropertyDescriptor(\"-webkit-line-clamp\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"webkitLineClamp\": createGenericPropertyDescriptor(\"-webkit-line-clamp\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"-webkit-mask\": createGenericPropertyDescriptor(\"-webkit-mask\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"WebkitMask\": createGenericPropertyDescriptor(\"-webkit-mask\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"webkitMask\": createGenericPropertyDescriptor(\"-webkit-mask\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"-webkit-mask-box-image\": createGenericPropertyDescriptor(\"-webkit-mask-box-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"WebkitMaskBoxImage\": createGenericPropertyDescriptor(\"-webkit-mask-box-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"webkitMaskBoxImage\": createGenericPropertyDescriptor(\"-webkit-mask-box-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"-webkit-mask-box-image-outset\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-outset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"WebkitMaskBoxImageOutset\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-outset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"webkitMaskBoxImageOutset\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-outset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"-webkit-mask-box-image-repeat\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-repeat\", {\"caseSensitive\":false}),\n  \"WebkitMaskBoxImageRepeat\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-repeat\", {\"caseSensitive\":false}),\n  \"webkitMaskBoxImageRepeat\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-repeat\", {\"caseSensitive\":false}),\n  \"-webkit-mask-box-image-slice\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-slice\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"WebkitMaskBoxImageSlice\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-slice\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"webkitMaskBoxImageSlice\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-slice\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"-webkit-mask-box-image-source\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-source\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"WebkitMaskBoxImageSource\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-source\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"webkitMaskBoxImageSource\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-source\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"-webkit-mask-box-image-width\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"WebkitMaskBoxImageWidth\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"webkitMaskBoxImageWidth\": createGenericPropertyDescriptor(\"-webkit-mask-box-image-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"-webkit-mask-clip\": createGenericPropertyDescriptor(\"-webkit-mask-clip\", {\"caseSensitive\":false}),\n  \"WebkitMaskClip\": createGenericPropertyDescriptor(\"-webkit-mask-clip\", {\"caseSensitive\":false}),\n  \"webkitMaskClip\": createGenericPropertyDescriptor(\"-webkit-mask-clip\", {\"caseSensitive\":false}),\n  \"-webkit-mask-composite\": createGenericPropertyDescriptor(\"-webkit-mask-composite\", {\"caseSensitive\":false}),\n  \"WebkitMaskComposite\": createGenericPropertyDescriptor(\"-webkit-mask-composite\", {\"caseSensitive\":false}),\n  \"webkitMaskComposite\": createGenericPropertyDescriptor(\"-webkit-mask-composite\", {\"caseSensitive\":false}),\n  \"-webkit-mask-image\": createGenericPropertyDescriptor(\"-webkit-mask-image\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"WebkitMaskImage\": createGenericPropertyDescriptor(\"-webkit-mask-image\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"webkitMaskImage\": createGenericPropertyDescriptor(\"-webkit-mask-image\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"-webkit-mask-origin\": createGenericPropertyDescriptor(\"-webkit-mask-origin\", {\"caseSensitive\":false}),\n  \"WebkitMaskOrigin\": createGenericPropertyDescriptor(\"-webkit-mask-origin\", {\"caseSensitive\":false}),\n  \"webkitMaskOrigin\": createGenericPropertyDescriptor(\"-webkit-mask-origin\", {\"caseSensitive\":false}),\n  \"-webkit-mask-position\": createGenericPropertyDescriptor(\"-webkit-mask-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"WebkitMaskPosition\": createGenericPropertyDescriptor(\"-webkit-mask-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"webkitMaskPosition\": createGenericPropertyDescriptor(\"-webkit-mask-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"-webkit-mask-repeat\": createGenericPropertyDescriptor(\"-webkit-mask-repeat\", {\"caseSensitive\":false}),\n  \"WebkitMaskRepeat\": createGenericPropertyDescriptor(\"-webkit-mask-repeat\", {\"caseSensitive\":false}),\n  \"webkitMaskRepeat\": createGenericPropertyDescriptor(\"-webkit-mask-repeat\", {\"caseSensitive\":false}),\n  \"-webkit-mask-size\": createGenericPropertyDescriptor(\"-webkit-mask-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitMaskSize\": createGenericPropertyDescriptor(\"-webkit-mask-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitMaskSize\": createGenericPropertyDescriptor(\"-webkit-mask-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-order\": createGenericPropertyDescriptor(\"-webkit-order\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"WebkitOrder\": createGenericPropertyDescriptor(\"-webkit-order\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"webkitOrder\": createGenericPropertyDescriptor(\"-webkit-order\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"-webkit-perspective\": createGenericPropertyDescriptor(\"-webkit-perspective\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitPerspective\": createGenericPropertyDescriptor(\"-webkit-perspective\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitPerspective\": createGenericPropertyDescriptor(\"-webkit-perspective\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-perspective-origin\": createGenericPropertyDescriptor(\"-webkit-perspective-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"WebkitPerspectiveOrigin\": createGenericPropertyDescriptor(\"-webkit-perspective-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"webkitPerspectiveOrigin\": createGenericPropertyDescriptor(\"-webkit-perspective-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"-webkit-text-fill-color\": webkitTextFillColor.descriptor,\n  \"WebkitTextFillColor\": webkitTextFillColor.descriptor,\n  \"webkitTextFillColor\": webkitTextFillColor.descriptor,\n  \"-webkit-text-size-adjust\": createGenericPropertyDescriptor(\"-webkit-text-size-adjust\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"WebkitTextSizeAdjust\": createGenericPropertyDescriptor(\"-webkit-text-size-adjust\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"webkitTextSizeAdjust\": createGenericPropertyDescriptor(\"-webkit-text-size-adjust\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"-webkit-text-stroke\": createGenericPropertyDescriptor(\"-webkit-text-stroke\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"WebkitTextStroke\": createGenericPropertyDescriptor(\"-webkit-text-stroke\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"webkitTextStroke\": createGenericPropertyDescriptor(\"-webkit-text-stroke\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"-webkit-text-stroke-color\": webkitTextStrokeColor.descriptor,\n  \"WebkitTextStrokeColor\": webkitTextStrokeColor.descriptor,\n  \"webkitTextStrokeColor\": webkitTextStrokeColor.descriptor,\n  \"-webkit-text-stroke-width\": createGenericPropertyDescriptor(\"-webkit-text-stroke-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"WebkitTextStrokeWidth\": createGenericPropertyDescriptor(\"-webkit-text-stroke-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"webkitTextStrokeWidth\": createGenericPropertyDescriptor(\"-webkit-text-stroke-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"-webkit-transform\": createGenericPropertyDescriptor(\"-webkit-transform\", {\"caseSensitive\":false}),\n  \"WebkitTransform\": createGenericPropertyDescriptor(\"-webkit-transform\", {\"caseSensitive\":false}),\n  \"webkitTransform\": createGenericPropertyDescriptor(\"-webkit-transform\", {\"caseSensitive\":false}),\n  \"-webkit-transform-origin\": createGenericPropertyDescriptor(\"-webkit-transform-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"WebkitTransformOrigin\": createGenericPropertyDescriptor(\"-webkit-transform-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"webkitTransformOrigin\": createGenericPropertyDescriptor(\"-webkit-transform-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"-webkit-transform-style\": createGenericPropertyDescriptor(\"-webkit-transform-style\", {\"caseSensitive\":false}),\n  \"WebkitTransformStyle\": createGenericPropertyDescriptor(\"-webkit-transform-style\", {\"caseSensitive\":false}),\n  \"webkitTransformStyle\": createGenericPropertyDescriptor(\"-webkit-transform-style\", {\"caseSensitive\":false}),\n  \"-webkit-transition\": createGenericPropertyDescriptor(\"-webkit-transition\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"WebkitTransition\": createGenericPropertyDescriptor(\"-webkit-transition\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"webkitTransition\": createGenericPropertyDescriptor(\"-webkit-transition\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"-webkit-transition-delay\": createGenericPropertyDescriptor(\"-webkit-transition-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"WebkitTransitionDelay\": createGenericPropertyDescriptor(\"-webkit-transition-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"webkitTransitionDelay\": createGenericPropertyDescriptor(\"-webkit-transition-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"-webkit-transition-duration\": createGenericPropertyDescriptor(\"-webkit-transition-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"WebkitTransitionDuration\": createGenericPropertyDescriptor(\"-webkit-transition-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"webkitTransitionDuration\": createGenericPropertyDescriptor(\"-webkit-transition-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"-webkit-transition-property\": createGenericPropertyDescriptor(\"-webkit-transition-property\", {\"caseSensitive\":true}),\n  \"WebkitTransitionProperty\": createGenericPropertyDescriptor(\"-webkit-transition-property\", {\"caseSensitive\":true}),\n  \"webkitTransitionProperty\": createGenericPropertyDescriptor(\"-webkit-transition-property\", {\"caseSensitive\":true}),\n  \"-webkit-transition-timing-function\": createGenericPropertyDescriptor(\"-webkit-transition-timing-function\", {\"caseSensitive\":false}),\n  \"WebkitTransitionTimingFunction\": createGenericPropertyDescriptor(\"-webkit-transition-timing-function\", {\"caseSensitive\":false}),\n  \"webkitTransitionTimingFunction\": createGenericPropertyDescriptor(\"-webkit-transition-timing-function\", {\"caseSensitive\":false}),\n  \"-webkit-user-select\": createGenericPropertyDescriptor(\"-webkit-user-select\", {\"caseSensitive\":false}),\n  \"WebkitUserSelect\": createGenericPropertyDescriptor(\"-webkit-user-select\", {\"caseSensitive\":false}),\n  \"webkitUserSelect\": createGenericPropertyDescriptor(\"-webkit-user-select\", {\"caseSensitive\":false}),\n  \"accent-color\": createGenericPropertyDescriptor(\"accent-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"accentColor\": createGenericPropertyDescriptor(\"accent-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"align-content\": createGenericPropertyDescriptor(\"align-content\", {\"caseSensitive\":false}),\n  \"alignContent\": createGenericPropertyDescriptor(\"align-content\", {\"caseSensitive\":false}),\n  \"align-items\": createGenericPropertyDescriptor(\"align-items\", {\"caseSensitive\":false}),\n  \"alignItems\": createGenericPropertyDescriptor(\"align-items\", {\"caseSensitive\":false}),\n  \"align-self\": createGenericPropertyDescriptor(\"align-self\", {\"caseSensitive\":false}),\n  \"alignSelf\": createGenericPropertyDescriptor(\"align-self\", {\"caseSensitive\":false}),\n  \"alignment-baseline\": createGenericPropertyDescriptor(\"alignment-baseline\", {\"caseSensitive\":false}),\n  \"alignmentBaseline\": createGenericPropertyDescriptor(\"alignment-baseline\", {\"caseSensitive\":false}),\n  \"all\": createGenericPropertyDescriptor(\"all\", {\"caseSensitive\":false}),\n  \"anchor-name\": createGenericPropertyDescriptor(\"anchor-name\", {\"caseSensitive\":true}),\n  \"anchorName\": createGenericPropertyDescriptor(\"anchor-name\", {\"caseSensitive\":true}),\n  \"anchor-scope\": createGenericPropertyDescriptor(\"anchor-scope\", {\"caseSensitive\":true}),\n  \"anchorScope\": createGenericPropertyDescriptor(\"anchor-scope\", {\"caseSensitive\":true}),\n  \"animation\": createGenericPropertyDescriptor(\"animation\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"dimension\":{\"type\":\"dimension\"}}}),\n  \"animation-composition\": createGenericPropertyDescriptor(\"animation-composition\", {\"caseSensitive\":false}),\n  \"animationComposition\": createGenericPropertyDescriptor(\"animation-composition\", {\"caseSensitive\":false}),\n  \"animation-delay\": createGenericPropertyDescriptor(\"animation-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"animationDelay\": createGenericPropertyDescriptor(\"animation-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"animation-direction\": createGenericPropertyDescriptor(\"animation-direction\", {\"caseSensitive\":false}),\n  \"animationDirection\": createGenericPropertyDescriptor(\"animation-direction\", {\"caseSensitive\":false}),\n  \"animation-duration\": createGenericPropertyDescriptor(\"animation-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"animationDuration\": createGenericPropertyDescriptor(\"animation-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"animation-fill-mode\": createGenericPropertyDescriptor(\"animation-fill-mode\", {\"caseSensitive\":false}),\n  \"animationFillMode\": createGenericPropertyDescriptor(\"animation-fill-mode\", {\"caseSensitive\":false}),\n  \"animation-iteration-count\": createGenericPropertyDescriptor(\"animation-iteration-count\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"animationIterationCount\": createGenericPropertyDescriptor(\"animation-iteration-count\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"animation-name\": createGenericPropertyDescriptor(\"animation-name\", {\"caseSensitive\":true}),\n  \"animationName\": createGenericPropertyDescriptor(\"animation-name\", {\"caseSensitive\":true}),\n  \"animation-play-state\": createGenericPropertyDescriptor(\"animation-play-state\", {\"caseSensitive\":false}),\n  \"animationPlayState\": createGenericPropertyDescriptor(\"animation-play-state\", {\"caseSensitive\":false}),\n  \"animation-range\": createGenericPropertyDescriptor(\"animation-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animationRange\": createGenericPropertyDescriptor(\"animation-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animation-range-center\": createGenericPropertyDescriptor(\"animation-range-center\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animationRangeCenter\": createGenericPropertyDescriptor(\"animation-range-center\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animation-range-end\": createGenericPropertyDescriptor(\"animation-range-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animationRangeEnd\": createGenericPropertyDescriptor(\"animation-range-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animation-range-start\": createGenericPropertyDescriptor(\"animation-range-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animationRangeStart\": createGenericPropertyDescriptor(\"animation-range-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"animation-timeline\": createGenericPropertyDescriptor(\"animation-timeline\", {\"caseSensitive\":true}),\n  \"animationTimeline\": createGenericPropertyDescriptor(\"animation-timeline\", {\"caseSensitive\":true}),\n  \"animation-timing-function\": createGenericPropertyDescriptor(\"animation-timing-function\", {\"caseSensitive\":false}),\n  \"animationTimingFunction\": createGenericPropertyDescriptor(\"animation-timing-function\", {\"caseSensitive\":false}),\n  \"animation-trigger\": createGenericPropertyDescriptor(\"animation-trigger\", {\"caseSensitive\":true}),\n  \"animationTrigger\": createGenericPropertyDescriptor(\"animation-trigger\", {\"caseSensitive\":true}),\n  \"appearance\": createGenericPropertyDescriptor(\"appearance\", {\"caseSensitive\":false}),\n  \"aspect-ratio\": createGenericPropertyDescriptor(\"aspect-ratio\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"aspectRatio\": createGenericPropertyDescriptor(\"aspect-ratio\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"backdrop-filter\": createGenericPropertyDescriptor(\"backdrop-filter\", {\"caseSensitive\":false}),\n  \"backdropFilter\": createGenericPropertyDescriptor(\"backdrop-filter\", {\"caseSensitive\":false}),\n  \"backface-visibility\": createGenericPropertyDescriptor(\"backface-visibility\", {\"caseSensitive\":false}),\n  \"backfaceVisibility\": createGenericPropertyDescriptor(\"backface-visibility\", {\"caseSensitive\":false}),\n  \"background\": background.descriptor,\n  \"background-attachment\": backgroundAttachment.descriptor,\n  \"backgroundAttachment\": backgroundAttachment.descriptor,\n  \"background-blend-mode\": createGenericPropertyDescriptor(\"background-blend-mode\", {\"caseSensitive\":false}),\n  \"backgroundBlendMode\": createGenericPropertyDescriptor(\"background-blend-mode\", {\"caseSensitive\":false}),\n  \"background-clip\": backgroundClip.descriptor,\n  \"backgroundClip\": backgroundClip.descriptor,\n  \"background-color\": backgroundColor.descriptor,\n  \"backgroundColor\": backgroundColor.descriptor,\n  \"background-image\": backgroundImage.descriptor,\n  \"backgroundImage\": backgroundImage.descriptor,\n  \"background-origin\": backgroundOrigin.descriptor,\n  \"backgroundOrigin\": backgroundOrigin.descriptor,\n  \"background-position\": backgroundPosition.descriptor,\n  \"backgroundPosition\": backgroundPosition.descriptor,\n  \"background-position-block\": createGenericPropertyDescriptor(\"background-position-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"backgroundPositionBlock\": createGenericPropertyDescriptor(\"background-position-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"background-position-inline\": createGenericPropertyDescriptor(\"background-position-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"backgroundPositionInline\": createGenericPropertyDescriptor(\"background-position-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"background-position-x\": createGenericPropertyDescriptor(\"background-position-x\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"backgroundPositionX\": createGenericPropertyDescriptor(\"background-position-x\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"background-position-y\": createGenericPropertyDescriptor(\"background-position-y\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"backgroundPositionY\": createGenericPropertyDescriptor(\"background-position-y\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"background-repeat\": backgroundRepeat.descriptor,\n  \"backgroundRepeat\": backgroundRepeat.descriptor,\n  \"background-repeat-block\": createGenericPropertyDescriptor(\"background-repeat-block\", {\"caseSensitive\":false}),\n  \"backgroundRepeatBlock\": createGenericPropertyDescriptor(\"background-repeat-block\", {\"caseSensitive\":false}),\n  \"background-repeat-inline\": createGenericPropertyDescriptor(\"background-repeat-inline\", {\"caseSensitive\":false}),\n  \"backgroundRepeatInline\": createGenericPropertyDescriptor(\"background-repeat-inline\", {\"caseSensitive\":false}),\n  \"background-repeat-x\": createGenericPropertyDescriptor(\"background-repeat-x\", {\"caseSensitive\":false}),\n  \"backgroundRepeatX\": createGenericPropertyDescriptor(\"background-repeat-x\", {\"caseSensitive\":false}),\n  \"background-repeat-y\": createGenericPropertyDescriptor(\"background-repeat-y\", {\"caseSensitive\":false}),\n  \"backgroundRepeatY\": createGenericPropertyDescriptor(\"background-repeat-y\", {\"caseSensitive\":false}),\n  \"background-size\": backgroundSize.descriptor,\n  \"backgroundSize\": backgroundSize.descriptor,\n  \"background-tbd\": createGenericPropertyDescriptor(\"background-tbd\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"backgroundTbd\": createGenericPropertyDescriptor(\"background-tbd\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"baseline-shift\": createGenericPropertyDescriptor(\"baseline-shift\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"baselineShift\": createGenericPropertyDescriptor(\"baseline-shift\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"baseline-source\": createGenericPropertyDescriptor(\"baseline-source\", {\"caseSensitive\":false}),\n  \"baselineSource\": createGenericPropertyDescriptor(\"baseline-source\", {\"caseSensitive\":false}),\n  \"block-ellipsis\": createGenericPropertyDescriptor(\"block-ellipsis\", {\"caseSensitive\":true}),\n  \"blockEllipsis\": createGenericPropertyDescriptor(\"block-ellipsis\", {\"caseSensitive\":true}),\n  \"block-size\": createGenericPropertyDescriptor(\"block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"blockSize\": createGenericPropertyDescriptor(\"block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"block-step\": createGenericPropertyDescriptor(\"block-step\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"blockStep\": createGenericPropertyDescriptor(\"block-step\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"block-step-align\": createGenericPropertyDescriptor(\"block-step-align\", {\"caseSensitive\":false}),\n  \"blockStepAlign\": createGenericPropertyDescriptor(\"block-step-align\", {\"caseSensitive\":false}),\n  \"block-step-insert\": createGenericPropertyDescriptor(\"block-step-insert\", {\"caseSensitive\":false}),\n  \"blockStepInsert\": createGenericPropertyDescriptor(\"block-step-insert\", {\"caseSensitive\":false}),\n  \"block-step-round\": createGenericPropertyDescriptor(\"block-step-round\", {\"caseSensitive\":false}),\n  \"blockStepRound\": createGenericPropertyDescriptor(\"block-step-round\", {\"caseSensitive\":false}),\n  \"block-step-size\": createGenericPropertyDescriptor(\"block-step-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"blockStepSize\": createGenericPropertyDescriptor(\"block-step-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"bookmark-label\": createGenericPropertyDescriptor(\"bookmark-label\", {\"caseSensitive\":true,\"functionTypes\":{\"image\":\"image\"}}),\n  \"bookmarkLabel\": createGenericPropertyDescriptor(\"bookmark-label\", {\"caseSensitive\":true,\"functionTypes\":{\"image\":\"image\"}}),\n  \"bookmark-level\": createGenericPropertyDescriptor(\"bookmark-level\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"bookmarkLevel\": createGenericPropertyDescriptor(\"bookmark-level\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"bookmark-state\": createGenericPropertyDescriptor(\"bookmark-state\", {\"caseSensitive\":false}),\n  \"bookmarkState\": createGenericPropertyDescriptor(\"bookmark-state\", {\"caseSensitive\":false}),\n  \"border\": border.descriptor,\n  \"border-block\": createGenericPropertyDescriptor(\"border-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderBlock\": createGenericPropertyDescriptor(\"border-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-block-clip\": createGenericPropertyDescriptor(\"border-block-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockClip\": createGenericPropertyDescriptor(\"border-block-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-block-color\": createGenericPropertyDescriptor(\"border-block-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderBlockColor\": createGenericPropertyDescriptor(\"border-block-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-block-end\": createGenericPropertyDescriptor(\"border-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderBlockEnd\": createGenericPropertyDescriptor(\"border-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-block-end-clip\": createGenericPropertyDescriptor(\"border-block-end-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockEndClip\": createGenericPropertyDescriptor(\"border-block-end-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-block-end-color\": borderBlockEndColor.descriptor,\n  \"borderBlockEndColor\": borderBlockEndColor.descriptor,\n  \"border-block-end-radius\": createGenericPropertyDescriptor(\"border-block-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockEndRadius\": createGenericPropertyDescriptor(\"border-block-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-block-end-style\": createGenericPropertyDescriptor(\"border-block-end-style\", {\"caseSensitive\":false}),\n  \"borderBlockEndStyle\": createGenericPropertyDescriptor(\"border-block-end-style\", {\"caseSensitive\":false}),\n  \"border-block-end-width\": createGenericPropertyDescriptor(\"border-block-end-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockEndWidth\": createGenericPropertyDescriptor(\"border-block-end-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-block-start\": createGenericPropertyDescriptor(\"border-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderBlockStart\": createGenericPropertyDescriptor(\"border-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-block-start-clip\": createGenericPropertyDescriptor(\"border-block-start-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockStartClip\": createGenericPropertyDescriptor(\"border-block-start-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-block-start-color\": borderBlockStartColor.descriptor,\n  \"borderBlockStartColor\": borderBlockStartColor.descriptor,\n  \"border-block-start-radius\": createGenericPropertyDescriptor(\"border-block-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockStartRadius\": createGenericPropertyDescriptor(\"border-block-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-block-start-style\": createGenericPropertyDescriptor(\"border-block-start-style\", {\"caseSensitive\":false}),\n  \"borderBlockStartStyle\": createGenericPropertyDescriptor(\"border-block-start-style\", {\"caseSensitive\":false}),\n  \"border-block-start-width\": createGenericPropertyDescriptor(\"border-block-start-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockStartWidth\": createGenericPropertyDescriptor(\"border-block-start-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-block-style\": createGenericPropertyDescriptor(\"border-block-style\", {\"caseSensitive\":false}),\n  \"borderBlockStyle\": createGenericPropertyDescriptor(\"border-block-style\", {\"caseSensitive\":false}),\n  \"border-block-width\": createGenericPropertyDescriptor(\"border-block-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBlockWidth\": createGenericPropertyDescriptor(\"border-block-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-bottom\": borderBottom.descriptor,\n  \"borderBottom\": borderBottom.descriptor,\n  \"border-bottom-clip\": createGenericPropertyDescriptor(\"border-bottom-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBottomClip\": createGenericPropertyDescriptor(\"border-bottom-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-bottom-color\": borderBottomColor.descriptor,\n  \"borderBottomColor\": borderBottomColor.descriptor,\n  \"border-bottom-left-radius\": createGenericPropertyDescriptor(\"border-bottom-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBottomLeftRadius\": createGenericPropertyDescriptor(\"border-bottom-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-bottom-radius\": createGenericPropertyDescriptor(\"border-bottom-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBottomRadius\": createGenericPropertyDescriptor(\"border-bottom-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-bottom-right-radius\": createGenericPropertyDescriptor(\"border-bottom-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderBottomRightRadius\": createGenericPropertyDescriptor(\"border-bottom-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-bottom-style\": borderBottomStyle.descriptor,\n  \"borderBottomStyle\": borderBottomStyle.descriptor,\n  \"border-bottom-width\": borderBottomWidth.descriptor,\n  \"borderBottomWidth\": borderBottomWidth.descriptor,\n  \"border-boundary\": createGenericPropertyDescriptor(\"border-boundary\", {\"caseSensitive\":false}),\n  \"borderBoundary\": createGenericPropertyDescriptor(\"border-boundary\", {\"caseSensitive\":false}),\n  \"border-clip\": createGenericPropertyDescriptor(\"border-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderClip\": createGenericPropertyDescriptor(\"border-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-collapse\": borderCollapse.descriptor,\n  \"borderCollapse\": borderCollapse.descriptor,\n  \"border-color\": borderColor.descriptor,\n  \"borderColor\": borderColor.descriptor,\n  \"border-end-end-radius\": createGenericPropertyDescriptor(\"border-end-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderEndEndRadius\": createGenericPropertyDescriptor(\"border-end-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-end-start-radius\": createGenericPropertyDescriptor(\"border-end-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderEndStartRadius\": createGenericPropertyDescriptor(\"border-end-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-image\": createGenericPropertyDescriptor(\"border-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"borderImage\": createGenericPropertyDescriptor(\"border-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"border-image-outset\": createGenericPropertyDescriptor(\"border-image-outset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"borderImageOutset\": createGenericPropertyDescriptor(\"border-image-outset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"border-image-repeat\": createGenericPropertyDescriptor(\"border-image-repeat\", {\"caseSensitive\":false}),\n  \"borderImageRepeat\": createGenericPropertyDescriptor(\"border-image-repeat\", {\"caseSensitive\":false}),\n  \"border-image-slice\": createGenericPropertyDescriptor(\"border-image-slice\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"borderImageSlice\": createGenericPropertyDescriptor(\"border-image-slice\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"border-image-source\": createGenericPropertyDescriptor(\"border-image-source\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"borderImageSource\": createGenericPropertyDescriptor(\"border-image-source\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"border-image-width\": createGenericPropertyDescriptor(\"border-image-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"borderImageWidth\": createGenericPropertyDescriptor(\"border-image-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"border-inline\": createGenericPropertyDescriptor(\"border-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderInline\": createGenericPropertyDescriptor(\"border-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-inline-clip\": createGenericPropertyDescriptor(\"border-inline-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineClip\": createGenericPropertyDescriptor(\"border-inline-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-inline-color\": createGenericPropertyDescriptor(\"border-inline-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderInlineColor\": createGenericPropertyDescriptor(\"border-inline-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-inline-end\": createGenericPropertyDescriptor(\"border-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderInlineEnd\": createGenericPropertyDescriptor(\"border-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-inline-end-clip\": createGenericPropertyDescriptor(\"border-inline-end-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineEndClip\": createGenericPropertyDescriptor(\"border-inline-end-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-inline-end-color\": borderInlineEndColor.descriptor,\n  \"borderInlineEndColor\": borderInlineEndColor.descriptor,\n  \"border-inline-end-radius\": createGenericPropertyDescriptor(\"border-inline-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineEndRadius\": createGenericPropertyDescriptor(\"border-inline-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-inline-end-style\": createGenericPropertyDescriptor(\"border-inline-end-style\", {\"caseSensitive\":false}),\n  \"borderInlineEndStyle\": createGenericPropertyDescriptor(\"border-inline-end-style\", {\"caseSensitive\":false}),\n  \"border-inline-end-width\": createGenericPropertyDescriptor(\"border-inline-end-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineEndWidth\": createGenericPropertyDescriptor(\"border-inline-end-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-inline-start\": createGenericPropertyDescriptor(\"border-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"borderInlineStart\": createGenericPropertyDescriptor(\"border-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"border-inline-start-clip\": createGenericPropertyDescriptor(\"border-inline-start-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineStartClip\": createGenericPropertyDescriptor(\"border-inline-start-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-inline-start-color\": borderInlineStartColor.descriptor,\n  \"borderInlineStartColor\": borderInlineStartColor.descriptor,\n  \"border-inline-start-radius\": createGenericPropertyDescriptor(\"border-inline-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineStartRadius\": createGenericPropertyDescriptor(\"border-inline-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-inline-start-style\": createGenericPropertyDescriptor(\"border-inline-start-style\", {\"caseSensitive\":false}),\n  \"borderInlineStartStyle\": createGenericPropertyDescriptor(\"border-inline-start-style\", {\"caseSensitive\":false}),\n  \"border-inline-start-width\": createGenericPropertyDescriptor(\"border-inline-start-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineStartWidth\": createGenericPropertyDescriptor(\"border-inline-start-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-inline-style\": createGenericPropertyDescriptor(\"border-inline-style\", {\"caseSensitive\":false}),\n  \"borderInlineStyle\": createGenericPropertyDescriptor(\"border-inline-style\", {\"caseSensitive\":false}),\n  \"border-inline-width\": createGenericPropertyDescriptor(\"border-inline-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderInlineWidth\": createGenericPropertyDescriptor(\"border-inline-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-left\": borderLeft.descriptor,\n  \"borderLeft\": borderLeft.descriptor,\n  \"border-left-clip\": createGenericPropertyDescriptor(\"border-left-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderLeftClip\": createGenericPropertyDescriptor(\"border-left-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-left-color\": borderLeftColor.descriptor,\n  \"borderLeftColor\": borderLeftColor.descriptor,\n  \"border-left-radius\": createGenericPropertyDescriptor(\"border-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderLeftRadius\": createGenericPropertyDescriptor(\"border-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-left-style\": borderLeftStyle.descriptor,\n  \"borderLeftStyle\": borderLeftStyle.descriptor,\n  \"border-left-width\": borderLeftWidth.descriptor,\n  \"borderLeftWidth\": borderLeftWidth.descriptor,\n  \"border-limit\": createGenericPropertyDescriptor(\"border-limit\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderLimit\": createGenericPropertyDescriptor(\"border-limit\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-radius\": createGenericPropertyDescriptor(\"border-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderRadius\": createGenericPropertyDescriptor(\"border-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-right\": borderRight.descriptor,\n  \"borderRight\": borderRight.descriptor,\n  \"border-right-clip\": createGenericPropertyDescriptor(\"border-right-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderRightClip\": createGenericPropertyDescriptor(\"border-right-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-right-color\": borderRightColor.descriptor,\n  \"borderRightColor\": borderRightColor.descriptor,\n  \"border-right-radius\": createGenericPropertyDescriptor(\"border-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderRightRadius\": createGenericPropertyDescriptor(\"border-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-right-style\": borderRightStyle.descriptor,\n  \"borderRightStyle\": borderRightStyle.descriptor,\n  \"border-right-width\": borderRightWidth.descriptor,\n  \"borderRightWidth\": borderRightWidth.descriptor,\n  \"border-shape\": createGenericPropertyDescriptor(\"border-shape\", {\"caseSensitive\":false}),\n  \"borderShape\": createGenericPropertyDescriptor(\"border-shape\", {\"caseSensitive\":false}),\n  \"border-spacing\": borderSpacing.descriptor,\n  \"borderSpacing\": borderSpacing.descriptor,\n  \"border-start-end-radius\": createGenericPropertyDescriptor(\"border-start-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderStartEndRadius\": createGenericPropertyDescriptor(\"border-start-end-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-start-start-radius\": createGenericPropertyDescriptor(\"border-start-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderStartStartRadius\": createGenericPropertyDescriptor(\"border-start-start-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-style\": borderStyle.descriptor,\n  \"borderStyle\": borderStyle.descriptor,\n  \"border-top\": borderTop.descriptor,\n  \"borderTop\": borderTop.descriptor,\n  \"border-top-clip\": createGenericPropertyDescriptor(\"border-top-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderTopClip\": createGenericPropertyDescriptor(\"border-top-clip\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-top-color\": borderTopColor.descriptor,\n  \"borderTopColor\": borderTopColor.descriptor,\n  \"border-top-left-radius\": createGenericPropertyDescriptor(\"border-top-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderTopLeftRadius\": createGenericPropertyDescriptor(\"border-top-left-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-top-radius\": createGenericPropertyDescriptor(\"border-top-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderTopRadius\": createGenericPropertyDescriptor(\"border-top-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-top-right-radius\": createGenericPropertyDescriptor(\"border-top-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"borderTopRightRadius\": createGenericPropertyDescriptor(\"border-top-right-radius\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"border-top-style\": borderTopStyle.descriptor,\n  \"borderTopStyle\": borderTopStyle.descriptor,\n  \"border-top-width\": borderTopWidth.descriptor,\n  \"borderTopWidth\": borderTopWidth.descriptor,\n  \"border-width\": borderWidth.descriptor,\n  \"borderWidth\": borderWidth.descriptor,\n  \"bottom\": bottom.descriptor,\n  \"box-decoration-break\": createGenericPropertyDescriptor(\"box-decoration-break\", {\"caseSensitive\":false}),\n  \"boxDecorationBreak\": createGenericPropertyDescriptor(\"box-decoration-break\", {\"caseSensitive\":false}),\n  \"box-shadow\": createGenericPropertyDescriptor(\"box-shadow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"boxShadow\": createGenericPropertyDescriptor(\"box-shadow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"box-shadow-blur\": createGenericPropertyDescriptor(\"box-shadow-blur\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"boxShadowBlur\": createGenericPropertyDescriptor(\"box-shadow-blur\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"box-shadow-color\": createGenericPropertyDescriptor(\"box-shadow-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"boxShadowColor\": createGenericPropertyDescriptor(\"box-shadow-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"box-shadow-offset\": createGenericPropertyDescriptor(\"box-shadow-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"boxShadowOffset\": createGenericPropertyDescriptor(\"box-shadow-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"box-shadow-position\": createGenericPropertyDescriptor(\"box-shadow-position\", {\"caseSensitive\":false}),\n  \"boxShadowPosition\": createGenericPropertyDescriptor(\"box-shadow-position\", {\"caseSensitive\":false}),\n  \"box-shadow-spread\": createGenericPropertyDescriptor(\"box-shadow-spread\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"boxShadowSpread\": createGenericPropertyDescriptor(\"box-shadow-spread\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"box-sizing\": createGenericPropertyDescriptor(\"box-sizing\", {\"caseSensitive\":false}),\n  \"boxSizing\": createGenericPropertyDescriptor(\"box-sizing\", {\"caseSensitive\":false}),\n  \"box-snap\": createGenericPropertyDescriptor(\"box-snap\", {\"caseSensitive\":false}),\n  \"boxSnap\": createGenericPropertyDescriptor(\"box-snap\", {\"caseSensitive\":false}),\n  \"break-after\": createGenericPropertyDescriptor(\"break-after\", {\"caseSensitive\":false}),\n  \"breakAfter\": createGenericPropertyDescriptor(\"break-after\", {\"caseSensitive\":false}),\n  \"break-before\": createGenericPropertyDescriptor(\"break-before\", {\"caseSensitive\":false}),\n  \"breakBefore\": createGenericPropertyDescriptor(\"break-before\", {\"caseSensitive\":false}),\n  \"break-inside\": createGenericPropertyDescriptor(\"break-inside\", {\"caseSensitive\":false}),\n  \"breakInside\": createGenericPropertyDescriptor(\"break-inside\", {\"caseSensitive\":false}),\n  \"caption-side\": createGenericPropertyDescriptor(\"caption-side\", {\"caseSensitive\":false}),\n  \"captionSide\": createGenericPropertyDescriptor(\"caption-side\", {\"caseSensitive\":false}),\n  \"caret\": createGenericPropertyDescriptor(\"caret\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"caret-animation\": createGenericPropertyDescriptor(\"caret-animation\", {\"caseSensitive\":false}),\n  \"caretAnimation\": createGenericPropertyDescriptor(\"caret-animation\", {\"caseSensitive\":false}),\n  \"caret-color\": createGenericPropertyDescriptor(\"caret-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"caretColor\": createGenericPropertyDescriptor(\"caret-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"caret-shape\": createGenericPropertyDescriptor(\"caret-shape\", {\"caseSensitive\":false}),\n  \"caretShape\": createGenericPropertyDescriptor(\"caret-shape\", {\"caseSensitive\":false}),\n  \"clear\": clear.descriptor,\n  \"clip\": clip.descriptor,\n  \"clip-path\": createGenericPropertyDescriptor(\"clip-path\", {\"caseSensitive\":false}),\n  \"clipPath\": createGenericPropertyDescriptor(\"clip-path\", {\"caseSensitive\":false}),\n  \"clip-rule\": createGenericPropertyDescriptor(\"clip-rule\", {\"caseSensitive\":false}),\n  \"clipRule\": createGenericPropertyDescriptor(\"clip-rule\", {\"caseSensitive\":false}),\n  \"color\": color.descriptor,\n  \"color-adjust\": createGenericPropertyDescriptor(\"color-adjust\", {\"caseSensitive\":false}),\n  \"colorAdjust\": createGenericPropertyDescriptor(\"color-adjust\", {\"caseSensitive\":false}),\n  \"color-interpolation\": createGenericPropertyDescriptor(\"color-interpolation\", {\"caseSensitive\":false}),\n  \"colorInterpolation\": createGenericPropertyDescriptor(\"color-interpolation\", {\"caseSensitive\":false}),\n  \"color-interpolation-filters\": createGenericPropertyDescriptor(\"color-interpolation-filters\", {\"caseSensitive\":false}),\n  \"colorInterpolationFilters\": createGenericPropertyDescriptor(\"color-interpolation-filters\", {\"caseSensitive\":false}),\n  \"color-scheme\": createGenericPropertyDescriptor(\"color-scheme\", {\"caseSensitive\":true}),\n  \"colorScheme\": createGenericPropertyDescriptor(\"color-scheme\", {\"caseSensitive\":true}),\n  \"column-count\": createGenericPropertyDescriptor(\"column-count\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"columnCount\": createGenericPropertyDescriptor(\"column-count\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"column-fill\": createGenericPropertyDescriptor(\"column-fill\", {\"caseSensitive\":false}),\n  \"columnFill\": createGenericPropertyDescriptor(\"column-fill\", {\"caseSensitive\":false}),\n  \"column-gap\": createGenericPropertyDescriptor(\"column-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"columnGap\": createGenericPropertyDescriptor(\"column-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"column-height\": createGenericPropertyDescriptor(\"column-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"columnHeight\": createGenericPropertyDescriptor(\"column-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"column-rule\": createGenericPropertyDescriptor(\"column-rule\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"columnRule\": createGenericPropertyDescriptor(\"column-rule\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"column-rule-break\": createGenericPropertyDescriptor(\"column-rule-break\", {\"caseSensitive\":false}),\n  \"columnRuleBreak\": createGenericPropertyDescriptor(\"column-rule-break\", {\"caseSensitive\":false}),\n  \"column-rule-color\": createGenericPropertyDescriptor(\"column-rule-color\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"columnRuleColor\": createGenericPropertyDescriptor(\"column-rule-color\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"column-rule-edge-inset\": createGenericPropertyDescriptor(\"column-rule-edge-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleEdgeInset\": createGenericPropertyDescriptor(\"column-rule-edge-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-edge-inset-end\": createGenericPropertyDescriptor(\"column-rule-edge-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleEdgeInsetEnd\": createGenericPropertyDescriptor(\"column-rule-edge-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-edge-inset-start\": createGenericPropertyDescriptor(\"column-rule-edge-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleEdgeInsetStart\": createGenericPropertyDescriptor(\"column-rule-edge-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-inset\": createGenericPropertyDescriptor(\"column-rule-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleInset\": createGenericPropertyDescriptor(\"column-rule-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-inset-end\": createGenericPropertyDescriptor(\"column-rule-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleInsetEnd\": createGenericPropertyDescriptor(\"column-rule-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-inset-start\": createGenericPropertyDescriptor(\"column-rule-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleInsetStart\": createGenericPropertyDescriptor(\"column-rule-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-interior-inset\": createGenericPropertyDescriptor(\"column-rule-interior-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleInteriorInset\": createGenericPropertyDescriptor(\"column-rule-interior-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-interior-inset-end\": createGenericPropertyDescriptor(\"column-rule-interior-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleInteriorInsetEnd\": createGenericPropertyDescriptor(\"column-rule-interior-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-interior-inset-start\": createGenericPropertyDescriptor(\"column-rule-interior-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnRuleInteriorInsetStart\": createGenericPropertyDescriptor(\"column-rule-interior-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-rule-style\": createGenericPropertyDescriptor(\"column-rule-style\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"columnRuleStyle\": createGenericPropertyDescriptor(\"column-rule-style\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"column-rule-visibility-items\": createGenericPropertyDescriptor(\"column-rule-visibility-items\", {\"caseSensitive\":false}),\n  \"columnRuleVisibilityItems\": createGenericPropertyDescriptor(\"column-rule-visibility-items\", {\"caseSensitive\":false}),\n  \"column-rule-width\": createGenericPropertyDescriptor(\"column-rule-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"columnRuleWidth\": createGenericPropertyDescriptor(\"column-rule-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"column-span\": createGenericPropertyDescriptor(\"column-span\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"columnSpan\": createGenericPropertyDescriptor(\"column-span\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"column-width\": createGenericPropertyDescriptor(\"column-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"columnWidth\": createGenericPropertyDescriptor(\"column-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"column-wrap\": createGenericPropertyDescriptor(\"column-wrap\", {\"caseSensitive\":false}),\n  \"columnWrap\": createGenericPropertyDescriptor(\"column-wrap\", {\"caseSensitive\":false}),\n  \"columns\": createGenericPropertyDescriptor(\"columns\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"type\":\"length\"}}}),\n  \"contain\": createGenericPropertyDescriptor(\"contain\", {\"caseSensitive\":false}),\n  \"contain-intrinsic-block-size\": createGenericPropertyDescriptor(\"contain-intrinsic-block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"containIntrinsicBlockSize\": createGenericPropertyDescriptor(\"contain-intrinsic-block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"contain-intrinsic-height\": createGenericPropertyDescriptor(\"contain-intrinsic-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"containIntrinsicHeight\": createGenericPropertyDescriptor(\"contain-intrinsic-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"contain-intrinsic-inline-size\": createGenericPropertyDescriptor(\"contain-intrinsic-inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"containIntrinsicInlineSize\": createGenericPropertyDescriptor(\"contain-intrinsic-inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"contain-intrinsic-size\": createGenericPropertyDescriptor(\"contain-intrinsic-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"containIntrinsicSize\": createGenericPropertyDescriptor(\"contain-intrinsic-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"contain-intrinsic-width\": createGenericPropertyDescriptor(\"contain-intrinsic-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"containIntrinsicWidth\": createGenericPropertyDescriptor(\"contain-intrinsic-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"container\": createGenericPropertyDescriptor(\"container\", {\"caseSensitive\":true}),\n  \"container-name\": createGenericPropertyDescriptor(\"container-name\", {\"caseSensitive\":true}),\n  \"containerName\": createGenericPropertyDescriptor(\"container-name\", {\"caseSensitive\":true}),\n  \"container-type\": createGenericPropertyDescriptor(\"container-type\", {\"caseSensitive\":false}),\n  \"containerType\": createGenericPropertyDescriptor(\"container-type\", {\"caseSensitive\":false}),\n  \"content\": createGenericPropertyDescriptor(\"content\", {\"caseSensitive\":true,\"functionTypes\":{\"image\":\"image\"}}),\n  \"content-visibility\": createGenericPropertyDescriptor(\"content-visibility\", {\"caseSensitive\":false}),\n  \"contentVisibility\": createGenericPropertyDescriptor(\"content-visibility\", {\"caseSensitive\":false}),\n  \"continue\": createGenericPropertyDescriptor(\"continue\", {\"caseSensitive\":false}),\n  \"copy-into\": createGenericPropertyDescriptor(\"copy-into\", {\"caseSensitive\":true}),\n  \"copyInto\": createGenericPropertyDescriptor(\"copy-into\", {\"caseSensitive\":true}),\n  \"corner\": createGenericPropertyDescriptor(\"corner\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-block-end\": createGenericPropertyDescriptor(\"corner-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerBlockEnd\": createGenericPropertyDescriptor(\"corner-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-block-end-shape\": createGenericPropertyDescriptor(\"corner-block-end-shape\", {\"caseSensitive\":false}),\n  \"cornerBlockEndShape\": createGenericPropertyDescriptor(\"corner-block-end-shape\", {\"caseSensitive\":false}),\n  \"corner-block-start\": createGenericPropertyDescriptor(\"corner-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerBlockStart\": createGenericPropertyDescriptor(\"corner-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-block-start-shape\": createGenericPropertyDescriptor(\"corner-block-start-shape\", {\"caseSensitive\":false}),\n  \"cornerBlockStartShape\": createGenericPropertyDescriptor(\"corner-block-start-shape\", {\"caseSensitive\":false}),\n  \"corner-bottom\": createGenericPropertyDescriptor(\"corner-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerBottom\": createGenericPropertyDescriptor(\"corner-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-bottom-left\": createGenericPropertyDescriptor(\"corner-bottom-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerBottomLeft\": createGenericPropertyDescriptor(\"corner-bottom-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-bottom-left-shape\": createGenericPropertyDescriptor(\"corner-bottom-left-shape\", {\"caseSensitive\":false}),\n  \"cornerBottomLeftShape\": createGenericPropertyDescriptor(\"corner-bottom-left-shape\", {\"caseSensitive\":false}),\n  \"corner-bottom-right\": createGenericPropertyDescriptor(\"corner-bottom-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerBottomRight\": createGenericPropertyDescriptor(\"corner-bottom-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-bottom-right-shape\": createGenericPropertyDescriptor(\"corner-bottom-right-shape\", {\"caseSensitive\":false}),\n  \"cornerBottomRightShape\": createGenericPropertyDescriptor(\"corner-bottom-right-shape\", {\"caseSensitive\":false}),\n  \"corner-bottom-shape\": createGenericPropertyDescriptor(\"corner-bottom-shape\", {\"caseSensitive\":false}),\n  \"cornerBottomShape\": createGenericPropertyDescriptor(\"corner-bottom-shape\", {\"caseSensitive\":false}),\n  \"corner-end-end\": createGenericPropertyDescriptor(\"corner-end-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerEndEnd\": createGenericPropertyDescriptor(\"corner-end-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-end-end-shape\": createGenericPropertyDescriptor(\"corner-end-end-shape\", {\"caseSensitive\":false}),\n  \"cornerEndEndShape\": createGenericPropertyDescriptor(\"corner-end-end-shape\", {\"caseSensitive\":false}),\n  \"corner-end-start\": createGenericPropertyDescriptor(\"corner-end-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerEndStart\": createGenericPropertyDescriptor(\"corner-end-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-end-start-shape\": createGenericPropertyDescriptor(\"corner-end-start-shape\", {\"caseSensitive\":false}),\n  \"cornerEndStartShape\": createGenericPropertyDescriptor(\"corner-end-start-shape\", {\"caseSensitive\":false}),\n  \"corner-inline-end\": createGenericPropertyDescriptor(\"corner-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerInlineEnd\": createGenericPropertyDescriptor(\"corner-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-inline-end-shape\": createGenericPropertyDescriptor(\"corner-inline-end-shape\", {\"caseSensitive\":false}),\n  \"cornerInlineEndShape\": createGenericPropertyDescriptor(\"corner-inline-end-shape\", {\"caseSensitive\":false}),\n  \"corner-inline-start\": createGenericPropertyDescriptor(\"corner-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerInlineStart\": createGenericPropertyDescriptor(\"corner-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-inline-start-shape\": createGenericPropertyDescriptor(\"corner-inline-start-shape\", {\"caseSensitive\":false}),\n  \"cornerInlineStartShape\": createGenericPropertyDescriptor(\"corner-inline-start-shape\", {\"caseSensitive\":false}),\n  \"corner-left\": createGenericPropertyDescriptor(\"corner-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerLeft\": createGenericPropertyDescriptor(\"corner-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-left-shape\": createGenericPropertyDescriptor(\"corner-left-shape\", {\"caseSensitive\":false}),\n  \"cornerLeftShape\": createGenericPropertyDescriptor(\"corner-left-shape\", {\"caseSensitive\":false}),\n  \"corner-right\": createGenericPropertyDescriptor(\"corner-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerRight\": createGenericPropertyDescriptor(\"corner-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-right-shape\": createGenericPropertyDescriptor(\"corner-right-shape\", {\"caseSensitive\":false}),\n  \"cornerRightShape\": createGenericPropertyDescriptor(\"corner-right-shape\", {\"caseSensitive\":false}),\n  \"corner-shape\": createGenericPropertyDescriptor(\"corner-shape\", {\"caseSensitive\":false}),\n  \"cornerShape\": createGenericPropertyDescriptor(\"corner-shape\", {\"caseSensitive\":false}),\n  \"corner-start-end\": createGenericPropertyDescriptor(\"corner-start-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerStartEnd\": createGenericPropertyDescriptor(\"corner-start-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-start-end-shape\": createGenericPropertyDescriptor(\"corner-start-end-shape\", {\"caseSensitive\":false}),\n  \"cornerStartEndShape\": createGenericPropertyDescriptor(\"corner-start-end-shape\", {\"caseSensitive\":false}),\n  \"corner-start-start\": createGenericPropertyDescriptor(\"corner-start-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerStartStart\": createGenericPropertyDescriptor(\"corner-start-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-start-start-shape\": createGenericPropertyDescriptor(\"corner-start-start-shape\", {\"caseSensitive\":false}),\n  \"cornerStartStartShape\": createGenericPropertyDescriptor(\"corner-start-start-shape\", {\"caseSensitive\":false}),\n  \"corner-top\": createGenericPropertyDescriptor(\"corner-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerTop\": createGenericPropertyDescriptor(\"corner-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-top-left\": createGenericPropertyDescriptor(\"corner-top-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerTopLeft\": createGenericPropertyDescriptor(\"corner-top-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-top-left-shape\": createGenericPropertyDescriptor(\"corner-top-left-shape\", {\"caseSensitive\":false}),\n  \"cornerTopLeftShape\": createGenericPropertyDescriptor(\"corner-top-left-shape\", {\"caseSensitive\":false}),\n  \"corner-top-right\": createGenericPropertyDescriptor(\"corner-top-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"cornerTopRight\": createGenericPropertyDescriptor(\"corner-top-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"corner-top-right-shape\": createGenericPropertyDescriptor(\"corner-top-right-shape\", {\"caseSensitive\":false}),\n  \"cornerTopRightShape\": createGenericPropertyDescriptor(\"corner-top-right-shape\", {\"caseSensitive\":false}),\n  \"corner-top-shape\": createGenericPropertyDescriptor(\"corner-top-shape\", {\"caseSensitive\":false}),\n  \"cornerTopShape\": createGenericPropertyDescriptor(\"corner-top-shape\", {\"caseSensitive\":false}),\n  \"counter-increment\": createGenericPropertyDescriptor(\"counter-increment\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"counterIncrement\": createGenericPropertyDescriptor(\"counter-increment\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"counter-reset\": createGenericPropertyDescriptor(\"counter-reset\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"counterReset\": createGenericPropertyDescriptor(\"counter-reset\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"counter-set\": createGenericPropertyDescriptor(\"counter-set\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"counterSet\": createGenericPropertyDescriptor(\"counter-set\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"cue\": createGenericPropertyDescriptor(\"cue\", {\"caseSensitive\":false}),\n  \"cue-after\": createGenericPropertyDescriptor(\"cue-after\", {\"caseSensitive\":false}),\n  \"cueAfter\": createGenericPropertyDescriptor(\"cue-after\", {\"caseSensitive\":false}),\n  \"cue-before\": createGenericPropertyDescriptor(\"cue-before\", {\"caseSensitive\":false}),\n  \"cueBefore\": createGenericPropertyDescriptor(\"cue-before\", {\"caseSensitive\":false}),\n  \"cursor\": createGenericPropertyDescriptor(\"cursor\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"cx\": createGenericPropertyDescriptor(\"cx\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"cy\": createGenericPropertyDescriptor(\"cy\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"d\": createGenericPropertyDescriptor(\"d\", {\"caseSensitive\":true}),\n  \"direction\": createGenericPropertyDescriptor(\"direction\", {\"caseSensitive\":false}),\n  \"display\": display.descriptor,\n  \"dominant-baseline\": createGenericPropertyDescriptor(\"dominant-baseline\", {\"caseSensitive\":false}),\n  \"dominantBaseline\": createGenericPropertyDescriptor(\"dominant-baseline\", {\"caseSensitive\":false}),\n  \"dynamic-range-limit\": createGenericPropertyDescriptor(\"dynamic-range-limit\", {\"caseSensitive\":false}),\n  \"dynamicRangeLimit\": createGenericPropertyDescriptor(\"dynamic-range-limit\", {\"caseSensitive\":false}),\n  \"empty-cells\": createGenericPropertyDescriptor(\"empty-cells\", {\"caseSensitive\":false}),\n  \"emptyCells\": createGenericPropertyDescriptor(\"empty-cells\", {\"caseSensitive\":false}),\n  \"event-trigger\": createGenericPropertyDescriptor(\"event-trigger\", {\"caseSensitive\":true}),\n  \"eventTrigger\": createGenericPropertyDescriptor(\"event-trigger\", {\"caseSensitive\":true}),\n  \"event-trigger-name\": createGenericPropertyDescriptor(\"event-trigger-name\", {\"caseSensitive\":true}),\n  \"eventTriggerName\": createGenericPropertyDescriptor(\"event-trigger-name\", {\"caseSensitive\":true}),\n  \"event-trigger-source\": createGenericPropertyDescriptor(\"event-trigger-source\", {\"caseSensitive\":true}),\n  \"eventTriggerSource\": createGenericPropertyDescriptor(\"event-trigger-source\", {\"caseSensitive\":true}),\n  \"field-sizing\": createGenericPropertyDescriptor(\"field-sizing\", {\"caseSensitive\":false}),\n  \"fieldSizing\": createGenericPropertyDescriptor(\"field-sizing\", {\"caseSensitive\":false}),\n  \"fill\": createGenericPropertyDescriptor(\"fill\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"fill-break\": createGenericPropertyDescriptor(\"fill-break\", {\"caseSensitive\":false}),\n  \"fillBreak\": createGenericPropertyDescriptor(\"fill-break\", {\"caseSensitive\":false}),\n  \"fill-color\": createGenericPropertyDescriptor(\"fill-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"fillColor\": createGenericPropertyDescriptor(\"fill-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"fill-image\": createGenericPropertyDescriptor(\"fill-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"fillImage\": createGenericPropertyDescriptor(\"fill-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"fill-opacity\": createGenericPropertyDescriptor(\"fill-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"fillOpacity\": createGenericPropertyDescriptor(\"fill-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"fill-origin\": createGenericPropertyDescriptor(\"fill-origin\", {\"caseSensitive\":false}),\n  \"fillOrigin\": createGenericPropertyDescriptor(\"fill-origin\", {\"caseSensitive\":false}),\n  \"fill-position\": createGenericPropertyDescriptor(\"fill-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"fillPosition\": createGenericPropertyDescriptor(\"fill-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"fill-repeat\": createGenericPropertyDescriptor(\"fill-repeat\", {\"caseSensitive\":false}),\n  \"fillRepeat\": createGenericPropertyDescriptor(\"fill-repeat\", {\"caseSensitive\":false}),\n  \"fill-rule\": createGenericPropertyDescriptor(\"fill-rule\", {\"caseSensitive\":false}),\n  \"fillRule\": createGenericPropertyDescriptor(\"fill-rule\", {\"caseSensitive\":false}),\n  \"fill-size\": createGenericPropertyDescriptor(\"fill-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"fillSize\": createGenericPropertyDescriptor(\"fill-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"filter\": createGenericPropertyDescriptor(\"filter\", {\"caseSensitive\":false}),\n  \"flex\": flex.descriptor,\n  \"flex-basis\": flexBasis.descriptor,\n  \"flexBasis\": flexBasis.descriptor,\n  \"flex-direction\": createGenericPropertyDescriptor(\"flex-direction\", {\"caseSensitive\":false}),\n  \"flexDirection\": createGenericPropertyDescriptor(\"flex-direction\", {\"caseSensitive\":false}),\n  \"flex-flow\": createGenericPropertyDescriptor(\"flex-flow\", {\"caseSensitive\":false}),\n  \"flexFlow\": createGenericPropertyDescriptor(\"flex-flow\", {\"caseSensitive\":false}),\n  \"flex-grow\": flexGrow.descriptor,\n  \"flexGrow\": flexGrow.descriptor,\n  \"flex-shrink\": flexShrink.descriptor,\n  \"flexShrink\": flexShrink.descriptor,\n  \"flex-wrap\": createGenericPropertyDescriptor(\"flex-wrap\", {\"caseSensitive\":false}),\n  \"flexWrap\": createGenericPropertyDescriptor(\"flex-wrap\", {\"caseSensitive\":false}),\n  \"float\": float.descriptor,\n  \"float-defer\": createGenericPropertyDescriptor(\"float-defer\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"floatDefer\": createGenericPropertyDescriptor(\"float-defer\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"float-offset\": createGenericPropertyDescriptor(\"float-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"floatOffset\": createGenericPropertyDescriptor(\"float-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"float-reference\": createGenericPropertyDescriptor(\"float-reference\", {\"caseSensitive\":false}),\n  \"floatReference\": createGenericPropertyDescriptor(\"float-reference\", {\"caseSensitive\":false}),\n  \"flood-color\": floodColor.descriptor,\n  \"floodColor\": floodColor.descriptor,\n  \"flood-opacity\": createGenericPropertyDescriptor(\"flood-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"floodOpacity\": createGenericPropertyDescriptor(\"flood-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"flow-from\": createGenericPropertyDescriptor(\"flow-from\", {\"caseSensitive\":true}),\n  \"flowFrom\": createGenericPropertyDescriptor(\"flow-from\", {\"caseSensitive\":true}),\n  \"flow-into\": createGenericPropertyDescriptor(\"flow-into\", {\"caseSensitive\":true}),\n  \"flowInto\": createGenericPropertyDescriptor(\"flow-into\", {\"caseSensitive\":true}),\n  \"flow-tolerance\": createGenericPropertyDescriptor(\"flow-tolerance\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"flowTolerance\": createGenericPropertyDescriptor(\"flow-tolerance\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"font\": font.descriptor,\n  \"font-family\": fontFamily.descriptor,\n  \"fontFamily\": fontFamily.descriptor,\n  \"font-feature-settings\": createGenericPropertyDescriptor(\"font-feature-settings\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"fontFeatureSettings\": createGenericPropertyDescriptor(\"font-feature-settings\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"font-kerning\": createGenericPropertyDescriptor(\"font-kerning\", {\"caseSensitive\":false}),\n  \"fontKerning\": createGenericPropertyDescriptor(\"font-kerning\", {\"caseSensitive\":false}),\n  \"font-language-override\": createGenericPropertyDescriptor(\"font-language-override\", {\"caseSensitive\":true}),\n  \"fontLanguageOverride\": createGenericPropertyDescriptor(\"font-language-override\", {\"caseSensitive\":true}),\n  \"font-optical-sizing\": createGenericPropertyDescriptor(\"font-optical-sizing\", {\"caseSensitive\":false}),\n  \"fontOpticalSizing\": createGenericPropertyDescriptor(\"font-optical-sizing\", {\"caseSensitive\":false}),\n  \"font-palette\": createGenericPropertyDescriptor(\"font-palette\", {\"caseSensitive\":true}),\n  \"fontPalette\": createGenericPropertyDescriptor(\"font-palette\", {\"caseSensitive\":true}),\n  \"font-size\": fontSize.descriptor,\n  \"fontSize\": fontSize.descriptor,\n  \"font-size-adjust\": createGenericPropertyDescriptor(\"font-size-adjust\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"fontSizeAdjust\": createGenericPropertyDescriptor(\"font-size-adjust\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"font-stretch\": createGenericPropertyDescriptor(\"font-stretch\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"fontStretch\": createGenericPropertyDescriptor(\"font-stretch\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"font-style\": fontStyle.descriptor,\n  \"fontStyle\": fontStyle.descriptor,\n  \"font-synthesis\": createGenericPropertyDescriptor(\"font-synthesis\", {\"caseSensitive\":false}),\n  \"fontSynthesis\": createGenericPropertyDescriptor(\"font-synthesis\", {\"caseSensitive\":false}),\n  \"font-synthesis-position\": createGenericPropertyDescriptor(\"font-synthesis-position\", {\"caseSensitive\":false}),\n  \"fontSynthesisPosition\": createGenericPropertyDescriptor(\"font-synthesis-position\", {\"caseSensitive\":false}),\n  \"font-synthesis-small-caps\": createGenericPropertyDescriptor(\"font-synthesis-small-caps\", {\"caseSensitive\":false}),\n  \"fontSynthesisSmallCaps\": createGenericPropertyDescriptor(\"font-synthesis-small-caps\", {\"caseSensitive\":false}),\n  \"font-synthesis-style\": createGenericPropertyDescriptor(\"font-synthesis-style\", {\"caseSensitive\":false}),\n  \"fontSynthesisStyle\": createGenericPropertyDescriptor(\"font-synthesis-style\", {\"caseSensitive\":false}),\n  \"font-synthesis-weight\": createGenericPropertyDescriptor(\"font-synthesis-weight\", {\"caseSensitive\":false}),\n  \"fontSynthesisWeight\": createGenericPropertyDescriptor(\"font-synthesis-weight\", {\"caseSensitive\":false}),\n  \"font-variant\": fontVariant.descriptor,\n  \"fontVariant\": fontVariant.descriptor,\n  \"font-variant-alternates\": createGenericPropertyDescriptor(\"font-variant-alternates\", {\"caseSensitive\":false}),\n  \"fontVariantAlternates\": createGenericPropertyDescriptor(\"font-variant-alternates\", {\"caseSensitive\":false}),\n  \"font-variant-caps\": createGenericPropertyDescriptor(\"font-variant-caps\", {\"caseSensitive\":false}),\n  \"fontVariantCaps\": createGenericPropertyDescriptor(\"font-variant-caps\", {\"caseSensitive\":false}),\n  \"font-variant-east-asian\": createGenericPropertyDescriptor(\"font-variant-east-asian\", {\"caseSensitive\":false}),\n  \"fontVariantEastAsian\": createGenericPropertyDescriptor(\"font-variant-east-asian\", {\"caseSensitive\":false}),\n  \"font-variant-emoji\": createGenericPropertyDescriptor(\"font-variant-emoji\", {\"caseSensitive\":false}),\n  \"fontVariantEmoji\": createGenericPropertyDescriptor(\"font-variant-emoji\", {\"caseSensitive\":false}),\n  \"font-variant-ligatures\": createGenericPropertyDescriptor(\"font-variant-ligatures\", {\"caseSensitive\":false}),\n  \"fontVariantLigatures\": createGenericPropertyDescriptor(\"font-variant-ligatures\", {\"caseSensitive\":false}),\n  \"font-variant-numeric\": createGenericPropertyDescriptor(\"font-variant-numeric\", {\"caseSensitive\":false}),\n  \"fontVariantNumeric\": createGenericPropertyDescriptor(\"font-variant-numeric\", {\"caseSensitive\":false}),\n  \"font-variant-position\": createGenericPropertyDescriptor(\"font-variant-position\", {\"caseSensitive\":false}),\n  \"fontVariantPosition\": createGenericPropertyDescriptor(\"font-variant-position\", {\"caseSensitive\":false}),\n  \"font-variation-settings\": createGenericPropertyDescriptor(\"font-variation-settings\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"fontVariationSettings\": createGenericPropertyDescriptor(\"font-variation-settings\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"font-weight\": fontWeight.descriptor,\n  \"fontWeight\": fontWeight.descriptor,\n  \"font-width\": createGenericPropertyDescriptor(\"font-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"fontWidth\": createGenericPropertyDescriptor(\"font-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"footnote-display\": createGenericPropertyDescriptor(\"footnote-display\", {\"caseSensitive\":false}),\n  \"footnoteDisplay\": createGenericPropertyDescriptor(\"footnote-display\", {\"caseSensitive\":false}),\n  \"footnote-policy\": createGenericPropertyDescriptor(\"footnote-policy\", {\"caseSensitive\":false}),\n  \"footnotePolicy\": createGenericPropertyDescriptor(\"footnote-policy\", {\"caseSensitive\":false}),\n  \"forced-color-adjust\": createGenericPropertyDescriptor(\"forced-color-adjust\", {\"caseSensitive\":false}),\n  \"forcedColorAdjust\": createGenericPropertyDescriptor(\"forced-color-adjust\", {\"caseSensitive\":false}),\n  \"gap\": createGenericPropertyDescriptor(\"gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"glyph-orientation-vertical\": createGenericPropertyDescriptor(\"glyph-orientation-vertical\", {\"caseSensitive\":false}),\n  \"glyphOrientationVertical\": createGenericPropertyDescriptor(\"glyph-orientation-vertical\", {\"caseSensitive\":false}),\n  \"grid\": createGenericPropertyDescriptor(\"grid\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-area\": createGenericPropertyDescriptor(\"grid-area\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"gridArea\": createGenericPropertyDescriptor(\"grid-area\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"grid-auto-columns\": createGenericPropertyDescriptor(\"grid-auto-columns\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridAutoColumns\": createGenericPropertyDescriptor(\"grid-auto-columns\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-auto-flow\": createGenericPropertyDescriptor(\"grid-auto-flow\", {\"caseSensitive\":false}),\n  \"gridAutoFlow\": createGenericPropertyDescriptor(\"grid-auto-flow\", {\"caseSensitive\":false}),\n  \"grid-auto-rows\": createGenericPropertyDescriptor(\"grid-auto-rows\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridAutoRows\": createGenericPropertyDescriptor(\"grid-auto-rows\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-column\": createGenericPropertyDescriptor(\"grid-column\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"gridColumn\": createGenericPropertyDescriptor(\"grid-column\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"grid-column-end\": createGenericPropertyDescriptor(\"grid-column-end\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"gridColumnEnd\": createGenericPropertyDescriptor(\"grid-column-end\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"grid-column-gap\": createGenericPropertyDescriptor(\"grid-column-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridColumnGap\": createGenericPropertyDescriptor(\"grid-column-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-column-start\": createGenericPropertyDescriptor(\"grid-column-start\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"gridColumnStart\": createGenericPropertyDescriptor(\"grid-column-start\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"grid-gap\": createGenericPropertyDescriptor(\"grid-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridGap\": createGenericPropertyDescriptor(\"grid-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-row\": createGenericPropertyDescriptor(\"grid-row\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"gridRow\": createGenericPropertyDescriptor(\"grid-row\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"grid-row-end\": createGenericPropertyDescriptor(\"grid-row-end\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"gridRowEnd\": createGenericPropertyDescriptor(\"grid-row-end\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"grid-row-gap\": createGenericPropertyDescriptor(\"grid-row-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridRowGap\": createGenericPropertyDescriptor(\"grid-row-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-row-start\": createGenericPropertyDescriptor(\"grid-row-start\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"gridRowStart\": createGenericPropertyDescriptor(\"grid-row-start\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"grid-template\": createGenericPropertyDescriptor(\"grid-template\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridTemplate\": createGenericPropertyDescriptor(\"grid-template\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-template-areas\": createGenericPropertyDescriptor(\"grid-template-areas\", {\"caseSensitive\":true}),\n  \"gridTemplateAreas\": createGenericPropertyDescriptor(\"grid-template-areas\", {\"caseSensitive\":true}),\n  \"grid-template-columns\": createGenericPropertyDescriptor(\"grid-template-columns\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridTemplateColumns\": createGenericPropertyDescriptor(\"grid-template-columns\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"grid-template-rows\": createGenericPropertyDescriptor(\"grid-template-rows\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"gridTemplateRows\": createGenericPropertyDescriptor(\"grid-template-rows\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":0,\"type\":\"dimension\"},\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"hanging-punctuation\": createGenericPropertyDescriptor(\"hanging-punctuation\", {\"caseSensitive\":false}),\n  \"hangingPunctuation\": createGenericPropertyDescriptor(\"hanging-punctuation\", {\"caseSensitive\":false}),\n  \"height\": height.descriptor,\n  \"hyphenate-character\": createGenericPropertyDescriptor(\"hyphenate-character\", {\"caseSensitive\":true}),\n  \"hyphenateCharacter\": createGenericPropertyDescriptor(\"hyphenate-character\", {\"caseSensitive\":true}),\n  \"hyphenate-limit-chars\": createGenericPropertyDescriptor(\"hyphenate-limit-chars\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"hyphenateLimitChars\": createGenericPropertyDescriptor(\"hyphenate-limit-chars\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"hyphenate-limit-last\": createGenericPropertyDescriptor(\"hyphenate-limit-last\", {\"caseSensitive\":false}),\n  \"hyphenateLimitLast\": createGenericPropertyDescriptor(\"hyphenate-limit-last\", {\"caseSensitive\":false}),\n  \"hyphenate-limit-lines\": createGenericPropertyDescriptor(\"hyphenate-limit-lines\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"hyphenateLimitLines\": createGenericPropertyDescriptor(\"hyphenate-limit-lines\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"hyphenate-limit-zone\": createGenericPropertyDescriptor(\"hyphenate-limit-zone\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"hyphenateLimitZone\": createGenericPropertyDescriptor(\"hyphenate-limit-zone\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"hyphens\": createGenericPropertyDescriptor(\"hyphens\", {\"caseSensitive\":false}),\n  \"image-orientation\": createGenericPropertyDescriptor(\"image-orientation\", {\"caseSensitive\":false,\"dimensionTypes\":{\"angle\":{\"type\":\"angle\"}}}),\n  \"imageOrientation\": createGenericPropertyDescriptor(\"image-orientation\", {\"caseSensitive\":false,\"dimensionTypes\":{\"angle\":{\"type\":\"angle\"}}}),\n  \"image-rendering\": createGenericPropertyDescriptor(\"image-rendering\", {\"caseSensitive\":false}),\n  \"imageRendering\": createGenericPropertyDescriptor(\"image-rendering\", {\"caseSensitive\":false}),\n  \"image-resolution\": createGenericPropertyDescriptor(\"image-resolution\", {\"caseSensitive\":false}),\n  \"imageResolution\": createGenericPropertyDescriptor(\"image-resolution\", {\"caseSensitive\":false}),\n  \"initial-letter\": createGenericPropertyDescriptor(\"initial-letter\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"initialLetter\": createGenericPropertyDescriptor(\"initial-letter\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"initial-letter-align\": createGenericPropertyDescriptor(\"initial-letter-align\", {\"caseSensitive\":false}),\n  \"initialLetterAlign\": createGenericPropertyDescriptor(\"initial-letter-align\", {\"caseSensitive\":false}),\n  \"initial-letter-wrap\": createGenericPropertyDescriptor(\"initial-letter-wrap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"initialLetterWrap\": createGenericPropertyDescriptor(\"initial-letter-wrap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"inline-size\": createGenericPropertyDescriptor(\"inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"inlineSize\": createGenericPropertyDescriptor(\"inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"inline-sizing\": createGenericPropertyDescriptor(\"inline-sizing\", {\"caseSensitive\":false}),\n  \"inlineSizing\": createGenericPropertyDescriptor(\"inline-sizing\", {\"caseSensitive\":false}),\n  \"input-security\": createGenericPropertyDescriptor(\"input-security\", {\"caseSensitive\":false}),\n  \"inputSecurity\": createGenericPropertyDescriptor(\"input-security\", {\"caseSensitive\":false}),\n  \"inset\": createGenericPropertyDescriptor(\"inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"inset-block\": createGenericPropertyDescriptor(\"inset-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"insetBlock\": createGenericPropertyDescriptor(\"inset-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"inset-block-end\": createGenericPropertyDescriptor(\"inset-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"insetBlockEnd\": createGenericPropertyDescriptor(\"inset-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"inset-block-start\": createGenericPropertyDescriptor(\"inset-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"insetBlockStart\": createGenericPropertyDescriptor(\"inset-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"inset-inline\": createGenericPropertyDescriptor(\"inset-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"insetInline\": createGenericPropertyDescriptor(\"inset-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"inset-inline-end\": createGenericPropertyDescriptor(\"inset-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"insetInlineEnd\": createGenericPropertyDescriptor(\"inset-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"inset-inline-start\": createGenericPropertyDescriptor(\"inset-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"insetInlineStart\": createGenericPropertyDescriptor(\"inset-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"interactivity\": createGenericPropertyDescriptor(\"interactivity\", {\"caseSensitive\":false}),\n  \"interest-delay\": createGenericPropertyDescriptor(\"interest-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"interestDelay\": createGenericPropertyDescriptor(\"interest-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"interest-delay-end\": createGenericPropertyDescriptor(\"interest-delay-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"interestDelayEnd\": createGenericPropertyDescriptor(\"interest-delay-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"interest-delay-start\": createGenericPropertyDescriptor(\"interest-delay-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"interestDelayStart\": createGenericPropertyDescriptor(\"interest-delay-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"interpolate-size\": createGenericPropertyDescriptor(\"interpolate-size\", {\"caseSensitive\":false}),\n  \"interpolateSize\": createGenericPropertyDescriptor(\"interpolate-size\", {\"caseSensitive\":false}),\n  \"isolation\": createGenericPropertyDescriptor(\"isolation\", {\"caseSensitive\":false}),\n  \"item-cross\": createGenericPropertyDescriptor(\"item-cross\", {\"caseSensitive\":false}),\n  \"itemCross\": createGenericPropertyDescriptor(\"item-cross\", {\"caseSensitive\":false}),\n  \"item-direction\": createGenericPropertyDescriptor(\"item-direction\", {\"caseSensitive\":false}),\n  \"itemDirection\": createGenericPropertyDescriptor(\"item-direction\", {\"caseSensitive\":false}),\n  \"item-flow\": createGenericPropertyDescriptor(\"item-flow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"itemFlow\": createGenericPropertyDescriptor(\"item-flow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"item-pack\": createGenericPropertyDescriptor(\"item-pack\", {\"caseSensitive\":false}),\n  \"itemPack\": createGenericPropertyDescriptor(\"item-pack\", {\"caseSensitive\":false}),\n  \"item-track\": createGenericPropertyDescriptor(\"item-track\", {\"caseSensitive\":false}),\n  \"itemTrack\": createGenericPropertyDescriptor(\"item-track\", {\"caseSensitive\":false}),\n  \"item-wrap\": createGenericPropertyDescriptor(\"item-wrap\", {\"caseSensitive\":false}),\n  \"itemWrap\": createGenericPropertyDescriptor(\"item-wrap\", {\"caseSensitive\":false}),\n  \"justify-content\": createGenericPropertyDescriptor(\"justify-content\", {\"caseSensitive\":false}),\n  \"justifyContent\": createGenericPropertyDescriptor(\"justify-content\", {\"caseSensitive\":false}),\n  \"justify-items\": createGenericPropertyDescriptor(\"justify-items\", {\"caseSensitive\":false}),\n  \"justifyItems\": createGenericPropertyDescriptor(\"justify-items\", {\"caseSensitive\":false}),\n  \"justify-self\": createGenericPropertyDescriptor(\"justify-self\", {\"caseSensitive\":false}),\n  \"justifySelf\": createGenericPropertyDescriptor(\"justify-self\", {\"caseSensitive\":false}),\n  \"left\": left.descriptor,\n  \"letter-spacing\": createGenericPropertyDescriptor(\"letter-spacing\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"letterSpacing\": createGenericPropertyDescriptor(\"letter-spacing\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"lighting-color\": lightingColor.descriptor,\n  \"lightingColor\": lightingColor.descriptor,\n  \"line-break\": createGenericPropertyDescriptor(\"line-break\", {\"caseSensitive\":false}),\n  \"lineBreak\": createGenericPropertyDescriptor(\"line-break\", {\"caseSensitive\":false}),\n  \"line-clamp\": createGenericPropertyDescriptor(\"line-clamp\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"lineClamp\": createGenericPropertyDescriptor(\"line-clamp\", {\"caseSensitive\":true,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"line-fit-edge\": createGenericPropertyDescriptor(\"line-fit-edge\", {\"caseSensitive\":false}),\n  \"lineFitEdge\": createGenericPropertyDescriptor(\"line-fit-edge\", {\"caseSensitive\":false}),\n  \"line-grid\": createGenericPropertyDescriptor(\"line-grid\", {\"caseSensitive\":false}),\n  \"lineGrid\": createGenericPropertyDescriptor(\"line-grid\", {\"caseSensitive\":false}),\n  \"line-height\": lineHeight.descriptor,\n  \"lineHeight\": lineHeight.descriptor,\n  \"line-height-step\": createGenericPropertyDescriptor(\"line-height-step\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"lineHeightStep\": createGenericPropertyDescriptor(\"line-height-step\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"line-padding\": createGenericPropertyDescriptor(\"line-padding\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"linePadding\": createGenericPropertyDescriptor(\"line-padding\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"line-snap\": createGenericPropertyDescriptor(\"line-snap\", {\"caseSensitive\":false}),\n  \"lineSnap\": createGenericPropertyDescriptor(\"line-snap\", {\"caseSensitive\":false}),\n  \"link-parameters\": createGenericPropertyDescriptor(\"link-parameters\", {\"caseSensitive\":false}),\n  \"linkParameters\": createGenericPropertyDescriptor(\"link-parameters\", {\"caseSensitive\":false}),\n  \"list-style\": createGenericPropertyDescriptor(\"list-style\", {\"caseSensitive\":true,\"functionTypes\":{\"image\":\"image\"}}),\n  \"listStyle\": createGenericPropertyDescriptor(\"list-style\", {\"caseSensitive\":true,\"functionTypes\":{\"image\":\"image\"}}),\n  \"list-style-image\": createGenericPropertyDescriptor(\"list-style-image\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"listStyleImage\": createGenericPropertyDescriptor(\"list-style-image\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"list-style-position\": createGenericPropertyDescriptor(\"list-style-position\", {\"caseSensitive\":false}),\n  \"listStylePosition\": createGenericPropertyDescriptor(\"list-style-position\", {\"caseSensitive\":false}),\n  \"list-style-type\": createGenericPropertyDescriptor(\"list-style-type\", {\"caseSensitive\":true}),\n  \"listStyleType\": createGenericPropertyDescriptor(\"list-style-type\", {\"caseSensitive\":true}),\n  \"margin\": margin.descriptor,\n  \"margin-block\": createGenericPropertyDescriptor(\"margin-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"marginBlock\": createGenericPropertyDescriptor(\"margin-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"margin-block-end\": createGenericPropertyDescriptor(\"margin-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"marginBlockEnd\": createGenericPropertyDescriptor(\"margin-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"margin-block-start\": createGenericPropertyDescriptor(\"margin-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"marginBlockStart\": createGenericPropertyDescriptor(\"margin-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"margin-bottom\": marginBottom.descriptor,\n  \"marginBottom\": marginBottom.descriptor,\n  \"margin-break\": createGenericPropertyDescriptor(\"margin-break\", {\"caseSensitive\":false}),\n  \"marginBreak\": createGenericPropertyDescriptor(\"margin-break\", {\"caseSensitive\":false}),\n  \"margin-inline\": createGenericPropertyDescriptor(\"margin-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"marginInline\": createGenericPropertyDescriptor(\"margin-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"margin-inline-end\": createGenericPropertyDescriptor(\"margin-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"marginInlineEnd\": createGenericPropertyDescriptor(\"margin-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"margin-inline-start\": createGenericPropertyDescriptor(\"margin-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"marginInlineStart\": createGenericPropertyDescriptor(\"margin-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"margin-left\": marginLeft.descriptor,\n  \"marginLeft\": marginLeft.descriptor,\n  \"margin-right\": marginRight.descriptor,\n  \"marginRight\": marginRight.descriptor,\n  \"margin-top\": marginTop.descriptor,\n  \"marginTop\": marginTop.descriptor,\n  \"margin-trim\": createGenericPropertyDescriptor(\"margin-trim\", {\"caseSensitive\":false}),\n  \"marginTrim\": createGenericPropertyDescriptor(\"margin-trim\", {\"caseSensitive\":false}),\n  \"marker\": createGenericPropertyDescriptor(\"marker\", {\"caseSensitive\":false}),\n  \"marker-end\": createGenericPropertyDescriptor(\"marker-end\", {\"caseSensitive\":false}),\n  \"markerEnd\": createGenericPropertyDescriptor(\"marker-end\", {\"caseSensitive\":false}),\n  \"marker-mid\": createGenericPropertyDescriptor(\"marker-mid\", {\"caseSensitive\":false}),\n  \"markerMid\": createGenericPropertyDescriptor(\"marker-mid\", {\"caseSensitive\":false}),\n  \"marker-side\": createGenericPropertyDescriptor(\"marker-side\", {\"caseSensitive\":false}),\n  \"markerSide\": createGenericPropertyDescriptor(\"marker-side\", {\"caseSensitive\":false}),\n  \"marker-start\": createGenericPropertyDescriptor(\"marker-start\", {\"caseSensitive\":false}),\n  \"markerStart\": createGenericPropertyDescriptor(\"marker-start\", {\"caseSensitive\":false}),\n  \"mask\": createGenericPropertyDescriptor(\"mask\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"mask-border\": createGenericPropertyDescriptor(\"mask-border\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"maskBorder\": createGenericPropertyDescriptor(\"mask-border\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"mask-border-mode\": createGenericPropertyDescriptor(\"mask-border-mode\", {\"caseSensitive\":false}),\n  \"maskBorderMode\": createGenericPropertyDescriptor(\"mask-border-mode\", {\"caseSensitive\":false}),\n  \"mask-border-outset\": createGenericPropertyDescriptor(\"mask-border-outset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"maskBorderOutset\": createGenericPropertyDescriptor(\"mask-border-outset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"mask-border-repeat\": createGenericPropertyDescriptor(\"mask-border-repeat\", {\"caseSensitive\":false}),\n  \"maskBorderRepeat\": createGenericPropertyDescriptor(\"mask-border-repeat\", {\"caseSensitive\":false}),\n  \"mask-border-slice\": createGenericPropertyDescriptor(\"mask-border-slice\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"maskBorderSlice\": createGenericPropertyDescriptor(\"mask-border-slice\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"mask-border-source\": createGenericPropertyDescriptor(\"mask-border-source\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"maskBorderSource\": createGenericPropertyDescriptor(\"mask-border-source\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"mask-border-width\": createGenericPropertyDescriptor(\"mask-border-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"maskBorderWidth\": createGenericPropertyDescriptor(\"mask-border-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"mask-clip\": createGenericPropertyDescriptor(\"mask-clip\", {\"caseSensitive\":false}),\n  \"maskClip\": createGenericPropertyDescriptor(\"mask-clip\", {\"caseSensitive\":false}),\n  \"mask-composite\": createGenericPropertyDescriptor(\"mask-composite\", {\"caseSensitive\":false}),\n  \"maskComposite\": createGenericPropertyDescriptor(\"mask-composite\", {\"caseSensitive\":false}),\n  \"mask-image\": createGenericPropertyDescriptor(\"mask-image\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"maskImage\": createGenericPropertyDescriptor(\"mask-image\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"mask-mode\": createGenericPropertyDescriptor(\"mask-mode\", {\"caseSensitive\":false}),\n  \"maskMode\": createGenericPropertyDescriptor(\"mask-mode\", {\"caseSensitive\":false}),\n  \"mask-origin\": createGenericPropertyDescriptor(\"mask-origin\", {\"caseSensitive\":false}),\n  \"maskOrigin\": createGenericPropertyDescriptor(\"mask-origin\", {\"caseSensitive\":false}),\n  \"mask-position\": createGenericPropertyDescriptor(\"mask-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"maskPosition\": createGenericPropertyDescriptor(\"mask-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"mask-repeat\": createGenericPropertyDescriptor(\"mask-repeat\", {\"caseSensitive\":false}),\n  \"maskRepeat\": createGenericPropertyDescriptor(\"mask-repeat\", {\"caseSensitive\":false}),\n  \"mask-size\": createGenericPropertyDescriptor(\"mask-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"maskSize\": createGenericPropertyDescriptor(\"mask-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"mask-type\": createGenericPropertyDescriptor(\"mask-type\", {\"caseSensitive\":false}),\n  \"maskType\": createGenericPropertyDescriptor(\"mask-type\", {\"caseSensitive\":false}),\n  \"math-depth\": createGenericPropertyDescriptor(\"math-depth\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"mathDepth\": createGenericPropertyDescriptor(\"math-depth\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"math-shift\": createGenericPropertyDescriptor(\"math-shift\", {\"caseSensitive\":false}),\n  \"mathShift\": createGenericPropertyDescriptor(\"math-shift\", {\"caseSensitive\":false}),\n  \"math-style\": createGenericPropertyDescriptor(\"math-style\", {\"caseSensitive\":false}),\n  \"mathStyle\": createGenericPropertyDescriptor(\"math-style\", {\"caseSensitive\":false}),\n  \"max-block-size\": createGenericPropertyDescriptor(\"max-block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"maxBlockSize\": createGenericPropertyDescriptor(\"max-block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"max-height\": createGenericPropertyDescriptor(\"max-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"maxHeight\": createGenericPropertyDescriptor(\"max-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"max-inline-size\": createGenericPropertyDescriptor(\"max-inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"maxInlineSize\": createGenericPropertyDescriptor(\"max-inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"max-lines\": createGenericPropertyDescriptor(\"max-lines\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"maxLines\": createGenericPropertyDescriptor(\"max-lines\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"max-width\": createGenericPropertyDescriptor(\"max-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"maxWidth\": createGenericPropertyDescriptor(\"max-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"min-block-size\": createGenericPropertyDescriptor(\"min-block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"minBlockSize\": createGenericPropertyDescriptor(\"min-block-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"min-height\": createGenericPropertyDescriptor(\"min-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"minHeight\": createGenericPropertyDescriptor(\"min-height\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"min-inline-size\": createGenericPropertyDescriptor(\"min-inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"minInlineSize\": createGenericPropertyDescriptor(\"min-inline-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"min-intrinsic-sizing\": createGenericPropertyDescriptor(\"min-intrinsic-sizing\", {\"caseSensitive\":false}),\n  \"minIntrinsicSizing\": createGenericPropertyDescriptor(\"min-intrinsic-sizing\", {\"caseSensitive\":false}),\n  \"min-width\": createGenericPropertyDescriptor(\"min-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"minWidth\": createGenericPropertyDescriptor(\"min-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"mix-blend-mode\": createGenericPropertyDescriptor(\"mix-blend-mode\", {\"caseSensitive\":false}),\n  \"mixBlendMode\": createGenericPropertyDescriptor(\"mix-blend-mode\", {\"caseSensitive\":false}),\n  \"nav-down\": createGenericPropertyDescriptor(\"nav-down\", {\"caseSensitive\":false}),\n  \"navDown\": createGenericPropertyDescriptor(\"nav-down\", {\"caseSensitive\":false}),\n  \"nav-left\": createGenericPropertyDescriptor(\"nav-left\", {\"caseSensitive\":false}),\n  \"navLeft\": createGenericPropertyDescriptor(\"nav-left\", {\"caseSensitive\":false}),\n  \"nav-right\": createGenericPropertyDescriptor(\"nav-right\", {\"caseSensitive\":false}),\n  \"navRight\": createGenericPropertyDescriptor(\"nav-right\", {\"caseSensitive\":false}),\n  \"nav-up\": createGenericPropertyDescriptor(\"nav-up\", {\"caseSensitive\":false}),\n  \"navUp\": createGenericPropertyDescriptor(\"nav-up\", {\"caseSensitive\":false}),\n  \"object-fit\": createGenericPropertyDescriptor(\"object-fit\", {\"caseSensitive\":false}),\n  \"objectFit\": createGenericPropertyDescriptor(\"object-fit\", {\"caseSensitive\":false}),\n  \"object-position\": createGenericPropertyDescriptor(\"object-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"objectPosition\": createGenericPropertyDescriptor(\"object-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"object-view-box\": createGenericPropertyDescriptor(\"object-view-box\", {\"caseSensitive\":false}),\n  \"objectViewBox\": createGenericPropertyDescriptor(\"object-view-box\", {\"caseSensitive\":false}),\n  \"offset\": createGenericPropertyDescriptor(\"offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"angle\":{\"type\":\"angle\"},\"length\":{\"type\":\"length\"}}}),\n  \"offset-anchor\": createGenericPropertyDescriptor(\"offset-anchor\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"offsetAnchor\": createGenericPropertyDescriptor(\"offset-anchor\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"offset-distance\": createGenericPropertyDescriptor(\"offset-distance\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"offsetDistance\": createGenericPropertyDescriptor(\"offset-distance\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"offset-path\": createGenericPropertyDescriptor(\"offset-path\", {\"caseSensitive\":false}),\n  \"offsetPath\": createGenericPropertyDescriptor(\"offset-path\", {\"caseSensitive\":false}),\n  \"offset-position\": createGenericPropertyDescriptor(\"offset-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"offsetPosition\": createGenericPropertyDescriptor(\"offset-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"offset-rotate\": createGenericPropertyDescriptor(\"offset-rotate\", {\"caseSensitive\":false,\"dimensionTypes\":{\"angle\":{\"type\":\"angle\"}}}),\n  \"offsetRotate\": createGenericPropertyDescriptor(\"offset-rotate\", {\"caseSensitive\":false,\"dimensionTypes\":{\"angle\":{\"type\":\"angle\"}}}),\n  \"opacity\": opacity.descriptor,\n  \"order\": createGenericPropertyDescriptor(\"order\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"orphans\": createGenericPropertyDescriptor(\"orphans\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"outline\": createGenericPropertyDescriptor(\"outline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"outline-color\": outlineColor.descriptor,\n  \"outlineColor\": outlineColor.descriptor,\n  \"outline-offset\": createGenericPropertyDescriptor(\"outline-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"outlineOffset\": createGenericPropertyDescriptor(\"outline-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"outline-style\": createGenericPropertyDescriptor(\"outline-style\", {\"caseSensitive\":false}),\n  \"outlineStyle\": createGenericPropertyDescriptor(\"outline-style\", {\"caseSensitive\":false}),\n  \"outline-width\": createGenericPropertyDescriptor(\"outline-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"outlineWidth\": createGenericPropertyDescriptor(\"outline-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow\": createGenericPropertyDescriptor(\"overflow\", {\"caseSensitive\":false}),\n  \"overflow-anchor\": createGenericPropertyDescriptor(\"overflow-anchor\", {\"caseSensitive\":false}),\n  \"overflowAnchor\": createGenericPropertyDescriptor(\"overflow-anchor\", {\"caseSensitive\":false}),\n  \"overflow-block\": createGenericPropertyDescriptor(\"overflow-block\", {\"caseSensitive\":false}),\n  \"overflowBlock\": createGenericPropertyDescriptor(\"overflow-block\", {\"caseSensitive\":false}),\n  \"overflow-clip-margin\": createGenericPropertyDescriptor(\"overflow-clip-margin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMargin\": createGenericPropertyDescriptor(\"overflow-clip-margin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-block\": createGenericPropertyDescriptor(\"overflow-clip-margin-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginBlock\": createGenericPropertyDescriptor(\"overflow-clip-margin-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-block-end\": createGenericPropertyDescriptor(\"overflow-clip-margin-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginBlockEnd\": createGenericPropertyDescriptor(\"overflow-clip-margin-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-block-start\": createGenericPropertyDescriptor(\"overflow-clip-margin-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginBlockStart\": createGenericPropertyDescriptor(\"overflow-clip-margin-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-bottom\": createGenericPropertyDescriptor(\"overflow-clip-margin-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginBottom\": createGenericPropertyDescriptor(\"overflow-clip-margin-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-inline\": createGenericPropertyDescriptor(\"overflow-clip-margin-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginInline\": createGenericPropertyDescriptor(\"overflow-clip-margin-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-inline-end\": createGenericPropertyDescriptor(\"overflow-clip-margin-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginInlineEnd\": createGenericPropertyDescriptor(\"overflow-clip-margin-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-inline-start\": createGenericPropertyDescriptor(\"overflow-clip-margin-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginInlineStart\": createGenericPropertyDescriptor(\"overflow-clip-margin-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-left\": createGenericPropertyDescriptor(\"overflow-clip-margin-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginLeft\": createGenericPropertyDescriptor(\"overflow-clip-margin-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-right\": createGenericPropertyDescriptor(\"overflow-clip-margin-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginRight\": createGenericPropertyDescriptor(\"overflow-clip-margin-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-clip-margin-top\": createGenericPropertyDescriptor(\"overflow-clip-margin-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflowClipMarginTop\": createGenericPropertyDescriptor(\"overflow-clip-margin-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"overflow-inline\": createGenericPropertyDescriptor(\"overflow-inline\", {\"caseSensitive\":false}),\n  \"overflowInline\": createGenericPropertyDescriptor(\"overflow-inline\", {\"caseSensitive\":false}),\n  \"overflow-wrap\": createGenericPropertyDescriptor(\"overflow-wrap\", {\"caseSensitive\":false}),\n  \"overflowWrap\": createGenericPropertyDescriptor(\"overflow-wrap\", {\"caseSensitive\":false}),\n  \"overflow-x\": createGenericPropertyDescriptor(\"overflow-x\", {\"caseSensitive\":false}),\n  \"overflowX\": createGenericPropertyDescriptor(\"overflow-x\", {\"caseSensitive\":false}),\n  \"overflow-y\": createGenericPropertyDescriptor(\"overflow-y\", {\"caseSensitive\":false}),\n  \"overflowY\": createGenericPropertyDescriptor(\"overflow-y\", {\"caseSensitive\":false}),\n  \"overlay\": createGenericPropertyDescriptor(\"overlay\", {\"caseSensitive\":false}),\n  \"overscroll-behavior\": createGenericPropertyDescriptor(\"overscroll-behavior\", {\"caseSensitive\":false}),\n  \"overscrollBehavior\": createGenericPropertyDescriptor(\"overscroll-behavior\", {\"caseSensitive\":false}),\n  \"overscroll-behavior-block\": createGenericPropertyDescriptor(\"overscroll-behavior-block\", {\"caseSensitive\":false}),\n  \"overscrollBehaviorBlock\": createGenericPropertyDescriptor(\"overscroll-behavior-block\", {\"caseSensitive\":false}),\n  \"overscroll-behavior-inline\": createGenericPropertyDescriptor(\"overscroll-behavior-inline\", {\"caseSensitive\":false}),\n  \"overscrollBehaviorInline\": createGenericPropertyDescriptor(\"overscroll-behavior-inline\", {\"caseSensitive\":false}),\n  \"overscroll-behavior-x\": createGenericPropertyDescriptor(\"overscroll-behavior-x\", {\"caseSensitive\":false}),\n  \"overscrollBehaviorX\": createGenericPropertyDescriptor(\"overscroll-behavior-x\", {\"caseSensitive\":false}),\n  \"overscroll-behavior-y\": createGenericPropertyDescriptor(\"overscroll-behavior-y\", {\"caseSensitive\":false}),\n  \"overscrollBehaviorY\": createGenericPropertyDescriptor(\"overscroll-behavior-y\", {\"caseSensitive\":false}),\n  \"padding\": padding.descriptor,\n  \"padding-block\": createGenericPropertyDescriptor(\"padding-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"paddingBlock\": createGenericPropertyDescriptor(\"padding-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"padding-block-end\": createGenericPropertyDescriptor(\"padding-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"paddingBlockEnd\": createGenericPropertyDescriptor(\"padding-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"padding-block-start\": createGenericPropertyDescriptor(\"padding-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"paddingBlockStart\": createGenericPropertyDescriptor(\"padding-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"padding-bottom\": paddingBottom.descriptor,\n  \"paddingBottom\": paddingBottom.descriptor,\n  \"padding-inline\": createGenericPropertyDescriptor(\"padding-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"paddingInline\": createGenericPropertyDescriptor(\"padding-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"padding-inline-end\": createGenericPropertyDescriptor(\"padding-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"paddingInlineEnd\": createGenericPropertyDescriptor(\"padding-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"padding-inline-start\": createGenericPropertyDescriptor(\"padding-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"paddingInlineStart\": createGenericPropertyDescriptor(\"padding-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"padding-left\": paddingLeft.descriptor,\n  \"paddingLeft\": paddingLeft.descriptor,\n  \"padding-right\": paddingRight.descriptor,\n  \"paddingRight\": paddingRight.descriptor,\n  \"padding-top\": paddingTop.descriptor,\n  \"paddingTop\": paddingTop.descriptor,\n  \"page\": createGenericPropertyDescriptor(\"page\", {\"caseSensitive\":true}),\n  \"page-break-after\": createGenericPropertyDescriptor(\"page-break-after\", {\"caseSensitive\":false}),\n  \"pageBreakAfter\": createGenericPropertyDescriptor(\"page-break-after\", {\"caseSensitive\":false}),\n  \"page-break-before\": createGenericPropertyDescriptor(\"page-break-before\", {\"caseSensitive\":false}),\n  \"pageBreakBefore\": createGenericPropertyDescriptor(\"page-break-before\", {\"caseSensitive\":false}),\n  \"page-break-inside\": createGenericPropertyDescriptor(\"page-break-inside\", {\"caseSensitive\":false}),\n  \"pageBreakInside\": createGenericPropertyDescriptor(\"page-break-inside\", {\"caseSensitive\":false}),\n  \"paint-order\": createGenericPropertyDescriptor(\"paint-order\", {\"caseSensitive\":false}),\n  \"paintOrder\": createGenericPropertyDescriptor(\"paint-order\", {\"caseSensitive\":false}),\n  \"pause\": createGenericPropertyDescriptor(\"pause\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"pause-after\": createGenericPropertyDescriptor(\"pause-after\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"pauseAfter\": createGenericPropertyDescriptor(\"pause-after\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"pause-before\": createGenericPropertyDescriptor(\"pause-before\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"pauseBefore\": createGenericPropertyDescriptor(\"pause-before\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"perspective\": createGenericPropertyDescriptor(\"perspective\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"perspective-origin\": createGenericPropertyDescriptor(\"perspective-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"perspectiveOrigin\": createGenericPropertyDescriptor(\"perspective-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"place-content\": createGenericPropertyDescriptor(\"place-content\", {\"caseSensitive\":false}),\n  \"placeContent\": createGenericPropertyDescriptor(\"place-content\", {\"caseSensitive\":false}),\n  \"place-items\": createGenericPropertyDescriptor(\"place-items\", {\"caseSensitive\":false}),\n  \"placeItems\": createGenericPropertyDescriptor(\"place-items\", {\"caseSensitive\":false}),\n  \"place-self\": createGenericPropertyDescriptor(\"place-self\", {\"caseSensitive\":false}),\n  \"placeSelf\": createGenericPropertyDescriptor(\"place-self\", {\"caseSensitive\":false}),\n  \"pointer-events\": createGenericPropertyDescriptor(\"pointer-events\", {\"caseSensitive\":false}),\n  \"pointerEvents\": createGenericPropertyDescriptor(\"pointer-events\", {\"caseSensitive\":false}),\n  \"pointer-timeline\": createGenericPropertyDescriptor(\"pointer-timeline\", {\"caseSensitive\":true}),\n  \"pointerTimeline\": createGenericPropertyDescriptor(\"pointer-timeline\", {\"caseSensitive\":true}),\n  \"pointer-timeline-axis\": createGenericPropertyDescriptor(\"pointer-timeline-axis\", {\"caseSensitive\":false}),\n  \"pointerTimelineAxis\": createGenericPropertyDescriptor(\"pointer-timeline-axis\", {\"caseSensitive\":false}),\n  \"pointer-timeline-name\": createGenericPropertyDescriptor(\"pointer-timeline-name\", {\"caseSensitive\":true}),\n  \"pointerTimelineName\": createGenericPropertyDescriptor(\"pointer-timeline-name\", {\"caseSensitive\":true}),\n  \"position\": createGenericPropertyDescriptor(\"position\", {\"caseSensitive\":false}),\n  \"position-anchor\": createGenericPropertyDescriptor(\"position-anchor\", {\"caseSensitive\":true}),\n  \"positionAnchor\": createGenericPropertyDescriptor(\"position-anchor\", {\"caseSensitive\":true}),\n  \"position-area\": createGenericPropertyDescriptor(\"position-area\", {\"caseSensitive\":false}),\n  \"positionArea\": createGenericPropertyDescriptor(\"position-area\", {\"caseSensitive\":false}),\n  \"position-try\": createGenericPropertyDescriptor(\"position-try\", {\"caseSensitive\":true}),\n  \"positionTry\": createGenericPropertyDescriptor(\"position-try\", {\"caseSensitive\":true}),\n  \"position-try-fallbacks\": createGenericPropertyDescriptor(\"position-try-fallbacks\", {\"caseSensitive\":true}),\n  \"positionTryFallbacks\": createGenericPropertyDescriptor(\"position-try-fallbacks\", {\"caseSensitive\":true}),\n  \"position-try-order\": createGenericPropertyDescriptor(\"position-try-order\", {\"caseSensitive\":false}),\n  \"positionTryOrder\": createGenericPropertyDescriptor(\"position-try-order\", {\"caseSensitive\":false}),\n  \"position-visibility\": createGenericPropertyDescriptor(\"position-visibility\", {\"caseSensitive\":false}),\n  \"positionVisibility\": createGenericPropertyDescriptor(\"position-visibility\", {\"caseSensitive\":false}),\n  \"print-color-adjust\": createGenericPropertyDescriptor(\"print-color-adjust\", {\"caseSensitive\":false}),\n  \"printColorAdjust\": createGenericPropertyDescriptor(\"print-color-adjust\", {\"caseSensitive\":false}),\n  \"quotes\": createGenericPropertyDescriptor(\"quotes\", {\"caseSensitive\":true}),\n  \"r\": createGenericPropertyDescriptor(\"r\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"reading-flow\": createGenericPropertyDescriptor(\"reading-flow\", {\"caseSensitive\":false}),\n  \"readingFlow\": createGenericPropertyDescriptor(\"reading-flow\", {\"caseSensitive\":false}),\n  \"reading-order\": createGenericPropertyDescriptor(\"reading-order\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"readingOrder\": createGenericPropertyDescriptor(\"reading-order\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"region-fragment\": createGenericPropertyDescriptor(\"region-fragment\", {\"caseSensitive\":false}),\n  \"regionFragment\": createGenericPropertyDescriptor(\"region-fragment\", {\"caseSensitive\":false}),\n  \"resize\": createGenericPropertyDescriptor(\"resize\", {\"caseSensitive\":false}),\n  \"rest\": createGenericPropertyDescriptor(\"rest\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"rest-after\": createGenericPropertyDescriptor(\"rest-after\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"restAfter\": createGenericPropertyDescriptor(\"rest-after\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"rest-before\": createGenericPropertyDescriptor(\"rest-before\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"restBefore\": createGenericPropertyDescriptor(\"rest-before\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"right\": right.descriptor,\n  \"rotate\": createGenericPropertyDescriptor(\"rotate\", {\"caseSensitive\":false,\"dimensionTypes\":{\"angle\":{\"type\":\"angle\"},\"number\":{\"type\":\"number\"}}}),\n  \"row-gap\": createGenericPropertyDescriptor(\"row-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"rowGap\": createGenericPropertyDescriptor(\"row-gap\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"row-rule\": createGenericPropertyDescriptor(\"row-rule\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"rowRule\": createGenericPropertyDescriptor(\"row-rule\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"row-rule-break\": createGenericPropertyDescriptor(\"row-rule-break\", {\"caseSensitive\":false}),\n  \"rowRuleBreak\": createGenericPropertyDescriptor(\"row-rule-break\", {\"caseSensitive\":false}),\n  \"row-rule-color\": createGenericPropertyDescriptor(\"row-rule-color\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"rowRuleColor\": createGenericPropertyDescriptor(\"row-rule-color\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"row-rule-edge-inset\": createGenericPropertyDescriptor(\"row-rule-edge-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleEdgeInset\": createGenericPropertyDescriptor(\"row-rule-edge-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-edge-inset-end\": createGenericPropertyDescriptor(\"row-rule-edge-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleEdgeInsetEnd\": createGenericPropertyDescriptor(\"row-rule-edge-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-edge-inset-start\": createGenericPropertyDescriptor(\"row-rule-edge-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleEdgeInsetStart\": createGenericPropertyDescriptor(\"row-rule-edge-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-inset\": createGenericPropertyDescriptor(\"row-rule-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleInset\": createGenericPropertyDescriptor(\"row-rule-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-inset-end\": createGenericPropertyDescriptor(\"row-rule-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleInsetEnd\": createGenericPropertyDescriptor(\"row-rule-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-inset-start\": createGenericPropertyDescriptor(\"row-rule-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleInsetStart\": createGenericPropertyDescriptor(\"row-rule-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-interior-inset\": createGenericPropertyDescriptor(\"row-rule-interior-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleInteriorInset\": createGenericPropertyDescriptor(\"row-rule-interior-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-interior-inset-end\": createGenericPropertyDescriptor(\"row-rule-interior-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleInteriorInsetEnd\": createGenericPropertyDescriptor(\"row-rule-interior-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-interior-inset-start\": createGenericPropertyDescriptor(\"row-rule-interior-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rowRuleInteriorInsetStart\": createGenericPropertyDescriptor(\"row-rule-interior-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"row-rule-style\": createGenericPropertyDescriptor(\"row-rule-style\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"rowRuleStyle\": createGenericPropertyDescriptor(\"row-rule-style\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"row-rule-visibility-items\": createGenericPropertyDescriptor(\"row-rule-visibility-items\", {\"caseSensitive\":false}),\n  \"rowRuleVisibilityItems\": createGenericPropertyDescriptor(\"row-rule-visibility-items\", {\"caseSensitive\":false}),\n  \"row-rule-width\": createGenericPropertyDescriptor(\"row-rule-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"rowRuleWidth\": createGenericPropertyDescriptor(\"row-rule-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"ruby-align\": createGenericPropertyDescriptor(\"ruby-align\", {\"caseSensitive\":false}),\n  \"rubyAlign\": createGenericPropertyDescriptor(\"ruby-align\", {\"caseSensitive\":false}),\n  \"ruby-merge\": createGenericPropertyDescriptor(\"ruby-merge\", {\"caseSensitive\":false}),\n  \"rubyMerge\": createGenericPropertyDescriptor(\"ruby-merge\", {\"caseSensitive\":false}),\n  \"ruby-overhang\": createGenericPropertyDescriptor(\"ruby-overhang\", {\"caseSensitive\":false}),\n  \"rubyOverhang\": createGenericPropertyDescriptor(\"ruby-overhang\", {\"caseSensitive\":false}),\n  \"ruby-position\": createGenericPropertyDescriptor(\"ruby-position\", {\"caseSensitive\":false}),\n  \"rubyPosition\": createGenericPropertyDescriptor(\"ruby-position\", {\"caseSensitive\":false}),\n  \"rule\": createGenericPropertyDescriptor(\"rule\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"rule-break\": createGenericPropertyDescriptor(\"rule-break\", {\"caseSensitive\":false}),\n  \"ruleBreak\": createGenericPropertyDescriptor(\"rule-break\", {\"caseSensitive\":false}),\n  \"rule-color\": createGenericPropertyDescriptor(\"rule-color\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"ruleColor\": createGenericPropertyDescriptor(\"rule-color\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"rule-edge-inset\": createGenericPropertyDescriptor(\"rule-edge-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"ruleEdgeInset\": createGenericPropertyDescriptor(\"rule-edge-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rule-inset\": createGenericPropertyDescriptor(\"rule-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"ruleInset\": createGenericPropertyDescriptor(\"rule-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rule-inset-end\": createGenericPropertyDescriptor(\"rule-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"ruleInsetEnd\": createGenericPropertyDescriptor(\"rule-inset-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rule-inset-start\": createGenericPropertyDescriptor(\"rule-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"ruleInsetStart\": createGenericPropertyDescriptor(\"rule-inset-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rule-interior-inset\": createGenericPropertyDescriptor(\"rule-interior-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"ruleInteriorInset\": createGenericPropertyDescriptor(\"rule-interior-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"rule-overlap\": createGenericPropertyDescriptor(\"rule-overlap\", {\"caseSensitive\":false}),\n  \"ruleOverlap\": createGenericPropertyDescriptor(\"rule-overlap\", {\"caseSensitive\":false}),\n  \"rule-style\": createGenericPropertyDescriptor(\"rule-style\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"ruleStyle\": createGenericPropertyDescriptor(\"rule-style\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"rule-visibility-items\": createGenericPropertyDescriptor(\"rule-visibility-items\", {\"caseSensitive\":false}),\n  \"ruleVisibilityItems\": createGenericPropertyDescriptor(\"rule-visibility-items\", {\"caseSensitive\":false}),\n  \"rule-width\": createGenericPropertyDescriptor(\"rule-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"ruleWidth\": createGenericPropertyDescriptor(\"rule-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"},\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"rx\": createGenericPropertyDescriptor(\"rx\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"ry\": createGenericPropertyDescriptor(\"ry\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scale\": createGenericPropertyDescriptor(\"scale\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"scroll-behavior\": createGenericPropertyDescriptor(\"scroll-behavior\", {\"caseSensitive\":false}),\n  \"scrollBehavior\": createGenericPropertyDescriptor(\"scroll-behavior\", {\"caseSensitive\":false}),\n  \"scroll-initial-target\": createGenericPropertyDescriptor(\"scroll-initial-target\", {\"caseSensitive\":false}),\n  \"scrollInitialTarget\": createGenericPropertyDescriptor(\"scroll-initial-target\", {\"caseSensitive\":false}),\n  \"scroll-margin\": createGenericPropertyDescriptor(\"scroll-margin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMargin\": createGenericPropertyDescriptor(\"scroll-margin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-block\": createGenericPropertyDescriptor(\"scroll-margin-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginBlock\": createGenericPropertyDescriptor(\"scroll-margin-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-block-end\": createGenericPropertyDescriptor(\"scroll-margin-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginBlockEnd\": createGenericPropertyDescriptor(\"scroll-margin-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-block-start\": createGenericPropertyDescriptor(\"scroll-margin-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginBlockStart\": createGenericPropertyDescriptor(\"scroll-margin-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-bottom\": createGenericPropertyDescriptor(\"scroll-margin-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginBottom\": createGenericPropertyDescriptor(\"scroll-margin-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-inline\": createGenericPropertyDescriptor(\"scroll-margin-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginInline\": createGenericPropertyDescriptor(\"scroll-margin-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-inline-end\": createGenericPropertyDescriptor(\"scroll-margin-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginInlineEnd\": createGenericPropertyDescriptor(\"scroll-margin-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-inline-start\": createGenericPropertyDescriptor(\"scroll-margin-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginInlineStart\": createGenericPropertyDescriptor(\"scroll-margin-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-left\": createGenericPropertyDescriptor(\"scroll-margin-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginLeft\": createGenericPropertyDescriptor(\"scroll-margin-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-right\": createGenericPropertyDescriptor(\"scroll-margin-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginRight\": createGenericPropertyDescriptor(\"scroll-margin-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-margin-top\": createGenericPropertyDescriptor(\"scroll-margin-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scrollMarginTop\": createGenericPropertyDescriptor(\"scroll-margin-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"scroll-marker-group\": createGenericPropertyDescriptor(\"scroll-marker-group\", {\"caseSensitive\":false}),\n  \"scrollMarkerGroup\": createGenericPropertyDescriptor(\"scroll-marker-group\", {\"caseSensitive\":false}),\n  \"scroll-padding\": createGenericPropertyDescriptor(\"scroll-padding\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPadding\": createGenericPropertyDescriptor(\"scroll-padding\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-block\": createGenericPropertyDescriptor(\"scroll-padding-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingBlock\": createGenericPropertyDescriptor(\"scroll-padding-block\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-block-end\": createGenericPropertyDescriptor(\"scroll-padding-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingBlockEnd\": createGenericPropertyDescriptor(\"scroll-padding-block-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-block-start\": createGenericPropertyDescriptor(\"scroll-padding-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingBlockStart\": createGenericPropertyDescriptor(\"scroll-padding-block-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-bottom\": createGenericPropertyDescriptor(\"scroll-padding-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingBottom\": createGenericPropertyDescriptor(\"scroll-padding-bottom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-inline\": createGenericPropertyDescriptor(\"scroll-padding-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingInline\": createGenericPropertyDescriptor(\"scroll-padding-inline\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-inline-end\": createGenericPropertyDescriptor(\"scroll-padding-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingInlineEnd\": createGenericPropertyDescriptor(\"scroll-padding-inline-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-inline-start\": createGenericPropertyDescriptor(\"scroll-padding-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingInlineStart\": createGenericPropertyDescriptor(\"scroll-padding-inline-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-left\": createGenericPropertyDescriptor(\"scroll-padding-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingLeft\": createGenericPropertyDescriptor(\"scroll-padding-left\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-right\": createGenericPropertyDescriptor(\"scroll-padding-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingRight\": createGenericPropertyDescriptor(\"scroll-padding-right\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-padding-top\": createGenericPropertyDescriptor(\"scroll-padding-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scrollPaddingTop\": createGenericPropertyDescriptor(\"scroll-padding-top\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"scroll-snap-align\": createGenericPropertyDescriptor(\"scroll-snap-align\", {\"caseSensitive\":false}),\n  \"scrollSnapAlign\": createGenericPropertyDescriptor(\"scroll-snap-align\", {\"caseSensitive\":false}),\n  \"scroll-snap-stop\": createGenericPropertyDescriptor(\"scroll-snap-stop\", {\"caseSensitive\":false}),\n  \"scrollSnapStop\": createGenericPropertyDescriptor(\"scroll-snap-stop\", {\"caseSensitive\":false}),\n  \"scroll-snap-type\": createGenericPropertyDescriptor(\"scroll-snap-type\", {\"caseSensitive\":false}),\n  \"scrollSnapType\": createGenericPropertyDescriptor(\"scroll-snap-type\", {\"caseSensitive\":false}),\n  \"scroll-target-group\": createGenericPropertyDescriptor(\"scroll-target-group\", {\"caseSensitive\":false}),\n  \"scrollTargetGroup\": createGenericPropertyDescriptor(\"scroll-target-group\", {\"caseSensitive\":false}),\n  \"scroll-timeline\": createGenericPropertyDescriptor(\"scroll-timeline\", {\"caseSensitive\":true}),\n  \"scrollTimeline\": createGenericPropertyDescriptor(\"scroll-timeline\", {\"caseSensitive\":true}),\n  \"scroll-timeline-axis\": createGenericPropertyDescriptor(\"scroll-timeline-axis\", {\"caseSensitive\":false}),\n  \"scrollTimelineAxis\": createGenericPropertyDescriptor(\"scroll-timeline-axis\", {\"caseSensitive\":false}),\n  \"scroll-timeline-name\": createGenericPropertyDescriptor(\"scroll-timeline-name\", {\"caseSensitive\":true}),\n  \"scrollTimelineName\": createGenericPropertyDescriptor(\"scroll-timeline-name\", {\"caseSensitive\":true}),\n  \"scrollbar-color\": createGenericPropertyDescriptor(\"scrollbar-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"scrollbarColor\": createGenericPropertyDescriptor(\"scrollbar-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"scrollbar-gutter\": createGenericPropertyDescriptor(\"scrollbar-gutter\", {\"caseSensitive\":false}),\n  \"scrollbarGutter\": createGenericPropertyDescriptor(\"scrollbar-gutter\", {\"caseSensitive\":false}),\n  \"scrollbar-width\": createGenericPropertyDescriptor(\"scrollbar-width\", {\"caseSensitive\":false}),\n  \"scrollbarWidth\": createGenericPropertyDescriptor(\"scrollbar-width\", {\"caseSensitive\":false}),\n  \"shape-image-threshold\": createGenericPropertyDescriptor(\"shape-image-threshold\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"shapeImageThreshold\": createGenericPropertyDescriptor(\"shape-image-threshold\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"shape-inside\": createGenericPropertyDescriptor(\"shape-inside\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"shapeInside\": createGenericPropertyDescriptor(\"shape-inside\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"shape-margin\": createGenericPropertyDescriptor(\"shape-margin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"shapeMargin\": createGenericPropertyDescriptor(\"shape-margin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"shape-outside\": createGenericPropertyDescriptor(\"shape-outside\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"shapeOutside\": createGenericPropertyDescriptor(\"shape-outside\", {\"caseSensitive\":false,\"functionTypes\":{\"image\":\"image\"}}),\n  \"shape-padding\": createGenericPropertyDescriptor(\"shape-padding\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"shapePadding\": createGenericPropertyDescriptor(\"shape-padding\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"shape-rendering\": createGenericPropertyDescriptor(\"shape-rendering\", {\"caseSensitive\":false}),\n  \"shapeRendering\": createGenericPropertyDescriptor(\"shape-rendering\", {\"caseSensitive\":false}),\n  \"shape-subtract\": createGenericPropertyDescriptor(\"shape-subtract\", {\"caseSensitive\":false}),\n  \"shapeSubtract\": createGenericPropertyDescriptor(\"shape-subtract\", {\"caseSensitive\":false}),\n  \"slider-orientation\": createGenericPropertyDescriptor(\"slider-orientation\", {\"caseSensitive\":false}),\n  \"sliderOrientation\": createGenericPropertyDescriptor(\"slider-orientation\", {\"caseSensitive\":false}),\n  \"spatial-navigation-action\": createGenericPropertyDescriptor(\"spatial-navigation-action\", {\"caseSensitive\":false}),\n  \"spatialNavigationAction\": createGenericPropertyDescriptor(\"spatial-navigation-action\", {\"caseSensitive\":false}),\n  \"spatial-navigation-contain\": createGenericPropertyDescriptor(\"spatial-navigation-contain\", {\"caseSensitive\":false}),\n  \"spatialNavigationContain\": createGenericPropertyDescriptor(\"spatial-navigation-contain\", {\"caseSensitive\":false}),\n  \"spatial-navigation-function\": createGenericPropertyDescriptor(\"spatial-navigation-function\", {\"caseSensitive\":false}),\n  \"spatialNavigationFunction\": createGenericPropertyDescriptor(\"spatial-navigation-function\", {\"caseSensitive\":false}),\n  \"speak\": createGenericPropertyDescriptor(\"speak\", {\"caseSensitive\":false}),\n  \"speak-as\": createGenericPropertyDescriptor(\"speak-as\", {\"caseSensitive\":false}),\n  \"speakAs\": createGenericPropertyDescriptor(\"speak-as\", {\"caseSensitive\":false}),\n  \"stop-color\": stopColor.descriptor,\n  \"stopColor\": stopColor.descriptor,\n  \"stop-opacity\": createGenericPropertyDescriptor(\"stop-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"stopOpacity\": createGenericPropertyDescriptor(\"stop-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"string-set\": createGenericPropertyDescriptor(\"string-set\", {\"caseSensitive\":true}),\n  \"stringSet\": createGenericPropertyDescriptor(\"string-set\", {\"caseSensitive\":true}),\n  \"stroke\": createGenericPropertyDescriptor(\"stroke\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"stroke-align\": createGenericPropertyDescriptor(\"stroke-align\", {\"caseSensitive\":false}),\n  \"strokeAlign\": createGenericPropertyDescriptor(\"stroke-align\", {\"caseSensitive\":false}),\n  \"stroke-alignment\": createGenericPropertyDescriptor(\"stroke-alignment\", {\"caseSensitive\":false}),\n  \"strokeAlignment\": createGenericPropertyDescriptor(\"stroke-alignment\", {\"caseSensitive\":false}),\n  \"stroke-break\": createGenericPropertyDescriptor(\"stroke-break\", {\"caseSensitive\":false}),\n  \"strokeBreak\": createGenericPropertyDescriptor(\"stroke-break\", {\"caseSensitive\":false}),\n  \"stroke-color\": createGenericPropertyDescriptor(\"stroke-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"strokeColor\": createGenericPropertyDescriptor(\"stroke-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"stroke-dash-corner\": createGenericPropertyDescriptor(\"stroke-dash-corner\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"strokeDashCorner\": createGenericPropertyDescriptor(\"stroke-dash-corner\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"stroke-dash-justify\": createGenericPropertyDescriptor(\"stroke-dash-justify\", {\"caseSensitive\":false}),\n  \"strokeDashJustify\": createGenericPropertyDescriptor(\"stroke-dash-justify\", {\"caseSensitive\":false}),\n  \"stroke-dashadjust\": createGenericPropertyDescriptor(\"stroke-dashadjust\", {\"caseSensitive\":false}),\n  \"strokeDashadjust\": createGenericPropertyDescriptor(\"stroke-dashadjust\", {\"caseSensitive\":false}),\n  \"stroke-dasharray\": createGenericPropertyDescriptor(\"stroke-dasharray\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"strokeDasharray\": createGenericPropertyDescriptor(\"stroke-dasharray\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"stroke-dashcorner\": createGenericPropertyDescriptor(\"stroke-dashcorner\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"strokeDashcorner\": createGenericPropertyDescriptor(\"stroke-dashcorner\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"stroke-dashoffset\": createGenericPropertyDescriptor(\"stroke-dashoffset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"strokeDashoffset\": createGenericPropertyDescriptor(\"stroke-dashoffset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"stroke-image\": createGenericPropertyDescriptor(\"stroke-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"strokeImage\": createGenericPropertyDescriptor(\"stroke-image\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}},\"functionTypes\":{\"image\":\"image\"}}),\n  \"stroke-linecap\": createGenericPropertyDescriptor(\"stroke-linecap\", {\"caseSensitive\":false}),\n  \"strokeLinecap\": createGenericPropertyDescriptor(\"stroke-linecap\", {\"caseSensitive\":false}),\n  \"stroke-linejoin\": createGenericPropertyDescriptor(\"stroke-linejoin\", {\"caseSensitive\":false}),\n  \"strokeLinejoin\": createGenericPropertyDescriptor(\"stroke-linejoin\", {\"caseSensitive\":false}),\n  \"stroke-miterlimit\": createGenericPropertyDescriptor(\"stroke-miterlimit\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"strokeMiterlimit\": createGenericPropertyDescriptor(\"stroke-miterlimit\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"stroke-opacity\": createGenericPropertyDescriptor(\"stroke-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"strokeOpacity\": createGenericPropertyDescriptor(\"stroke-opacity\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"stroke-origin\": createGenericPropertyDescriptor(\"stroke-origin\", {\"caseSensitive\":false}),\n  \"strokeOrigin\": createGenericPropertyDescriptor(\"stroke-origin\", {\"caseSensitive\":false}),\n  \"stroke-position\": createGenericPropertyDescriptor(\"stroke-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"strokePosition\": createGenericPropertyDescriptor(\"stroke-position\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"stroke-repeat\": createGenericPropertyDescriptor(\"stroke-repeat\", {\"caseSensitive\":false}),\n  \"strokeRepeat\": createGenericPropertyDescriptor(\"stroke-repeat\", {\"caseSensitive\":false}),\n  \"stroke-size\": createGenericPropertyDescriptor(\"stroke-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"strokeSize\": createGenericPropertyDescriptor(\"stroke-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"}}}),\n  \"stroke-width\": createGenericPropertyDescriptor(\"stroke-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"strokeWidth\": createGenericPropertyDescriptor(\"stroke-width\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"},\"number\":{\"type\":\"number\"}}}),\n  \"tab-size\": createGenericPropertyDescriptor(\"tab-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"tabSize\": createGenericPropertyDescriptor(\"tab-size\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"max\":null,\"min\":0,\"type\":\"length\"},\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"}}}),\n  \"table-layout\": createGenericPropertyDescriptor(\"table-layout\", {\"caseSensitive\":false}),\n  \"tableLayout\": createGenericPropertyDescriptor(\"table-layout\", {\"caseSensitive\":false}),\n  \"text-align\": createGenericPropertyDescriptor(\"text-align\", {\"caseSensitive\":true}),\n  \"textAlign\": createGenericPropertyDescriptor(\"text-align\", {\"caseSensitive\":true}),\n  \"text-align-all\": createGenericPropertyDescriptor(\"text-align-all\", {\"caseSensitive\":true}),\n  \"textAlignAll\": createGenericPropertyDescriptor(\"text-align-all\", {\"caseSensitive\":true}),\n  \"text-align-last\": createGenericPropertyDescriptor(\"text-align-last\", {\"caseSensitive\":false}),\n  \"textAlignLast\": createGenericPropertyDescriptor(\"text-align-last\", {\"caseSensitive\":false}),\n  \"text-anchor\": createGenericPropertyDescriptor(\"text-anchor\", {\"caseSensitive\":false}),\n  \"textAnchor\": createGenericPropertyDescriptor(\"text-anchor\", {\"caseSensitive\":false}),\n  \"text-autospace\": createGenericPropertyDescriptor(\"text-autospace\", {\"caseSensitive\":false}),\n  \"textAutospace\": createGenericPropertyDescriptor(\"text-autospace\", {\"caseSensitive\":false}),\n  \"text-box\": createGenericPropertyDescriptor(\"text-box\", {\"caseSensitive\":false}),\n  \"textBox\": createGenericPropertyDescriptor(\"text-box\", {\"caseSensitive\":false}),\n  \"text-box-edge\": createGenericPropertyDescriptor(\"text-box-edge\", {\"caseSensitive\":false}),\n  \"textBoxEdge\": createGenericPropertyDescriptor(\"text-box-edge\", {\"caseSensitive\":false}),\n  \"text-box-trim\": createGenericPropertyDescriptor(\"text-box-trim\", {\"caseSensitive\":false}),\n  \"textBoxTrim\": createGenericPropertyDescriptor(\"text-box-trim\", {\"caseSensitive\":false}),\n  \"text-combine-upright\": createGenericPropertyDescriptor(\"text-combine-upright\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":4,\"min\":2,\"type\":\"number\"}}}),\n  \"textCombineUpright\": createGenericPropertyDescriptor(\"text-combine-upright\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":4,\"min\":2,\"type\":\"number\"}}}),\n  \"text-decoration\": createGenericPropertyDescriptor(\"text-decoration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"textDecoration\": createGenericPropertyDescriptor(\"text-decoration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"text-decoration-color\": createGenericPropertyDescriptor(\"text-decoration-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"textDecorationColor\": createGenericPropertyDescriptor(\"text-decoration-color\", {\"caseSensitive\":false,\"functionTypes\":{\"color\":\"color\"}}),\n  \"text-decoration-inset\": createGenericPropertyDescriptor(\"text-decoration-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"textDecorationInset\": createGenericPropertyDescriptor(\"text-decoration-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"text-decoration-line\": createGenericPropertyDescriptor(\"text-decoration-line\", {\"caseSensitive\":false}),\n  \"textDecorationLine\": createGenericPropertyDescriptor(\"text-decoration-line\", {\"caseSensitive\":false}),\n  \"text-decoration-skip\": createGenericPropertyDescriptor(\"text-decoration-skip\", {\"caseSensitive\":false}),\n  \"textDecorationSkip\": createGenericPropertyDescriptor(\"text-decoration-skip\", {\"caseSensitive\":false}),\n  \"text-decoration-skip-box\": createGenericPropertyDescriptor(\"text-decoration-skip-box\", {\"caseSensitive\":false}),\n  \"textDecorationSkipBox\": createGenericPropertyDescriptor(\"text-decoration-skip-box\", {\"caseSensitive\":false}),\n  \"text-decoration-skip-ink\": createGenericPropertyDescriptor(\"text-decoration-skip-ink\", {\"caseSensitive\":false}),\n  \"textDecorationSkipInk\": createGenericPropertyDescriptor(\"text-decoration-skip-ink\", {\"caseSensitive\":false}),\n  \"text-decoration-skip-self\": createGenericPropertyDescriptor(\"text-decoration-skip-self\", {\"caseSensitive\":false}),\n  \"textDecorationSkipSelf\": createGenericPropertyDescriptor(\"text-decoration-skip-self\", {\"caseSensitive\":false}),\n  \"text-decoration-skip-spaces\": createGenericPropertyDescriptor(\"text-decoration-skip-spaces\", {\"caseSensitive\":false}),\n  \"textDecorationSkipSpaces\": createGenericPropertyDescriptor(\"text-decoration-skip-spaces\", {\"caseSensitive\":false}),\n  \"text-decoration-style\": createGenericPropertyDescriptor(\"text-decoration-style\", {\"caseSensitive\":false}),\n  \"textDecorationStyle\": createGenericPropertyDescriptor(\"text-decoration-style\", {\"caseSensitive\":false}),\n  \"text-decoration-thickness\": createGenericPropertyDescriptor(\"text-decoration-thickness\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"textDecorationThickness\": createGenericPropertyDescriptor(\"text-decoration-thickness\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"text-emphasis\": createGenericPropertyDescriptor(\"text-emphasis\", {\"caseSensitive\":true,\"functionTypes\":{\"color\":\"color\"}}),\n  \"textEmphasis\": createGenericPropertyDescriptor(\"text-emphasis\", {\"caseSensitive\":true,\"functionTypes\":{\"color\":\"color\"}}),\n  \"text-emphasis-color\": textEmphasisColor.descriptor,\n  \"textEmphasisColor\": textEmphasisColor.descriptor,\n  \"text-emphasis-position\": createGenericPropertyDescriptor(\"text-emphasis-position\", {\"caseSensitive\":false}),\n  \"textEmphasisPosition\": createGenericPropertyDescriptor(\"text-emphasis-position\", {\"caseSensitive\":false}),\n  \"text-emphasis-skip\": createGenericPropertyDescriptor(\"text-emphasis-skip\", {\"caseSensitive\":false}),\n  \"textEmphasisSkip\": createGenericPropertyDescriptor(\"text-emphasis-skip\", {\"caseSensitive\":false}),\n  \"text-emphasis-style\": createGenericPropertyDescriptor(\"text-emphasis-style\", {\"caseSensitive\":true}),\n  \"textEmphasisStyle\": createGenericPropertyDescriptor(\"text-emphasis-style\", {\"caseSensitive\":true}),\n  \"text-group-align\": createGenericPropertyDescriptor(\"text-group-align\", {\"caseSensitive\":false}),\n  \"textGroupAlign\": createGenericPropertyDescriptor(\"text-group-align\", {\"caseSensitive\":false}),\n  \"text-indent\": createGenericPropertyDescriptor(\"text-indent\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"textIndent\": createGenericPropertyDescriptor(\"text-indent\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"text-justify\": createGenericPropertyDescriptor(\"text-justify\", {\"caseSensitive\":false}),\n  \"textJustify\": createGenericPropertyDescriptor(\"text-justify\", {\"caseSensitive\":false}),\n  \"text-orientation\": createGenericPropertyDescriptor(\"text-orientation\", {\"caseSensitive\":false}),\n  \"textOrientation\": createGenericPropertyDescriptor(\"text-orientation\", {\"caseSensitive\":false}),\n  \"text-overflow\": createGenericPropertyDescriptor(\"text-overflow\", {\"caseSensitive\":true}),\n  \"textOverflow\": createGenericPropertyDescriptor(\"text-overflow\", {\"caseSensitive\":true}),\n  \"text-rendering\": createGenericPropertyDescriptor(\"text-rendering\", {\"caseSensitive\":false}),\n  \"textRendering\": createGenericPropertyDescriptor(\"text-rendering\", {\"caseSensitive\":false}),\n  \"text-shadow\": createGenericPropertyDescriptor(\"text-shadow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"textShadow\": createGenericPropertyDescriptor(\"text-shadow\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}},\"functionTypes\":{\"color\":\"color\"}}),\n  \"text-size-adjust\": createGenericPropertyDescriptor(\"text-size-adjust\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"textSizeAdjust\": createGenericPropertyDescriptor(\"text-size-adjust\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"text-spacing\": createGenericPropertyDescriptor(\"text-spacing\", {\"caseSensitive\":false}),\n  \"textSpacing\": createGenericPropertyDescriptor(\"text-spacing\", {\"caseSensitive\":false}),\n  \"text-spacing-trim\": createGenericPropertyDescriptor(\"text-spacing-trim\", {\"caseSensitive\":false}),\n  \"textSpacingTrim\": createGenericPropertyDescriptor(\"text-spacing-trim\", {\"caseSensitive\":false}),\n  \"text-transform\": createGenericPropertyDescriptor(\"text-transform\", {\"caseSensitive\":false}),\n  \"textTransform\": createGenericPropertyDescriptor(\"text-transform\", {\"caseSensitive\":false}),\n  \"text-underline-offset\": createGenericPropertyDescriptor(\"text-underline-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"textUnderlineOffset\": createGenericPropertyDescriptor(\"text-underline-offset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"text-underline-position\": createGenericPropertyDescriptor(\"text-underline-position\", {\"caseSensitive\":false}),\n  \"textUnderlinePosition\": createGenericPropertyDescriptor(\"text-underline-position\", {\"caseSensitive\":false}),\n  \"text-wrap\": createGenericPropertyDescriptor(\"text-wrap\", {\"caseSensitive\":false}),\n  \"textWrap\": createGenericPropertyDescriptor(\"text-wrap\", {\"caseSensitive\":false}),\n  \"text-wrap-mode\": createGenericPropertyDescriptor(\"text-wrap-mode\", {\"caseSensitive\":false}),\n  \"textWrapMode\": createGenericPropertyDescriptor(\"text-wrap-mode\", {\"caseSensitive\":false}),\n  \"text-wrap-style\": createGenericPropertyDescriptor(\"text-wrap-style\", {\"caseSensitive\":false}),\n  \"textWrapStyle\": createGenericPropertyDescriptor(\"text-wrap-style\", {\"caseSensitive\":false}),\n  \"timeline-scope\": createGenericPropertyDescriptor(\"timeline-scope\", {\"caseSensitive\":true}),\n  \"timelineScope\": createGenericPropertyDescriptor(\"timeline-scope\", {\"caseSensitive\":true}),\n  \"timeline-trigger\": createGenericPropertyDescriptor(\"timeline-trigger\", {\"caseSensitive\":true,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timelineTrigger\": createGenericPropertyDescriptor(\"timeline-trigger\", {\"caseSensitive\":true,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timeline-trigger-exit-range\": createGenericPropertyDescriptor(\"timeline-trigger-exit-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timelineTriggerExitRange\": createGenericPropertyDescriptor(\"timeline-trigger-exit-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timeline-trigger-exit-range-end\": createGenericPropertyDescriptor(\"timeline-trigger-exit-range-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timelineTriggerExitRangeEnd\": createGenericPropertyDescriptor(\"timeline-trigger-exit-range-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timeline-trigger-exit-range-start\": createGenericPropertyDescriptor(\"timeline-trigger-exit-range-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timelineTriggerExitRangeStart\": createGenericPropertyDescriptor(\"timeline-trigger-exit-range-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timeline-trigger-name\": createGenericPropertyDescriptor(\"timeline-trigger-name\", {\"caseSensitive\":true}),\n  \"timelineTriggerName\": createGenericPropertyDescriptor(\"timeline-trigger-name\", {\"caseSensitive\":true}),\n  \"timeline-trigger-range\": createGenericPropertyDescriptor(\"timeline-trigger-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timelineTriggerRange\": createGenericPropertyDescriptor(\"timeline-trigger-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timeline-trigger-range-end\": createGenericPropertyDescriptor(\"timeline-trigger-range-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timelineTriggerRangeEnd\": createGenericPropertyDescriptor(\"timeline-trigger-range-end\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timeline-trigger-range-start\": createGenericPropertyDescriptor(\"timeline-trigger-range-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timelineTriggerRangeStart\": createGenericPropertyDescriptor(\"timeline-trigger-range-start\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"timeline-trigger-source\": createGenericPropertyDescriptor(\"timeline-trigger-source\", {\"caseSensitive\":true}),\n  \"timelineTriggerSource\": createGenericPropertyDescriptor(\"timeline-trigger-source\", {\"caseSensitive\":true}),\n  \"top\": top.descriptor,\n  \"touch-action\": createGenericPropertyDescriptor(\"touch-action\", {\"caseSensitive\":false}),\n  \"touchAction\": createGenericPropertyDescriptor(\"touch-action\", {\"caseSensitive\":false}),\n  \"transform\": createGenericPropertyDescriptor(\"transform\", {\"caseSensitive\":false}),\n  \"transform-box\": createGenericPropertyDescriptor(\"transform-box\", {\"caseSensitive\":false}),\n  \"transformBox\": createGenericPropertyDescriptor(\"transform-box\", {\"caseSensitive\":false}),\n  \"transform-origin\": createGenericPropertyDescriptor(\"transform-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"transformOrigin\": createGenericPropertyDescriptor(\"transform-origin\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"transform-style\": createGenericPropertyDescriptor(\"transform-style\", {\"caseSensitive\":false}),\n  \"transformStyle\": createGenericPropertyDescriptor(\"transform-style\", {\"caseSensitive\":false}),\n  \"transition\": createGenericPropertyDescriptor(\"transition\", {\"caseSensitive\":true,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"transition-behavior\": createGenericPropertyDescriptor(\"transition-behavior\", {\"caseSensitive\":false}),\n  \"transitionBehavior\": createGenericPropertyDescriptor(\"transition-behavior\", {\"caseSensitive\":false}),\n  \"transition-delay\": createGenericPropertyDescriptor(\"transition-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"transitionDelay\": createGenericPropertyDescriptor(\"transition-delay\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"type\":\"dimension\"}}}),\n  \"transition-duration\": createGenericPropertyDescriptor(\"transition-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"transitionDuration\": createGenericPropertyDescriptor(\"transition-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"transition-property\": createGenericPropertyDescriptor(\"transition-property\", {\"caseSensitive\":true}),\n  \"transitionProperty\": createGenericPropertyDescriptor(\"transition-property\", {\"caseSensitive\":true}),\n  \"transition-timing-function\": createGenericPropertyDescriptor(\"transition-timing-function\", {\"caseSensitive\":false}),\n  \"transitionTimingFunction\": createGenericPropertyDescriptor(\"transition-timing-function\", {\"caseSensitive\":false}),\n  \"translate\": createGenericPropertyDescriptor(\"translate\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"trigger-scope\": createGenericPropertyDescriptor(\"trigger-scope\", {\"caseSensitive\":true}),\n  \"triggerScope\": createGenericPropertyDescriptor(\"trigger-scope\", {\"caseSensitive\":true}),\n  \"unicode-bidi\": createGenericPropertyDescriptor(\"unicode-bidi\", {\"caseSensitive\":false}),\n  \"unicodeBidi\": createGenericPropertyDescriptor(\"unicode-bidi\", {\"caseSensitive\":false}),\n  \"user-select\": createGenericPropertyDescriptor(\"user-select\", {\"caseSensitive\":false}),\n  \"userSelect\": createGenericPropertyDescriptor(\"user-select\", {\"caseSensitive\":false}),\n  \"vector-effect\": createGenericPropertyDescriptor(\"vector-effect\", {\"caseSensitive\":false}),\n  \"vectorEffect\": createGenericPropertyDescriptor(\"vector-effect\", {\"caseSensitive\":false}),\n  \"vertical-align\": createGenericPropertyDescriptor(\"vertical-align\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"verticalAlign\": createGenericPropertyDescriptor(\"vertical-align\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"view-timeline\": createGenericPropertyDescriptor(\"view-timeline\", {\"caseSensitive\":true,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"viewTimeline\": createGenericPropertyDescriptor(\"view-timeline\", {\"caseSensitive\":true,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"view-timeline-axis\": createGenericPropertyDescriptor(\"view-timeline-axis\", {\"caseSensitive\":false}),\n  \"viewTimelineAxis\": createGenericPropertyDescriptor(\"view-timeline-axis\", {\"caseSensitive\":false}),\n  \"view-timeline-inset\": createGenericPropertyDescriptor(\"view-timeline-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"viewTimelineInset\": createGenericPropertyDescriptor(\"view-timeline-inset\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"view-timeline-name\": createGenericPropertyDescriptor(\"view-timeline-name\", {\"caseSensitive\":true}),\n  \"viewTimelineName\": createGenericPropertyDescriptor(\"view-timeline-name\", {\"caseSensitive\":true}),\n  \"view-transition-class\": createGenericPropertyDescriptor(\"view-transition-class\", {\"caseSensitive\":true}),\n  \"viewTransitionClass\": createGenericPropertyDescriptor(\"view-transition-class\", {\"caseSensitive\":true}),\n  \"view-transition-group\": createGenericPropertyDescriptor(\"view-transition-group\", {\"caseSensitive\":true}),\n  \"viewTransitionGroup\": createGenericPropertyDescriptor(\"view-transition-group\", {\"caseSensitive\":true}),\n  \"view-transition-name\": createGenericPropertyDescriptor(\"view-transition-name\", {\"caseSensitive\":true}),\n  \"viewTransitionName\": createGenericPropertyDescriptor(\"view-transition-name\", {\"caseSensitive\":true}),\n  \"view-transition-scope\": createGenericPropertyDescriptor(\"view-transition-scope\", {\"caseSensitive\":false}),\n  \"viewTransitionScope\": createGenericPropertyDescriptor(\"view-transition-scope\", {\"caseSensitive\":false}),\n  \"visibility\": createGenericPropertyDescriptor(\"visibility\", {\"caseSensitive\":false}),\n  \"voice-balance\": createGenericPropertyDescriptor(\"voice-balance\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"voiceBalance\": createGenericPropertyDescriptor(\"voice-balance\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"voice-duration\": createGenericPropertyDescriptor(\"voice-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"voiceDuration\": createGenericPropertyDescriptor(\"voice-duration\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0s\",\"type\":\"dimension\"}}}),\n  \"voice-family\": createGenericPropertyDescriptor(\"voice-family\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"voiceFamily\": createGenericPropertyDescriptor(\"voice-family\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"voice-pitch\": createGenericPropertyDescriptor(\"voice-pitch\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0Hz\",\"type\":\"dimension\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"voicePitch\": createGenericPropertyDescriptor(\"voice-pitch\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0Hz\",\"type\":\"dimension\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"voice-range\": createGenericPropertyDescriptor(\"voice-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0Hz\",\"type\":\"dimension\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"voiceRange\": createGenericPropertyDescriptor(\"voice-range\", {\"caseSensitive\":false,\"dimensionTypes\":{\"dimension\":{\"max\":null,\"min\":\"0Hz\",\"type\":\"dimension\"},\"percentage\":{\"type\":\"percentage\"}}}),\n  \"voice-rate\": createGenericPropertyDescriptor(\"voice-rate\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"voiceRate\": createGenericPropertyDescriptor(\"voice-rate\", {\"caseSensitive\":false,\"dimensionTypes\":{\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}}),\n  \"voice-stress\": createGenericPropertyDescriptor(\"voice-stress\", {\"caseSensitive\":false}),\n  \"voiceStress\": createGenericPropertyDescriptor(\"voice-stress\", {\"caseSensitive\":false}),\n  \"voice-volume\": createGenericPropertyDescriptor(\"voice-volume\", {\"caseSensitive\":false}),\n  \"voiceVolume\": createGenericPropertyDescriptor(\"voice-volume\", {\"caseSensitive\":false}),\n  \"white-space\": createGenericPropertyDescriptor(\"white-space\", {\"caseSensitive\":false}),\n  \"whiteSpace\": createGenericPropertyDescriptor(\"white-space\", {\"caseSensitive\":false}),\n  \"white-space-collapse\": createGenericPropertyDescriptor(\"white-space-collapse\", {\"caseSensitive\":false}),\n  \"whiteSpaceCollapse\": createGenericPropertyDescriptor(\"white-space-collapse\", {\"caseSensitive\":false}),\n  \"white-space-trim\": createGenericPropertyDescriptor(\"white-space-trim\", {\"caseSensitive\":false}),\n  \"whiteSpaceTrim\": createGenericPropertyDescriptor(\"white-space-trim\", {\"caseSensitive\":false}),\n  \"widows\": createGenericPropertyDescriptor(\"widows\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":1,\"type\":\"number\"}}}),\n  \"width\": width.descriptor,\n  \"will-change\": createGenericPropertyDescriptor(\"will-change\", {\"caseSensitive\":true}),\n  \"willChange\": createGenericPropertyDescriptor(\"will-change\", {\"caseSensitive\":true}),\n  \"word-break\": createGenericPropertyDescriptor(\"word-break\", {\"caseSensitive\":false}),\n  \"wordBreak\": createGenericPropertyDescriptor(\"word-break\", {\"caseSensitive\":false}),\n  \"word-space-transform\": createGenericPropertyDescriptor(\"word-space-transform\", {\"caseSensitive\":false}),\n  \"wordSpaceTransform\": createGenericPropertyDescriptor(\"word-space-transform\", {\"caseSensitive\":false}),\n  \"word-spacing\": createGenericPropertyDescriptor(\"word-spacing\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"wordSpacing\": createGenericPropertyDescriptor(\"word-spacing\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"word-wrap\": createGenericPropertyDescriptor(\"word-wrap\", {\"caseSensitive\":false}),\n  \"wordWrap\": createGenericPropertyDescriptor(\"word-wrap\", {\"caseSensitive\":false}),\n  \"wrap-after\": createGenericPropertyDescriptor(\"wrap-after\", {\"caseSensitive\":false}),\n  \"wrapAfter\": createGenericPropertyDescriptor(\"wrap-after\", {\"caseSensitive\":false}),\n  \"wrap-before\": createGenericPropertyDescriptor(\"wrap-before\", {\"caseSensitive\":false}),\n  \"wrapBefore\": createGenericPropertyDescriptor(\"wrap-before\", {\"caseSensitive\":false}),\n  \"wrap-flow\": createGenericPropertyDescriptor(\"wrap-flow\", {\"caseSensitive\":false}),\n  \"wrapFlow\": createGenericPropertyDescriptor(\"wrap-flow\", {\"caseSensitive\":false}),\n  \"wrap-inside\": createGenericPropertyDescriptor(\"wrap-inside\", {\"caseSensitive\":false}),\n  \"wrapInside\": createGenericPropertyDescriptor(\"wrap-inside\", {\"caseSensitive\":false}),\n  \"wrap-through\": createGenericPropertyDescriptor(\"wrap-through\", {\"caseSensitive\":false}),\n  \"wrapThrough\": createGenericPropertyDescriptor(\"wrap-through\", {\"caseSensitive\":false}),\n  \"writing-mode\": createGenericPropertyDescriptor(\"writing-mode\", {\"caseSensitive\":false}),\n  \"writingMode\": createGenericPropertyDescriptor(\"writing-mode\", {\"caseSensitive\":false}),\n  \"x\": createGenericPropertyDescriptor(\"x\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"y\": createGenericPropertyDescriptor(\"y\", {\"caseSensitive\":false,\"dimensionTypes\":{\"length\":{\"type\":\"length\"}}}),\n  \"z-index\": createGenericPropertyDescriptor(\"z-index\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"zIndex\": createGenericPropertyDescriptor(\"z-index\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"type\":\"number\"}}}),\n  \"zoom\": createGenericPropertyDescriptor(\"zoom\", {\"caseSensitive\":false,\"dimensionTypes\":{\"number\":{\"max\":null,\"min\":0,\"type\":\"number\"},\"percentage\":{\"max\":null,\"min\":0,\"type\":\"percentage\"}}})\n};\n","\"use strict\";\n\nconst propertyDefinitions = require(\"./generated/propertyDefinitions\");\nconst { hasVarFunc, isGlobalKeyword, isValidPropertyValue, splitValue } = require(\"./parsers\");\nconst background = require(\"./properties/background\");\nconst backgroundColor = require(\"./properties/backgroundColor\");\nconst backgroundSize = require(\"./properties/backgroundSize\");\nconst border = require(\"./properties/border\");\nconst borderWidth = require(\"./properties/borderWidth\");\nconst borderStyle = require(\"./properties/borderStyle\");\nconst borderColor = require(\"./properties/borderColor\");\nconst borderTop = require(\"./properties/borderTop\");\nconst borderRight = require(\"./properties/borderRight\");\nconst borderBottom = require(\"./properties/borderBottom\");\nconst borderLeft = require(\"./properties/borderLeft\");\nconst flex = require(\"./properties/flex\");\nconst font = require(\"./properties/font\");\nconst margin = require(\"./properties/margin\");\nconst padding = require(\"./properties/padding\");\n\n// Constants\nconst BORDER_IMAGE = \"border-image\";\nconst TOP = \"top\";\nconst RIGHT = \"right\";\nconst BOTTOM = \"bottom\";\nconst LEFT = \"left\";\nconst WIDTH = \"width\";\nconst STYLE = \"style\";\nconst COLOR = \"color\";\nconst NONE = \"none\";\nconst TRBL_INDICES = {\n  [TOP]: 0,\n  [RIGHT]: 1,\n  [BOTTOM]: 2,\n  [LEFT]: 3\n};\n\nconst shorthandProperties = new Map([\n  [background.property, background],\n  [\n    border.property,\n    {\n      descriptor: border.descriptor,\n      parse: border.parse,\n      shorthandFor: new Map([...border.shorthandFor, ...border.positionShorthandFor, [BORDER_IMAGE, null]])\n    }\n  ],\n  [borderWidth.property, borderWidth],\n  [borderStyle.property, borderStyle],\n  [borderColor.property, borderColor],\n  [borderTop.property, borderTop],\n  [borderRight.property, borderRight],\n  [borderBottom.property, borderBottom],\n  [borderLeft.property, borderLeft],\n  [\"flex\", flex],\n  [\"font\", font],\n  [\"margin\", margin],\n  [\"padding\", padding]\n]);\n\nconst borderProperties = new Set([\n  border.property,\n  BORDER_IMAGE,\n  ...border.shorthandFor.keys(),\n  ...border.positionShorthandFor.keys(),\n  ...borderTop.shorthandFor.keys(),\n  ...borderRight.shorthandFor.keys(),\n  ...borderBottom.shorthandFor.keys(),\n  ...borderLeft.shorthandFor.keys()\n]);\n\nconst borderLines = new Set([WIDTH, STYLE, COLOR]);\n\nconst borderPositions = new Set([TOP, RIGHT, BOTTOM, LEFT]);\n\nconst borderCollectionConfig = {\n  [WIDTH]: {\n    shorthand: borderWidth.property,\n    generator: generateBorderLineShorthand\n  },\n  [STYLE]: {\n    shorthand: borderStyle.property,\n    generator: generateBorderLineShorthand\n  },\n  [COLOR]: {\n    shorthand: borderColor.property,\n    generator: generateBorderLineShorthand\n  },\n  [TOP]: {\n    shorthand: borderTop.property,\n    generator: generateBorderPositionShorthand\n  },\n  [RIGHT]: {\n    shorthand: borderRight.property,\n    generator: generateBorderPositionShorthand\n  },\n  [BOTTOM]: {\n    shorthand: borderBottom.property,\n    generator: generateBorderPositionShorthand\n  },\n  [LEFT]: {\n    shorthand: borderLeft.property,\n    generator: generateBorderPositionShorthand\n  }\n};\n\n/**\n * Ensures consistent object shape.\n *\n * @param {string} property - The property name.\n * @param {string} [value=\"\"] - The property value.\n * @param {string} [priority=\"\"] - The priority.\n * @returns {object} The property item object.\n */\nfunction createPropertyItem(property, value = \"\", priority = \"\") {\n  return {\n    property,\n    value,\n    priority\n  };\n}\n\n/**\n * Retrieves a property item from the map or creates a default one if it doesn't exist.\n *\n * @param {string} property - The name of the property.\n * @param {Map} properties - The map containing all properties.\n * @returns {object} The property item containing name, value, and priority.\n */\nfunction getPropertyItem(property, properties) {\n  const propertyItem = properties.get(property) ?? createPropertyItem(property);\n  return propertyItem;\n}\n\n/**\n * Calculates the value for a specific position from shorthand values.\n *\n * @param {string[]} positionValues - The values extracted from the shorthand property.\n * @param {string} position - The specific position (top, right, bottom, left) to retrieve.\n * @returns {string} The calculated value for the position.\n */\nfunction getPositionValue(positionValues, position) {\n  const [val1, val2, val3, val4] = positionValues;\n  const index = TRBL_INDICES[position] ?? -1;\n  // If a specific position (top, right, bottom, left) is requested.\n  if (index !== -1) {\n    switch (positionValues.length) {\n      case 2: {\n        // Index 0 (Top) & 2 (Bottom) -> val1\n        // Index 1 (Right) & 3 (Left) -> val2\n        return index % 2 === 0 ? val1 : val2;\n      }\n      case 3: {\n        // Index 0 (Top) -> val1\n        // Index 1 (Right) & 3 (Left) -> val2\n        // Index 2 (Bottom) -> val3\n        if (index === 2) {\n          return val3;\n        }\n        return index % 2 === 0 ? val1 : val2;\n      }\n      case 4: {\n        return positionValues[index];\n      }\n      case 1:\n      default: {\n        return val1;\n      }\n    }\n  }\n  // Fallback logic for when no specific position is requested.\n  switch (positionValues.length) {\n    case 2: {\n      if (val1 === val2) {\n        return val1;\n      }\n      return `${val1} ${val2}`;\n    }\n    case 3: {\n      if (val1 === val3) {\n        if (val1 === val2) {\n          return val1;\n        }\n        return `${val1} ${val2}`;\n      }\n      return `${val1} ${val2} ${val3}`;\n    }\n    case 4: {\n      if (val2 === val4) {\n        if (val1 === val3) {\n          if (val1 === val2) {\n            return val1;\n          }\n          return `${val1} ${val2}`;\n        }\n        return `${val1} ${val2} ${val3}`;\n      }\n      return `${val1} ${val2} ${val3} ${val4}`;\n    }\n    case 1:\n    default: {\n      return val1;\n    }\n  }\n}\n\n/**\n * Replaces the background shorthand property based on individual longhand values.\n *\n * @param {string} property - The specific background longhand property being updated.\n * @param {Map} properties - The map of all properties.\n * @returns {string} The constructed background shorthand string.\n */\nfunction replaceBackgroundShorthand(property, properties) {\n  const { value: propertyValue } = properties.get(property);\n  const parsedValue = background.shorthandFor.get(property).parse(propertyValue);\n  const values = splitValue(parsedValue, {\n    delimiter: \",\"\n  });\n  const { value: shorthandValue } = properties.get(background.property);\n  const bgValues = background.parse(shorthandValue);\n  const bgLength = bgValues.length;\n  if (property === backgroundColor.property) {\n    bgValues[bgLength - 1][property] = parsedValue[0];\n  } else {\n    for (let i = 0; i < bgLength; i++) {\n      bgValues[i][property] = values[i];\n    }\n  }\n  const backgrounds = [];\n  for (const bgValue of bgValues) {\n    const bg = [];\n    for (const [longhand, value] of Object.entries(bgValue)) {\n      if (!value || value === background.initialValues.get(longhand)) {\n        continue;\n      }\n      if (longhand === backgroundSize.property) {\n        bg.push(`/ ${value}`);\n      } else {\n        bg.push(value);\n      }\n    }\n    backgrounds.push(bg.join(\" \"));\n  }\n  return backgrounds.join(\", \");\n}\n\n/**\n * Checks if a property value matches the value within a border shorthand.\n *\n * @param {string} property - The property to check.\n * @param {string} value - The value to compare.\n * @param {string} shorthandValue - The shorthand string to parse and compare against.\n * @returns {boolean} True if the value matches the shorthand's value.\n */\nfunction matchesBorderShorthandValue(property, value, shorthandValue) {\n  const obj = border.parse(shorthandValue);\n  if (Object.hasOwn(obj, property)) {\n    return value === obj[property];\n  }\n  return value === border.initialValues.get(property);\n}\n\n/**\n * Replaces or updates a value within a border shorthand string.\n *\n * @param {string} value - The new value to insert.\n * @param {string} shorthandValue - The existing shorthand string.\n * @returns {string} The updated border shorthand string.\n */\nfunction replaceBorderShorthandValue(value, shorthandValue) {\n  const borderFirstInitialKey = border.initialValues.keys().next().value;\n  const borderFirstInitialValue = border.initialValues.get(borderFirstInitialKey);\n  const valueObj = border.parse(value);\n  const shorthandObj = shorthandValue\n    ? border.parse(shorthandValue)\n    : {\n        [borderFirstInitialKey]: borderFirstInitialValue\n      };\n  const keys = border.shorthandFor.keys();\n  for (const key of keys) {\n    const initialValue = border.initialValues.get(key);\n    let parsedValue = initialValue;\n    if (Object.hasOwn(valueObj, key)) {\n      parsedValue = valueObj[key];\n    }\n    if (parsedValue === initialValue) {\n      if (key === borderFirstInitialKey) {\n        if (!Object.hasOwn(shorthandObj, key)) {\n          shorthandObj[key] = parsedValue;\n        }\n      } else {\n        delete shorthandObj[key];\n      }\n    } else {\n      shorthandObj[key] = parsedValue;\n      if (shorthandObj[borderFirstInitialKey] && shorthandObj[borderFirstInitialKey] === borderFirstInitialValue) {\n        delete shorthandObj[borderFirstInitialKey];\n      }\n    }\n  }\n  return Object.values(shorthandObj).join(\" \");\n}\n\n/**\n * Replaces a value at a specific position (top, right, bottom, left) within a position shorthand.\n *\n * @param {string} value - The new value to set.\n * @param {string[]} positionValues - The array of existing position values.\n * @param {string} position - The position to update.\n * @returns {string} The updated shorthand string.\n */\nfunction replacePositionValue(value, positionValues, position) {\n  const index = TRBL_INDICES[position] ?? -1;\n  let currentValues = positionValues;\n  if (index !== -1) {\n    // Loop for reducing array length (instead of recursion)\n    while (true) {\n      const [val1, val2, val3, val4] = currentValues;\n      switch (currentValues.length) {\n        case 2: {\n          if (val1 === val2) {\n            currentValues = [val1];\n            continue;\n          }\n          switch (index) {\n            // Top\n            case 0: {\n              if (val1 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${value} ${val2} ${val1}`;\n            }\n            // Right\n            case 1: {\n              if (val2 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${val1} ${value} ${val1} ${val2}`;\n            }\n            // Bottom\n            case 2: {\n              if (val1 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${val1} ${val2} ${value}`;\n            }\n            // Left\n            case 3:\n            default: {\n              if (val2 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${val1} ${val2} ${val1} ${value}`;\n            }\n          }\n        }\n        case 3: {\n          if (val1 === val3) {\n            currentValues = [val1, val2];\n            continue;\n          }\n          switch (index) {\n            // Top\n            case 0: {\n              if (val1 === value) {\n                return currentValues.join(\" \");\n              } else if (val3 === value) {\n                return `${value} ${val2}`;\n              }\n              return `${value} ${val2} ${val3}`;\n            }\n            // Right\n            case 1: {\n              if (val2 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${val1} ${value} ${val3} ${val2}`;\n            }\n            // Bottom\n            case 2: {\n              if (val3 === value) {\n                return currentValues.join(\" \");\n              } else if (val1 === value) {\n                return `${val1} ${val2}`;\n              }\n              return `${val1} ${val2} ${value}`;\n            }\n            // Left\n            case 3:\n            default: {\n              if (val2 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${val1} ${val2} ${val3} ${value}`;\n            }\n          }\n        }\n        case 4: {\n          if (val2 === val4) {\n            currentValues = [val1, val2, val3];\n            continue;\n          }\n          switch (index) {\n            // Top\n            case 0: {\n              if (val1 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${value} ${val2} ${val3} ${val4}`;\n            }\n            // Right\n            case 1: {\n              if (val2 === value) {\n                return currentValues.join(\" \");\n              } else if (val4 === value) {\n                return `${val1} ${value} ${val3}`;\n              }\n              return `${val1} ${value} ${val3} ${val4}`;\n            }\n            // Bottom\n            case 2: {\n              if (val3 === value) {\n                return currentValues.join(\" \");\n              }\n              return `${val1} ${val2} ${value} ${val4}`;\n            }\n            // Left\n            case 3:\n            default: {\n              if (val4 === value) {\n                return currentValues.join(\" \");\n              } else if (val2 === value) {\n                return `${val1} ${val2} ${val3}`;\n              }\n              return `${val1} ${val2} ${val3} ${value}`;\n            }\n          }\n        }\n        case 1:\n        default: {\n          const [val] = currentValues;\n          if (val === value) {\n            return currentValues.join(\" \");\n          }\n          switch (index) {\n            // Top\n            case 0: {\n              return `${value} ${val} ${val}`;\n            }\n            // Right\n            case 1: {\n              return `${val} ${value} ${val} ${val}`;\n            }\n            // Bottom\n            case 2: {\n              return `${val} ${val} ${value}`;\n            }\n            // Left\n            case 3:\n            default: {\n              return `${val} ${val} ${val} ${value}`;\n            }\n          }\n        }\n      }\n    }\n  }\n  // Fallback logic for when no specific position is requested.\n  const [val1, val2, val3, val4] = currentValues;\n  switch (currentValues.length) {\n    case 2: {\n      if (val1 === val2) {\n        return val1;\n      }\n      return `${val1} ${val2}`;\n    }\n    case 3: {\n      if (val1 === val3) {\n        if (val1 === val2) {\n          return val1;\n        }\n        return `${val1} ${val2}`;\n      }\n      return `${val1} ${val2} ${val3}`;\n    }\n    case 4: {\n      if (val2 === val4) {\n        if (val1 === val3) {\n          if (val1 === val2) {\n            return val1;\n          }\n          return `${val1} ${val2}`;\n        }\n        return `${val1} ${val2} ${val3}`;\n      }\n      return `${val1} ${val2} ${val3} ${val4}`;\n    }\n    case 1:\n    default: {\n      return val1;\n    }\n  }\n}\n\n/**\n * Handles border property preparation when the value is a string.\n *\n * @param {object} params - The parameters object.\n * @param {string} params.property - The property name.\n * @param {string} params.value - The property value.\n * @param {string} params.priority - The property priority.\n * @param {Map} params.properties - The map of properties.\n * @param {object} params.parts - The split property name parts.\n * @param {Map} params.borderItems - The map to store processed border items.\n */\nfunction prepareBorderStringValue({ property, value, priority, properties, parts, borderItems }) {\n  const { prop1, prop2, prop3 } = parts;\n  const shorthandItem = getPropertyItem(border.property, properties);\n  const imageItem = getPropertyItem(BORDER_IMAGE, properties);\n  // Handle longhand properties.\n  if (prop3) {\n    const lineProperty = `${prop1}-${prop3}`;\n    const lineItem = getPropertyItem(lineProperty, properties);\n    const positionProperty = `${prop1}-${prop2}`;\n    const positionItem = getPropertyItem(positionProperty, properties);\n    const longhandProperty = `${prop1}-${prop2}-${prop3}`;\n    const longhandItem = getPropertyItem(longhandProperty, properties);\n    longhandItem.value = value;\n    longhandItem.priority = priority;\n    const propertyValue = hasVarFunc(value) ? \"\" : value;\n    if (propertyValue === \"\") {\n      shorthandItem.value = \"\";\n      lineItem.value = \"\";\n      positionItem.value = \"\";\n    } else if (isGlobalKeyword(propertyValue)) {\n      if (shorthandItem.value !== propertyValue) {\n        shorthandItem.value = \"\";\n      }\n      if (lineItem.value !== propertyValue) {\n        lineItem.value = \"\";\n      }\n      if (positionItem.value !== propertyValue) {\n        positionItem.value = \"\";\n      }\n    } else {\n      if (shorthandItem.value && !matchesBorderShorthandValue(lineProperty, propertyValue, shorthandItem.value)) {\n        shorthandItem.value = \"\";\n      }\n      if (lineItem.value) {\n        lineItem.value = replacePositionValue(propertyValue, splitValue(lineItem.value), prop2);\n      }\n      if (positionItem.value && !matchesBorderShorthandValue(lineProperty, propertyValue, positionItem.value)) {\n        positionItem.value = \"\";\n      }\n    }\n    borderItems.set(border.property, shorthandItem);\n    borderItems.set(BORDER_IMAGE, imageItem);\n    borderItems.set(lineProperty, lineItem);\n    borderItems.set(positionProperty, positionItem);\n    borderItems.set(longhandProperty, longhandItem);\n    // Handle side-specific border shorthands (border-top, border-right, border-bottom, border-left).\n  } else if (prop2 && borderPositions.has(prop2)) {\n    const lineWidthProperty = `${prop1}-width`;\n    const lineWidthItem = getPropertyItem(lineWidthProperty, properties);\n    const lineStyleProperty = `${prop1}-style`;\n    const lineStyleItem = getPropertyItem(lineStyleProperty, properties);\n    const lineColorProperty = `${prop1}-color`;\n    const lineColorItem = getPropertyItem(lineColorProperty, properties);\n    const positionProperty = `${prop1}-${prop2}`;\n    const positionItem = getPropertyItem(positionProperty, properties);\n    positionItem.value = value;\n    positionItem.priority = priority;\n    const propertyValue = hasVarFunc(value) ? \"\" : value;\n    if (propertyValue === \"\") {\n      shorthandItem.value = \"\";\n      lineWidthItem.value = \"\";\n      lineStyleItem.value = \"\";\n      lineColorItem.value = \"\";\n    } else if (isGlobalKeyword(propertyValue)) {\n      if (shorthandItem.value !== propertyValue) {\n        shorthandItem.value = \"\";\n      }\n      if (lineWidthItem.value !== propertyValue) {\n        lineWidthItem.value = \"\";\n      }\n      if (lineStyleItem.value !== propertyValue) {\n        lineStyleItem.value = \"\";\n      }\n      if (lineColorItem.value !== propertyValue) {\n        lineColorItem.value = \"\";\n      }\n    } else {\n      if (shorthandItem.value && !matchesBorderShorthandValue(property, propertyValue, shorthandItem.value)) {\n        shorthandItem.value = \"\";\n      }\n      if (lineWidthItem.value && isValidPropertyValue(lineWidthProperty, propertyValue)) {\n        lineWidthItem.value = propertyValue;\n      }\n      if (lineStyleItem.value && isValidPropertyValue(lineStyleProperty, propertyValue)) {\n        lineStyleItem.value = propertyValue;\n      }\n      if (lineColorItem.value && isValidPropertyValue(lineColorProperty, propertyValue)) {\n        lineColorItem.value = propertyValue;\n      }\n    }\n    for (const line of borderLines) {\n      const longhandProperty = `${prop1}-${prop2}-${line}`;\n      const longhandItem = getPropertyItem(longhandProperty, properties);\n      longhandItem.value = propertyValue;\n      longhandItem.priority = priority;\n      borderItems.set(longhandProperty, longhandItem);\n    }\n    borderItems.set(border.property, shorthandItem);\n    borderItems.set(BORDER_IMAGE, imageItem);\n    borderItems.set(lineWidthProperty, lineWidthItem);\n    borderItems.set(lineStyleProperty, lineStyleItem);\n    borderItems.set(lineColorProperty, lineColorItem);\n    borderItems.set(positionProperty, positionItem);\n    // Handle property-specific border shorthands (border-width, border-style, border-color).\n  } else if (prop2 && borderLines.has(prop2)) {\n    const lineProperty = `${prop1}-${prop2}`;\n    const lineItem = getPropertyItem(lineProperty, properties);\n    lineItem.value = value;\n    lineItem.priority = priority;\n    const propertyValue = hasVarFunc(value) ? \"\" : value;\n    if (propertyValue === \"\") {\n      shorthandItem.value = \"\";\n    } else if (isGlobalKeyword(propertyValue)) {\n      if (shorthandItem.value !== propertyValue) {\n        shorthandItem.value = \"\";\n      }\n    }\n    for (const position of borderPositions) {\n      const positionProperty = `${prop1}-${position}`;\n      const positionItem = getPropertyItem(positionProperty, properties);\n      const longhandProperty = `${prop1}-${position}-${prop2}`;\n      const longhandItem = getPropertyItem(longhandProperty, properties);\n      if (propertyValue) {\n        positionItem.value = replaceBorderShorthandValue(propertyValue, positionItem.value);\n      } else {\n        positionItem.value = \"\";\n      }\n      longhandItem.value = propertyValue;\n      longhandItem.priority = priority;\n      borderItems.set(positionProperty, positionItem);\n      borderItems.set(longhandProperty, longhandItem);\n    }\n    borderItems.set(border.property, shorthandItem);\n    borderItems.set(BORDER_IMAGE, imageItem);\n    borderItems.set(lineProperty, lineItem);\n    // Handle border shorthand.\n  } else {\n    const propertyValue = hasVarFunc(value) ? \"\" : value;\n    imageItem.value = propertyValue ? NONE : \"\";\n    for (const line of borderLines) {\n      const lineProperty = `${prop1}-${line}`;\n      const lineItem = getPropertyItem(lineProperty, properties);\n      lineItem.value = propertyValue;\n      lineItem.priority = priority;\n      borderItems.set(lineProperty, lineItem);\n    }\n    for (const position of borderPositions) {\n      const positionProperty = `${prop1}-${position}`;\n      const positionItem = getPropertyItem(positionProperty, properties);\n      positionItem.value = propertyValue;\n      positionItem.priority = priority;\n      borderItems.set(positionProperty, positionItem);\n      for (const line of borderLines) {\n        const longhandProperty = `${positionProperty}-${line}`;\n        const longhandItem = getPropertyItem(longhandProperty, properties);\n        longhandItem.value = propertyValue;\n        longhandItem.priority = priority;\n        borderItems.set(longhandProperty, longhandItem);\n      }\n    }\n    borderItems.set(property, shorthandItem);\n    borderItems.set(BORDER_IMAGE, imageItem);\n  }\n}\n\n/**\n * Handles border property preparation when the value is an array.\n *\n * @param {object} params - The parameters object.\n * @param {Array} params.value - The property value.\n * @param {string} params.priority - The property priority.\n * @param {Map} params.properties - The map of properties.\n * @param {object} params.parts - The split property name parts.\n * @param {Map} params.borderItems - The map to store processed border items.\n */\nfunction prepareBorderArrayValue({ value, priority, properties, parts, borderItems }) {\n  const { prop1, prop2 } = parts;\n  if (!value.length || !borderLines.has(prop2)) {\n    return;\n  }\n  const shorthandItem = getPropertyItem(border.property, properties);\n  const imageItem = getPropertyItem(BORDER_IMAGE, properties);\n  const lineProperty = `${prop1}-${prop2}`;\n  const lineItem = getPropertyItem(lineProperty, properties);\n  if (value.length === 1) {\n    const [propertyValue] = value;\n    if (shorthandItem.value) {\n      if (hasVarFunc(shorthandItem.value)) {\n        shorthandItem.value = \"\";\n      } else if (propertyValue) {\n        shorthandItem.value = replaceBorderShorthandValue(propertyValue, shorthandItem.value);\n      }\n    }\n  } else {\n    shorthandItem.value = \"\";\n  }\n  lineItem.value = value.join(\" \");\n  lineItem.priority = priority;\n  const positionValues = {};\n  const [val1, val2, val3, val4] = value;\n  switch (value.length) {\n    case 2: {\n      positionValues.top = val1;\n      positionValues.right = val2;\n      positionValues.bottom = val1;\n      positionValues.left = val2;\n      break;\n    }\n    case 3: {\n      positionValues.top = val1;\n      positionValues.right = val2;\n      positionValues.bottom = val3;\n      positionValues.left = val2;\n      break;\n    }\n    case 4: {\n      positionValues.top = val1;\n      positionValues.right = val2;\n      positionValues.bottom = val3;\n      positionValues.left = val4;\n      break;\n    }\n    case 1:\n    default: {\n      positionValues.top = val1;\n      positionValues.right = val1;\n      positionValues.bottom = val1;\n      positionValues.left = val1;\n    }\n  }\n  for (const position of borderPositions) {\n    const positionProperty = `${prop1}-${position}`;\n    const positionItem = getPropertyItem(positionProperty, properties);\n    if (positionItem.value && positionValues[position]) {\n      positionItem.value = replaceBorderShorthandValue(positionValues[position], positionItem.value);\n    }\n    const longhandProperty = `${positionProperty}-${prop2}`;\n    const longhandItem = getPropertyItem(longhandProperty, properties);\n    longhandItem.value = positionValues[position];\n    longhandItem.priority = priority;\n    borderItems.set(positionProperty, positionItem);\n    borderItems.set(longhandProperty, longhandItem);\n  }\n  borderItems.set(border.property, shorthandItem);\n  borderItems.set(BORDER_IMAGE, imageItem);\n  borderItems.set(lineProperty, lineItem);\n}\n\n/**\n * Handles border property preparation when the value is an object.\n *\n * @param {object} params - The parameters object.\n * @param {string} params.property - The property name.\n * @param {object} params.value - The property value.\n * @param {string} params.priority - The property priority.\n * @param {Map} params.properties - The map of properties.\n * @param {object} params.parts - The split property name parts.\n * @param {Map} params.borderItems - The map to store processed border items.\n */\nfunction prepareBorderObjectValue({ property, value, priority, properties, parts, borderItems }) {\n  const { prop1, prop2 } = parts;\n  const imageItem = getPropertyItem(BORDER_IMAGE, properties);\n  // Handle position shorthands.\n  if (prop2) {\n    if (!borderPositions.has(prop2)) {\n      return;\n    }\n    const shorthandItem = getPropertyItem(border.property, properties);\n    const lineWidthProperty = `${prop1}-width`;\n    const lineWidthItem = getPropertyItem(lineWidthProperty, properties);\n    const lineStyleProperty = `${prop1}-style`;\n    const lineStyleItem = getPropertyItem(lineStyleProperty, properties);\n    const lineColorProperty = `${prop1}-color`;\n    const lineColorItem = getPropertyItem(lineColorProperty, properties);\n    const positionProperty = `${prop1}-${prop2}`;\n    const positionItem = getPropertyItem(positionProperty, properties);\n    if (shorthandItem.value) {\n      for (const positionValue of Object.values(value)) {\n        if (!matchesBorderShorthandValue(property, positionValue, shorthandItem.value)) {\n          shorthandItem.value = \"\";\n          break;\n        }\n      }\n    }\n    positionItem.value = Object.values(value).join(\" \");\n    positionItem.priority = priority;\n    for (const line of borderLines) {\n      const longhandProperty = `${prop1}-${prop2}-${line}`;\n      const longhandItem = getPropertyItem(longhandProperty, properties);\n      const itemValue = Object.hasOwn(value, longhandProperty)\n        ? value[longhandProperty]\n        : border.initialValues.get(`${prop1}-${line}`);\n      if (line === WIDTH && lineWidthItem.value) {\n        lineWidthItem.value = replacePositionValue(itemValue, splitValue(lineWidthItem.value), prop2);\n      } else if (line === STYLE && lineStyleItem.value) {\n        lineStyleItem.value = replacePositionValue(itemValue, splitValue(lineStyleItem.value), prop2);\n      } else if (line === COLOR && lineColorItem.value) {\n        lineColorItem.value = replacePositionValue(itemValue, splitValue(lineColorItem.value), prop2);\n      }\n      longhandItem.value = itemValue;\n      longhandItem.priority = priority;\n      borderItems.set(longhandProperty, longhandItem);\n    }\n    borderItems.set(border.property, shorthandItem);\n    borderItems.set(BORDER_IMAGE, imageItem);\n    borderItems.set(lineWidthProperty, lineWidthItem);\n    borderItems.set(lineStyleProperty, lineStyleItem);\n    borderItems.set(lineColorProperty, lineColorItem);\n    borderItems.set(positionProperty, positionItem);\n    // Handle border shorthand.\n  } else {\n    const shorthandItem = getPropertyItem(prop1, properties);\n    const lineWidthProperty = `${prop1}-width`;\n    const lineWidthItem = getPropertyItem(lineWidthProperty, properties);\n    const lineStyleProperty = `${prop1}-style`;\n    const lineStyleItem = getPropertyItem(lineStyleProperty, properties);\n    const lineColorProperty = `${prop1}-color`;\n    const lineColorItem = getPropertyItem(lineColorProperty, properties);\n    const propertyValue = Object.values(value).join(\" \");\n    shorthandItem.value = propertyValue;\n    shorthandItem.priority = priority;\n    imageItem.value = propertyValue ? NONE : \"\";\n    if (Object.hasOwn(value, lineWidthProperty)) {\n      lineWidthItem.value = value[lineWidthProperty];\n    } else {\n      lineWidthItem.value = border.initialValues.get(lineWidthProperty);\n    }\n    lineWidthItem.priority = priority;\n    if (Object.hasOwn(value, lineStyleProperty)) {\n      lineStyleItem.value = value[lineStyleProperty];\n    } else {\n      lineStyleItem.value = border.initialValues.get(lineStyleProperty);\n    }\n    lineStyleItem.priority = priority;\n    if (Object.hasOwn(value, lineColorProperty)) {\n      lineColorItem.value = value[lineColorProperty];\n    } else {\n      lineColorItem.value = border.initialValues.get(lineColorProperty);\n    }\n    lineColorItem.priority = priority;\n    for (const position of borderPositions) {\n      const positionProperty = `${prop1}-${position}`;\n      const positionItem = getPropertyItem(positionProperty, properties);\n      positionItem.value = propertyValue;\n      positionItem.priority = priority;\n      for (const line of borderLines) {\n        const longhandProperty = `${positionProperty}-${line}`;\n        const longhandItem = getPropertyItem(longhandProperty, properties);\n        const lineProperty = `${prop1}-${line}`;\n        if (Object.hasOwn(value, lineProperty)) {\n          longhandItem.value = value[lineProperty];\n        } else {\n          longhandItem.value = border.initialValues.get(lineProperty);\n        }\n        longhandItem.priority = priority;\n        borderItems.set(longhandProperty, longhandItem);\n      }\n      borderItems.set(positionProperty, positionItem);\n    }\n    borderItems.set(property, shorthandItem);\n    borderItems.set(BORDER_IMAGE, imageItem);\n    borderItems.set(lineWidthProperty, lineWidthItem);\n    borderItems.set(lineStyleProperty, lineStyleItem);\n    borderItems.set(lineColorProperty, lineColorItem);\n  }\n}\n\n/**\n * Prepares border properties by splitting shorthands and handling updates.\n *\n * @param {string} property - The border property name.\n * @param {string|Array|object} value - The value of the property.\n * @param {string} priority - The priority of the property (e.g., \"important\").\n * @param {Map} properties - The map of all properties.\n * @returns {Map|undefined} A map of expanded or updated border properties.\n */\nfunction prepareBorderProperties(property, value, priority, properties) {\n  if (typeof property !== \"string\" || value === null) {\n    return;\n  }\n  if (!property.startsWith(border.property)) {\n    return;\n  }\n  let prop2, prop3;\n  if (property.length > border.property.length) {\n    // Check if next char is '-'\n    if (property.charCodeAt(border.property.length) !== 45) {\n      return;\n    }\n    // property is like \"border-...\"\n    const remainder = property.substring(border.property.length + 1);\n    const hyphenIndex = remainder.indexOf(\"-\");\n    if (hyphenIndex !== -1) {\n      prop2 = remainder.substring(0, hyphenIndex);\n      prop3 = remainder.substring(hyphenIndex + 1);\n    } else {\n      prop2 = remainder;\n    }\n  }\n  if ((borderPositions.has(prop2) && prop3 && !borderLines.has(prop3)) || (borderLines.has(prop2) && prop3)) {\n    return;\n  }\n  const parts = {\n    prop1: border.property,\n    prop2,\n    prop3\n  };\n  const borderItems = new Map();\n  if (typeof value === \"string\") {\n    prepareBorderStringValue({\n      property,\n      value,\n      priority,\n      properties,\n      parts,\n      borderItems\n    });\n  } else if (Array.isArray(value)) {\n    prepareBorderArrayValue({\n      value,\n      priority,\n      properties,\n      parts,\n      borderItems\n    });\n  } else if (value && typeof value === \"object\") {\n    prepareBorderObjectValue({\n      property,\n      value,\n      priority,\n      properties,\n      parts,\n      borderItems\n    });\n  }\n  if (!borderItems.has(border.property)) {\n    return;\n  }\n  const borderProps = new Map([[border.property, borderItems.get(border.property)]]);\n  for (const line of borderLines) {\n    const lineProperty = `${border.property}-${line}`;\n    const lineItem = borderItems.get(lineProperty) ?? getPropertyItem(lineProperty, properties);\n    borderProps.set(lineProperty, lineItem);\n  }\n  for (const position of borderPositions) {\n    const positionProperty = `${border.property}-${position}`;\n    const positionItem = borderItems.get(positionProperty) ?? getPropertyItem(positionProperty, properties);\n    borderProps.set(positionProperty, positionItem);\n    for (const line of borderLines) {\n      const longhandProperty = `${border.property}-${position}-${line}`;\n      const longhandItem = borderItems.get(longhandProperty) ?? getPropertyItem(longhandProperty, properties);\n      borderProps.set(longhandProperty, longhandItem);\n    }\n  }\n  const borderImageItem = borderItems.get(BORDER_IMAGE) ?? createPropertyItem(BORDER_IMAGE);\n  borderProps.set(BORDER_IMAGE, borderImageItem);\n  return borderProps;\n}\n\n/**\n * Generates a border line shorthand property if all line components are present.\n *\n * @param {Map} items - The map of collected property items.\n * @param {string} property - The shorthand property name to generate.\n * @param {string} [priority=\"\"] - The priority of the property.\n * @returns {Array} A key-value pair for the generated property.\n */\nfunction generateBorderLineShorthand(items, property, priority = \"\") {\n  const values = [];\n  for (const [, item] of items) {\n    const { value: itemValue } = item;\n    values.push(itemValue);\n  }\n  const value = getPositionValue(values);\n  return [property, createPropertyItem(property, value, priority)];\n}\n\n/**\n * Generates a border position shorthand property if all position components are present.\n *\n * @param {Map} items - The map of collected property items.\n * @param {string} property - The shorthand property name to generate.\n * @param {string} [priority=\"\"] - The priority of the property.\n * @returns {Array} A key-value pair for the generated property.\n */\nfunction generateBorderPositionShorthand(items, property, priority = \"\") {\n  const values = [];\n  for (const [, item] of items) {\n    const { value: itemValue } = item;\n    values.push(itemValue);\n  }\n  const value = values.join(\" \");\n  return [property, createPropertyItem(property, value, priority)];\n}\n\n/**\n * Generates a border shorthand property if all components match.\n *\n * @param {Array} items - The collection of property values.\n * @param {string} property - The shorthand property name to generate.\n * @param {string} [priority=\"\"] - The priority of the property.\n * @returns {Array|undefined} A key-value pair for the generated property or undefined.\n */\nfunction generateBorderShorthand(items, property, priority = \"\") {\n  const values = new Set(items);\n  if (values.size === 1) {\n    const { value } = values.keys().next();\n    return [property, createPropertyItem(property, value, priority)];\n  }\n}\n\n/**\n * Processes and consolidates border-related longhands into shorthands where possible.\n *\n * @param {Map} properties - The map of current properties.\n * @returns {Map} The updated map with consolidated border properties.\n */\nfunction prepareBorderShorthands(properties) {\n  const borderCollections = {};\n  for (const key of Object.keys(borderCollectionConfig)) {\n    borderCollections[key] = {\n      ...borderCollectionConfig[key],\n      items: new Map(),\n      priorityItems: new Map()\n    };\n  }\n  for (const [property, item] of properties) {\n    const { priority, value } = item;\n    let positionPart, linePart;\n    // We can assume property starts with \"border-\"\n    const firstHyphen = property.indexOf(\"-\");\n    if (firstHyphen !== -1) {\n      const remainder = property.substring(firstHyphen + 1);\n      const secondHyphen = remainder.indexOf(\"-\");\n      if (secondHyphen !== -1) {\n        positionPart = remainder.substring(0, secondHyphen);\n        linePart = remainder.substring(secondHyphen + 1);\n      } else {\n        positionPart = remainder;\n        linePart = undefined;\n      }\n    }\n    if (linePart && borderCollections[linePart]) {\n      const collection = borderCollections[linePart];\n      if (priority) {\n        collection.priorityItems.set(property, { property, value, priority });\n      } else {\n        collection.items.set(property, { property, value, priority });\n      }\n    }\n    if (positionPart && borderCollections[positionPart]) {\n      const collection = borderCollections[positionPart];\n      if (priority) {\n        collection.priorityItems.set(property, { property, value, priority });\n      } else {\n        collection.items.set(property, { property, value, priority });\n      }\n    }\n  }\n  const shorthandItems = [];\n  const shorthandPriorityItems = [];\n  for (const [key, collection] of Object.entries(borderCollections)) {\n    const { shorthand, generator, items, priorityItems } = collection;\n    const requiredSize = borderLines.has(key) ? 4 : 3;\n    if (items.size === requiredSize) {\n      const [property, item] = generator(items, shorthand) ?? [];\n      if (property && item) {\n        properties.set(property, item);\n        if (borderPositions.has(key) && properties.has(BORDER_IMAGE)) {\n          const { value: imageValue } = properties.get(BORDER_IMAGE);\n          if (imageValue === NONE) {\n            shorthandItems.push(item.value);\n          }\n        }\n      }\n    } else if (priorityItems.size === requiredSize) {\n      const [property, item] = generator(priorityItems, shorthand, \"important\") ?? [];\n      if (property && item) {\n        properties.set(property, item);\n        if (borderPositions.has(key) && properties.has(BORDER_IMAGE)) {\n          const { value: imageValue } = properties.get(BORDER_IMAGE);\n          if (imageValue === NONE) {\n            shorthandPriorityItems.push(item.value);\n          }\n        }\n      }\n    }\n  }\n  const mixedPriorities = shorthandItems.length && shorthandPriorityItems.length;\n  const imageItem = createPropertyItem(BORDER_IMAGE, NONE);\n  if (shorthandItems.length === 4) {\n    const [property, item] = generateBorderShorthand(shorthandItems, border.property) ?? [];\n    if (property && item) {\n      properties.set(property, item);\n      properties.delete(BORDER_IMAGE);\n      properties.set(BORDER_IMAGE, imageItem);\n    }\n  } else if (shorthandPriorityItems.length === 4) {\n    const [property, item] = generateBorderShorthand(shorthandPriorityItems, border.property, \"important\") ?? [];\n    if (property && item) {\n      properties.set(property, item);\n      properties.delete(BORDER_IMAGE);\n      properties.set(BORDER_IMAGE, imageItem);\n    }\n  } else if (properties.has(BORDER_IMAGE)) {\n    const { value: imageValue } = properties.get(BORDER_IMAGE);\n    if (imageValue === NONE) {\n      if (mixedPriorities) {\n        properties.delete(BORDER_IMAGE);\n        properties.set(BORDER_IMAGE, imageItem);\n      } else {\n        properties.delete(BORDER_IMAGE);\n      }\n    }\n  }\n  if (mixedPriorities) {\n    const items = [];\n    const priorityItems = [];\n    for (const item of properties) {\n      const [, { priority }] = item;\n      if (priority) {\n        priorityItems.push(item);\n      } else {\n        items.push(item);\n      }\n    }\n    const firstPropertyKey = properties.keys().next().value;\n    const { priority: firstPropertyPriority } = properties.get(firstPropertyKey);\n    if (firstPropertyPriority) {\n      return new Map([...priorityItems, ...items]);\n    }\n    return new Map([...items, ...priorityItems]);\n  }\n  if (properties.has(BORDER_IMAGE)) {\n    properties.delete(BORDER_IMAGE);\n    properties.set(BORDER_IMAGE, imageItem);\n  }\n  return properties;\n}\n\n/**\n * Processes shorthand properties from the shorthands map.\n *\n * @param {Map} shorthands - The map containing shorthand property groups.\n * @returns {Map} A map of processed shorthand properties.\n */\nfunction processShorthandProperties(shorthands) {\n  const shorthandItems = new Map();\n  for (const [property, item] of shorthands) {\n    const shorthandItem = shorthandProperties.get(property);\n    if (item.size === shorthandItem.shorthandFor.size && shorthandItem.position) {\n      const positionValues = [];\n      let priority = \"\";\n      for (const { value: longhandValue, priority: longhandPriority } of item.values()) {\n        positionValues.push(longhandValue);\n        if (longhandPriority) {\n          priority = longhandPriority;\n        }\n      }\n      const value = getPositionValue(positionValues, shorthandItem.position);\n      shorthandItems.set(property, createPropertyItem(property, value, priority));\n    }\n  }\n  return shorthandItems;\n}\n\n/**\n * Updates the longhand properties map with a new property item.\n * If a property with normal priority already exists, it will be overwritten by the new item.\n * If the existing property has \"important\" priority, it will not be overwritten.\n *\n * @param {string} property - The CSS property name.\n * @param {object} item - The property item object containing value and priority.\n * @param {Map} longhandProperties - The map of longhand properties to update.\n */\nfunction updateLonghandProperties(property, item, longhandProperties) {\n  if (longhandProperties.has(property)) {\n    const { priority: longhandPriority } = longhandProperties.get(property);\n    if (!longhandPriority) {\n      longhandProperties.delete(property);\n      longhandProperties.set(property, item);\n    }\n  } else {\n    longhandProperties.set(property, item);\n  }\n}\n\n/**\n * Processes border properties from the borders map, expanding and normalizing them.\n *\n * @param {Map} borders - The map containing accumulated border properties.\n * @returns {Map} A map of fully processed and normalized border properties.\n */\nfunction processBorderProperties(borders) {\n  const longhandProperties = new Map();\n  for (const [property, item] of borders) {\n    if (shorthandProperties.has(property)) {\n      const { value, priority } = item;\n      if (property === border.property) {\n        const lineItems = border.parse(value);\n        for (const [key, initialValue] of border.initialValues) {\n          if (!Object.hasOwn(lineItems, key)) {\n            lineItems[key] = initialValue;\n          }\n        }\n        for (const lineProperty of Object.keys(lineItems)) {\n          let namePart, linePart;\n          const hyphenIndex = lineProperty.indexOf(\"-\");\n          if (hyphenIndex !== -1) {\n            namePart = lineProperty.substring(0, hyphenIndex);\n            linePart = lineProperty.substring(hyphenIndex + 1);\n          } else {\n            // fallback for safety, though lineProperty from border.parse keys\n            // should have hyphen\n            namePart = lineProperty;\n            linePart = \"\";\n          }\n          const lineValue = lineItems[lineProperty];\n          for (const position of borderPositions) {\n            const longhandProperty = `${namePart}-${position}-${linePart}`;\n            const longhandItem = createPropertyItem(longhandProperty, lineValue, priority);\n            updateLonghandProperties(longhandProperty, longhandItem, longhandProperties);\n          }\n        }\n        if (value) {\n          longhandProperties.set(BORDER_IMAGE, createPropertyItem(BORDER_IMAGE, NONE, priority));\n        }\n      } else {\n        const shorthandItem = shorthandProperties.get(property);\n        const parsedItem = shorthandItem.parse(value);\n        if (Array.isArray(parsedItem)) {\n          let namePart, linePart;\n          const hyphenIndex = property.indexOf(\"-\");\n          if (hyphenIndex !== -1) {\n            namePart = property.substring(0, hyphenIndex);\n            linePart = property.substring(hyphenIndex + 1);\n          } else {\n            namePart = property;\n          }\n          for (const position of borderPositions) {\n            const longhandProperty = `${namePart}-${position}-${linePart}`;\n            const longhandValue = getPositionValue(parsedItem, position);\n            const longhandItem = createPropertyItem(longhandProperty, longhandValue, priority);\n            updateLonghandProperties(longhandProperty, longhandItem, longhandProperties);\n          }\n        } else if (parsedItem) {\n          for (const [key, initialValue] of shorthandItem.initialValues) {\n            if (!Object.hasOwn(parsedItem, key)) {\n              parsedItem[key] = initialValue;\n            }\n          }\n          for (const longhandProperty of Object.keys(parsedItem)) {\n            const longhandValue = parsedItem[longhandProperty];\n            const longhandItem = createPropertyItem(longhandProperty, longhandValue, priority);\n            updateLonghandProperties(longhandProperty, longhandItem, longhandProperties);\n          }\n        }\n      }\n    } else if (longhandProperties.has(property)) {\n      const { priority } = longhandProperties.get(property);\n      if (!priority) {\n        longhandProperties.delete(property);\n        longhandProperties.set(property, item);\n      }\n    } else {\n      longhandProperties.set(property, item);\n    }\n  }\n  const borderItems = prepareBorderShorthands(longhandProperties);\n  return borderItems;\n}\n\n/**\n * Normalize and prepare CSS properties, handling shorthands and longhands.\n *\n * @param {Map} properties - The initial map of properties.\n * @returns {Map} The normalized map of properties.\n */\nfunction prepareProperties(properties) {\n  const parsedProperties = new Map();\n  const shorthands = new Map();\n  const borders = new Map();\n  let hasPrecedingBackground = false;\n  for (const [property, item] of properties) {\n    const { value, priority } = item;\n    const { logicalPropertyGroup: shorthandProperty } = propertyDefinitions.get(property) ?? {};\n    if (borderProperties.has(property)) {\n      borders.set(property, { property, value, priority });\n    } else if (shorthandProperties.has(shorthandProperty)) {\n      if (!shorthands.has(shorthandProperty)) {\n        shorthands.set(shorthandProperty, new Map());\n      }\n      const longhandItems = shorthands.get(shorthandProperty);\n      if (longhandItems.size) {\n        const firstPropertyKey = longhandItems.keys().next().value;\n        const { priority: firstPropertyPriority } = longhandItems.get(firstPropertyKey);\n        if (priority === firstPropertyPriority) {\n          longhandItems.set(property, { property, value, priority });\n          shorthands.set(shorthandProperty, longhandItems);\n        } else {\n          parsedProperties.delete(shorthandProperty);\n        }\n      } else {\n        longhandItems.set(property, { property, value, priority });\n        shorthands.set(shorthandProperty, longhandItems);\n      }\n      parsedProperties.set(property, item);\n    } else if (shorthandProperties.has(property)) {\n      const shorthandItem = shorthandProperties.get(property);\n      const parsedValues = shorthandItem.parse(value);\n      let omitShorthandProperty = false;\n      if (Array.isArray(parsedValues)) {\n        const [parsedValue] = parsedValues;\n        if (typeof parsedValue === \"string\") {\n          for (const [longhandProperty, longhandItem] of shorthandItem.shorthandFor) {\n            if (!priority && properties.has(longhandProperty)) {\n              const { priority: longhandPriority } = properties.get(longhandProperty);\n              if (longhandPriority) {\n                omitShorthandProperty = true;\n                continue;\n              }\n            }\n            const { position } = longhandItem;\n            const longhandValue = getPositionValue([parsedValue], position);\n            parsedProperties.set(longhandProperty, createPropertyItem(longhandProperty, longhandValue, priority));\n          }\n        } else if (parsedValue) {\n          for (const longhandProperty of Object.keys(parsedValue)) {\n            const longhandValue = parsedValue[longhandProperty];\n            parsedProperties.set(longhandProperty, createPropertyItem(longhandProperty, longhandValue, priority));\n          }\n        }\n      } else if (parsedValues && typeof parsedValues !== \"string\") {\n        for (const longhandProperty of Object.keys(parsedValues)) {\n          const longhandValue = parsedValues[longhandProperty];\n          parsedProperties.set(longhandProperty, createPropertyItem(longhandProperty, longhandValue, priority));\n        }\n      }\n      if (!omitShorthandProperty) {\n        if (property === background.property) {\n          hasPrecedingBackground = true;\n        }\n        parsedProperties.set(property, createPropertyItem(property, value, priority));\n      }\n    } else {\n      parsedProperties.set(property, createPropertyItem(property, value, priority));\n      if (hasPrecedingBackground) {\n        const { value: shorthandValue, priority: shorthandPriority } = properties.get(background.property);\n        if ((!shorthandPriority || priority) && !hasVarFunc(shorthandValue)) {\n          const replacedShorthandValue = replaceBackgroundShorthand(property, parsedProperties);\n          properties.delete(background.property);\n          properties.set(\n            background.property,\n            createPropertyItem(background.property, replacedShorthandValue, shorthandPriority)\n          );\n        }\n      }\n    }\n  }\n  if (shorthands.size) {\n    const shorthandItems = processShorthandProperties(shorthands);\n    for (const [property, item] of shorthandItems) {\n      parsedProperties.set(property, item);\n    }\n  }\n  if (borders.size) {\n    const borderItems = processBorderProperties(borders);\n    for (const [property, item] of borderItems) {\n      parsedProperties.set(property, item);\n    }\n  }\n  return parsedProperties;\n}\n\n/**\n * Cleans up redundancy in border properties by removing longhands that are covered by shorthands.\n *\n * @param {Map} properties - The map of properties to normalize.\n * @returns {Map} The normalized properties map.\n */\nfunction normalizeProperties(properties) {\n  if (properties.has(border.property)) {\n    for (const line of borderLines) {\n      properties.delete(`${border.property}-${line}`);\n    }\n    for (const position of borderPositions) {\n      properties.delete(`${border.property}-${position}`);\n      for (const line of borderLines) {\n        properties.delete(`${border.property}-${position}-${line}`);\n      }\n    }\n    properties.delete(`${border.property}-image`);\n  }\n  for (const line of borderLines) {\n    const lineProperty = `${border.property}-${line}`;\n    if (properties.has(lineProperty)) {\n      for (const position of borderPositions) {\n        const positionProperty = `${border.property}-${position}`;\n        const longhandProperty = `${border.property}-${position}-${line}`;\n        properties.delete(positionProperty);\n        properties.delete(longhandProperty);\n      }\n    }\n  }\n  for (const position of borderPositions) {\n    const positionProperty = `${border.property}-${position}`;\n    if (properties.has(positionProperty)) {\n      const longhandProperties = [];\n      for (const line of borderLines) {\n        const longhandProperty = `${border.property}-${position}-${line}`;\n        longhandProperties.push(longhandProperty);\n      }\n      if (longhandProperties.length === 3) {\n        for (const longhandProperty of longhandProperties) {\n          properties.delete(longhandProperty);\n        }\n      } else {\n        properties.delete(positionProperty);\n      }\n    }\n  }\n  return properties;\n}\n\nmodule.exports = {\n  borderProperties,\n  getPositionValue,\n  normalizeProperties,\n  prepareBorderProperties,\n  prepareProperties,\n  shorthandProperties\n};\n","/**\n * This is a fork from the CSS Style Declaration part of\n * https://github.com/NV/CSSOM\n */\n\"use strict\";\n\nconst propertyDescriptors = require(\"./generated/propertyDescriptors\");\nconst {\n  borderProperties,\n  getPositionValue,\n  normalizeProperties,\n  prepareBorderProperties,\n  prepareProperties,\n  shorthandProperties\n} = require(\"./normalize\");\nconst { hasVarFunc, isGlobalKeyword, parseCSS, parsePropertyValue, prepareValue } = require(\"./parsers\");\nconst { asciiLowercase } = require(\"./utils/strings\");\n\n/**\n * @see https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface\n */\nclass CSSStyleDeclaration {\n  /**\n   * Creates a new CSSStyleDeclaration instance.\n   *\n   * @param {Function} [onChangeCallback] - Callback triggered when style changes.\n   * @param {object} [opt] - Options.\n   * @param {object} [opt.context] - The context object (Window, Element, or CSSRule).\n   */\n  constructor(onChangeCallback, { context } = {}) {\n    // Internals for jsdom\n    this._global = globalThis;\n    this._onChange = onChangeCallback;\n\n    // Internals for CSS declaration block\n    // @see https://drafts.csswg.org/cssom/#css-declaration-blocks\n    this._computed = false;\n    this._ownerNode = null;\n    this._parentRule = null;\n    this._readonly = false;\n    this._updating = false;\n\n    // Other internals\n    this._length = 0;\n    this._propertyIndices = new Map();\n    this._priorities = new Map();\n    this._values = new Map();\n\n    if (context) {\n      if (typeof context.getComputedStyle === \"function\") {\n        this._global = context;\n        this._computed = true;\n        // FIXME: The `_readonly` flag should initially be `false` to be editable,\n        // but should eventually be set to `true`.\n        // this._readonly = true;\n      } else if (context.nodeType === 1 && Object.hasOwn(context, \"style\")) {\n        this._global = context.ownerDocument.defaultView;\n        this._ownerNode = context;\n      } else if (Object.hasOwn(context, \"parentRule\")) {\n        this._parentRule = context;\n        // Find Window from the owner node of the StyleSheet.\n        const window = context?.parentStyleSheet?.ownerNode?.ownerDocument?.defaultView;\n        if (window) {\n          this._global = window;\n        }\n      }\n    }\n  }\n\n  /**\n   * Returns the textual representation of the declaration block.\n   *\n   * @returns {string} The serialized CSS text.\n   */\n  get cssText() {\n    if (this._computed) {\n      return \"\";\n    }\n    const properties = new Map();\n    for (let i = 0; i < this._length; i++) {\n      const property = this[i];\n      const value = this.getPropertyValue(property);\n      const priority = this._priorities.get(property) ?? \"\";\n      if (shorthandProperties.has(property)) {\n        const { shorthandFor } = shorthandProperties.get(property);\n        for (const [longhand] of shorthandFor) {\n          if (priority || !this._priorities.get(longhand)) {\n            properties.delete(longhand);\n          }\n        }\n      }\n      properties.set(property, { property, value, priority });\n    }\n    const normalizedProperties = normalizeProperties(properties);\n    const parts = [];\n    for (const { property, value, priority } of normalizedProperties.values()) {\n      if (priority) {\n        parts.push(`${property}: ${value} !${priority};`);\n      } else {\n        parts.push(`${property}: ${value};`);\n      }\n    }\n    return parts.join(\" \");\n  }\n\n  /**\n   * Sets the textual representation of the declaration block.\n   * This clears all existing properties and parses the new CSS text.\n   *\n   * @param {string} text - The new CSS text.\n   */\n  set cssText(text) {\n    if (this._readonly) {\n      const msg = \"cssText can not be modified.\";\n      const name = \"NoModificationAllowedError\";\n      throw new this._global.DOMException(msg, name);\n    }\n    this._clearIndexedProperties();\n    this._values.clear();\n    this._priorities.clear();\n    if (this._parentRule || (this._ownerNode && this._updating)) {\n      return;\n    }\n    try {\n      this._updating = true;\n      const valueObj = parseCSS(text, { context: \"declarationList\", parseValue: false });\n      if (valueObj?.children) {\n        const properties = new Map();\n        let shouldSkipNext = false;\n        for (const item of valueObj.children) {\n          if (item.type === \"Atrule\") {\n            continue;\n          }\n          if (item.type === \"Rule\") {\n            shouldSkipNext = true;\n            continue;\n          }\n          if (shouldSkipNext === true) {\n            shouldSkipNext = false;\n            continue;\n          }\n          const {\n            important,\n            property,\n            value: { value }\n          } = item;\n          if (typeof property === \"string\" && typeof value === \"string\") {\n            const priority = important ? \"important\" : \"\";\n            const isCustomProperty = property.startsWith(\"--\");\n            if (isCustomProperty || hasVarFunc(value)) {\n              if (properties.has(property)) {\n                const { priority: itemPriority } = properties.get(property);\n                if (!itemPriority) {\n                  properties.set(property, { property, value, priority });\n                }\n              } else {\n                properties.set(property, { property, value, priority });\n              }\n            } else {\n              const parsedValue = parsePropertyValue(property, value);\n              if (parsedValue) {\n                if (properties.has(property)) {\n                  const { priority: itemPriority } = properties.get(property);\n                  if (!itemPriority) {\n                    properties.set(property, { property, value, priority });\n                  }\n                } else {\n                  properties.set(property, { property, value, priority });\n                }\n              } else {\n                this.removeProperty(property);\n              }\n            }\n          }\n        }\n        const parsedProperties = prepareProperties(properties);\n        for (const [property, item] of parsedProperties) {\n          const { priority, value } = item;\n          this._priorities.set(property, priority);\n          this.setProperty(property, value, priority);\n        }\n      }\n    } catch {\n      return;\n    } finally {\n      this._updating = false;\n    }\n    if (this._onChange) {\n      this._onChange(this.cssText);\n    }\n  }\n\n  /**\n   * Returns the number of properties in the declaration block.\n   *\n   * @returns {number} The property count.\n   */\n  get length() {\n    return this._length;\n  }\n\n  /**\n   * Returns the CSSRule that is the parent of this declaration block.\n   *\n   * @returns {object|null} The parent CSSRule or null.\n   */\n  get parentRule() {\n    return this._parentRule;\n  }\n\n  /**\n   * Alias for the \"float\" property.\n   *\n   * @returns {string} The value of the \"float\" property.\n   */\n  get cssFloat() {\n    return this.getPropertyValue(\"float\");\n  }\n\n  /**\n   * Sets the \"float\" property.\n   *\n   * @param {string} value - The new value for \"float\".\n   */\n  set cssFloat(value) {\n    this._setProperty(\"float\", value);\n  }\n\n  /**\n   * Returns the priority of the specified property (e.g. \"important\").\n   *\n   * @param {string} property - The property name.\n   * @returns {string} The priority string, or empty string if not set.\n   */\n  getPropertyPriority(property) {\n    return this._priorities.get(property) || \"\";\n  }\n\n  /**\n   * Returns the value of the specified property.\n   *\n   * @param {string} property - The property name.\n   * @returns {string} The property value, or empty string if not set.\n   */\n  getPropertyValue(property) {\n    if (this._values.has(property)) {\n      return this._values.get(property).toString();\n    }\n    return \"\";\n  }\n\n  /**\n   * Returns the property name at the specified index.\n   *\n   * @param {...number} args - The index (only the first argument is used).\n   * @returns {string} The property name, or empty string if index is invalid.\n   */\n  item(...args) {\n    if (!args.length) {\n      const msg = \"1 argument required, but only 0 present.\";\n      throw new this._global.TypeError(msg);\n    }\n    const [value] = args;\n    const index = parseInt(value);\n    if (Number.isNaN(index) || index < 0 || index >= this._length) {\n      return \"\";\n    }\n    return this[index];\n  }\n\n  /**\n   * Removes the specified property from the declaration block.\n   *\n   * @param {string} property - The property name to remove.\n   * @returns {string} The value of the removed property.\n   */\n  removeProperty(property) {\n    if (this._readonly) {\n      const msg = `Property ${property} can not be modified.`;\n      const name = \"NoModificationAllowedError\";\n      throw new this._global.DOMException(msg, name);\n    }\n    if (!this._values.has(property)) {\n      return \"\";\n    }\n    const prevValue = this._values.get(property);\n    this._values.delete(property);\n    this._priorities.delete(property);\n    const index = this._getIndexOf(property);\n    if (index >= 0) {\n      this._removeIndexedProperty(index);\n      if (this._onChange) {\n        this._onChange(this.cssText);\n      }\n    }\n    return prevValue;\n  }\n\n  /**\n   * Sets a property value with an optional priority.\n   *\n   * @param {string} property - The property name.\n   * @param {string} value - The property value.\n   * @param {string} [priority=\"\"] - The priority (e.g. \"important\").\n   */\n  setProperty(property, value, priority = \"\") {\n    if (this._readonly) {\n      const msg = `Property ${property} can not be modified.`;\n      const name = \"NoModificationAllowedError\";\n      throw new this._global.DOMException(msg, name);\n    }\n    value = prepareValue(value);\n    if (value === \"\") {\n      if (Object.hasOwn(propertyDescriptors, property)) {\n        // TODO: Refactor handlers to not require `.call()`.\n        propertyDescriptors[property].set.call(this, value);\n      }\n      this.removeProperty(property);\n      return;\n    }\n    // Custom property\n    if (property.startsWith(\"--\")) {\n      this._setProperty(property, value, priority);\n      return;\n    }\n    property = asciiLowercase(property);\n    if (!Object.hasOwn(propertyDescriptors, property)) {\n      return;\n    }\n    if (priority) {\n      this._priorities.set(property, priority);\n    } else {\n      this._priorities.delete(property);\n    }\n    propertyDescriptors[property].set.call(this, value);\n  }\n\n  /**\n   * Clears all indexed properties, properties indices and resets length to 0.\n   *\n   * @private\n   */\n  _clearIndexedProperties() {\n    this._propertyIndices.clear();\n    for (let i = 0; i < this._length; i++) {\n      delete this[i];\n    }\n    this._length = 0;\n  }\n\n  /**\n   * Removes an indexed property at the specified index, shifts others, and updates indices.\n   *\n   * @private\n   * @param {number} index - The index of the property to remove.\n   */\n  _removeIndexedProperty(index) {\n    this._propertyIndices.delete(this[index]);\n    for (let i = index; i < this._length - 1; i++) {\n      const property = this[i + 1];\n      this[i] = property;\n      this._propertyIndices.set(property, i);\n    }\n    delete this[this._length - 1];\n    this._length--;\n  }\n\n  /**\n   * Returns the index of the specified property.\n   *\n   * @private\n   * @param {string} property - The property name to search for.\n   * @returns {number} The index of the property, or -1 if not found.\n   */\n  _getIndexOf(property) {\n    return this._propertyIndices.get(property) ?? -1;\n  }\n\n  /**\n   * Sets a property and update indices.\n   *\n   * @private\n   * @param {string} property - The property name.\n   * @param {string} value - The property value.\n   * @param {string} priority - The priority.\n   */\n  _setProperty(property, value, priority) {\n    if (typeof value !== \"string\") {\n      return;\n    }\n    if (value === \"\") {\n      this.removeProperty(property);\n      return;\n    }\n    let originalText = \"\";\n    if (this._onChange && !this._updating) {\n      originalText = this.cssText;\n    }\n    if (!this._values.has(property)) {\n      // New property.\n      this[this._length] = property;\n      this._propertyIndices.set(property, this._length);\n      this._length++;\n    }\n    if (priority === \"important\") {\n      this._priorities.set(property, priority);\n    } else {\n      this._priorities.delete(property);\n    }\n    this._values.set(property, value);\n    if (this._onChange && !this._updating && this.cssText !== originalText) {\n      this._onChange(this.cssText);\n    }\n  }\n\n  /**\n   * Helper to handle border property expansion.\n   *\n   * @private\n   * @param {string} property - The property name (e.g. \"border\").\n   * @param {object|Array|string} value - The value to set.\n   * @param {string} priority - The priority.\n   */\n  _borderSetter(property, value, priority) {\n    const properties = new Map();\n    if (typeof priority !== \"string\") {\n      priority = this._priorities.get(property) ?? \"\";\n    }\n    if (property === \"border\") {\n      properties.set(property, { propery: property, value, priority });\n    } else {\n      for (let i = 0; i < this._length; i++) {\n        const itemProperty = this[i];\n        if (borderProperties.has(itemProperty)) {\n          const itemValue = this.getPropertyValue(itemProperty);\n          const longhandPriority = this._priorities.get(itemProperty) ?? \"\";\n          let itemPriority = longhandPriority;\n          if (itemProperty === property) {\n            itemPriority = priority;\n          }\n          properties.set(itemProperty, {\n            property: itemProperty,\n            value: itemValue,\n            priority: itemPriority\n          });\n        }\n      }\n    }\n    const parsedProperties = prepareBorderProperties(property, value, priority, properties);\n    for (const [itemProperty, item] of parsedProperties) {\n      const { priority: itemPriority, value: itemValue } = item;\n      this._setProperty(itemProperty, itemValue, itemPriority);\n    }\n  }\n\n  /**\n   * Helper to handle flexbox shorthand expansion.\n   *\n   * @private\n   * @param {string} property - The property name.\n   * @param {string} value - The property value.\n   * @param {string} priority - The priority.\n   * @param {string} shorthandProperty - The shorthand property name.\n   */\n  _flexBoxSetter(property, value, priority, shorthandProperty) {\n    if (!shorthandProperty || !shorthandProperties.has(shorthandProperty)) {\n      return;\n    }\n    const shorthandPriority = this._priorities.get(shorthandProperty);\n    this.removeProperty(shorthandProperty);\n    if (typeof priority !== \"string\") {\n      priority = this._priorities.get(property) ?? \"\";\n    }\n    this.removeProperty(property);\n    if (shorthandPriority && priority) {\n      this._setProperty(property, value);\n    } else {\n      this._setProperty(property, value, priority);\n    }\n    if (value && !hasVarFunc(value)) {\n      const longhandValues = [];\n      const shorthandItem = shorthandProperties.get(shorthandProperty);\n      let hasGlobalKeyword = false;\n      for (const [longhandProperty] of shorthandItem.shorthandFor) {\n        if (longhandProperty === property) {\n          if (isGlobalKeyword(value)) {\n            hasGlobalKeyword = true;\n          }\n          longhandValues.push(value);\n        } else {\n          const longhandValue = this.getPropertyValue(longhandProperty);\n          const longhandPriority = this._priorities.get(longhandProperty) ?? \"\";\n          if (!longhandValue || longhandPriority !== priority) {\n            break;\n          }\n          if (isGlobalKeyword(longhandValue)) {\n            hasGlobalKeyword = true;\n          }\n          longhandValues.push(longhandValue);\n        }\n      }\n      if (longhandValues.length === shorthandItem.shorthandFor.size) {\n        if (hasGlobalKeyword) {\n          const [firstValue, ...restValues] = longhandValues;\n          if (restValues.every((val) => val === firstValue)) {\n            this._setProperty(shorthandProperty, firstValue, priority);\n          }\n        } else {\n          const parsedValue = shorthandItem.parse(longhandValues.join(\" \"));\n          const shorthandValue = Object.values(parsedValue).join(\" \");\n          this._setProperty(shorthandProperty, shorthandValue, priority);\n        }\n      }\n    }\n  }\n\n  /**\n   * Helper to handle position shorthand expansion.\n   *\n   * @private\n   * @param {string} property - The property name.\n   * @param {Array|string} value - The property value.\n   * @param {string} priority - The priority.\n   */\n  _positionShorthandSetter(property, value, priority) {\n    if (!shorthandProperties.has(property)) {\n      return;\n    }\n    const shorthandValues = [];\n    if (Array.isArray(value)) {\n      shorthandValues.push(...value);\n    } else if (typeof value === \"string\") {\n      shorthandValues.push(value);\n    } else {\n      return;\n    }\n    if (typeof priority !== \"string\") {\n      priority = this._priorities.get(property) ?? \"\";\n    }\n    const { position, shorthandFor } = shorthandProperties.get(property);\n    let hasPriority = false;\n    for (const [longhandProperty, longhandItem] of shorthandFor) {\n      const { position: longhandPosition } = longhandItem;\n      const longhandValue = getPositionValue(shorthandValues, longhandPosition);\n      if (priority) {\n        this._setProperty(longhandProperty, longhandValue, priority);\n      } else {\n        const longhandPriority = this._priorities.get(longhandProperty) ?? \"\";\n        if (longhandPriority) {\n          hasPriority = true;\n        } else {\n          this._setProperty(longhandProperty, longhandValue, priority);\n        }\n      }\n    }\n    if (hasPriority) {\n      this.removeProperty(property);\n    } else {\n      const shorthandValue = getPositionValue(shorthandValues, position);\n      this._setProperty(property, shorthandValue, priority);\n    }\n  }\n\n  /**\n   * Helper to handle position longhand updates affecting shorthands.\n   *\n   * @private\n   * @param {string} property - The property name.\n   * @param {string} value - The property value.\n   * @param {string} priority - The priority.\n   * @param {string} shorthandProperty - The shorthand property name.\n   */\n  _positionLonghandSetter(property, value, priority, shorthandProperty) {\n    if (!shorthandProperty || !shorthandProperties.has(shorthandProperty)) {\n      return;\n    }\n    const shorthandPriority = this._priorities.get(shorthandProperty);\n    this.removeProperty(shorthandProperty);\n    if (typeof priority !== \"string\") {\n      priority = this._priorities.get(property) ?? \"\";\n    }\n    this.removeProperty(property);\n    if (shorthandPriority && priority) {\n      this._setProperty(property, value);\n    } else {\n      this._setProperty(property, value, priority);\n    }\n    if (value && !hasVarFunc(value)) {\n      const longhandValues = [];\n      const { shorthandFor, position: shorthandPosition } = shorthandProperties.get(shorthandProperty);\n      for (const [longhandProperty] of shorthandFor) {\n        const longhandValue = this.getPropertyValue(longhandProperty);\n        const longhandPriority = this._priorities.get(longhandProperty) ?? \"\";\n        if (!longhandValue || longhandPriority !== priority) {\n          return;\n        }\n        longhandValues.push(longhandValue);\n      }\n      if (longhandValues.length === shorthandFor.size) {\n        const replacedValue = getPositionValue(longhandValues, shorthandPosition);\n        this._setProperty(shorthandProperty, replacedValue);\n      }\n    }\n  }\n}\n\n// TODO: Remove once the CSSStyleDeclaration is fully spec-compliant.\n// @see https://github.com/jsdom/cssstyle/issues/255#issuecomment-3630183207\nObject.defineProperties(CSSStyleDeclaration.prototype, propertyDescriptors);\n\nmodule.exports = {\n  CSSStyleDeclaration\n};\n","\"use strict\";\n\nconst { CSSStyleDeclaration } = require(\"./CSSStyleDeclaration\");\nconst propertyDefinitions = require(\"./generated/propertyDefinitions\");\n\nmodule.exports = {\n  CSSStyleDeclaration,\n  propertyDefinitions\n};\n","var CSSOM = {\n  /**\n   * Creates and configures a new CSSOM instance with the specified options.\n   * \n   * @param {Object} opts - Configuration options for the CSSOM instance\n   * @param {Object} [opts.globalObject] - Optional global object to be assigned to CSSOM objects prototype\n   * @returns {Object} A new CSSOM instance with the applied configuration\n   * @description\n   * This method creates a new instance of CSSOM and optionally\n   * configures CSSStyleSheet with a global object reference. When a globalObject is provided\n   * and CSSStyleSheet exists on the instance, it creates a new CSSStyleSheet constructor\n   * using a factory function and assigns the globalObject to its prototype's __globalObject property.\n   */\n  setup: function (opts) {\n    var instance = Object.create(this);\n    if (opts.globalObject) {\n      if (instance.CSSStyleSheet) {\n        var factoryCSSStyleSheet = createFunctionFactory(instance.CSSStyleSheet);\n        var CSSStyleSheet = factoryCSSStyleSheet();\n        CSSStyleSheet.prototype.__globalObject = opts.globalObject;\n\n        instance.CSSStyleSheet = CSSStyleSheet;\n      }\n    }\n    return instance;\n  }\n};\n\nfunction createFunctionFactory(fn) {\n  return function() {\n    // Create a new function that delegates to the original\n    var newFn = function() {\n      return fn.apply(this, arguments);\n    };\n\n    // Copy prototype chain\n    Object.setPrototypeOf(newFn, Object.getPrototypeOf(fn));\n\n    // Copy own properties\n    for (var key in fn) {\n      if (Object.prototype.hasOwnProperty.call(fn, key)) {\n        newFn[key] = fn[key];\n      }\n    }\n\n    // Clone the .prototype object for constructor-like behavior\n    if (fn.prototype) {\n      newFn.prototype = Object.create(fn.prototype);\n    }\n\n    return newFn;\n  };\n}\n\n//.CommonJS\nmodule.exports = CSSOM;\n///CommonJS\n\n","// Utility functions for CSSOM error handling\n\n/**\n * Gets the appropriate error constructor from the global object context.\n * Tries to find the error constructor from parentStyleSheet.__globalObject,\n * then from __globalObject, then falls back to the native constructor.\n * \n * @param {Object} context - The CSSOM object (rule, stylesheet, etc.)\n * @param {string} errorType - The error type ('TypeError', 'RangeError', 'DOMException', etc.)\n * @return {Function} The error constructor\n */\nfunction getErrorConstructor(context, errorType) {\n\t// Try parentStyleSheet.__globalObject first\n\tif (context.parentStyleSheet && context.parentStyleSheet.__globalObject && context.parentStyleSheet.__globalObject[errorType]) {\n\t\treturn context.parentStyleSheet.__globalObject[errorType];\n\t}\n\t\n\t// Try __parentStyleSheet (alternative naming)\n\tif (context.__parentStyleSheet && context.__parentStyleSheet.__globalObject && context.__parentStyleSheet.__globalObject[errorType]) {\n\t\treturn context.__parentStyleSheet.__globalObject[errorType];\n\t}\n\t\n\t// Try __globalObject on the context itself\n\tif (context.__globalObject && context.__globalObject[errorType]) {\n\t\treturn context.__globalObject[errorType];\n\t}\n\t\n\t// Fall back to native constructor\n\treturn (typeof global !== 'undefined' && global[errorType]) || \n\t       (typeof window !== 'undefined' && window[errorType]) || \n\t       eval(errorType);\n}\n\n/**\n * Creates an appropriate error with context-aware constructor.\n * \n * @param {Object} context - The CSSOM object (rule, stylesheet, etc.)\n * @param {string} errorType - The error type ('TypeError', 'RangeError', 'DOMException', etc.)\n * @param {string} message - The error message\n * @param {string} [name] - Optional name for DOMException\n */\nfunction createError(context, errorType, message, name) {\n\tvar ErrorConstructor = getErrorConstructor(context, errorType);\n\treturn new ErrorConstructor(message, name);\n}\n\n/**\n * Creates and throws an appropriate error with context-aware constructor.\n * \n * @param {Object} context - The CSSOM object (rule, stylesheet, etc.)\n * @param {string} errorType - The error type ('TypeError', 'RangeError', 'DOMException', etc.)\n * @param {string} message - The error message\n * @param {string} [name] - Optional name for DOMException\n */\nfunction throwError(context, errorType, message, name) {\n\tthrow createError(context, errorType, message, name);\n}\n\n/**\n * Throws a TypeError for missing required arguments.\n * \n * @param {Object} context - The CSSOM object\n * @param {string} methodName - The method name (e.g., 'appendRule')\n * @param {string} objectName - The object name (e.g., 'CSSKeyframesRule')\n * @param {number} [required=1] - Number of required arguments\n * @param {number} [provided=0] - Number of provided arguments\n */\nfunction throwMissingArguments(context, methodName, objectName, required, provided) {\n\trequired = required || 1;\n\tprovided = provided || 0;\n\tvar message = \"Failed to execute '\" + methodName + \"' on '\" + objectName + \"': \" + \n\t              required + \" argument\" + (required > 1 ? \"s\" : \"\") + \" required, but only \" + \n\t              provided + \" present.\";\n\tthrowError(context, 'TypeError', message);\n}\n\n/**\n * Throws a DOMException for parse errors.\n * \n * @param {Object} context - The CSSOM object\n * @param {string} methodName - The method name\n * @param {string} objectName - The object name\n * @param {string} rule - The rule that failed to parse\n * @param {string} [name='SyntaxError'] - The DOMException name\n */\nfunction throwParseError(context, methodName, objectName, rule, name) {\n\tvar message = \"Failed to execute '\" + methodName + \"' on '\" + objectName + \"': \" +\n\t              \"Failed to parse the rule '\" + rule + \"'.\";\n\tthrowError(context, 'DOMException', message, name || 'SyntaxError');\n}\n\n/**\n * Throws a DOMException for index errors.\n * \n * @param {Object} context - The CSSOM object\n * @param {string} methodName - The method name\n * @param {string} objectName - The object name\n * @param {number} index - The invalid index\n * @param {number} maxIndex - The maximum valid index\n * @param {string} [name='IndexSizeError'] - The DOMException name\n */\nfunction throwIndexError(context, methodName, objectName, index, maxIndex, name) {\n\tvar message = \"Failed to execute '\" + methodName + \"' on '\" + objectName + \"': \" +\n\t              \"The index provided (\" + index + \") is larger than the maximum index (\" + maxIndex + \").\";\n\tthrowError(context, 'DOMException', message, name || 'IndexSizeError');\n}\n\nvar errorUtils = {\n\tcreateError: createError,\n\tgetErrorConstructor: getErrorConstructor,\n\tthrowError: throwError,\n\tthrowMissingArguments: throwMissingArguments,\n\tthrowParseError: throwParseError,\n\tthrowIndexError: throwIndexError\n};\n\n//.CommonJS\nexports.errorUtils = errorUtils;\n///CommonJS","// Shared regex patterns for CSS parsing and validation\n// These patterns are compiled once and reused across multiple files for better performance\n\n// Regex patterns for CSS parsing\nvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g; // Match @keyframes and vendor-prefixed @keyframes\nvar beforeRulePortionRegExp = /{(?!.*{)|}(?!.*})|;(?!.*;)|\\*\\/(?!.*\\*\\/)/g; // Match the closest allowed character (a opening or closing brace, a semicolon or a comment ending) before the rule\nvar beforeRuleValidationRegExp = /^[\\s{};]*(\\*\\/\\s*)?$/; // Match that the portion before the rule is empty or contains only whitespace, semicolons, opening/closing braces, and optionally a comment ending (*/) followed by whitespace\nvar forwardRuleValidationRegExp = /(?:\\s|\\/\\*|\\{|\\()/; // Match that the rule is followed by any whitespace, a opening comment, a condition opening parenthesis or a opening brace\nvar forwardImportRuleValidationRegExp = /(?:\\s|\\/\\*|'|\")/; // Match that the rule is followed by any whitespace, an opening comment, a single quote or double quote\nvar forwardRuleClosingBraceRegExp = /{[^{}]*}|}/; // Finds the next closing brace of a rule block\nvar forwardRuleSemicolonAndOpeningBraceRegExp = /^.*?({|;)/; // Finds the next semicolon or opening brace after the at-rule\n\n// Regex patterns for CSS selector validation and parsing\nvar cssCustomIdentifierRegExp = /^(-?[_a-zA-Z]+(\\.[_a-zA-Z]+)*[_a-zA-Z0-9-]*)$/; // Validates a css custom identifier\nvar startsWithCombinatorRegExp = /^\\s*[>+~]/; // Checks if a selector starts with a CSS combinator (>, +, ~)\n\n/**\n * Parse `@page` selectorText for page name and pseudo-pages\n * Valid formats:\n * - (empty - no name, no pseudo-page)\n * - `:left`, `:right`, `:first`, `:blank` (pseudo-page only)\n * - `named` (named page only)\n * - `named:first` (named page with single pseudo-page)\n * - `named:first:left` (named page with multiple pseudo-pages)\n */\nvar atPageRuleSelectorRegExp = /^([^\\s:]+)?((?::\\w+)*)$/; // Validates @page rule selectors\n\n// Regex patterns for CSSImportRule parsing\nvar layerRegExp = /layer\\(([^)]*)\\)/; // Matches layer() function in @import\nvar layerRuleNameRegExp = /^(-?[_a-zA-Z]+(\\.[_a-zA-Z]+)*[_a-zA-Z0-9-]*)$/; // Validates layer name (same as custom identifier)\nvar doubleOrMoreSpacesRegExp = /\\s{2,}/g; // Matches two or more consecutive whitespace characters\n\n\n// Regex patterns for CSS escape sequences and identifiers\nvar startsWithHexEscapeRegExp = /^\\\\[0-9a-fA-F]/; // Checks if escape sequence starts with hex escape\nvar identStartCharRegExp = /[a-zA-Z_\\u00A0-\\uFFFF]/; // Valid identifier start character\nvar identCharRegExp = /^[a-zA-Z0-9_\\-\\u00A0-\\uFFFF\\\\]/; // Valid identifier character\nvar specialCharsNeedEscapeRegExp = /[!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~\\s]/; // Characters that need escaping\nvar combinatorOrSeparatorRegExp = /[\\s>+~,()]/; // Selector boundaries and combinators\nvar afterHexEscapeSeparatorRegExp = /[\\s>+~,(){}\\[\\]]/; // Characters that separate after hex escape\nvar trailingSpaceSeparatorRegExp = /[\\s>+~,(){}]/; // Characters that allow trailing space\nvar endsWithHexEscapeRegExp = /\\\\[0-9a-fA-F]{1,6}\\s+$/; // Matches selector ending with hex escape + space(s)\n\n/**\n * Regular expression to detect invalid characters in the value portion of a CSS style declaration.\n *\n * This regex matches a colon (:) that is not inside parentheses and not inside single or double quotes.\n * It is used to ensure that the value part of a CSS property does not contain unexpected colons,\n * which would indicate a malformed declaration (e.g., \"color: foo:bar;\" is invalid).\n *\n * The negative lookahead `(?![^(]*\\))` ensures that the colon is not followed by a closing\n * parenthesis without encountering an opening parenthesis, effectively ignoring colons inside\n * function-like values (e.g., `url(data:image/png;base64,...)`).\n *\n * The lookahead `(?=(?:[^'\"]|'[^']*'|\"[^\"]*\")*$)` ensures that the colon is not inside single or double quotes,\n * allowing colons within quoted strings (e.g., `content: \":\";` or `background: url(\"foo:bar.png\");`).\n *\n * Example:\n * - `color: red;`         // valid, does not match\n * - `background: url(data:image/png;base64,...);` // valid, does not match\n * - `content: ':';`       // valid, does not match\n * - `color: foo:bar;`     // invalid, matches\n */\nvar basicStylePropertyValueValidationRegExp = /:(?![^(]*\\))(?=(?:[^'\"]|'[^']*'|\"[^\"]*\")*$)/;\n\n// Attribute selector pattern: matches attribute-name operator value\n// Operators: =, ~=, |=, ^=, $=, *=\n// Rewritten to avoid ReDoS by using greedy match and trimming in JavaScript\nvar attributeSelectorContentRegExp = /^([^\\s=~|^$*]+)\\s*(~=|\\|=|\\^=|\\$=|\\*=|=)\\s*(.+)$/;\n\n// Selector validation patterns\nvar pseudoElementRegExp = /::[a-zA-Z][\\w-]*|:(before|after|first-line|first-letter)(?![a-zA-Z0-9_-])/; // Matches pseudo-elements\nvar invalidCombinatorLtGtRegExp = /<>/; // Invalid <> combinator\nvar invalidCombinatorDoubleGtRegExp = />>/; // Invalid >> combinator\nvar consecutiveCombinatorsRegExp = /[>+~]\\s*[>+~]/; // Invalid consecutive combinators\nvar invalidSlottedRegExp = /(?:^|[\\s>+~,\\[])slotted\\s*\\(/i; // Invalid slotted() without ::\nvar invalidPartRegExp = /(?:^|[\\s>+~,\\[])part\\s*\\(/i; // Invalid part() without ::\nvar invalidCueRegExp = /(?:^|[\\s>+~,\\[])cue\\s*\\(/i; // Invalid cue() without ::\nvar invalidCueRegionRegExp = /(?:^|[\\s>+~,\\[])cue-region\\s*\\(/i; // Invalid cue-region() without ::\nvar invalidNestingPattern = /&(?![.\\#\\[:>\\+~\\s])[a-zA-Z]/; // Invalid & followed by type selector\nvar emptyPseudoClassRegExp = /:(?:is|not|where|has)\\(\\s*\\)/; // Empty pseudo-class like :is()\nvar whitespaceNormalizationRegExp = /(['\"])(?:\\\\.|[^\\\\])*?\\1|(\\r\\n|\\r|\\n)/g; // Normalize newlines outside quotes\nvar newlineRemovalRegExp = /\\n/g; // Remove all newlines\nvar whitespaceAndDotRegExp = /[\\s.]/; // Matches whitespace or dot\nvar declarationOrOpenBraceRegExp = /[{;}]/; // Matches declaration separator or open brace\nvar ampersandRegExp = /&/; // Matches nesting selector\nvar hexEscapeSequenceRegExp = /^([0-9a-fA-F]{1,6})[ \\t\\r\\n\\f]?/; // Matches hex escape sequence (1-6 hex digits optionally followed by whitespace)\nvar attributeCaseFlagRegExp = /^(.+?)\\s+([is])$/i; // Matches case-sensitivity flag at end of attribute value\nvar prependedAmpersandRegExp = /^&\\s+[:\\\\.]/; // Matches prepended ampersand pattern (& followed by space and : or .)\nvar openBraceGlobalRegExp = /{/g; // Matches opening braces (global)\nvar closeBraceGlobalRegExp = /}/g; // Matches closing braces (global)\nvar scopePreludeSplitRegExp = /\\s*\\)\\s*to\\s+\\(/; // Splits scope prelude by \") to (\"\nvar leadingWhitespaceRegExp = /^\\s+/; // Matches leading whitespace (used to implement a ES5-compliant alternative to trimStart())\nvar doubleQuoteRegExp = /\"/g; // Match all double quotes (for escaping in attribute values)\nvar backslashRegExp = /\\\\/g; // Match all backslashes (for escaping in attribute values)\n\nvar regexPatterns = {\n\t// Parsing patterns\n\tatKeyframesRegExp: atKeyframesRegExp,\n\tbeforeRulePortionRegExp: beforeRulePortionRegExp,\n\tbeforeRuleValidationRegExp: beforeRuleValidationRegExp,\n\tforwardRuleValidationRegExp: forwardRuleValidationRegExp,\n\tforwardImportRuleValidationRegExp: forwardImportRuleValidationRegExp,\n\tforwardRuleClosingBraceRegExp: forwardRuleClosingBraceRegExp,\n\tforwardRuleSemicolonAndOpeningBraceRegExp: forwardRuleSemicolonAndOpeningBraceRegExp,\n\t\n\t// Selector validation patterns\n\tcssCustomIdentifierRegExp: cssCustomIdentifierRegExp,\n\tstartsWithCombinatorRegExp: startsWithCombinatorRegExp,\n\tatPageRuleSelectorRegExp: atPageRuleSelectorRegExp,\n\t\n\t// Parsing patterns used in CSSImportRule\n\tlayerRegExp: layerRegExp,\n\tlayerRuleNameRegExp: layerRuleNameRegExp,\n\tdoubleOrMoreSpacesRegExp: doubleOrMoreSpacesRegExp,\n\t\n\t// Escape sequence and identifier patterns\n\tstartsWithHexEscapeRegExp: startsWithHexEscapeRegExp,\n\tidentStartCharRegExp: identStartCharRegExp,\n\tidentCharRegExp: identCharRegExp,\n\tspecialCharsNeedEscapeRegExp: specialCharsNeedEscapeRegExp,\n\tcombinatorOrSeparatorRegExp: combinatorOrSeparatorRegExp,\n\tafterHexEscapeSeparatorRegExp: afterHexEscapeSeparatorRegExp,\n\ttrailingSpaceSeparatorRegExp: trailingSpaceSeparatorRegExp,\n\tendsWithHexEscapeRegExp: endsWithHexEscapeRegExp,\n\n\t// Basic style property value validation\n\tbasicStylePropertyValueValidationRegExp: basicStylePropertyValueValidationRegExp,\n\n\t// Attribute selector patterns\n\tattributeSelectorContentRegExp: attributeSelectorContentRegExp,\n\n\t// Selector validation patterns\n\tpseudoElementRegExp: pseudoElementRegExp,\n\tinvalidCombinatorLtGtRegExp: invalidCombinatorLtGtRegExp,\n\tinvalidCombinatorDoubleGtRegExp: invalidCombinatorDoubleGtRegExp,\n\tconsecutiveCombinatorsRegExp: consecutiveCombinatorsRegExp,\n\tinvalidSlottedRegExp: invalidSlottedRegExp,\n\tinvalidPartRegExp: invalidPartRegExp,\n\tinvalidCueRegExp: invalidCueRegExp,\n\tinvalidCueRegionRegExp: invalidCueRegionRegExp,\n\tinvalidNestingPattern: invalidNestingPattern,\n\temptyPseudoClassRegExp: emptyPseudoClassRegExp,\n\twhitespaceNormalizationRegExp: whitespaceNormalizationRegExp,\n\tnewlineRemovalRegExp: newlineRemovalRegExp,\n\twhitespaceAndDotRegExp: whitespaceAndDotRegExp,\n\tdeclarationOrOpenBraceRegExp: declarationOrOpenBraceRegExp,\n\tampersandRegExp: ampersandRegExp,\n\thexEscapeSequenceRegExp: hexEscapeSequenceRegExp,\n\tattributeCaseFlagRegExp: attributeCaseFlagRegExp,\n\tprependedAmpersandRegExp: prependedAmpersandRegExp,\n\topenBraceGlobalRegExp: openBraceGlobalRegExp,\n\tcloseBraceGlobalRegExp: closeBraceGlobalRegExp,\n\tscopePreludeSplitRegExp: scopePreludeSplitRegExp,\n\tleadingWhitespaceRegExp: leadingWhitespaceRegExp,\n\tdoubleQuoteRegExp: doubleQuoteRegExp,\n\tbackslashRegExp: backslashRegExp\n};\n\n//.CommonJS\nexports.regexPatterns = regexPatterns;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tvar values = value.split(\",\").filter(function(text){\n\t\t\t\treturn !!text;\n\t\t\t});\n\t\t\tvar length = this.length = values.length;\n\t\t\tfor (var i=0; i<length; i++) {\n\t\t\t\tthis[i] = values[i].trim();\n\t\t\t}\n\t\t} else if (value === null) {\n\t\t\tvar length = this.length;\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tdelete this[i];\n\t\t\t}\n\t\t\tthis.length = 0;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t},\n\n\titem: function(index) {\n\t\treturn this[index] || null;\n\t},\n\n\ttoString: function() {\n\t\treturn this.mediaText;\n\t}\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.__href = null;\n\tthis.__ownerNode = null;\n\tthis.__title = null;\n\tthis.__media = new CSSOM.MediaList();\n\tthis.__parentStyleSheet = null;\n\tthis.disabled = false;\n};\n\nObject.defineProperties(CSSOM.StyleSheet.prototype, {\n\ttype: {\n\t\tget: function() {\n\t\t\treturn \"text/css\";\n\t\t}\n\t},\n\thref: {\n\t\tget: function() {\n\t\t\treturn this.__href;\n\t\t}\n\t},\n\townerNode: {\n\t\tget: function() {\n\t\t\treturn this.__ownerNode;\n\t\t}\n\t},\n\ttitle: {\n\t\tget: function() {\n\t\t\treturn this.__title;\n\t\t}\n\t},\n\tmedia: {\n\t\tget: function() {\n\t\t\treturn this.__media;\n\t\t},\n\t\tset: function(value) {\n\t\t\tif (typeof value === \"string\") {\n\t\t\t\tthis.__media.mediaText = value;\n\t\t\t} else {\n\t\t\t\tthis.__media = value;\n\t\t\t}\n\t\t}\n\t},\n\tparentStyleSheet: {\n\t\tget: function() {\n\t\t\treturn this.__parentStyleSheet;\n\t\t}\n\t}\n});\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssrulelist-interface\n */\nCSSOM.CSSRuleList = function CSSRuleList(){\n  var arr = new Array();\n  Object.setPrototypeOf(arr, CSSOM.CSSRuleList.prototype);\n  return arr;\n};\n\nCSSOM.CSSRuleList.prototype = Object.create(Array.prototype);\nCSSOM.CSSRuleList.prototype.constructor = CSSOM.CSSRuleList;\n\nCSSOM.CSSRuleList.prototype.item = function(index) {\n    return this[index] || null;\n};\n\n\n//.CommonJS\nexports.CSSRuleList = CSSOM.CSSRuleList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n  this.__parentRule = null;\n  this.__parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\nCSSOM.CSSRule.CONTAINER_RULE = 17;\nCSSOM.CSSRule.LAYER_BLOCK_RULE = 18;\nCSSOM.CSSRule.STARTING_STYLE_RULE = 1002;\n\nObject.defineProperties(CSSOM.CSSRule.prototype, {\n\n  constructor: { value: CSSOM.CSSRule },\n\n  cssRule: {\n    value: \"\",\n    configurable: true,\n    enumerable: true\n  },\n\n  cssText: {\n    get: function() {\n      // Default getter: subclasses should override this\n      return \"\";\n    },\n    set: function(cssText) {\n      return cssText;\n    }\n  },\n\n  parentRule: {\n    get: function() {\n      return this.__parentRule\n    }\n  },\n\n  parentStyleSheet: {\n    get: function() {\n      return this.__parentStyleSheet\n    }\n  },\n  \n  UNKNOWN_RULE: { value: 0, enumerable: true }, // obsolet\n  STYLE_RULE: { value: 1, enumerable: true },\n  CHARSET_RULE: { value: 2, enumerable: true }, // obsolet\n  IMPORT_RULE: { value: 3, enumerable: true },\n  MEDIA_RULE: { value: 4, enumerable: true },\n  FONT_FACE_RULE: { value: 5, enumerable: true },\n  PAGE_RULE: { value: 6, enumerable: true },\n  KEYFRAMES_RULE: { value: 7, enumerable: true },\n  KEYFRAME_RULE: { value: 8, enumerable: true },\n  MARGIN_RULE: { value: 9, enumerable: true },\n  NAMESPACE_RULE: { value: 10, enumerable: true },\n  COUNTER_STYLE_RULE: { value: 11, enumerable: true },\n  SUPPORTS_RULE: { value: 12, enumerable: true },\n  DOCUMENT_RULE: { value: 13, enumerable: true },\n  FONT_FEATURE_VALUES_RULE: { value: 14, enumerable: true },\n  VIEWPORT_RULE: { value: 15, enumerable: true },\n  REGION_STYLE_RULE: { value: 16, enumerable: true },\n  CONTAINER_RULE: { value: 17, enumerable: true },\n  LAYER_BLOCK_RULE: { value: 18, enumerable: true },\n  STARTING_STYLE_RULE: { value: 1002, enumerable: true },\n});\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tparse: require('./parse').parse\n};\nvar errorUtils = require(\"./errorUtils\").errorUtils;\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.__cssRules = new CSSOM.CSSRuleList();\n};\n\nCSSOM.CSSGroupingRule.prototype  = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\nObject.setPrototypeOf(CSSOM.CSSGroupingRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSGroupingRule.prototype, \"cssRules\", {\n\tget: function() {\n\t\treturn this.__cssRules;\n\t}\n});\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n *   cssGroupingRule.cssText\n *   -> \"body{margin:0;}\"\n *   cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n *   -> 1\n *   cssGroupingRule.cssText\n *   -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (rule === undefined && index === undefined) {\n\t\terrorUtils.throwMissingArguments(this, 'insertRule', this.constructor.name);\n\t}\n\tif (index === void 0) {\n\t\tindex = 0;\n\t}\n\tindex = Number(index);\n\tif (index < 0) {\n\t\tindex = 4294967296 + index;\n\t}\n\tif (index > this.cssRules.length) {\n\t\terrorUtils.throwIndexError(this, 'insertRule', this.constructor.name, index, this.cssRules.length);\n\t}\n\tvar ruleToParse = processedRuleToParse = String(rule);\n\truleToParse = ruleToParse.trim().replace(/^\\/\\*[\\s\\S]*?\\*\\/\\s*/, \"\");\n\tvar isNestedSelector = this.constructor.name === \"CSSStyleRule\";\n\tif (isNestedSelector === false) {\n\t\tvar currentRule = this;\n\t\twhile (currentRule.parentRule) {\n\t\t\tcurrentRule = currentRule.parentRule;\n\t\t\tif (currentRule.constructor.name === \"CSSStyleRule\") {\n\t\t\t\tisNestedSelector = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (isNestedSelector) {\n\t\tprocessedRuleToParse = 's { n { } ' + ruleToParse + '}';\n\t}\n\tvar isScopeRule = this.constructor.name === \"CSSScopeRule\";\n\tif (isScopeRule) {\n\t\tif (isNestedSelector) {\n\t\t\tprocessedRuleToParse = 's { ' + '@scope {' + ruleToParse + '}}';\n\t\t} else {\n\t\t\tprocessedRuleToParse = '@scope {' + ruleToParse + '}';\n\t\t}\n\t}\n\tvar parsedRules = new CSSOM.CSSRuleList();\n\tCSSOM.parse(processedRuleToParse, {\n\t\tstyleSheet: this.parentStyleSheet,\n\t\tcssRules: parsedRules\n\t});\n\tif (isScopeRule) {\n\t\tif (isNestedSelector) {\n\t\t\tparsedRules = parsedRules[0].cssRules[0].cssRules;\n\t\t} else {\n\t\t\tparsedRules = parsedRules[0].cssRules\n\t\t}\n\t}\n\tif (isNestedSelector) {\n\t\tparsedRules = parsedRules[0].cssRules.slice(1);\n\t}\n\tif (parsedRules.length !== 1) {\n\t\tif (isNestedSelector && parsedRules.length === 0 && ruleToParse.indexOf('@font-face') === 0) {\n\t\t\terrorUtils.throwError(this, 'DOMException', \n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': \" +\n\t\t\t\t\"Only conditional nested group rules, style rules, @scope rules, @apply rules, and nested declaration rules may be nested.\",\n\t\t\t\t'HierarchyRequestError');\n\t\t} else {\n\t\t\terrorUtils.throwParseError(this, 'insertRule', this.constructor.name, ruleToParse, 'SyntaxError');\n\t\t}\n\t}\n\tvar cssRule = parsedRules[0];\n\n\tif (cssRule.constructor.name === 'CSSNestedDeclarations' && cssRule.style.length === 0) {\n\t\terrorUtils.throwParseError(this, 'insertRule', this.constructor.name, ruleToParse, 'SyntaxError');\t\n\t}\n\t\n\t// Check for rules that cannot be inserted inside a CSSGroupingRule\n\tif (cssRule.constructor.name === 'CSSImportRule' || cssRule.constructor.name === 'CSSNamespaceRule') {\n\t\tvar ruleKeyword = cssRule.constructor.name === 'CSSImportRule' ? '@import' : '@namespace';\n\t\terrorUtils.throwError(this, 'DOMException', \n\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': \" +\n\t\t\t\"'\" + ruleKeyword + \"' rules cannot be inserted inside a group rule.\",\n\t\t\t'HierarchyRequestError');\n\t}\n\t\n\t// Check for CSSLayerStatementRule (@layer statement rules)\n\tif (cssRule.constructor.name === 'CSSLayerStatementRule') {\n\t\terrorUtils.throwParseError(this, 'insertRule', this.constructor.name, ruleToParse, 'SyntaxError');\n\t}\n\t\n\tcssRule.__parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n *   cssGroupingRule.cssText\n *   -> \"img{border:none;}body{margin:0;}\"\n *   cssGroupingRule.deleteRule(0)\n *   cssGroupingRule.cssText\n *   -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index === undefined) {\n\t\terrorUtils.throwMissingArguments(this, 'deleteRule', this.constructor.name);\n\t}\n\tindex = Number(index);\n\tif (index < 0) {\n\t\tindex = 4294967296 + index;\n\t}\n\tif (index >= this.cssRules.length) {\n\t\terrorUtils.throwIndexError(this, 'deleteRule', this.constructor.name, index, this.cssRules.length);\n\t}\n\tthis.cssRules[index].__parentRule = null;\n\tthis.cssRules[index].__parentStyleSheet = null;\n\tthis.cssRules.splice(index, 1);\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n};\nvar regexPatterns = require(\"./regexPatterns\").regexPatterns;\n// Use cssstyle if available\ntry {\n\tCSSOM.CSSStyleDeclaration = require(\"cssstyle\").CSSStyleDeclaration;\n} catch (e) {\n\t// ignore\n}\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSGroupingRule.call(this);\n\tthis.__selectorText = \"\";\n\tthis.__style = new CSSOM.CSSStyleDeclaration();\n\tthis.__style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\n\nObject.setPrototypeOf(CSSOM.CSSStyleRule, CSSOM.CSSGroupingRule);\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"type\", {\n\tvalue: 1,\n\twritable: false\n});\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"selectorText\", {\n\tget: function() {\n\t\treturn this.__selectorText;\t\n\t},\n\tset: function(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\t// Don't trim if the value ends with a hex escape sequence followed by space\n\t\t\t// (e.g., \".\\31 \" where the space is part of the escape terminator)\n\t\t\tvar endsWithHexEscapeRegExp = regexPatterns.endsWithHexEscapeRegExp;\n\t\t\tvar endsWithEscape = endsWithHexEscapeRegExp.test(value);\n\t\t\tvar trimmedValue = endsWithEscape ? value.replace(/\\s+$/, ' ').trimStart() : value.trim();\n\n\t\t\tif (trimmedValue === '') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// TODO: Setting invalid selectorText should be ignored\n\t\t\t// There are some validations already on lib/parse.js\n\t\t\t// but the same validations should be applied here.\n\t\t\t// Check if we can move these validation logic to a shared function.\n\n\t\t\tthis.__selectorText = trimmedValue;\n\t\t}\n\t},\n\tconfigurable: true\n});\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"style\", {\n\tget: function() {\n\t\treturn this.__style;\t\n\t},\n\tset: function(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.__style.cssText = value;\n\t\t} else {\n\t\t\tthis.__style = value;\n\t\t}\n\t},\n\tconfigurable: true\n});\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\tvar values = \"\";\n\t\t\tif (this.cssRules.length) {\n\t\t\t\tvar valuesArr = [\" {\"];\n\t\t\t\tthis.style.cssText && valuesArr.push(this.style.cssText);\n\t\t\t\tvaluesArr.push(this.cssRules.reduce(function(acc, rule){ \n\t\t\t\t\tif (rule.cssText !== \"\") {\n\t\t\t\t\t\tacc.push(rule.cssText);\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t}, []).join(\"\\n  \"));\n\t\t\t\tvalues = valuesArr.join(\"\\n  \") + \"\\n}\";\n\t\t\t} else {\n\t\t\t\tvalues = \" {\" + (this.style.cssText ? \" \" + this.style.cssText : \"\") + \" }\";\n\t\t\t}\n\t\t\ttext = this.selectorText + values;\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t}\n});\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tMediaList: require(\"./MediaList\").MediaList,\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n};\nvar errorUtils = require(\"./errorUtils\").errorUtils;\n///CommonJS\n\n\n/**\n * @constructor\n * @param {CSSStyleSheetInit} [opts] - CSSStyleSheetInit options.\n * @param {string} [opts.baseURL] - The base URL of the stylesheet.\n * @param {boolean} [opts.disabled] - The disabled attribute of the stylesheet.\n * @param {MediaList | string} [opts.media] - The media attribute of the stylesheet.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet(opts) {\n\tCSSOM.StyleSheet.call(this);\n\tthis.__constructed = true;\n\tthis.__cssRules = new CSSOM.CSSRuleList();\n\tthis.__ownerRule = null; \n\n\tif (opts && typeof opts === \"object\") {\n\t\tif (opts.baseURL && typeof opts.baseURL === \"string\") {\n\t\t\tthis.__baseURL = opts.baseURL;\n\t\t}\n\t\tif (opts.media && typeof opts.media === \"string\") {\n\t\t\tthis.media.mediaText = opts.media;\n\t\t}\n\t\tif (typeof opts.disabled === \"boolean\") {\n\t\t\tthis.disabled = opts.disabled;\n\t\t}\n\t}\n};\n\n\nCSSOM.CSSStyleSheet.prototype = Object.create(CSSOM.StyleSheet.prototype);\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\nObject.setPrototypeOf(CSSOM.CSSStyleSheet, CSSOM.StyleSheet);\n\nObject.defineProperty(CSSOM.CSSStyleSheet.prototype, \"cssRules\", {\n\tget: function() {\n\t\treturn this.__cssRules;\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSStyleSheet.prototype, \"rules\", {\n\tget: function() {\n\t\treturn this.__cssRules;\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSStyleSheet.prototype, \"ownerRule\", {\n\tget: function() {\n\t\treturn this.__ownerRule;\n\t}\n});\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n *   sheet = new Sheet(\"body {margin: 0}\")\n *   sheet.toString()\n *   -> \"body{margin:0;}\"\n *   sheet.insertRule(\"img {border: none}\", 0)\n *   -> 0\n *   sheet.toString()\n *   -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} [index=0]\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (rule === undefined && index === undefined) {\n\t\terrorUtils.throwMissingArguments(this, 'insertRule', this.constructor.name);\n\t}\n\tif (index === void 0) {\n\t\tindex = 0;\n\t}\n\tindex = Number(index);\n\tif (index < 0) {\n\t\tindex = 4294967296 + index;\n\t}\n\tif (index > this.cssRules.length) {\n\t\terrorUtils.throwIndexError(this, 'insertRule', this.constructor.name, index, this.cssRules.length);\n\t}\n\t\n\tvar ruleToParse = String(rule);\n\tvar parseErrors = [];\n\tvar parsedSheet = CSSOM.parse(ruleToParse, undefined, function(err) {\n\t\tparseErrors.push(err);\n\t} );\n\tif (parsedSheet.cssRules.length !== 1) {\n\t\terrorUtils.throwParseError(this, 'insertRule', this.constructor.name, ruleToParse, 'SyntaxError');\n\t}\n\tvar cssRule = parsedSheet.cssRules[0];\n\t\n\t// Helper function to find the last index of a specific rule constructor\n\tfunction findLastIndexOfConstructor(rules, constructorName) {\n\t\tfor (var i = rules.length - 1; i >= 0; i--) {\n\t\t\tif (rules[i].constructor.name === constructorName) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\t\n\t// Helper function to find the first index of a rule that's NOT of specified constructors\n\tfunction findFirstNonConstructorIndex(rules, constructorNames) {\n\t\tfor (var i = 0; i < rules.length; i++) {\n\t\t\tif (constructorNames.indexOf(rules[i].constructor.name) === -1) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn rules.length;\n\t}\n\t\n\t// Validate rule ordering based on CSS specification\n\tif (cssRule.constructor.name === 'CSSImportRule') {\n\t\tif (this.__constructed === true) {\n\t\t\terrorUtils.throwError(this, 'DOMException',\n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': Can't insert @import rules into a constructed stylesheet.\",\n\t\t\t\t'SyntaxError');\n\t\t}\n\t\t// @import rules cannot be inserted after @layer rules that already exist\n\t\t// They can only be inserted at the beginning or after other @import rules\n\t\tvar firstLayerIndex = findFirstNonConstructorIndex(this.cssRules, ['CSSImportRule']);\n\t\tif (firstLayerIndex < this.cssRules.length && this.cssRules[firstLayerIndex].constructor.name === 'CSSLayerStatementRule' && index > firstLayerIndex) {\n\t\t\terrorUtils.throwError(this, 'DOMException',\n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': Failed to insert the rule.\",\n\t\t\t\t'HierarchyRequestError');\n\t\t}\n\t\t\n\t\t// Also cannot insert after @namespace or other rules\n\t\tvar firstNonImportIndex = findFirstNonConstructorIndex(this.cssRules, ['CSSImportRule']);\n\t\tif (index > firstNonImportIndex && firstNonImportIndex < this.cssRules.length && \n\t\t    this.cssRules[firstNonImportIndex].constructor.name !== 'CSSLayerStatementRule') {\n\t\t\terrorUtils.throwError(this, 'DOMException',\n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': Failed to insert the rule.\",\n\t\t\t\t'HierarchyRequestError');\n\t\t}\n\t} else if (cssRule.constructor.name === 'CSSNamespaceRule') {\n\t\t// @namespace rules can come after @layer and @import, but before any other rules\n\t\t// They cannot come before @import rules\n\t\tvar firstImportIndex = -1;\n\t\tfor (var i = 0; i < this.cssRules.length; i++) {\n\t\t\tif (this.cssRules[i].constructor.name === 'CSSImportRule') {\n\t\t\t\tfirstImportIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar firstNonImportNamespaceIndex = findFirstNonConstructorIndex(this.cssRules, [\n\t\t\t'CSSLayerStatementRule', \n\t\t\t'CSSImportRule', \n\t\t\t'CSSNamespaceRule'\n\t\t]);\n\t\t\n\t\t// Cannot insert before @import rules\n\t\tif (firstImportIndex !== -1 && index <= firstImportIndex) {\n\t\t\terrorUtils.throwError(this, 'DOMException',\n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': Failed to insert the rule.\",\n\t\t\t\t'HierarchyRequestError');\n\t\t}\n\t\t\n\t\t// Cannot insert if there are already non-special rules\n\t\tif (firstNonImportNamespaceIndex < this.cssRules.length) {\n\t\t\terrorUtils.throwError(this, 'DOMException',\n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': Failed to insert the rule.\",\n\t\t\t\t'InvalidStateError');\n\t\t}\n\t\t\n\t\t// Cannot insert after other types of rules\n\t\tif (index > firstNonImportNamespaceIndex) {\n\t\t\terrorUtils.throwError(this, 'DOMException',\n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': Failed to insert the rule.\",\n\t\t\t\t'HierarchyRequestError');\n\t\t}\n\n\t\t\n\t} else if (cssRule.constructor.name === 'CSSLayerStatementRule') {\n\t\t// @layer statement rules can be inserted anywhere before @import and @namespace\n\t\t// No additional restrictions beyond what's already handled\n\t} else {\n\t\t// Any other rule cannot be inserted before @import and @namespace\n\t\tvar firstNonSpecialRuleIndex = findFirstNonConstructorIndex(this.cssRules, [\n\t\t\t'CSSLayerStatementRule',\n\t\t\t'CSSImportRule',\n\t\t\t'CSSNamespaceRule'\n\t\t]);\n\t\t\n\t\tif (index < firstNonSpecialRuleIndex) {\n\t\t\terrorUtils.throwError(this, 'DOMException',\n\t\t\t\t\"Failed to execute 'insertRule' on '\" + this.constructor.name + \"': Failed to insert the rule.\",\n\t\t\t\t'HierarchyRequestError');\n\t\t}\n\n\t\tif (parseErrors.filter(function(error) { return !error.isNested; }).length !== 0) {\n\t\t\terrorUtils.throwParseError(this, 'insertRule', this.constructor.name, ruleToParse, 'SyntaxError');\n\t\t}\n\t}\n\t\n\tcssRule.__parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\nCSSOM.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index) {\n\tif (index === void 0) {\n\t\tindex = this.cssRules.length;\n\t}\n\tthis.insertRule(selector + \"{\" + styleBlock + \"}\", index);\n\treturn -1;\n};\n\n/**\n * Used to delete a rule from the style sheet.\n *\n *   sheet = new Sheet(\"img{border:none} body{margin:0}\")\n *   sheet.toString()\n *   -> \"img{border:none;}body{margin:0;}\"\n *   sheet.deleteRule(0)\n *   sheet.toString()\n *   -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index === undefined) {\n\t\terrorUtils.throwMissingArguments(this, 'deleteRule', this.constructor.name);\n\t}\n\tindex = Number(index);\n\tif (index < 0) {\n\t\tindex = 4294967296 + index;\n\t}\n\tif (index >= this.cssRules.length) {\n\t\terrorUtils.throwIndexError(this, 'deleteRule', this.constructor.name, index, this.cssRules.length);\n\t}\n\tif (this.cssRules[index]) {\t\t\n\t\tif (this.cssRules[index].constructor.name == \"CSSNamespaceRule\") {\n\t\t\tvar shouldContinue = this.cssRules.every(function (rule) {\n\t\t\t\treturn ['CSSImportRule','CSSLayerStatementRule','CSSNamespaceRule'].indexOf(rule.constructor.name) !== -1\n\t\t\t});\n\t\t\tif (!shouldContinue) {\n\t\t\t\terrorUtils.throwError(this, 'DOMException', \"Failed to execute 'deleteRule' on '\" + this.constructor.name + \"': Failed to delete rule.\", \"InvalidStateError\");\n\t\t\t}\n\t\t}\n\t\tif (this.cssRules[index].constructor.name == \"CSSImportRule\") {\n\t\t\tthis.cssRules[index].styleSheet.__parentStyleSheet = null;\n\t\t}\n\n\t\tthis.cssRules[index].__parentStyleSheet = null;\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\nCSSOM.CSSStyleSheet.prototype.removeRule = function(index) {\n\tif (index === void 0) {\n\t\tindex = 0;\n\t}\n\tthis.deleteRule(index);\n};\n\n\n/**\n * Replaces the rules of a {@link CSSStyleSheet}\n * \n * @returns a promise\n * @see https://www.w3.org/TR/cssom-1/#dom-cssstylesheet-replace\n */\nCSSOM.CSSStyleSheet.prototype.replace = function(text) {\n\tvar _Promise;\n\tif (this.__globalObject && this.__globalObject['Promise']) {\n\t\t_Promise = this.__globalObject['Promise'];\n\t} else {\n\t\t_Promise = Promise;\n\t}\n\tvar _setTimeout;\n\tif (this.__globalObject && this.__globalObject['setTimeout']) {\n\t\t_setTimeout = this.__globalObject['setTimeout'];\n\t} else {\n\t\t_setTimeout = setTimeout;\n\t}\n\tvar sheet = this;\n\treturn new _Promise(function (resolve, reject) {\n\t\t// If the constructed flag is not set, or the disallow modification flag is set, throw a NotAllowedError DOMException.\n\t\tif (!sheet.__constructed || sheet.__disallowModification) {\n\t\t\treject(errorUtils.createError(sheet, 'DOMException',\n\t\t\t\t\"Failed to execute 'replaceSync' on '\" + sheet.constructor.name + \"': Not allowed.\",\n\t\t\t\t'NotAllowedError'));\n\t\t}\n\t\t// Set the disallow modification flag.\n\t\tsheet.__disallowModification = true;\n\n\t\t// In parallel, do these steps:\n\t\t_setTimeout(function() {\n\t\t\t// Let rules be the result of running parse a stylesheet's contents from text.\n\t\t\tvar rules = new CSSOM.CSSRuleList();\n\t\t\tCSSOM.parse(text, { styleSheet: sheet, cssRules: rules });\n\t\t\t// If rules contains one or more @import rules, remove those rules from rules.\n\t\t\tvar i = 0;\n\t\t\twhile (i < rules.length) {\n\t\t\t\tif (rules[i].constructor.name === 'CSSImportRule') {\n\t\t\t\t\trules.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Set sheet's CSS rules to rules.\n\t\t\tsheet.__cssRules.splice.apply(sheet.__cssRules, [0, sheet.__cssRules.length].concat(rules));\n\t\t\t// Unset sheet’s disallow modification flag.\n\t\t\tdelete sheet.__disallowModification;\n\t\t\t// Resolve promise with sheet.\n\t\t\tresolve(sheet);\n\t\t})\n\t});\n}\n\n/**\n * Synchronously replaces the rules of a {@link CSSStyleSheet}\n * \n * @see https://www.w3.org/TR/cssom-1/#dom-cssstylesheet-replacesync\n */\nCSSOM.CSSStyleSheet.prototype.replaceSync = function(text) {\n\tvar sheet = this;\n\t// If the constructed flag is not set, or the disallow modification flag is set, throw a NotAllowedError DOMException.\n\tif (!sheet.__constructed || sheet.__disallowModification) {\n\t\terrorUtils.throwError(sheet, 'DOMException',\n\t\t\t\"Failed to execute 'replaceSync' on '\" + sheet.constructor.name + \"': Not allowed.\",\n\t\t\t'NotAllowedError');\n\t}\n\t// Let rules be the result of running parse a stylesheet's contents from text.\n\tvar rules = new CSSOM.CSSRuleList();\n\tCSSOM.parse(text, { styleSheet: sheet, cssRules: rules });\n\t// If rules contains one or more @import rules, remove those rules from rules.\n\tvar i = 0;\n\twhile (i < rules.length) {\n\t\tif (rules[i].constructor.name === 'CSSImportRule') {\n\t\t\trules.splice(i, 1);\n\t\t} else {\n\t\t\ti++;\n\t\t}\n\t}\n\t// Set sheet's CSS rules to rules.\n\tsheet.__cssRules.splice.apply(sheet.__cssRules, [0, sheet.__cssRules.length].concat(rules));\n}\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n  CSSRule: require(\"./CSSRule\").CSSRule,\n  CSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n// Use cssstyle if available\ntry {\n\tCSSOM.CSSStyleDeclaration = require(\"cssstyle\").CSSStyleDeclaration;\n} catch (e) {\n\t// ignore\n}\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-nesting-1/\n */\nCSSOM.CSSNestedDeclarations = function CSSNestedDeclarations() {\n  CSSOM.CSSRule.call(this);\n  this.__style = new CSSOM.CSSStyleDeclaration();\n  this.__style.parentRule = this;\n};\n\nCSSOM.CSSNestedDeclarations.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSNestedDeclarations.prototype.constructor = CSSOM.CSSNestedDeclarations;\n\nObject.setPrototypeOf(CSSOM.CSSNestedDeclarations, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSNestedDeclarations.prototype, \"type\", {\n  value: 0,\n  writable: false\n});\n\nObject.defineProperty(CSSOM.CSSNestedDeclarations.prototype, \"style\", {\n\tget: function() {\n\t\treturn this.__style;\t\n\t},\n\tset: function(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.__style.cssText = value;\n\t\t} else {\n\t\t\tthis.__style = value;\n\t\t}\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSNestedDeclarations.prototype, \"cssText\", {\n  get: function () {\n    return this.style.cssText;\n  }\n});\n\n//.CommonJS\nexports.CSSNestedDeclarations = CSSOM.CSSNestedDeclarations;\n///CommonJS","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\nvar regexPatterns = require(\"./regexPatterns\").regexPatterns;\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.__href = \"\";\n\tthis.__media = new CSSOM.MediaList();\n  this.__layerName = null;\n  this.__supportsText = null;\n\tthis.__styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\n\nObject.setPrototypeOf(CSSOM.CSSImportRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"type\", {\n\tvalue: 3,\n\twritable: false\n});\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n  get: function() {\n    var mediaText = this.media.mediaText;\n    return \"@import url(\\\"\" + this.href.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') + \"\\\")\" + (this.layerName !== null ? \" layer\" + (this.layerName && \"(\" + this.layerName + \")\") : \"\" ) + (this.supportsText ? \" supports(\" + this.supportsText + \")\" : \"\" ) + (mediaText ? \" \" + mediaText : \"\") + \";\";\n  }\n});\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"href\", {\n  get: function() {\n    return this.__href;\n  }\n});\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"media\", {\n  get: function() {\n    return this.__media;\n  },\n\tset: function(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.__media.mediaText = value;\n\t\t} else {\n\t\t\tthis.__media = value;\n\t\t}\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"layerName\", {\n  get: function() {\n    return this.__layerName;\n  }\n});\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"supportsText\", {\n  get: function() {\n    return this.__supportsText;\n  }\n});\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"styleSheet\", {\n  get: function() {\n    return this.__styleSheet;\n  }\n});\n\n/**\n * NON-STANDARD\n * Rule text parser.\n * @param {string} cssText\n */\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"parse\", {\n  value: function(cssText) {\n    var i = 0;\n\n    /**\n     * @import url(partial.css) screen, handheld;\n     *        ||               |\n     *        after-import     media\n     *         |\n     *         url\n     */\n    var state = '';\n\n    var buffer = '';\n    var index;\n\n    var layerRegExp = regexPatterns.layerRegExp;\n    var layerRuleNameRegExp = regexPatterns.layerRuleNameRegExp;\n    var doubleOrMoreSpacesRegExp = regexPatterns.doubleOrMoreSpacesRegExp;\n    \n    /**\n     * Extracts the content inside supports() handling nested parentheses.\n     * @param {string} text - The text to parse\n     * @returns {object|null} - {content: string, endIndex: number} or null if not found\n     */\n    function extractSupportsContent(text) {\n      var supportsIndex = text.indexOf('supports(');\n      if (supportsIndex !== 0) {\n        return null;\n      }\n      \n      var depth = 0;\n      var start = supportsIndex + 'supports('.length;\n      var i = start;\n      \n      for (; i < text.length; i++) {\n        if (text[i] === '(') {\n          depth++;\n        } else if (text[i] === ')') {\n          if (depth === 0) {\n            // Found the closing parenthesis for supports()\n            return {\n              content: text.slice(start, i),\n              endIndex: i\n            };\n          }\n          depth--;\n        }\n      }\n      \n      return null; // Unbalanced parentheses\n    }\n\n    for (var character; (character = cssText.charAt(i)); i++) {\n\n      switch (character) {\n        case ' ':\n        case '\\t':\n        case '\\r':\n        case '\\n':\n        case '\\f':\n          if (state === 'after-import') {\n            state = 'url';\n          } else {\n            buffer += character;\n          }\n          break;\n\n        case '@':\n          if (!state && cssText.indexOf('@import', i) === i) {\n            state = 'after-import';\n            i += 'import'.length;\n            buffer = '';\n          }\n          break;\n\n        case 'u':\n          if (state === 'media') {\n            buffer += character;\n          }\n          if (state === 'url' && cssText.indexOf('url(', i) === i) {\n            index = cssText.indexOf(')', i + 1);\n            if (index === -1) {\n              throw i + ': \")\" not found';\n            }\n            i += 'url('.length;\n            var url = cssText.slice(i, index);\n            if (url[0] === url[url.length - 1]) {\n              if (url[0] === '\"' || url[0] === \"'\") {\n                url = url.slice(1, -1);\n              }\n            }\n            this.__href = url;\n            i = index;\n            state = 'media';\n          }\n          break;\n\n        case '\"':\n          if (state === 'after-import' || state === 'url') {\n            index = cssText.indexOf('\"', i + 1);\n            if (!index) {\n              throw i + \": '\\\"' not found\";\n            }\n            this.__href = cssText.slice(i + 1, index);\n            i = index;\n            state = 'media';\n          }\n          break;\n\n        case \"'\":\n          if (state === 'after-import' || state === 'url') {\n            index = cssText.indexOf(\"'\", i + 1);\n            if (!index) {\n              throw i + ': \"\\'\" not found';\n            }\n            this.__href = cssText.slice(i + 1, index);\n            i = index;\n            state = 'media';\n          }\n          break;\n\n        case ';':\n          if (state === 'media') {\n            if (buffer) {\n              var bufferTrimmed = buffer.trim();\n              \n              if (bufferTrimmed.indexOf('layer') === 0) {\n                var layerMatch =  bufferTrimmed.match(layerRegExp);\n\n                if (layerMatch) {\n                  var layerName = layerMatch[1].trim();\n\n                  if (layerName.match(layerRuleNameRegExp) !== null) {\n                    this.__layerName = layerMatch[1].trim();\n                    bufferTrimmed = bufferTrimmed.replace(layerRegExp, '')\n                      .replace(doubleOrMoreSpacesRegExp, ' ') // Replace double or more spaces with single space\n                      .trim();\n                  } else {\n                    // REVIEW: In the browser, an empty layer() is not processed as a unamed layer\n                    // and treats the rest of the string as mediaText, ignoring the parse of supports()\n                    if (bufferTrimmed) {\n                      this.media.mediaText = bufferTrimmed;\n                      return;\n                    }\n                  }\n                } else {\n                  this.__layerName = \"\";\n                  bufferTrimmed = bufferTrimmed.substring('layer'.length).trim()\n                }\n              }\n\n              var supportsResult = extractSupportsContent(bufferTrimmed);\n\n              if (supportsResult) {\n                // REVIEW: In the browser, an empty supports() invalidates and ignores the entire @import rule\n                this.__supportsText = supportsResult.content.trim();\n                // Remove the entire supports(...) from the buffer\n                bufferTrimmed = bufferTrimmed.slice(0, 0) + bufferTrimmed.slice(supportsResult.endIndex + 1);\n                bufferTrimmed = bufferTrimmed.replace(doubleOrMoreSpacesRegExp, ' ').trim();\n              }\n\n              // REVIEW: In the browser, any invalid media is replaced with 'not all'\n              if (bufferTrimmed) {\n                this.media.mediaText = bufferTrimmed;\n              }\n            }\n          }\n          break;\n\n        default:\n          if (state === 'media') {\n            buffer += character;\n          }\n          break;\n      }\n    }\n  }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssnamespacerule-interface\n */\nCSSOM.CSSNamespaceRule = function CSSNamespaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.__prefix = \"\";\n\tthis.__namespaceURI = \"\";\n};\n\nCSSOM.CSSNamespaceRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSNamespaceRule.prototype.constructor = CSSOM.CSSNamespaceRule;\n\nObject.setPrototypeOf(CSSOM.CSSNamespaceRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSNamespaceRule.prototype, \"type\", {\n  value: 10,\n  writable: false\n});\n\nObject.defineProperty(CSSOM.CSSNamespaceRule.prototype, \"cssText\", {\n  get: function() {\n    return \"@namespace\" + (this.prefix && \" \" + this.prefix) + \" url(\\\"\" + this.namespaceURI + \"\\\");\";\n  }\n});\n\nObject.defineProperty(CSSOM.CSSNamespaceRule.prototype, \"prefix\", {\n  get: function() {\n    return this.__prefix;\n  }\n});\n\nObject.defineProperty(CSSOM.CSSNamespaceRule.prototype, \"namespaceURI\", {\n  get: function() {\n    return this.__namespaceURI;\n  }\n});\n\n\n/**\n * NON-STANDARD\n * Rule text parser.\n * @param {string} cssText\n */\nObject.defineProperty(CSSOM.CSSNamespaceRule.prototype, \"parse\", {\n  value: function(cssText) {\n    var newPrefix = \"\";\n    var newNamespaceURI = \"\";\n\n    // Remove @namespace and trim\n    var text = cssText.trim();\n    if (text.indexOf('@namespace') === 0) {\n      text = text.slice('@namespace'.length).trim();\n    }\n\n    // Remove trailing semicolon if present\n    if (text.charAt(text.length - 1) === ';') {\n      text = text.slice(0, -1).trim();\n    }\n\n    // Regex to match valid namespace syntax:\n    // 1. [optional prefix] url(\"...\") or [optional prefix] url('...') or [optional prefix] url() or [optional prefix] url(unquoted)\n    // 2. [optional prefix] \"...\" or [optional prefix] '...'\n    // The prefix must be a valid CSS identifier (letters, digits, hyphens, underscores, starting with letter or underscore)\n    var re = /^(?:([a-zA-Z_][a-zA-Z0-9_-]*)\\s+)?(?:url\\(\\s*(?:(['\"])(.*?)\\2\\s*|([^)]*?))\\s*\\)|(['\"])(.*?)\\5)$/;\n    var match = text.match(re);\n\n    if (match) {\n      // If prefix is present\n      if (match[1]) {\n        newPrefix = match[1];\n      }\n      // If url(...) form with quotes\n      if (typeof match[3] !== \"undefined\") {\n        newNamespaceURI = match[3];\n      }\n      // If url(...) form without quotes\n      else if (typeof match[4] !== \"undefined\") {\n        newNamespaceURI = match[4].trim();\n      }\n      // If quoted string form\n      else if (typeof match[6] !== \"undefined\") {\n        newNamespaceURI = match[6];\n      }\n\n      this.__prefix = newPrefix;\n      this.__namespaceURI = newNamespaceURI;\n    } else {\n      throw new DOMException(\"Invalid @namespace rule\", \"InvalidStateError\");\n    }\n  }\n});\n//.CommonJS\nexports.CSSNamespaceRule = CSSOM.CSSNamespaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n  CSSRule: require(\"./CSSRule\").CSSRule,\n  CSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n  CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n  CSSOM.CSSGroupingRule.call(this);\n  this.__conditionText = '';\n};\n\nCSSOM.CSSConditionRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\n\nObject.setPrototypeOf(CSSOM.CSSConditionRule, CSSOM.CSSGroupingRule);\n\nObject.defineProperty(CSSOM.CSSConditionRule.prototype, \"conditionText\", {\n  get: function () {\n    return this.__conditionText;\n  }\n});\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n  CSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.__media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = Object.create(CSSOM.CSSConditionRule.prototype);\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\n\nObject.setPrototypeOf(CSSOM.CSSMediaRule, CSSOM.CSSConditionRule);\n\nObject.defineProperty(CSSOM.CSSMediaRule.prototype, \"type\", {\n\tvalue: 4,\n\twritable: false\n});\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n  \"media\": {\n    get: function() {\n      return this.__media;\n    },\n    set: function(value) {\n      if (typeof value === \"string\") {\n        this.__media.mediaText = value;\n      } else {\n        this.__media = value;\n      }\n    },\n    configurable: true,\n    enumerable: true\n  },\n  \"conditionText\": {\n    get: function() {\n      return this.media.mediaText;\n    }\n  },\n  \"cssText\": {\n    get: function() {\n\t\t\tvar values = \"\";\n\t\t\tvar valuesArr = [\" {\"];\n      if (this.cssRules.length) {\n        valuesArr.push(this.cssRules.reduce(function(acc, rule){ \n          if (rule.cssText !== \"\") {\n            acc.push(rule.cssText);\n          }\n          return acc;\n        }, []).join(\"\\n  \"));\n      }\n      values = valuesArr.join(\"\\n  \") + \"\\n}\";\n      return \"@media \" + this.media.mediaText + values;\n    }\n  }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-counter-styles/#the-csscounterstylerule-interface\n */\nCSSOM.CSSCounterStyleRule = function CSSCounterStyleRule() {\n\tCSSOM.CSSRule.call(this);\n    this.name = \"\";\n\tthis.__props = \"\";\n};\n\nCSSOM.CSSCounterStyleRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSCounterStyleRule.prototype.constructor = CSSOM.CSSCounterStyleRule;\n\nObject.setPrototypeOf(CSSOM.CSSCounterStyleRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSCounterStyleRule.prototype, \"type\", {\n\tvalue: 11,\n\twritable: false\n});\n\nObject.defineProperty(CSSOM.CSSCounterStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\t// FIXME : Implement real cssText generation based on properties\n\t\treturn \"@counter-style \" + this.name + \" { \" + this.__props + \" }\";\n\t}\n});\n\n/**\n * NON-STANDARD\n * Rule text parser.\n * @param {string} cssText\n */\nObject.defineProperty(CSSOM.CSSCounterStyleRule.prototype, \"parse\", {\n\tvalue: function(cssText) {\n\t\t// Extract the name from \"@counter-style <name> { ... }\"\n\t\tvar match = cssText.match(/@counter-style\\s+([^\\s{]+)\\s*\\{([^]*)\\}/);\n\t\tif (match) {\n\t\t\tthis.name = match[1];\n\t\t\t// Get the text inside the brackets and clean it up\n\t\t\tvar propsText = match[2];\n\t\t\tthis.__props = propsText.trim().replace(/\\n/g, \" \").replace(/(['\"])(?:\\\\.|[^\\\\])*?\\1|(\\s{2,})/g, function (match, quote) {\n\t\t\t\treturn quote ? match : ' ';\n\t\t\t});\n\t\t}\n\t}\n});\n\n//.CommonJS\nexports.CSSCounterStyleRule = CSSOM.CSSCounterStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.css-houdini.org/css-properties-values-api/#the-css-property-rule-interface\n */\nCSSOM.CSSPropertyRule = function CSSPropertyRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.__name = \"\";\n\tthis.__syntax = \"\";\n\tthis.__inherits = false;\n\tthis.__initialValue = null;\n};\n\nCSSOM.CSSPropertyRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSPropertyRule.prototype.constructor = CSSOM.CSSPropertyRule;\n\nObject.setPrototypeOf(CSSOM.CSSPropertyRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSPropertyRule.prototype, \"type\", {\n\tvalue: 0,\n\twritable: false\n});\n\nObject.defineProperty(CSSOM.CSSPropertyRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text = \"@property \" + this.name + \" {\";\n\t\tif (this.syntax !== \"\") {\n\t\t\ttext += \" syntax: \\\"\" + this.syntax.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') + \"\\\";\";\n\t\t}\n\t\ttext += \" inherits: \" + (this.inherits ? \"true\" : \"false\") + \";\";\n\t\tif (this.initialValue !== null) {\n\t\t\ttext += \" initial-value: \" + this.initialValue + \";\";\n\t\t}\n\t\ttext += \" }\";\n\t\treturn text;\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSPropertyRule.prototype, \"name\", {\n\tget: function() {\n\t\treturn this.__name;\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSPropertyRule.prototype, \"syntax\", {\n\tget: function() {\n\t\treturn this.__syntax;\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSPropertyRule.prototype, \"inherits\", {\n\tget: function() {\n\t\treturn this.__inherits;\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSPropertyRule.prototype, \"initialValue\", {\n\tget: function() {\n\t\treturn this.__initialValue;\n\t}\n});\n\n/**\n * NON-STANDARD\n * Rule text parser.\n * @param {string} cssText\n * @returns {boolean} True if the rule is valid and was parsed successfully\n */\nObject.defineProperty(CSSOM.CSSPropertyRule.prototype, \"parse\", {\n\tvalue: function(cssText) {\n\t\t// Extract the name from \"@property <name> { ... }\"\n\t\tvar match = cssText.match(/@property\\s+(--[^\\s{]+)\\s*\\{([^]*)\\}/);\n\t\tif (!match) {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\tthis.__name = match[1];\n\t\tvar bodyText = match[2];\n\t\t\n\t\t// Parse syntax descriptor (REQUIRED)\n\t\tvar syntaxMatch = bodyText.match(/syntax\\s*:\\s*(['\"])([^]*?)\\1\\s*;/);\n\t\tif (!syntaxMatch) {\n\t\t\treturn false; // syntax is required\n\t\t}\n\t\tthis.__syntax = syntaxMatch[2];\n\t\t\n\t\t// Syntax cannot be empty\n\t\tif (this.__syntax === \"\") {\n\t\t\treturn false;\n\t\t}\n\t\t\n\t\t// Parse inherits descriptor (REQUIRED)\n\t\tvar inheritsMatch = bodyText.match(/inherits\\s*:\\s*(true|false)\\s*;/);\n\t\tif (!inheritsMatch) {\n\t\t\treturn false; // inherits is required\n\t\t}\n\t\tthis.__inherits = inheritsMatch[1] === \"true\";\n\t\t\n\t\t// Parse initial-value descriptor (OPTIONAL, but required if syntax is not \"*\")\n\t\tvar initialValueMatch = bodyText.match(/initial-value\\s*:\\s*([^;]+);/);\n\t\tif (initialValueMatch) {\n\t\t\tthis.__initialValue = initialValueMatch[1].trim();\n\t\t} else {\n\t\t\t// If syntax is not \"*\", initial-value is required\n\t\t\tif (this.__syntax !== \"*\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn true; // Successfully parsed\n\t}\n});\n\n//.CommonJS\nexports.CSSPropertyRule = CSSOM.CSSPropertyRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n  CSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-contain-3/\n * @see https://www.w3.org/TR/css-contain-3/\n */\nCSSOM.CSSContainerRule = function CSSContainerRule() {\n\tCSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSContainerRule.prototype = Object.create(CSSOM.CSSConditionRule.prototype);\nCSSOM.CSSContainerRule.prototype.constructor = CSSOM.CSSContainerRule;\n\nObject.setPrototypeOf(CSSOM.CSSContainerRule, CSSOM.CSSConditionRule);\n\nObject.defineProperty(CSSOM.CSSContainerRule.prototype, \"type\", {\n\tvalue: 17,\n\twritable: false\n});\n\nObject.defineProperties(CSSOM.CSSContainerRule.prototype, {\n  \"cssText\": {\n    get: function() {\n\t\t\tvar values = \"\";\n\t\t\tvar valuesArr = [\" {\"];\n      if (this.cssRules.length) {\n        valuesArr.push(this.cssRules.reduce(function(acc, rule){ \n          if (rule.cssText !== \"\") {\n            acc.push(rule.cssText);\n          }\n          return acc;\n        }, []).join(\"\\n  \"));\n      }\n      values = valuesArr.join(\"\\n  \") + \"\\n}\";\n      return \"@container \" + this.conditionText + values;\n    }\n  },\n  \"containerName\": {\n      get: function() {\n        var parts = this.conditionText.trim().split(/\\s+/);\n        if (parts.length > 1 && parts[0] !== '(' && !parts[0].startsWith('(')) {\n          return parts[0];\n        }\n        return \"\";\n      }\n    },\n  \"containerQuery\": {\n      get: function() {\n        var parts = this.conditionText.trim().split(/\\s+/);\n        if (parts.length > 1 && parts[0] !== '(' && !parts[0].startsWith('(')) {\n          return parts.slice(1).join(' ');\n        }\n        return this.conditionText;\n      }\n    },\n});\n\n\n//.CommonJS\nexports.CSSContainerRule = CSSOM.CSSContainerRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n  CSSRule: require(\"./CSSRule\").CSSRule,\n  CSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n  CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n  CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n  CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = Object.create(CSSOM.CSSConditionRule.prototype);\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\n  \nObject.setPrototypeOf(CSSOM.CSSSupportsRule, CSSOM.CSSConditionRule);\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"type\", {\n\tvalue: 12,\n\twritable: false\n});\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n  get: function() {\n    var values = \"\";\n    var valuesArr = [\" {\"];\n    if (this.cssRules.length) {\n      valuesArr.push(this.cssRules.reduce(function(acc, rule){ \n        if (rule.cssText !== \"\") {\n          acc.push(rule.cssText);\n        }\n        return acc;\n      }, []).join(\"\\n  \"));\n    }\n    values = valuesArr.join(\"\\n  \") + \"\\n}\";\n    return \"@supports \" + this.conditionText + values;\n  }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n// Use cssstyle if available\ntry {\n\tCSSOM.CSSStyleDeclaration = require(\"cssstyle\").CSSStyleDeclaration;\n} catch (e) {\n\t// ignore\n}\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.__style = new CSSOM.CSSStyleDeclaration();\n\tthis.__style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\n\nObject.setPrototypeOf(CSSOM.CSSFontFaceRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"type\", {\n\tvalue: 5,\n\twritable: false\n});\n\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"style\", {\n\tget: function() {\n\t\treturn this.__style;\t\n\t},\n\tset: function(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.__style.cssText = value;\n\t\t} else {\n\t\t\tthis.__style = value;\n\t\t}\n\t}\n});\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n  get: function() {\n    return \"@font-face {\" + (this.style.cssText ? \" \" + this.style.cssText : \"\") + \" }\";\n  }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSRuleList: require(\"./CSSRuleList\").CSSRuleList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n * @see http://html5index.org/Shadow%20DOM%20-%20CSSHostRule.html\n * @deprecated This rule was part of early Shadow DOM drafts but was removed in favor of the more flexible :host and :host-context() pseudo-classes in modern CSS for Web Components.\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = new CSSOM.CSSRuleList();\n};\n\nCSSOM.CSSHostRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\n\nObject.setPrototypeOf(CSSOM.CSSHostRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"type\", {\n\tvalue: 1001,\n\twritable: false\n});\n\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar values = \"\";\n\t\tvar valuesArr = [\" {\"];\n\t\tif (this.cssRules.length) {\n\t\t\tvaluesArr.push(this.cssRules.reduce(function(acc, rule){ \n\t\t\tif (rule.cssText !== \"\") {\n\t\t\t\tacc.push(rule.cssText);\n\t\t\t}\n\t\t\treturn acc;\n\t\t\t}, []).join(\"\\n  \"));\n\t\t}\n\t\tvalues = valuesArr.join(\"\\n  \") + \"\\n}\";\n\t\treturn \"@host\" + values;\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSStartingStyleRule = function CSSStartingStyleRule() {\n\tCSSOM.CSSGroupingRule.call(this);\n};\n\nCSSOM.CSSStartingStyleRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);\nCSSOM.CSSStartingStyleRule.prototype.constructor = CSSOM.CSSStartingStyleRule;\n\nObject.setPrototypeOf(CSSOM.CSSStartingStyleRule, CSSOM.CSSGroupingRule);\n\nObject.defineProperty(CSSOM.CSSStartingStyleRule.prototype, \"type\", {\n\tvalue: 1002,\n\twritable: false\n});\n\n//FIXME\n//CSSOM.CSSStartingStyleRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSStartingStyleRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSStartingStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar values = \"\";\n\t\tvar valuesArr = [\" {\"];\n\t\tif (this.cssRules.length) {\n\t\t\tvaluesArr.push(this.cssRules.reduce(function(acc, rule){ \n\t\t\tif (rule.cssText !== \"\") {\n\t\t\t\tacc.push(rule.cssText);\n\t\t\t}\n\t\t\treturn acc;\n\t\t\t}, []).join(\"\\n  \"));\n\t\t}\n\t\tvalues = valuesArr.join(\"\\n  \") + \"\\n}\";\n\t\treturn \"@starting-style\" + values;\n\t}\n});\n\n\n//.CommonJS\nexports.CSSStartingStyleRule = CSSOM.CSSStartingStyleRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n// Use cssstyle if available\ntry {\n\tCSSOM.CSSStyleDeclaration = require(\"cssstyle\").CSSStyleDeclaration;\n} catch (e) {\n\t// ignore\n}\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.__style = new CSSOM.CSSStyleDeclaration();\n\tthis.__style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\n\nObject.setPrototypeOf(CSSOM.CSSKeyframeRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"type\", {\n\tvalue: 8,\n\twritable: false\n});\n\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"style\", {\n\tget: function() {\n\t\treturn this.__style;\t\n\t},\n\tset: function(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.__style.cssText = value;\n\t\t} else {\n\t\t\tthis.__style = value;\n\t\t}\n\t}\n});\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n  get: function() {\n    return this.keyText + \" {\" + (this.style.cssText ? \" \" + this.style.cssText : \"\") + \" }\";\n  }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tparse: require(\"./parse\").parse\n};\nvar errorUtils = require(\"./errorUtils\").errorUtils;\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = new CSSOM.CSSRuleList();\n\t\n\t// Set up initial indexed access\n\tthis._setupIndexedAccess();\n\t\n\t// Override cssRules methods after initial setup, store references as non-enumerable properties\n\tvar self = this;\n\tvar originalPush = this.cssRules.push;\n\tvar originalSplice = this.cssRules.splice;\n\t\n\t// Create non-enumerable method overrides\n\tObject.defineProperty(this.cssRules, 'push', {\n\t\tvalue: function() {\n\t\t\tvar result = originalPush.apply(this, arguments);\n\t\t\tself._setupIndexedAccess();\n\t\t\treturn result;\n\t\t},\n\t\twritable: true,\n\t\tenumerable: false,\n\t\tconfigurable: true\n\t});\n\t\n\tObject.defineProperty(this.cssRules, 'splice', {\n\t\tvalue: function() {\n\t\t\tvar result = originalSplice.apply(this, arguments);\n\t\t\tself._setupIndexedAccess();\n\t\t\treturn result;\n\t\t},\n\t\twritable: true,\n\t\tenumerable: false,\n\t\tconfigurable: true\n\t});\n};\n\nCSSOM.CSSKeyframesRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\n\nObject.setPrototypeOf(CSSOM.CSSKeyframesRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"type\", {\n\tvalue: 7,\n\twritable: false\n});\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n  get: function() {\n    var values = \"\";\n\tvar valuesArr = [\" {\"];\n\tif (this.cssRules.length) {\n\tvaluesArr.push(this.cssRules.reduce(function(acc, rule){ \n\t\tif (rule.cssText !== \"\") {\n\t\tacc.push(rule.cssText);\n\t\t}\n\t\treturn acc;\n\t}, []).join(\"\\n  \"));\n\t}\n\tvalues = valuesArr.join(\"\\n  \") + \"\\n}\";\n    var cssWideKeywords = ['initial', 'inherit', 'revert', 'revert-layer', 'unset', 'none'];\n    var processedName = cssWideKeywords.includes(this.name) ? '\"' + this.name + '\"' : this.name;\n    return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + processedName + values;\n  }\n});\n\n/**\n * Appends a new keyframe rule to the list of keyframes.\n * \n * @param {string} rule - The keyframe rule string to append (e.g., \"50% { opacity: 0.5; }\")\n * @see https://www.w3.org/TR/css-animations-1/#dom-csskeyframesrule-appendrule\n */\nCSSOM.CSSKeyframesRule.prototype.appendRule = function appendRule(rule) {\n\tif (arguments.length === 0) {\n\t\terrorUtils.throwMissingArguments(this, 'appendRule', 'CSSKeyframesRule');\n\t}\n\t\n\tvar parsedRule;\n\ttry {\n\t\t// Parse the rule string as a keyframe rule\n\t\tvar tempStyleSheet = CSSOM.parse(\"@keyframes temp { \" + rule + \" }\");\n\t\tif (tempStyleSheet.cssRules.length > 0 && tempStyleSheet.cssRules[0].cssRules.length > 0) {\n\t\t\tparsedRule = tempStyleSheet.cssRules[0].cssRules[0];\n\t\t} else {\n\t\t\tthrow new Error(\"Failed to parse keyframe rule\");\n\t\t}\n\t} catch (e) {\n\t\terrorUtils.throwParseError(this, 'appendRule', 'CSSKeyframesRule', rule);\n\t}\n\t\n\tparsedRule.__parentRule = this;\n\tthis.cssRules.push(parsedRule);\n};\n\n/**\n * Deletes a keyframe rule that matches the specified key.\n * \n * @param {string} select - The keyframe selector to delete (e.g., \"50%\", \"from\", \"to\")\n * @see https://www.w3.org/TR/css-animations-1/#dom-csskeyframesrule-deleterule\n */\nCSSOM.CSSKeyframesRule.prototype.deleteRule = function deleteRule(select) {\n\tif (arguments.length === 0) {\n\t\terrorUtils.throwMissingArguments(this, 'deleteRule', 'CSSKeyframesRule');\n\t}\n\t\n\tvar normalizedSelect = this._normalizeKeyText(select);\n\t\n\tfor (var i = 0; i < this.cssRules.length; i++) {\n\t\tvar rule = this.cssRules[i];\n\t\tif (this._normalizeKeyText(rule.keyText) === normalizedSelect) {\n\t\t\trule.__parentRule = null;\n\t\t\tthis.cssRules.splice(i, 1);\n\t\t\treturn;\n\t\t}\n\t}\n};\n\n/**\n * Finds and returns the keyframe rule that matches the specified key.\n * When multiple rules have the same key, returns the last one.\n * \n * @param {string} select - The keyframe selector to find (e.g., \"50%\", \"from\", \"to\")\n * @return {CSSKeyframeRule|null} The matching keyframe rule, or null if not found\n * @see https://www.w3.org/TR/css-animations-1/#dom-csskeyframesrule-findrule\n */\nCSSOM.CSSKeyframesRule.prototype.findRule = function findRule(select) {\n\tif (arguments.length === 0) {\n\t\terrorUtils.throwMissingArguments(this, 'findRule', 'CSSKeyframesRule');\n\t}\n\t\n\tvar normalizedSelect = this._normalizeKeyText(select);\n\t\n\t// Iterate backwards to find the last matching rule\n\tfor (var i = this.cssRules.length - 1; i >= 0; i--) {\n\t\tvar rule = this.cssRules[i];\n\t\tif (this._normalizeKeyText(rule.keyText) === normalizedSelect) {\n\t\t\treturn rule;\n\t\t}\n\t}\n\t\n\treturn null;\n};\n\n/**\n * Normalizes keyframe selector text for comparison.\n * Handles \"from\" -> \"0%\" and \"to\" -> \"100%\" conversions and trims whitespace.\n * \n * @private\n * @param {string} keyText - The keyframe selector text to normalize\n * @return {string} The normalized keyframe selector text\n */\nCSSOM.CSSKeyframesRule.prototype._normalizeKeyText = function _normalizeKeyText(keyText) {\n\tif (!keyText) return '';\n\t\n\tvar normalized = keyText.toString().trim().toLowerCase();\n\t\n\t// Convert keywords to percentages for comparison\n\tif (normalized === 'from') {\n\t\treturn '0%';\n\t} else if (normalized === 'to') {\n\t\treturn '100%';\n\t}\n\t\n\treturn normalized;\n};\n\n/**\n * Makes CSSKeyframesRule iterable over its cssRules.\n * Allows for...of loops and other iterable methods.\n */\nif (typeof Symbol !== 'undefined' && Symbol.iterator) {\n\tCSSOM.CSSKeyframesRule.prototype[Symbol.iterator] = function() {\n\t\tvar index = 0;\n\t\tvar cssRules = this.cssRules;\n\t\t\n\t\treturn {\n\t\t\tnext: function() {\n\t\t\t\tif (index < cssRules.length) {\n\t\t\t\t\treturn { value: cssRules[index++], done: false };\n\t\t\t\t} else {\n\t\t\t\t\treturn { done: true };\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n}\n\n/**\n * Adds indexed getters for direct access to cssRules by index.\n * This enables rule[0], rule[1], etc. access patterns.\n * Works in environments where Proxy is not available (like jsdom).\n */\nCSSOM.CSSKeyframesRule.prototype._setupIndexedAccess = function() {\n\t// Remove any existing indexed properties\n\tfor (var i = 0; i < 1000; i++) { // reasonable upper limit\n\t\tif (this.hasOwnProperty(i)) {\n\t\t\tdelete this[i];\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\t\n\t// Add indexed getters for current cssRules\n\tfor (var i = 0; i < this.cssRules.length; i++) {\n\t\t(function(index) {\n\t\t\tObject.defineProperty(this, index, {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn this.cssRules[index];\n\t\t\t\t},\n\t\t\t\tenumerable: false,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\t\t}.call(this, i));\n\t}\n\t\n\t// Update length property\n\tObject.defineProperty(this, 'length', {\n\t\tget: function() {\n\t\t\treturn this.cssRules.length;\n\t\t},\n\t\tenumerable: false,\n\t\tconfigurable: true\n\t});\n};\n\n\n\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = Object.create(CSSOM.CSSValue.prototype);\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\nObject.setPrototypeOf(CSSOM.CSSValueExpression, CSSOM.CSSValue);\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n *         - error:\n *         or\n *         - idx:\n *         - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n *          - idx:\n *          - text:\n *          or\n *          - error:\n *          or\n *          false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n    this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n    constructor: CSSOM.MatcherList,\n\n    /**\n     * @return {string}\n     */\n    get matcherText() {\n        return Array.prototype.join.call(this, \", \");\n    },\n\n    /**\n     * @param {string} value\n     */\n    set matcherText(value) {\n        // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n        var values = value.split(\",\");\n        var length = this.length = values.length;\n        for (var i=0; i<length; i++) {\n            this[i] = values[i].trim();\n        }\n    },\n\n    /**\n     * @param {string} matcher\n     */\n    appendMatcher: function(matcher) {\n        if (Array.prototype.indexOf.call(this, matcher) === -1) {\n            this[this.length] = matcher;\n            this.length++;\n        }\n    },\n\n    /**\n     * @param {string} matcher\n     */\n    deleteMatcher: function(matcher) {\n        var index = Array.prototype.indexOf.call(this, matcher);\n        if (index !== -1) {\n            Array.prototype.splice.call(this, index, 1);\n        }\n    }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n    CSSRule: require(\"./CSSRule\").CSSRule,\n    CSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n    MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n * @deprecated This rule is a non-standard Mozilla-specific extension and is not part of any official CSS specification.\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n    CSSOM.CSSRule.call(this);\n    this.matcher = new CSSOM.MatcherList();\n    this.cssRules = new CSSOM.CSSRuleList();\n};\n\nCSSOM.CSSDocumentRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\n\nObject.setPrototypeOf(CSSOM.CSSDocumentRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"type\", {\n\tvalue: 10,\n\twritable: false\n});\n\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n  get: function() {\n    var cssTexts = [];\n    for (var i=0, length=this.cssRules.length; i < length; i++) {\n        cssTexts.push(this.cssRules[i].cssText);\n    }\n    return \"@-moz-document \" + this.matcher.matcherText + \" {\" + (cssTexts.length ? \"\\n  \" + cssTexts.join(\"\\n  \") : \"\") + \"\\n}\";\n  }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n  CSSRule: require(\"./CSSRule\").CSSRule,\n  CSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n  CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n};\n///CommonJS\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-cascade-6/#cssscoperule\n */\nCSSOM.CSSScopeRule = function CSSScopeRule() {\n  CSSOM.CSSGroupingRule.call(this);\n  this.__start = null;\n  this.__end = null;\n};\n\nCSSOM.CSSScopeRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);\nCSSOM.CSSScopeRule.prototype.constructor = CSSOM.CSSScopeRule;\n\nObject.setPrototypeOf(CSSOM.CSSScopeRule, CSSOM.CSSGroupingRule);\n\nObject.defineProperties(CSSOM.CSSScopeRule.prototype, {\n  type: {\n    value: 0,\n    writable: false,\n  },\n  cssText: {\n    get: function () {\n\t\t\tvar values = \"\";\n\t\t\tvar valuesArr = [\" {\"];\n      if (this.cssRules.length) {\n        valuesArr.push(this.cssRules.reduce(function(acc, rule){ \n          if (rule.cssText !== \"\") {\n            acc.push(rule.cssText);\n          }\n          return acc;\n        }, []).join(\"\\n  \"));\n      }\n      values = valuesArr.join(\"\\n  \") + \"\\n}\";\n      return \"@scope\" + (this.start ? \" (\" + this.start + \")\" : \"\") + (this.end ? \" to (\" + this.end + \")\" : \"\") + values;\n    },\n    configurable: true,\n    enumerable: true,\n  },\n  start: {\n    get: function () {\n      return this.__start;\n    }\n  },\n  end: {\n    get: function () {\n      return this.__end;\n    }\n  }\n});\n\n//.CommonJS\nexports.CSSScopeRule = CSSOM.CSSScopeRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n  CSSRule: require(\"./CSSRule\").CSSRule,\n  CSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n  CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n};\n///CommonJS\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-cascade-5/#csslayerblockrule\n */\nCSSOM.CSSLayerBlockRule = function CSSLayerBlockRule() {\n  CSSOM.CSSGroupingRule.call(this);\n  this.name = \"\";\n};\n\nCSSOM.CSSLayerBlockRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);\nCSSOM.CSSLayerBlockRule.prototype.constructor = CSSOM.CSSLayerBlockRule;\n\nObject.setPrototypeOf(CSSOM.CSSLayerBlockRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSLayerBlockRule.prototype, \"type\", {\n\tvalue: 18,\n\twritable: false\n});\n\nObject.defineProperties(CSSOM.CSSLayerBlockRule.prototype, {\n  cssText: {\n    get: function () {\n\t\t\tvar values = \"\";\n\t\t\tvar valuesArr = [\" {\"];\n      if (this.cssRules.length) {\n        valuesArr.push(this.cssRules.reduce(function(acc, rule){ \n          if (rule.cssText !== \"\") {\n            acc.push(rule.cssText);\n          }\n          return acc;\n        }, []).join(\"\\n  \"));\n      }\n      values = valuesArr.join(\"\\n  \") + \"\\n}\";\n      return \"@layer\" + (this.name ? \" \" + this.name : \"\") + values;\n    }\n  },\n});\n\n//.CommonJS\nexports.CSSLayerBlockRule = CSSOM.CSSLayerBlockRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n  CSSRule: require(\"./CSSRule\").CSSRule,\n};\n///CommonJS\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-cascade-5/#csslayerstatementrule\n */\nCSSOM.CSSLayerStatementRule = function CSSLayerStatementRule() {\n  CSSOM.CSSRule.call(this);\n  this.nameList = [];\n};\n\nCSSOM.CSSLayerStatementRule.prototype = Object.create(CSSOM.CSSRule.prototype);\nCSSOM.CSSLayerStatementRule.prototype.constructor = CSSOM.CSSLayerStatementRule;\n\nObject.setPrototypeOf(CSSOM.CSSLayerStatementRule, CSSOM.CSSRule);\n\nObject.defineProperty(CSSOM.CSSLayerStatementRule.prototype, \"type\", {\n\tvalue: 0,\n\twritable: false\n});\n\nObject.defineProperties(CSSOM.CSSLayerStatementRule.prototype, {\n  cssText: {\n    get: function () {\n      return \"@layer \" + this.nameList.join(\", \") + \";\";\n    }\n  },\n});\n\n//.CommonJS\nexports.CSSLayerStatementRule = CSSOM.CSSLayerStatementRule;\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSRuleList: require(\"./CSSRuleList\").CSSRuleList,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n};\nvar regexPatterns = require(\"./regexPatterns\").regexPatterns;\n// Use cssstyle if available\ntry {\n\tCSSOM.CSSStyleDeclaration = require(\"cssstyle\").CSSStyleDeclaration;\n} catch (e) {\n\t// ignore\n}\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-csspagerule-interface\n */\nCSSOM.CSSPageRule = function CSSPageRule() {\n\tCSSOM.CSSGroupingRule.call(this);\n\tthis.__style = new CSSOM.CSSStyleDeclaration();\n\tthis.__style.parentRule = this;\n};\n\nCSSOM.CSSPageRule.prototype = Object.create(CSSOM.CSSGroupingRule.prototype);\nCSSOM.CSSPageRule.prototype.constructor = CSSOM.CSSPageRule;\n\nObject.setPrototypeOf(CSSOM.CSSPageRule, CSSOM.CSSGroupingRule);\n\nObject.defineProperty(CSSOM.CSSPageRule.prototype, \"type\", {\n\tvalue: 6,\n\twritable: false\n});\n\nObject.defineProperty(CSSOM.CSSPageRule.prototype, \"selectorText\", {\n    get: function() {\n        return this.__selectorText;\t\n    },\n    set: function(value) {\n        if (typeof value === \"string\") {\n            var trimmedValue = value.trim();\n            \n            // Empty selector is valid for @page\n            if (trimmedValue === '') {\n                this.__selectorText = '';\n                return;\n            }\n            \n\t\t\tvar atPageRuleSelectorRegExp = regexPatterns.atPageRuleSelectorRegExp;\n\t\t\tvar cssCustomIdentifierRegExp = regexPatterns.cssCustomIdentifierRegExp;\n            var match = trimmedValue.match(atPageRuleSelectorRegExp);\n            if (match) {\n\t\t\t\tvar pageName = match[1] || '';\n                var pseudoPages = match[2] || '';\n\n\t\t\t\t// Validate page name if present\n\t\t\t\tif (pageName) {\n\t\t\t\t\t// Page name can be an identifier or a string\n\t\t\t\t\tif (!cssCustomIdentifierRegExp.test(pageName)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n                \n                // Validate pseudo-pages if present\n                if (pseudoPages) {\n                    var pseudos = pseudoPages.split(':').filter(function(p) { return p; });\n                    var validPseudos = ['left', 'right', 'first', 'blank'];\n                    var allValid = true;\n                    for (var j = 0; j < pseudos.length; j++) {\n                        if (validPseudos.indexOf(pseudos[j].toLowerCase()) === -1) {\n                            allValid = false;\n                            break;\n                        }\n                    }\n                    \n                    if (!allValid) {\n                        return; // Invalid pseudo-page, do nothing\n                    }\n                }\n                \n\t\t\t\tthis.__selectorText = pageName + pseudoPages.toLowerCase();\n            }\n        }\n    }\n});\n\nObject.defineProperty(CSSOM.CSSPageRule.prototype, \"style\", {\n\tget: function() {\n\t\treturn this.__style;\t\n\t},\n\tset: function(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.__style.cssText = value;\n\t\t} else {\n\t\t\tthis.__style = value;\n\t\t}\n\t}\n});\n\nObject.defineProperty(CSSOM.CSSPageRule.prototype, \"cssText\", {\n\tget: function() {\n        var values = \"\";\n        if (this.cssRules.length) {\n            var valuesArr = [\" {\"];\n            this.style.cssText && valuesArr.push(this.style.cssText);\n            valuesArr.push(this.cssRules.reduce(function(acc, rule){ \n\t\t\t\tif (rule.cssText !== \"\") {\n\t\t\t\t\tacc.push(rule.cssText);\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, []).join(\"\\n  \"));\n            values = valuesArr.join(\"\\n  \") + \"\\n}\";\n        } else {\n            values = \" {\" + (this.style.cssText ? \" \" + this.style.cssText : \"\") + \" }\";\n        }\n\t\treturn \"@page\" + (this.selectorText ? \" \" + this.selectorText : \"\") + values;\n\t}\n});\n\n//.CommonJS\nexports.CSSPageRule = CSSOM.CSSPageRule;\n///CommonJS\n","try {\n\tCSSOM.CSSStyleDeclaration = require(\"cssstyle\").CSSStyleDeclaration;\n} catch (e) {\n\t// ignore\n}","//.CommonJS\nvar CSSOM = {};\nvar regexPatterns = require(\"./regexPatterns\").regexPatterns;\n///CommonJS\n\n/**\n * Parses a CSS string and returns a `CSSStyleSheet` object representing the parsed stylesheet.\n *\n * @param {string} token - The CSS string to parse.\n * @param {object} [opts] - Optional parsing options.\n * @param {object} [opts.globalObject] - An optional global object to prioritize over the window object. Useful on jsdom webplatform tests.\n * @param {Element | ProcessingInstruction} [opts.ownerNode] - The owner node of the stylesheet.\n * @param {CSSRule} [opts.ownerRule] - The owner rule of the stylesheet.\n * @param {CSSOM.CSSStyleSheet} [opts.styleSheet] - Reuse a style sheet instead of creating a new one (e.g. as `parentStyleSheet`)\n * @param {CSSOM.CSSRuleList} [opts.cssRules] - Prepare all rules in this list instead of mutating the style sheet continually\n * @param {function|boolean} [errorHandler] - Optional error handler function or `true` to use `console.error`.\n * @returns {CSSOM.CSSStyleSheet} The parsed `CSSStyleSheet` object.\n */\nCSSOM.parse = function parse(token, opts, errorHandler) {\n\terrorHandler = errorHandler === true ? (console && console.error) : errorHandler;\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\tvar hasUnmatchedQuoteInSelector = false; // Track if current selector has unmatched quote\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"name\": true,\n\t\t\"before-name\": true,\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"namespaceRule-begin\": true,\n\t\t\"namespaceRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"containerBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t\"counterStyleBlock\": true,\n\t\t\"propertyBlock\": true,\n\t\t'documentRule-begin': true,\n\t\t\"scopeBlock\": true,\n\t\t\"layerBlock\": true,\n\t\t\"pageBlock\": true\n\t};\n\n\tvar styleSheet;\n\tif (opts && opts.styleSheet) {\n\t\tstyleSheet = opts.styleSheet;\n\t} else {\n\t\tif (opts && opts.globalObject && opts.globalObject.CSSStyleSheet) {\n\t\t\tstyleSheet = new opts.globalObject.CSSStyleSheet();\n\t\t} else {\n\t\t\tstyleSheet = new CSSOM.CSSStyleSheet();\n\t\t}\n\t\tstyleSheet.__constructed = false;\n\t}\n\n\tvar topScope;\n\tif (opts && opts.cssRules) {\n\t\ttopScope = { cssRules: opts.cssRules };\n\t} else {\n\t\ttopScope = styleSheet;\n\t}\n\n\tif (opts && opts.ownerNode) {\n\t\tstyleSheet.__ownerNode = opts.ownerNode;\n\t\tvar ownerNodeMedia = opts.ownerNode.media || (opts.ownerNode.getAttribute && opts.ownerNode.getAttribute(\"media\"));\n\t\tif (ownerNodeMedia) {\n\t\t\tstyleSheet.media.mediaText = ownerNodeMedia;\n\t\t}\n\t\tvar ownerNodeTitle = opts.ownerNode.title || (opts.ownerNode.getAttribute && opts.ownerNode.getAttribute(\"title\"));\n\t\tif (ownerNodeTitle) {\n\t\t\tstyleSheet.__title = ownerNodeTitle;\n\t\t}\n\t}\n\n\tif (opts && opts.ownerRule) {\n\t\tstyleSheet.__ownerRule = opts.ownerRule;\n\t}\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSContainerRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = topScope;\n\n\t// @type CSSMediaRule|CSSContainerRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar prevScope;\n\n\tvar name, priority = \"\", styleRule, mediaRule, containerRule, counterStyleRule, propertyRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule, startingStyleRule, scopeRule, pageRule, layerBlockRule, layerStatementRule, nestedSelectorRule, namespaceRule;\n\n\t// Track defined namespace prefixes for validation\n\tvar definedNamespacePrefixes = {};\n\n\t// Track which rules have been added\n\tvar ruleIdCounter = 0;\n\tvar addedToParent = {};\n\tvar addedToTopScope = {};\n\tvar addedToCurrentScope = {};\n\n\t// Helper to get unique ID for tracking rules\n\tfunction getRuleId(rule) {\n\t\tif (!rule.__parseId) {\n\t\t\trule.__parseId = ++ruleIdCounter;\n\t\t}\n\t\treturn rule.__parseId;\n\t}\n\n\t// Cache last validation boundary position\n\t// to avoid rescanning the entire token string for each at-rule\n\tvar lastValidationBoundary = 0;\n\n\t// Pre-compile validation regexes for common at-rules\n\tvar validationRegexCache = {};\n\tfunction getValidationRegex(atRuleKey) {\n\t\tif (!validationRegexCache[atRuleKey]) {\n\t\t\tvar sourceRuleRegExp = atRuleKey === \"@import\" ? forwardImportRuleValidationRegExp : forwardRuleValidationRegExp;\n\t\t\tvalidationRegexCache[atRuleKey] = new RegExp(atRuleKey + sourceRuleRegExp.source, sourceRuleRegExp.flags);\n\t\t}\n\t\treturn validationRegexCache[atRuleKey];\n\t}\n\n\t// Import regex patterns from shared module\n\tvar atKeyframesRegExp = regexPatterns.atKeyframesRegExp;\n\tvar beforeRulePortionRegExp = regexPatterns.beforeRulePortionRegExp;\n\tvar beforeRuleValidationRegExp = regexPatterns.beforeRuleValidationRegExp;\n\tvar forwardRuleValidationRegExp = regexPatterns.forwardRuleValidationRegExp;\n\tvar forwardImportRuleValidationRegExp = regexPatterns.forwardImportRuleValidationRegExp;\n\n\t// Pre-compile regexBefore to avoid creating it on every validateAtRule call\n\tvar regexBefore = new RegExp(beforeRulePortionRegExp.source, beforeRulePortionRegExp.flags);\n\tvar forwardRuleClosingBraceRegExp = regexPatterns.forwardRuleClosingBraceRegExp;\n\tvar forwardRuleSemicolonAndOpeningBraceRegExp = regexPatterns.forwardRuleSemicolonAndOpeningBraceRegExp;\n\tvar cssCustomIdentifierRegExp = regexPatterns.cssCustomIdentifierRegExp;\n\tvar startsWithCombinatorRegExp = regexPatterns.startsWithCombinatorRegExp;\n\tvar atPageRuleSelectorRegExp = regexPatterns.atPageRuleSelectorRegExp;\n\tvar startsWithHexEscapeRegExp = regexPatterns.startsWithHexEscapeRegExp;\n\tvar identStartCharRegExp = regexPatterns.identStartCharRegExp;\n\tvar identCharRegExp = regexPatterns.identCharRegExp;\n\tvar specialCharsNeedEscapeRegExp = regexPatterns.specialCharsNeedEscapeRegExp;\n\tvar combinatorOrSeparatorRegExp = regexPatterns.combinatorOrSeparatorRegExp;\n\tvar afterHexEscapeSeparatorRegExp = regexPatterns.afterHexEscapeSeparatorRegExp;\n\tvar trailingSpaceSeparatorRegExp = regexPatterns.trailingSpaceSeparatorRegExp;\n\tvar endsWithHexEscapeRegExp = regexPatterns.endsWithHexEscapeRegExp;\n\tvar attributeSelectorContentRegExp = regexPatterns.attributeSelectorContentRegExp;\n\tvar pseudoElementRegExp = regexPatterns.pseudoElementRegExp;\n\tvar invalidCombinatorLtGtRegExp = regexPatterns.invalidCombinatorLtGtRegExp;\n\tvar invalidCombinatorDoubleGtRegExp = regexPatterns.invalidCombinatorDoubleGtRegExp;\n\tvar consecutiveCombinatorsRegExp = regexPatterns.consecutiveCombinatorsRegExp;\n\tvar invalidSlottedRegExp = regexPatterns.invalidSlottedRegExp;\n\tvar invalidPartRegExp = regexPatterns.invalidPartRegExp;\n\tvar invalidCueRegExp = regexPatterns.invalidCueRegExp;\n\tvar invalidCueRegionRegExp = regexPatterns.invalidCueRegionRegExp;\n\tvar invalidNestingPattern = regexPatterns.invalidNestingPattern;\n\tvar emptyPseudoClassRegExp = regexPatterns.emptyPseudoClassRegExp;\n\tvar whitespaceNormalizationRegExp = regexPatterns.whitespaceNormalizationRegExp;\n\tvar newlineRemovalRegExp = regexPatterns.newlineRemovalRegExp;\n\tvar whitespaceAndDotRegExp = regexPatterns.whitespaceAndDotRegExp;\n\tvar declarationOrOpenBraceRegExp = regexPatterns.declarationOrOpenBraceRegExp;\n\tvar ampersandRegExp = regexPatterns.ampersandRegExp;\n\tvar hexEscapeSequenceRegExp = regexPatterns.hexEscapeSequenceRegExp;\n\tvar attributeCaseFlagRegExp = regexPatterns.attributeCaseFlagRegExp;\n\tvar prependedAmpersandRegExp = regexPatterns.prependedAmpersandRegExp;\n\tvar openBraceGlobalRegExp = regexPatterns.openBraceGlobalRegExp;\n\tvar closeBraceGlobalRegExp = regexPatterns.closeBraceGlobalRegExp;\n\tvar scopePreludeSplitRegExp = regexPatterns.scopePreludeSplitRegExp;\n\tvar leadingWhitespaceRegExp = regexPatterns.leadingWhitespaceRegExp;\n\tvar doubleQuoteRegExp = regexPatterns.doubleQuoteRegExp;\n\tvar backslashRegExp = regexPatterns.backslashRegExp;\n\n\t/**\n\t * Searches for the first occurrence of a CSS at-rule statement terminator (`;` or `}`) \n\t * that is not inside a brace block within the given string. Mimics the behavior of a \n\t * regular expression match for such terminators, including any trailing whitespace.\n\t * @param {string} str - The string to search for at-rule statement terminators.\n\t * @returns {object | null} {0: string, index: number} or null if no match is found.\n\t */\n\tfunction atRulesStatemenRegExpES5Alternative(ruleSlice) {\n\t\tfor (var i = 0; i < ruleSlice.length; i++) {\n\t\t\tvar char = ruleSlice[i];\n\n\t\t\tif (char === ';' || char === '}') {\n\t\t\t\t// Simulate negative lookbehind: check if there is a { before this position\n\t\t\t\tvar sliceBefore = ruleSlice.substring(0, i);\n\t\t\t\tvar openBraceIndex = sliceBefore.indexOf('{');\n\n\t\t\t\tif (openBraceIndex === -1) {\n\t\t\t\t\t// No { found before, so we treat it as a valid match\n\t\t\t\t\tvar match = char;\n\t\t\t\t\tvar j = i + 1;\n\n\t\t\t\t\twhile (j < ruleSlice.length && /\\s/.test(ruleSlice[j])) {\n\t\t\t\t\t\tmatch += ruleSlice[j];\n\t\t\t\t\t\tj++;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar matchObj = [match];\n\t\t\t\t\tmatchObj.index = i;\n\t\t\t\t\tmatchObj.input = ruleSlice;\n\t\t\t\t\treturn matchObj;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Finds the first balanced block (including nested braces) in the string, starting from fromIndex.\n\t * Returns an object similar to RegExp.prototype.match output.\n\t * @param {string} str - The string to search.\n\t * @param {number} [fromIndex=0] - The index to start searching from.\n\t * @returns {object|null} - { 0: matchedString, index: startIndex, input: str } or null if not found.\n\t */\n\tfunction matchBalancedBlock(str, fromIndex) {\n\t\tfromIndex = fromIndex || 0;\n\t\tvar openIndex = str.indexOf('{', fromIndex);\n\t\tif (openIndex === -1) return null;\n\t\tvar depth = 0;\n\t\tfor (var i = openIndex; i < str.length; i++) {\n\t\t\tif (str[i] === '{') {\n\t\t\t\tdepth++;\n\t\t\t} else if (str[i] === '}') {\n\t\t\t\tdepth--;\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\tvar matchedString = str.slice(openIndex, i + 1);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t0: matchedString,\n\t\t\t\t\t\tindex: openIndex,\n\t\t\t\t\t\tinput: str\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Advances the index `i` to skip over a balanced block of curly braces in the given string.\n\t * This is typically used to ignore the contents of a CSS rule block.\n\t *\n\t * @param {number} i - The current index in the string to start searching from.\n\t * @param {string} str - The string containing the CSS code.\n\t * @param {number} fromIndex - The index in the string where the balanced block search should begin.\n\t * @returns {number} The updated index after skipping the balanced block.\n\t */\n\tfunction ignoreBalancedBlock(i, str, fromIndex) {\n\t\tvar ruleClosingMatch = matchBalancedBlock(str, fromIndex);\n\t\tif (ruleClosingMatch) {\n\t\t\tvar ignoreRange = ruleClosingMatch.index + ruleClosingMatch[0].length;\n\t\t\ti += ignoreRange;\n\t\t\tif (token.charAt(i) === '}') {\n\t\t\t\ti -= 1;\n\t\t\t}\n\t\t} else {\n\t\t\ti += str.length;\n\t\t}\n\t\treturn i;\n\t}\n\n\t/**\n\t * Parses the scope prelude and extracts start and end selectors.\n\t * @param {string} preludeContent - The scope prelude content (without @scope keyword)\n\t * @returns {object} Object with startSelector and endSelector properties\n\t */\n\tfunction parseScopePrelude(preludeContent) {\n\t\tvar parts = preludeContent.split(scopePreludeSplitRegExp);\n\n\t\t// Restore the parentheses that were consumed by the split\n\t\tif (parts.length === 2) {\n\t\t\tparts[0] = parts[0] + ')';\n\t\t\tparts[1] = '(' + parts[1];\n\t\t}\n\n\t\tvar hasStart = parts[0] &&\n\t\t\tparts[0].charAt(0) === '(' &&\n\t\t\tparts[0].charAt(parts[0].length - 1) === ')';\n\t\tvar hasEnd = parts[1] &&\n\t\t\tparts[1].charAt(0) === '(' &&\n\t\t\tparts[1].charAt(parts[1].length - 1) === ')';\n\n\t\t// Handle case: @scope to (<end>)\n\t\tvar hasOnlyEnd = !hasStart &&\n\t\t\t!hasEnd &&\n\t\t\tparts[0].indexOf('to (') === 0 &&\n\t\t\tparts[0].charAt(parts[0].length - 1) === ')';\n\n\t\tvar startSelector = '';\n\t\tvar endSelector = '';\n\n\t\tif (hasStart) {\n\t\t\tstartSelector = parts[0].slice(1, -1).trim();\n\t\t}\n\t\tif (hasEnd) {\n\t\t\tendSelector = parts[1].slice(1, -1).trim();\n\t\t}\n\t\tif (hasOnlyEnd) {\n\t\t\tendSelector = parts[0].slice(4, -1).trim();\n\t\t}\n\n\t\treturn {\n\t\t\tstartSelector: startSelector,\n\t\t\tendSelector: endSelector,\n\t\t\thasStart: hasStart,\n\t\t\thasEnd: hasEnd,\n\t\t\thasOnlyEnd: hasOnlyEnd\n\t\t};\n\t};\n\n\t/**\n\t * Checks if a selector contains pseudo-elements.\n\t * @param {string} selector - The CSS selector to check\n\t * @returns {boolean} True if the selector contains pseudo-elements\n\t */\n\tfunction hasPseudoElement(selector) {\n\t\t// Match only double-colon (::) pseudo-elements\n\t\t// Also match legacy single-colon pseudo-elements: :before, :after, :first-line, :first-letter\n\t\t// These must NOT be followed by alphanumeric characters (to avoid matching :before-x or similar)\n\t\treturn pseudoElementRegExp.test(selector);\n\t};\n\n\t/**\n\t * Validates balanced parentheses, brackets, and quotes in a selector.\n\t * \n\t * @param {string} selector - The CSS selector to validate\n\t * @param {boolean} trackAttributes - Whether to track attribute selector context\n\t * @param {boolean} useStack - Whether to use a stack for parentheses (needed for nested validation)\n\t * @returns {boolean} True if the syntax is valid (all brackets, parentheses, and quotes are balanced)\n\t */\n\tfunction validateBalancedSyntax(selector, trackAttributes, useStack) {\n\t\tvar parenDepth = 0;\n\t\tvar bracketDepth = 0;\n\t\tvar inSingleQuote = false;\n\t\tvar inDoubleQuote = false;\n\t\tvar inAttr = false;\n\t\tvar stack = useStack ? [] : null;\n\n\t\tfor (var i = 0; i < selector.length; i++) {\n\t\t\tvar char = selector[i];\n\n\t\t\t// Handle escape sequences - skip hex escapes or simple escapes\n\t\t\tif (char === '\\\\') {\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(selector, i);\n\t\t\t\tif (escapeLen > 0) {\n\t\t\t\t\ti += escapeLen - 1; // -1 because loop will increment\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (inSingleQuote) {\n\t\t\t\tif (char === \"'\") {\n\t\t\t\t\tinSingleQuote = false;\n\t\t\t\t}\n\t\t\t} else if (inDoubleQuote) {\n\t\t\t\tif (char === '\"') {\n\t\t\t\t\tinDoubleQuote = false;\n\t\t\t\t}\n\t\t\t} else if (trackAttributes && inAttr) {\n\t\t\t\tif (char === \"]\") {\n\t\t\t\t\tinAttr = false;\n\t\t\t\t} else if (char === \"'\") {\n\t\t\t\t\tinSingleQuote = true;\n\t\t\t\t} else if (char === '\"') {\n\t\t\t\t\tinDoubleQuote = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (trackAttributes && char === \"[\") {\n\t\t\t\t\tinAttr = true;\n\t\t\t\t} else if (char === \"'\") {\n\t\t\t\t\tinSingleQuote = true;\n\t\t\t\t} else if (char === '\"') {\n\t\t\t\t\tinDoubleQuote = true;\n\t\t\t\t} else if (char === '(') {\n\t\t\t\t\tif (useStack) {\n\t\t\t\t\t\tstack.push(\"(\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparenDepth++;\n\t\t\t\t\t}\n\t\t\t\t} else if (char === ')') {\n\t\t\t\t\tif (useStack) {\n\t\t\t\t\t\tif (!stack.length || stack.pop() !== \"(\") {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparenDepth--;\n\t\t\t\t\t\tif (parenDepth < 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (char === '[') {\n\t\t\t\t\tbracketDepth++;\n\t\t\t\t} else if (char === ']') {\n\t\t\t\t\tbracketDepth--;\n\t\t\t\t\tif (bracketDepth < 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check if everything is balanced\n\t\tif (useStack) {\n\t\t\treturn stack.length === 0 && bracketDepth === 0 && !inSingleQuote && !inDoubleQuote && !inAttr;\n\t\t} else {\n\t\t\treturn parenDepth === 0 && bracketDepth === 0 && !inSingleQuote && !inDoubleQuote;\n\t\t}\n\t};\n\n\t/**\n\t * Checks for basic syntax errors in selectors (mismatched parentheses, brackets, quotes).\n\t * @param {string} selector - The CSS selector to check\n\t * @returns {boolean} True if there are syntax errors\n\t */\n\tfunction hasBasicSyntaxError(selector) {\n\t\treturn !validateBalancedSyntax(selector, false, false);\n\t};\n\n\t/**\n\t * Checks for invalid combinator patterns in selectors.\n\t * @param {string} selector - The CSS selector to check\n\t * @returns {boolean} True if the selector contains invalid combinators\n\t */\n\tfunction hasInvalidCombinators(selector) {\n\t\t// Check for invalid combinator patterns:\n\t\t// - <> (not a valid combinator)\n\t\t// - >> (deep descendant combinator, deprecated and invalid)\n\t\t// - Multiple consecutive combinators like >>, >~, etc.\n\t\tif (invalidCombinatorLtGtRegExp.test(selector)) return true;\n\t\tif (invalidCombinatorDoubleGtRegExp.test(selector)) return true;\n\t\t// Check for other invalid consecutive combinator patterns\n\t\tif (consecutiveCombinatorsRegExp.test(selector)) return true;\n\t\treturn false;\n\t};\n\n\t/**\n\t * Checks for invalid pseudo-like syntax (function calls without proper pseudo prefix).\n\t * @param {string} selector - The CSS selector to check\n\t * @returns {boolean} True if the selector contains invalid pseudo-like syntax\n\t */\n\tfunction hasInvalidPseudoSyntax(selector) {\n\t\t// Check for specific known pseudo-elements used without : or :: prefix\n\t\t// Examples: slotted(div), part(name), cue(selector)\n\t\t// These are ONLY valid as ::slotted(), ::part(), ::cue()\n\t\tvar invalidPatterns = [\n\t\t\tinvalidSlottedRegExp,\n\t\t\tinvalidPartRegExp,\n\t\t\tinvalidCueRegExp,\n\t\t\tinvalidCueRegionRegExp\n\t\t];\n\n\t\tfor (var i = 0; i < invalidPatterns.length; i++) {\n\t\t\tif (invalidPatterns[i].test(selector)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\t/**\n\t * Checks for invalid nesting selector (&) usage.\n\t * The & selector cannot be directly followed by a type selector without a delimiter.\n\t * Valid: &.class, &#id, &[attr], &:hover, &::before, & div, &>div\n\t * Invalid: &div, &span\n\t * @param {string} selector - The CSS selector to check\n\t * @returns {boolean} True if the selector contains invalid & usage\n\t */\n\tfunction hasInvalidNestingSelector(selector) {\n\t\t// Check for & followed directly by a letter (type selector) without any delimiter\n\t\t// This regex matches & followed by a letter (start of type selector) that's not preceded by an escape\n\t\t// We need to exclude valid cases like &.class, &#id, &[attr], &:pseudo, &::pseudo, & (with space), &>\n\t\treturn invalidNestingPattern.test(selector);\n\t};\n\n\t/**\n\t * Checks if an at-rule can be nested based on parent chain validation.\n\t * Used for at-rules like `@counter-style`, `@property` and `@font-face` rules that can only be nested inside\n\t * `CSSScopeRule` or `CSSConditionRule` without `CSSStyleRule` in parent chain.\n\t * @returns {boolean} `true` if nesting is allowed, `false` otherwise\n\t */\n\tfunction canAtRuleBeNested() {\n\t\tif (currentScope === topScope) {\n\t\t\treturn true; // Top-level is always allowed\n\t\t}\n\n\t\tvar hasStyleRuleInChain = false;\n\t\tvar hasValidParent = false;\n\n\t\t// Check currentScope\n\t\tif (currentScope.constructor.name === 'CSSStyleRule') {\n\t\t\thasStyleRuleInChain = true;\n\t\t} else if (currentScope instanceof CSSOM.CSSScopeRule || currentScope instanceof CSSOM.CSSConditionRule) {\n\t\t\thasValidParent = true;\n\t\t}\n\n\t\t// Check ancestorRules for CSSStyleRule\n\t\tif (!hasStyleRuleInChain) {\n\t\t\tfor (var j = 0; j < ancestorRules.length; j++) {\n\t\t\t\tif (ancestorRules[j].constructor.name === 'CSSStyleRule') {\n\t\t\t\t\thasStyleRuleInChain = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (ancestorRules[j] instanceof CSSOM.CSSScopeRule || ancestorRules[j] instanceof CSSOM.CSSConditionRule) {\n\t\t\t\t\thasValidParent = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Allow nesting if we have a valid parent and no style rule in the chain\n\t\treturn hasValidParent && !hasStyleRuleInChain;\n\t}\n\n\tfunction validateAtRule(atRuleKey, validCallback, cannotBeNested) {\n\t\tvar isValid = false;\n\t\t// Use cached regex instead of creating new one each time\n\t\tvar ruleRegExp = getValidationRegex(atRuleKey);\n\t\t//  Only slice what we need for validation (max 100 chars)\n\t\t// since we only check match at position 0\n\t\tvar lookAheadLength = Math.min(100, token.length - i);\n\t\tvar ruleSlice = token.slice(i, i + lookAheadLength);\n\t\t// Not all rules can be nested, if the rule cannot be nested and is in the root scope, do not perform the check\n\t\tvar shouldPerformCheck = cannotBeNested && currentScope !== topScope ? false : true;\n\t\t// First, check if there is no invalid characters just after the at-rule\n\t\tif (shouldPerformCheck && ruleSlice.search(ruleRegExp) === 0) {\n\t\t\t// Only scan from the last known validation boundary\n\t\t\tvar searchStart = Math.max(0, lastValidationBoundary);\n\t\t\tvar beforeSlice = token.slice(searchStart, i);\n\t\t\t\n\t\t\t// Use pre-compiled regex instead of creating new one each time\n\t\t\tvar matches = beforeSlice.match(regexBefore);\n\t\t\tvar lastI = matches ? searchStart + beforeSlice.lastIndexOf(matches[matches.length - 1]) : searchStart;\n\t\t\tvar toCheckSlice = token.slice(lastI, i);\n\t\t\t// Check if we don't have any invalid in the portion before the `at-rule` and the closest allowed character\n\t\t\tvar checkedSlice = toCheckSlice.search(beforeRuleValidationRegExp);\n\t\t\tif (checkedSlice === 0) {\n\t\t\t\tisValid = true;\n\t\t\t\t// Update the validation boundary cache to this position\n\t\t\t\tlastValidationBoundary = lastI;\n\t\t\t}\n\t\t}\n\n\t\t// Additional validation for @scope rule\n\t\tif (isValid && atRuleKey === \"@scope\") {\n\t\t\tvar openBraceIndex = ruleSlice.indexOf('{');\n\t\t\tif (openBraceIndex !== -1) {\n\t\t\t\t// Extract the rule prelude (everything between the at-rule and {)\n\t\t\t\tvar rulePrelude = ruleSlice.slice(0, openBraceIndex).trim();\n\n\t\t\t\t// Skip past at-rule keyword and whitespace\n\t\t\t\tvar preludeContent = rulePrelude.slice(\"@scope\".length).trim();\n\n\t\t\t\tif (preludeContent.length > 0) {\n\t\t\t\t\t// Parse the scope prelude\n\t\t\t\t\tvar parsedScopePrelude = parseScopePrelude(preludeContent);\n\t\t\t\t\tvar startSelector = parsedScopePrelude.startSelector;\n\t\t\t\t\tvar endSelector = parsedScopePrelude.endSelector;\n\t\t\t\t\tvar hasStart = parsedScopePrelude.hasStart;\n\t\t\t\t\tvar hasEnd = parsedScopePrelude.hasEnd;\n\t\t\t\t\tvar hasOnlyEnd = parsedScopePrelude.hasOnlyEnd;\n\n\t\t\t\t\t// Validation rules for @scope:\n\t\t\t\t\t// 1. Empty selectors in parentheses are invalid: @scope () {} or @scope (.a) to () {}\n\t\t\t\t\tif ((hasStart && startSelector === '') || (hasEnd && endSelector === '') || (hasOnlyEnd && endSelector === '')) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t}\n\t\t\t\t\t// 2. Pseudo-elements are invalid in scope selectors\n\t\t\t\t\telse if ((startSelector && hasPseudoElement(startSelector)) || (endSelector && hasPseudoElement(endSelector))) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t}\n\t\t\t\t\t// 3. Basic syntax errors (mismatched parens, brackets, quotes)\n\t\t\t\t\telse if ((startSelector && hasBasicSyntaxError(startSelector)) || (endSelector && hasBasicSyntaxError(endSelector))) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t}\n\t\t\t\t\t// 4. Invalid combinator patterns\n\t\t\t\t\telse if ((startSelector && hasInvalidCombinators(startSelector)) || (endSelector && hasInvalidCombinators(endSelector))) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t}\n\t\t\t\t\t// 5. Invalid pseudo-like syntax (function without : or :: prefix)\n\t\t\t\t\telse if ((startSelector && hasInvalidPseudoSyntax(startSelector)) || (endSelector && hasInvalidPseudoSyntax(endSelector))) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t}\n\t\t\t\t\t// 6. Invalid structure (no proper parentheses found when prelude is not empty)\n\t\t\t\t\telse if (!hasStart && !hasOnlyEnd) {\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Empty prelude (@scope {}) is valid\n\t\t\t}\n\t\t}\n\n\t\tif (isValid && atRuleKey === \"@page\") {\n\t\t\tvar openBraceIndex = ruleSlice.indexOf('{');\n\t\t\tif (openBraceIndex !== -1) {\n\t\t\t\t// Extract the rule prelude (everything between the at-rule and {)\n\t\t\t\tvar rulePrelude = ruleSlice.slice(0, openBraceIndex).trim();\n\n\t\t\t\t// Skip past at-rule keyword and whitespace\n\t\t\t\tvar preludeContent = rulePrelude.slice(\"@page\".length).trim();\n\n\t\t\t\tif (preludeContent.length > 0) {\n\t\t\t\t\tvar trimmedValue = preludeContent.trim();\n\n\t\t\t\t\t// Empty selector is valid for @page\n\t\t\t\t\tif (trimmedValue !== '') {\n\t\t\t\t\t\t// Parse @page selectorText for page name and pseudo-pages\n\t\t\t\t\t\t// Valid formats:\n\t\t\t\t\t\t// - (empty - no name, no pseudo-page)\n\t\t\t\t\t\t// - :left, :right, :first, :blank (pseudo-page only)\n\t\t\t\t\t\t// - named (named page only)\n\t\t\t\t\t\t// - named:first (named page with single pseudo-page)\n\t\t\t\t\t\t// - named:first:left (named page with multiple pseudo-pages)\n\t\t\t\t\t\tvar match = trimmedValue.match(atPageRuleSelectorRegExp);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tvar pageName = match[1] || '';\n\t\t\t\t\t\t\tvar pseudoPages = match[2] || '';\n\n\t\t\t\t\t\t\t// Validate page name if present\n\t\t\t\t\t\t\tif (pageName) {\n\t\t\t\t\t\t\t\tif (!cssCustomIdentifierRegExp.test(pageName)) {\n\t\t\t\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Validate pseudo-pages if present\n\t\t\t\t\t\t\tif (pseudoPages) {\n\t\t\t\t\t\t\t\tvar pseudos = pseudoPages.split(':').filter(function (p) { return p; });\n\t\t\t\t\t\t\t\tvar validPseudos = ['left', 'right', 'first', 'blank'];\n\t\t\t\t\t\t\t\tvar allValid = true;\n\t\t\t\t\t\t\t\tfor (var j = 0; j < pseudos.length; j++) {\n\t\t\t\t\t\t\t\t\tif (validPseudos.indexOf(pseudos[j].toLowerCase()) === -1) {\n\t\t\t\t\t\t\t\t\t\tallValid = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!allValid) {\n\t\t\t\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tisValid = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\t// If it's invalid the browser will simply ignore the entire invalid block\n\t\t\t// Use regex to find the closing brace of the invalid rule\n\n\t\t\t// Regex used above is not ES5 compliant. Using alternative.\n\t\t\t// var ruleStatementMatch = ruleSlice.match(atRulesStatemenRegExp); //\n\t\t\tvar ruleStatementMatch = atRulesStatemenRegExpES5Alternative(ruleSlice);\n\n\t\t\t// If it's a statement inside a nested rule, ignore only the statement\n\t\t\tif (ruleStatementMatch && currentScope !== topScope) {\n\t\t\t\tvar ignoreEnd = ruleStatementMatch[0].indexOf(\";\");\n\t\t\t\ti += ruleStatementMatch.index + ignoreEnd;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if there's a semicolon before the invalid at-rule and the first opening brace\n\t\t\tif (atRuleKey === \"@layer\") {\n\t\t\t\tvar ruleSemicolonAndOpeningBraceMatch = ruleSlice.match(forwardRuleSemicolonAndOpeningBraceRegExp);\n\t\t\t\tif (ruleSemicolonAndOpeningBraceMatch && ruleSemicolonAndOpeningBraceMatch[1] === \";\") {\n\t\t\t\t\t// Ignore the rule block until the semicolon\n\t\t\t\t\ti += ruleSemicolonAndOpeningBraceMatch.index + ruleSemicolonAndOpeningBraceMatch[0].length;\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Ignore the entire rule block (if it's a statement it should ignore the statement plus the next block)\n\t\t\ti = ignoreBalancedBlock(i, ruleSlice);\n\t\t\tstate = \"before-selector\";\n\t\t} else {\n\t\t\tvalidCallback.call(this);\n\t\t}\n\t}\n\n\t// Helper functions for looseSelectorValidator\n\t// Defined outside to avoid recreation on every validation call\n\n\t/**\n\t * Check if character is a valid identifier start\n\t * @param {string} c - Character to check\n\t * @returns {boolean}\n\t */\n\tfunction isIdentStart(c) {\n\t\treturn /[a-zA-Z_\\u00A0-\\uFFFF]/.test(c);\n\t}\n\n\t/**\n\t * Check if character is a valid identifier character\n\t * @param {string} c - Character to check\n\t * @returns {boolean}\n\t */\n\tfunction isIdentChar(c) {\n\t\treturn /[a-zA-Z0-9_\\u00A0-\\uFFFF\\-]/.test(c);\n\t}\n\n\t/**\n\t * Helper function to validate CSS selector syntax without regex backtracking.\n\t * Iteratively parses the selector string to identify valid components.\n\t * \n\t * Supports:\n\t * - Escaped characters (e.g., .class\\!, #id\\@name)\n\t * - Namespace selectors (ns|element, *|element, |element)\n\t * - All standard CSS selectors (class, ID, type, attribute, pseudo, etc.)\n\t * - Combinators (>, +, ~, whitespace)\n\t * - Nesting selector (&)\n\t * \n\t * This approach eliminates exponential backtracking by using explicit character-by-character\n\t * parsing instead of nested quantifiers in regex.\n\t * \n\t * @param {string} selector - The selector to validate\n\t * @returns {boolean} - True if valid selector syntax\n\t */\n\tfunction looseSelectorValidator(selector) {\n\t\tif (!selector || selector.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i = 0;\n\t\tvar len = selector.length;\n\t\tvar hasMatchedComponent = false;\n\n\t\t// Helper: Skip escaped character (backslash + hex escape or any char)\n\t\tfunction skipEscape() {\n\t\t\tif (i < len && selector[i] === '\\\\') {\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(selector, i);\n\t\t\t\tif (escapeLen > 0) {\n\t\t\t\t\ti += escapeLen; // Skip entire escape sequence\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Helper: Parse identifier (with possible escapes)\n\t\tfunction parseIdentifier() {\n\t\t\tvar start = i;\n\t\t\twhile (i < len) {\n\t\t\t\tif (skipEscape()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (isIdentChar(selector[i])) {\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn i > start;\n\t\t}\n\n\t\t// Helper: Parse namespace prefix (optional)\n\t\tfunction parseNamespace() {\n\t\t\tvar start = i;\n\n\t\t\t// Match: *| or identifier| or |\n\t\t\tif (i < len && selector[i] === '*') {\n\t\t\t\ti++;\n\t\t\t} else if (i < len && (isIdentStart(selector[i]) || selector[i] === '\\\\')) {\n\t\t\t\tparseIdentifier();\n\t\t\t}\n\n\t\t\tif (i < len && selector[i] === '|') {\n\t\t\t\ti++;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Rollback if no pipe found\n\t\t\ti = start;\n\t\t\treturn false;\n\t\t}\n\n\t\t// Helper: Parse pseudo-class/element arguments (with balanced parens)\n\t\tfunction parsePseudoArgs() {\n\t\t\tif (i >= len || selector[i] !== '(') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\ti++; // Skip opening paren\n\t\t\tvar depth = 1;\n\t\t\tvar inString = false;\n\t\t\tvar stringChar = '';\n\n\t\t\twhile (i < len && depth > 0) {\n\t\t\t\tvar c = selector[i];\n\n\t\t\t\tif (c === '\\\\' && i + 1 < len) {\n\t\t\t\t\ti += 2; // Skip escaped character\n\t\t\t\t} else if (!inString && (c === '\"' || c === '\\'')) {\n\t\t\t\t\tinString = true;\n\t\t\t\t\tstringChar = c;\n\t\t\t\t\ti++;\n\t\t\t\t} else if (inString && c === stringChar) {\n\t\t\t\t\tinString = false;\n\t\t\t\t\ti++;\n\t\t\t\t} else if (!inString && c === '(') {\n\t\t\t\t\tdepth++;\n\t\t\t\t\ti++;\n\t\t\t\t} else if (!inString && c === ')') {\n\t\t\t\t\tdepth--;\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn depth === 0;\n\t\t}\n\n\t\t// Main parsing loop\n\t\twhile (i < len) {\n\t\t\tvar matched = false;\n\t\t\tvar start = i;\n\n\t\t\t// Skip whitespace\n\t\t\twhile (i < len && /\\s/.test(selector[i])) {\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i > start) {\n\t\t\t\thasMatchedComponent = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Match combinators: >, +, ~\n\t\t\tif (i < len && /[>+~]/.test(selector[i])) {\n\t\t\t\ti++;\n\t\t\t\thasMatchedComponent = true;\n\t\t\t\t// Skip trailing whitespace\n\t\t\t\twhile (i < len && /\\s/.test(selector[i])) {\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Match nesting selector: &\n\t\t\tif (i < len && selector[i] === '&') {\n\t\t\t\ti++;\n\t\t\t\thasMatchedComponent = true;\n\t\t\t\tmatched = true;\n\t\t\t}\n\t\t\t// Match class selector: .identifier\n\t\t\telse if (i < len && selector[i] === '.') {\n\t\t\t\ti++;\n\t\t\t\tif (parseIdentifier()) {\n\t\t\t\t\thasMatchedComponent = true;\n\t\t\t\t\tmatched = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Match ID selector: #identifier\n\t\t\telse if (i < len && selector[i] === '#') {\n\t\t\t\ti++;\n\t\t\t\tif (parseIdentifier()) {\n\t\t\t\t\thasMatchedComponent = true;\n\t\t\t\t\tmatched = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Match pseudo-class/element: :identifier or ::identifier\n\t\t\telse if (i < len && selector[i] === ':') {\n\t\t\t\ti++;\n\t\t\t\tif (i < len && selector[i] === ':') {\n\t\t\t\t\ti++; // Pseudo-element\n\t\t\t\t}\n\t\t\t\tif (parseIdentifier()) {\n\t\t\t\t\tparsePseudoArgs(); // Optional arguments\n\t\t\t\t\thasMatchedComponent = true;\n\t\t\t\t\tmatched = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Match attribute selector: [...]\n\t\t\telse if (i < len && selector[i] === '[') {\n\t\t\t\ti++;\n\t\t\t\tvar depth = 1;\n\t\t\t\twhile (i < len && depth > 0) {\n\t\t\t\t\tif (selector[i] === '\\\\') {\n\t\t\t\t\t\ti += 2;\n\t\t\t\t\t} else if (selector[i] === '\\'') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < len && selector[i] !== '\\'') {\n\t\t\t\t\t\t\tif (selector[i] === '\\\\') i += 2;\n\t\t\t\t\t\t\telse i++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < len) i++; // Skip closing quote\n\t\t\t\t\t} else if (selector[i] === '\"') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\twhile (i < len && selector[i] !== '\"') {\n\t\t\t\t\t\t\tif (selector[i] === '\\\\') i += 2;\n\t\t\t\t\t\t\telse i++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < len) i++; // Skip closing quote\n\t\t\t\t\t} else if (selector[i] === '[') {\n\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\ti++;\n\t\t\t\t\t} else if (selector[i] === ']') {\n\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\ti++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (depth === 0) {\n\t\t\t\t\thasMatchedComponent = true;\n\t\t\t\t\tmatched = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Match type selector with optional namespace: [namespace|]identifier\n\t\t\telse if (i < len && (isIdentStart(selector[i]) || selector[i] === '\\\\' || selector[i] === '*' || selector[i] === '|')) {\n\t\t\t\tparseNamespace(); // Optional namespace prefix\n\n\t\t\t\tif (i < len && selector[i] === '*') {\n\t\t\t\t\ti++; // Universal selector\n\t\t\t\t\thasMatchedComponent = true;\n\t\t\t\t\tmatched = true;\n\t\t\t\t} else if (i < len && (isIdentStart(selector[i]) || selector[i] === '\\\\')) {\n\t\t\t\t\tif (parseIdentifier()) {\n\t\t\t\t\t\thasMatchedComponent = true;\n\t\t\t\t\t\tmatched = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If no match found, invalid selector\n\t\t\tif (!matched && i === start) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn hasMatchedComponent;\n\t}\n\n\t/**\n\t * Validates a basic CSS selector, allowing for deeply nested balanced parentheses in pseudo-classes.\n\t * This function replaces the previous basicSelectorRegExp.\n\t * \n\t * This function matches:\n\t * - Type selectors (e.g., `div`, `span`)\n\t * - Universal selector (`*`)\n\t * - Namespace selectors (e.g., `*|div`, `custom|div`, `|div`)\n\t * - ID selectors (e.g., `#header`, `#a\\ b`, `#åèiöú`)\n\t * - Class selectors (e.g., `.container`, `.a\\ b`, `.åèiöú`)\n\t * - Attribute selectors (e.g., `[type=\"text\"]`)\n\t * - Pseudo-classes and pseudo-elements (e.g., `:hover`, `::before`, `:nth-child(2)`)\n\t * - Pseudo-classes with nested parentheses, including cases where parentheses are nested inside arguments,\n\t *   such as `:has(.sel:nth-child(3n))`\n\t * - The parent selector (`&`)\n\t * - Combinators (`>`, `+`, `~`) with optional whitespace\n\t * - Whitespace (descendant combinator)\n\t *\n\t * Unicode and escape sequences are allowed in identifiers.\n\t *\n\t * @param {string} selector\n\t * @returns {boolean}\n\t */\n\tfunction basicSelectorValidator(selector) {\n\t\t// Guard against extremely long selectors to prevent potential regex performance issues\n\t\t// Reasonable selectors are typically under 1000 characters\n\t\tif (selector.length > 10000) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Validate balanced syntax with attribute tracking and stack-based parentheses matching\n\t\tif (!validateBalancedSyntax(selector, true, true)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check for invalid combinator patterns\n\t\tif (hasInvalidCombinators(selector)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check for invalid pseudo-like syntax\n\t\tif (hasInvalidPseudoSyntax(selector)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check for invalid nesting selector (&) usage\n\t\tif (hasInvalidNestingSelector(selector)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check for invalid pseudo-class usage with quoted strings\n\t\t// Pseudo-classes like :lang(), :dir(), :nth-*() should not accept quoted strings\n\t\t// Using iterative parsing instead of regex to avoid exponential backtracking\n\t\tvar noQuotesPseudos = ['lang', 'dir', 'nth-child', 'nth-last-child', 'nth-of-type', 'nth-last-of-type'];\n\n\t\tfor (var idx = 0; idx < selector.length; idx++) {\n\t\t\t// Look for pseudo-class/element start\n\t\t\tif (selector[idx] === ':') {\n\t\t\t\tvar pseudoStart = idx;\n\t\t\t\tidx++;\n\n\t\t\t\t// Skip second colon for pseudo-elements\n\t\t\t\tif (idx < selector.length && selector[idx] === ':') {\n\t\t\t\t\tidx++;\n\t\t\t\t}\n\n\t\t\t\t// Extract pseudo name\n\t\t\t\tvar nameStart = idx;\n\t\t\t\twhile (idx < selector.length && /[a-zA-Z0-9\\-]/.test(selector[idx])) {\n\t\t\t\t\tidx++;\n\t\t\t\t}\n\n\t\t\t\tif (idx === nameStart) {\n\t\t\t\t\tcontinue; // No name found\n\t\t\t\t}\n\n\t\t\t\tvar pseudoName = selector.substring(nameStart, idx).toLowerCase();\n\n\t\t\t\t// Check if this pseudo has arguments\n\t\t\t\tif (idx < selector.length && selector[idx] === '(') {\n\t\t\t\t\tidx++;\n\t\t\t\t\tvar contentStart = idx;\n\t\t\t\t\tvar depth = 1;\n\n\t\t\t\t\t// Find matching closing paren (handle nesting)\n\t\t\t\t\twhile (idx < selector.length && depth > 0) {\n\t\t\t\t\t\tif (selector[idx] === '\\\\') {\n\t\t\t\t\t\t\tidx += 2; // Skip escaped character\n\t\t\t\t\t\t} else if (selector[idx] === '(') {\n\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\tidx++;\n\t\t\t\t\t\t} else if (selector[idx] === ')') {\n\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t\tidx++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tidx++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (depth === 0) {\n\t\t\t\t\t\tvar pseudoContent = selector.substring(contentStart, idx - 1);\n\n\t\t\t\t\t\t// Check if this pseudo should not have quoted strings\n\t\t\t\t\t\tfor (var j = 0; j < noQuotesPseudos.length; j++) {\n\t\t\t\t\t\t\tif (pseudoName === noQuotesPseudos[j] && /['\"]/.test(pseudoContent)) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Use the iterative validator to avoid regex backtracking issues\n\t\treturn looseSelectorValidator(selector);\n\t}\n\n\t/**\n\t * Regular expression to match CSS pseudo-classes with arguments.\n\t *\n\t * Matches patterns like `:pseudo-class(argument)`, capturing the pseudo-class name and its argument.\n\t *\n\t * Capture groups:\n\t *   1. The pseudo-class name (letters and hyphens).\n\t *   2. The argument inside the parentheses (can contain nested parentheses, quoted strings, and other characters.).\n\t *\n\t * Global flag (`g`) is used to find all matches in the input string.\n\t *\n\t * Example matches:\n\t *   - :nth-child(2n+1)\n\t *   - :has(.sel:nth-child(3n))\n\t *   - :not(\".foo, .bar\")\n\t *\n\t * REPLACED WITH FUNCTION to avoid exponential backtracking.\n\t */\n\n\t/**\n\t * Extract pseudo-classes with arguments from a selector using iterative parsing.\n\t * Replaces the previous globalPseudoClassRegExp to avoid exponential backtracking.\n\t * \n\t * Handles:\n\t * - Regular content without parentheses or quotes\n\t * - Single-quoted strings\n\t * - Double-quoted strings  \n\t * - Nested parentheses (arbitrary depth)\n\t * \n\t * @param {string} selector - The CSS selector to parse\n\t * @returns {Array} Array of matches, each with: [fullMatch, pseudoName, pseudoArgs, startIndex]\n\t */\n\tfunction extractPseudoClasses(selector) {\n\t\tvar matches = [];\n\n\t\tfor (var i = 0; i < selector.length; i++) {\n\t\t\t// Look for pseudo-class start (single or double colon)\n\t\t\tif (selector[i] === ':') {\n\t\t\t\tvar pseudoStart = i;\n\t\t\t\ti++;\n\n\t\t\t\t// Skip second colon for pseudo-elements (::)\n\t\t\t\tif (i < selector.length && selector[i] === ':') {\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\t// Extract pseudo name\n\t\t\t\tvar nameStart = i;\n\t\t\t\twhile (i < selector.length && /[a-zA-Z\\-]/.test(selector[i])) {\n\t\t\t\t\ti++;\n\t\t\t\t}\n\n\t\t\t\tif (i === nameStart) {\n\t\t\t\t\tcontinue; // No name found\n\t\t\t\t}\n\n\t\t\t\tvar pseudoName = selector.substring(nameStart, i);\n\n\t\t\t\t// Check if this pseudo has arguments\n\t\t\t\tif (i < selector.length && selector[i] === '(') {\n\t\t\t\t\ti++;\n\t\t\t\t\tvar argsStart = i;\n\t\t\t\t\tvar depth = 1;\n\t\t\t\t\tvar inSingleQuote = false;\n\t\t\t\t\tvar inDoubleQuote = false;\n\n\t\t\t\t\t// Find matching closing paren (handle nesting and strings)\n\t\t\t\t\twhile (i < selector.length && depth > 0) {\n\t\t\t\t\t\tvar ch = selector[i];\n\n\t\t\t\t\t\tif (ch === '\\\\') {\n\t\t\t\t\t\t\ti += 2; // Skip escaped character\n\t\t\t\t\t\t} else if (ch === \"'\" && !inDoubleQuote) {\n\t\t\t\t\t\t\tinSingleQuote = !inSingleQuote;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t} else if (ch === '\"' && !inSingleQuote) {\n\t\t\t\t\t\t\tinDoubleQuote = !inDoubleQuote;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t} else if (ch === '(' && !inSingleQuote && !inDoubleQuote) {\n\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t} else if (ch === ')' && !inSingleQuote && !inDoubleQuote) {\n\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (depth === 0) {\n\t\t\t\t\t\tvar pseudoArgs = selector.substring(argsStart, i - 1);\n\t\t\t\t\t\tvar fullMatch = selector.substring(pseudoStart, i);\n\n\t\t\t\t\t\t// Store match in same format as regex: [fullMatch, pseudoName, pseudoArgs, startIndex]\n\t\t\t\t\t\tmatches.push([fullMatch, pseudoName, pseudoArgs, pseudoStart]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Move back one since loop will increment\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t}\n\n\t/**\n\t * Parses a CSS selector string and splits it into parts, handling nested parentheses.\n\t *\n\t * This function is useful for splitting selectors that may contain nested function-like\n\t * syntax (e.g., :not(.foo, .bar)), ensuring that commas inside parentheses do not split\n\t * the selector.\n\t *\n\t * @param {string} selector - The CSS selector string to parse.\n\t * @returns {string[]} An array of selector parts, split by top-level commas, with whitespace trimmed.\n\t */\n\tfunction parseAndSplitNestedSelectors(selector) {\n\t\tvar depth = 0;           // Track parenthesis nesting depth\n\t\tvar buffer = \"\";         // Accumulate characters for current selector part\n\t\tvar parts = [];          // Array of split selector parts\n\t\tvar inSingleQuote = false; // Track if we're inside single quotes\n\t\tvar inDoubleQuote = false; // Track if we're inside double quotes\n\t\tvar i, char;\n\n\t\tfor (i = 0; i < selector.length; i++) {\n\t\t\tchar = selector.charAt(i);\n\n\t\t\t// Handle escape sequences - skip them entirely\n\t\t\tif (char === '\\\\' && i + 1 < selector.length) {\n\t\t\t\tbuffer += char;\n\t\t\t\ti++;\n\t\t\t\tbuffer += selector.charAt(i);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Handle single quote strings\n\t\t\tif (char === \"'\" && !inDoubleQuote) {\n\t\t\t\tinSingleQuote = !inSingleQuote;\n\t\t\t\tbuffer += char;\n\t\t\t}\n\t\t\t// Handle double quote strings\n\t\t\telse if (char === '\"' && !inSingleQuote) {\n\t\t\t\tinDoubleQuote = !inDoubleQuote;\n\t\t\t\tbuffer += char;\n\t\t\t}\n\t\t\t// Process characters outside of quoted strings\n\t\t\telse if (!inSingleQuote && !inDoubleQuote) {\n\t\t\t\tif (char === '(') {\n\t\t\t\t\t// Entering a nested level (e.g., :is(...))\n\t\t\t\t\tdepth++;\n\t\t\t\t\tbuffer += char;\n\t\t\t\t} else if (char === ')') {\n\t\t\t\t\t// Exiting a nested level\n\t\t\t\t\tdepth--;\n\t\t\t\t\tbuffer += char;\n\t\t\t\t} else if (char === ',' && depth === 0) {\n\t\t\t\t\t// Found a top-level comma separator - split here\n\t\t\t\t\t// Note: escaped commas (\\,) are already handled above\n\t\t\t\t\tif (buffer.trim()) {\n\t\t\t\t\t\tparts.push(buffer.trim());\n\t\t\t\t\t}\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t} else {\n\t\t\t\t\t// Regular character - add to buffer\n\t\t\t\t\tbuffer += char;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Characters inside quoted strings - add to buffer\n\t\t\telse {\n\t\t\t\tbuffer += char;\n\t\t\t}\n\t\t}\n\n\t\t// Add any remaining content in buffer as the last part\n\t\tvar trimmed = buffer.trim();\n\t\tif (trimmed) {\n\t\t\t// Preserve trailing space if selector ends with hex escape\n\t\t\tvar endsWithHexEscape = endsWithHexEscapeRegExp.test(buffer);\n\t\t\tparts.push(endsWithHexEscape ? buffer.replace(leadingWhitespaceRegExp, '') : trimmed);\n\t\t}\n\n\t\treturn parts;\n\t}\n\n\t/**\n\t * Validates a CSS selector string, including handling of nested selectors within certain pseudo-classes.\n\t *\n\t * This function checks if the provided selector is valid according to the rules defined by\n\t * `basicSelectorValidator`. For pseudo-classes that accept selector lists (such as :not, :is, :has, :where),\n\t * it recursively validates each nested selector using the same validation logic.\n\t *\n\t * @param {string} selector - The CSS selector string to validate.\n\t * @returns {boolean} Returns `true` if the selector is valid, otherwise `false`.\n\t */\n\n\t// Cache to store validated selectors (previously a ES6 Map, now an ES5-compliant object)\n\tvar validatedSelectorsCache = {};\n\n\t// Only pseudo-classes that accept selector lists should recurse\n\tvar selectorListPseudoClasses = {\n\t\t'not': true,\n\t\t'is': true,\n\t\t'has': true,\n\t\t'where': true\n\t};\n\n\tfunction validateSelector(selector) {\n\t\tif (validatedSelectorsCache.hasOwnProperty(selector)) {\n\t\t\treturn validatedSelectorsCache[selector];\n\t\t}\n\n\t\t// Use function-based parsing to extract pseudo-classes (avoids backtracking)\n\t\tvar pseudoClassMatches = extractPseudoClasses(selector);\n\n\t\tfor (var j = 0; j < pseudoClassMatches.length; j++) {\n\t\t\tvar pseudoClass = pseudoClassMatches[j][1];\n\t\t\tif (selectorListPseudoClasses.hasOwnProperty(pseudoClass)) {\n\t\t\t\tvar nestedSelectors = parseAndSplitNestedSelectors(pseudoClassMatches[j][2]);\n\n\t\t\t\t// Check if ANY selector in the list contains & (nesting selector)\n\t\t\t\t// If so, skip validation for the entire selector list since & will be replaced at runtime\n\t\t\t\tvar hasAmpersand = false;\n\t\t\t\tfor (var k = 0; k < nestedSelectors.length; k++) {\n\t\t\t\t\tif (ampersandRegExp.test(nestedSelectors[k])) {\n\t\t\t\t\t\thasAmpersand = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If any selector has &, skip validation for this entire pseudo-class\n\t\t\t\tif (hasAmpersand) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Otherwise, validate each selector normally\n\t\t\t\tfor (var i = 0; i < nestedSelectors.length; i++) {\n\t\t\t\t\tvar nestedSelector = nestedSelectors[i];\n\t\t\t\t\tif (!validatedSelectorsCache.hasOwnProperty(nestedSelector)) {\n\t\t\t\t\t\tvar nestedSelectorValidation = validateSelector(nestedSelector);\n\t\t\t\t\t\tvalidatedSelectorsCache[nestedSelector] = nestedSelectorValidation;\n\t\t\t\t\t\tif (!nestedSelectorValidation) {\n\t\t\t\t\t\t\tvalidatedSelectorsCache[selector] = false;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!validatedSelectorsCache[nestedSelector]) {\n\t\t\t\t\t\tvalidatedSelectorsCache[selector] = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar basicSelectorValidation = basicSelectorValidator(selector);\n\t\tvalidatedSelectorsCache[selector] = basicSelectorValidation;\n\n\t\treturn basicSelectorValidation;\n\t}\n\n\t/**\n\t * Validates namespace selectors by checking if the namespace prefix is defined.\n\t * \n\t * @param {string} selector - The CSS selector to validate\n\t * @returns {boolean} Returns true if the namespace is valid, false otherwise\n\t */\n\tfunction validateNamespaceSelector(selector) {\n\t\t// Check if selector contains a namespace prefix\n\t\t// We need to ignore pipes inside attribute selectors\n\t\tvar pipeIndex = -1;\n\t\tvar inAttr = false;\n\t\tvar inSingleQuote = false;\n\t\tvar inDoubleQuote = false;\n\n\t\tfor (var i = 0; i < selector.length; i++) {\n\t\t\tvar char = selector[i];\n\n\t\t\t// Handle escape sequences - skip hex escapes or simple escapes\n\t\t\tif (char === '\\\\') {\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(selector, i);\n\t\t\t\tif (escapeLen > 0) {\n\t\t\t\t\ti += escapeLen - 1; // -1 because loop will increment\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (inSingleQuote) {\n\t\t\t\tif (char === \"'\") {\n\t\t\t\t\tinSingleQuote = false;\n\t\t\t\t}\n\t\t\t} else if (inDoubleQuote) {\n\t\t\t\tif (char === '\"') {\n\t\t\t\t\tinDoubleQuote = false;\n\t\t\t\t}\n\t\t\t} else if (inAttr) {\n\t\t\t\tif (char === \"]\") {\n\t\t\t\t\tinAttr = false;\n\t\t\t\t} else if (char === \"'\") {\n\t\t\t\t\tinSingleQuote = true;\n\t\t\t\t} else if (char === '\"') {\n\t\t\t\t\tinDoubleQuote = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (char === \"[\") {\n\t\t\t\t\tinAttr = true;\n\t\t\t\t} else if (char === \"|\" && !inAttr) {\n\t\t\t\t\t// This is a namespace separator, not an attribute operator\n\t\t\t\t\tpipeIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (pipeIndex === -1) {\n\t\t\treturn true; // No namespace, always valid\n\t\t}\n\n\t\tvar namespacePrefix = selector.substring(0, pipeIndex);\n\n\t\t// Universal namespace (*|) and default namespace (|) are always valid\n\t\tif (namespacePrefix === '*' || namespacePrefix === '') {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check if the custom namespace prefix is defined\n\t\treturn definedNamespacePrefixes.hasOwnProperty(namespacePrefix);\n\t}\n\n\t/**\n\t * Normalizes escape sequences in a selector to match browser behavior.\n\t * Decodes escape sequences and re-encodes them in canonical form.\n\t * \n\t * @param {string} selector - The selector to normalize\n\t * @returns {string} Normalized selector\n\t */\n\tfunction normalizeSelectorEscapes(selector) {\n\t\tvar result = '';\n\t\tvar i = 0;\n\t\tvar nextChar = '';\n\t\t\n\t\t// Track context for identifier boundaries\n\t\tvar inIdentifier = false;\n\t\tvar inAttribute = false;\n\t\tvar attributeDepth = 0;\n\t\tvar needsEscapeForIdent = false;\n\t\tvar lastWasHexEscape = false;\n\t\t\n\t\twhile (i < selector.length) {\n\t\t\tvar char = selector[i];\n\t\t\t\n\t\t\t// Track attribute selector context\n\t\t\tif (char === '[' && !inAttribute) {\n\t\t\t\tinAttribute = true;\n\t\t\t\tattributeDepth = 1;\n\t\t\t\tresult += char;\n\t\t\t\ti++;\n\t\t\t\tneedsEscapeForIdent = false;\n\t\t\t\tinIdentifier = false;\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tif (inAttribute) {\n\t\t\t\tif (char === '[') attributeDepth++;\n\t\t\t\tif (char === ']') {\n\t\t\t\t\tattributeDepth--;\n\t\t\t\t\tif (attributeDepth === 0) inAttribute = false;\n\t\t\t\t}\n\t\t\t\t// Don't normalize escapes inside attribute selectors\n\t\t\t\tif (char === '\\\\' && i + 1 < selector.length) {\n\t\t\t\t\tvar escapeLen = getEscapeSequenceLength(selector, i);\n\t\t\t\t\tresult += selector.substr(i, escapeLen);\n\t\t\t\t\ti += escapeLen;\n\t\t\t\t} else {\n\t\t\t\t\tresult += char;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\t// Handle escape sequences\n\t\t\tif (char === '\\\\') {\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(selector, i);\n\t\t\t\tif (escapeLen > 0) {\n\t\t\t\t\tvar escapeSeq = selector.substr(i, escapeLen);\n\t\t\t\t\tvar decoded = decodeEscapeSequence(escapeSeq);\n\t\t\t\t\tvar wasHexEscape = startsWithHexEscapeRegExp.test(escapeSeq);\n\t\t\t\t\tvar hadTerminatingSpace = wasHexEscape && escapeSeq[escapeLen - 1] === ' ';\n\t\t\t\t\tnextChar = selector[i + escapeLen] || '';\n\t\t\t\t\t\n\t\t\t\t\t// Check if this character needs escaping\n\t\t\t\t\tvar needsEscape = false;\n\t\t\t\t\tvar useHexEscape = false;\n\t\t\t\t\t\n\t\t\t\t\tif (needsEscapeForIdent) {\n\t\t\t\t\t\t// At start of identifier (after . # or -)\n\t\t\t\t\t\t// Digits must be escaped, letters/underscore/_/- don't need escaping\n\t\t\t\t\t\tif (isDigit(decoded)) {\n\t\t\t\t\t\t\tneedsEscape = true;\n\t\t\t\t\t\t\tuseHexEscape = true;\n\t\t\t\t\t\t} else if (decoded === '-') {\n\t\t\t\t\t\t\t// Dash at identifier start: keep escaped if it's the only character,\n\t\t\t\t\t\t\t// otherwise it can be decoded\n\t\t\t\t\t\t\tvar remainingSelector = selector.substring(i + escapeLen);\n\t\t\t\t\t\t\tvar hasMoreIdentChars = remainingSelector && identCharRegExp.test(remainingSelector[0]);\n\t\t\t\t\t\t\tneedsEscape = !hasMoreIdentChars;\n\t\t\t\t\t\t} else if (!identStartCharRegExp.test(decoded)) {\n\t\t\t\t\t\t\tneedsEscape = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (specialCharsNeedEscapeRegExp.test(decoded)) {\n\t\t\t\t\t\t\tneedsEscape = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (needsEscape) {\n\t\t\t\t\t\tif (useHexEscape) {\n\t\t\t\t\t\t\t// Use normalized hex escape\n\t\t\t\t\t\t\tvar codePoint = decoded.charCodeAt(0);\n\t\t\t\t\t\t\tvar hex = codePoint.toString(16);\n\t\t\t\t\t\t\tresult += '\\\\' + hex;\n\t\t\t\t\t\t\t// Add space if next char could continue the hex sequence, \n\t\t\t\t\t\t\t// or if at end of selector (to disambiguate the escape)\n\t\t\t\t\t\t\tif (isHexDigit(nextChar) || !nextChar || afterHexEscapeSeparatorRegExp.test(nextChar)) {\n\t\t\t\t\t\t\t\tresult += ' ';\n\t\t\t\t\t\t\t\tlastWasHexEscape = false;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlastWasHexEscape = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use simple character escape\n\t\t\t\t\t\t\tresult += '\\\\' + decoded;\n\t\t\t\t\t\t\tlastWasHexEscape = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No escape needed, use the character directly\n\t\t\t\t\t\t// But if previous was hex escape (without terminating space) and this is alphanumeric, add space\n\t\t\t\t\t\tif (lastWasHexEscape && !hadTerminatingSpace && isAlphanumeric(decoded)) {\n\t\t\t\t\t\t\tresult += ' ';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult += decoded;\n\t\t\t\t\t\t// Preserve terminating space at end of selector (when followed by non-ident char)\n\t\t\t\t\t\tif (hadTerminatingSpace && (!nextChar || afterHexEscapeSeparatorRegExp.test(nextChar))) {\n\t\t\t\t\t\t\tresult += ' ';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlastWasHexEscape = false;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ti += escapeLen;\n\t\t\t\t\t// After processing escape, check if we're still needing ident validation\n\t\t\t\t\t// Only stay in needsEscapeForIdent state if decoded was '-'\n\t\t\t\t\tneedsEscapeForIdent = needsEscapeForIdent && decoded === '-';\n\t\t\t\t\tinIdentifier = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Handle regular characters\n\t\t\tif (char === '.' || char === '#') {\n\t\t\t\tresult += char;\n\t\t\t\tneedsEscapeForIdent = true;\n\t\t\t\tinIdentifier = false;\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\ti++;\n\t\t\t} else if (char === '-' && needsEscapeForIdent) {\n\t\t\t\t// Dash after . or # - next char must be valid ident start or digit (which needs escaping)\n\t\t\t\tresult += char;\n\t\t\t\tneedsEscapeForIdent = true;\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\ti++;\n\t\t\t} else if (isDigit(char) && needsEscapeForIdent) {\n\t\t\t\t// Digit at identifier start must be hex escaped\n\t\t\t\tvar codePoint = char.charCodeAt(0);\n\t\t\t\tvar hex = codePoint.toString(16);\n\t\t\t\tresult += '\\\\' + hex;\n\t\t\t\tnextChar = selector[i + 1] || '';\n\t\t\t\t// Add space if next char could continue the hex sequence,\n\t\t\t\t// or if at end of selector (to disambiguate the escape)\n\t\t\t\tif (isHexDigit(nextChar) || !nextChar || afterHexEscapeSeparatorRegExp.test(nextChar)) {\n\t\t\t\t\tresult += ' ';\n\t\t\t\t\tlastWasHexEscape = false;\n\t\t\t\t} else {\n\t\t\t\t\tlastWasHexEscape = true;\n\t\t\t\t}\n\t\t\t\tneedsEscapeForIdent = false;\n\t\t\t\tinIdentifier = true;\n\t\t\t\ti++;\n\t\t\t} else if (char === ':' || combinatorOrSeparatorRegExp.test(char)) {\n\t\t\t\t// Combinators, separators, and pseudo-class markers reset identifier state\n\t\t\t\t// Preserve trailing space from hex escape\n\t\t\t\tif (!(char === ' ' && lastWasHexEscape && result[result.length - 1] === ' ')) {\n\t\t\t\t\tresult += char;\n\t\t\t\t}\n\t\t\t\tneedsEscapeForIdent = false;\n\t\t\t\tinIdentifier = false;\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\ti++;\n\t\t\t} else if (isLetter(char) && lastWasHexEscape) {\n\t\t\t\t// Letter after hex escape needs a space separator\n\t\t\t\tresult += ' ' + char;\n\t\t\t\tneedsEscapeForIdent = false;\n\t\t\t\tinIdentifier = true;\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\ti++;\n\t\t\t} else if (char === ' ' && lastWasHexEscape) {\n\t\t\t\t// Trailing space - keep it if at end or before non-ident char\n\t\t\t\tnextChar = selector[i + 1] || '';\n\t\t\t\tif (!nextChar || trailingSpaceSeparatorRegExp.test(nextChar)) {\n\t\t\t\t\tresult += char;\n\t\t\t\t}\n\t\t\t\tneedsEscapeForIdent = false;\n\t\t\t\tinIdentifier = false;\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\ti++;\n\t\t\t} else {\n\t\t\t\tresult += char;\n\t\t\t\tneedsEscapeForIdent = false;\n\t\t\t\tinIdentifier = true;\n\t\t\t\tlastWasHexEscape = false;\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\n\t/**\n\t * Helper function to decode all escape sequences in a string.\n\t * \n\t * @param {string} str - The string to decode\n\t * @returns {string} The decoded string\n\t */\n\tfunction decodeEscapeSequencesInString(str) {\n\t\tvar result = '';\n\t\tfor (var i = 0; i < str.length; i++) {\n\t\t\tif (str[i] === '\\\\' && i + 1 < str.length) {\n\t\t\t\t// Get the escape sequence length\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(str, i);\n\t\t\t\tif (escapeLen > 0) {\n\t\t\t\t\tvar escapeSeq = str.substr(i, escapeLen);\n\t\t\t\t\tvar decoded = decodeEscapeSequence(escapeSeq);\n\t\t\t\t\tresult += decoded;\n\t\t\t\t\ti += escapeLen - 1; // -1 because loop will increment\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult += str[i];\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Decodes a CSS escape sequence to its character value.\n\t * \n\t * @param {string} escapeSeq - The escape sequence (including backslash)\n\t * @returns {string} The decoded character\n\t */\n\tfunction decodeEscapeSequence(escapeSeq) {\n\t\tif (escapeSeq.length < 2 || escapeSeq[0] !== '\\\\') {\n\t\t\treturn escapeSeq;\n\t\t}\n\t\t\n\t\tvar content = escapeSeq.substring(1);\n\t\t\n\t\t// Check if it's a hex escape\n\t\tvar hexMatch = content.match(hexEscapeSequenceRegExp);\n\t\tif (hexMatch) {\n\t\t\tvar codePoint = parseInt(hexMatch[1], 16);\n\t\t\t// Handle surrogate pairs for code points > 0xFFFF\n\t\t\tif (codePoint > 0xFFFF) {\n\t\t\t\t// Convert to surrogate pair\n\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\tvar high = 0xD800 + (codePoint >> 10);\n\t\t\t\tvar low = 0xDC00 + (codePoint & 0x3FF);\n\t\t\t\treturn String.fromCharCode(high, low);\n\t\t\t}\n\t\t\treturn String.fromCharCode(codePoint);\n\t\t}\n\t\t\n\t\t// Simple escape - return the character after backslash\n\t\treturn content[0] || '';\n\t}\n\n\t/**\n\t * Normalizes attribute selectors by ensuring values are properly quoted with double quotes.\n\t * Examples:\n\t *   [attr=value] -> [attr=\"value\"]\n\t *   [attr=\"value\"] -> [attr=\"value\"] (unchanged)\n\t *   [attr='value'] -> [attr=\"value\"] (converted to double quotes)\n\t * \n\t * @param {string} selector - The selector to normalize\n\t * @returns {string|null} Normalized selector, or null if invalid\n\t */\n\tfunction normalizeAttributeSelectors(selector) {\n\t\tvar result = '';\n\t\tvar i = 0;\n\t\t\n\t\twhile (i < selector.length) {\n\t\t\t// Look for attribute selector start\n\t\t\tif (selector[i] === '[') {\n\t\t\t\tresult += '[';\n\t\t\t\ti++;\n\t\t\t\t\n\t\t\t\tvar attrContent = '';\n\t\t\t\tvar depth = 1;\n\t\t\t\t\n\t\t\t\t// Find the closing bracket, handling nested brackets and escapes\n\t\t\t\twhile (i < selector.length && depth > 0) {\n\t\t\t\t\tif (selector[i] === '\\\\' && i + 1 < selector.length) {\n\t\t\t\t\t\tattrContent += selector.substring(i, i + 2);\n\t\t\t\t\t\ti += 2;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (selector[i] === '[') depth++;\n\t\t\t\t\tif (selector[i] === ']') {\n\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\tif (depth === 0) break;\n\t\t\t\t\t}\n\t\t\t\t\tattrContent += selector[i];\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Normalize the attribute content\n\t\t\t\tvar normalized = normalizeAttributeContent(attrContent);\n\t\t\t\tif (normalized === null) {\n\t\t\t\t\t// Invalid attribute selector (e.g., unclosed quote)\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tresult += normalized;\n\t\t\t\tif (i < selector.length && selector[i] === ']') {\n\t\t\t\t\tresult += ']';\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult += selector[i];\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\n\t/**\n\t * Processes a quoted attribute value by checking for proper closure and decoding escape sequences.\n\t * @param {string} trimmedValue - The quoted value (with quotes)\n\t * @param {string} quoteChar - The quote character ('\"' or \"'\")\n\t * @param {string} attrName - The attribute name\n\t * @param {string} operator - The attribute operator\n\t * @param {string} flag - Optional case-sensitivity flag\n\t * @returns {string|null} Normalized attribute content, or null if invalid\n\t */\n\tfunction processQuotedAttributeValue(trimmedValue, quoteChar, attrName, operator, flag) {\n\t\t// Check if the closing quote is properly closed (not escaped)\n\t\tif (trimmedValue.length < 2) {\n\t\t\treturn null; // Too short\n\t\t}\n\t\t// Find the actual closing quote (not escaped)\n\t\tvar i = 1;\n\t\tvar foundClose = false;\n\t\twhile (i < trimmedValue.length) {\n\t\t\tif (trimmedValue[i] === '\\\\' && i + 1 < trimmedValue.length) {\n\t\t\t\t// Skip escape sequence\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(trimmedValue, i);\n\t\t\t\ti += escapeLen;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (trimmedValue[i] === quoteChar) {\n\t\t\t\t// Found closing quote\n\t\t\t\tfoundClose = (i === trimmedValue.length - 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\tif (!foundClose) {\n\t\t\treturn null; // Unclosed quote - invalid\n\t\t}\n\t\t// Extract inner value and decode escape sequences\n\t\tvar innerValue = trimmedValue.slice(1, -1);\n\t\tvar decodedValue = decodeEscapeSequencesInString(innerValue);\n\t\t// If decoded value contains quotes, we need to escape them\n\t\tvar escapedValue = decodedValue.replace(doubleQuoteRegExp, '\\\\\"');\n\t\treturn attrName + operator + '\"' + escapedValue + '\"' + (flag ? ' ' + flag : '');\n\t}\n\n\t/**\n\t * Normalizes the content inside an attribute selector.\n\t * @param {string} content - The content between [ and ]\n\t * @returns {string} Normalized content, or null if invalid\n\t */\n\tfunction normalizeAttributeContent(content) {\n\t\t// Match: attribute-name [operator] [value] [flag]\n\t\tvar match = content.match(attributeSelectorContentRegExp);\n\t\t\n\t\tif (!match) {\n\t\t\t// No operator (e.g., [disabled]) or malformed - return as is\n\t\t\treturn content;\n\t\t}\n\t\t\n\t\tvar attrName = match[1];\n\t\tvar operator = match[2];\n\t\tvar valueAndFlag = match[3].trim(); // Trim here instead of in regex\n\t\t\n\t\t// Check if there's a case-sensitivity flag (i or s) at the end\n\t\tvar flagMatch = valueAndFlag.match(attributeCaseFlagRegExp);\n\t\tvar value = flagMatch ? flagMatch[1] : valueAndFlag;\n\t\tvar flag = flagMatch ? flagMatch[2] : '';\n\t\t\n\t\t// Check for unclosed quotes - this makes the selector invalid\n\t\tvar trimmedValue = value.trim();\n\t\tvar firstChar = trimmedValue[0];\n\t\t\n\t\tif (firstChar === '\"') {\n\t\t\treturn processQuotedAttributeValue(trimmedValue, '\"', attrName, operator, flag);\n\t\t}\n\t\t\n\t\tif (firstChar === \"'\") {\n\t\t\treturn processQuotedAttributeValue(trimmedValue, \"'\", attrName, operator, flag);\n\t\t}\n\t\t\n\t\t// Check for unescaped special characters in unquoted values\n\t\t// Escaped special characters are valid (e.g., \\` is valid, but ` is not)\n\t\tvar hasUnescapedSpecialChar = false;\n\t\tfor (var i = 0; i < trimmedValue.length; i++) {\n\t\t\tvar char = trimmedValue[i];\n\t\t\tif (char === '\\\\' && i + 1 < trimmedValue.length) {\n\t\t\t\t// Skip the entire escape sequence\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(trimmedValue, i);\n\t\t\t\tif (escapeLen > 0) {\n\t\t\t\t\ti += escapeLen - 1; // -1 because loop will increment\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check if this is an unescaped special character\n\t\t\tif (specialCharsNeedEscapeRegExp.test(char)) {\n\t\t\t\thasUnescapedSpecialChar = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (hasUnescapedSpecialChar) {\n\t\t\treturn null; // Unescaped special characters not allowed in unquoted attribute values\n\t\t}\n\t\t\n\t\t// Decode escape sequences in the value before quoting\n\t\t// Inside quotes, special characters don't need escaping\n\t\tvar decodedValue = decodeEscapeSequencesInString(trimmedValue);\n\t\t\n\t\t// If the decoded value contains double quotes, escape them for the output\n\t\t// (since we're using double quotes as delimiters)\n\t\tvar escapedValue = decodedValue.replace(backslashRegExp, '\\\\\\\\').replace(doubleQuoteRegExp, '\\\\\"');\n\t\t\n\t\t// Unquoted value - add double quotes with decoded and re-escaped content\n\t\treturn attrName + operator + '\"' + escapedValue + '\"' + (flag ? ' ' + flag : '');\n\t}\n\n\t/**\n\t * Processes a CSS selector text \n\t * \n\t * @param {string} selectorText - The CSS selector text to process\n\t * @returns {string} The processed selector text with normalized whitespace and invalid selectors removed\n\t */\n\tfunction processSelectorText(selectorText) {\n\t\t// Normalize whitespace first\n\t\tvar normalized = selectorText.replace(whitespaceNormalizationRegExp, function (match, _, newline) {\n\t\t\tif (newline) return \" \";\n\t\t\treturn match;\n\t\t});\n\n\t\t// Normalize escape sequences to match browser behavior\n\t\tnormalized = normalizeSelectorEscapes(normalized);\n\n\t\t// Normalize attribute selectors (add quotes to unquoted values)\n\t\t// Returns null if invalid (e.g., unclosed quotes)\n\t\tnormalized = normalizeAttributeSelectors(normalized);\n\t\tif (normalized === null) {\n\t\t\treturn ''; // Invalid selector - return empty to trigger validation failure\n\t\t}\n\n\t\t// Recursively process pseudo-classes to handle nesting\n\t\treturn processNestedPseudoClasses(normalized);\n\t}\n\n\t/**\n\t * Recursively processes pseudo-classes to filter invalid selectors\n\t * \n\t * @param {string} selectorText - The CSS selector text to process\n\t * @param {number} depth - Current recursion depth (to prevent infinite loops)\n\t * @returns {string} The processed selector text with invalid selectors removed\n\t */\n\tfunction processNestedPseudoClasses(selectorText, depth) {\n\t\t// Prevent infinite recursion\n\t\tif (typeof depth === 'undefined') {\n\t\t\tdepth = 0;\n\t\t}\n\t\tif (depth > 10) {\n\t\t\treturn selectorText;\n\t\t}\n\n\t\tvar pseudoClassMatches = extractPseudoClasses(selectorText);\n\n\t\t// If no pseudo-classes found, return as-is\n\t\tif (pseudoClassMatches.length === 0) {\n\t\t\treturn selectorText;\n\t\t}\n\n\t\t// Build result by processing matches from right to left (to preserve positions)\n\t\tvar result = selectorText;\n\n\t\tfor (var j = pseudoClassMatches.length - 1; j >= 0; j--) {\n\t\t\tvar pseudoClass = pseudoClassMatches[j][1];\n\t\t\tif (selectorListPseudoClasses.hasOwnProperty(pseudoClass)) {\n\t\t\t\tvar fullMatch = pseudoClassMatches[j][0];\n\t\t\t\tvar pseudoArgs = pseudoClassMatches[j][2];\n\t\t\t\tvar matchStart = pseudoClassMatches[j][3];\n\n\t\t\t\t// Check if ANY selector contains & BEFORE processing\n\t\t\t\tvar nestedSelectorsRaw = parseAndSplitNestedSelectors(pseudoArgs);\n\t\t\t\tvar hasAmpersand = false;\n\t\t\t\tfor (var k = 0; k < nestedSelectorsRaw.length; k++) {\n\t\t\t\t\tif (ampersandRegExp.test(nestedSelectorsRaw[k])) {\n\t\t\t\t\t\thasAmpersand = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If & is present, skip all processing (keep everything unchanged)\n\t\t\t\tif (hasAmpersand) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recursively process the arguments\n\t\t\t\tvar processedArgs = processNestedPseudoClasses(pseudoArgs, depth + 1);\n\t\t\t\tvar nestedSelectors = parseAndSplitNestedSelectors(processedArgs);\n\n\t\t\t\t// Filter out invalid selectors\n\t\t\t\tvar validSelectors = [];\n\t\t\t\tfor (var i = 0; i < nestedSelectors.length; i++) {\n\t\t\t\t\tvar nestedSelector = nestedSelectors[i];\n\t\t\t\t\tif (basicSelectorValidator(nestedSelector)) {\n\t\t\t\t\t\tvalidSelectors.push(nestedSelector);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Reconstruct the pseudo-class with only valid selectors\n\t\t\t\tvar newArgs = validSelectors.join(', ');\n\t\t\t\tvar newPseudoClass = ':' + pseudoClass + '(' + newArgs + ')';\n\n\t\t\t\t// Replace in the result string using position (processing right to left preserves positions)\n\t\t\t\tresult = result.substring(0, matchStart) + newPseudoClass + result.substring(matchStart + fullMatch.length);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\n\t\treturn normalized;\n\t}\n\n\t/**\n\t * Checks if a selector contains newlines inside quoted strings.\n\t * Uses iterative parsing to avoid regex backtracking issues.\n\t * @param {string} selectorText - The selector to check\n\t * @returns {boolean} True if newlines found inside quotes\n\t */\n\tfunction hasNewlineInQuotedString(selectorText) {\n\t\tfor (var i = 0; i < selectorText.length; i++) {\n\t\t\tvar char = selectorText[i];\n\t\t\t\n\t\t\t// Start of single-quoted string\n\t\t\tif (char === \"'\") {\n\t\t\t\ti++;\n\t\t\t\twhile (i < selectorText.length) {\n\t\t\t\t\tif (selectorText[i] === '\\\\' && i + 1 < selectorText.length) {\n\t\t\t\t\t\t// Skip escape sequence\n\t\t\t\t\t\ti += 2;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (selectorText[i] === \"'\") {\n\t\t\t\t\t\t// End of string\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (selectorText[i] === '\\r' || selectorText[i] === '\\n') {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Start of double-quoted string\n\t\t\telse if (char === '\"') {\n\t\t\t\ti++;\n\t\t\t\twhile (i < selectorText.length) {\n\t\t\t\t\tif (selectorText[i] === '\\\\' && i + 1 < selectorText.length) {\n\t\t\t\t\t\t// Skip escape sequence\n\t\t\t\t\t\ti += 2;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (selectorText[i] === '\"') {\n\t\t\t\t\t\t// End of string\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (selectorText[i] === '\\r' || selectorText[i] === '\\n') {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Checks if a given CSS selector text is valid by splitting it by commas\n\t * and validating each individual selector using the `validateSelector` function.\n\t *\n\t * @param {string} selectorText - The CSS selector text to validate. Can contain multiple selectors separated by commas.\n\t * @returns {boolean} Returns true if all selectors are valid, otherwise false.\n\t */\n\tfunction isValidSelectorText(selectorText) {\n\t\t// TODO: The same validations here needs to be reused in CSSStyleRule.selectorText setter\n\t\t// TODO: Move these validation logic to a shared function to be reused in CSSStyleRule.selectorText setter\n\n\t\t// Check for empty or whitespace-only selector\n\t\tif (!selectorText || selectorText.trim() === '') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check for empty selector lists in pseudo-classes (e.g., :is(), :not(), :where(), :has())\n\t\t// These are invalid after filtering out invalid selectors\n\t\tif (emptyPseudoClassRegExp.test(selectorText)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check for newlines inside single or double quotes\n\t\t// Uses helper function to avoid regex security issues\n\t\tif (hasNewlineInQuotedString(selectorText)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Split selectorText by commas and validate each part\n\t\tvar selectors = parseAndSplitNestedSelectors(selectorText);\n\t\tfor (var i = 0; i < selectors.length; i++) {\n\t\t\tvar selector = selectors[i].trim();\n\t\t\tif (!validateSelector(selector) || !validateNamespaceSelector(selector)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tfunction pushToAncestorRules(rule) {\n\t\tancestorRules.push(rule);\n\t}\n\n\tfunction parseError(message, isNested) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\terror.isNested = !!isNested;\n\t\t// Print the error but continue parsing the sheet\n\t\ttry {\n\t\t\tthrow error;\n\t\t} catch (e) {\n\t\t\terrorHandler && errorHandler(e);\n\t\t}\n\t};\n\n\t/**\n\t * Handles invalid selectors with unmatched quotes by skipping the entire rule block.\n\t * @param {string} nextState - The parser state to transition to after skipping\n\t */\n\tfunction handleUnmatchedQuoteInSelector(nextState) {\n\t\t// parseError('Invalid selector with unmatched quote: ' + buffer.trim());\n\t\t// Skip this entire invalid rule including its block\n\t\tvar ruleClosingMatch = token.slice(i).match(forwardRuleClosingBraceRegExp);\n\t\tif (ruleClosingMatch) {\n\t\t\ti += ruleClosingMatch.index + ruleClosingMatch[0].length - 1;\n\t\t}\n\t\tstyleRule = null;\n\t\tbuffer = \"\";\n\t\thasUnmatchedQuoteInSelector = false; // Reset flag\n\t\tstate = nextState;\n\t}\n\n\t// Helper functions to check character types\n\tfunction isSelectorStartChar(char) {\n\t\treturn '.:#&*['.indexOf(char) !== -1;\n\t}\n\n\tfunction isWhitespaceChar(char) {\n\t\treturn ' \\t\\n\\r'.indexOf(char) !== -1;\n\t}\n\n\t// Helper functions for character type checking (faster than regex for single chars)\n\tfunction isDigit(char) {\n\t\tvar code = char.charCodeAt(0);\n\t\treturn code >= 0x0030 && code <= 0x0039; // 0-9\n\t}\n\n\tfunction isHexDigit(char) {\n\t\tif (!char) return false;\n\t\tvar code = char.charCodeAt(0);\n\t\treturn (code >= 0x0030 && code <= 0x0039) || // 0-9\n\t\t       (code >= 0x0041 && code <= 0x0046) || // A-F\n\t\t       (code >= 0x0061 && code <= 0x0066);   // a-f\n\t}\n\n\tfunction isLetter(char) {\n\t\tif (!char) return false;\n\t\tvar code = char.charCodeAt(0);\n\t\treturn (code >= 0x0041 && code <= 0x005A) || // A-Z\n\t\t       (code >= 0x0061 && code <= 0x007A);   // a-z\n\t}\n\n\tfunction isAlphanumeric(char) {\n\t\tvar code = char.charCodeAt(0);\n\t\treturn (code >= 0x0030 && code <= 0x0039) || // 0-9\n\t\t       (code >= 0x0041 && code <= 0x005A) || // A-Z\n\t\t       (code >= 0x0061 && code <= 0x007A);   // a-z\n\t}\n\n\t/**\n\t * Get the length of an escape sequence starting at the given position.\n\t * CSS escape sequences are:\n\t * - Backslash followed by 1-6 hex digits, optionally followed by a whitespace (consumed)\n\t * - Backslash followed by any non-hex character\n\t * @param {string} str - The string to check\n\t * @param {number} pos - Position of the backslash\n\t * @returns {number} Number of characters in the escape sequence (including backslash)\n\t */\n\tfunction getEscapeSequenceLength(str, pos) {\n\t\tif (str[pos] !== '\\\\' || pos + 1 >= str.length) {\n\t\t\treturn 0;\n\t\t}\n\t\t\n\t\tvar nextChar = str[pos + 1];\n\t\t\n\t\t// Check if it's a hex escape\n\t\tif (isHexDigit(nextChar)) {\n\t\t\tvar hexLength = 1;\n\t\t\t// Count up to 6 hex digits\n\t\t\twhile (hexLength < 6 && pos + 1 + hexLength < str.length && isHexDigit(str[pos + 1 + hexLength])) {\n\t\t\t\thexLength++;\n\t\t\t}\n\t\t\t// Check if followed by optional whitespace (which gets consumed)\n\t\t\tif (pos + 1 + hexLength < str.length && isWhitespaceChar(str[pos + 1 + hexLength])) {\n\t\t\t\treturn 1 + hexLength + 1; // backslash + hex digits + whitespace\n\t\t\t}\n\t\t\treturn 1 + hexLength; // backslash + hex digits\n\t\t}\n\t\t\n\t\t// Simple escape: backslash + any character\n\t\treturn 2;\n\t}\n\n\t/**\n\t * Check if a string contains an unescaped occurrence of a specific character\n\t * @param {string} str - The string to search\n\t * @param {string} char - The character to look for\n\t * @returns {boolean} True if the character appears unescaped\n\t */\n\tfunction containsUnescaped(str, char) {\n\t\tfor (var i = 0; i < str.length; i++) {\n\t\t\tif (str[i] === '\\\\') {\n\t\t\t\tvar escapeLen = getEscapeSequenceLength(str, i);\n\t\t\t\tif (escapeLen > 0) {\n\t\t\t\t\ti += escapeLen - 1; // -1 because loop will increment\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (str[i] === char) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tvar endingIndex = token.length - 1;\n\tvar initialEndingIndex = endingIndex;\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\t\tif (i === endingIndex) {\n\t\t\tswitch (state) {\n\t\t\t\tcase \"importRule\":\n\t\t\t\tcase \"namespaceRule\":\n\t\t\t\tcase \"layerBlock\":\n\t\t\t\t\tif (character !== \";\") {\n\t\t\t\t\t\ttoken += \";\";\n\t\t\t\t\t\tendingIndex += 1;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"value\":\n\t\t\t\t\tif (character !== \"}\") {\n\t\t\t\t\t\tif (character === \";\") {\n\t\t\t\t\t\t\ttoken += \"}\"\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttoken += \";\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tendingIndex += 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\tcase \"name\":\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tif (character === \"}\") {\n\t\t\t\t\t\ttoken += \" \"\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttoken += \"}\"\n\t\t\t\t\t}\n\t\t\t\t\tendingIndex += 1\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tif (character !== \"}\" && currentScope !== styleSheet) {\n\t\t\t\t\t\ttoken += \"}\"\n\t\t\t\t\t\tendingIndex += 1\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Handle escape sequences before processing special characters\n\t\t// CSS escape sequences: \\HHHHHH (1-6 hex digits) optionally followed by whitespace, or \\ + any char\n\t\tif (character === '\\\\' && i + 1 < token.length) {\n\t\t\tvar escapeLen = getEscapeSequenceLength(token, i);\n\t\t\tif (escapeLen > 0) {\n\t\t\t\tbuffer += token.substr(i, escapeLen);\n\t\t\t\ti += escapeLen - 1; // -1 because loop will increment\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tswitch (character) {\n\n\t\t\tcase \" \":\n\t\t\tcase \"\\t\":\n\t\t\tcase \"\\r\":\n\t\t\tcase \"\\n\":\n\t\t\tcase \"\\f\":\n\t\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// String\n\t\t\tcase '\"':\n\t\t\t\tindex = i + 1;\n\t\t\t\tdo {\n\t\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\t\tif (!index) {\n\t\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t\t\t// If we're parsing a selector, flag it as invalid\n\t\t\t\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\t\t\t\thasUnmatchedQuoteInSelector = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbuffer += token.slice(i, index);\n\t\t\t\ti = index - 1;\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase 'before-value':\n\t\t\t\t\t\tstate = 'value';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\t\tif (i === endingIndex) {\n\t\t\t\t\t\t\ttoken += ';'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'namespaceRule-begin':\n\t\t\t\t\t\tstate = 'namespaceRule';\n\t\t\t\t\t\tif (i === endingIndex) {\n\t\t\t\t\t\t\ttoken += ';'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\t\tindex = i + 1;\n\t\t\t\tdo {\n\t\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\t\tif (!index) {\n\t\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t\t\t// If we're parsing a selector, flag it as invalid\n\t\t\t\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\t\t\t\thasUnmatchedQuoteInSelector = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbuffer += token.slice(i, index);\n\t\t\t\ti = index - 1;\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase 'before-value':\n\t\t\t\t\t\tstate = 'value';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'namespaceRule-begin':\n\t\t\t\t\t\tstate = 'namespaceRule';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// Comment\n\t\t\tcase \"/\":\n\t\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\t\ti += 2;\n\t\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\t\tif (index === -1) {\n\t\t\t\t\t\ti = token.length - 1;\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti = index + 1;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t}\n\t\t\t\tif (state === \"namespaceRule-begin\") {\n\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\tstate = \"namespaceRule\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// At-rule\n\t\t\tcase \"@\":\n\t\t\t\tif (nestedSelectorRule) {\n\t\t\t\t\tif (styleRule && styleRule.constructor.name === \"CSSNestedDeclarations\") {\n\t\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\t}\n\t\t\t\t\t// Only reset styleRule to parent if styleRule is not the nestedSelectorRule itself\n\t\t\t\t\t// This preserves nested selectors when followed immediately by @-rules\n\t\t\t\t\tif (styleRule !== nestedSelectorRule && nestedSelectorRule.parentRule && nestedSelectorRule.parentRule.constructor.name === \"CSSStyleRule\") {\n\t\t\t\t\t\tstyleRule = nestedSelectorRule.parentRule;\n\t\t\t\t\t}\n\t\t\t\t\t// Don't reset nestedSelectorRule here - preserve it through @-rules\n\t\t\t\t}\n\t\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@-moz-document\", function () {\n\t\t\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@media\", function () {\n\t\t\t\t\t\tstate = \"atBlock\";\n\t\t\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\t\t\tmediaRule.__starts = i;\n\t\t\t\t\t\ti += \"media\".length;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@container\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@container\", function () {\n\t\t\t\t\t\tstate = \"containerBlock\";\n\t\t\t\t\t\tcontainerRule = new CSSOM.CSSContainerRule();\n\t\t\t\t\t\tcontainerRule.__starts = i;\n\t\t\t\t\t\ti += \"container\".length;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@counter-style\", i) === i) {\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t// @counter-style can be nested only inside CSSScopeRule or CSSConditionRule\n\t\t\t\t\t// and only if there's no CSSStyleRule in the parent chain\n\t\t\t\t\tvar cannotBeNested = !canAtRuleBeNested();\n\t\t\t\t\tvalidateAtRule(\"@counter-style\", function () {\n\t\t\t\t\t\tstate = \"counterStyleBlock\"\n\t\t\t\t\t\tcounterStyleRule = new CSSOM.CSSCounterStyleRule();\n\t\t\t\t\t\tcounterStyleRule.__starts = i;\n\t\t\t\t\t\ti += \"counter-style\".length;\n\t\t\t\t\t}, cannotBeNested);\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@property\", i) === i) {\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t// @property can be nested only inside CSSScopeRule or CSSConditionRule\n\t\t\t\t\t// and only if there's no CSSStyleRule in the parent chain\n\t\t\t\t\tvar cannotBeNested = !canAtRuleBeNested();\n\t\t\t\t\tvalidateAtRule(\"@property\", function () {\n\t\t\t\t\t\tstate = \"propertyBlock\"\n\t\t\t\t\t\tpropertyRule = new CSSOM.CSSPropertyRule();\n\t\t\t\t\t\tpropertyRule.__starts = i;\n\t\t\t\t\t\ti += \"property\".length;\n\t\t\t\t\t}, cannotBeNested);\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@scope\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@scope\", function () {\n\t\t\t\t\t\tstate = \"scopeBlock\";\n\t\t\t\t\t\tscopeRule = new CSSOM.CSSScopeRule();\n\t\t\t\t\t\tscopeRule.__starts = i;\n\t\t\t\t\t\ti += \"scope\".length;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@layer\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@layer\", function () {\n\t\t\t\t\t\tstate = \"layerBlock\"\n\t\t\t\t\t\tlayerBlockRule = new CSSOM.CSSLayerBlockRule();\n\t\t\t\t\t\tlayerBlockRule.__starts = i;\n\t\t\t\t\t\ti += \"layer\".length;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@page\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@page\", function () {\n\t\t\t\t\t\tstate = \"pageBlock\"\n\t\t\t\t\t\tpageRule = new CSSOM.CSSPageRule();\n\t\t\t\t\t\tpageRule.__starts = i;\n\t\t\t\t\t\ti += \"page\".length;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@supports\", function () {\n\t\t\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\t\t\ti += \"supports\".length;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@host\", function () {\n\t\t\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\t\t\ti += \"host\".length;\n\t\t\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\t\t\thostRule.__starts = i;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@starting-style\", i) === i) {\n\t\t\t\t\tvalidateAtRule(\"@starting-style\", function () {\n\t\t\t\t\t\tstate = \"startingStyleRule-begin\";\n\t\t\t\t\t\ti += \"starting-style\".length;\n\t\t\t\t\t\tstartingStyleRule = new CSSOM.CSSStartingStyleRule();\n\t\t\t\t\t\tstartingStyleRule.__starts = i;\n\t\t\t\t\t});\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tvalidateAtRule(\"@import\", function () {\n\t\t\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\t\t\ti += \"import\".length;\n\t\t\t\t\t\tbuffer += \"@import\";\n\t\t\t\t\t}, true);\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@namespace\", i) === i) {\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tvalidateAtRule(\"@namespace\", function () {\n\t\t\t\t\t\tstate = \"namespaceRule-begin\";\n\t\t\t\t\t\ti += \"namespace\".length;\n\t\t\t\t\t\tbuffer += \"@namespace\";\n\t\t\t\t\t}, true);\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t// @font-face can be nested only inside CSSScopeRule or CSSConditionRule\n\t\t\t\t\t// and only if there's no CSSStyleRule in the parent chain\n\t\t\t\t\tvar cannotBeNested = !canAtRuleBeNested();\n\t\t\t\t\tvalidateAtRule(\"@font-face\", function () {\n\t\t\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\t\t\ti += \"font-face\".length;\n\t\t\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\t\t}, cannotBeNested);\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t// Reset lastIndex before using global regex (shared instance)\n\t\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuffer += character;\n\t\t\t\tbreak;\n\n\t\t\tcase \"{\":\n\t\t\t\tif (currentScope === topScope) {\n\t\t\t\t\tnestedSelectorRule = null;\n\t\t\t\t}\n\t\t\t\tif (state === 'before-selector') {\n\t\t\t\t\tparseError(\"Unexpected {\");\n\t\t\t\t\ti = ignoreBalancedBlock(i, token.slice(i));\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\t\tif (!nestedSelectorRule && containsUnescaped(buffer, \";\")) {\n\t\t\t\t\t\tvar ruleClosingMatch = token.slice(i).match(forwardRuleClosingBraceRegExp);\n\t\t\t\t\t\tif (ruleClosingMatch) {\n\t\t\t\t\t\t\tstyleRule = null;\n\t\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t\t\ti += ruleClosingMatch.index + ruleClosingMatch[0].length;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Ensure styleRule exists before trying to set properties on it\n\t\t\t\t\tif (!styleRule) {\n\t\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if tokenizer detected an unmatched quote BEFORE setting up the rule\n\t\t\t\t\tif (hasUnmatchedQuoteInSelector) {\n\t\t\t\t\t\thandleUnmatchedQuoteInSelector(\"before-selector\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar originalParentRule = parentRule;\n\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.__parentRule = parentRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentScope = parentRule = styleRule;\n\t\t\t\t\t\n\t\t\t\t\tvar processedSelectorText = processSelectorText(buffer.trim());\n\t\t\t\t\t// In a nested selector, ensure each selector contains '&' at the beginning, except for selectors that already have '&' somewhere\n\t\t\t\t\tif (originalParentRule && originalParentRule.constructor.name === \"CSSStyleRule\") {\n\t\t\t\t\t\tstyleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).map(function (sel) {\n\t\t\t\t\t\t\t// Add & at the beginning if there's no & in the selector, or if it starts with a combinator\n\t\t\t\t\t\t\treturn (sel.indexOf('&') === -1 || startsWithCombinatorRegExp.test(sel)) ? '& ' + sel : sel;\n\t\t\t\t\t\t}).join(', ');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Normalize comma spacing: split by commas and rejoin with \", \"\n\t\t\t\t\t\tstyleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).join(', ');\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\t\tstyleRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tmediaRule.__parentRule = parentRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\t// If entering @media from within a CSSStyleRule, set nestedSelectorRule\n\t\t\t\t\t\t// so that & selectors and declarations work correctly inside\n\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" && !nestedSelectorRule) {\n\t\t\t\t\t\t\tnestedSelectorRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\t\tpushToAncestorRules(mediaRule);\n\t\t\t\t\tmediaRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\n\t\t\t\t\t// Don't reset styleRule to null if it's a nested CSSStyleRule that will contain this @-rule\n\t\t\t\t\tif (!styleRule || styleRule.constructor.name !== \"CSSStyleRule\" || !styleRule.__parentRule) {\n\t\t\t\t\t\tstyleRule = null; // Reset styleRule when entering @-rule\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t} else if (state === \"containerBlock\") {\n\t\t\t\t\tcontainerRule.__conditionText = buffer.trim();\n\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tcontainerRule.__parentRule = parentRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" && !nestedSelectorRule) {\n\t\t\t\t\t\t\tnestedSelectorRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcurrentScope = parentRule = containerRule;\n\t\t\t\t\tpushToAncestorRules(containerRule);\n\t\t\t\t\tcontainerRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tstyleRule = null; // Reset styleRule when entering @-rule\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t} else if (state === \"counterStyleBlock\") {\n\t\t\t\t\tvar counterStyleName = buffer.trim().replace(newlineRemovalRegExp, \"\");\n\t\t\t\t\t// Validate: name cannot be empty, contain whitespace, or contain dots\n\t\t\t\t\tvar isValidCounterStyleName = counterStyleName.length > 0 && !whitespaceAndDotRegExp.test(counterStyleName);\n\n\t\t\t\t\tif (isValidCounterStyleName) {\n\t\t\t\t\t\tcounterStyleRule.name = counterStyleName;\n\t\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\t\tcounterStyleRule.__parentRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcounterStyleRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\tstyleRule = counterStyleRule;\n\t\t\t\t\t}\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t} else if (state === \"propertyBlock\") {\n\t\t\t\t\tvar propertyName = buffer.trim().replace(newlineRemovalRegExp, \"\");\n\t\t\t\t\t// Validate: name must start with -- (custom property)\n\t\t\t\t\tvar isValidPropertyName = propertyName.indexOf(\"--\") === 0;\n\n\t\t\t\t\tif (isValidPropertyName) {\n\t\t\t\t\t\tpropertyRule.__name = propertyName;\n\t\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\t\tpropertyRule.__parentRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpropertyRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\tstyleRule = propertyRule;\n\t\t\t\t\t}\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\t\tsupportsRule.__conditionText = buffer.trim();\n\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tsupportsRule.__parentRule = parentRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" && !nestedSelectorRule) {\n\t\t\t\t\t\t\tnestedSelectorRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\t\tpushToAncestorRules(supportsRule);\n\t\t\t\t\tsupportsRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tstyleRule = null; // Reset styleRule when entering @-rule\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t} else if (state === \"scopeBlock\") {\n\t\t\t\t\tvar parsedScopePrelude = parseScopePrelude(buffer.trim());\n\n\t\t\t\t\tif (parsedScopePrelude.hasStart) {\n\t\t\t\t\t\tscopeRule.__start = parsedScopePrelude.startSelector;\n\t\t\t\t\t}\n\t\t\t\t\tif (parsedScopePrelude.hasEnd) {\n\t\t\t\t\t\tscopeRule.__end = parsedScopePrelude.endSelector;\n\t\t\t\t\t}\n\t\t\t\t\tif (parsedScopePrelude.hasOnlyEnd) {\n\t\t\t\t\t\tscopeRule.__end = parsedScopePrelude.endSelector;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tscopeRule.__parentRule = parentRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" && !nestedSelectorRule) {\n\t\t\t\t\t\t\tnestedSelectorRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcurrentScope = parentRule = scopeRule;\n\t\t\t\t\tpushToAncestorRules(scopeRule);\n\t\t\t\t\tscopeRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tstyleRule = null; // Reset styleRule when entering @-rule\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t} else if (state === \"layerBlock\") {\n\t\t\t\t\tlayerBlockRule.name = buffer.trim();\n\n\t\t\t\t\tvar isValidName = layerBlockRule.name.length === 0 || layerBlockRule.name.match(cssCustomIdentifierRegExp) !== null;\n\n\t\t\t\t\tif (isValidName) {\n\t\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\t\tlayerBlockRule.__parentRule = parentRule;\n\t\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" && !nestedSelectorRule) {\n\t\t\t\t\t\t\t\tnestedSelectorRule = parentRule;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcurrentScope = parentRule = layerBlockRule;\n\t\t\t\t\t\tpushToAncestorRules(layerBlockRule);\n\t\t\t\t\t\tlayerBlockRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule = null; // Reset styleRule when entering @-rule\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t} else if (state === \"pageBlock\") {\n\t\t\t\t\tpageRule.selectorText = buffer.trim();\n\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tpageRule.__parentRule = parentRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentScope = parentRule = pageRule;\n\t\t\t\t\tpageRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tstyleRule = pageRule;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\t\tpushToAncestorRules(hostRule);\n\t\t\t\t\thostRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t} else if (state === \"startingStyleRule-begin\") {\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstartingStyleRule.__parentRule = parentRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" && !nestedSelectorRule) {\n\t\t\t\t\t\t\tnestedSelectorRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentScope = parentRule = startingStyleRule;\n\t\t\t\t\tpushToAncestorRules(startingStyleRule);\n\t\t\t\t\tstartingStyleRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tstyleRule = null; // Reset styleRule when entering @-rule\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\n\t\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tfontFaceRule.__parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tfontFaceRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\tkeyframesRule.__parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tkeyframesRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\tdocumentRule.__parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\t\tpushToAncestorRules(documentRule);\n\t\t\t\t\tdocumentRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t} else if (state === \"before-name\" || state === \"name\") {\n\t\t\t\t\t// @font-face and similar rules don't support nested selectors\n\t\t\t\t\t// If we encounter a nested selector block inside them, skip it\n\t\t\t\t\tif (styleRule.constructor.name === \"CSSFontFaceRule\" ||\n\t\t\t\t\t\tstyleRule.constructor.name === \"CSSKeyframeRule\" ||\n\t\t\t\t\t\t(styleRule.constructor.name === \"CSSPageRule\" && parentRule === styleRule)) {\n\t\t\t\t\t\t// Skip the nested block\n\t\t\t\t\t\tvar ruleClosingMatch = token.slice(i).match(forwardRuleClosingBraceRegExp);\n\t\t\t\t\t\tif (ruleClosingMatch) {\n\t\t\t\t\t\t\ti += ruleClosingMatch.index + ruleClosingMatch[0].length - 1;\n\t\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (styleRule.constructor.name === \"CSSNestedDeclarations\") {\n\t\t\t\t\t\tif (styleRule.style.length) {\n\t\t\t\t\t\t\tparentRule.cssRules.push(styleRule);\n\t\t\t\t\t\t\tstyleRule.__parentRule = parentRule;\n\t\t\t\t\t\t\tstyleRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// If the styleRule is empty, we can assume that it's a nested selector\n\t\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentScope = parentRule = styleRule;\n\t\t\t\t\t\tpushToAncestorRules(parentRule);\n\t\t\t\t\t\tstyleRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t}\n\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\t\n\t\t\t\t\t// Check if tokenizer detected an unmatched quote BEFORE setting up the rule\n\t\t\t\t\tif (hasUnmatchedQuoteInSelector) {\n\t\t\t\t\t\thandleUnmatchedQuoteInSelector(\"before-name\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tvar processedSelectorText = processSelectorText(buffer.trim());\n\t\t\t\t\t// In a nested selector, ensure each selector contains '&' at the beginning, except for selectors that already have '&' somewhere\n\t\t\t\t\tif (parentRule.constructor.name === \"CSSScopeRule\" || (parentRule.constructor.name !== \"CSSStyleRule\" && parentRule.parentRule === null)) {\n\t\t\t\t\t\t// Normalize comma spacing: split by commas and rejoin with \", \"\n\t\t\t\t\t\tstyleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).join(', ');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).map(function (sel) {\n\t\t\t\t\t\t\t// Add & at the beginning if there's no & in the selector, or if it starts with a combinator\n\t\t\t\t\t\t\treturn (sel.indexOf('&') === -1 || startsWithCombinatorRegExp.test(sel)) ? '& ' + sel : sel;\n\t\t\t\t\t\t}).join(', ');\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.style.__starts = i - buffer.length;\n\t\t\t\t\tstyleRule.__parentRule = parentRule;\n\t\t\t\t\t// Only set nestedSelectorRule if we're directly inside a CSSStyleRule or CSSScopeRule,\n\t\t\t\t\t// not inside other grouping rules like @media/@supports\n\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" || parentRule.constructor.name === \"CSSScopeRule\") {\n\t\t\t\t\t\tnestedSelectorRule = styleRule;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Set __parentStyleSheet for the new nested styleRule\n\t\t\t\t\tstyleRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\n\t\t\t\t\t// Update currentScope and parentRule to the new nested styleRule\n\t\t\t\t\t// so that subsequent content (like @-rules) will be children of this rule\n\t\t\t\t\tcurrentScope = parentRule = styleRule;\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \":\":\n\t\t\t\tif (state === \"name\") {\n\t\t\t\t\t// It can be a nested selector, let's check\n\t\t\t\t\tvar openBraceBeforeMatch = token.slice(i).match(declarationOrOpenBraceRegExp);\n\t\t\t\t\tvar hasOpenBraceBefore = openBraceBeforeMatch && openBraceBeforeMatch[0] === '{';\n\t\t\t\t\tif (hasOpenBraceBefore) {\n\t\t\t\t\t\t// Is a selector\n\t\t\t\t\t\tbuffer += character;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Is a declaration\n\t\t\t\t\t\tname = buffer.trim();\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-value\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"(\":\n\t\t\t\tif (state === 'value') {\n\t\t\t\t\t// ie css expression mode\n\t\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\t\tbuffer += character;\n\t\t\t\t\t}\n\t\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t} else {\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \")\":\n\t\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t\t}\n\t\t\t\tbuffer += character;\n\t\t\t\tbreak;\n\n\t\t\tcase \"!\":\n\t\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\t\tpriority = \"important\";\n\t\t\t\t\ti += \"important\".length;\n\t\t\t\t} else {\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \";\":\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase \"before-value\":\n\t\t\t\t\tcase \"before-name\":\n\t\t\t\t\t\tparseError(\"Unexpected ;\");\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"value\":\n\t\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority, parseError);\n\t\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"atRule\":\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"importRule\":\n\t\t\t\t\t\tvar isValid = topScope.cssRules.length === 0 || topScope.cssRules.some(function (rule) {\n\t\t\t\t\t\t\treturn ['CSSImportRule', 'CSSLayerStatementRule'].indexOf(rule.constructor.name) !== -1\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (isValid) {\n\t\t\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\t\t\tif (opts && opts.globalObject && opts.globalObject.CSSStyleSheet) {\n\t\t\t\t\t\t\t\timportRule.__styleSheet = new opts.globalObject.CSSStyleSheet();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\timportRule.styleSheet.__constructed = false;\n\t\t\t\t\t\t\timportRule.__parentStyleSheet = importRule.styleSheet.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\t\timportRule.parse(buffer + character);\n\t\t\t\t\t\t\ttopScope.cssRules.push(importRule);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"namespaceRule\":\n\t\t\t\t\t\tvar isValid = topScope.cssRules.length === 0 || topScope.cssRules.every(function (rule) {\n\t\t\t\t\t\t\treturn ['CSSImportRule', 'CSSLayerStatementRule', 'CSSNamespaceRule'].indexOf(rule.constructor.name) !== -1\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (isValid) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t// Validate namespace syntax before creating the rule\n\t\t\t\t\t\t\t\tvar testNamespaceRule = new CSSOM.CSSNamespaceRule();\n\t\t\t\t\t\t\t\ttestNamespaceRule.parse(buffer + character);\n\n\t\t\t\t\t\t\t\tnamespaceRule = testNamespaceRule;\n\t\t\t\t\t\t\t\tnamespaceRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\t\t\ttopScope.cssRules.push(namespaceRule);\n\n\t\t\t\t\t\t\t\t// Track the namespace prefix for validation\n\t\t\t\t\t\t\t\tif (namespaceRule.prefix) {\n\t\t\t\t\t\t\t\t\tdefinedNamespacePrefixes[namespaceRule.prefix] = namespaceRule.namespaceURI;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tparseError(e.message);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"layerBlock\":\n\t\t\t\t\t\tvar nameListStr = buffer.trim().split(\",\").map(function (name) {\n\t\t\t\t\t\t\treturn name.trim();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tvar isInvalid = nameListStr.some(function (name) {\n\t\t\t\t\t\t\treturn name.trim().match(cssCustomIdentifierRegExp) === null;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Check if there's a CSSStyleRule in the parent chain\n\t\t\t\t\t\tvar hasStyleRuleParent = false;\n\t\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\t\tvar checkParent = parentRule;\n\t\t\t\t\t\t\twhile (checkParent) {\n\t\t\t\t\t\t\t\tif (checkParent.constructor.name === \"CSSStyleRule\") {\n\t\t\t\t\t\t\t\t\thasStyleRuleParent = true;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcheckParent = checkParent.__parentRule;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!isInvalid && !hasStyleRuleParent) {\n\t\t\t\t\t\t\tlayerStatementRule = new CSSOM.CSSLayerStatementRule();\n\t\t\t\t\t\t\tlayerStatementRule.__parentStyleSheet = styleSheet;\n\t\t\t\t\t\t\tlayerStatementRule.__starts = layerBlockRule.__starts;\n\t\t\t\t\t\t\tlayerStatementRule.__ends = i;\n\t\t\t\t\t\t\tlayerStatementRule.nameList = nameListStr;\n\n\t\t\t\t\t\t\t// Add to parent rule if nested, otherwise to top scope\n\t\t\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\t\t\tlayerStatementRule.__parentRule = parentRule;\n\t\t\t\t\t\t\t\tparentRule.cssRules.push(layerStatementRule);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttopScope.cssRules.push(layerStatementRule);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += character;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"}\":\n\t\t\t\tif (state === \"counterStyleBlock\") {\n\t\t\t\t\t// FIXME : Implement missing properties on CSSCounterStyleRule interface and update parse method\n\t\t\t\t\t// For now it's just assigning entire rule text\n\t\t\t\t\tif (counterStyleRule.name) {\n\t\t\t\t\t\t// Only process if name was set (valid)\n\t\t\t\t\t\tcounterStyleRule.parse(\"@counter-style \" + counterStyleRule.name + \" { \" + buffer + \" }\");\n\t\t\t\t\t\tcounterStyleRule.__ends = i + 1;\n\t\t\t\t\t\t// Add to parent's cssRules\n\t\t\t\t\t\tif (counterStyleRule.__parentRule) {\n\t\t\t\t\t\t\tcounterStyleRule.__parentRule.cssRules.push(counterStyleRule);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttopScope.cssRules.push(counterStyleRule);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Restore currentScope to parent after closing this rule\n\t\t\t\t\tif (counterStyleRule.__parentRule) {\n\t\t\t\t\t\tcurrentScope = counterStyleRule.__parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule = null;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (state === \"propertyBlock\") {\n\t\t\t\t\t// Only process if name was set (valid)\n\t\t\t\t\tif (propertyRule.__name) {\n\t\t\t\t\t\tvar parseSuccess = propertyRule.parse(\"@property \" + propertyRule.__name + \" { \" + buffer + \" }\");\n\t\t\t\t\t\t// Only add the rule if parse was successful (syntax, inherits, and initial-value validation passed)\n\t\t\t\t\t\tif (parseSuccess) {\n\t\t\t\t\t\t\tpropertyRule.__ends = i + 1;\n\t\t\t\t\t\t\t// Add to parent's cssRules\n\t\t\t\t\t\t\tif (propertyRule.__parentRule) {\n\t\t\t\t\t\t\t\tpropertyRule.__parentRule.cssRules.push(propertyRule);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttopScope.cssRules.push(propertyRule);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Restore currentScope to parent after closing this rule\n\t\t\t\t\tif (propertyRule.__parentRule) {\n\t\t\t\t\t\tcurrentScope = propertyRule.__parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule = null;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase \"value\":\n\t\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority, parseError);\n\t\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\t\tcase \"before-value\":\n\t\t\t\t\tcase \"before-name\":\n\t\t\t\t\tcase \"name\":\n\t\t\t\t\t\tstyleRule.__ends = i + 1;\n\n\t\t\t\t\t\tif (parentRule === styleRule) {\n\t\t\t\t\t\t\tparentRule = ancestorRules.pop()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\t\tstyleRule.__parentRule = parentRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyleRule.__parentStyleSheet = styleSheet;\n\n\t\t\t\t\t\tif (currentScope === styleRule) {\n\t\t\t\t\t\t\tcurrentScope = parentRule || topScope;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (styleRule.constructor.name === \"CSSStyleRule\" && !isValidSelectorText(styleRule.selectorText)) {\n\t\t\t\t\t\t\tif (styleRule === nestedSelectorRule) {\n\t\t\t\t\t\t\t\tnestedSelectorRule = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparseError('Invalid CSSStyleRule (selectorText = \"' + styleRule.selectorText + '\")', styleRule.parentRule !== null);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (styleRule.parentRule) {\n\t\t\t\t\t\t\t\tstyleRule.parentRule.cssRules.push(styleRule);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (styleRule.constructor.name === \"CSSNestedDeclarations\") {\n\t\t\t\t\t\t\tif (currentScope !== topScope) {\n\t\t\t\t\t\t\t\t// Only set nestedSelectorRule if currentScope is CSSStyleRule or CSSScopeRule\n\t\t\t\t\t\t\t\t// Not for other grouping rules like @media/@supports\n\t\t\t\t\t\t\t\tif (currentScope.constructor.name === \"CSSStyleRule\" || currentScope.constructor.name === \"CSSScopeRule\") {\n\t\t\t\t\t\t\t\t\tnestedSelectorRule = currentScope;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyleRule = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Update nestedSelectorRule when closing a CSSStyleRule\n\t\t\t\t\t\t\tif (styleRule === nestedSelectorRule) {\n\t\t\t\t\t\t\t\tvar selector = styleRule.selectorText && styleRule.selectorText.trim();\n\t\t\t\t\t\t\t\t// Check if this is proper nesting (&.class, &:pseudo) vs prepended & (& :is, & .class with space)\n\t\t\t\t\t\t\t\t// Prepended & has pattern \"& X\" where X starts with : or .\n\t\t\t\t\t\t\t\tvar isPrependedAmpersand = selector && selector.match(prependedAmpersandRegExp);\n\n\t\t\t\t\t\t\t\t// Check if parent is a grouping rule that can contain nested selectors\n\t\t\t\t\t\t\t\tvar isGroupingRule = currentScope && currentScope instanceof CSSOM.CSSGroupingRule;\n\n\t\t\t\t\t\t\t\tif (!isPrependedAmpersand && isGroupingRule) {\n\t\t\t\t\t\t\t\t\t// Proper nesting - set nestedSelectorRule to parent for more nested selectors\n\t\t\t\t\t\t\t\t\t// But only if it's a CSSStyleRule or CSSScopeRule, not other grouping rules like @media\n\t\t\t\t\t\t\t\t\tif (currentScope.constructor.name === \"CSSStyleRule\" || currentScope.constructor.name === \"CSSScopeRule\") {\n\t\t\t\t\t\t\t\t\t\tnestedSelectorRule = currentScope;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// If currentScope is another type of grouping rule (like @media), keep nestedSelectorRule unchanged\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Prepended & or not nested in grouping rule - reset to prevent CSSNestedDeclarations\n\t\t\t\t\t\t\t\t\tnestedSelectorRule = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (nestedSelectorRule && currentScope instanceof CSSOM.CSSGroupingRule) {\n\t\t\t\t\t\t\t\t// When closing a nested rule that's not the nestedSelectorRule itself,\n\t\t\t\t\t\t\t\t// maintain nestedSelectorRule if we're still inside a grouping rule\n\t\t\t\t\t\t\t\t// This ensures declarations after nested selectors inside @media/@supports etc. work correctly\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyleRule = null;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tcase \"selector\":\n\t\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\t\tparseError(\"Unexpected }\");\n\n\t\t\t\t\t\t\tvar hasPreviousStyleRule = currentScope.cssRules.length && currentScope.cssRules[currentScope.cssRules.length - 1].constructor.name === \"CSSStyleRule\";\n\t\t\t\t\t\t\tif (hasPreviousStyleRule) {\n\t\t\t\t\t\t\t\ti = ignoreBalancedBlock(i, token.slice(i), 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Find the actual parent rule by popping from ancestor stack\n\t\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\t\t// Skip if we popped the current scope itself (happens because we push both rule and parent)\n\t\t\t\t\t\t\tif (parentRule === currentScope) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Only process valid grouping rules\n\t\t\t\t\t\t\tif (!(parentRule instanceof CSSOM.CSSGroupingRule && (parentRule.constructor.name !== 'CSSStyleRule' || parentRule.__parentRule))) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Determine if we're closing a special nested selector context\n\t\t\t\t\t\t\tvar isClosingNestedSelectorContext = nestedSelectorRule && \n\t\t\t\t\t\t\t\t(currentScope === nestedSelectorRule || nestedSelectorRule.__parentRule === currentScope);\n\n\t\t\t\t\t\t\tif (isClosingNestedSelectorContext) {\n\t\t\t\t\t\t\t\t// Closing the nestedSelectorRule or its direct container\n\t\t\t\t\t\t\t\tif (nestedSelectorRule.parentRule) {\n\t\t\t\t\t\t\t\t\t// Add nestedSelectorRule to its parent and update scope\n\t\t\t\t\t\t\t\t\tprevScope = nestedSelectorRule;\n\t\t\t\t\t\t\t\t\tcurrentScope = nestedSelectorRule.parentRule;\n\t\t\t\t\t\t\t\t\t// Use object lookup instead of O(n) indexOf\n\t\t\t\t\t\t\t\t\tvar scopeId = getRuleId(prevScope);\n\t\t\t\t\t\t\t\t\tif (!addedToCurrentScope[scopeId]) {\n\t\t\t\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\t\t\t\taddedToCurrentScope[scopeId] = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tnestedSelectorRule = currentScope;\n\t\t\t\t\t\t\t\t\t// Stop here to preserve context for sibling selectors\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Top-level CSSStyleRule with nested grouping rule\n\t\t\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\t\t\tvar actualParent = ancestorRules.length > 0 ? ancestorRules[ancestorRules.length - 1] : nestedSelectorRule;\n\t\t\t\t\t\t\t\t\tif (actualParent !== prevScope) {\n\t\t\t\t\t\t\t\t\t\tactualParent.cssRules.push(prevScope);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcurrentScope = actualParent;\n\t\t\t\t\t\t\t\t\tparentRule = actualParent;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Regular case: add currentScope to parentRule\n\t\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\t\tif (parentRule !== prevScope) {\n\t\t\t\t\t\t\t\t\tparentRule.cssRules.push(prevScope);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If currentScope has a __parentRule and wasn't added yet, add it\n\t\t\t\t\t\tif (ancestorRules.length === 0 && currentScope.__parentRule && currentScope.__parentRule.cssRules) {\n\t\t\t\t\t\t\t// Use object lookup instead of O(n) findIndex\n\t\t\t\t\t\t\tvar parentId = getRuleId(currentScope);\n\t\t\t\t\t\t\tif (!addedToParent[parentId]) {\n\t\t\t\t\t\t\t\tcurrentScope.__parentRule.cssRules.push(currentScope);\n\t\t\t\t\t\t\t\taddedToParent[parentId] = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Only handle top-level rule closing if we processed all ancestors\n\t\t\t\t\t\tif (ancestorRules.length === 0 && currentScope.parentRule == null) {\n\t\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\t\t// Use object lookup instead of O(n) findIndex\n\t\t\t\t\t\t\tvar topId = getRuleId(currentScope);\n\t\t\t\t\t\t\tif (currentScope !== topScope && !addedToTopScope[topId]) {\n\t\t\t\t\t\t\t\ttopScope.cssRules.push(currentScope);\n\t\t\t\t\t\t\t\taddedToTopScope[topId] = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcurrentScope = topScope;\n\t\t\t\t\t\t\tif (nestedSelectorRule === parentRule) {\n\t\t\t\t\t\t\t\t// Check if this selector is really starting inside another selector\n\t\t\t\t\t\t\t\tvar nestedSelectorTokenToCurrentSelectorToken = token.slice(nestedSelectorRule.__starts, i + 1);\n\t\t\t\t\t\t\t\tvar openingBraceMatch = nestedSelectorTokenToCurrentSelectorToken.match(openBraceGlobalRegExp);\n\t\t\t\t\t\t\t\tvar closingBraceMatch = nestedSelectorTokenToCurrentSelectorToken.match(closeBraceGlobalRegExp);\n\t\t\t\t\t\t\t\tvar openingBraceLen = openingBraceMatch && openingBraceMatch.length;\n\t\t\t\t\t\t\t\tvar closingBraceLen = closingBraceMatch && closingBraceMatch.length;\n\n\t\t\t\t\t\t\t\tif (openingBraceLen === closingBraceLen) {\n\t\t\t\t\t\t\t\t\t// If the number of opening and closing braces are equal, we can assume that the new selector is starting outside the nestedSelectorRule\n\t\t\t\t\t\t\t\t\tnestedSelectorRule.__ends = i + 1;\n\t\t\t\t\t\t\t\t\tnestedSelectorRule = null;\n\t\t\t\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase \"before-selector\":\n\t\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\t\tif ((styleRule || scopeRule) && parentRule) {\n\t\t\t\t\t\t\t// Assuming it's a declaration inside Nested Selector OR a Nested Declaration\n\t\t\t\t\t\t\t// If Declaration inside Nested Selector let's keep the same styleRule\n\t\t\t\t\t\t\tif (!isSelectorStartChar(character) && !isWhitespaceChar(character) && parentRule instanceof CSSOM.CSSGroupingRule) {\n\t\t\t\t\t\t\t\t// parentRule.__parentRule = styleRule;\n\t\t\t\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\t\t\t\tif (styleRule !== parentRule) {\n\t\t\t\t\t\t\t\t\tstyleRule = new CSSOM.CSSNestedDeclarations();\n\t\t\t\t\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if (nestedSelectorRule && parentRule && parentRule instanceof CSSOM.CSSGroupingRule) {\n\t\t\t\t\t\t\tif (isSelectorStartChar(character)) {\n\t\t\t\t\t\t\t\t// If starting with a selector character, create CSSStyleRule instead of CSSNestedDeclarations\n\t\t\t\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\t\t\t} else if (!isWhitespaceChar(character)) {\n\t\t\t\t\t\t\t\t// Starting a declaration (not whitespace, not a selector)\n\t\t\t\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\t\t\t\t// Check if we should create CSSNestedDeclarations\n\t\t\t\t\t\t\t\t// This happens if: parent has cssRules OR nestedSelectorRule exists (indicating CSSStyleRule in hierarchy)\n\t\t\t\t\t\t\t\tif (parentRule.cssRules.length || nestedSelectorRule) {\n\t\t\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\t\t\t// Only set nestedSelectorRule if parentRule is CSSStyleRule or CSSScopeRule\n\t\t\t\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\" || parentRule.constructor.name === \"CSSScopeRule\") {\n\t\t\t\t\t\t\t\t\t\tnestedSelectorRule = parentRule;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstyleRule = new CSSOM.CSSNestedDeclarations();\n\t\t\t\t\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (parentRule.constructor.name === \"CSSStyleRule\") {\n\t\t\t\t\t\t\t\t\t\tstyleRule = parentRule;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\t\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"before-name\":\n\t\t\t\t\t\tstate = \"name\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"before-value\":\n\t\t\t\t\t\tstate = \"value\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"namespaceRule-begin\":\n\t\t\t\t\t\tstate = \"namespaceRule\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbuffer += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Auto-close all unclosed nested structures\n\t\t// Check AFTER processing the character, at the ORIGINAL ending index\n\t\t// Only add closing braces if CSS is incomplete (not at top scope)\n\t\tif (i === initialEndingIndex && (currentScope !== topScope || ancestorRules.length > 0)) {\n\t\t\tvar needsClosing = ancestorRules.length;\n\t\t\tif (currentScope !== topScope && ancestorRules.indexOf(currentScope) === -1) {\n\t\t\t\tneedsClosing += 1;\n\t\t\t}\n\t\t\t// Add closing braces for all unclosed structures\n\t\t\tfor (var closeIdx = 0; closeIdx < needsClosing; closeIdx++) {\n\t\t\t\ttoken += \"}\";\n\t\t\t\tendingIndex += 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (buffer.trim() !== \"\") {\n\t\tparseError(\"Unexpected end of input\");\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSNestedDeclarations = require(\"./CSSNestedDeclarations\").CSSNestedDeclarations;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSNamespaceRule = require(\"./CSSNamespaceRule\").CSSNamespaceRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSCounterStyleRule = require(\"./CSSCounterStyleRule\").CSSCounterStyleRule;\nCSSOM.CSSPropertyRule = require(\"./CSSPropertyRule\").CSSPropertyRule;\nCSSOM.CSSContainerRule = require(\"./CSSContainerRule\").CSSContainerRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStartingStyleRule = require(\"./CSSStartingStyleRule\").CSSStartingStyleRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nCSSOM.CSSScopeRule = require('./CSSScopeRule').CSSScopeRule;\nCSSOM.CSSLayerBlockRule = require(\"./CSSLayerBlockRule\").CSSLayerBlockRule;\nCSSOM.CSSLayerStatementRule = require(\"./CSSLayerStatementRule\").CSSLayerStatementRule;\nCSSOM.CSSPageRule = require(\"./CSSPageRule\").CSSPageRule;\n// Use cssstyle if available\nrequire(\"./cssstyleTryCatchBlock\");\n///CommonJS\n","//.CommonJS\nvar CSSOM = {};\nvar regexPatterns = require(\"./regexPatterns\").regexPatterns;\n///CommonJS\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority, parseErrorHandler) \n\t{\n\t\t// NOTE: Check viability to add a validation for css values or use a dependency like csstree-validator\n\t\tvar basicStylePropertyValueValidationRegExp = regexPatterns.basicStylePropertyValueValidationRegExp\n\t\tif (basicStylePropertyValueValidationRegExp.test(value)) {\n\t\t\tparseErrorHandler && parseErrorHandler('Invalid CSSStyleDeclaration property (name = \"' + name + '\", value = \"' + value + '\")');\n\t\t} else if (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\n\t\t\t// If the priority value of the incoming property is \"important\",\n\t\t\t// or the value of the existing property is not \"important\", \n\t\t\t// then remove the existing property and rewrite it.\n\t\t\tif (priority || !this._importants[name]) {\n\t\t\t\tthis.removeProperty(name);\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t\tthis[name] = value + '';\n\t\t\t\tthis._importants[name] = priority;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t\tthis[name] = value + '';\n\t\t\tthis._importants[name] = priority;\n\t\t}\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t *   element.style.overflow = \"auto\"\n\t *   element.style.getPropertyShorthand(\"overflow-x\")\n\t *   -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n","//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSNestedDeclarations: require(\"./CSSNestedDeclarations\").CSSNestedDeclarations,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSContainerRule: require(\"./CSSContainerRule\").CSSContainerRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule,\n\tCSSScopeRule: require('./CSSScopeRule').CSSScopeRule,\n\tCSSLayerBlockRule: require('./CSSLayerBlockRule').CSSLayerBlockRule,\n\tCSSLayerStatementRule: require('./CSSLayerStatementRule').CSSLayerStatementRule\n};\n// Use cssstyle if available\ntry {\n\tCSSOM.CSSStyleDeclaration = require(\"cssstyle\").CSSStyleDeclaration;\n} catch (e) {\n\t// ignore\n}\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet — the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('supportsText')) {\n\t\t\truleClone.supports = rule.supports;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('layerName')) {\n\t\t\truleClone.layerName = rule.layerName;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('href')) {\n\t\t\truleClone.href = rule.href;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('name')) {\n\t\t\truleClone.name = rule.name;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('nameList')) {\n\t\t\truleClone.nameList = rule.nameList;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n","'use strict';\n\nexports.setup = require('./CSSOM').setup;\n\nrequire('./errorUtils');\nrequire(\"./regexPatterns\")\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\n\nrequire('./cssstyleTryCatchBlock');\n\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSRuleList = require('./CSSRuleList').CSSRuleList;\nexports.CSSNestedDeclarations = require('./CSSNestedDeclarations').CSSNestedDeclarations;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSCounterStyleRule = require('./CSSCounterStyleRule').CSSCounterStyleRule;\nexports.CSSPropertyRule = require('./CSSPropertyRule').CSSPropertyRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSContainerRule = require('./CSSContainerRule').CSSContainerRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSNamespaceRule = require('./CSSNamespaceRule').CSSNamespaceRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.CSSStartingStyleRule = require('./CSSStartingStyleRule').CSSStartingStyleRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.CSSScopeRule = require('./CSSScopeRule').CSSScopeRule;\nexports.CSSLayerBlockRule = require('./CSSLayerBlockRule').CSSLayerBlockRule;\nexports.CSSLayerStatementRule = require('./CSSLayerStatementRule').CSSLayerStatementRule;\nexports.CSSPageRule = require('./CSSPageRule').CSSPageRule;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n","\"use strict\";\nconst cssstyle = require(\"cssstyle\");\n\nexports.addToCore = core => {\n  // What works now:\n  // - Accessing the rules defined in individual stylesheets\n  // - Modifications to style content attribute are reflected in style property\n  // - Modifications to style property are reflected in style content attribute\n  // TODO\n  // - Modifications to style element's textContent are reflected in sheet property.\n  // - Modifications to style element's sheet property are reflected in textContent.\n  // - Modifications to link.href property are reflected in sheet property.\n  // - Less-used features of link: disabled\n  // - Less-used features of style: disabled, scoped, title\n  // - CSSOM-View\n  //   - getComputedStyle(): requires default stylesheet, cascading, inheritance,\n  //     filtering by @media (screen? print?), layout for widths/heights\n  // - Load events are not in the specs, but apparently some browsers\n  //   implement something. Should onload only fire after all @imports have been\n  //   loaded, or only the primary sheet?\n  const cssom = require(\"@acemir/cssom\").setup({ globalObject: core._globalObject });\n\n  core.StyleSheet = cssom.StyleSheet;\n  core.MediaList = cssom.MediaList;\n  core.CSSStyleSheet = cssom.CSSStyleSheet;\n  core.CSSRule = cssom.CSSRule;\n  core.CSSGroupingRule = cssom.CSSGroupingRule;\n  core.CSSNestedDeclarations = cssom.CSSNestedDeclarations;\n  core.CSSStyleRule = cssom.CSSStyleRule;\n  core.CSSMediaRule = cssom.CSSMediaRule;\n  core.CSSImportRule = cssom.CSSImportRule;\n  core.CSSConditionRule = cssom.CSSConditionRule;\n  core.CSSContainerRule = cssom.CSSContainerRule;\n  core.CSSScopeRule = cssom.CSSScopeRule;\n  core.CSSSupportsRule = cssom.CSSSupportsRule;\n  core.CSSLayerBlockRule = cssom.CSSLayerBlockRule;\n  core.CSSLayerStatementRule = cssom.CSSLayerStatementRule;\n  core.CSSStyleDeclaration = cssstyle.CSSStyleDeclaration;\n\n  // Relevant specs\n  // http://www.w3.org/TR/DOM-Level-2-Style (2000)\n  // http://www.w3.org/TR/cssom-view/ (2008)\n  // http://dev.w3.org/csswg/cssom/ (2010) Meant to replace DOM Level 2 Style\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/ HTML5, of course\n  // http://dev.w3.org/csswg/css-style-attr/  not sure what's new here\n\n  // Objects that aren't in cssom library but should be:\n  //   CSSRuleList  (cssom just uses array)\n  //   CSSFontFaceRule\n  //   CSSPageRule\n\n  // These rules don't really make sense to implement, so CSSOM draft makes them\n  // obsolete.\n  //   CSSCharsetRule\n  //   CSSUnknownRule\n\n  // These objects are considered obsolete by CSSOM draft, although modern\n  // browsers implement them.\n  //   CSSValue\n  //   CSSPrimitiveValue\n  //   CSSValueList\n  //   RGBColor\n  //   Rect\n  //   Counter\n};\n","/** Here is yet another implementation of XPath 1.0 in Javascript.\n *\n * My goal was to make it relatively compact, but as I fixed all the axis bugs\n * the axes became more and more complicated. :-(.\n *\n * I have not implemented namespaces or case-sensitive axes for XML yet.\n *\n * How to test it in Chrome: You can make a Chrome extension that replaces\n * the WebKit XPath parser with this one. But it takes a bit of effort to\n * get around isolated world and same-origin restrictions:\n * manifest.json:\n    {\n      \"name\": \"XPathTest\",\n      \"version\": \"0.1\",\n      \"content_scripts\": [{\n        \"matches\": [\"http://localhost/*\"],  // or wildcard host\n        \"js\": [\"xpath.js\", \"injection.js\"],\n        \"all_frames\": true, \"run_at\": \"document_start\"\n      }]\n    }\n * injection.js:\n    // goal: give my xpath object to the website's JS context.\n    var script = document.createElement('script');\n    script.textContent =\n        \"document.addEventListener('xpathextend', function(e) {\\n\" +\n        \"  console.log('extending document with xpath...');\\n\" +\n        \"  e.detail(window);\" +\n        \"});\";\n    document.documentElement.appendChild(script);\n    document.documentElement.removeChild(script);\n    var evt = document.createEvent('CustomEvent');\n    evt.initCustomEvent('xpathextend', true, true, this.xpath.extend);\n    document.dispatchEvent(evt);\n */\nmodule.exports = core => {\n  var xpath = {};\n\n  // Helper function to deal with the migration of Attr to no longer have a nodeName property despite this codebase\n  // assuming it does.\n  function getNodeName(nodeOrAttr) {\n    return nodeOrAttr.constructor.name === 'Attr' ? nodeOrAttr.name : nodeOrAttr.nodeName;\n  }\n\n  /***************************************************************************\n   *                            Tokenization                                 *\n   ***************************************************************************/\n  /**\n   * The XPath lexer is basically a single regular expression, along with\n   * some helper functions to pop different types.\n   */\n  var Stream = xpath.Stream = function Stream(str) {\n    this.original = this.str = str;\n    this.peeked = null;\n    // TODO: not really needed, but supposedly tokenizer also disambiguates\n    // a * b vs. node test *\n    this.prev = null;  // for debugging\n    this.prevprev = null;\n  }\n  Stream.prototype = {\n    peek: function() {\n      if (this.peeked) return this.peeked;\n      var m = this.re.exec(this.str);\n      if (!m) return null;\n      this.str = this.str.substr(m[0].length);\n      return this.peeked = m[1];\n    },\n    /** Peek 2 tokens ahead. */\n    peek2: function() {\n      this.peek();  // make sure this.peeked is set\n      var m = this.re.exec(this.str);\n      if (!m) return null;\n      return m[1];\n    },\n    pop: function() {\n      var r = this.peek();\n      this.peeked = null;\n      this.prevprev = this.prev;\n      this.prev = r;\n      return r;\n    },\n    trypop: function(tokens) {\n      var tok = this.peek();\n      if (tok === tokens) return this.pop();\n      if (Array.isArray(tokens)) {\n        for (var i = 0; i < tokens.length; ++i) {\n          var t = tokens[i];\n          if (t == tok) return this.pop();;\n        }\n      }\n    },\n    trypopfuncname: function() {\n      var tok = this.peek();\n      if (!this.isQnameRe.test(tok))\n        return null;\n      switch (tok) {\n        case 'comment': case 'text': case 'processing-instruction': case 'node':\n          return null;\n      }\n      if ('(' != this.peek2()) return null;\n      return this.pop();\n    },\n    trypopaxisname: function() {\n      var tok = this.peek();\n      switch (tok) {\n        case 'ancestor': case 'ancestor-or-self': case 'attribute':\n        case 'child': case 'descendant': case 'descendant-or-self':\n        case 'following': case 'following-sibling': case 'namespace':\n        case 'parent': case 'preceding': case 'preceding-sibling': case 'self':\n          if ('::' == this.peek2()) return this.pop();\n      }\n      return null;\n    },\n    trypopnametest: function() {\n      var tok = this.peek();\n      if ('*' === tok || this.startsWithNcNameRe.test(tok)) return this.pop();\n      return null;\n    },\n    trypopliteral: function() {\n      var tok = this.peek();\n      if (null == tok) return null;\n      var first = tok.charAt(0);\n      var last = tok.charAt(tok.length - 1);\n      if ('\"' === first && '\"' === last ||\n          \"'\" === first && \"'\" === last) {\n        this.pop();\n        return tok.substr(1, tok.length - 2) ?? null;\n      }\n      return null;\n    },\n    trypopnumber: function() {\n      var tok = this.peek();\n      if (this.isNumberRe.test(tok)) return parseFloat(this.pop()) ?? null;\n      else return null;\n    },\n    trypopvarref: function() {\n      var tok = this.peek();\n      if (null == tok) return null;\n      if ('$' === tok.charAt(0)) return this.pop().substr(1) ?? null;\n      else return null;\n    },\n    position: function() {\n      return this.original.length - this.str.length;\n    }\n  };\n  (function() {\n    // http://www.w3.org/TR/REC-xml-names/#NT-NCName\n    var nameStartCharsExceptColon =\n        'A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xF8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF' +\n        '\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF' +\n        '\\uFDF0-\\uFFFD';  // JS doesn't support [#x10000-#xEFFFF]\n    var nameCharExceptColon = nameStartCharsExceptColon +\n        '\\\\-\\\\.0-9\\xb7\\u0300-\\u036F\\u203F-\\u2040';\n    var ncNameChars = '[' + nameStartCharsExceptColon +\n        '][' + nameCharExceptColon + ']*'\n    // http://www.w3.org/TR/REC-xml-names/#NT-QName\n    var qNameChars = ncNameChars + '(?::' + ncNameChars + ')?';\n    var otherChars = '\\\\.\\\\.|[\\\\(\\\\)\\\\[\\\\].@,]|::';  // .. must come before [.]\n    var operatorChars =\n        'and|or|mod|div|' +\n        '//|!=|<=|>=|[*/|+\\\\-=<>]';  // //, !=, <=, >= before individual ones.\n    var literal = '\"[^\"]*\"|' + \"'[^']*'\";\n    var numberChars = '[0-9]+(?:\\\\.[0-9]*)?|\\\\.[0-9]+';\n    var variableReference = '\\\\$' + qNameChars;\n    var nameTestChars = '\\\\*|' + ncNameChars + ':\\\\*|' + qNameChars;\n    var optionalSpace = '[ \\t\\r\\n]*';  // stricter than regexp \\s.\n    var nodeType = 'comment|text|processing-instruction|node';\n    var re = new RegExp(\n        // numberChars before otherChars so that leading-decimal doesn't become .\n        '^' + optionalSpace + '(' + numberChars + '|' + otherChars + '|' +\n        nameTestChars + '|' + operatorChars + '|' + literal + '|' +\n        variableReference + ')'\n        // operatorName | nodeType | functionName | axisName are lumped into\n        // qName for now; we'll check them on pop.\n    );\n    Stream.prototype.re = re;\n    Stream.prototype.startsWithNcNameRe = new RegExp('^' + ncNameChars);\n    Stream.prototype.isQnameRe = new RegExp('^' + qNameChars + '$');\n    Stream.prototype.isNumberRe = new RegExp('^' + numberChars + '$');\n  })();\n\n  /***************************************************************************\n   *                               Parsing                                   *\n   ***************************************************************************/\n  var parse = xpath.parse = function parse(stream, a) {\n    var r = orExpr(stream,a);\n    var x, unparsed = [];\n    while (x = stream.pop()) {\n      unparsed.push(x);\n    }\n    if (unparsed.length)\n      throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                               'Position ' + stream.position() +\n                               ': Unparsed tokens: ' + unparsed.join(' '));\n    return r;\n  }\n\n  /**\n   * binaryL  ::= subExpr\n   *            | binaryL op subExpr\n   * so a op b op c becomes ((a op b) op c)\n   */\n  function binaryL(subExpr, stream, a, ops) {\n    var lhs = subExpr(stream, a);\n    if (lhs == null) return null;\n    var op;\n    while (op = stream.trypop(ops)) {\n      var rhs = subExpr(stream, a);\n      if (rhs == null)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected something after ' + op);\n      lhs = a.node(op, lhs, rhs);\n    }\n    return lhs;\n  }\n  /**\n   * Too bad this is never used. If they made a ** operator (raise to power),\n   ( we would use it.\n   * binaryR  ::= subExpr\n   *            | subExpr op binaryR\n   * so a op b op c becomes (a op (b op c))\n   */\n  function binaryR(subExpr, stream, a, ops) {\n    var lhs = subExpr(stream, a);\n    if (lhs == null) return null;\n    var op = stream.trypop(ops);\n    if (op) {\n      var rhs = binaryR(stream, a);\n      if (rhs == null)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected something after ' + op);\n      return a.node(op, lhs, rhs);\n    } else {\n      return lhs;// TODO\n    }\n  }\n  /** [1] LocationPath::= RelativeLocationPath | AbsoluteLocationPath\n   * e.g. a, a/b, //a/b\n   */\n  function locationPath(stream, a) {\n    return absoluteLocationPath(stream, a) ||\n           relativeLocationPath(null, stream, a);\n  }\n  /** [2] AbsoluteLocationPath::= '/' RelativeLocationPath? | AbbreviatedAbsoluteLocationPath\n   *  [10] AbbreviatedAbsoluteLocationPath::= '//' RelativeLocationPath\n   */\n  function absoluteLocationPath(stream, a) {\n    var op = stream.peek();\n    if ('/' === op || '//' === op) {\n      var lhs = a.node('Root');\n      return relativeLocationPath(lhs, stream, a, true);\n    } else {\n      return null;\n    }\n  }\n  /** [3] RelativeLocationPath::= Step | RelativeLocationPath '/' Step |\n   *                            | AbbreviatedRelativeLocationPath\n   *  [11] AbbreviatedRelativeLocationPath::= RelativeLocationPath '//' Step\n   * e.g. p/a, etc.\n   */\n  function relativeLocationPath(lhs, stream, a, isOnlyRootOk) {\n    if (null == lhs) {\n      lhs = step(stream, a);\n      if (null == lhs) return lhs;\n    }\n    var op;\n    while (op = stream.trypop(['/', '//'])) {\n      if ('//' === op) {\n        lhs = a.node('/', lhs,\n                     a.node('Axis', 'descendant-or-self', 'node', undefined));\n      }\n      var rhs = step(stream, a);\n      if (null == rhs && '/' === op && isOnlyRootOk) return lhs;\n      else isOnlyRootOk = false;\n      if (null == rhs)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected step after ' + op);\n      lhs = a.node('/', lhs, rhs);\n    }\n    return lhs;\n  }\n  /** [4] Step::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep\n   *  [12] AbbreviatedStep::= '.' | '..'\n   * e.g. @href, self::p, p, a[@href], ., ..\n   */\n  function step(stream, a) {\n    var abbrStep = stream.trypop(['.', '..']);\n    if ('.' === abbrStep)  // A location step of . is short for self::node().\n      return a.node('Axis', 'self', 'node');\n    if ('..' === abbrStep)  // A location step of .. is short for parent::node()\n      return a.node('Axis', 'parent', 'node');\n\n    var axis = axisSpecifier(stream, a);\n    var nodeType = nodeTypeTest(stream, a);\n    var nodeName;\n    if (null == nodeType) nodeName = nodeNameTest(stream, a);\n    if (null == axis && null == nodeType && null == nodeName) return null;\n    if (null == nodeType && null == nodeName)\n        throw new XPathException(\n            XPathException.INVALID_EXPRESSION_ERR,\n            'Position ' + stream.position() +\n            ': Expected nodeTest after axisSpecifier ' + axis);\n    if (null == axis) axis = 'child';\n    if (null == nodeType) {\n      // When there's only a node name, then the node type is forced to be the\n      // principal node type of the axis.\n      // see http://www.w3.org/TR/xpath/#dt-principal-node-type\n      if ('attribute' === axis) nodeType = 'attribute';\n      else if ('namespace' === axis) nodeType = 'namespace';\n      else nodeType = 'element';\n    }\n    var lhs = a.node('Axis', axis, nodeType, nodeName);\n    var pred;\n    while (null != (pred = predicate(lhs, stream, a))) {\n      lhs = pred;\n    }\n    return lhs;\n  }\n  /** [5] AxisSpecifier::= AxisName '::' | AbbreviatedAxisSpecifier\n   *  [6] AxisName::= 'ancestor' | 'ancestor-or-self' | 'attribute' | 'child'\n   *                | 'descendant' | 'descendant-or-self' | 'following'\n   *                | 'following-sibling' | 'namespace' | 'parent' |\n   *                | 'preceding' | 'preceding-sibling' | 'self'\n   *  [13] AbbreviatedAxisSpecifier::= '@'?\n   */\n  function axisSpecifier(stream, a) {\n    var attr = stream.trypop('@');\n    if (null != attr) return 'attribute';\n    var axisName = stream.trypopaxisname();\n    if (null != axisName) {\n      var coloncolon = stream.trypop('::');\n      if (null == coloncolon)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Should not happen. Should be ::.');\n      return axisName;\n    }\n  }\n  /** [7] NodeTest::= NameTest | NodeType '(' ')' | 'processing-instruction' '(' Literal ')'\n   *  [38] NodeType::= 'comment' | 'text' | 'processing-instruction' | 'node'\n   * I've split nodeTypeTest from nodeNameTest for convenience.\n   */\n  function nodeTypeTest(stream, a) {\n    if ('(' !== stream.peek2()) {\n      return null;\n    }\n    var type = stream.trypop(['comment', 'text', 'processing-instruction', 'node']);\n    if (null != type) {\n      if (null == stream.trypop('('))\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Should not happen.');\n      var param = undefined;\n      if (type == 'processing-instruction') {\n        param = stream.trypopliteral();\n      }\n      if (null == stream.trypop(')'))\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected close parens.');\n      return type\n    }\n  }\n  function nodeNameTest(stream, a) {\n    var name = stream.trypopnametest();\n    if (name != null) return name;\n    else return null;\n  }\n  /** [8] Predicate::= '[' PredicateExpr ']'\n   *  [9] PredicateExpr::= Expr\n   */\n  function predicate(lhs, stream, a) {\n    if (null == stream.trypop('[')) return null;\n    var expr = orExpr(stream, a);\n    if (null == expr)\n      throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                               'Position ' + stream.position() +\n                               ': Expected expression after [');\n    if (null == stream.trypop(']'))\n      throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                               'Position ' + stream.position() +\n                               ': Expected ] after expression.');\n    return a.node('Predicate', lhs, expr);\n  }\n  /** [14] Expr::= OrExpr\n   */\n  /** [15] PrimaryExpr::= VariableReference | '(' Expr ')' | Literal | Number | FunctionCall\n   * e.g. $x,  (3+4),  \"hi\",  32,  f(x)\n   */\n  function primaryExpr(stream, a) {\n    var x = stream.trypopliteral();\n    if (null == x)\n      x = stream.trypopnumber();\n    if (null != x) {\n      return x;\n    }\n    var varRef = stream.trypopvarref();\n    if (null != varRef) return a.node('VariableReference', varRef);\n    var funCall = functionCall(stream, a);\n    if (null != funCall) {\n      return funCall;\n    }\n    if (stream.trypop('(')) {\n      var e = orExpr(stream, a);\n      if (null == e)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected expression after (.');\n      if (null == stream.trypop(')'))\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected ) after expression.');\n      return e;\n    }\n    return null;\n  }\n  /** [16] FunctionCall::= FunctionName '(' ( Argument ( ',' Argument )* )? ')'\n   *  [17] Argument::= Expr\n   */\n  function functionCall(stream, a) {\n    var name = stream.trypopfuncname(stream, a);\n    if (null == name) return null;\n    if (null == stream.trypop('('))\n      throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                               'Position ' + stream.position() +\n                               ': Expected ( ) after function name.');\n    var params = [];\n    var first = true;\n    while (null == stream.trypop(')')) {\n      if (!first && null == stream.trypop(','))\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected , between arguments of the function.');\n      first = false;\n      var param = orExpr(stream, a);\n      if (param == null)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected expression as argument of function.');\n      params.push(param);\n    }\n    return a.node('FunctionCall', name, params);\n  }\n\n  /** [18] UnionExpr::= PathExpr | UnionExpr '|' PathExpr\n   */\n  function unionExpr(stream, a) { return binaryL(pathExpr, stream, a, '|'); }\n  /** [19] PathExpr ::= LocationPath\n   *                  | FilterExpr\n   *                  | FilterExpr '/' RelativeLocationPath\n   *                  | FilterExpr '//' RelativeLocationPath\n   * Unlike most other nodes, this one always generates a node because\n   * at this point all reverse nodesets must turn into a forward nodeset\n   */\n  function pathExpr(stream, a) {\n    // We have to do FilterExpr before LocationPath because otherwise\n    // LocationPath will eat up the name from a function call.\n    var filter = filterExpr(stream, a);\n    if (null == filter) {\n      var loc = locationPath(stream, a);\n      if (null == loc) {\n        throw new Error\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': The expression shouldn\\'t be empty...');\n      }\n      return a.node('PathExpr', loc);\n    }\n    var rel = relativeLocationPath(filter, stream, a, false);\n    if (filter === rel) return rel;\n    else return a.node('PathExpr', rel);\n  }\n  /** [20] FilterExpr::= PrimaryExpr | FilterExpr Predicate\n   * aka. FilterExpr ::= PrimaryExpr Predicate*\n   */\n  function filterExpr(stream, a) {\n    var primary = primaryExpr(stream, a);\n    if (primary == null) return null;\n    var pred, lhs = primary;\n    while (null != (pred = predicate(lhs, stream, a))) {\n      lhs = pred;\n    }\n    return lhs;\n  }\n\n  /** [21] OrExpr::= AndExpr | OrExpr 'or' AndExpr\n   */\n  function orExpr(stream, a) {\n    var orig = (stream.peeked || '') + stream.str\n    var r = binaryL(andExpr, stream, a, 'or');\n    var now = (stream.peeked || '') + stream.str;\n    return r;\n  }\n  /** [22] AndExpr::= EqualityExpr | AndExpr 'and' EqualityExpr\n   */\n  function andExpr(stream, a) { return binaryL(equalityExpr, stream, a, 'and'); }\n  /** [23] EqualityExpr::= RelationalExpr | EqualityExpr '=' RelationalExpr\n   *                     | EqualityExpr '!=' RelationalExpr\n   */\n  function equalityExpr(stream, a) { return binaryL(relationalExpr, stream, a, ['=','!=']); }\n  /** [24] RelationalExpr::= AdditiveExpr | RelationalExpr '<' AdditiveExpr\n   *                       | RelationalExpr '>' AdditiveExpr\n   *                       | RelationalExpr '<=' AdditiveExpr\n   *                       | RelationalExpr '>=' AdditiveExpr\n   */\n  function relationalExpr(stream, a) { return binaryL(additiveExpr, stream, a, ['<','>','<=','>=']); }\n  /** [25] AdditiveExpr::= MultiplicativeExpr\n   *                     | AdditiveExpr '+' MultiplicativeExpr\n   *                     | AdditiveExpr '-' MultiplicativeExpr\n   */\n  function additiveExpr(stream, a) { return binaryL(multiplicativeExpr, stream, a, ['+','-']); }\n  /** [26] MultiplicativeExpr::= UnaryExpr\n   *                           | MultiplicativeExpr MultiplyOperator UnaryExpr\n   *                           | MultiplicativeExpr 'div' UnaryExpr\n   *                           | MultiplicativeExpr 'mod' UnaryExpr\n   */\n  function multiplicativeExpr(stream, a) { return binaryL(unaryExpr, stream, a, ['*','div','mod']); }\n  /** [27] UnaryExpr::= UnionExpr | '-' UnaryExpr\n   */\n  function unaryExpr(stream, a) {\n    if (stream.trypop('-')) {\n      var e = unaryExpr(stream, a);\n      if (null == e)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Expected unary expression after -');\n      return a.node('UnaryMinus', e);\n    }\n    else return unionExpr(stream, a);\n  }\n  var astFactory = {\n    node: function() {return Array.prototype.slice.call(arguments);}\n  };\n\n\n  /***************************************************************************\n   *                            Optimizations (TODO)                         *\n   ***************************************************************************/\n  /**\n   * Some things I've been considering:\n   * 1) a//b becomes a/descendant::b if there's no predicate that uses\n   *    position() or last()\n   * 2) axis[pred]: when pred doesn't use position, evaluate it just once per\n   *    node in the node-set rather than once per (node, position, last).\n   * For more optimizations, look up Gecko's optimizer:\n   * http://mxr.mozilla.org/mozilla-central/source/content/xslt/src/xpath/txXPathOptimizer.cpp\n   */\n  // TODO\n  function optimize(ast) {\n  }\n\n  /***************************************************************************\n   *                           Evaluation: axes                              *\n   ***************************************************************************/\n\n  /**\n   * Data types: For string, number, boolean, we just use Javascript types.\n   * Node-sets have the form\n   *    {nodes: [node, ...]}\n   * or {nodes: [node, ...], pos: [[1], [2], ...], lasts: [[1], [2], ...]}\n   *\n   * Most of the time, only the node is used and the position information is\n   * discarded. But if you use a predicate, we need to try every value of\n   * position and last in case the predicate calls position() or last().\n   */\n\n  /**\n   * The NodeMultiSet is a helper class to help generate\n   * {nodes:[], pos:[], lasts:[]} structures. It is useful for the\n   * descendant, descendant-or-self, following-sibling, and\n   * preceding-sibling axes for which we can use a stack to organize things.\n   */\n  function NodeMultiSet(isReverseAxis) {\n    this.nodes = [];\n    this.pos = [];\n    this.lasts = [];\n    this.nextPos = [];\n    this.seriesIndexes = [];  // index within nodes that each series begins.\n    this.isReverseAxis = isReverseAxis;\n    this._pushToNodes = isReverseAxis ? Array.prototype.unshift : Array.prototype.push;\n  }\n  NodeMultiSet.prototype = {\n    pushSeries: function pushSeries() {\n      this.nextPos.push(1);\n      this.seriesIndexes.push(this.nodes.length);\n    },\n    popSeries: function popSeries() {\n      console.assert(0 < this.nextPos.length, this.nextPos);\n      var last = this.nextPos.pop() - 1,\n          indexInPos = this.nextPos.length,\n          seriesBeginIndex = this.seriesIndexes.pop(),\n          seriesEndIndex = this.nodes.length;\n      for (var i = seriesBeginIndex; i < seriesEndIndex; ++i) {\n        console.assert(indexInPos < this.lasts[i].length);\n        console.assert(undefined === this.lasts[i][indexInPos]);\n        this.lasts[i][indexInPos] = last;\n      }\n    },\n    finalize: function() {\n      if (null == this.nextPos) return this;\n      console.assert(0 === this.nextPos.length);\n      var lastsJSON = JSON.stringify(this.lasts);\n      for (var i = 0; i < this.lasts.length; ++i) {\n        for (var j = 0; j < this.lasts[i].length; ++j) {\n          console.assert(null != this.lasts[i][j], i + ',' + j + ':' + lastsJSON);\n        }\n      }\n      this.pushSeries = this.popSeries = this.addNode = function() {\n        throw new Error('Already finalized.');\n      };\n      return this;\n    },\n    addNode: function addNode(node) {\n      console.assert(node);\n      this._pushToNodes.call(this.nodes, node)\n      this._pushToNodes.call(this.pos, this.nextPos.slice());\n      this._pushToNodes.call(this.lasts, new Array(this.nextPos.length));\n      for (var i = 0; i < this.nextPos.length; ++i) this.nextPos[i]++;\n    },\n    simplify: function() {\n      this.finalize();\n      return {nodes:this.nodes, pos:this.pos, lasts:this.lasts};\n    }\n  };\n  function eachContext(nodeMultiSet) {\n    var r = [];\n    for (var i = 0; i < nodeMultiSet.nodes.length; i++) {\n      var node = nodeMultiSet.nodes[i];\n      if (!nodeMultiSet.pos) {\n        r.push({nodes:[node], pos: [[i + 1]], lasts: [[nodeMultiSet.nodes.length]]});\n      } else {\n        for (var j = 0; j < nodeMultiSet.pos[i].length; ++j) {\n          r.push({nodes:[node], pos: [[nodeMultiSet.pos[i][j]]], lasts: [[nodeMultiSet.lasts[i][j]]]});\n        }\n      }\n    }\n    return r;\n  }\n  /** Matcher used in the axes.\n   */\n  function NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase) {\n    this.nodeTypeNum = nodeTypeNum;\n    this.nodeName = nodeName;\n    this.shouldLowerCase = shouldLowerCase;\n    this.nodeNameTest =\n      null == nodeName ? this._alwaysTrue :\n      shouldLowerCase ? this._nodeNameLowerCaseEquals :\n      this._nodeNameEquals;\n  }\n  NodeMatcher.prototype = {\n    matches: function matches(node) {\n      if (0 === this.nodeTypeNum || this._nodeTypeMatches(node)) {\n        return this.nodeNameTest(getNodeName(node));\n      }\n\n      return false;\n    },\n    _nodeTypeMatches(nodeOrAttr) {\n      if (nodeOrAttr.constructor.name === 'Attr' && this.nodeTypeNum === 2) {\n        return true;\n      }\n      return nodeOrAttr.nodeType === this.nodeTypeNum;\n    },\n    _alwaysTrue: function(name) {return true;},\n    _nodeNameEquals: function _nodeNameEquals(name) {\n      return this.nodeName === name;\n    },\n    _nodeNameLowerCaseEquals: function _nodeNameLowerCaseEquals(name) {\n      return this.nodeName === name.toLowerCase();\n    }\n  };\n\n  function followingSiblingHelper(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase, shift, peek, followingNode, andSelf, isReverseAxis) {\n    var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n    var nodeMultiSet = new NodeMultiSet(isReverseAxis);\n    while (0 < nodeList.length) {  // can be if for following, preceding\n      var node = shift.call(nodeList);\n      console.assert(node != null);\n      node = followingNode(node);\n      nodeMultiSet.pushSeries();\n      var numPushed = 1;\n      while (null != node) {\n        if (! andSelf && matcher.matches(node))\n          nodeMultiSet.addNode(node);\n        if (node === peek.call(nodeList)) {\n          shift.call(nodeList);\n          nodeMultiSet.pushSeries();\n          numPushed++;\n        }\n        if (andSelf && matcher.matches(node))\n          nodeMultiSet.addNode(node);\n        node = followingNode(node);\n      }\n      while (0 < numPushed--)\n        nodeMultiSet.popSeries();\n    }\n    return nodeMultiSet;\n  }\n\n  /** Returns the next non-descendant node in document order.\n   * This is the first node in following::node(), if node is the context.\n   */\n  function followingNonDescendantNode(node) {\n    if (node.ownerElement) {\n      if (node.ownerElement.firstChild)\n        return node.ownerElement.firstChild;\n      node = node.ownerElement;\n    }\n    do {\n      if (node.nextSibling) return node.nextSibling;\n    } while (node = node.parentNode);\n    return null;\n  }\n\n  /** Returns the next node in a document-order depth-first search.\n   * See the definition of document order[1]:\n   *   1) element\n   *   2) namespace nodes\n   *   3) attributes\n   *   4) children\n   *   [1]: http://www.w3.org/TR/xpath/#dt-document-order\n   */\n  function followingNode(node) {\n    if (node.ownerElement)  // attributes: following node of element.\n      node = node.ownerElement;\n    if (null != node.firstChild)\n      return node.firstChild;\n    do {\n      if (null != node.nextSibling) {\n        return node.nextSibling;\n      }\n      node = node.parentNode;\n    } while (node);\n    return null;\n  }\n  /** Returns the previous node in document order (excluding attributes\n   * and namespace nodes).\n   */\n  function precedingNode(node) {\n    if (node.ownerElement)\n      return node.ownerElement;\n    if (null != node.previousSibling) {\n      node = node.previousSibling;\n      while (null != node.lastChild) {\n        node = node.lastChild;\n      }\n      return node;\n    }\n    if (null != node.parentNode) {\n      return node.parentNode;\n    }\n    return null;\n  }\n  /** This axis is inefficient if there are many nodes in the nodeList.\n   * But I think it's a pretty useless axis so it's ok. */\n  function followingHelper(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n    var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n    var nodeMultiSet = new NodeMultiSet(false);\n    var cursor = nodeList[0];\n    var unorderedFollowingStarts = [];\n    for (var i = 0; i < nodeList.length; i++) {\n      var node = nodeList[i];\n      var start = followingNonDescendantNode(node);\n      if (start)\n        unorderedFollowingStarts.push(start);\n    }\n    if (0 === unorderedFollowingStarts.length)\n      return {nodes:[]};\n    var pos = [], nextPos = [];\n    var started = 0;\n    while (cursor = followingNode(cursor)) {\n      for (var i = unorderedFollowingStarts.length - 1; i >= 0; i--){\n        if (cursor === unorderedFollowingStarts[i]) {\n          nodeMultiSet.pushSeries();\n          unorderedFollowingStarts.splice(i,i+1);\n          started++;\n        }\n      }\n      if (started && matcher.matches(cursor)) {\n        nodeMultiSet.addNode(cursor);\n      }\n    }\n    console.assert(0 === unorderedFollowingStarts.length);\n    for (var i = 0; i < started; i++)\n      nodeMultiSet.popSeries();\n    return nodeMultiSet.finalize();\n  }\n  function precedingHelper(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n    var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n    var cursor = nodeList.pop();\n    if (null == cursor) return {nodes:{}};\n    var r = {nodes:[], pos:[], lasts:[]};\n    var nextParents = [cursor.parentNode || cursor.ownerElement], nextPos = [1];\n    while (cursor = precedingNode(cursor)) {\n      if (cursor === nodeList[nodeList.length - 1]) {\n        nextParents.push(nodeList.pop());\n        nextPos.push(1);\n      }\n      var matches = matcher.matches(cursor);\n      var pos, someoneUsed = false;\n      if (matches)\n        pos = nextPos.slice();\n\n      for (var i = 0; i < nextParents.length; ++i) {\n        if (cursor === nextParents[i]) {\n          nextParents[i] = cursor.parentNode || cursor.ownerElement;\n          if (matches) {\n            pos[i] = null;\n          }\n        } else {\n          if (matches) {\n            pos[i] = nextPos[i]++;\n            someoneUsed = true;\n          }\n        }\n      }\n      if (someoneUsed) {\n        r.nodes.unshift(cursor);\n        r.pos.unshift(pos);\n      }\n    }\n    for (var i = 0; i < r.pos.length; ++i) {\n      var lasts = [];\n      r.lasts.push(lasts);\n      for (var j = r.pos[i].length - 1; j >= 0; j--) {\n        if (null == r.pos[i][j]) {\n          r.pos[i].splice(j, j+1);\n        } else {\n          lasts.unshift(nextPos[j] - 1);\n        }\n      }\n    }\n    return r;\n  }\n\n  /** node-set, axis -> node-set */\n  function descendantDfs(nodeMultiSet, node, remaining, matcher, andSelf, attrIndices, attrNodes) {\n    while (0 < remaining.length && null != remaining[0].ownerElement) {\n      var attr = remaining.shift();\n      if (andSelf && matcher.matches(attr)) {\n        attrNodes.push(attr);\n        attrIndices.push(nodeMultiSet.nodes.length);\n      }\n    }\n    if (null != node && !andSelf) {\n      if (matcher.matches(node))\n        nodeMultiSet.addNode(node);\n    }\n    var pushed = false;\n    if (null == node) {\n      if (0 === remaining.length) return;\n      node = remaining.shift();\n      nodeMultiSet.pushSeries();\n      pushed = true;\n    } else if (0 < remaining.length && node === remaining[0]) {\n      nodeMultiSet.pushSeries();\n      pushed = true;\n      remaining.shift();\n    }\n    if (andSelf) {\n      if (matcher.matches(node))\n        nodeMultiSet.addNode(node);\n    }\n    // TODO: use optimization. Also try element.getElementsByTagName\n    // var nodeList = 1 === nodeTypeNum && null != node.children ? node.children : node.childNodes;\n    var nodeList = node.childNodes;\n    for (var j = 0; j < nodeList.length; ++j) {\n      var child = nodeList[j];\n      descendantDfs(nodeMultiSet, child, remaining, matcher, andSelf, attrIndices, attrNodes);\n    }\n    if (pushed) {\n      nodeMultiSet.popSeries();\n    }\n  }\n  function descenantHelper(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase, andSelf) {\n    var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n    var nodeMultiSet = new NodeMultiSet(false);\n    var attrIndices = [], attrNodes = [];\n    while (0 < nodeList.length) {\n      // var node = nodeList.shift();\n      descendantDfs(nodeMultiSet, null, nodeList, matcher, andSelf, attrIndices, attrNodes);\n    }\n    nodeMultiSet.finalize();\n    for (var i = attrNodes.length-1; i >= 0; --i) {\n      nodeMultiSet.nodes.splice(attrIndices[i], attrIndices[i], attrNodes[i]);\n      nodeMultiSet.pos.splice(attrIndices[i], attrIndices[i], [1]);\n      nodeMultiSet.lasts.splice(attrIndices[i], attrIndices[i], [1]);\n    }\n    return nodeMultiSet;\n  }\n  /**\n   */\n  function ancestorHelper(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase, andSelf) {\n    var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n    var ancestors = []; // array of non-empty arrays of matching ancestors\n    for (var i = 0; i < nodeList.length; ++i) {\n      var node = nodeList[i];\n      var isFirst = true;\n      var a = [];\n      while (null != node) {\n        if (!isFirst || andSelf) {\n          if (matcher.matches(node))\n            a.push(node);\n        }\n        isFirst = false;\n        node = node.parentNode || node.ownerElement;\n      }\n      if (0 < a.length)\n        ancestors.push(a);\n    }\n    var lasts = [];\n    for (var i = 0; i < ancestors.length; ++i) lasts.push(ancestors[i].length);\n    var nodeMultiSet = new NodeMultiSet(true);\n    var newCtx = {nodes:[], pos:[], lasts:[]};\n    while (0 < ancestors.length) {\n      var pos = [ancestors[0].length];\n      var last = [lasts[0]];\n      var node = ancestors[0].pop();\n      for (var i = ancestors.length - 1; i > 0; --i) {\n        if (node === ancestors[i][ancestors[i].length - 1]) {\n          pos.push(ancestors[i].length);\n          last.push(lasts[i]);\n          ancestors[i].pop();\n          if (0 === ancestors[i].length) {\n            ancestors.splice(i, i+1);\n            lasts.splice(i, i+1);\n          }\n        }\n      }\n      if (0 === ancestors[0].length) {\n        ancestors.shift();\n        lasts.shift();\n      }\n      newCtx.nodes.push(node);\n      newCtx.pos.push(pos);\n      newCtx.lasts.push(last);\n    }\n    return newCtx;\n  }\n  /** Helper function for sortDocumentOrder. Returns a list of indices, from the\n   * node to the root, of positions within parent.\n   * For convenience, the node is the first element of the array.\n   */\n  function addressVector(node) {\n    var r = [node];\n    if (null != node.ownerElement) {\n      node = node.ownerElement;\n      r.push(-1);\n    }\n    while (null != node) {\n      var i = 0;\n      while (null != node.previousSibling) {\n        node = node.previousSibling;\n        i++;\n      }\n      r.push(i);\n      node = node.parentNode\n    }\n    return r;\n  }\n  function addressComparator(a, b) {\n    var minlen = Math.min(a.length - 1, b.length - 1),  // not including [0]=node\n        alen = a.length,\n        blen = b.length;\n    if (a[0] === b[0]) return 0;\n    var c;\n    for (var i = 0; i < minlen; ++i) {\n      c = a[alen - i - 1] - b[blen - i - 1];\n      if (0 !== c)\n        break;\n    }\n    if (null == c || 0 === c) {\n      // All equal until one of the nodes. The longer one is the descendant.\n      c = alen - blen;\n    }\n    if (0 === c)\n      c = getNodeName(a) - getNodeName(b);\n    if (0 === c)\n      c = 1;\n    return c;\n  }\n  var sortUniqDocumentOrder = xpath.sortUniqDocumentOrder = function(nodes) {\n    var a = [];\n    for (var i = 0; i < nodes.length; i++) {\n      var node = nodes[i];\n      var v = addressVector(node);\n      a.push(v);\n    }\n    a.sort(addressComparator);\n    var b = [];\n    for (var i = 0; i < a.length; i++) {\n      if (0 < i && a[i][0] === a[i - 1][0])\n        continue;\n      b.push(a[i][0]);\n    }\n    return b;\n  }\n  /** Sort node multiset. Does not do any de-duping. */\n  function sortNodeMultiSet(nodeMultiSet) {\n    var a = [];\n    for (var i = 0; i < nodeMultiSet.nodes.length; i++) {\n      var v = addressVector(nodeMultiSet.nodes[i]);\n      a.push({v:v, n:nodeMultiSet.nodes[i],\n              p:nodeMultiSet.pos[i], l:nodeMultiSet.lasts[i]});\n    }\n    a.sort(compare);\n    var r = {nodes:[], pos:[], lasts:[]};\n    for (var i = 0; i < a.length; ++i) {\n      r.nodes.push(a[i].n);\n      r.pos.push(a[i].p);\n      r.lasts.push(a[i].l);\n    }\n    function compare(x, y) {\n      return addressComparator(x.v, y.v);\n    }\n    return r;\n  }\n  /** Returns an array containing all the ancestors down to a node.\n   * The array starts with document.\n   */\n  function nodeAndAncestors(node) {\n    var ancestors = [node];\n    var p = node;\n    while (p = p.parentNode || p.ownerElement) {\n      ancestors.unshift(p);\n    }\n    return ancestors;\n  }\n  function compareSiblings(a, b) {\n    if (a === b) return 0;\n    var c = a;\n    while (c = c.previousSibling) {\n      if (c === b)\n        return 1;  // b < a\n    }\n    c = b;\n    while (c = c.previousSibling) {\n      if (c === a)\n        return -1;  // a < b\n    }\n    throw new Error('a and b are not siblings: ' + xpath.stringifyObject(a) + ' vs ' + xpath.stringifyObject(b));\n  }\n  /** The merge in merge-sort.*/\n  function mergeNodeLists(x, y) {\n    var a, b, aanc, banc, r = [];\n    if ('object' !== typeof x)\n      throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                               'Invalid LHS for | operator ' +\n                               '(expected node-set): ' + x);\n    if ('object' !== typeof y)\n      throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                               'Invalid LHS for | operator ' +\n                               '(expected node-set): ' + y);\n    while (true) {\n      if (null == a) {\n        a = x.shift();\n        if (null != a)\n          aanc = addressVector(a);\n      }\n      if (null == b) {\n        b = y.shift();\n        if (null != b)\n          banc = addressVector(b);\n      }\n      if (null == a || null == b) break;\n      var c = addressComparator(aanc, banc);\n      if (c < 0) {\n        r.push(a);\n        a = null;\n        aanc = null;\n      } else if (c > 0) {\n        r.push(b);\n        b = null;\n        banc = null;\n      } else if (getNodeName(a) < getNodeName(b)) {  // attributes\n        r.push(a);\n        a = null;\n        aanc = null;\n      } else if (getNodeName(a) > getNodeName(b)) {  // attributes\n        r.push(b);\n        b = null;\n        banc = null;\n      } else if (a !== b) {\n        // choose b arbitrarily\n        r.push(b);\n        b = null;\n        banc = null;\n      } else {\n        console.assert(a === b, c);\n        // just skip b without pushing it.\n        b = null;\n        banc = null;\n      }\n    }\n    while (a) {\n      r.push(a);\n      a = x.shift();\n    }\n    while (b) {\n      r.push(b);\n      b = y.shift();\n    }\n    return r;\n  }\n  function comparisonHelper(test, x, y, isNumericComparison) {\n    var coersion;\n    if (isNumericComparison)\n      coersion = fn.number;\n    else coersion =\n      'boolean' === typeof x || 'boolean' === typeof y ? fn['boolean'] :\n      'number' === typeof x || 'number' === typeof y ? fn.number :\n      fn.string;\n    if ('object' === typeof x && 'object' === typeof y) {\n      var aMap = {};\n      for (var i = 0; i < x.nodes.length; ++i) {\n        var xi = coersion({nodes:[x.nodes[i]]});\n        for (var j = 0; j < y.nodes.length; ++j) {\n          var yj = coersion({nodes:[y.nodes[j]]});\n          if (test(xi, yj)) return true;\n        }\n      }\n      return false;\n    } else if ('object' === typeof x && x.nodes && x.nodes.length) {\n      for (var i = 0; i < x.nodes.length; ++i) {\n        var xi = coersion({nodes:[x.nodes[i]]}), yc = coersion(y);\n        if (test(xi, yc))\n          return true;\n      }\n      return false;\n    } else if ('object' === typeof y && x.nodes && x.nodes.length) {\n      for (var i = 0; i < x.nodes.length; ++i) {\n        var yi = coersion({nodes:[y.nodes[i]]}), xc = coersion(x);\n        if (test(xc, yi))\n          return true;\n      }\n      return false;\n    } else {\n      var xc = coersion(x), yc = coersion(y);\n      return test(xc, yc);\n    }\n  }\n  var axes = xpath.axes = {\n    'ancestor':\n      function ancestor(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return ancestorHelper(\n          nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase, false);\n      },\n    'ancestor-or-self':\n      function ancestorOrSelf(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return ancestorHelper(\n          nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase, true);\n      },\n    'attribute':\n      function attribute(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        // TODO: figure out whether positions should be undefined here.\n        var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n        var nodeMultiSet = new NodeMultiSet(false);\n        if (null != nodeName) {\n          // TODO: with namespace\n          for (var i = 0; i < nodeList.length; ++i) {\n            var node = nodeList[i];\n            if (null == node.getAttributeNode)\n              continue;  // only Element has .getAttributeNode\n            var attr = node.getAttributeNode(nodeName);\n            if (null != attr && matcher.matches(attr)) {\n              nodeMultiSet.pushSeries();\n              nodeMultiSet.addNode(attr);\n              nodeMultiSet.popSeries();\n            }\n          }\n        } else {\n          for (var i = 0; i < nodeList.length; ++i) {\n            var node = nodeList[i];\n            if (null != node.attributes) {\n              nodeMultiSet.pushSeries();\n              for (var j = 0; j < node.attributes.length; j++) {  // all nodes have .attributes\n                var attr = node.attributes[j];\n                if (matcher.matches(attr))  // TODO: I think this check is unnecessary\n                  nodeMultiSet.addNode(attr);\n              }\n              nodeMultiSet.popSeries();\n            }\n          }\n        }\n        return nodeMultiSet.finalize();\n      },\n    'child':\n      function child(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n        var nodeMultiSet = new NodeMultiSet(false);\n        for (var i = 0; i < nodeList.length; ++i) {\n          var n = nodeList[i];\n          if (n.ownerElement)  // skip attribute nodes' text child.\n            continue;\n          if (n.childNodes) {\n            nodeMultiSet.pushSeries();\n            var childList = 1 === nodeTypeNum && null != n.children ?\n                n.children : n.childNodes;\n            for (var j = 0; j < childList.length; ++j) {\n              var child = childList[j];\n              if (matcher.matches(child)) {\n                nodeMultiSet.addNode(child);\n              }\n              // don't have to do de-duping because children have parent,\n              // which are current context.\n            }\n            nodeMultiSet.popSeries();\n          }\n        }\n        nodeMultiSet.finalize();\n        return sortNodeMultiSet(nodeMultiSet);\n      },\n    'descendant':\n      function descenant(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return descenantHelper(\n          nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase, false);\n      },\n    'descendant-or-self':\n      function descenantOrSelf(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return descenantHelper(\n          nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase, true);\n      },\n    'following':\n      function following(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return followingHelper(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase);\n      },\n    'following-sibling':\n      function followingSibling(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return followingSiblingHelper(\n          nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase,\n          Array.prototype.shift, function() {return this[0];},\n          function(node) {return node.nextSibling;});\n      },\n    'namespace':\n      function namespace(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        // TODO\n      },\n    'parent':\n      function parent(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n        var nodes = [], pos = [];\n        for (var i = 0; i < nodeList.length; ++i) {\n          var parent = nodeList[i].parentNode || nodeList[i].ownerElement;\n          if (null == parent)\n            continue;\n          if (!matcher.matches(parent))\n            continue;\n          if (nodes.length > 0 && parent === nodes[nodes.length-1])\n            continue;\n          nodes.push(parent);\n          pos.push([1]);\n        }\n        return {nodes:nodes, pos:pos, lasts:pos};\n      },\n    'preceding':\n      function preceding(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return precedingHelper(\n          nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase);\n      },\n    'preceding-sibling':\n      function precedingSibling(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        return followingSiblingHelper(\n          nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase,\n          Array.prototype.pop, function() {return this[this.length-1];},\n          function(node) {return node.previousSibling},\n          false, true);\n      },\n    'self':\n      function self(nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase) {\n        var nodes = [], pos = [];\n        var matcher = new NodeMatcher(nodeTypeNum, nodeName, shouldLowerCase);\n        for (var i = 0; i < nodeList.length; ++i) {\n          if (matcher.matches(nodeList[i])) {\n            nodes.push(nodeList[i]);\n            pos.push([1]);\n          }\n        }\n        return {nodes: nodes, pos: pos, lasts: pos}\n      }\n  };\n\n  /***************************************************************************\n   *                         Evaluation: functions                           *\n   ***************************************************************************/\n  var fn = {\n    'number': function number(optObject) {\n      if ('number' === typeof optObject)\n        return optObject;\n      if ('string' === typeof optObject)\n        return parseFloat(optObject);  // note: parseFloat(' ') -> NaN, unlike +' ' -> 0.\n      if ('boolean' === typeof optObject)\n        return +optObject;\n      return fn.number(fn.string.call(this, optObject));  // for node-sets\n    },\n    'string': function string(optObject) {\n      if (null == optObject)\n        return fn.string(this);\n      if ('string' === typeof optObject || 'boolean' === typeof optObject ||\n          'number' === typeof optObject)\n        return '' + optObject;\n      if (0 == optObject.nodes.length) return '';\n      if (null != optObject.nodes[0].textContent)\n        return optObject.nodes[0].textContent;\n      return optObject.nodes[0].nodeValue;\n    },\n    'boolean': function booleanVal(x) {\n      return 'object' === typeof x ? x.nodes.length > 0 : !!x;\n    },\n    'last': function last() {\n      console.assert(Array.isArray(this.pos));\n      console.assert(Array.isArray(this.lasts));\n      console.assert(1 === this.pos.length);\n      console.assert(1 === this.lasts.length);\n      console.assert(1 === this.lasts[0].length);\n      return this.lasts[0][0];\n    },\n    'position': function position() {\n      console.assert(Array.isArray(this.pos));\n      console.assert(Array.isArray(this.lasts));\n      console.assert(1 === this.pos.length);\n      console.assert(1 === this.lasts.length);\n      console.assert(1 === this.pos[0].length);\n      return this.pos[0][0];\n    },\n    'count': function count(nodeSet) {\n      if ('object' !== typeof nodeSet)\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Position ' + stream.position() +\n                                 ': Function count(node-set) ' +\n                                 'got wrong argument type: ' + nodeSet);\n      return nodeSet.nodes.length;\n    },\n    'id': function id(object) {\n      var r = {nodes: []};\n      var doc = this.nodes[0].ownerDocument || this.nodes[0];\n      console.assert(doc);\n      var ids;\n      if ('object' === typeof object) {\n        // for node-sets, map id over each node value.\n        ids = [];\n        for (var i = 0; i < object.nodes.length; ++i) {\n          var idNode = object.nodes[i];\n          var idsString = fn.string({nodes:[idNode]});\n          var a = idsString.split(/[ \\t\\r\\n]+/g);\n          Array.prototype.push.apply(ids, a);\n        }\n      } else {\n        var idsString = fn.string(object);\n        var a = idsString.split(/[ \\t\\r\\n]+/g);\n        ids = a;\n      }\n      for (var i = 0; i < ids.length; ++i) {\n        var id = ids[i];\n        if (0 === id.length)\n          continue;\n        var node = doc.getElementById(id);\n        if (null != node)\n          r.nodes.push(node);\n      }\n      r.nodes = sortUniqDocumentOrder(r.nodes);\n      return r;\n    },\n    'local-name': function(nodeSet) {\n      if (null == nodeSet)\n        return fn.name(this);\n      if (null == nodeSet.nodes) {\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'argument to name() must be a node-set. got ' + nodeSet);\n      }\n      // TODO: namespaced version\n      return nodeSet.nodes[0].localName;\n    },\n    'namespace-uri': function(nodeSet) {\n      // TODO\n      throw new Error('not implemented yet');\n    },\n    'name': function(nodeSet) {\n      if (null == nodeSet)\n        return fn.name(this);\n      if (null == nodeSet.nodes) {\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'argument to name() must be a node-set. got ' + nodeSet);\n      }\n      return nodeSet.nodes[0].name;\n    },\n    'concat': function concat(x) {\n      var l = [];\n      for (var i = 0; i < arguments.length; ++i) {\n        l.push(fn.string(arguments[i]));\n      }\n      return l.join('');\n    },\n    'starts-with': function startsWith(a, b) {\n      var as = fn.string(a), bs = fn.string(b);\n      return as.substr(0, bs.length) === bs;\n    },\n    'contains': function contains(a, b) {\n      var as = fn.string(a), bs = fn.string(b);\n      var i = as.indexOf(bs);\n      if (-1 === i) return false;\n      return true;\n    },\n    'substring-before': function substringBefore(a, b) {\n      var as = fn.string(a), bs = fn.string(b);\n      var i = as.indexOf(bs);\n      if (-1 === i) return '';\n      return as.substr(0, i);\n    },\n    'substring-after': function substringBefore(a, b) {\n      var as = fn.string(a), bs = fn.string(b);\n      var i = as.indexOf(bs);\n      if (-1 === i) return '';\n      return as.substr(i + bs.length);\n    },\n    'substring': function substring(string, start, optEnd) {\n      if (null == string || null == start) {\n        throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                 'Must be at least 2 arguments to string()');\n      }\n      var sString = fn.string(string),\n          iStart = fn.round(start),\n          iEnd = optEnd == null ? null : fn.round(optEnd);\n      // Note that xpath string positions user 1-based index\n      if (iEnd == null)\n        return sString.substr(iStart - 1);\n      else\n        return sString.substr(iStart - 1, iEnd);\n    },\n    'string-length': function stringLength(optString) {\n      return fn.string.call(this, optString).length;\n    },\n    'normalize-space': function normalizeSpace(optString) {\n      var s = fn.string.call(this, optString);\n      return s.replace(/[ \\t\\r\\n]+/g, ' ').replace(/^ | $/g, '');\n    },\n    'translate': function translate(string, from, to) {\n      var sString = fn.string.call(this, string),\n          sFrom = fn.string(from),\n          sTo = fn.string(to);\n      var eachCharRe = [];\n      var map = {};\n      for (var i = 0; i < sFrom.length; ++i) {\n        var c = sFrom.charAt(i);\n        map[c] = sTo.charAt(i);  // returns '' if beyond length of sTo.\n        // copied from goog.string.regExpEscape in the Closure library.\n        eachCharRe.push(\n          c.replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g, '\\\\$1').\n            replace(/\\x08/g, '\\\\x08'));\n      }\n      var re = new RegExp(eachCharRe.join('|'), 'g');\n      return sString.replace(re, function(c) {return map[c];});\n    },\n    /// Boolean functions\n    'not': function not(x) {\n      var bx = fn['boolean'](x);\n      return !bx;\n    },\n    'true': function trueVal() { return true; },\n    'false': function falseVal() { return false; },\n    // TODO\n    'lang': function lang(string) { throw new Error('Not implemented');},\n    'sum': function sum(optNodeSet) {\n      if (null == optNodeSet) return fn.sum(this);\n      // for node-sets, map id over each node value.\n      var sum = 0;\n      for (var i = 0; i < optNodeSet.nodes.length; ++i) {\n        var node = optNodeSet.nodes[i];\n        var x = fn.number({nodes:[node]});\n        sum += x;\n      }\n      return sum;\n    },\n    'floor': function floor(number) {\n      return Math.floor(fn.number(number));\n    },\n    'ceiling': function ceiling(number) {\n      return Math.ceil(fn.number(number));\n    },\n    'round': function round(number) {\n      return Math.round(fn.number(number));\n    }\n  };\n  /***************************************************************************\n   *                         Evaluation: operators                           *\n   ***************************************************************************/\n  var more = {\n    UnaryMinus: function(x) { return -fn.number(x); },\n    '+': function(x, y) { return fn.number(x) + fn.number(y); },\n    '-': function(x, y) { return fn.number(x) - fn.number(y); },\n    '*': function(x, y) { return fn.number(x) * fn.number(y); },\n    'div': function(x, y) { return fn.number(x) / fn.number(y); },\n    'mod': function(x, y) { return fn.number(x) % fn.number(y); },\n    '<': function(x, y) {\n      return comparisonHelper(function(x, y) { return fn.number(x) < fn.number(y);}, x, y, true);\n    },\n    '<=': function(x, y) {\n      return comparisonHelper(function(x, y) { return fn.number(x) <= fn.number(y);}, x, y, true);\n    },\n    '>':  function(x, y) {\n      return comparisonHelper(function(x, y) { return fn.number(x) > fn.number(y);}, x, y, true);\n    },\n    '>=': function(x, y) {\n      return comparisonHelper(function(x, y) { return fn.number(x) >= fn.number(y);}, x, y, true);\n    },\n    'and': function(x, y) { return fn['boolean'](x) && fn['boolean'](y); },\n    'or': function(x, y) { return fn['boolean'](x) || fn['boolean'](y); },\n    '|': function(x, y) { return {nodes: mergeNodeLists(x.nodes, y.nodes)}; },\n    '=': function(x, y) {\n      // optimization for two node-sets case: avoid n^2 comparisons.\n      if ('object' === typeof x && 'object' === typeof y) {\n        var aMap = {};\n        for (var i = 0; i < x.nodes.length; ++i) {\n          var s = fn.string({nodes:[x.nodes[i]]});\n          aMap[s] = true;\n        }\n        for (var i = 0; i < y.nodes.length; ++i) {\n          var s = fn.string({nodes:[y.nodes[i]]});\n          if (aMap[s]) return true;\n        }\n        return false;\n      } else {\n        return comparisonHelper(function(x, y) {return x === y;}, x, y);\n      }\n    },\n    '!=': function(x, y) {\n      // optimization for two node-sets case: avoid n^2 comparisons.\n      if ('object' === typeof x && 'object' === typeof y) {\n        if (0 === x.nodes.length || 0 === y.nodes.length) return false;\n        var aMap = {};\n        for (var i = 0; i < x.nodes.length; ++i) {\n          var s = fn.string({nodes:[x.nodes[i]]});\n          aMap[s] = true;\n        }\n        for (var i = 0; i < y.nodes.length; ++i) {\n          var s = fn.string({nodes:[y.nodes[i]]});\n          if (!aMap[s]) return true;\n        }\n        return false;\n      } else {\n        return comparisonHelper(function(x, y) {return x !== y;}, x, y);\n      }\n    }\n  };\n  var nodeTypes = xpath.nodeTypes = {\n    'node': 0,\n    'attribute': 2,\n    'comment': 8, // this.doc.COMMENT_NODE,\n    'text': 3, // this.doc.TEXT_NODE,\n    'processing-instruction': 7, // this.doc.PROCESSING_INSTRUCTION_NODE,\n    'element': 1  //this.doc.ELEMENT_NODE\n  };\n  /** For debugging and unit tests: returnjs a stringified version of the\n   * argument. */\n  var stringifyObject = xpath.stringifyObject = function stringifyObject(ctx) {\n    var seenKey = 'seen' + Math.floor(Math.random()*1000000000);\n    return JSON.stringify(helper(ctx));\n\n    function helper(ctx) {\n      if (Array.isArray(ctx)) {\n        return ctx.map(function(x) {return helper(x);});\n      }\n      if ('object' !== typeof ctx) return ctx;\n      if (null == ctx) return ctx;\n    //  if (ctx.toString) return ctx.toString();\n      if (null != ctx.outerHTML) return ctx.outerHTML;\n      if (null != ctx.nodeValue) return ctx.nodeName + '=' + ctx.nodeValue;\n      if (ctx[seenKey]) return '[circular]';\n      ctx[seenKey] = true;\n      var nicer = {};\n      for (var key in ctx) {\n        if (seenKey === key)\n          continue;\n        try {\n          nicer[key] = helper(ctx[key]);\n        } catch (e) {\n          nicer[key] = '[exception: ' + e.message + ']';\n        }\n      }\n      delete ctx[seenKey];\n      return nicer;\n    }\n  }\n  var Evaluator = xpath.Evaluator = function Evaluator(doc) {\n    this.doc = doc;\n  }\n  Evaluator.prototype = {\n    val: function val(ast, ctx) {\n      console.assert(ctx.nodes);\n\n      if ('number' === typeof ast || 'string' === typeof ast) return ast;\n      if (more[ast[0]]) {\n        var evaluatedParams = [];\n        for (var i = 1; i < ast.length; ++i) {\n          evaluatedParams.push(this.val(ast[i], ctx));\n        }\n        var r = more[ast[0]].apply(ctx, evaluatedParams);\n        return r;\n      }\n      switch (ast[0]) {\n        case 'Root': return {nodes: [this.doc]};\n        case 'FunctionCall':\n          var functionName = ast[1], functionParams = ast[2];\n          if (null == fn[functionName])\n            throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,\n                                     'Unknown function: ' + functionName);\n          var evaluatedParams = [];\n          for (var i = 0; i < functionParams.length; ++i) {\n            evaluatedParams.push(this.val(functionParams[i], ctx));\n          }\n          var r = fn[functionName].apply(ctx, evaluatedParams);\n          return r;\n        case 'Predicate':\n          var lhs = this.val(ast[1], ctx);\n          var ret = {nodes: []};\n          var contexts = eachContext(lhs);\n          for (var i = 0; i < contexts.length; ++i) {\n            var singleNodeSet = contexts[i];\n            var rhs = this.val(ast[2], singleNodeSet);\n            var success;\n            if ('number' === typeof rhs) {\n              success = rhs === singleNodeSet.pos[0][0];\n            } else {\n              success = fn['boolean'](rhs);\n            }\n            if (success) {\n              var node = singleNodeSet.nodes[0];\n              ret.nodes.push(node);\n              // skip over all the rest of the same node.\n              while (i+1 < contexts.length && node === contexts[i+1].nodes[0]) {\n                i++;\n              }\n            }\n          }\n          return ret;\n        case 'PathExpr':\n          // turn the path into an expressoin; i.e., remove the position\n          // information of the last axis.\n          var x = this.val(ast[1], ctx);\n          // Make the nodeset a forward-direction-only one.\n          if (x.finalize) {  // it is a NodeMultiSet\n            return {nodes: x.nodes};\n          } else {\n            return x;\n          }\n        case '/':\n          // TODO: don't generate '/' nodes, just Axis nodes.\n          var lhs = this.val(ast[1], ctx);\n          console.assert(null != lhs);\n          var r = this.val(ast[2], lhs);\n          console.assert(null != r);\n          return r;\n        case 'Axis':\n          // All the axis tests from Step. We only get AxisSpecifier NodeTest,\n          // not the predicate (which is applied later)\n          var axis = ast[1],\n              nodeType = ast[2],\n              nodeTypeNum = nodeTypes[nodeType],\n              shouldLowerCase = true,  // TODO: give option\n              nodeName = ast[3] && shouldLowerCase ? ast[3].toLowerCase() : ast[3];\n          nodeName = nodeName === '*' ? null : nodeName;\n          if ('object' !== typeof ctx) return {nodes:[], pos:[]};\n          var nodeList = ctx.nodes.slice();  // TODO: is copy needed?\n          var r = axes[axis](nodeList  /*destructive!*/, nodeTypeNum, nodeName, shouldLowerCase);\n          return r;\n      }\n    }\n  };\n  var evaluate = xpath.evaluate = function evaluate(expr, doc, context) {\n    //var astFactory = new AstEvaluatorFactory(doc, context);\n    var stream = new Stream(expr);\n    var ast = parse(stream, astFactory);\n    var val = new Evaluator(doc).val(ast, {nodes: [context]});\n    return val;\n  }\n\n  /***************************************************************************\n   *                           DOM interface                                 *\n   ***************************************************************************/\n  var XPathException = xpath.XPathException = function XPathException(code, message) {\n    var e = new Error(message);\n    e.name = 'XPathException';\n    e.code = code;\n    return e;\n  }\n  XPathException.INVALID_EXPRESSION_ERR = 51;\n  XPathException.TYPE_ERR = 52;\n\n\n  var XPathEvaluator = xpath.XPathEvaluator = function XPathEvaluator() {}\n  XPathEvaluator.prototype = {\n    createExpression: function(expression, resolver) {\n      return new XPathExpression(expression, resolver);\n    },\n    createNSResolver: function(nodeResolver) {\n      // TODO\n    },\n    evaluate: function evaluate(expression, contextNode, resolver, type, result) {\n      var expr = new XPathExpression(expression, resolver);\n      return expr.evaluate(contextNode, type, result);\n    }\n  };\n\n\n  var XPathExpression = xpath.XPathExpression = function XPathExpression(expression, resolver, optDoc) {\n    var stream = new Stream(expression);\n    this._ast = parse(stream, astFactory);\n    this._doc = optDoc;\n  }\n  XPathExpression.prototype = {\n    evaluate: function evaluate(contextNode, type, result) {\n      if (null == contextNode.nodeType)\n        throw new Error('bad argument (expected context node): ' + contextNode);\n      var doc = contextNode.ownerDocument || contextNode;\n      if (null != this._doc && this._doc !== doc) {\n        throw new core.DOMException(\n            core.DOMException.WRONG_DOCUMENT_ERR,\n            'The document must be the same as the context node\\'s document.');\n      }\n      var evaluator = new Evaluator(doc);\n      var value = evaluator.val(this._ast, {nodes: [contextNode]});\n      if (XPathResult.NUMBER_TYPE === type)\n        value = fn.number(value);\n      else if (XPathResult.STRING_TYPE === type)\n        value = fn.string(value);\n      else if (XPathResult.BOOLEAN_TYPE === type)\n        value = fn['boolean'](value);\n      else if (XPathResult.ANY_TYPE !== type &&\n               XPathResult.UNORDERED_NODE_ITERATOR_TYPE !== type &&\n               XPathResult.ORDERED_NODE_ITERATOR_TYPE !== type &&\n               XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE !== type &&\n               XPathResult.ORDERED_NODE_SNAPSHOT_TYPE !== type &&\n               XPathResult.ANY_UNORDERED_NODE_TYPE !== type &&\n               XPathResult.FIRST_ORDERED_NODE_TYPE !== type)\n        throw new core.DOMException(\n            core.DOMException.NOT_SUPPORTED_ERR,\n            'You must provide an XPath result type (0=any).');\n      else if (XPathResult.ANY_TYPE !== type &&\n               'object' !== typeof value)\n        throw new XPathException(\n            XPathException.TYPE_ERR,\n            'Value should be a node-set: ' + value);\n      return new XPathResult(doc, value, type);\n    }\n  }\n\n  var XPathResult = xpath.XPathResult = function XPathResult(doc, value, resultType) {\n    this._value = value;\n    this._resultType = resultType;\n    this._i = 0;\n\n    // TODO: we removed mutation events but didn't take care of this. No tests fail, so that's nice, but eventually we\n    // should fix this, preferably by entirely replacing our XPath implementation.\n    // this._invalidated = false;\n    // if (this.resultType === XPathResult.UNORDERED_NODE_ITERATOR_TYPE ||\n    //     this.resultType === XPathResult.ORDERED_NODE_ITERATOR_TYPE) {\n    //   doc.addEventListener('DOMSubtreeModified', invalidate, true);\n    //   var self = this;\n    //   function invalidate() {\n    //     self._invalidated = true;\n    //     doc.removeEventListener('DOMSubtreeModified', invalidate, true);\n    //   }\n    // }\n  }\n  XPathResult.ANY_TYPE = 0;\n  XPathResult.NUMBER_TYPE = 1;\n  XPathResult.STRING_TYPE = 2;\n  XPathResult.BOOLEAN_TYPE = 3;\n  XPathResult.UNORDERED_NODE_ITERATOR_TYPE = 4;\n  XPathResult.ORDERED_NODE_ITERATOR_TYPE = 5;\n  XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE = 6;\n  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE = 7;\n  XPathResult.ANY_UNORDERED_NODE_TYPE = 8;\n  XPathResult.FIRST_ORDERED_NODE_TYPE = 9;\n  var proto = {\n    // XPathResultType\n    get resultType() {\n      if (this._resultType) return this._resultType;\n      switch (typeof this._value) {\n        case 'number': return XPathResult.NUMBER_TYPE;\n        case 'string': return XPathResult.STRING_TYPE;\n        case 'boolean': return XPathResult.BOOLEAN_TYPE;\n        default: return XPathResult.UNORDERED_NODE_ITERATOR_TYPE;\n      }\n    },\n    get numberValue() {\n      if (XPathResult.NUMBER_TYPE !== this.resultType)\n        throw new XPathException(XPathException.TYPE_ERR,\n                                 'You should have asked for a NUMBER_TYPE.');\n      return this._value;\n    },\n    get stringValue() {\n      if (XPathResult.STRING_TYPE !== this.resultType)\n        throw new XPathException(XPathException.TYPE_ERR,\n                                 'You should have asked for a STRING_TYPE.');\n      return this._value;\n    },\n    get booleanValue() {\n      if (XPathResult.BOOLEAN_TYPE !== this.resultType)\n        throw new XPathException(XPathException.TYPE_ERR,\n                                 'You should have asked for a BOOLEAN_TYPE.');\n      return this._value;\n    },\n    get singleNodeValue() {\n      if (XPathResult.ANY_UNORDERED_NODE_TYPE !== this.resultType &&\n          XPathResult.FIRST_ORDERED_NODE_TYPE !== this.resultType)\n        throw new XPathException(\n            XPathException.TYPE_ERR,\n            'You should have asked for a FIRST_ORDERED_NODE_TYPE.');\n      return this._value.nodes[0] || null;\n    },\n    get invalidIteratorState() {\n      if (XPathResult.UNORDERED_NODE_ITERATOR_TYPE !== this.resultType &&\n          XPathResult.ORDERED_NODE_ITERATOR_TYPE !== this.resultType)\n        return false;\n      return !!this._invalidated;\n    },\n    get snapshotLength() {\n      if (XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE !== this.resultType &&\n          XPathResult.ORDERED_NODE_SNAPSHOT_TYPE !== this.resultType)\n        throw new XPathException(\n            XPathException.TYPE_ERR,\n            'You should have asked for a ORDERED_NODE_SNAPSHOT_TYPE.');\n      return this._value.nodes.length;\n    },\n    iterateNext: function iterateNext() {\n      if (XPathResult.UNORDERED_NODE_ITERATOR_TYPE !== this.resultType &&\n          XPathResult.ORDERED_NODE_ITERATOR_TYPE !== this.resultType)\n        throw new XPathException(\n            XPathException.TYPE_ERR,\n            'You should have asked for a ORDERED_NODE_ITERATOR_TYPE.');\n      if (this.invalidIteratorState)\n        throw new core.DOMException(\n            core.DOMException.INVALID_STATE_ERR,\n            'The document has been mutated since the result was returned');\n      return this._value.nodes[this._i++] || null;\n    },\n    snapshotItem: function snapshotItem(index) {\n      if (XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE !== this.resultType &&\n          XPathResult.ORDERED_NODE_SNAPSHOT_TYPE !== this.resultType)\n        throw new XPathException(\n            XPathException.TYPE_ERR,\n            'You should have asked for a ORDERED_NODE_SNAPSHOT_TYPE.');\n      return this._value.nodes[index] || null;\n    }\n  };\n  // so you can access ANY_TYPE etc. from the instances:\n  XPathResult.prototype = Object.create(XPathResult,\n      Object.keys(proto).reduce(function (descriptors, name) {\n        descriptors[name] = Object.getOwnPropertyDescriptor(proto, name);\n        return descriptors;\n      }, {\n        constructor: {\n          value: XPathResult,\n          writable: true,\n          configurable: true\n        }\n      }));\n\n  core.XPathException = XPathException;\n  core.XPathExpression = XPathExpression;\n  core.XPathResult = XPathResult;\n  core.XPathEvaluator = XPathEvaluator;\n\n  core.Document.prototype.createExpression =\n    XPathEvaluator.prototype.createExpression;\n\n  core.Document.prototype.createNSResolver =\n      XPathEvaluator.prototype.createNSResolver;\n\n  core.Document.prototype.evaluate = XPathEvaluator.prototype.evaluate;\n\n  return xpath; // for tests\n};\n","\"use strict\";\nconst idlUtils = require(\"../../../generated/idl/utils\");\n\nconst legacyErrorCodes = {\n  IndexSizeError: 1,\n  HierarchyRequestError: 3,\n  WrongDocumentError: 4,\n  InvalidCharacterError: 5,\n  NoModificationAllowedError: 7,\n  NotFoundError: 8,\n  NotSupportedError: 9,\n  InUseAttributeError: 10,\n  InvalidStateError: 11,\n  SyntaxError: 12,\n  InvalidModificationError: 13,\n  NamespaceError: 14,\n  InvalidAccessError: 15,\n  TypeMismatchError: 17,\n  SecurityError: 18,\n  NetworkError: 19,\n  AbortError: 20,\n  URLMismatchError: 21,\n  QuotaExceededError: 22,\n  TimeoutError: 23,\n  InvalidNodeTypeError: 24,\n  DataCloneError: 25\n};\n\nexports.implementation = class DOMExceptionImpl {\n  constructor(globalObject, [message, name]) {\n    this.name = name;\n    this.message = message;\n  }\n\n  get code() {\n    return legacyErrorCodes[this.name] || 0;\n  }\n};\n\n// A proprietary V8 extension that causes the stack property to appear.\nexports.init = impl => {\n  if (Error.captureStackTrace) {\n    const wrapper = idlUtils.wrapperForImpl(impl);\n    Error.captureStackTrace(wrapper, wrapper.constructor);\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DOMException\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DOMException'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DOMException\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DOMException {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to construct 'DOMException': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to construct 'DOMException': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"Error\";\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of DOMException.\"\n        );\n      }\n\n      return esValue[implSymbol][\"name\"];\n    }\n\n    get message() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get message' called on an object that is not a valid instance of DOMException.\"\n        );\n      }\n\n      return esValue[implSymbol][\"message\"];\n    }\n\n    get code() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get code' called on an object that is not a valid instance of DOMException.\"\n        );\n      }\n\n      return esValue[implSymbol][\"code\"];\n    }\n  }\n  Object.defineProperties(DOMException.prototype, {\n    name: { enumerable: true },\n    message: { enumerable: true },\n    code: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DOMException\", configurable: true },\n    INDEX_SIZE_ERR: { value: 1, enumerable: true },\n    DOMSTRING_SIZE_ERR: { value: 2, enumerable: true },\n    HIERARCHY_REQUEST_ERR: { value: 3, enumerable: true },\n    WRONG_DOCUMENT_ERR: { value: 4, enumerable: true },\n    INVALID_CHARACTER_ERR: { value: 5, enumerable: true },\n    NO_DATA_ALLOWED_ERR: { value: 6, enumerable: true },\n    NO_MODIFICATION_ALLOWED_ERR: { value: 7, enumerable: true },\n    NOT_FOUND_ERR: { value: 8, enumerable: true },\n    NOT_SUPPORTED_ERR: { value: 9, enumerable: true },\n    INUSE_ATTRIBUTE_ERR: { value: 10, enumerable: true },\n    INVALID_STATE_ERR: { value: 11, enumerable: true },\n    SYNTAX_ERR: { value: 12, enumerable: true },\n    INVALID_MODIFICATION_ERR: { value: 13, enumerable: true },\n    NAMESPACE_ERR: { value: 14, enumerable: true },\n    INVALID_ACCESS_ERR: { value: 15, enumerable: true },\n    VALIDATION_ERR: { value: 16, enumerable: true },\n    TYPE_MISMATCH_ERR: { value: 17, enumerable: true },\n    SECURITY_ERR: { value: 18, enumerable: true },\n    NETWORK_ERR: { value: 19, enumerable: true },\n    ABORT_ERR: { value: 20, enumerable: true },\n    URL_MISMATCH_ERR: { value: 21, enumerable: true },\n    QUOTA_EXCEEDED_ERR: { value: 22, enumerable: true },\n    TIMEOUT_ERR: { value: 23, enumerable: true },\n    INVALID_NODE_TYPE_ERR: { value: 24, enumerable: true },\n    DATA_CLONE_ERR: { value: 25, enumerable: true }\n  });\n  Object.defineProperties(DOMException, {\n    INDEX_SIZE_ERR: { value: 1, enumerable: true },\n    DOMSTRING_SIZE_ERR: { value: 2, enumerable: true },\n    HIERARCHY_REQUEST_ERR: { value: 3, enumerable: true },\n    WRONG_DOCUMENT_ERR: { value: 4, enumerable: true },\n    INVALID_CHARACTER_ERR: { value: 5, enumerable: true },\n    NO_DATA_ALLOWED_ERR: { value: 6, enumerable: true },\n    NO_MODIFICATION_ALLOWED_ERR: { value: 7, enumerable: true },\n    NOT_FOUND_ERR: { value: 8, enumerable: true },\n    NOT_SUPPORTED_ERR: { value: 9, enumerable: true },\n    INUSE_ATTRIBUTE_ERR: { value: 10, enumerable: true },\n    INVALID_STATE_ERR: { value: 11, enumerable: true },\n    SYNTAX_ERR: { value: 12, enumerable: true },\n    INVALID_MODIFICATION_ERR: { value: 13, enumerable: true },\n    NAMESPACE_ERR: { value: 14, enumerable: true },\n    INVALID_ACCESS_ERR: { value: 15, enumerable: true },\n    VALIDATION_ERR: { value: 16, enumerable: true },\n    TYPE_MISMATCH_ERR: { value: 17, enumerable: true },\n    SECURITY_ERR: { value: 18, enumerable: true },\n    NETWORK_ERR: { value: 19, enumerable: true },\n    ABORT_ERR: { value: 20, enumerable: true },\n    URL_MISMATCH_ERR: { value: 21, enumerable: true },\n    QUOTA_EXCEEDED_ERR: { value: 22, enumerable: true },\n    TIMEOUT_ERR: { value: 23, enumerable: true },\n    INVALID_NODE_TYPE_ERR: { value: 24, enumerable: true },\n    DATA_CLONE_ERR: { value: 25, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = DOMException;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DOMException\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/webidl/DOMException-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (!utils.isObject(value)) {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  function callTheUserObjectsOperation(event) {\n    let thisArg = utils.tryWrapperForImpl(this);\n    let O = value;\n    let X = O;\n\n    if (typeof O !== \"function\") {\n      X = O[\"handleEvent\"];\n      if (typeof X !== \"function\") {\n        throw new globalObject.TypeError(`${context} does not correctly implement EventListener.`);\n      }\n      thisArg = O;\n    }\n\n    event = utils.tryWrapperForImpl(event);\n\n    let callResult = Reflect.apply(X, thisArg, [event]);\n  }\n\n  callTheUserObjectsOperation[utils.wrapperSymbol] = value;\n  callTheUserObjectsOperation.objectReference = value;\n\n  return callTheUserObjectsOperation;\n};\n\nexports.install = (globalObject, globalNames) => {};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  function invokeTheCallbackFunction(event) {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    if (typeof value === \"function\") {\n      event = utils.tryWrapperForImpl(event);\n\n      callResult = Reflect.apply(value, thisArg, [event]);\n    }\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  }\n\n  invokeTheCallbackFunction.construct = event => {\n    event = utils.tryWrapperForImpl(event);\n\n    let callResult = Reflect.construct(value, [event]);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"bubbles\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'bubbles' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"cancelable\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'cancelable' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"composed\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'composed' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"colno\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'colno' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"error\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"any\"](value, { context: context + \" has member 'error' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"filename\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"USVString\"](value, {\n        context: context + \" has member 'filename' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"lineno\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'lineno' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"message\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, {\n        context: context + \" has member 'message' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst EventInit = require(\"../../../generated/idl/EventInit\");\n\nclass EventImpl {\n  constructor(globalObject, args, privateData) {\n    const [type, eventInitDict = this.constructor.defaultInit] = args;\n\n    this.type = type;\n\n    this.bubbles = false;\n    this.cancelable = false;\n    for (const key in eventInitDict) {\n      this[key] = eventInitDict[key];\n    }\n    for (const key in this.constructor.defaultInit) {\n      if (!(key in eventInitDict)) {\n        this[key] = this.constructor.defaultInit[key];\n      }\n    }\n\n    this.target = null;\n    this.currentTarget = null;\n    this.eventPhase = 0;\n\n    this._globalObject = globalObject;\n    this._initializedFlag = true;\n    this._stopPropagationFlag = false;\n    this._stopImmediatePropagationFlag = false;\n    this._canceledFlag = false;\n    this._inPassiveListenerFlag = false;\n    this._dispatchFlag = false;\n    this._path = [];\n\n    this.isTrusted = privateData.isTrusted || false;\n    this.timeStamp = Date.now();\n  }\n\n  // https://dom.spec.whatwg.org/#set-the-canceled-flag\n  _setTheCanceledFlag() {\n    if (this.cancelable && !this._inPassiveListenerFlag) {\n      this._canceledFlag = true;\n    }\n  }\n\n  get srcElement() {\n    return this.target;\n  }\n\n  get returnValue() {\n    return !this._canceledFlag;\n  }\n\n  set returnValue(v) {\n    if (v === false) {\n      this._setTheCanceledFlag();\n    }\n  }\n\n  get defaultPrevented() {\n    return this._canceledFlag;\n  }\n\n  stopPropagation() {\n    this._stopPropagationFlag = true;\n  }\n\n  get cancelBubble() {\n    return this._stopPropagationFlag;\n  }\n\n  set cancelBubble(v) {\n    if (v) {\n      this._stopPropagationFlag = true;\n    }\n  }\n\n  stopImmediatePropagation() {\n    this._stopPropagationFlag = true;\n    this._stopImmediatePropagationFlag = true;\n  }\n\n  preventDefault() {\n    this._setTheCanceledFlag();\n  }\n\n  // https://dom.spec.whatwg.org/#dom-event-composedpath\n  // Current implementation is based of https://whatpr.org/dom/699.html#dom-event-composedpath\n  // due to a bug in composed path implementation https://github.com/whatwg/dom/issues/684\n  composedPath() {\n    const composedPath = [];\n\n    const { currentTarget, _path: path } = this;\n\n    if (path.length === 0) {\n      return composedPath;\n    }\n\n    composedPath.push(currentTarget);\n\n    let currentTargetIndex = 0;\n    let currentTargetHiddenSubtreeLevel = 0;\n\n    for (let index = path.length - 1; index >= 0; index--) {\n      const { item, rootOfClosedTree, slotInClosedTree } = path[index];\n\n      if (rootOfClosedTree) {\n        currentTargetHiddenSubtreeLevel++;\n      }\n\n      if (item === idlUtils.implForWrapper(currentTarget)) {\n        currentTargetIndex = index;\n        break;\n      }\n\n      if (slotInClosedTree) {\n        currentTargetHiddenSubtreeLevel--;\n      }\n    }\n\n    let currentHiddenLevel = currentTargetHiddenSubtreeLevel;\n    let maxHiddenLevel = currentTargetHiddenSubtreeLevel;\n\n    for (let i = currentTargetIndex - 1; i >= 0; i--) {\n      const { item, rootOfClosedTree, slotInClosedTree } = path[i];\n\n      if (rootOfClosedTree) {\n        currentHiddenLevel++;\n      }\n\n      if (currentHiddenLevel <= maxHiddenLevel) {\n        composedPath.unshift(idlUtils.wrapperForImpl(item));\n      }\n\n      if (slotInClosedTree) {\n        currentHiddenLevel--;\n        if (currentHiddenLevel < maxHiddenLevel) {\n          maxHiddenLevel = currentHiddenLevel;\n        }\n      }\n    }\n\n    currentHiddenLevel = currentTargetHiddenSubtreeLevel;\n    maxHiddenLevel = currentTargetHiddenSubtreeLevel;\n\n    for (let index = currentTargetIndex + 1; index < path.length; index++) {\n      const { item, rootOfClosedTree, slotInClosedTree } = path[index];\n\n      if (slotInClosedTree) {\n        currentHiddenLevel++;\n      }\n\n      if (currentHiddenLevel <= maxHiddenLevel) {\n        composedPath.push(idlUtils.wrapperForImpl(item));\n      }\n\n      if (rootOfClosedTree) {\n        currentHiddenLevel--;\n        if (currentHiddenLevel < maxHiddenLevel) {\n          maxHiddenLevel = currentHiddenLevel;\n        }\n      }\n    }\n\n    return composedPath;\n  }\n\n  _initialize(type, bubbles, cancelable) {\n    this.type = type;\n    this._initializedFlag = true;\n\n    this._stopPropagationFlag = false;\n    this._stopImmediatePropagationFlag = false;\n    this._canceledFlag = false;\n\n    this.isTrusted = false;\n    this.target = null;\n    this.bubbles = bubbles;\n    this.cancelable = cancelable;\n  }\n\n  initEvent(type, bubbles, cancelable) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this._initialize(type, bubbles, cancelable);\n  }\n}\nEventImpl.defaultInit = EventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: EventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Event\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Event'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Event\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nfunction getUnforgeables(globalObject) {\n  let unforgeables = unforgeablesMap.get(globalObject);\n  if (unforgeables === undefined) {\n    unforgeables = Object.create(null);\n    utils.define(unforgeables, {\n      get isTrusted() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'get isTrusted' called on an object that is not a valid instance of Event.\"\n          );\n        }\n\n        return esValue[implSymbol][\"isTrusted\"];\n      }\n    });\n    Object.defineProperties(unforgeables, {\n      isTrusted: { configurable: false }\n    });\n    unforgeablesMap.set(globalObject, unforgeables);\n  }\n  return unforgeables;\n}\n\nexports._internalSetup = (wrapper, globalObject) => {\n  utils.define(wrapper, getUnforgeables(globalObject));\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst unforgeablesMap = new WeakMap();\nconst exposed = new Set([\"Window\", \"Worker\", \"AudioWorklet\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'Event': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'Event': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = EventInit.convert(globalObject, curArg, { context: \"Failed to construct 'Event': parameter 2\" });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    composedPath() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'composedPath' called on an object that is not a valid instance of Event.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].composedPath());\n    }\n\n    stopPropagation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'stopPropagation' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      return esValue[implSymbol].stopPropagation();\n    }\n\n    stopImmediatePropagation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'stopImmediatePropagation' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      return esValue[implSymbol].stopImmediatePropagation();\n    }\n\n    preventDefault() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'preventDefault' called on an object that is not a valid instance of Event.\");\n      }\n\n      return esValue[implSymbol].preventDefault();\n    }\n\n    initEvent(type) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'initEvent' called on an object that is not a valid instance of Event.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initEvent' on 'Event': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initEvent' on 'Event': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initEvent' on 'Event': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initEvent' on 'Event': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initEvent(...args);\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get type' called on an object that is not a valid instance of Event.\");\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get target' called on an object that is not a valid instance of Event.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"target\"]);\n    }\n\n    get srcElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get srcElement' called on an object that is not a valid instance of Event.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"srcElement\"]);\n    }\n\n    get currentTarget() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get currentTarget' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"currentTarget\"]);\n    }\n\n    get eventPhase() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get eventPhase' called on an object that is not a valid instance of Event.\");\n      }\n\n      return esValue[implSymbol][\"eventPhase\"];\n    }\n\n    get cancelBubble() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cancelBubble' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      return esValue[implSymbol][\"cancelBubble\"];\n    }\n\n    set cancelBubble(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set cancelBubble' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'cancelBubble' property on 'Event': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"cancelBubble\"] = V;\n    }\n\n    get bubbles() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get bubbles' called on an object that is not a valid instance of Event.\");\n      }\n\n      return esValue[implSymbol][\"bubbles\"];\n    }\n\n    get cancelable() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get cancelable' called on an object that is not a valid instance of Event.\");\n      }\n\n      return esValue[implSymbol][\"cancelable\"];\n    }\n\n    get returnValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get returnValue' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      return esValue[implSymbol][\"returnValue\"];\n    }\n\n    set returnValue(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set returnValue' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'returnValue' property on 'Event': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"returnValue\"] = V;\n    }\n\n    get defaultPrevented() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultPrevented' called on an object that is not a valid instance of Event.\"\n        );\n      }\n\n      return esValue[implSymbol][\"defaultPrevented\"];\n    }\n\n    get composed() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get composed' called on an object that is not a valid instance of Event.\");\n      }\n\n      return esValue[implSymbol][\"composed\"];\n    }\n\n    get timeStamp() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get timeStamp' called on an object that is not a valid instance of Event.\");\n      }\n\n      return esValue[implSymbol][\"timeStamp\"];\n    }\n  }\n  Object.defineProperties(Event.prototype, {\n    composedPath: { enumerable: true },\n    stopPropagation: { enumerable: true },\n    stopImmediatePropagation: { enumerable: true },\n    preventDefault: { enumerable: true },\n    initEvent: { enumerable: true },\n    type: { enumerable: true },\n    target: { enumerable: true },\n    srcElement: { enumerable: true },\n    currentTarget: { enumerable: true },\n    eventPhase: { enumerable: true },\n    cancelBubble: { enumerable: true },\n    bubbles: { enumerable: true },\n    cancelable: { enumerable: true },\n    returnValue: { enumerable: true },\n    defaultPrevented: { enumerable: true },\n    composed: { enumerable: true },\n    timeStamp: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Event\", configurable: true },\n    NONE: { value: 0, enumerable: true },\n    CAPTURING_PHASE: { value: 1, enumerable: true },\n    AT_TARGET: { value: 2, enumerable: true },\n    BUBBLING_PHASE: { value: 3, enumerable: true }\n  });\n  Object.defineProperties(Event, {\n    NONE: { value: 0, enumerable: true },\n    CAPTURING_PHASE: { value: 1, enumerable: true },\n    AT_TARGET: { value: 2, enumerable: true },\n    BUBBLING_PHASE: { value: 3, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = Event;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Event\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/Event-impl.js\");\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst ErrorEventInit = require(\"../../../generated/idl/ErrorEventInit\");\n\nclass ErrorEventImpl extends EventImpl {\n\n}\nErrorEventImpl.defaultInit = ErrorEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: ErrorEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ErrorEventInit = require(\"./ErrorEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"ErrorEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'ErrorEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"ErrorEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class ErrorEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'ErrorEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'ErrorEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = ErrorEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'ErrorEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get message() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get message' called on an object that is not a valid instance of ErrorEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"message\"];\n    }\n\n    get filename() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get filename' called on an object that is not a valid instance of ErrorEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"filename\"];\n    }\n\n    get lineno() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lineno' called on an object that is not a valid instance of ErrorEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"lineno\"];\n    }\n\n    get colno() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get colno' called on an object that is not a valid instance of ErrorEvent.\");\n      }\n\n      return esValue[implSymbol][\"colno\"];\n    }\n\n    get error() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get error' called on an object that is not a valid instance of ErrorEvent.\");\n      }\n\n      return esValue[implSymbol][\"error\"];\n    }\n  }\n  Object.defineProperties(ErrorEvent.prototype, {\n    message: { enumerable: true },\n    filename: { enumerable: true },\n    lineno: { enumerable: true },\n    colno: { enumerable: true },\n    error: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"ErrorEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = ErrorEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: ErrorEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/ErrorEvent-impl.js\");\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst EventInit = require(\"../../../generated/idl/EventInit\");\n\nclass BeforeUnloadEventImpl extends EventImpl {}\nBeforeUnloadEventImpl.defaultInit = EventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: BeforeUnloadEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"BeforeUnloadEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'BeforeUnloadEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"BeforeUnloadEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class BeforeUnloadEvent extends globalObject.Event {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get returnValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get returnValue' called on an object that is not a valid instance of BeforeUnloadEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"returnValue\"];\n    }\n\n    set returnValue(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set returnValue' called on an object that is not a valid instance of BeforeUnloadEvent.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'returnValue' property on 'BeforeUnloadEvent': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"returnValue\"] = V;\n    }\n  }\n  Object.defineProperties(BeforeUnloadEvent.prototype, {\n    returnValue: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"BeforeUnloadEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = BeforeUnloadEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: BeforeUnloadEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/BeforeUnloadEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  function invokeTheCallbackFunction(event) {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    if (typeof value === \"function\") {\n      event = utils.tryWrapperForImpl(event);\n\n      callResult = Reflect.apply(value, thisArg, [event]);\n    }\n\n    if (callResult === null || callResult === undefined) {\n      callResult = null;\n    } else {\n      callResult = conversions[\"DOMString\"](callResult, { context: context, globals: globalObject });\n    }\n    return callResult;\n  }\n\n  invokeTheCallbackFunction.construct = event => {\n    event = utils.tryWrapperForImpl(event);\n\n    let callResult = Reflect.construct(value, [event]);\n\n    if (callResult === null || callResult === undefined) {\n      callResult = null;\n    } else {\n      callResult = conversions[\"DOMString\"](callResult, { context: context, globals: globalObject });\n    }\n    return callResult;\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  function invokeTheCallbackFunction(...args) {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    if (typeof value === \"function\") {\n      for (let i = 0; i < Math.min(args.length, 5); i++) {\n        args[i] = utils.tryWrapperForImpl(args[i]);\n      }\n\n      if (args.length < 1) {\n        for (let i = args.length; i < 1; i++) {\n          args[i] = undefined;\n        }\n      } else if (args.length > 5) {\n        args.length = 5;\n      }\n\n      callResult = Reflect.apply(value, thisArg, args);\n    }\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  }\n\n  invokeTheCallbackFunction.construct = (...args) => {\n    for (let i = 0; i < Math.min(args.length, 5); i++) {\n      args[i] = utils.tryWrapperForImpl(args[i]);\n    }\n\n    if (args.length < 1) {\n      for (let i = args.length; i < 1; i++) {\n        args[i] = undefined;\n      }\n    } else if (args.length > 5) {\n      args.length = 5;\n    }\n\n    let callResult = Reflect.construct(value, args);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\n\nconst Event = require(\"../../../generated/idl/Event\");\nconst { tryImplForWrapper } = require(\"../../../generated/idl/utils\");\n\nfunction createAnEvent(e, globalObject, eventInterface = Event, attributes = {}) {\n  return eventInterface.createImpl(\n    globalObject,\n    [e, attributes],\n    { isTrusted: attributes.isTrusted !== false }\n  );\n}\n\nfunction fireAnEvent(e, target, eventInterface, attributes, legacyTargetOverrideFlag) {\n  const event = createAnEvent(e, target._globalObject, eventInterface, attributes);\n\n  // tryImplForWrapper() is currently required due to use in Window.js\n  return tryImplForWrapper(target)._dispatch(event, legacyTargetOverrideFlag);\n}\n\nmodule.exports = {\n  createAnEvent,\n  fireAnEvent\n};\n","\"use strict\";\nconst util = require(\"util\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst ErrorEvent = require(\"../../../generated/idl/ErrorEvent\");\nconst { createAnEvent } = require(\"../helpers/events\");\n\nconst errorReportingMode = Symbol(\"error reporting mode\");\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#report-the-error\n// Omits script parameter and any check for muted errors.\n// Takes target as an EventTarget impl.\n// Takes error object, message, and location as params, unlike the spec.\n// Returns whether the event was handled or not.\nfunction reportAnError(line, col, target, errorObject, message, location) {\n  if (target[errorReportingMode]) {\n    return false;\n  }\n\n  target[errorReportingMode] = true;\n\n  if (typeof message !== \"string\") {\n    message = \"uncaught exception: \" + util.inspect(errorObject);\n  }\n\n  const event = createAnEvent(\"error\", target._globalObject, ErrorEvent, {\n    cancelable: true,\n    message,\n    filename: location,\n    lineno: line,\n    colno: col,\n    error: errorObject\n  });\n\n  try {\n    target._dispatch(event);\n  } finally {\n    target[errorReportingMode] = false;\n    return event.defaultPrevented;\n  }\n}\n\nmodule.exports = function reportException(window, error, filenameHint) {\n  // This function will give good results on real Error objects with stacks; poor ones otherwise\n\n  const stack = error && error.stack;\n  const lines = stack && stack.split(\"\\n\");\n\n  // Find the first line that matches; important for multi-line messages\n  let pieces;\n  if (lines) {\n    for (let i = 1; i < lines.length && !pieces; ++i) {\n      pieces = lines[i].match(/at (?:(.+)\\s+)?\\(?(?:(.+?):(\\d+):(\\d+)|([^)]+))\\)?/);\n    }\n  }\n\n  const fileName = (pieces && pieces[2]) || filenameHint || window._document.URL;\n  const lineNumber = (pieces && parseInt(pieces[3])) || 0;\n  const columnNumber = (pieces && parseInt(pieces[4])) || 0;\n\n  const windowImpl = idlUtils.implForWrapper(window);\n\n  const handled = reportAnError(lineNumber, columnNumber, windowImpl, error, error && error.message, fileName);\n\n  if (!handled) {\n    const errorString = shouldBeDisplayedAsError(error) ? `[${error.name}: ${error.message}]` : util.inspect(error);\n    const jsdomError = new Error(`Uncaught ${errorString}`, { cause: error });\n    jsdomError.type = \"unhandled-exception\";\n\n    window._virtualConsole.emit(\"jsdomError\", jsdomError);\n  }\n};\n\nfunction shouldBeDisplayedAsError(x) {\n  return x && x.name && x.message !== undefined && x.stack;\n}\n","\"use strict\";\n\n// Event handler attributes (e.g. onclick, onload) have three layers:\n//\n// 1. **Generated wrapper (type conversion)**: For webidl2js-generated classes, the IDL wrapper handles converting the\n//    JS value to the appropriate callback type (EventHandlerNonNull, OnErrorEventHandlerNonNull, or\n//    OnBeforeUnloadEventHandlerNonNull). Window is not webidl2js-generated, so Window.js manually defines these\n//    property descriptors with the same conversion logic.\n//\n// 2. **Impl property (createEventAccessor)**: `createEventAccessor` defines `on<event>` property descriptors on impl\n//    prototypes. These delegate to `_getEventHandlerFor`/`_setEventHandlerFor` on the impl, which in turn use\n//    `_getEventHandlerTarget` to determine where the handler is actually stored. For body/frameset elements, the\n//    \"determine the target of an event handler\" spec algorithm routes certain events to the Window.\n//\n// 3. **Handler storage and invocation**: `_setEventHandlerFor` stores the handler and calls `appendHandler` to register\n//    an event listener. `appendHandler` implements the \"event handler processing algorithm\", with special invocation\n//    logic: `onerror` on Window receives expanded arguments (message, source, lineno, colno, error) instead of the\n//    event object, and `onbeforeunload` has special return value handling for cancellation.\n//\n// Content attribute handlers (e.g. `<div onclick=\"...\">`) flow through `_globalEventChanged`, which stores the raw\n// body string. On first access, `getCurrentEventHandlerValue` compiles the string into a function, wrapping it in the\n// appropriate scope chain (document, form owner, element) per the spec.\n\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst ErrorEvent = require(\"../../../generated/idl/ErrorEvent\");\nconst BeforeUnloadEvent = require(\"../../../generated/idl/BeforeUnloadEvent\");\nconst EventHandlerNonNull = require(\"../../../generated/idl/EventHandlerNonNull.js\");\nconst OnBeforeUnloadEventHandlerNonNull = require(\"../../../generated/idl/OnBeforeUnloadEventHandlerNonNull.js\");\nconst OnErrorEventHandlerNonNull = require(\"../../../generated/idl/OnErrorEventHandlerNonNull.js\");\nconst reportException = require(\"./runtime-script-errors\");\n\nexports.appendHandler = (el, eventName) => {\n  // tryImplForWrapper() is currently required due to use in Window.js\n  idlUtils.tryImplForWrapper(el).addEventListener(eventName, event => {\n    // https://html.spec.whatwg.org/#the-event-handler-processing-algorithm\n    const callback = exports.getCurrentEventHandlerValue(el, eventName);\n    if (callback === null) {\n      return;\n    }\n\n    const specialError = ErrorEvent.isImpl(event) && event.type === \"error\" &&\n      event.currentTarget.constructor.name === \"Window\";\n\n    let returnValue = null;\n    // https://heycam.github.io/webidl/#es-invoking-callback-functions\n    if (typeof callback === \"function\") {\n      if (specialError) {\n        returnValue = callback.call(\n          event.currentTarget,\n          event.message,\n          event.filename,\n          event.lineno,\n          event.colno,\n          event.error\n        );\n      } else {\n        returnValue = callback.call(event.currentTarget, event);\n      }\n    }\n\n    if (event.type === \"beforeunload\" && BeforeUnloadEvent.isImpl(event)) {\n      if (returnValue !== null) {\n        event._canceledFlag = true;\n        if (event.returnValue === \"\") {\n          event.returnValue = returnValue;\n        }\n      }\n    } else if (specialError) {\n      if (returnValue === true) {\n        event._canceledFlag = true;\n      }\n    } else if (returnValue === false) {\n      event._canceledFlag = true;\n    }\n  });\n};\n\n// \"Simple\" in this case means \"no content attributes involved\"\nexports.setupForSimpleEventAccessors = (prototype, events) => {\n  prototype._getEventHandlerFor = function (event) {\n    return this._eventHandlers ? this._eventHandlers[event] : undefined;\n  };\n\n  prototype._setEventHandlerFor = function (event, handler) {\n    if (!this._registeredHandlers) {\n      this._registeredHandlers = new Set();\n      this._eventHandlers = Object.create(null);\n    }\n\n    if (!this._registeredHandlers.has(event) && handler !== null) {\n      this._registeredHandlers.add(event);\n      exports.appendHandler(this, event);\n    }\n    this._eventHandlers[event] = handler;\n  };\n\n  for (const event of events) {\n    exports.createEventAccessor(prototype, event);\n  }\n};\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#getting-the-current-value-of-the-event-handler\nexports.getCurrentEventHandlerValue = (target, event) => {\n  const value = target._getEventHandlerFor(event);\n  if (!value) {\n    return null;\n  }\n\n  if (value.body !== undefined) {\n    let element, document, fn;\n    if (target.constructor.name === \"Window\") {\n      element = null;\n      document = idlUtils.implForWrapper(target.document);\n    } else {\n      element = target;\n      document = element.ownerDocument;\n    }\n    const { body } = value;\n\n    const formOwner = element !== null && element.form ? element.form : null;\n    const window = target.constructor.name === \"Window\" && target._document ? target : document.defaultView;\n\n    try {\n      // eslint-disable-next-line no-new-func\n      Function(body); // properly error out on syntax errors\n      // Note: this won't execute body; that would require `Function(body)()`.\n    } catch (e) {\n      if (window) {\n        reportException(window, e);\n      }\n      target._setEventHandlerFor(event, null);\n      return null;\n    }\n\n    // Note: the with (window) { } is not necessary in Node, but is necessary in a browserified environment.\n\n    const createFunction = document.defaultView.Function;\n    if (event === \"error\" && element === null) {\n      const sourceURL = document ? `\\n//# sourceURL=${document.URL}` : \"\";\n\n      fn = createFunction(`\\\nwith (arguments[0]) { return function onerror(event, source, lineno, colno, error) {\n${body}\n}; }${sourceURL}`)(window);\n\n      fn = OnErrorEventHandlerNonNull.convert(window, fn);\n    } else {\n      const calls = [];\n      if (element !== null) {\n        calls.push(idlUtils.wrapperForImpl(document));\n      }\n\n      if (formOwner !== null) {\n        calls.push(idlUtils.wrapperForImpl(formOwner));\n      }\n\n      if (element !== null) {\n        calls.push(idlUtils.wrapperForImpl(element));\n      }\n\n      let wrapperBody = `\\\nwith (arguments[0]) { return function on${event}(event) {\n${body}\n}; }`;\n\n      // eslint-disable-next-line no-unused-vars\n      for (const call of calls) {\n        wrapperBody = `\\\nwith (arguments[0]) { return function () {\n${wrapperBody}\n}; }`;\n      }\n\n      if (document) {\n        wrapperBody += `\\n//# sourceURL=${document.URL}`;\n      }\n\n      fn = createFunction(wrapperBody)(window);\n      for (const call of calls) {\n        fn = fn(call);\n      }\n\n      if (event === \"beforeunload\") {\n        fn = OnBeforeUnloadEventHandlerNonNull.convert(window, fn);\n      } else {\n        fn = EventHandlerNonNull.convert(window, fn);\n      }\n    }\n\n    target._setEventHandlerFor(event, fn);\n  }\n\n  return target._getEventHandlerFor(event);\n};\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-idl-attributes\n// TODO: Consider replacing this with `[ReflectEvent]`\nexports.createEventAccessor = (obj, event) => {\n  Object.defineProperty(obj, \"on\" + event, {\n    configurable: true,\n    enumerable: true,\n    get() {\n      return exports.getCurrentEventHandlerValue(this, event);\n    },\n    set(val) {\n      this._setEventHandlerFor(event, val);\n    }\n  });\n};\n","\"use strict\";\nconst idlUtils = require(\"../../../generated/idl/utils\");\n\n// Until webidl2js gains support for checking for Window, this would have to do.\nmodule.exports = val => {\n  if (typeof val !== \"object\") {\n    return false;\n  }\n  const wrapper = idlUtils.wrapperForImpl(val);\n  if (typeof wrapper === \"object\") {\n    return wrapper === wrapper._globalProxy;\n  }\n\n  // `val` may be either impl or wrapper currently, because webidl2js currently unwraps Window objects (and their global\n  // proxies) to their underlying EventTargetImpl during conversion, which is not what we want. But at the same time,\n  // some internal usage call this constructor with the actual global proxy.\n  return module.exports(idlUtils.implForWrapper(val));\n};\n","\"use strict\";\n\nmodule.exports = Object.freeze({\n  ELEMENT_NODE: 1,\n  ATTRIBUTE_NODE: 2,\n  TEXT_NODE: 3,\n  CDATA_SECTION_NODE: 4, // historical\n  ENTITY_REFERENCE_NODE: 5, // historical\n  ENTITY_NODE: 6, // historical\n  PROCESSING_INSTRUCTION_NODE: 7,\n  COMMENT_NODE: 8,\n  DOCUMENT_NODE: 9,\n  DOCUMENT_TYPE_NODE: 10,\n  DOCUMENT_FRAGMENT_NODE: 11,\n  NOTATION_NODE: 12 // historical\n});\n","'use strict';\n\nmodule.exports = class SymbolTreeNode {\n        constructor() {\n                this.parent = null;\n                this.previousSibling = null;\n                this.nextSibling = null;\n\n                this.firstChild = null;\n                this.lastChild = null;\n\n                /** This value is incremented anytime a children is added or removed */\n                this.childrenVersion = 0;\n                /** The last child object which has a cached index */\n                this.childIndexCachedUpTo = null;\n\n                /** This value represents the cached node index, as long as\n                 * cachedIndexVersion matches with the childrenVersion of the parent */\n                this.cachedIndex = -1;\n                this.cachedIndexVersion = NaN; // NaN is never equal to anything\n        }\n\n        get isAttached() {\n                return Boolean(this.parent || this.previousSibling || this.nextSibling);\n        }\n\n        get hasChildren() {\n                return Boolean(this.firstChild);\n        }\n\n        childrenChanged() {\n                /* jshint -W016 */\n                // integer wrap around\n                this.childrenVersion = (this.childrenVersion + 1) & 0xFFFFFFFF;\n                this.childIndexCachedUpTo = null;\n        }\n\n        getCachedIndex(parentNode) {\n                // (assumes parentNode is actually the parent)\n                if (this.cachedIndexVersion !== parentNode.childrenVersion) {\n                        this.cachedIndexVersion = NaN;\n                        // cachedIndex is no longer valid\n                        return -1;\n                }\n\n                return this.cachedIndex; // -1 if not cached\n        }\n\n        setCachedIndex(parentNode, index) {\n                // (assumes parentNode is actually the parent)\n                this.cachedIndexVersion = parentNode.childrenVersion;\n                this.cachedIndex = index;\n        }\n};\n","'use strict';\n\n/* eslint-disable sort-keys */\nmodule.exports = Object.freeze({\n        // same as DOM DOCUMENT_POSITION_\n        DISCONNECTED: 1,\n        PRECEDING: 2,\n        FOLLOWING: 4,\n        CONTAINS: 8,\n        CONTAINED_BY: 16,\n});\n","'use strict';\n\nconst TREE = Symbol();\nconst ROOT = Symbol();\nconst NEXT = Symbol();\nconst ITERATE_FUNC = Symbol();\n\nclass TreeIterator {\n        constructor(tree, root, firstResult, iterateFunction) {\n                this[TREE] = tree;\n                this[ROOT] = root;\n                this[NEXT] = firstResult;\n                this[ITERATE_FUNC] = iterateFunction;\n        }\n\n        next() {\n                const tree = this[TREE];\n                const iterateFunc = this[ITERATE_FUNC];\n                const root = this[ROOT];\n\n                if (!this[NEXT]) {\n                        return {\n                                done: true,\n                                value: root,\n                        };\n                }\n\n                const value = this[NEXT];\n\n                if (iterateFunc === 1) {\n                        this[NEXT] = tree._node(value).previousSibling;\n                }\n                else if (iterateFunc === 2) {\n                        this[NEXT] = tree._node(value).nextSibling;\n                }\n                else if (iterateFunc === 3) {\n                        this[NEXT] = tree._node(value).parent;\n                }\n                else if (iterateFunc === 4) {\n                        this[NEXT] = tree.preceding(value, {root: root});\n                }\n                else /* if (iterateFunc === 5)*/ {\n                        this[NEXT] = tree.following(value, {root: root});\n                }\n\n                return {\n                        done: false,\n                        value: value,\n                };\n        }\n}\n\nObject.defineProperty(TreeIterator.prototype, Symbol.iterator, {\n        value: function() {\n                return this;\n        },\n        writable: false,\n});\n\nTreeIterator.PREV = 1;\nTreeIterator.NEXT = 2;\nTreeIterator.PARENT = 3;\nTreeIterator.PRECEDING = 4;\nTreeIterator.FOLLOWING = 5;\n\nObject.freeze(TreeIterator);\nObject.freeze(TreeIterator.prototype);\n\nmodule.exports = TreeIterator;\n","'use strict';\n\n/**\n * @module symbol-tree\n * @author Joris van der Wel <joris@jorisvanderwel.com>\n */\n\nconst SymbolTreeNode = require('./SymbolTreeNode');\nconst TreePosition = require('./TreePosition');\nconst TreeIterator = require('./TreeIterator');\n\nfunction returnTrue() {\n        return true;\n}\n\nfunction reverseArrayIndex(array, reverseIndex) {\n        return array[array.length - 1 - reverseIndex]; // no need to check `index >= 0`\n}\n\nclass SymbolTree {\n\n        /**\n         * @constructor\n         * @alias module:symbol-tree\n         * @param {string} [description='SymbolTree data'] Description used for the Symbol\n         */\n        constructor(description) {\n                this.symbol = Symbol(description || 'SymbolTree data');\n        }\n\n        /**\n         * You can use this function to (optionally) initialize an object right after its creation,\n         * to take advantage of V8's fast properties. Also useful if you would like to\n         * freeze your object.\n         *\n         * `O(1)`\n         *\n         * @method\n         * @alias module:symbol-tree#initialize\n         * @param {Object} object\n         * @return {Object} object\n         */\n        initialize(object) {\n                this._node(object);\n\n                return object;\n        }\n\n        _node(object) {\n                if (!object) {\n                        return null;\n                }\n\n                const node = object[this.symbol];\n\n                if (node) {\n                        return node;\n                }\n\n                return (object[this.symbol] = new SymbolTreeNode());\n        }\n\n        /**\n         * Returns `true` if the object has any children. Otherwise it returns `false`.\n         *\n         * * `O(1)`\n         *\n         * @method hasChildren\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Boolean}\n         */\n        hasChildren(object) {\n                return this._node(object).hasChildren;\n        }\n\n        /**\n         * Returns the first child of the given object.\n         *\n         * * `O(1)`\n         *\n         * @method firstChild\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object}\n         */\n        firstChild(object) {\n                return this._node(object).firstChild;\n        }\n\n        /**\n         * Returns the last child of the given object.\n         *\n         * * `O(1)`\n         *\n         * @method lastChild\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object}\n         */\n        lastChild(object) {\n                return this._node(object).lastChild;\n        }\n\n        /**\n         * Returns the previous sibling of the given object.\n         *\n         * * `O(1)`\n         *\n         * @method previousSibling\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object}\n         */\n        previousSibling(object) {\n                return this._node(object).previousSibling;\n        }\n\n        /**\n         * Returns the next sibling of the given object.\n         *\n         * * `O(1)`\n         *\n         * @method nextSibling\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object}\n         */\n        nextSibling(object) {\n                return this._node(object).nextSibling;\n        }\n\n        /**\n         * Return the parent of the given object.\n         *\n         * * `O(1)`\n         *\n         * @method parent\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object}\n         */\n        parent(object) {\n                return this._node(object).parent;\n        }\n\n        /**\n         * Find the inclusive descendant that is last in tree order of the given object.\n         *\n         * * `O(n)` (worst case) where `n` is the depth of the subtree of `object`\n         *\n         * @method lastInclusiveDescendant\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object}\n         */\n        lastInclusiveDescendant(object) {\n                let lastChild;\n                let current = object;\n\n                while ((lastChild = this._node(current).lastChild)) {\n                        current = lastChild;\n                }\n\n                return current;\n        }\n\n        /**\n         * Find the preceding object (A) of the given object (B).\n         * An object A is preceding an object B if A and B are in the same tree\n         * and A comes before B in tree order.\n         *\n         * * `O(n)` (worst case)\n         * * `O(1)` (amortized when walking the entire tree)\n         *\n         * @method preceding\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @param {Object} [options]\n         * @param {Object} [options.root] If set, `root` must be an inclusive ancestor\n         *        of the return value (or else null is returned). This check _assumes_\n         *        that `root` is also an inclusive ancestor of the given `object`\n         * @return {?Object}\n         */\n        preceding(object, options) {\n                const treeRoot = options && options.root;\n\n                if (object === treeRoot) {\n                        return null;\n                }\n\n                const previousSibling = this._node(object).previousSibling;\n\n                if (previousSibling) {\n                        return this.lastInclusiveDescendant(previousSibling);\n                }\n\n                // if there is no previous sibling return the parent (might be null)\n                return this._node(object).parent;\n        }\n\n        /**\n         * Find the following object (A) of the given object (B).\n         * An object A is following an object B if A and B are in the same tree\n         * and A comes after B in tree order.\n         *\n         * * `O(n)` (worst case) where `n` is the amount of objects in the entire tree\n         * * `O(1)` (amortized when walking the entire tree)\n         *\n         * @method following\n         * @memberOf module:symbol-tree#\n         * @param {!Object} object\n         * @param {Object} [options]\n         * @param {Object} [options.root] If set, `root` must be an inclusive ancestor\n         *        of the return value (or else null is returned). This check _assumes_\n         *        that `root` is also an inclusive ancestor of the given `object`\n         * @param {Boolean} [options.skipChildren=false] If set, ignore the children of `object`\n         * @return {?Object}\n         */\n        following(object, options) {\n                const treeRoot = options && options.root;\n                const skipChildren = options && options.skipChildren;\n\n                const firstChild = !skipChildren && this._node(object).firstChild;\n\n                if (firstChild) {\n                        return firstChild;\n                }\n\n                let current = object;\n\n                do {\n                        if (current === treeRoot) {\n                                return null;\n                        }\n\n                        const nextSibling = this._node(current).nextSibling;\n\n                        if (nextSibling) {\n                                return nextSibling;\n                        }\n\n                        current = this._node(current).parent;\n                } while (current);\n\n                return null;\n        }\n\n        /**\n         * Append all children of the given object to an array.\n         *\n         * * `O(n)` where `n` is the amount of children of the given `parent`\n         *\n         * @method childrenToArray\n         * @memberOf module:symbol-tree#\n         * @param {Object} parent\n         * @param {Object} [options]\n         * @param {Object[]} [options.array=[]]\n         * @param {Function} [options.filter] Function to test each object before it is added to the array.\n         *                            Invoked with arguments (object). Should return `true` if an object\n         *                            is to be included.\n         * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n         * @return {Object[]}\n         */\n        childrenToArray(parent, options) {\n                const array   = (options && options.array) || [];\n                const filter  = (options && options.filter) || returnTrue;\n                const thisArg = (options && options.thisArg) || undefined;\n\n                const parentNode = this._node(parent);\n                let object = parentNode.firstChild;\n                let index = 0;\n\n                while (object) {\n                        const node = this._node(object);\n                        node.setCachedIndex(parentNode, index);\n\n                        if (filter.call(thisArg, object)) {\n                                array.push(object);\n                        }\n\n                        object = node.nextSibling;\n                        ++index;\n                }\n\n                return array;\n        }\n\n        /**\n         * Append all inclusive ancestors of the given object to an array.\n         *\n         * * `O(n)` where `n` is the amount of ancestors of the given `object`\n         *\n         * @method ancestorsToArray\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @param {Object} [options]\n         * @param {Object[]} [options.array=[]]\n         * @param {Function} [options.filter] Function to test each object before it is added to the array.\n         *                            Invoked with arguments (object). Should return `true` if an object\n         *                            is to be included.\n         * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n         * @return {Object[]}\n         */\n        ancestorsToArray(object, options) {\n                const array   = (options && options.array) || [];\n                const filter  = (options && options.filter) || returnTrue;\n                const thisArg = (options && options.thisArg) || undefined;\n\n                let ancestor = object;\n\n                while (ancestor) {\n                        if (filter.call(thisArg, ancestor)) {\n                                array.push(ancestor);\n                        }\n                        ancestor = this._node(ancestor).parent;\n                }\n\n                return array;\n        }\n\n        /**\n         * Append all descendants of the given object to an array (in tree order).\n         *\n         * * `O(n)` where `n` is the amount of objects in the sub-tree of the given `object`\n         *\n         * @method treeToArray\n         * @memberOf module:symbol-tree#\n         * @param {Object} root\n         * @param {Object} [options]\n         * @param {Object[]} [options.array=[]]\n         * @param {Function} [options.filter] Function to test each object before it is added to the array.\n         *                            Invoked with arguments (object). Should return `true` if an object\n         *                            is to be included.\n         * @param {*} [options.thisArg] Value to use as `this` when executing `filter`.\n         * @return {Object[]}\n         */\n        treeToArray(root, options) {\n                const array   = (options && options.array) || [];\n                const filter  = (options && options.filter) || returnTrue;\n                const thisArg = (options && options.thisArg) || undefined;\n\n                let object = root;\n\n                while (object) {\n                        if (filter.call(thisArg, object)) {\n                                array.push(object);\n                        }\n                        object = this.following(object, {root: root});\n                }\n\n                return array;\n        }\n\n        /**\n         * Iterate over all children of the given object\n         *\n         * * `O(1)` for a single iteration\n         *\n         * @method childrenIterator\n         * @memberOf module:symbol-tree#\n         * @param {Object} parent\n         * @param {Object} [options]\n         * @param {Boolean} [options.reverse=false]\n         * @return {Object} An iterable iterator (ES6)\n         */\n        childrenIterator(parent, options) {\n                const reverse = options && options.reverse;\n                const parentNode = this._node(parent);\n\n                return new TreeIterator(\n                        this,\n                        parent,\n                        reverse ? parentNode.lastChild : parentNode.firstChild,\n                        reverse ? TreeIterator.PREV : TreeIterator.NEXT\n                );\n        }\n\n        /**\n         * Iterate over all the previous siblings of the given object. (in reverse tree order)\n         *\n         * * `O(1)` for a single iteration\n         *\n         * @method previousSiblingsIterator\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object} An iterable iterator (ES6)\n         */\n        previousSiblingsIterator(object) {\n                return new TreeIterator(\n                        this,\n                        object,\n                        this._node(object).previousSibling,\n                        TreeIterator.PREV\n                );\n        }\n\n        /**\n         * Iterate over all the next siblings of the given object. (in tree order)\n         *\n         * * `O(1)` for a single iteration\n         *\n         * @method nextSiblingsIterator\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object} An iterable iterator (ES6)\n         */\n        nextSiblingsIterator(object) {\n                return new TreeIterator(\n                        this,\n                        object,\n                        this._node(object).nextSibling,\n                        TreeIterator.NEXT\n                );\n        }\n\n        /**\n         * Iterate over all inclusive ancestors of the given object\n         *\n         * * `O(1)` for a single iteration\n         *\n         * @method ancestorsIterator\n         * @memberOf module:symbol-tree#\n         * @param {Object} object\n         * @return {Object} An iterable iterator (ES6)\n         */\n        ancestorsIterator(object) {\n                return new TreeIterator(\n                        this,\n                        object,\n                        object,\n                        TreeIterator.PARENT\n                );\n        }\n\n        /**\n         * Iterate over all descendants of the given object (in tree order).\n         *\n         * Where `n` is the amount of objects in the sub-tree of the given `root`:\n         *\n         * * `O(n)` (worst case for a single iteration)\n         * * `O(n)` (amortized, when completing the iterator)\n         *\n         * @method treeIterator\n         * @memberOf module:symbol-tree#\n         * @param {Object} root\n         * @param {Object} options\n         * @param {Boolean} [options.reverse=false]\n         * @return {Object} An iterable iterator (ES6)\n         */\n        treeIterator(root, options) {\n                const reverse = options && options.reverse;\n\n                return new TreeIterator(\n                        this,\n                        root,\n                        reverse ? this.lastInclusiveDescendant(root) : root,\n                        reverse ? TreeIterator.PRECEDING : TreeIterator.FOLLOWING\n                );\n        }\n\n        /**\n         * Find the index of the given object (the number of preceding siblings).\n         *\n         * * `O(n)` where `n` is the amount of preceding siblings\n         * * `O(1)` (amortized, if the tree is not modified)\n         *\n         * @method index\n         * @memberOf module:symbol-tree#\n         * @param {Object} child\n         * @return {Number} The number of preceding siblings, or -1 if the object has no parent\n         */\n        index(child) {\n                const childNode = this._node(child);\n                const parentNode = this._node(childNode.parent);\n\n                if (!parentNode) {\n                        // In principal, you could also find out the number of preceding siblings\n                        // for objects that do not have a parent. This method limits itself only to\n                        // objects that have a parent because that lets us optimize more.\n                        return -1;\n                }\n\n                let currentIndex = childNode.getCachedIndex(parentNode);\n\n                if (currentIndex >= 0) {\n                        return currentIndex;\n                }\n\n                currentIndex = 0;\n                let object = parentNode.firstChild;\n\n                if (parentNode.childIndexCachedUpTo) {\n                        const cachedUpToNode = this._node(parentNode.childIndexCachedUpTo);\n                        object = cachedUpToNode.nextSibling;\n                        currentIndex = cachedUpToNode.getCachedIndex(parentNode) + 1;\n                }\n\n                while (object) {\n                        const node = this._node(object);\n                        node.setCachedIndex(parentNode, currentIndex);\n\n                        if (object === child) {\n                                break;\n                        }\n\n                        ++currentIndex;\n                        object = node.nextSibling;\n                }\n\n                parentNode.childIndexCachedUpTo = child;\n\n                return currentIndex;\n        }\n\n        /**\n         * Calculate the number of children.\n         *\n         * * `O(n)` where `n` is the amount of children\n         * * `O(1)` (amortized, if the tree is not modified)\n         *\n         * @method childrenCount\n         * @memberOf module:symbol-tree#\n         * @param {Object} parent\n         * @return {Number}\n         */\n        childrenCount(parent) {\n                const parentNode = this._node(parent);\n\n                if (!parentNode.lastChild) {\n                        return 0;\n                }\n\n                return this.index(parentNode.lastChild) + 1;\n        }\n\n        /**\n         * Compare the position of an object relative to another object. A bit set is returned:\n         *\n         * <ul>\n         *     <li>DISCONNECTED : 1</li>\n         *     <li>PRECEDING : 2</li>\n         *     <li>FOLLOWING : 4</li>\n         *     <li>CONTAINS : 8</li>\n         *     <li>CONTAINED_BY : 16</li>\n         * </ul>\n         *\n         * The semantics are the same as compareDocumentPosition in DOM, with the exception that\n         * DISCONNECTED never occurs with any other bit.\n         *\n         * where `n` and `m` are the amount of ancestors of `left` and `right`;\n         * where `o` is the amount of children of the lowest common ancestor of `left` and `right`:\n         *\n         * * `O(n + m + o)` (worst case)\n         * * `O(n + m)` (amortized, if the tree is not modified)\n         *\n         * @method compareTreePosition\n         * @memberOf module:symbol-tree#\n         * @param {Object} left\n         * @param {Object} right\n         * @return {Number}\n         */\n        compareTreePosition(left, right) {\n                // In DOM terms:\n                // left = reference / context object\n                // right = other\n\n                if (left === right) {\n                        return 0;\n                }\n\n                /* jshint -W016 */\n\n                const leftAncestors = []; { // inclusive\n                        let leftAncestor = left;\n\n                        while (leftAncestor) {\n                                if (leftAncestor === right) {\n                                        return TreePosition.CONTAINS | TreePosition.PRECEDING;\n                                        // other is ancestor of reference\n                                }\n\n                                leftAncestors.push(leftAncestor);\n                                leftAncestor = this.parent(leftAncestor);\n                        }\n                }\n\n\n                const rightAncestors = []; {\n                        let rightAncestor = right;\n\n                        while (rightAncestor) {\n                                if (rightAncestor === left) {\n                                        return TreePosition.CONTAINED_BY | TreePosition.FOLLOWING;\n                                }\n\n                                rightAncestors.push(rightAncestor);\n                                rightAncestor = this.parent(rightAncestor);\n                        }\n                }\n\n\n                const root = reverseArrayIndex(leftAncestors, 0);\n\n                if (!root || root !== reverseArrayIndex(rightAncestors, 0)) {\n                        // note: unlike DOM, preceding / following is not set here\n                        return TreePosition.DISCONNECTED;\n                }\n\n                // find the lowest common ancestor\n                let commonAncestorIndex = 0;\n                const ancestorsMinLength = Math.min(leftAncestors.length, rightAncestors.length);\n\n                for (let i = 0; i < ancestorsMinLength; ++i) {\n                        const leftAncestor  = reverseArrayIndex(leftAncestors, i);\n                        const rightAncestor = reverseArrayIndex(rightAncestors, i);\n\n                        if (leftAncestor !== rightAncestor) {\n                                break;\n                        }\n\n                        commonAncestorIndex = i;\n                }\n\n                // indexes within the common ancestor\n                const leftIndex  = this.index(reverseArrayIndex(leftAncestors, commonAncestorIndex + 1));\n                const rightIndex = this.index(reverseArrayIndex(rightAncestors, commonAncestorIndex + 1));\n\n                return rightIndex < leftIndex\n                        ? TreePosition.PRECEDING\n                        : TreePosition.FOLLOWING;\n        }\n\n        /**\n         * Remove the object from this tree.\n         * Has no effect if already removed.\n         *\n         * * `O(1)`\n         *\n         * @method remove\n         * @memberOf module:symbol-tree#\n         * @param {Object} removeObject\n         * @return {Object} removeObject\n         */\n        remove(removeObject) {\n                const removeNode = this._node(removeObject);\n                const parentNode = this._node(removeNode.parent);\n                const prevNode = this._node(removeNode.previousSibling);\n                const nextNode = this._node(removeNode.nextSibling);\n\n                if (parentNode) {\n                        if (parentNode.firstChild === removeObject) {\n                                parentNode.firstChild = removeNode.nextSibling;\n                        }\n\n                        if (parentNode.lastChild === removeObject) {\n                                parentNode.lastChild = removeNode.previousSibling;\n                        }\n                }\n\n                if (prevNode) {\n                        prevNode.nextSibling = removeNode.nextSibling;\n                }\n\n                if (nextNode) {\n                        nextNode.previousSibling = removeNode.previousSibling;\n                }\n\n                removeNode.parent = null;\n                removeNode.previousSibling = null;\n                removeNode.nextSibling = null;\n                removeNode.cachedIndex = -1;\n                removeNode.cachedIndexVersion = NaN;\n\n                if (parentNode) {\n                        parentNode.childrenChanged();\n                }\n\n                return removeObject;\n        }\n\n        /**\n         * Insert the given object before the reference object.\n         * `newObject` is now the previous sibling of `referenceObject`.\n         *\n         * * `O(1)`\n         *\n         * @method insertBefore\n         * @memberOf module:symbol-tree#\n         * @param {Object} referenceObject\n         * @param {Object} newObject\n         * @throws {Error} If the newObject is already present in this SymbolTree\n         * @return {Object} newObject\n         */\n        insertBefore(referenceObject, newObject) {\n                const referenceNode = this._node(referenceObject);\n                const prevNode = this._node(referenceNode.previousSibling);\n                const newNode = this._node(newObject);\n                const parentNode = this._node(referenceNode.parent);\n\n                if (newNode.isAttached) {\n                        throw Error('Given object is already present in this SymbolTree, remove it first');\n                }\n\n                newNode.parent = referenceNode.parent;\n                newNode.previousSibling = referenceNode.previousSibling;\n                newNode.nextSibling = referenceObject;\n                referenceNode.previousSibling = newObject;\n\n                if (prevNode) {\n                        prevNode.nextSibling = newObject;\n                }\n\n                if (parentNode && parentNode.firstChild === referenceObject) {\n                        parentNode.firstChild = newObject;\n                }\n\n                if (parentNode) {\n                        parentNode.childrenChanged();\n                }\n\n                return newObject;\n        }\n\n        /**\n         * Insert the given object after the reference object.\n         * `newObject` is now the next sibling of `referenceObject`.\n         *\n         * * `O(1)`\n         *\n         * @method insertAfter\n         * @memberOf module:symbol-tree#\n         * @param {Object} referenceObject\n         * @param {Object} newObject\n         * @throws {Error} If the newObject is already present in this SymbolTree\n         * @return {Object} newObject\n         */\n        insertAfter(referenceObject, newObject) {\n                const referenceNode = this._node(referenceObject);\n                const nextNode = this._node(referenceNode.nextSibling);\n                const newNode = this._node(newObject);\n                const parentNode = this._node(referenceNode.parent);\n\n                if (newNode.isAttached) {\n                        throw Error('Given object is already present in this SymbolTree, remove it first');\n                }\n\n                newNode.parent = referenceNode.parent;\n                newNode.previousSibling = referenceObject;\n                newNode.nextSibling = referenceNode.nextSibling;\n                referenceNode.nextSibling = newObject;\n\n                if (nextNode) {\n                        nextNode.previousSibling = newObject;\n                }\n\n                if (parentNode && parentNode.lastChild === referenceObject) {\n                        parentNode.lastChild = newObject;\n                }\n\n                if (parentNode) {\n                        parentNode.childrenChanged();\n                }\n\n                return newObject;\n        }\n\n        /**\n         * Insert the given object as the first child of the given reference object.\n         * `newObject` is now the first child of `referenceObject`.\n         *\n         * * `O(1)`\n         *\n         * @method prependChild\n         * @memberOf module:symbol-tree#\n         * @param {Object} referenceObject\n         * @param {Object} newObject\n         * @throws {Error} If the newObject is already present in this SymbolTree\n         * @return {Object} newObject\n         */\n        prependChild(referenceObject, newObject) {\n                const referenceNode = this._node(referenceObject);\n                const newNode = this._node(newObject);\n\n                if (newNode.isAttached) {\n                        throw Error('Given object is already present in this SymbolTree, remove it first');\n                }\n\n                if (referenceNode.hasChildren) {\n                        this.insertBefore(referenceNode.firstChild, newObject);\n                }\n                else {\n                        newNode.parent = referenceObject;\n                        referenceNode.firstChild = newObject;\n                        referenceNode.lastChild = newObject;\n                        referenceNode.childrenChanged();\n                }\n\n                return newObject;\n        }\n\n        /**\n         * Insert the given object as the last child of the given reference object.\n         * `newObject` is now the last child of `referenceObject`.\n         *\n         * * `O(1)`\n         *\n         * @method appendChild\n         * @memberOf module:symbol-tree#\n         * @param {Object} referenceObject\n         * @param {Object} newObject\n         * @throws {Error} If the newObject is already present in this SymbolTree\n         * @return {Object} newObject\n         */\n        appendChild(referenceObject, newObject) {\n                const referenceNode = this._node(referenceObject);\n                const newNode = this._node(newObject);\n\n                if (newNode.isAttached) {\n                        throw Error('Given object is already present in this SymbolTree, remove it first');\n                }\n\n                if (referenceNode.hasChildren) {\n                        this.insertAfter(referenceNode.lastChild, newObject);\n                }\n                else {\n                        newNode.parent = referenceObject;\n                        referenceNode.firstChild = newObject;\n                        referenceNode.lastChild = newObject;\n                        referenceNode.childrenChanged();\n                }\n\n                return newObject;\n        }\n}\n\nmodule.exports = SymbolTree;\nSymbolTree.TreePosition = TreePosition;\n","\"use strict\";\nconst SymbolTree = require(\"symbol-tree\");\n\nexports.cloningSteps = Symbol(\"cloning steps\");\n\n// TODO: the many underscore-prefixed hooks should move here\n// E.g. _attrModified (which maybe should be split into its per-spec variants)\n\n/**\n * This SymbolTree is used to build the tree for all Node in a document\n */\nexports.domSymbolTree = new SymbolTree(\"DOM SymbolTree\");\n","\"use strict\";\n\nconst NODE_TYPE = require(\"../node-type\");\nconst { domSymbolTree } = require(\"./internal-constants\");\n\n// https://dom.spec.whatwg.org/#concept-node-length\nfunction nodeLength(node) {\n  switch (node.nodeType) {\n    case NODE_TYPE.DOCUMENT_TYPE_NODE:\n      return 0;\n\n    case NODE_TYPE.TEXT_NODE:\n    case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n    case NODE_TYPE.COMMENT_NODE:\n      return node.data.length;\n\n    default:\n      return domSymbolTree.childrenCount(node);\n  }\n}\n\n// https://dom.spec.whatwg.org/#concept-tree-root\nfunction nodeRoot(node) {\n  if (node._cachedRoot !== null) {\n    return node._cachedRoot;\n  }\n\n  // First pass: walk upward to find the root. This only advances `root`; intermediate nodes are not cached yet.\n  let root = node;\n  let parent;\n  while ((parent = domSymbolTree.parent(root))) {\n    if (parent._cachedRoot !== null) {\n      // Short-circuit: an ancestor already has a cached root, so we don't need to walk further — the ancestor's\n      // cached root is our root too. We can skip the second pass below because the ancestor's cache was itself set\n      // by a previous second pass (or short-circuit), meaning it already points at the tree's actual root.\n      const cachedRoot = parent._cachedRoot;\n      let current = node;\n      while (current !== parent) {\n        current._cachedRoot = cachedRoot;\n        current = domSymbolTree.parent(current);\n      }\n      return cachedRoot;\n    }\n    root = parent;\n  }\n\n  // Second pass (path compression): walk the same path again to cache every intermediate node. This makes the first\n  // call ~2x more expensive, but subsequent calls from any node on this path become O(1).\n  //\n  // We only cache when the root is a Document. Cache invalidation is piggybacked on the existing descendants loop in\n  // Node-impl.js's _remove(), which is gated on `this.isConnected`. That gate is true exactly when the tree is rooted\n  // at a Document (via shadowIncludingRoot). So Document-rooted caches are always properly invalidated on removal.\n  //\n  // Non-Document roots — standalone elements, DocumentFragments, and even ShadowRoots on disconnected hosts — don't\n  // get this invalidation, so caching them would produce stale entries. This is fine in practice: disconnected trees\n  // are typically being built up (write-heavy), so caching wouldn't help much anyway. Connected ShadowRoots *could*\n  // be cached safely (their host's `isConnected` is true, so removal would invalidate), but distinguishing connected\n  // vs. disconnected ShadowRoots here adds complexity for little gain.\n  if (root.nodeType === NODE_TYPE.DOCUMENT_NODE) {\n    let current = node;\n    while (current !== root) {\n      current._cachedRoot = root;\n      current = domSymbolTree.parent(current);\n    }\n    root._cachedRoot = root;\n  }\n\n  return root;\n}\n\n// https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor\nfunction isInclusiveAncestor(ancestorNode, node) {\n  while (node) {\n    if (ancestorNode === node) {\n      return true;\n    }\n\n    node = domSymbolTree.parent(node);\n  }\n\n  return false;\n}\n\n// https://dom.spec.whatwg.org/#concept-tree-following\nfunction isFollowing(nodeA, nodeB) {\n  if (nodeA === nodeB) {\n    return false;\n  }\n\n  let current = nodeB;\n  while (current) {\n    if (current === nodeA) {\n      return true;\n    }\n\n    current = domSymbolTree.following(current);\n  }\n\n  return false;\n}\n\nmodule.exports = {\n  nodeLength,\n  nodeRoot,\n\n  isInclusiveAncestor,\n  isFollowing\n};\n","\"use strict\";\n// Do not require generated files from here, as this file is shared with the Web IDL converter.\n\n// https://infra.spec.whatwg.org/#namespaces\n\nexports.HTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.MATHML_NS = \"http://www.w3.org/1998/Math/MathML\";\n\nexports.SVG_NS = \"http://www.w3.org/2000/svg\";\n\nexports.XLINK_NS = \"http://www.w3.org/1999/xlink\";\n\nexports.XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n\nexports.XMLNS_NS = \"http://www.w3.org/2000/xmlns/\";\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\n\nexports.implementation = class NodeListImpl {\n  constructor(globalObject, args, privateData) {\n    if (privateData.nodes) {\n      this._list = [...privateData.nodes];\n      this._isLive = false;\n    } else {\n      this._list = [];\n      this._isLive = true;\n      this._version = -1;\n      this._element = privateData.element;\n      this._query = privateData.query;\n      this._update();\n    }\n  }\n  get length() {\n    this._update();\n    return this._list.length;\n  }\n  item(index) {\n    this._update();\n    return this._list[index] || null;\n  }\n  _update() {\n    if (this._isLive) {\n      if (this._version < this._element._version) {\n        const snapshot = this._query();\n        for (let i = 0; i < snapshot.length; i++) {\n          this._list[i] = snapshot[i];\n        }\n        this._list.length = snapshot.length;\n        this._version = this._element._version;\n      }\n    }\n  }\n  get [idlUtils.supportedPropertyIndices]() {\n    this._update();\n    return this._list.keys();\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"NodeList\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'NodeList'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"NodeList\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class NodeList {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of NodeList.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'NodeList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'NodeList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get length' called on an object that is not a valid instance of NodeList.\");\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(NodeList.prototype, {\n    item: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"NodeList\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true },\n    keys: { value: globalObject.Array.prototype.keys, configurable: true, enumerable: true, writable: true },\n    values: { value: globalObject.Array.prototype.values, configurable: true, enumerable: true, writable: true },\n    entries: { value: globalObject.Array.prototype.entries, configurable: true, enumerable: true, writable: true },\n    forEach: { value: globalObject.Array.prototype.forEach, configurable: true, enumerable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = NodeList;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: NodeList\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/NodeList-impl.js\");\n","\"use strict\";\n\nconst NodeList = require(\"../../../generated/idl/NodeList\");\n\n// https://dom.spec.whatwg.org/#mutationrecord\nclass MutationRecordImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n\n    this.type = privateData.type;\n    this.target = privateData.target;\n    this.previousSibling = privateData.previousSibling;\n    this.nextSibling = privateData.nextSibling;\n    this.attributeName = privateData.attributeName;\n    this.attributeNamespace = privateData.attributeNamespace;\n    this.oldValue = privateData.oldValue;\n\n    this._addedNodes = privateData.addedNodes;\n    this._removedNodes = privateData.removedNodes;\n  }\n\n  get addedNodes() {\n    return NodeList.createImpl(this._globalObject, [], {\n      nodes: this._addedNodes\n    });\n  }\n\n  get removedNodes() {\n    return NodeList.createImpl(this._globalObject, [], {\n      nodes: this._removedNodes\n    });\n  }\n}\n\nmodule.exports = {\n  implementation: MutationRecordImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"MutationRecord\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'MutationRecord'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"MutationRecord\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class MutationRecord {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get target' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"target\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"target\"]);\n      });\n    }\n\n    get addedNodes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get addedNodes' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"addedNodes\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"addedNodes\"]);\n      });\n    }\n\n    get removedNodes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get removedNodes' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"removedNodes\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"removedNodes\"]);\n      });\n    }\n\n    get previousSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get previousSibling' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"previousSibling\"]);\n    }\n\n    get nextSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get nextSibling' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"nextSibling\"]);\n    }\n\n    get attributeName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get attributeName' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return esValue[implSymbol][\"attributeName\"];\n    }\n\n    get attributeNamespace() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get attributeNamespace' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return esValue[implSymbol][\"attributeNamespace\"];\n    }\n\n    get oldValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oldValue' called on an object that is not a valid instance of MutationRecord.\"\n        );\n      }\n\n      return esValue[implSymbol][\"oldValue\"];\n    }\n  }\n  Object.defineProperties(MutationRecord.prototype, {\n    type: { enumerable: true },\n    target: { enumerable: true },\n    addedNodes: { enumerable: true },\n    removedNodes: { enumerable: true },\n    previousSibling: { enumerable: true },\n    nextSibling: { enumerable: true },\n    attributeName: { enumerable: true },\n    attributeNamespace: { enumerable: true },\n    oldValue: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"MutationRecord\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = MutationRecord;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: MutationRecord\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/mutation-observer/MutationRecord-impl.js\");\n","\"use strict\";\n\nconst { domSymbolTree } = require(\"./internal-constants\");\nconst reportException = require(\"./runtime-script-errors\");\n\nconst Event = require(\"../../../generated/idl/Event\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst MutationRecord = require(\"../../../generated/idl/MutationRecord\");\n\nconst MUTATION_TYPE = {\n  ATTRIBUTES: \"attributes\",\n  CHARACTER_DATA: \"characterData\",\n  CHILD_LIST: \"childList\"\n};\n\n// Note:\n// Since jsdom doesn't currently implement the concept of \"unit of related similar-origin browsing contexts\"\n// (https://html.spec.whatwg.org/multipage/browsers.html#unit-of-related-similar-origin-browsing-contexts)\n// we will approximate that the following properties are global for now.\n\n// https://dom.spec.whatwg.org/#mutation-observer-compound-microtask-queued-flag\nlet mutationObserverMicrotaskQueueFlag = false;\n\n// Non-spec compliant: List of all the mutation observers with mutation records enqueued. It's a replacement for\n// mutation observer list (https://dom.spec.whatwg.org/#mutation-observer-list) but without leaking since it's empty\n// before notifying the mutation observers.\nconst activeMutationObservers = new Set();\n\n// https://dom.spec.whatwg.org/#signal-slot-list\nconst signalSlotList = [];\n\n// https://dom.spec.whatwg.org/#queue-a-mutation-record\nfunction queueMutationRecord(\n  type,\n  target,\n  name,\n  namespace,\n  oldValue,\n  addedNodes,\n  removedNodes,\n  previousSibling,\n  nextSibling\n) {\n  const interestedObservers = new Map();\n\n  const nodes = domSymbolTree.ancestorsToArray(target);\n\n  for (const node of nodes) {\n    for (const registered of node._registeredObserverList) {\n      const { options, observer: mo } = registered;\n\n      if (\n        !(node !== target && options.subtree === false) &&\n        !(type === MUTATION_TYPE.ATTRIBUTES && options.attributes !== true) &&\n        !(type === MUTATION_TYPE.ATTRIBUTES && options.attributeFilter &&\n          !options.attributeFilter.some(value => value === name || value === namespace)) &&\n        !(type === MUTATION_TYPE.CHARACTER_DATA && options.characterData !== true) &&\n        !(type === MUTATION_TYPE.CHILD_LIST && options.childList === false)\n      ) {\n        if (!interestedObservers.has(mo)) {\n          interestedObservers.set(mo, null);\n        }\n\n        if (\n          (type === MUTATION_TYPE.ATTRIBUTES && options.attributeOldValue === true) ||\n          (type === MUTATION_TYPE.CHARACTER_DATA && options.characterDataOldValue === true)\n        ) {\n          interestedObservers.set(mo, oldValue);\n        }\n      }\n    }\n  }\n\n  for (const [observer, mappedOldValue] of interestedObservers.entries()) {\n    const record = MutationRecord.createImpl(target._globalObject, [], {\n      type,\n      target,\n      attributeName: name,\n      attributeNamespace: namespace,\n      oldValue: mappedOldValue,\n      addedNodes,\n      removedNodes,\n      previousSibling,\n      nextSibling\n    });\n\n    observer._recordQueue.push(record);\n    activeMutationObservers.add(observer);\n  }\n\n  queueMutationObserverMicrotask();\n}\n\n// https://dom.spec.whatwg.org/#queue-a-tree-mutation-record\nfunction queueTreeMutationRecord(target, addedNodes, removedNodes, previousSibling, nextSibling) {\n  queueMutationRecord(\n    MUTATION_TYPE.CHILD_LIST,\n    target,\n    null,\n    null,\n    null,\n    addedNodes,\n    removedNodes,\n    previousSibling,\n    nextSibling\n  );\n}\n\n// https://dom.spec.whatwg.org/#queue-an-attribute-mutation-record\nfunction queueAttributeMutationRecord(target, name, namespace, oldValue) {\n  queueMutationRecord(\n    MUTATION_TYPE.ATTRIBUTES,\n    target,\n    name,\n    namespace,\n    oldValue,\n    [],\n    [],\n    null,\n    null\n  );\n}\n\n// https://dom.spec.whatwg.org/#queue-a-mutation-observer-compound-microtask\nfunction queueMutationObserverMicrotask() {\n  if (mutationObserverMicrotaskQueueFlag) {\n    return;\n  }\n\n  mutationObserverMicrotaskQueueFlag = true;\n\n  Promise.resolve().then(() => {\n    notifyMutationObservers();\n  });\n}\n\n// https://dom.spec.whatwg.org/#notify-mutation-observers\nfunction notifyMutationObservers() {\n  mutationObserverMicrotaskQueueFlag = false;\n\n  const notifyList = [...activeMutationObservers].sort((a, b) => a._id - b._id);\n  activeMutationObservers.clear();\n\n  const signalList = [...signalSlotList];\n  signalSlotList.splice(0, signalSlotList.length);\n\n  for (const mo of notifyList) {\n    const records = [...mo._recordQueue];\n    mo._recordQueue = [];\n\n    for (const node of mo._nodeList) {\n      node._registeredObserverList = node._registeredObserverList.filter(registeredObserver => {\n        return registeredObserver.source !== mo;\n      });\n    }\n\n    if (records.length > 0) {\n      try {\n        const moWrapper = idlUtils.wrapperForImpl(mo);\n        mo._callback.call(\n          moWrapper,\n          records.map(idlUtils.wrapperForImpl),\n          moWrapper\n        );\n      } catch (e) {\n        const { target } = records[0];\n        const window = target._ownerDocument._defaultView;\n\n        reportException(window, e);\n      }\n    }\n  }\n\n  for (const slot of signalList) {\n    const slotChangeEvent = Event.createImpl(\n      slot._globalObject,\n      [\n        \"slotchange\",\n        { bubbles: true }\n      ],\n      { isTrusted: true }\n    );\n\n    slot._dispatch(slotChangeEvent);\n  }\n}\n\nmodule.exports = {\n  MUTATION_TYPE,\n\n  queueMutationRecord,\n  queueTreeMutationRecord,\n  queueAttributeMutationRecord,\n\n  queueMutationObserverMicrotask,\n\n  signalSlotList\n};\n","\"use strict\";\n\nconst NODE_TYPE = require(\"../node-type\");\n\nconst { nodeRoot } = require(\"./node\");\nconst { HTML_NS } = require(\"./namespaces\");\nconst { domSymbolTree } = require(\"./internal-constants\");\nconst { signalSlotList, queueMutationObserverMicrotask } = require(\"./mutation-observers\");\n\n// Valid host element for ShadowRoot.\n// Defined in: https://dom.spec.whatwg.org/#dom-element-attachshadow\nconst VALID_HOST_ELEMENT_NAME = new Set([\n  \"article\",\n  \"aside\",\n  \"blockquote\",\n  \"body\",\n  \"div\",\n  \"footer\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"header\",\n  \"main\",\n  \"nav\",\n  \"p\",\n  \"section\",\n  \"span\"\n]);\n\nfunction isValidHostElementName(name) {\n  return VALID_HOST_ELEMENT_NAME.has(name);\n}\n\n// Use an approximation by checking the presence of nodeType instead of instead of using the isImpl from\n// \"../generated/Node\" to avoid introduction of circular dependencies.\nfunction isNode(nodeImpl) {\n  return Boolean(nodeImpl && \"nodeType\" in nodeImpl);\n}\n\n// Use an approximation by checking the value of nodeType and presence of nodeType host instead of instead\n// of using the isImpl from \"../generated/ShadowRoot\" to avoid introduction of circular dependencies.\nfunction isShadowRoot(nodeImpl) {\n  return Boolean(nodeImpl && nodeImpl.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE && \"host\" in nodeImpl);\n}\n\n// https://dom.spec.whatwg.org/#concept-slotable\nfunction isSlotable(nodeImpl) {\n  return nodeImpl && (nodeImpl.nodeType === NODE_TYPE.ELEMENT_NODE || nodeImpl.nodeType === NODE_TYPE.TEXT_NODE);\n}\n\nfunction isSlot(nodeImpl) {\n  return nodeImpl && nodeImpl.localName === \"slot\" && nodeImpl._namespaceURI === HTML_NS;\n}\n\n// https://dom.spec.whatwg.org/#concept-shadow-including-inclusive-ancestor\nfunction isShadowInclusiveAncestor(ancestor, node) {\n  while (isNode(node)) {\n    if (node === ancestor) {\n      return true;\n    }\n\n    if (isShadowRoot(node)) {\n      node = node.host;\n    } else {\n      node = domSymbolTree.parent(node);\n    }\n  }\n\n  return false;\n}\n\n// https://dom.spec.whatwg.org/#retarget\nfunction retarget(a, b) {\n  while (true) {\n    if (!isNode(a)) {\n      return a;\n    }\n\n    const aRoot = nodeRoot(a);\n    if (\n      !isShadowRoot(aRoot) ||\n      (isNode(b) && isShadowInclusiveAncestor(aRoot, b))\n    ) {\n      return a;\n    }\n\n    a = nodeRoot(a).host;\n  }\n}\n\n// https://dom.spec.whatwg.org/#get-the-parent\nfunction getEventTargetParent(eventTarget, event) {\n  // _getTheParent will be missing for Window, since it doesn't have an impl class and we don't want to pollute the\n  // user-visible global scope with a _getTheParent value. TODO: remove this entire function and use _getTheParent\n  // directly, once Window gets split into impl/wrapper.\n  return eventTarget._getTheParent ? eventTarget._getTheParent(event) : null;\n}\n\n// https://dom.spec.whatwg.org/#concept-shadow-including-root\nfunction shadowIncludingRoot(node) {\n  const root = nodeRoot(node);\n  return isShadowRoot(root) ? shadowIncludingRoot(root.host) : root;\n}\n\n// https://dom.spec.whatwg.org/#assign-a-slot\nfunction assignSlot(slotable) {\n  const slot = findSlot(slotable);\n\n  if (slot) {\n    assignSlotable(slot);\n  }\n}\n\n// https://dom.spec.whatwg.org/#assign-slotables\nfunction assignSlotable(slot) {\n  const slotables = findSlotable(slot);\n\n  let shouldFireSlotChange = false;\n\n  if (slotables.length !== slot._assignedNodes.length) {\n    shouldFireSlotChange = true;\n  } else {\n    for (let i = 0; i < slotables.length; i++) {\n      if (slotables[i] !== slot._assignedNodes[i]) {\n        shouldFireSlotChange = true;\n        break;\n      }\n    }\n  }\n\n  if (shouldFireSlotChange) {\n    signalSlotChange(slot);\n  }\n\n  slot._assignedNodes = slotables;\n\n  for (const slotable of slotables) {\n    slotable._assignedSlot = slot;\n  }\n}\n\n// https://dom.spec.whatwg.org/#assign-slotables-for-a-tree\nfunction assignSlotableForTree(root) {\n  for (const slot of domSymbolTree.treeIterator(root)) {\n    if (isSlot(slot)) {\n      assignSlotable(slot);\n    }\n  }\n}\n\n// https://dom.spec.whatwg.org/#find-slotables\nfunction findSlotable(slot) {\n  const result = [];\n\n  const root = nodeRoot(slot);\n  if (!isShadowRoot(root)) {\n    return result;\n  }\n\n  for (const slotable of domSymbolTree.treeIterator(root.host)) {\n    const foundSlot = findSlot(slotable);\n\n    if (foundSlot === slot) {\n      result.push(slotable);\n    }\n  }\n\n  return result;\n}\n\n// https://dom.spec.whatwg.org/#find-flattened-slotables\nfunction findFlattenedSlotables(slot) {\n  const result = [];\n\n  const root = nodeRoot(slot);\n  if (!isShadowRoot(root)) {\n    return result;\n  }\n\n  const slotables = findSlotable(slot);\n\n  if (slotables.length === 0) {\n    for (const child of domSymbolTree.childrenIterator(slot)) {\n      if (isSlotable(child)) {\n        slotables.push(child);\n      }\n    }\n  }\n\n  for (const node of slotables) {\n    if (isSlot(node) && isShadowRoot(nodeRoot(node))) {\n      const temporaryResult = findFlattenedSlotables(node);\n      result.push(...temporaryResult);\n    } else {\n      result.push(node);\n    }\n  }\n\n  return result;\n}\n\n// https://dom.spec.whatwg.org/#find-a-slot\nfunction findSlot(slotable, openFlag) {\n  const { parentNode: parent } = slotable;\n\n  if (!parent) {\n    return null;\n  }\n\n  const shadow = parent._shadowRoot;\n\n  if (!shadow || (openFlag && shadow.mode !== \"open\")) {\n    return null;\n  }\n\n  for (const child of domSymbolTree.treeIterator(shadow)) {\n    if (isSlot(child) && child.name === slotable._slotableName) {\n      return child;\n    }\n  }\n\n  return null;\n}\n\n// https://dom.spec.whatwg.org/#signal-a-slot-change\nfunction signalSlotChange(slot) {\n  if (!signalSlotList.some(entry => entry === slot)) {\n    signalSlotList.push(slot);\n  }\n\n  queueMutationObserverMicrotask();\n}\n\n// https://dom.spec.whatwg.org/#concept-shadow-including-descendant\nfunction* shadowIncludingInclusiveDescendantsIterator(node) {\n  yield node;\n\n  if (node._shadowRoot) {\n    yield* shadowIncludingInclusiveDescendantsIterator(node._shadowRoot);\n  }\n\n  for (const child of domSymbolTree.childrenIterator(node)) {\n    yield* shadowIncludingInclusiveDescendantsIterator(child);\n  }\n}\n\n// https://dom.spec.whatwg.org/#concept-shadow-including-descendant\nfunction* shadowIncludingDescendantsIterator(node) {\n  if (node._shadowRoot) {\n    yield* shadowIncludingInclusiveDescendantsIterator(node._shadowRoot);\n  }\n\n  for (const child of domSymbolTree.childrenIterator(node)) {\n    yield* shadowIncludingInclusiveDescendantsIterator(child);\n  }\n}\n\nmodule.exports = {\n  isValidHostElementName,\n\n  isNode,\n  isSlotable,\n  isSlot,\n  isShadowRoot,\n\n  isShadowInclusiveAncestor,\n  retarget,\n  getEventTargetParent,\n  shadowIncludingRoot,\n\n  assignSlot,\n  assignSlotable,\n  assignSlotableForTree,\n\n  findSlot,\n  findFlattenedSlotables,\n\n  signalSlotChange,\n\n  shadowIncludingInclusiveDescendantsIterator,\n  shadowIncludingDescendantsIterator\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"detail\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'detail' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"view\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = utils.tryImplForWrapper(value);\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"which\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'which' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst UIEventInit = require(\"./UIEventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  UIEventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"altKey\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'altKey' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"ctrlKey\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'ctrlKey' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"metaKey\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'metaKey' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierAltGraph\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierAltGraph' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierCapsLock\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierCapsLock' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierFn\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierFn' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierFnLock\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierFnLock' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierHyper\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierHyper' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierNumLock\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierNumLock' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierScrollLock\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierScrollLock' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierSuper\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierSuper' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierSymbol\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierSymbol' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"modifierSymbolLock\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'modifierSymbolLock' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"shiftKey\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'shiftKey' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventTarget = require(\"./EventTarget.js\");\nconst EventModifierInit = require(\"./EventModifierInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventModifierInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"button\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"short\"](value, { context: context + \" has member 'button' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"buttons\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned short\"](value, {\n        context: context + \" has member 'buttons' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"clientX\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'clientX' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"clientX\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'clientX' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n\n  {\n    const key = \"clientY\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'clientY' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"clientY\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'clientY' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n\n  {\n    const key = \"movementX\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, {\n        context: context + \" has member 'movementX' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"movementY\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, {\n        context: context + \" has member 'movementY' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"relatedTarget\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = EventTarget.convert(globalObject, value, { context: context + \" has member 'relatedTarget' that\" });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"screenX\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'screenX' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"screenX\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'screenX' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n\n  {\n    const key = \"screenY\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'screenY' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"screenY\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'screenY' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst isWindow = require(\"../helpers/is-window\");\nconst UIEventInit = require(\"../../../generated/idl/UIEventInit\");\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nclass UIEventImpl extends EventImpl {\n  constructor(globalObject, args, privateData) {\n    const eventInitDict = args[1];\n\n    // undefined check included so that we can omit the property in internal usage.\n    if (eventInitDict && eventInitDict.view !== null && eventInitDict.view !== undefined) {\n      if (!isWindow(eventInitDict.view)) {\n        throw new TypeError(`Failed to construct '${new.target.name.replace(/Impl$/, \"\")}': member view is not of ` +\n                            \"type Window.\");\n      }\n    }\n\n    super(globalObject, args, privateData);\n  }\n\n  initUIEvent(type, bubbles, cancelable, view, detail) {\n    if (view !== null) {\n      if (!isWindow(view)) {\n        throw new TypeError(`Failed to execute 'initUIEvent' on '${this.constructor.name.replace(/Impl$/, \"\")}': ` +\n                            \"parameter 4 is not of type 'Window'.\");\n      }\n    }\n\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initEvent(type, bubbles, cancelable);\n    this.view = view;\n    this.detail = detail;\n  }\n}\nUIEventImpl.defaultInit = UIEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: UIEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst UIEventInit = require(\"./UIEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"UIEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'UIEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"UIEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class UIEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'UIEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'UIEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = UIEventInit.convert(globalObject, curArg, { context: \"Failed to construct 'UIEvent': parameter 2\" });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    initUIEvent(typeArg) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'initUIEvent' called on an object that is not a valid instance of UIEvent.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initUIEvent' on 'UIEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initUIEvent' on 'UIEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initUIEvent' on 'UIEvent': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initUIEvent' on 'UIEvent': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = utils.tryImplForWrapper(curArg);\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[4];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'initUIEvent' on 'UIEvent': parameter 5\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initUIEvent(...args);\n    }\n\n    get view() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get view' called on an object that is not a valid instance of UIEvent.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"view\"]);\n    }\n\n    get detail() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get detail' called on an object that is not a valid instance of UIEvent.\");\n      }\n\n      return esValue[implSymbol][\"detail\"];\n    }\n\n    get which() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get which' called on an object that is not a valid instance of UIEvent.\");\n      }\n\n      return esValue[implSymbol][\"which\"];\n    }\n  }\n  Object.defineProperties(UIEvent.prototype, {\n    initUIEvent: { enumerable: true },\n    view: { enumerable: true },\n    detail: { enumerable: true },\n    which: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"UIEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = UIEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: UIEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/UIEvent-impl.js\");\n","\"use strict\";\nconst { domSymbolTree } = require(\"./living/helpers/internal-constants\");\nconst SYMBOL_TREE_POSITION = require(\"symbol-tree\").TreePosition;\n\n/**\n * Define a set of properties on an object, by copying the property descriptors\n * from the original object.\n *\n * - `object` {Object} the target object\n * - `properties` {Object} the source from which to copy property descriptors\n */\nexports.define = function define(object, properties) {\n  for (const name of Object.getOwnPropertyNames(properties)) {\n    const propDesc = Object.getOwnPropertyDescriptor(properties, name);\n    Object.defineProperty(object, name, propDesc);\n  }\n};\n\nexports.mixin = (target, source) => {\n  const keys = Reflect.ownKeys(source);\n  for (let i = 0; i < keys.length; ++i) {\n    if (keys[i] in target) {\n      continue;\n    }\n\n    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n  }\n};\n\nlet memoizeQueryTypeCounter = 0;\n\n/**\n * Returns a version of a method that memoizes specific types of calls on the object\n *\n * - `fn` {Function} the method to be memozied\n */\nexports.memoizeQuery = function memoizeQuery(fn) {\n  // Only memoize query functions with arity <= 2\n  if (fn.length > 2) {\n    return fn;\n  }\n\n  const type = memoizeQueryTypeCounter++;\n\n  return function (...args) {\n    if (!this._memoizedQueries) {\n      return fn.apply(this, args);\n    }\n\n    if (!this._memoizedQueries[type]) {\n      this._memoizedQueries[type] = Object.create(null);\n    }\n\n    let key;\n    if (args.length === 1 && typeof args[0] === \"string\") {\n      key = args[0];\n    } else if (args.length === 2 && typeof args[0] === \"string\" && typeof args[1] === \"string\") {\n      key = args[0] + \"::\" + args[1];\n    } else {\n      return fn.apply(this, args);\n    }\n\n    if (!(key in this._memoizedQueries[type])) {\n      this._memoizedQueries[type][key] = fn.apply(this, args);\n    }\n    return this._memoizedQueries[type][key];\n  };\n};\n\nexports.simultaneousIterators = function* (first, second) {\n  for (;;) {\n    const firstResult = first.next();\n    const secondResult = second.next();\n\n    if (firstResult.done && secondResult.done) {\n      return;\n    }\n\n    yield [\n      firstResult.done ? null : firstResult.value,\n      secondResult.done ? null : secondResult.value\n    ];\n  }\n};\n\nexports.treeOrderSorter = function (a, b) {\n  const compare = domSymbolTree.compareTreePosition(a, b);\n\n  if (compare & SYMBOL_TREE_POSITION.PRECEDING) { // b is preceding a\n    return 1;\n  }\n\n  if (compare & SYMBOL_TREE_POSITION.FOLLOWING) {\n    return -1;\n  }\n\n  // disconnected or equal:\n  return 0;\n};\n\ntry {\n  exports.Canvas = require(\"canvas\");\n} catch {\n  exports.Canvas = null;\n}\n","\"use strict\";\n\n// This mixin doesn't have an IDL equivalent, but since MouseEvent and KeyboardEvent implement getModifierState() the\n// same way, its implementation is shared here.\n\nclass EventModifierMixinImpl {\n  // Event's constructor assumes all options correspond to IDL attributes with the same names, and sets them on `this`.\n  // That is not the case for these modifier boolean options, but since the options are set on `this` anyway we'll\n  // access them that way. The spec doesn't say much about the case where keyArg is not one of the valid ones\n  // (https://w3c.github.io/uievents-key/#keys-modifier), but at least Chrome returns false for invalid modifiers. Since\n  // these invalid modifiers will be undefined on `this` (thus `false` after casting it to boolean), we don't need to do\n  // extra checking for validity.\n  getModifierState(keyArg) {\n    if (keyArg === \"Control\") {\n      return Boolean(this.ctrlKey);\n    }\n    if ([\"Alt\", \"Meta\", \"Shift\"].includes(keyArg)) {\n      return Boolean(this[`${keyArg.toLowerCase()}Key`]);\n    }\n    return Boolean(this[`modifier${keyArg}`]);\n  }\n}\n\nexports.implementation = EventModifierMixinImpl;\n","\"use strict\";\n\nconst { mixin } = require(\"../../utils\");\nconst EventModifierMixinImpl = require(\"./EventModifierMixin-impl\").implementation;\nconst UIEventImpl = require(\"./UIEvent-impl\").implementation;\n\nconst MouseEventInit = require(\"../../../generated/idl/MouseEventInit\");\n\nclass MouseEventImpl extends UIEventImpl {\n  get x() {\n    return this.clientX;\n  }\n  get y() {\n    return this.clientY;\n  }\n  get pageX() {\n    // TODO: consider dispatch flag and return page-relative event coordinate once layout is supported\n    return this.clientX; // TODO: add horizontal scroll offset once jsdom implements scrolling support\n  }\n  get pageY() {\n    // TODO: consider dispatch flag and return page-relative event coordinate once layout is supported\n    return this.clientY; // TODO: add vertical scroll offset once jsdom implements scrolling support\n  }\n  get offsetX() {\n    // TODO: consider dispatch flag and return target-relative event coordinate once layout is supported\n    return this.pageX;\n  }\n  get offsetY() {\n    // TODO: consider dispatch flag and return target-relative event coordinate once layout is supported\n    return this.pageY;\n  }\n\n  initMouseEvent(\n    type,\n    bubbles,\n    cancelable,\n    view,\n    detail,\n    screenX,\n    screenY,\n    clientX,\n    clientY,\n    ctrlKey,\n    altKey,\n    shiftKey,\n    metaKey,\n    button,\n    relatedTarget\n  ) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initUIEvent(type, bubbles, cancelable, view, detail);\n    this.screenX = screenX;\n    this.screenY = screenY;\n    this.clientX = clientX;\n    this.clientY = clientY;\n    this.ctrlKey = ctrlKey;\n    this.altKey = altKey;\n    this.shiftKey = shiftKey;\n    this.metaKey = metaKey;\n    this.button = button;\n    this.relatedTarget = relatedTarget;\n  }\n}\nmixin(MouseEventImpl.prototype, EventModifierMixinImpl.prototype);\nMouseEventImpl.defaultInit = MouseEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: MouseEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst MouseEventInit = require(\"./MouseEventInit.js\");\nconst EventTarget = require(\"./EventTarget.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst UIEvent = require(\"./UIEvent.js\");\n\nconst interfaceName = \"MouseEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'MouseEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"MouseEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  UIEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class MouseEvent extends globalObject.UIEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'MouseEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'MouseEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = MouseEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'MouseEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    getModifierState(keyArg) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getModifierState' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getModifierState' on 'MouseEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getModifierState' on 'MouseEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getModifierState(...args);\n    }\n\n    initMouseEvent(typeArg) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'initMouseEvent' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initMouseEvent' on 'MouseEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = utils.tryImplForWrapper(curArg);\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[4];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 5\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[5];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 6\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[6];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 7\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[7];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 8\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[8];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 9\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[9];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 10\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[10];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 11\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[11];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 12\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[12];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 13\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[13];\n        if (curArg !== undefined) {\n          curArg = conversions[\"short\"](curArg, {\n            context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 14\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[14];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = EventTarget.convert(globalObject, curArg, {\n              context: \"Failed to execute 'initMouseEvent' on 'MouseEvent': parameter 15\"\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initMouseEvent(...args);\n    }\n\n    get screenX() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get screenX' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"screenX\"];\n    }\n\n    get screenY() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get screenY' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"screenY\"];\n    }\n\n    get clientX() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get clientX' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"clientX\"];\n    }\n\n    get clientY() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get clientY' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"clientY\"];\n    }\n\n    get ctrlKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ctrlKey' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"ctrlKey\"];\n    }\n\n    get shiftKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get shiftKey' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"shiftKey\"];\n    }\n\n    get altKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get altKey' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"altKey\"];\n    }\n\n    get metaKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get metaKey' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"metaKey\"];\n    }\n\n    get button() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get button' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"button\"];\n    }\n\n    get buttons() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get buttons' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"buttons\"];\n    }\n\n    get relatedTarget() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get relatedTarget' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"relatedTarget\"]);\n    }\n\n    get pageX() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get pageX' called on an object that is not a valid instance of MouseEvent.\");\n      }\n\n      return esValue[implSymbol][\"pageX\"];\n    }\n\n    get pageY() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get pageY' called on an object that is not a valid instance of MouseEvent.\");\n      }\n\n      return esValue[implSymbol][\"pageY\"];\n    }\n\n    get x() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get x' called on an object that is not a valid instance of MouseEvent.\");\n      }\n\n      return esValue[implSymbol][\"x\"];\n    }\n\n    get y() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get y' called on an object that is not a valid instance of MouseEvent.\");\n      }\n\n      return esValue[implSymbol][\"y\"];\n    }\n\n    get offsetX() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get offsetX' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"offsetX\"];\n    }\n\n    get offsetY() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get offsetY' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"offsetY\"];\n    }\n\n    get movementX() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get movementX' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"movementX\"];\n    }\n\n    get movementY() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get movementY' called on an object that is not a valid instance of MouseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"movementY\"];\n    }\n  }\n  Object.defineProperties(MouseEvent.prototype, {\n    getModifierState: { enumerable: true },\n    initMouseEvent: { enumerable: true },\n    screenX: { enumerable: true },\n    screenY: { enumerable: true },\n    clientX: { enumerable: true },\n    clientY: { enumerable: true },\n    ctrlKey: { enumerable: true },\n    shiftKey: { enumerable: true },\n    altKey: { enumerable: true },\n    metaKey: { enumerable: true },\n    button: { enumerable: true },\n    buttons: { enumerable: true },\n    relatedTarget: { enumerable: true },\n    pageX: { enumerable: true },\n    pageY: { enumerable: true },\n    x: { enumerable: true },\n    y: { enumerable: true },\n    offsetX: { enumerable: true },\n    offsetY: { enumerable: true },\n    movementX: { enumerable: true },\n    movementY: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"MouseEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = MouseEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: MouseEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/MouseEvent-impl.js\");\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst isWindow = require(\"../helpers/is-window\");\nconst reportException = require(\"../helpers/runtime-script-errors\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { nodeRoot } = require(\"../helpers/node\");\nconst {\n  isNode, isShadowRoot, isSlotable, getEventTargetParent,\n  isShadowInclusiveAncestor, retarget\n} = require(\"../helpers/shadow-dom\");\n\nconst MouseEvent = require(\"../../../generated/idl/MouseEvent\");\n\nconst EVENT_PHASE = {\n  NONE: 0,\n  CAPTURING_PHASE: 1,\n  AT_TARGET: 2,\n  BUBBLING_PHASE: 3\n};\n\nclass EventTargetImpl {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n    this._eventListeners = Object.create(null);\n  }\n\n  // Default argument is necessary because webidl2js cannot handle `= {}` with unions at the moment.\n  addEventListener(type, callback, options = { __proto__: null, capture: false, once: false }) {\n    let { capture, once, passive, signal } = flattenMoreEventListenerOptions(options);\n\n    if (signal !== null && signal.aborted) {\n      return;\n    }\n\n    if (callback === null) {\n      return;\n    }\n\n    if (passive === null) {\n      passive = defaultPassiveValue(type, this);\n    }\n\n    if (!this._eventListeners[type]) {\n      this._eventListeners[type] = [];\n    }\n\n    for (let i = 0; i < this._eventListeners[type].length; ++i) {\n      const listener = this._eventListeners[type][i];\n      if (\n        listener.callback.objectReference === callback.objectReference &&\n        listener.capture === capture\n      ) {\n        return;\n      }\n    }\n\n    this._eventListeners[type].push({\n      callback,\n      capture,\n      once,\n      passive,\n      signal\n    });\n\n    if (signal !== null) {\n      signal._addAlgorithm(() => {\n        this.removeEventListener(type, callback, options);\n      });\n    }\n  }\n\n  // Default argument is necessary because webidl2js cannot handle `= {}` with unions at the moment.\n  removeEventListener(type, callback, options = { __proto__: null, capture: false }) {\n    const capture = flattenEventListenerOptions(options);\n\n    if (callback === null) {\n      // Optimization, not in the spec.\n      return;\n    }\n\n    if (!this._eventListeners[type]) {\n      return;\n    }\n\n    for (let i = 0; i < this._eventListeners[type].length; ++i) {\n      const listener = this._eventListeners[type][i];\n      if (\n        listener.callback.objectReference === callback.objectReference &&\n        listener.capture === capture\n      ) {\n        this._eventListeners[type].splice(i, 1);\n        break;\n      }\n    }\n  }\n\n  dispatchEvent(eventImpl) {\n    if (eventImpl._dispatchFlag || !eventImpl._initializedFlag) {\n      throw DOMException.create(this._globalObject, [\n        \"Tried to dispatch an uninitialized event\",\n        \"InvalidStateError\"\n      ]);\n    }\n    if (eventImpl.eventPhase !== EVENT_PHASE.NONE) {\n      throw DOMException.create(this._globalObject, [\n        \"Tried to dispatch a dispatching event\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    eventImpl.isTrusted = false;\n\n    return this._dispatch(eventImpl);\n  }\n\n  // https://dom.spec.whatwg.org/#get-the-parent\n  _getTheParent() {\n    return null;\n  }\n\n  // https://dom.spec.whatwg.org/#concept-event-dispatch\n  // legacyOutputDidListenersThrowFlag optional parameter is not necessary here since it is only used by indexDB.\n  _dispatch(eventImpl, legacyTargetOverrideFlag /* , legacyOutputDidListenersThrowFlag */) {\n    let targetImpl = this;\n    let clearTargets = false;\n    let activationTarget = null;\n\n    eventImpl._dispatchFlag = true;\n\n    const targetOverride = legacyTargetOverrideFlag ?\n      idlUtils.implForWrapper(targetImpl._globalObject._document) :\n      targetImpl;\n    let relatedTarget = retarget(eventImpl.relatedTarget, targetImpl);\n\n    if (targetImpl !== relatedTarget || targetImpl === eventImpl.relatedTarget) {\n      const touchTargets = [];\n\n      appendToEventPath(eventImpl, targetImpl, targetOverride, relatedTarget, touchTargets, false);\n\n      const isActivationEvent = MouseEvent.isImpl(eventImpl) && eventImpl.type === \"click\";\n\n      if (isActivationEvent && targetImpl._hasActivationBehavior) {\n        activationTarget = targetImpl;\n      }\n\n      let slotInClosedTree = false;\n      let slotable = isSlotable(targetImpl) && targetImpl._assignedSlot ? targetImpl : null;\n      let parent = getEventTargetParent(targetImpl, eventImpl);\n\n      // Populate event path\n      // https://dom.spec.whatwg.org/#event-path\n      while (parent !== null) {\n        if (slotable !== null) {\n          if (parent.localName !== \"slot\") {\n            throw new Error(`JSDOM Internal Error: Expected parent to be a Slot`);\n          }\n\n          slotable = null;\n\n          const parentRoot = nodeRoot(parent);\n          if (isShadowRoot(parentRoot) && parentRoot.mode === \"closed\") {\n            slotInClosedTree = true;\n          }\n        }\n\n        if (isSlotable(parent) && parent._assignedSlot) {\n          slotable = parent;\n        }\n\n        relatedTarget = retarget(eventImpl.relatedTarget, parent);\n\n        if (\n          (isNode(parent) && isShadowInclusiveAncestor(nodeRoot(targetImpl), parent)) ||\n          idlUtils.wrapperForImpl(parent).constructor.name === \"Window\"\n        ) {\n          if (isActivationEvent && eventImpl.bubbles && activationTarget === null &&\n              parent._hasActivationBehavior) {\n            activationTarget = parent;\n          }\n\n          appendToEventPath(eventImpl, parent, null, relatedTarget, touchTargets, slotInClosedTree);\n        } else if (parent === relatedTarget) {\n          parent = null;\n        } else {\n          targetImpl = parent;\n\n          if (isActivationEvent && activationTarget === null && targetImpl._hasActivationBehavior) {\n            activationTarget = targetImpl;\n          }\n\n          appendToEventPath(eventImpl, parent, targetImpl, relatedTarget, touchTargets, slotInClosedTree);\n        }\n\n        if (parent !== null) {\n          parent = getEventTargetParent(parent, eventImpl);\n        }\n\n        slotInClosedTree = false;\n      }\n\n      let clearTargetsStructIndex = -1;\n      for (let i = eventImpl._path.length - 1; i >= 0 && clearTargetsStructIndex === -1; i--) {\n        if (eventImpl._path[i].target !== null) {\n          clearTargetsStructIndex = i;\n        }\n      }\n      const clearTargetsStruct = eventImpl._path[clearTargetsStructIndex];\n\n      clearTargets =\n          (isNode(clearTargetsStruct.target) && isShadowRoot(nodeRoot(clearTargetsStruct.target))) ||\n          (isNode(clearTargetsStruct.relatedTarget) && isShadowRoot(nodeRoot(clearTargetsStruct.relatedTarget)));\n\n      if (activationTarget !== null && activationTarget._legacyPreActivationBehavior) {\n        activationTarget._legacyPreActivationBehavior();\n      }\n\n      for (let i = eventImpl._path.length - 1; i >= 0; --i) {\n        const struct = eventImpl._path[i];\n\n        if (struct.target !== null) {\n          eventImpl.eventPhase = EVENT_PHASE.AT_TARGET;\n        } else {\n          eventImpl.eventPhase = EVENT_PHASE.CAPTURING_PHASE;\n        }\n\n        invokeEventListeners(struct, eventImpl, \"capturing\");\n      }\n\n      for (let i = 0; i < eventImpl._path.length; i++) {\n        const struct = eventImpl._path[i];\n\n        if (struct.target !== null) {\n          eventImpl.eventPhase = EVENT_PHASE.AT_TARGET;\n        } else {\n          if (!eventImpl.bubbles) {\n            continue;\n          }\n\n          eventImpl.eventPhase = EVENT_PHASE.BUBBLING_PHASE;\n        }\n\n        invokeEventListeners(struct, eventImpl, \"bubbling\");\n      }\n    }\n\n    eventImpl.eventPhase = EVENT_PHASE.NONE;\n\n    eventImpl.currentTarget = null;\n    eventImpl._path = [];\n    eventImpl._dispatchFlag = false;\n    eventImpl._stopPropagationFlag = false;\n    eventImpl._stopImmediatePropagationFlag = false;\n\n    if (clearTargets) {\n      eventImpl.target = null;\n      eventImpl.relatedTarget = null;\n    }\n\n    if (activationTarget !== null) {\n      if (!eventImpl._canceledFlag) {\n        activationTarget._activationBehavior(eventImpl);\n      } else if (activationTarget._legacyCanceledActivationBehavior) {\n        activationTarget._legacyCanceledActivationBehavior();\n      }\n    }\n\n    return !eventImpl._canceledFlag;\n  }\n}\n\nmodule.exports = {\n  implementation: EventTargetImpl\n};\n\n// https://dom.spec.whatwg.org/#concept-event-listener-invoke\nfunction invokeEventListeners(struct, eventImpl, phase) {\n  const structIndex = eventImpl._path.indexOf(struct);\n  for (let i = structIndex; i >= 0; i--) {\n    const t = eventImpl._path[i];\n    if (t.target) {\n      eventImpl.target = t.target;\n      break;\n    }\n  }\n\n  eventImpl.relatedTarget = idlUtils.wrapperForImpl(struct.relatedTarget);\n\n  if (eventImpl._stopPropagationFlag) {\n    return;\n  }\n\n  eventImpl.currentTarget = idlUtils.wrapperForImpl(struct.item);\n\n  const listeners = struct.item._eventListeners;\n  innerInvokeEventListeners(eventImpl, listeners, phase, struct.itemInShadowTree);\n}\n\n// https://dom.spec.whatwg.org/#concept-event-listener-inner-invoke\nfunction innerInvokeEventListeners(eventImpl, listeners, phase, itemInShadowTree) {\n  let found = false;\n\n  const { type, target } = eventImpl;\n  const wrapper = idlUtils.wrapperForImpl(target);\n\n  if (!listeners || !listeners[type]) {\n    return found;\n  }\n\n  // Copy event listeners before iterating since the list can be modified during the iteration.\n  const handlers = listeners[type].slice();\n\n  for (let i = 0; i < handlers.length; i++) {\n    const listener = handlers[i];\n    const { callback, capture, once, passive } = listener;\n\n    // Check if the event listener has been removed since the listeners has been cloned.\n    if (!listeners[type].includes(listener)) {\n      continue;\n    }\n\n    found = true;\n\n    if (\n      (phase === \"capturing\" && !capture) ||\n      (phase === \"bubbling\" && capture)\n    ) {\n      continue;\n    }\n\n    if (once) {\n      listeners[type].splice(listeners[type].indexOf(listener), 1);\n    }\n\n    let window = null;\n    if (wrapper && wrapper._document) {\n      // Triggered by Window\n      window = wrapper;\n    } else if (target._ownerDocument) {\n      // Triggered by most webidl2js'ed instances\n      window = target._ownerDocument._defaultView;\n    } else if (wrapper._ownerDocument) {\n      // Currently triggered by some non-webidl2js things\n      window = wrapper._ownerDocument._defaultView;\n    }\n\n    let currentEvent;\n    if (window) {\n      currentEvent = window._currentEvent;\n      if (!itemInShadowTree) {\n        window._currentEvent = eventImpl;\n      }\n    }\n\n    if (passive) {\n      eventImpl._inPassiveListenerFlag = true;\n    }\n\n    try {\n      callback.call(eventImpl.currentTarget, eventImpl);\n    } catch (e) {\n      if (window) {\n        reportException(window, e);\n      }\n      // Errors in window-less documents just get swallowed... can you think of anything better?\n    }\n\n    eventImpl._inPassiveListenerFlag = false;\n\n    if (window) {\n      window._currentEvent = currentEvent;\n    }\n\n    if (eventImpl._stopImmediatePropagationFlag) {\n      return found;\n    }\n  }\n\n  return found;\n}\n\nfunction flattenMoreEventListenerOptions(options) {\n  const dict = {\n    capture: flattenEventListenerOptions(options),\n    once: false,\n    passive: null,\n    signal: null\n  };\n\n  if (options !== null && typeof options === \"object\") {\n    dict.once = options.once;\n    if (\"passive\" in options) {\n      dict.passive = options.passive;\n    }\n    if (\"signal\" in options) {\n      dict.signal = options.signal;\n    }\n  }\n  return dict;\n}\n\nfunction flattenEventListenerOptions(options) {\n  if (typeof options === \"boolean\") {\n    return options;\n  }\n  return options.capture;\n}\n\nfunction defaultPassiveValue(type, eventTarget) {\n  switch (type) {\n    case \"touchstart\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mousewheel\":\n      return isWindow(eventTarget) ||\n        eventTarget._ownerDocument === eventTarget ||\n        eventTarget._ownerDocument.documentElement === eventTarget ||\n        eventTarget._ownerDocument.body === eventTarget;\n    default:\n      return false;\n  }\n}\n\n// https://dom.spec.whatwg.org/#concept-event-path-append\nfunction appendToEventPath(eventImpl, target, targetOverride, relatedTarget, touchTargets, slotInClosedTree) {\n  const itemInShadowTree = isNode(target) && isShadowRoot(nodeRoot(target));\n  const rootOfClosedTree = isShadowRoot(target) && target.mode === \"closed\";\n\n  eventImpl._path.push({\n    item: target,\n    itemInShadowTree,\n    target: targetOverride,\n    relatedTarget,\n    touchTargets,\n    rootOfClosedTree,\n    slotInClosedTree\n  });\n}\n","\"use strict\";\n\nconst { setupForSimpleEventAccessors } = require(\"../helpers/create-event-accessor\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst EventTargetImpl = require(\"../events/EventTarget-impl\").implementation;\nconst AbortSignal = require(\"../../../generated/idl/AbortSignal\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nclass AbortSignalImpl extends EventTargetImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    // make event firing possible\n    this._ownerDocument = globalObject.document;\n\n    this.reason = undefined;\n    this.abortAlgorithms = new Set();\n    this._dependent = false;\n    this._sourceSignals = new Set();\n    this._dependentSignals = new Set();\n  }\n\n  get aborted() {\n    return this.reason !== undefined;\n  }\n\n  throwIfAborted() {\n    if (this.aborted) {\n      throw this.reason;\n    }\n  }\n\n  static abort(globalObject, reason) {\n    const abortSignal = AbortSignal.createImpl(globalObject, []);\n    if (reason !== undefined) {\n      abortSignal.reason = reason;\n    } else {\n      abortSignal.reason = DOMException.create(globalObject, [\"The operation was aborted.\", \"AbortError\"]);\n    }\n    return abortSignal;\n  }\n\n  // https://dom.spec.whatwg.org/#abortsignal-dependent\n  static any(globalObject, signals) {\n    const resultSignal = AbortSignal.createImpl(globalObject, []);\n    for (const signal of signals) {\n      if (signal.aborted) {\n        resultSignal.reason = signal.reason;\n        return resultSignal;\n      }\n    }\n\n    resultSignal.dependent = true;\n    for (const signal of signals) {\n      if (!signal.dependent) {\n        resultSignal._sourceSignals.add(signal);\n        signal._dependentSignals.add(resultSignal);\n      } else {\n        for (const sourceSignal of signal._sourceSignals) {\n          if (!sourceSignal.aborted && !sourceSignal.dependent) {\n            resultSignal._sourceSignals.add(sourceSignal);\n            sourceSignal._dependentSignals.add(resultSignal);\n          }\n        }\n      }\n    }\n    return resultSignal;\n  }\n\n  static timeout(globalObject, milliseconds) {\n    const signal = AbortSignal.createImpl(globalObject, []);\n    globalObject.setTimeout(() => {\n      signal._signalAbort(DOMException.create(globalObject, [\"The operation timed out.\", \"TimeoutError\"]));\n    }, milliseconds);\n\n    return signal;\n  }\n\n  // https://dom.spec.whatwg.org/#abortsignal-signal-abort\n  _signalAbort(reason) {\n    if (this.aborted) {\n      return;\n    }\n\n    if (reason !== undefined) {\n      this.reason = reason;\n    } else {\n      this.reason = DOMException.create(this._globalObject, [\"The operation was aborted.\", \"AbortError\"]);\n    }\n\n    const dependentSignalsToAbort = [];\n    for (const dependentSignal of this._dependentSignals) {\n      if (!dependentSignal.aborted) {\n        dependentSignal.reason = this.reason;\n        dependentSignalsToAbort.push(dependentSignal);\n      }\n    }\n\n    this._runAbortStep();\n\n    for (const dependentSignal of dependentSignalsToAbort) {\n      dependentSignal._runAbortStep();\n    }\n  }\n\n  _runAbortStep() {\n    for (const algorithm of this.abortAlgorithms) {\n      algorithm();\n    }\n    this.abortAlgorithms.clear();\n\n    fireAnEvent(\"abort\", this);\n  }\n\n  _addAlgorithm(algorithm) {\n    if (this.aborted) {\n      return;\n    }\n    this.abortAlgorithms.add(algorithm);\n  }\n\n  _removeAlgorithm(algorithm) {\n    this.abortAlgorithms.delete(algorithm);\n  }\n}\n\nsetupForSimpleEventAccessors(AbortSignalImpl.prototype, [\"abort\"]);\n\nmodule.exports = {\n  implementation: AbortSignalImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst EventTarget = require(\"./EventTarget.js\");\n\nconst interfaceName = \"AbortSignal\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'AbortSignal'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"AbortSignal\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  EventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class AbortSignal extends globalObject.EventTarget {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    throwIfAborted() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'throwIfAborted' called on an object that is not a valid instance of AbortSignal.\"\n        );\n      }\n\n      return esValue[implSymbol].throwIfAborted();\n    }\n\n    get aborted() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get aborted' called on an object that is not a valid instance of AbortSignal.\"\n        );\n      }\n\n      return esValue[implSymbol][\"aborted\"];\n    }\n\n    get reason() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get reason' called on an object that is not a valid instance of AbortSignal.\"\n        );\n      }\n\n      return esValue[implSymbol][\"reason\"];\n    }\n\n    get onabort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onabort' called on an object that is not a valid instance of AbortSignal.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onabort\"]);\n    }\n\n    set onabort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onabort' called on an object that is not a valid instance of AbortSignal.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onabort' property on 'AbortSignal': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onabort\"] = V;\n    }\n\n    static abort() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"any\"](curArg, {\n            context: \"Failed to execute 'abort' on 'AbortSignal': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(Impl.implementation.abort(globalObject, ...args));\n    }\n\n    static timeout(milliseconds) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'timeout' on 'AbortSignal': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long long\"](curArg, {\n          context: \"Failed to execute 'timeout' on 'AbortSignal': parameter 1\",\n          globals: globalObject,\n          enforceRange: true\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(Impl.implementation.timeout(globalObject, ...args));\n    }\n\n    static any(signals) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'any' on 'AbortSignal': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (!utils.isObject(curArg)) {\n          throw new globalObject.TypeError(\n            \"Failed to execute 'any' on 'AbortSignal': parameter 1\" + \" is not an iterable object.\"\n          );\n        } else {\n          const V = [];\n          const tmp = curArg;\n          for (let nextItem of tmp) {\n            nextItem = exports.convert(globalObject, nextItem, {\n              context: \"Failed to execute 'any' on 'AbortSignal': parameter 1\" + \"'s element\"\n            });\n\n            V.push(nextItem);\n          }\n          curArg = V;\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(Impl.implementation.any(globalObject, ...args));\n    }\n  }\n  Object.defineProperties(AbortSignal.prototype, {\n    throwIfAborted: { enumerable: true },\n    aborted: { enumerable: true },\n    reason: { enumerable: true },\n    onabort: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"AbortSignal\", configurable: true }\n  });\n  Object.defineProperties(AbortSignal, {\n    abort: { enumerable: true },\n    timeout: { enumerable: true },\n    any: { enumerable: true }\n  });\n  ctorRegistry[interfaceName] = AbortSignal;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: AbortSignal\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/aborting/AbortSignal-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"capture\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'capture' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst AbortSignal = require(\"./AbortSignal.js\");\nconst EventListenerOptions = require(\"./EventListenerOptions.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventListenerOptions._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"once\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'once' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"passive\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'passive' that\", globals: globalObject });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"signal\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = AbortSignal.convert(globalObject, value, { context: context + \" has member 'signal' that\" });\n\n      ret[key] = value;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventListener = require(\"./EventListener.js\");\nconst AddEventListenerOptions = require(\"./AddEventListenerOptions.js\");\nconst EventListenerOptions = require(\"./EventListenerOptions.js\");\nconst Event = require(\"./Event.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"EventTarget\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'EventTarget'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"EventTarget\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\", \"AudioWorklet\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class EventTarget {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    addEventListener(type, callback) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'addEventListener' called on an object that is not a valid instance of EventTarget.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'addEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'addEventListener' on 'EventTarget': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = EventListener.convert(globalObject, curArg, {\n            context: \"Failed to execute 'addEventListener' on 'EventTarget': parameter 2\"\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = AddEventListenerOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'addEventListener' on 'EventTarget': parameter 3\"\n            });\n          } else if (utils.isObject(curArg)) {\n            curArg = AddEventListenerOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'addEventListener' on 'EventTarget': parameter 3\" + \" dictionary\"\n            });\n          } else if (typeof curArg === \"boolean\") {\n            curArg = conversions[\"boolean\"](curArg, {\n              context: \"Failed to execute 'addEventListener' on 'EventTarget': parameter 3\",\n              globals: globalObject\n            });\n          } else {\n            curArg = conversions[\"boolean\"](curArg, {\n              context: \"Failed to execute 'addEventListener' on 'EventTarget': parameter 3\",\n              globals: globalObject\n            });\n          }\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].addEventListener(...args);\n    }\n\n    removeEventListener(type, callback) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeEventListener' called on an object that is not a valid instance of EventTarget.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeEventListener' on 'EventTarget': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'removeEventListener' on 'EventTarget': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = EventListener.convert(globalObject, curArg, {\n            context: \"Failed to execute 'removeEventListener' on 'EventTarget': parameter 2\"\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = EventListenerOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'removeEventListener' on 'EventTarget': parameter 3\"\n            });\n          } else if (utils.isObject(curArg)) {\n            curArg = EventListenerOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'removeEventListener' on 'EventTarget': parameter 3\" + \" dictionary\"\n            });\n          } else if (typeof curArg === \"boolean\") {\n            curArg = conversions[\"boolean\"](curArg, {\n              context: \"Failed to execute 'removeEventListener' on 'EventTarget': parameter 3\",\n              globals: globalObject\n            });\n          } else {\n            curArg = conversions[\"boolean\"](curArg, {\n              context: \"Failed to execute 'removeEventListener' on 'EventTarget': parameter 3\",\n              globals: globalObject\n            });\n          }\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].removeEventListener(...args);\n    }\n\n    dispatchEvent(event) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'dispatchEvent' called on an object that is not a valid instance of EventTarget.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'dispatchEvent' on 'EventTarget': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Event.convert(globalObject, curArg, {\n          context: \"Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].dispatchEvent(...args);\n    }\n  }\n  Object.defineProperties(EventTarget.prototype, {\n    addEventListener: { enumerable: true },\n    removeEventListener: { enumerable: true },\n    dispatchEvent: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"EventTarget\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = EventTarget;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: EventTarget\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/EventTarget-impl.js\");\n","// Generated using `npm run build`. Do not edit.\n\nvar regex = /^[a-z](?:[\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*-(?:[\\x2D\\.0-9_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n\nvar isPotentialCustomElementName = function(string) {\n\treturn regex.test(string);\n};\n\nmodule.exports = isPotentialCustomElementName;\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst isPotentialCustomElementName = require(\"is-potential-custom-element-name\");\n\nconst NODE_TYPE = require(\"../node-type\");\nconst { HTML_NS } = require(\"./namespaces\");\nconst { shadowIncludingRoot } = require(\"./shadow-dom\");\nconst reportException = require(\"./runtime-script-errors\");\n\nconst { implForWrapper, wrapperForImpl } = require(\"../../../generated/idl/utils\");\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#custom-element-reactions-stack\nclass CEReactionsStack {\n  constructor() {\n    this._stack = [];\n\n    // https://html.spec.whatwg.org/multipage/custom-elements.html#backup-element-queue\n    this.backupElementQueue = [];\n\n    // https://html.spec.whatwg.org/multipage/custom-elements.html#processing-the-backup-element-queue\n    this.processingBackupElementQueue = false;\n  }\n\n  push(elementQueue) {\n    this._stack.push(elementQueue);\n  }\n\n  pop() {\n    return this._stack.pop();\n  }\n\n  get currentElementQueue() {\n    const { _stack } = this;\n    return _stack[_stack.length - 1];\n  }\n\n  isEmpty() {\n    return this._stack.length === 0;\n  }\n}\n\n// In theory separate cross-origin Windows created by separate JSDOM instances could have separate stacks. But, we would\n// need to implement the whole agent architecture. Which is kind of questionable given that we don't run our Windows in\n// their own separate threads, which is what agents are meant to represent.\nconst customElementReactionsStack = new CEReactionsStack();\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#cereactions\nfunction ceReactionsPreSteps() {\n  customElementReactionsStack.push([]);\n}\nfunction ceReactionsPostSteps() {\n  const queue = customElementReactionsStack.pop();\n  invokeCEReactions(queue);\n}\n\nconst RESTRICTED_CUSTOM_ELEMENT_NAME = new Set([\n  \"annotation-xml\",\n  \"color-profile\",\n  \"font-face\",\n  \"font-face-src\",\n  \"font-face-uri\",\n  \"font-face-format\",\n  \"font-face-name\",\n  \"missing-glyph\"\n]);\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nfunction isValidCustomElementName(name) {\n  if (RESTRICTED_CUSTOM_ELEMENT_NAME.has(name)) {\n    return false;\n  }\n\n  return isPotentialCustomElementName(name);\n}\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#concept-upgrade-an-element\nfunction upgradeElement(definition, element) {\n  if (element._ceState !== \"undefined\" || element._ceState === \"uncustomized\") {\n    return;\n  }\n\n  element._ceDefinition = definition;\n  element._ceState = \"failed\";\n\n  for (const attribute of element._attributeList) {\n    const { _localName, _namespace, _value } = attribute;\n    enqueueCECallbackReaction(element, \"attributeChangedCallback\", [_localName, null, _value, _namespace]);\n  }\n\n  if (shadowIncludingRoot(element).nodeType === NODE_TYPE.DOCUMENT_NODE) {\n    enqueueCECallbackReaction(element, \"connectedCallback\", []);\n  }\n\n  definition.constructionStack.push(element);\n\n  const { constructionStack, constructor: C } = definition;\n\n  let constructionError;\n  try {\n    if (definition.disableShadow === true && element._shadowRoot !== null) {\n      throw DOMException.create(element._globalObject, [\n        \"Can't upgrade a custom element with a shadow root if shadow is disabled\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    element._ceState = \"precustomized\";\n\n    const constructionResult = C.construct();\n    const constructionResultImpl = implForWrapper(constructionResult);\n\n    if (constructionResultImpl !== element) {\n      throw new TypeError(\"Invalid custom element constructor return value\");\n    }\n  } catch (error) {\n    constructionError = error;\n  }\n\n  constructionStack.pop();\n\n  if (constructionError !== undefined) {\n    element._ceDefinition = null;\n    element._ceReactionQueue = [];\n\n    throw constructionError;\n  }\n\n  element._ceState = \"custom\";\n}\n\n// https://html.spec.whatwg.org/#concept-try-upgrade\nfunction tryUpgradeElement(element) {\n  const { _ownerDocument, _namespaceURI, _localName, _isValue } = element;\n  const definition = lookupCEDefinition(_ownerDocument, _namespaceURI, _localName, _isValue);\n\n  if (definition !== null) {\n    enqueueCEUpgradeReaction(element, definition);\n  }\n}\n\n// https://html.spec.whatwg.org/#look-up-a-custom-element-definition\nfunction lookupCEDefinition(document, namespace, localName, isValue) {\n  const definition = null;\n\n  if (namespace !== HTML_NS) {\n    return definition;\n  }\n\n  if (!document._defaultView) {\n    return definition;\n  }\n\n  const registry = implForWrapper(document._globalObject._customElementRegistry);\n\n  const definitionByName = registry._customElementDefinitions.find(def => {\n    return def.name === def.localName && def.localName === localName;\n  });\n  if (definitionByName !== undefined) {\n    return definitionByName;\n  }\n\n  const definitionByIs = registry._customElementDefinitions.find(def => {\n    return def.name === isValue && def.localName === localName;\n  });\n  if (definitionByIs !== undefined) {\n    return definitionByIs;\n  }\n\n  return definition;\n}\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#invoke-custom-element-reactions\nfunction invokeCEReactions(elementQueue) {\n  while (elementQueue.length > 0) {\n    const element = elementQueue.shift();\n\n    const reactions = element._ceReactionQueue;\n\n    try {\n      while (reactions.length > 0) {\n        const reaction = reactions.shift();\n\n        switch (reaction.type) {\n          case \"upgrade\":\n            upgradeElement(reaction.definition, element);\n            break;\n\n          case \"callback\":\n            reaction.callback.apply(wrapperForImpl(element), reaction.args);\n            break;\n        }\n      }\n    } catch (error) {\n      reportException(element._globalObject, error);\n    }\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#enqueue-an-element-on-the-appropriate-element-queue\nfunction enqueueElementOnAppropriateElementQueue(element) {\n  if (customElementReactionsStack.isEmpty()) {\n    customElementReactionsStack.backupElementQueue.push(element);\n\n    if (customElementReactionsStack.processingBackupElementQueue) {\n      return;\n    }\n\n    customElementReactionsStack.processingBackupElementQueue = true;\n\n    Promise.resolve().then(() => {\n      const elementQueue = customElementReactionsStack.backupElementQueue;\n      invokeCEReactions(elementQueue);\n\n      customElementReactionsStack.processingBackupElementQueue = false;\n    });\n  } else {\n    customElementReactionsStack.currentElementQueue.push(element);\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#enqueue-a-custom-element-callback-reaction\nfunction enqueueCECallbackReaction(element, callbackName, args) {\n  const { _ceDefinition: { lifecycleCallbacks, observedAttributes } } = element;\n\n  const callback = lifecycleCallbacks[callbackName];\n  if (callback === null) {\n    return;\n  }\n\n  if (callbackName === \"attributeChangedCallback\") {\n    const attributeName = args[0];\n    if (!observedAttributes.includes(attributeName)) {\n      return;\n    }\n  }\n\n  element._ceReactionQueue.push({\n    type: \"callback\",\n    callback,\n    args\n  });\n\n  enqueueElementOnAppropriateElementQueue(element);\n}\n\n// https://html.spec.whatwg.org/#enqueue-a-custom-element-upgrade-reaction\nfunction enqueueCEUpgradeReaction(element, definition) {\n  element._ceReactionQueue.push({\n    type: \"upgrade\",\n    definition\n  });\n\n  enqueueElementOnAppropriateElementQueue(element);\n}\n\nmodule.exports = {\n  customElementReactionsStack,\n\n  ceReactionsPreSteps,\n  ceReactionsPostSteps,\n\n  isValidCustomElementName,\n\n  upgradeElement,\n  tryUpgradeElement,\n\n  lookupCEDefinition,\n  enqueueCEUpgradeReaction,\n  enqueueCECallbackReaction,\n  invokeCEReactions\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"composed\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'composed' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nmodule.exports = Object.freeze({\n  DOCUMENT_POSITION_DISCONNECTED: 1,\n  DOCUMENT_POSITION_PRECEDING: 2,\n  DOCUMENT_POSITION_FOLLOWING: 4,\n  DOCUMENT_POSITION_CONTAINS: 8,\n  DOCUMENT_POSITION_CONTAINED_BY: 16,\n  DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32\n});\n","\"use strict\";\n\n// https://infra.spec.whatwg.org/#ascii-whitespace\nconst asciiWhitespaceRe = /^[\\t\\n\\f\\r ]$/;\nexports.asciiWhitespaceRe = asciiWhitespaceRe;\n\n// https://infra.spec.whatwg.org/#ascii-lowercase\nexports.asciiLowercase = s => {\n  if (!/[^\\x00-\\x7f]/.test(s)) {\n    return s.toLowerCase();\n  }\n  const len = s.length;\n  const out = new Array(len);\n  for (let i = 0; i < len; i++) {\n    const code = s.charCodeAt(i);\n    // If the character is between 'A' (65) and 'Z' (90), convert using bitwise OR with 32\n    out[i] = code >= 65 && code <= 90 ? String.fromCharCode(code | 32) : s[i];\n  }\n  return out.join(\"\");\n};\n\n// https://infra.spec.whatwg.org/#ascii-uppercase\nexports.asciiUppercase = s => {\n  if (!/[^\\x00-\\x7f]/.test(s)) {\n    return s.toUpperCase();\n  }\n  const len = s.length;\n  const out = new Array(len);\n  for (let i = 0; i < len; i++) {\n    const code = s.charCodeAt(i);\n    // If the character is between 'a' (97) and 'z' (122), convert using bitwise AND with ~32\n    out[i] = code >= 97 && code <= 122 ? String.fromCharCode(code & ~32) : s[i];\n  }\n  return out.join(\"\");\n};\n\n// https://infra.spec.whatwg.org/#strip-newlines\nexports.stripNewlines = s => {\n  return s.replace(/[\\n\\r]+/g, \"\");\n};\n\n// https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\nexports.stripLeadingAndTrailingASCIIWhitespace = s => {\n  return s.replace(/^[ \\t\\n\\f\\r]+/, \"\").replace(/[ \\t\\n\\f\\r]+$/, \"\");\n};\n\n// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\nexports.stripAndCollapseASCIIWhitespace = s => {\n  return s.replace(/[ \\t\\n\\f\\r]+/g, \" \").replace(/^[ \\t\\n\\f\\r]+/, \"\").replace(/[ \\t\\n\\f\\r]+$/, \"\");\n};\n\n// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-simple-colour\nexports.isValidSimpleColor = s => {\n  return /^#[a-fA-F\\d]{6}$/.test(s);\n};\n\n// https://infra.spec.whatwg.org/#ascii-case-insensitive\nexports.asciiCaseInsensitiveMatch = (a, b) => {\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (let i = 0; i < a.length; ++i) {\n    if ((a.charCodeAt(i) | 32) !== (b.charCodeAt(i) | 32)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-integers\n// Error is represented as null.\nconst parseInteger = exports.parseInteger = input => {\n  // The implementation here is slightly different from the spec's. We want to use parseInt(), but parseInt() trims\n  // Unicode whitespace in addition to just ASCII ones, so we make sure that the trimmed prefix contains only ASCII\n  // whitespace ourselves.\n  const numWhitespace = input.length - input.trimStart().length;\n  if (/[^\\t\\n\\f\\r ]/.test(input.slice(0, numWhitespace))) {\n    return null;\n  }\n  // We don't allow hexadecimal numbers here.\n  // eslint-disable-next-line radix\n  const value = parseInt(input, 10);\n  if (Number.isNaN(value)) {\n    return null;\n  }\n  // parseInt() returns -0 for \"-0\". Normalize that here.\n  return value === 0 ? 0 : value;\n};\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-non-negative-integers\n// Error is represented as null.\nexports.parseNonNegativeInteger = input => {\n  const value = parseInteger(input);\n  if (value === null) {\n    return null;\n  }\n  if (value < 0) {\n    return null;\n  }\n  return value;\n};\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-floating-point-number\nconst floatingPointNumRe = /^-?(?:\\d+|\\d*\\.\\d+)(?:[eE][-+]?\\d+)?$/;\nexports.isValidFloatingPointNumber = str => floatingPointNumRe.test(str);\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#rules-for-parsing-floating-point-number-values\n// Error is represented as null.\nexports.parseFloatingPointNumber = str => {\n  // The implementation here is slightly different from the spec's. We need to use parseFloat() in order to retain\n  // accuracy, but parseFloat() trims Unicode whitespace in addition to just ASCII ones, so we make sure that the\n  // trimmed prefix contains only ASCII whitespace ourselves.\n  const numWhitespace = str.length - str.trimStart().length;\n  if (/[^\\t\\n\\f\\r ]/.test(str.slice(0, numWhitespace))) {\n    return null;\n  }\n  const parsed = parseFloat(str);\n  return isFinite(parsed) ? parsed : null;\n};\n\n// https://infra.spec.whatwg.org/#split-on-ascii-whitespace\nexports.splitOnASCIIWhitespace = str => {\n  let position = 0;\n  const tokens = [];\n  while (position < str.length && asciiWhitespaceRe.test(str[position])) {\n    position++;\n  }\n  if (position === str.length) {\n    return tokens;\n  }\n  while (position < str.length) {\n    const start = position;\n    while (position < str.length && !asciiWhitespaceRe.test(str[position])) {\n      position++;\n    }\n    tokens.push(str.slice(start, position));\n    while (position < str.length && asciiWhitespaceRe.test(str[position])) {\n      position++;\n    }\n  }\n  return tokens;\n};\n\n// https://infra.spec.whatwg.org/#split-on-commas\nexports.splitOnCommas = str => {\n  let position = 0;\n  const tokens = [];\n  while (position < str.length) {\n    let start = position;\n    while (position < str.length && str[position] !== \",\") {\n      position++;\n    }\n    let end = position;\n    while (start < str.length && asciiWhitespaceRe.test(str[start])) {\n      start++;\n    }\n    while (end > start && asciiWhitespaceRe.test(str[end - 1])) {\n      end--;\n    }\n    tokens.push(str.slice(start, end));\n    if (position < str.length) {\n      position++;\n    }\n  }\n  return tokens;\n};\n","\"use strict\";\nconst DOMException = require(\"../../generated/idl/DOMException\");\n\nconst { HTML_NS } = require(\"./helpers/namespaces\");\nconst { asciiLowercase } = require(\"./helpers/strings\");\nconst { queueAttributeMutationRecord } = require(\"./helpers/mutation-observers\");\nconst { enqueueCECallbackReaction } = require(\"./helpers/custom-elements\");\n\n// The following three are for https://dom.spec.whatwg.org/#concept-element-attribute-has. We don't just have a\n// predicate tester since removing that kind of flexibility gives us the potential for better future optimizations.\n\n/* eslint-disable no-restricted-properties */\n\nexports.hasAttribute = function (element, A) {\n  return element._attributeList.includes(A);\n};\n\nexports.hasAttributeByName = function (element, name) {\n  return element._attributesByNameMap.has(name);\n};\n\nexports.hasAttributeByNameNS = function (element, namespace, localName) {\n  return element._attributeList.some(attribute => {\n    return attribute._localName === localName && attribute._namespace === namespace;\n  });\n};\n\n// https://dom.spec.whatwg.org/#concept-element-attributes-change\nexports.changeAttribute = (element, attribute, value) => {\n  const { _localName, _namespace, _value } = attribute;\n\n  queueAttributeMutationRecord(element, _localName, _namespace, _value);\n\n  if (element._ceState === \"custom\") {\n    enqueueCECallbackReaction(element, \"attributeChangedCallback\", [\n      _localName,\n      _value,\n      value,\n      _namespace\n    ]);\n  }\n\n  attribute._value = value;\n\n  // Run jsdom hooks; roughly correspond to spec's \"An attribute is set and an attribute is changed.\"\n  element._attrModified(attribute._qualifiedName, value, _value);\n};\n\n// https://dom.spec.whatwg.org/#concept-element-attributes-append\nexports.appendAttribute = function (element, attribute) {\n  const { _localName, _namespace, _value } = attribute;\n  queueAttributeMutationRecord(element, _localName, _namespace, null);\n\n  if (element._ceState === \"custom\") {\n    enqueueCECallbackReaction(element, \"attributeChangedCallback\", [\n      _localName,\n      null,\n      _value,\n      _namespace\n    ]);\n  }\n\n  const attributeList = element._attributeList;\n\n  attributeList.push(attribute);\n  attribute._element = element;\n\n  // Sync name cache\n  const name = attribute._qualifiedName;\n  const cache = element._attributesByNameMap;\n  let entry = cache.get(name);\n  if (!entry) {\n    entry = [];\n    cache.set(name, entry);\n  }\n  entry.push(attribute);\n\n  // Run jsdom hooks; roughly correspond to spec's \"An attribute is set and an attribute is added.\"\n  element._attrModified(name, _value, null);\n};\n\nexports.removeAttribute = function (element, attribute) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-remove\n\n  const { _localName, _namespace, _value } = attribute;\n\n  queueAttributeMutationRecord(element, _localName, _namespace, _value);\n\n  if (element._ceState === \"custom\") {\n    enqueueCECallbackReaction(element, \"attributeChangedCallback\", [\n      _localName,\n      _value,\n      null,\n      _namespace\n    ]);\n  }\n\n  const attributeList = element._attributeList;\n\n  for (let i = 0; i < attributeList.length; ++i) {\n    if (attributeList[i] === attribute) {\n      attributeList.splice(i, 1);\n      attribute._element = null;\n\n      // Sync name cache\n      const name = attribute._qualifiedName;\n      const cache = element._attributesByNameMap;\n      const entry = cache.get(name);\n      entry.splice(entry.indexOf(attribute), 1);\n      if (entry.length === 0) {\n        cache.delete(name);\n      }\n\n      // Run jsdom hooks; roughly correspond to spec's \"An attribute is removed.\"\n      element._attrModified(name, null, attribute._value);\n\n      return;\n    }\n  }\n};\n\nexports.replaceAttribute = function (element, oldAttr, newAttr) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-replace\n\n  const { _localName, _namespace, _value } = oldAttr;\n\n  queueAttributeMutationRecord(element, _localName, _namespace, _value);\n\n  if (element._ceState === \"custom\") {\n    enqueueCECallbackReaction(element, \"attributeChangedCallback\", [\n      _localName,\n      _value,\n      newAttr._value,\n      _namespace\n    ]);\n  }\n\n  const attributeList = element._attributeList;\n\n  for (let i = 0; i < attributeList.length; ++i) {\n    if (attributeList[i] === oldAttr) {\n      attributeList.splice(i, 1, newAttr);\n      oldAttr._element = null;\n      newAttr._element = element;\n\n      // Sync name cache\n      const name = newAttr._qualifiedName;\n      const cache = element._attributesByNameMap;\n      let entry = cache.get(name);\n      if (!entry) {\n        entry = [];\n        cache.set(name, entry);\n      }\n      entry.splice(entry.indexOf(oldAttr), 1, newAttr);\n\n      // Run jsdom hooks; roughly correspond to spec's \"An attribute is set and an attribute is changed.\"\n      element._attrModified(name, newAttr._value, oldAttr._value);\n\n      return;\n    }\n  }\n};\n\nexports.getAttributeByName = function (element, name) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-get-by-name\n\n  if (element._namespaceURI === HTML_NS &&\n      element._ownerDocument._parsingMode === \"html\") {\n    name = asciiLowercase(name);\n  }\n\n  const cache = element._attributesByNameMap;\n  const entry = cache.get(name);\n  if (!entry) {\n    return null;\n  }\n\n  return entry[0];\n};\n\nexports.getAttributeByNameNS = function (element, namespace, localName) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace\n\n  if (namespace === \"\") {\n    namespace = null;\n  }\n\n  const attributeList = element._attributeList;\n  for (let i = 0; i < attributeList.length; ++i) {\n    const attr = attributeList[i];\n    if (attr._namespace === namespace && attr._localName === localName) {\n      return attr;\n    }\n  }\n\n  return null;\n};\n\n// Both of the following functions implement https://dom.spec.whatwg.org/#concept-element-attributes-get-value.\n// Separated them into two to keep symmetry with other functions.\nexports.getAttributeValue = function (element, localName) {\n  const attr = exports.getAttributeByNameNS(element, null, localName);\n\n  if (!attr) {\n    return \"\";\n  }\n\n  return attr._value;\n};\n\nexports.getAttributeValueNS = function (element, namespace, localName) {\n  const attr = exports.getAttributeByNameNS(element, namespace, localName);\n\n  if (!attr) {\n    return \"\";\n  }\n\n  return attr._value;\n};\n\nexports.setAttribute = function (element, attr) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-set\n\n  if (attr._element !== null && attr._element !== element) {\n    throw DOMException.create(element._globalObject, [\"The attribute is in use.\", \"InUseAttributeError\"]);\n  }\n\n  const oldAttr = exports.getAttributeByNameNS(element, attr._namespace, attr._localName);\n  if (oldAttr === attr) {\n    return attr;\n  }\n\n  if (oldAttr !== null) {\n    exports.replaceAttribute(element, oldAttr, attr);\n  } else {\n    exports.appendAttribute(element, attr);\n  }\n\n  return oldAttr;\n};\n\nexports.setAttributeValue = function (element, localName, value, prefix, namespace) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-set-value\n\n  if (prefix === undefined) {\n    prefix = null;\n  }\n  if (namespace === undefined) {\n    namespace = null;\n  }\n\n  const attribute = exports.getAttributeByNameNS(element, namespace, localName);\n  if (attribute === null) {\n    const newAttribute = element._ownerDocument._createAttribute({\n      namespace,\n      namespacePrefix: prefix,\n      localName,\n      value\n    });\n    exports.appendAttribute(element, newAttribute);\n\n    return;\n  }\n\n  exports.changeAttribute(element, attribute, value);\n};\n\n// https://dom.spec.whatwg.org/#set-an-existing-attribute-value\nexports.setAnExistingAttributeValue = (attribute, value) => {\n  const element = attribute._element;\n  if (element === null) {\n    attribute._value = value;\n  } else {\n    exports.changeAttribute(element, attribute, value);\n  }\n};\n\nexports.removeAttributeByName = function (element, name) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-remove-by-name\n\n  const attr = exports.getAttributeByName(element, name);\n\n  if (attr !== null) {\n    exports.removeAttribute(element, attr);\n  }\n\n  return attr;\n};\n\nexports.removeAttributeByNameNS = function (element, namespace, localName) {\n  // https://dom.spec.whatwg.org/#concept-element-attributes-remove-by-namespace\n\n  const attr = exports.getAttributeByNameNS(element, namespace, localName);\n\n  if (attr !== null) {\n    exports.removeAttribute(element, attr);\n  }\n\n  return attr;\n};\n\nexports.attributeNames = function (element) {\n  // Needed by https://dom.spec.whatwg.org/#dom-element-getattributenames\n\n  return element._attributeList.map(a => a._qualifiedName);\n};\n\nexports.hasAttributes = function (element) {\n  // Needed by https://dom.spec.whatwg.org/#dom-element-hasattributes\n\n  return element._attributeList.length > 0;\n};\n","\"use strict\";\n\n// https://infra.spec.whatwg.org/#sets\n//\n// Only use this class if a Set cannot be used, e.g. when \"replace\" operation is needed, since there's no way to replace\n// an element while keep the relative order using a Set, only remove and then add something at the end.\n\nmodule.exports = class OrderedSet {\n  constructor() {\n    this._items = [];\n  }\n\n  append(item) {\n    if (!this.contains(item)) {\n      this._items.push(item);\n    }\n  }\n\n  prepend(item) {\n    if (!this.contains(item)) {\n      this._items.unshift(item);\n    }\n  }\n\n  replace(item, replacement) {\n    let seen = false;\n    for (let i = 0; i < this._items.length;) {\n      const isInstance = this._items[i] === item || this._items[i] === replacement;\n      if (seen && isInstance) {\n        this._items.splice(i, 1);\n      } else {\n        if (isInstance) {\n          this._items[i] = replacement;\n          seen = true;\n        }\n        i++;\n      }\n    }\n  }\n\n  remove(...items) {\n    this.removePredicate(item => items.includes(item));\n  }\n\n  removePredicate(predicate) {\n    for (let i = 0; i < this._items.length;) {\n      if (predicate(this._items[i])) {\n        this._items.splice(i, 1);\n      } else {\n        i++;\n      }\n    }\n  }\n\n  empty() {\n    this._items.length = 0;\n  }\n\n  contains(item) {\n    return this._items.includes(item);\n  }\n\n  get size() {\n    return this._items.length;\n  }\n\n  isEmpty() {\n    return this._items.length === 0;\n  }\n\n  // Useful for other parts of jsdom\n\n  [Symbol.iterator]() {\n    return this._items[Symbol.iterator]();\n  }\n\n  keys() {\n    return this._items.keys();\n  }\n\n  get(index) {\n    return this._items[index];\n  }\n\n  some(func) {\n    return this._items.some(func);\n  }\n\n  // https://dom.spec.whatwg.org/#concept-ordered-set-parser\n  static parse(input) {\n    const tokens = new OrderedSet();\n    for (const token of input.split(/[\\t\\n\\f\\r ]+/)) {\n      if (token) {\n        tokens.append(token);\n      }\n    }\n    return tokens;\n  }\n\n  // https://dom.spec.whatwg.org/#concept-ordered-set-serializer\n  serialize() {\n    return this._items.join(\" \");\n  }\n};\n","\"use strict\";\n\nexports.name = potentialName => {\n  return /^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/u.test(potentialName);\n};\n\nexports.qname = potentialQname => {\n  return /(?:^[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$)|(?:^[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}][A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u{10000}-\\u{EFFFF}\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$)/u.test(potentialQname);\n};\n","\"use strict\";\nconst xnv = require(\"xml-name-validator\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { XML_NS, XMLNS_NS } = require(\"../helpers/namespaces\");\n\n// https://dom.spec.whatwg.org/#validate\n\nexports.name = (globalObject, name) => {\n  if (!xnv.name(name)) {\n    throw DOMException.create(globalObject, [`\"${name}\" did not match the Name production`, \"InvalidCharacterError\"]);\n  }\n};\n\nexports.qname = (globalObject, qname) => {\n  if (!xnv.qname(qname)) {\n    throw DOMException.create(globalObject, [`\"${qname}\" did not match the QName production`, \"InvalidCharacterError\"]);\n  }\n};\n\nexports.validateAndExtract = (globalObject, namespace, qualifiedName) => {\n  if (namespace === \"\") {\n    namespace = null;\n  }\n\n  exports.qname(globalObject, qualifiedName);\n\n  let prefix = null;\n  let localName = qualifiedName;\n\n  const colonIndex = qualifiedName.indexOf(\":\");\n  if (colonIndex !== -1) {\n    prefix = qualifiedName.substring(0, colonIndex);\n    localName = qualifiedName.substring(colonIndex + 1);\n  }\n\n  if (prefix !== null && namespace === null) {\n    throw DOMException.create(globalObject, [\n      \"A namespace was given but a prefix was also extracted from the qualifiedName\",\n      \"NamespaceError\"\n    ]);\n  }\n\n  if (prefix === \"xml\" && namespace !== XML_NS) {\n    throw DOMException.create(globalObject, [\n      \"A prefix of \\\"xml\\\" was given but the namespace was not the XML namespace\",\n      \"NamespaceError\"\n    ]);\n  }\n\n  if ((qualifiedName === \"xmlns\" || prefix === \"xmlns\") && namespace !== XMLNS_NS) {\n    throw DOMException.create(globalObject, [\n      \"A prefix or qualifiedName of \\\"xmlns\\\" was given but the namespace was not the XMLNS namespace\",\n      \"NamespaceError\"\n    ]);\n  }\n\n  if (namespace === XMLNS_NS && qualifiedName !== \"xmlns\" && prefix !== \"xmlns\") {\n    throw DOMException.create(globalObject, [\n      \"The XMLNS namespace was given but neither the prefix nor qualifiedName was \\\"xmlns\\\"\",\n      \"NamespaceError\"\n    ]);\n  }\n\n  return { namespace, prefix, localName };\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst interfaces = require(\"../interfaces\");\n\nconst { implForWrapper } = require(\"../../../generated/idl/utils\");\n\nconst { HTML_NS, SVG_NS } = require(\"./namespaces\");\nconst { domSymbolTree } = require(\"./internal-constants\");\nconst { validateAndExtract } = require(\"./validate-names\");\nconst reportException = require(\"./runtime-script-errors\");\nconst {\n  isValidCustomElementName, upgradeElement, lookupCEDefinition, enqueueCEUpgradeReaction\n} = require(\"./custom-elements\");\n\nconst INTERFACE_TAG_MAPPING = {\n  __proto__: null,\n  // https://html.spec.whatwg.org/multipage/dom.html#elements-in-the-dom%3Aelement-interface\n  // https://html.spec.whatwg.org/multipage/indices.html#elements-3\n  [HTML_NS]: {\n    __proto__: null,\n    HTMLElement: [\n      \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"cite\", \"code\", \"dd\", \"dfn\", \"dt\", \"em\", \"figcaption\",\n      \"figure\", \"footer\", \"header\", \"hgroup\", \"i\", \"kbd\", \"main\", \"mark\", \"nav\", \"noscript\", \"rp\", \"rt\", \"ruby\", \"s\",\n      \"samp\", \"section\", \"small\", \"strong\", \"sub\", \"summary\", \"sup\", \"u\", \"var\", \"wbr\"\n    ],\n    HTMLAnchorElement: [\"a\"],\n    HTMLAreaElement: [\"area\"],\n    HTMLAudioElement: [\"audio\"],\n    HTMLBaseElement: [\"base\"],\n    HTMLBodyElement: [\"body\"],\n    HTMLBRElement: [\"br\"],\n    HTMLButtonElement: [\"button\"],\n    HTMLCanvasElement: [\"canvas\"],\n    HTMLDataElement: [\"data\"],\n    HTMLDataListElement: [\"datalist\"],\n    HTMLDetailsElement: [\"details\"],\n    HTMLDialogElement: [\"dialog\"],\n    HTMLDirectoryElement: [\"dir\"],\n    HTMLDivElement: [\"div\"],\n    HTMLDListElement: [\"dl\"],\n    HTMLEmbedElement: [\"embed\"],\n    HTMLFieldSetElement: [\"fieldset\"],\n    HTMLFontElement: [\"font\"],\n    HTMLFormElement: [\"form\"],\n    HTMLFrameElement: [\"frame\"],\n    HTMLFrameSetElement: [\"frameset\"],\n    HTMLHeadingElement: [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"],\n    HTMLHeadElement: [\"head\"],\n    HTMLHRElement: [\"hr\"],\n    HTMLHtmlElement: [\"html\"],\n    HTMLIFrameElement: [\"iframe\"],\n    HTMLImageElement: [\"img\"],\n    HTMLInputElement: [\"input\"],\n    HTMLLabelElement: [\"label\"],\n    HTMLLegendElement: [\"legend\"],\n    HTMLLIElement: [\"li\"],\n    HTMLLinkElement: [\"link\"],\n    HTMLMapElement: [\"map\"],\n    HTMLMarqueeElement: [\"marquee\"],\n    HTMLMediaElement: [],\n    HTMLMenuElement: [\"menu\"],\n    HTMLMetaElement: [\"meta\"],\n    HTMLMeterElement: [\"meter\"],\n    HTMLModElement: [\"del\", \"ins\"],\n    HTMLObjectElement: [\"object\"],\n    HTMLOListElement: [\"ol\"],\n    HTMLOptGroupElement: [\"optgroup\"],\n    HTMLOptionElement: [\"option\"],\n    HTMLOutputElement: [\"output\"],\n    HTMLParagraphElement: [\"p\"],\n    HTMLParamElement: [\"param\"],\n    HTMLPictureElement: [\"picture\"],\n    HTMLPreElement: [\"listing\", \"pre\", \"xmp\"],\n    HTMLProgressElement: [\"progress\"],\n    HTMLQuoteElement: [\"blockquote\", \"q\"],\n    HTMLScriptElement: [\"script\"],\n    HTMLSelectElement: [\"select\"],\n    HTMLSlotElement: [\"slot\"],\n    HTMLSourceElement: [\"source\"],\n    HTMLSpanElement: [\"span\"],\n    HTMLStyleElement: [\"style\"],\n    HTMLTableCaptionElement: [\"caption\"],\n    HTMLTableCellElement: [\"th\", \"td\"],\n    HTMLTableColElement: [\"col\", \"colgroup\"],\n    HTMLTableElement: [\"table\"],\n    HTMLTimeElement: [\"time\"],\n    HTMLTitleElement: [\"title\"],\n    HTMLTableRowElement: [\"tr\"],\n    HTMLTableSectionElement: [\"thead\", \"tbody\", \"tfoot\"],\n    HTMLTemplateElement: [\"template\"],\n    HTMLTextAreaElement: [\"textarea\"],\n    HTMLTrackElement: [\"track\"],\n    HTMLUListElement: [\"ul\"],\n    HTMLUnknownElement: [],\n    HTMLVideoElement: [\"video\"]\n  },\n  [SVG_NS]: {\n    __proto__: null,\n    SVGElement: [],\n    SVGGraphicsElement: [],\n    SVGDefsElement: [\"defs\"],\n    SVGDescElement: [\"desc\"],\n    SVGGElement: [\"g\"],\n    SVGMetadataElement: [\"metadata\"],\n    SVGSVGElement: [\"svg\"],\n    SVGSwitchElement: [\"switch\"],\n    SVGSymbolElement: [\"symbol\"],\n    SVGTitleElement: [\"title\"]\n  }\n};\n\nconst TAG_INTERFACE_LOOKUP = Object.create(null);\n\nfor (const namespace of [HTML_NS, SVG_NS]) {\n  TAG_INTERFACE_LOOKUP[namespace] = Object.create(null);\n\n  const interfaceNames = Object.keys(INTERFACE_TAG_MAPPING[namespace]);\n  for (const interfaceName of interfaceNames) {\n    const tagNames = INTERFACE_TAG_MAPPING[namespace][interfaceName];\n\n    for (const tagName of tagNames) {\n      TAG_INTERFACE_LOOKUP[namespace][tagName] = interfaceName;\n    }\n  }\n}\n\nconst UNKNOWN_HTML_ELEMENTS_NAMES = [\"applet\", \"bgsound\", \"blink\", \"isindex\", \"keygen\", \"multicol\", \"nextid\", \"spacer\"];\nconst HTML_ELEMENTS_NAMES = [\n  \"acronym\", \"basefont\", \"big\", \"center\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\",\n  \"strike\", \"tt\"\n];\n\n// https://html.spec.whatwg.org/multipage/dom.html#elements-in-the-dom:element-interface\nfunction getHTMLElementInterface(name) {\n  if (UNKNOWN_HTML_ELEMENTS_NAMES.includes(name)) {\n    return interfaces.getInterfaceWrapper(\"HTMLUnknownElement\");\n  }\n\n  if (HTML_ELEMENTS_NAMES.includes(name)) {\n    return interfaces.getInterfaceWrapper(\"HTMLElement\");\n  }\n\n  const specDefinedInterface = TAG_INTERFACE_LOOKUP[HTML_NS][name];\n  if (specDefinedInterface !== undefined) {\n    return interfaces.getInterfaceWrapper(specDefinedInterface);\n  }\n\n  if (isValidCustomElementName(name)) {\n    return interfaces.getInterfaceWrapper(\"HTMLElement\");\n  }\n\n  return interfaces.getInterfaceWrapper(\"HTMLUnknownElement\");\n}\n\n// https://svgwg.org/svg2-draft/types.html#ElementsInTheSVGDOM\nfunction getSVGInterface(name) {\n  const specDefinedInterface = TAG_INTERFACE_LOOKUP[SVG_NS][name];\n  if (specDefinedInterface !== undefined) {\n    return interfaces.getInterfaceWrapper(specDefinedInterface);\n  }\n\n  return interfaces.getInterfaceWrapper(\"SVGElement\");\n}\n\n// Returns the list of valid tag names that can bo associated with a element given its namespace and name.\nfunction getValidTagNames(namespace, name) {\n  if (INTERFACE_TAG_MAPPING[namespace] && INTERFACE_TAG_MAPPING[namespace][name]) {\n    return INTERFACE_TAG_MAPPING[namespace][name];\n  }\n\n  return [];\n}\n\n// https://dom.spec.whatwg.org/#concept-create-element\nfunction createElement(\n  document,\n  localName,\n  namespace,\n  prefix = null,\n  isValue = null,\n  synchronousCE = false\n) {\n  let result = null;\n\n  const { _globalObject } = document;\n  const definition = lookupCEDefinition(document, namespace, localName, isValue);\n\n  if (definition !== null && definition.name !== localName) {\n    const elementInterface = getHTMLElementInterface(localName);\n\n    result = elementInterface.createImpl(_globalObject, [], {\n      ownerDocument: document,\n      localName,\n      namespace: HTML_NS,\n      prefix,\n      ceState: \"undefined\",\n      ceDefinition: null,\n      isValue\n    });\n\n    if (synchronousCE) {\n      upgradeElement(definition, result);\n    } else {\n      enqueueCEUpgradeReaction(result, definition);\n    }\n  } else if (definition !== null) {\n    if (synchronousCE) {\n      try {\n        const C = definition.constructor;\n\n        const resultWrapper = C.construct();\n        result = implForWrapper(resultWrapper);\n\n        if (!result._ceState || !result._ceDefinition || result._namespaceURI !== HTML_NS) {\n          throw new TypeError(\"Internal error: Invalid custom element.\");\n        }\n\n        if (result._attributeList.length !== 0) {\n          throw DOMException.create(_globalObject, [\"Unexpected attributes.\", \"NotSupportedError\"]);\n        }\n        if (domSymbolTree.hasChildren(result)) {\n          throw DOMException.create(_globalObject, [\"Unexpected child nodes.\", \"NotSupportedError\"]);\n        }\n        if (domSymbolTree.parent(result)) {\n          throw DOMException.create(_globalObject, [\"Unexpected element parent.\", \"NotSupportedError\"]);\n        }\n        if (result._ownerDocument !== document) {\n          throw DOMException.create(_globalObject, [\"Unexpected element owner document.\", \"NotSupportedError\"]);\n        }\n        if (result._namespaceURI !== namespace) {\n          throw DOMException.create(_globalObject, [\"Unexpected element namespace URI.\", \"NotSupportedError\"]);\n        }\n        if (result._localName !== localName) {\n          throw DOMException.create(_globalObject, [\"Unexpected element local name.\", \"NotSupportedError\"]);\n        }\n\n        result._prefix = prefix;\n        result._isValue = isValue;\n      } catch (error) {\n        reportException(document._defaultView, error);\n\n        const interfaceWrapper = interfaces.getInterfaceWrapper(\"HTMLUnknownElement\");\n        result = interfaceWrapper.createImpl(_globalObject, [], {\n          ownerDocument: document,\n          localName,\n          namespace: HTML_NS,\n          prefix,\n          ceState: \"failed\",\n          ceDefinition: null,\n          isValue: null\n        });\n      }\n    } else {\n      const interfaceWrapper = interfaces.getInterfaceWrapper(\"HTMLElement\");\n      result = interfaceWrapper.createImpl(_globalObject, [], {\n        ownerDocument: document,\n        localName,\n        namespace: HTML_NS,\n        prefix,\n        ceState: \"undefined\",\n        ceDefinition: null,\n        isValue: null\n      });\n\n      enqueueCEUpgradeReaction(result, definition);\n    }\n  } else {\n    let elementInterface;\n\n    switch (namespace) {\n      case HTML_NS:\n        elementInterface = getHTMLElementInterface(localName);\n        break;\n\n      case SVG_NS:\n        elementInterface = getSVGInterface(localName);\n        break;\n\n      default:\n        elementInterface = interfaces.getInterfaceWrapper(\"Element\");\n        break;\n    }\n\n    result = elementInterface.createImpl(_globalObject, [], {\n      ownerDocument: document,\n      localName,\n      namespace,\n      prefix,\n      ceState: \"uncustomized\",\n      ceDefinition: null,\n      isValue\n    });\n\n    if (namespace === HTML_NS && (isValidCustomElementName(localName) || isValue !== null)) {\n      result._ceState = \"undefined\";\n    }\n  }\n\n  return result;\n}\n\n// https://dom.spec.whatwg.org/#internal-createelementns-steps\nfunction internalCreateElementNSSteps(document, namespace, qualifiedName, options) {\n  const extracted = validateAndExtract(document._globalObject, namespace, qualifiedName);\n\n  let isValue = null;\n  if (options && options.is !== undefined) {\n    isValue = options.is;\n  }\n\n  return createElement(\n    document,\n    extracted.localName,\n    extracted.namespace,\n    extracted.prefix,\n    isValue,\n    true\n  );\n}\n\nmodule.exports = {\n  createElement,\n  internalCreateElementNSSteps,\n\n  getValidTagNames,\n  getHTMLElementInterface\n};\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst { HTML_NS } = require(\"../helpers/namespaces\");\n\nexports.implementation = class HTMLCollectionImpl {\n  constructor(globalObject, args, privateData) {\n    this._list = [];\n    this._version = -1;\n    this._element = privateData.element;\n    this._query = privateData.query;\n\n    this._globalObject = globalObject;\n\n    this._update();\n  }\n  get length() {\n    this._update();\n    return this._list.length;\n  }\n  item(index) {\n    this._update();\n    return this._list[index] || null;\n  }\n  namedItem(key) {\n    if (key === \"\") {\n      return null;\n    }\n    this._update();\n    for (const element of this._list) {\n      if (element.getAttributeNS(null, \"id\") === key) {\n        return element;\n      }\n      if (element._namespaceURI === HTML_NS) {\n        const name = element.getAttributeNS(null, \"name\");\n        if (name === key) {\n          return element;\n        }\n      }\n    }\n    return null;\n  }\n  _update() {\n    if (this._version < this._element._version) {\n      const snapshot = this._query();\n      for (let i = 0; i < snapshot.length; i++) {\n        this._list[i] = snapshot[i];\n      }\n      this._list.length = snapshot.length;\n      this._version = this._element._version;\n    }\n  }\n  get [idlUtils.supportedPropertyIndices]() {\n    this._update();\n    return this._list.keys();\n  }\n  get [idlUtils.supportedPropertyNames]() {\n    this._update();\n    const result = new Set();\n    for (const element of this._list) {\n      const id = element.getAttributeNS(null, \"id\");\n      if (id) {\n        result.add(id);\n      }\n      if (element._namespaceURI === HTML_NS) {\n        const name = element.getAttributeNS(null, \"name\");\n        if (name) {\n          result.add(name);\n        }\n      }\n    }\n    return result;\n  }\n\n  // Inherit some useful functions from Array.\n  [Symbol.iterator]() {\n    this._update();\n    return this._list[Symbol.iterator]();\n  }\n  entries() {\n    this._update();\n    return this._list.entries();\n  }\n  filter(...args) {\n    this._update();\n    return this._list.filter(...args);\n  }\n  map(...args) {\n    this._update();\n    return this._list.map(...args);\n  }\n  indexOf(...args) {\n    this._update();\n    return this._list.indexOf(...args);\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"HTMLCollection\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLCollection'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLCollection\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLCollection {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of HTMLCollection.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'HTMLCollection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'HTMLCollection': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n    }\n\n    namedItem(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'namedItem' called on an object that is not a valid instance of HTMLCollection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'namedItem' on 'HTMLCollection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'namedItem' on 'HTMLCollection': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].namedItem(...args));\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of HTMLCollection.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(HTMLCollection.prototype, {\n    item: { enumerable: true },\n    namedItem: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLCollection\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLCollection;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLCollection\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n      if (!(key in target)) {\n        keys.add(`${key}`);\n      }\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    const namedValue = target[implSymbol].namedItem(P);\n\n    if (namedValue !== null && !(P in target) && !ignoreNamedProps) {\n      return {\n        writable: false,\n        enumerable: false,\n        configurable: true,\n        value: utils.tryWrapperForImpl(namedValue)\n      };\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n    if (!Object.hasOwn(target, P)) {\n      const creating = !(target[implSymbol].namedItem(P) !== null);\n      if (!creating) {\n        return false;\n      }\n    }\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    if (target[implSymbol].namedItem(P) !== null && !(P in target)) {\n      return false;\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLCollection-impl.js\");\n","\"use strict\";\nconst { appendAttribute } = require(\"./attributes\");\nconst NODE_TYPE = require(\"./node-type\");\n\nconst orderedSetParse = require(\"./helpers/ordered-set\").parse;\nconst { createElement } = require(\"./helpers/create-element\");\nconst { HTML_NS, XMLNS_NS } = require(\"./helpers/namespaces\");\nconst { cloningSteps, domSymbolTree } = require(\"./helpers/internal-constants\");\nconst { asciiCaseInsensitiveMatch, asciiLowercase } = require(\"./helpers/strings\");\n\nconst HTMLCollection = require(\"../../generated/idl/HTMLCollection\");\n\nexports.clone = (node, document, cloneChildren) => {\n  if (document === undefined) {\n    document = node._ownerDocument;\n  }\n\n  let copy;\n  switch (node.nodeType) {\n    case NODE_TYPE.DOCUMENT_NODE:\n      // Can't use a simple `Document.createImpl` because of circular dependency issues :-/\n      copy = node._cloneDocument();\n      break;\n\n    case NODE_TYPE.DOCUMENT_TYPE_NODE:\n      copy = document.implementation.createDocumentType(node.name, node.publicId, node.systemId);\n      break;\n\n    case NODE_TYPE.ELEMENT_NODE:\n      copy = createElement(\n        document,\n        node._localName,\n        node._namespaceURI,\n        node._prefix,\n        node._isValue,\n        false\n      );\n\n      for (const attribute of node._attributeList) {\n        appendAttribute(copy, exports.clone(attribute, document));\n      }\n      break;\n\n    case NODE_TYPE.ATTRIBUTE_NODE:\n      copy = document._createAttribute({\n        namespace: node._namespace,\n        namespacePrefix: node._namespacePrefix,\n        localName: node._localName,\n        value: node._value\n      });\n      break;\n\n    case NODE_TYPE.TEXT_NODE:\n      copy = document.createTextNode(node._data);\n      break;\n\n    case NODE_TYPE.CDATA_SECTION_NODE:\n      copy = document.createCDATASection(node._data);\n      break;\n\n    case NODE_TYPE.COMMENT_NODE:\n      copy = document.createComment(node._data);\n      break;\n\n    case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n      copy = document.createProcessingInstruction(node.target, node._data);\n      break;\n\n    case NODE_TYPE.DOCUMENT_FRAGMENT_NODE:\n      copy = document.createDocumentFragment();\n      break;\n  }\n\n  if (node[cloningSteps]) {\n    node[cloningSteps](copy, node, document, cloneChildren);\n  }\n\n  if (cloneChildren) {\n    for (const child of domSymbolTree.childrenIterator(node)) {\n      const childCopy = exports.clone(child, document, true);\n      copy._append(childCopy);\n    }\n  }\n\n  return copy;\n};\n\n// For the following, memoization is not applied here since the memoized results are stored on `this`.\n\nexports.listOfElementsWithClassNames = (classNames, root) => {\n  // https://dom.spec.whatwg.org/#concept-getElementsByClassName\n\n  const classes = orderedSetParse(classNames);\n\n  if (classes.size === 0) {\n    return HTMLCollection.createImpl(root._globalObject, [], { element: root, query: () => [] });\n  }\n\n  return HTMLCollection.createImpl(root._globalObject, [], {\n    element: root,\n    query: () => {\n      const isQuirksMode = root._ownerDocument.compatMode === \"BackCompat\";\n\n      return domSymbolTree.treeToArray(root, { filter(node) {\n        if (node.nodeType !== NODE_TYPE.ELEMENT_NODE || node === root) {\n          return false;\n        }\n\n        const { classList } = node;\n        if (isQuirksMode) {\n          for (const className of classes) {\n            if (!classList.tokenSet.some(cur => asciiCaseInsensitiveMatch(cur, className))) {\n              return false;\n            }\n          }\n        } else {\n          for (const className of classes) {\n            if (!classList.tokenSet.contains(className)) {\n              return false;\n            }\n          }\n        }\n\n        return true;\n      } });\n    }\n  });\n};\n\nexports.listOfElementsWithQualifiedName = (qualifiedName, root) => {\n  // https://dom.spec.whatwg.org/#concept-getelementsbytagname\n\n  if (qualifiedName === \"*\") {\n    return HTMLCollection.createImpl(root._globalObject, [], {\n      element: root,\n      query: () => domSymbolTree.treeToArray(root, {\n        filter: node => node.nodeType === NODE_TYPE.ELEMENT_NODE && node !== root\n      })\n    });\n  }\n\n  if (root._ownerDocument._parsingMode === \"html\") {\n    const lowerQualifiedName = asciiLowercase(qualifiedName);\n\n    return HTMLCollection.createImpl(root._globalObject, [], {\n      element: root,\n      query: () => domSymbolTree.treeToArray(root, {\n        filter(node) {\n          if (node.nodeType !== NODE_TYPE.ELEMENT_NODE || node === root) {\n            return false;\n          }\n\n          if (node._namespaceURI === HTML_NS) {\n            return node._qualifiedName === lowerQualifiedName;\n          }\n\n          return node._qualifiedName === qualifiedName;\n        }\n      })\n    });\n  }\n\n  return HTMLCollection.createImpl(root._globalObject, [], {\n    element: root,\n    query: () => domSymbolTree.treeToArray(root, {\n      filter(node) {\n        if (node.nodeType !== NODE_TYPE.ELEMENT_NODE || node === root) {\n          return false;\n        }\n\n        return node._qualifiedName === qualifiedName;\n      }\n    })\n  });\n};\n\nexports.listOfElementsWithNamespaceAndLocalName = (namespace, localName, root) => {\n  // https://dom.spec.whatwg.org/#concept-getelementsbytagnamens\n\n  if (namespace === \"\") {\n    namespace = null;\n  }\n\n  if (namespace === \"*\" && localName === \"*\") {\n    return HTMLCollection.createImpl(root._globalObject, [], {\n      element: root,\n      query: () => domSymbolTree.treeToArray(root, {\n        filter: node => node.nodeType === NODE_TYPE.ELEMENT_NODE && node !== root\n      })\n    });\n  }\n\n  if (namespace === \"*\") {\n    return HTMLCollection.createImpl(root._globalObject, [], {\n      element: root,\n      query: () => domSymbolTree.treeToArray(root, {\n        filter(node) {\n          if (node.nodeType !== NODE_TYPE.ELEMENT_NODE || node === root) {\n            return false;\n          }\n\n          return node._localName === localName;\n        }\n      })\n    });\n  }\n\n  if (localName === \"*\") {\n    return HTMLCollection.createImpl(root._globalObject, [], {\n      element: root,\n      query: () => domSymbolTree.treeToArray(root, {\n        filter(node) {\n          if (node.nodeType !== NODE_TYPE.ELEMENT_NODE || node === root) {\n            return false;\n          }\n\n          return node._namespaceURI === namespace;\n        }\n      })\n    });\n  }\n\n  return HTMLCollection.createImpl(root._globalObject, [], {\n    element: root,\n    query: () => domSymbolTree.treeToArray(root, {\n      filter(node) {\n        if (node.nodeType !== NODE_TYPE.ELEMENT_NODE || node === root) {\n          return false;\n        }\n\n        return node._localName === localName && node._namespaceURI === namespace;\n      }\n    })\n  });\n};\n\n// https://dom.spec.whatwg.org/#converting-nodes-into-a-node\n// create a fragment (or just return a node for one item)\nexports.convertNodesIntoNode = (document, nodes) => {\n  if (nodes.length === 1) { // note: I'd prefer to check instanceof Node rather than string\n    return typeof nodes[0] === \"string\" ? document.createTextNode(nodes[0]) : nodes[0];\n  }\n  const fragment = document.createDocumentFragment();\n  for (let i = 0; i < nodes.length; i++) {\n    fragment._append(typeof nodes[i] === \"string\" ? document.createTextNode(nodes[i]) : nodes[i]);\n  }\n  return fragment;\n};\n\n// https://dom.spec.whatwg.org/#locate-a-namespace-prefix\nexports.locateNamespacePrefix = (element, namespace) => {\n  if (element._namespaceURI === namespace && element._prefix !== null) {\n    return element._prefix;\n  }\n\n  for (const attribute of element._attributeList) {\n    if (attribute._namespacePrefix === \"xmlns\" && attribute._value === namespace) {\n      return attribute._localName;\n    }\n  }\n\n  if (element.parentElement !== null) {\n    return exports.locateNamespacePrefix(element.parentElement, namespace);\n  }\n\n  return null;\n};\n\n// https://dom.spec.whatwg.org/#locate-a-namespace\nexports.locateNamespace = (node, prefix) => {\n  switch (node.nodeType) {\n    case NODE_TYPE.ELEMENT_NODE: {\n      if (node._namespaceURI !== null && node._prefix === prefix) {\n        return node._namespaceURI;\n      }\n\n      if (prefix === null) {\n        for (const attribute of node._attributeList) {\n          if (attribute._namespace === XMLNS_NS &&\n              attribute._namespacePrefix === null &&\n              attribute._localName === \"xmlns\") {\n            return attribute._value !== \"\" ? attribute._value : null;\n          }\n        }\n      } else {\n        for (const attribute of node._attributeList) {\n          if (attribute._namespace === XMLNS_NS &&\n              attribute._namespacePrefix === \"xmlns\" &&\n              attribute._localName === prefix) {\n            return attribute._value !== \"\" ? attribute._value : null;\n          }\n        }\n      }\n\n      if (node.parentElement === null) {\n        return null;\n      }\n\n      return exports.locateNamespace(node.parentElement, prefix);\n    }\n\n    case NODE_TYPE.DOCUMENT_NODE: {\n      if (node.documentElement === null) {\n        return null;\n      }\n\n      return exports.locateNamespace(node.documentElement, prefix);\n    }\n\n    case NODE_TYPE.DOCUMENT_TYPE_NODE:\n    case NODE_TYPE.DOCUMENT_FRAGMENT_NODE: {\n      return null;\n    }\n\n    case NODE_TYPE.ATTRIBUTE_NODE: {\n      if (node._element === null) {\n        return null;\n      }\n\n      return exports.locateNamespace(node._element, prefix);\n    }\n\n    default: {\n      if (node.parentElement === null) {\n        return null;\n      }\n\n      return exports.locateNamespace(node.parentElement, prefix);\n    }\n  }\n};\n","var Kn=Object.create;var Tt=Object.defineProperty;var Qn=Object.getOwnPropertyDescriptor;var $n=Object.getOwnPropertyNames;var Xn=Object.getPrototypeOf,Jn=Object.prototype.hasOwnProperty;var De=e=>Tt(e,\"__esModule\",{value:!0});var lt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vt=(e,t)=>{for(var r in t)Tt(e,r,{get:t[r],enumerable:!0})},Pe=(e,t,r,n)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let s of $n(t))!Jn.call(e,s)&&(r||s!==\"default\")&&Tt(e,s,{get:()=>t[s],enumerable:!(n=Qn(t,s))||n.enumerable});return e},Zn=(e,t)=>Pe(De(Tt(e!=null?Kn(Xn(e)):{},\"default\",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),ti=(e=>(t,r)=>e&&e.get(t)||(r=Pe(De({}),t,1),e&&e.set(t,r),r))(typeof WeakMap!=\"undefined\"?new WeakMap:0);var Ue=lt(se=>{var Be=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");se.encode=function(e){if(0<=e&&e<Be.length)return Be[e];throw new TypeError(\"Must be between 0 and 63: \"+e)};se.decode=function(e){var t=65,r=90,n=97,s=122,o=48,a=57,h=43,l=47,i=26,c=52;return t<=e&&e<=r?e-t:n<=e&&e<=s?e-n+i:o<=e&&e<=a?e-o+c:e==h?62:e==l?63:-1}});var qe=lt(ae=>{var We=Ue(),oe=5,Ve=1<<oe,He=Ve-1,Ge=Ve;function li(e){return e<0?(-e<<1)+1:(e<<1)+0}function hi(e){var t=(e&1)===1,r=e>>1;return t?-r:r}ae.encode=function(t){var r=\"\",n,s=li(t);do n=s&He,s>>>=oe,s>0&&(n|=Ge),r+=We.encode(n);while(s>0);return r};ae.decode=function(t,r,n){var s=t.length,o=0,a=0,h,l;do{if(r>=s)throw new Error(\"Expected more digits in base 64 VLQ value.\");if(l=We.decode(t.charCodeAt(r++)),l===-1)throw new Error(\"Invalid base64 digit: \"+t.charAt(r-1));h=!!(l&Ge),l&=He,o=o+(l<<a),a+=oe}while(h);n.value=hi(o),n.rest=r}});var Ut=lt(N=>{function ui(e,t,r){if(t in e)return e[t];if(arguments.length===3)return r;throw new Error('\"'+t+'\" is a required argument.')}N.getArg=ui;var Ye=/^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/,fi=/^data:.+\\,.+$/;function Ct(e){var t=e.match(Ye);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}N.urlParse=Ct;function ft(e){var t=\"\";return e.scheme&&(t+=e.scheme+\":\"),t+=\"//\",e.auth&&(t+=e.auth+\"@\"),e.host&&(t+=e.host),e.port&&(t+=\":\"+e.port),e.path&&(t+=e.path),t}N.urlGenerate=ft;var pi=32;function mi(e){var t=[];return function(r){for(var n=0;n<t.length;n++)if(t[n].input===r){var s=t[0];return t[0]=t[n],t[n]=s,t[0].result}var o=e(r);return t.unshift({input:r,result:o}),t.length>pi&&t.pop(),o}}var ce=mi(function(t){var r=t,n=Ct(t);if(n){if(!n.path)return t;r=n.path}for(var s=N.isAbsolute(r),o=[],a=0,h=0;;)if(a=h,h=r.indexOf(\"/\",a),h===-1){o.push(r.slice(a));break}else for(o.push(r.slice(a,h));h<r.length&&r[h]===\"/\";)h++;for(var l,i=0,h=o.length-1;h>=0;h--)l=o[h],l===\".\"?o.splice(h,1):l===\"..\"?i++:i>0&&(l===\"\"?(o.splice(h+1,i),i=0):(o.splice(h,2),i--));return r=o.join(\"/\"),r===\"\"&&(r=s?\"/\":\".\"),n?(n.path=r,ft(n)):r});N.normalize=ce;function je(e,t){e===\"\"&&(e=\".\"),t===\"\"&&(t=\".\");var r=Ct(t),n=Ct(e);if(n&&(e=n.path||\"/\"),r&&!r.scheme)return n&&(r.scheme=n.scheme),ft(r);if(r||t.match(fi))return t;if(n&&!n.host&&!n.path)return n.host=t,ft(n);var s=t.charAt(0)===\"/\"?t:ce(e.replace(/\\/+$/,\"\")+\"/\"+t);return n?(n.path=s,ft(n)):s}N.join=je;N.isAbsolute=function(e){return e.charAt(0)===\"/\"||Ye.test(e)};function di(e,t){e===\"\"&&(e=\".\"),e=e.replace(/\\/$/,\"\");for(var r=0;t.indexOf(e+\"/\")!==0;){var n=e.lastIndexOf(\"/\");if(n<0||(e=e.slice(0,n),e.match(/^([^\\/]+:\\/)?\\/*$/)))return t;++r}return Array(r+1).join(\"../\")+t.substr(e.length+1)}N.relative=di;var ze=function(){var e=Object.create(null);return!(\"__proto__\"in e)}();function Ke(e){return e}function xi(e){return Qe(e)?\"$\"+e:e}N.toSetString=ze?Ke:xi;function ki(e){return Qe(e)?e.slice(1):e}N.fromSetString=ze?Ke:ki;function Qe(e){if(!e)return!1;var t=e.length;if(t<9||e.charCodeAt(t-1)!==95||e.charCodeAt(t-2)!==95||e.charCodeAt(t-3)!==111||e.charCodeAt(t-4)!==116||e.charCodeAt(t-5)!==111||e.charCodeAt(t-6)!==114||e.charCodeAt(t-7)!==112||e.charCodeAt(t-8)!==95||e.charCodeAt(t-9)!==95)return!1;for(var r=t-10;r>=0;r--)if(e.charCodeAt(r)!==36)return!1;return!0}function Si(e,t,r){var n=K(e.source,t.source);return n!==0||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:K(e.name,t.name)}N.compareByOriginalPositions=Si;function gi(e,t,r){var n;return n=e.originalLine-t.originalLine,n!==0||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:K(e.name,t.name)}N.compareByOriginalPositionsNoSource=gi;function Ci(e,t,r){var n=e.generatedLine-t.generatedLine;return n!==0||(n=e.generatedColumn-t.generatedColumn,n!==0||r)||(n=K(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:K(e.name,t.name)}N.compareByGeneratedPositionsDeflated=Ci;function yi(e,t,r){var n=e.generatedColumn-t.generatedColumn;return n!==0||r||(n=K(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:K(e.name,t.name)}N.compareByGeneratedPositionsDeflatedNoLine=yi;function K(e,t){return e===t?0:e===null?1:t===null?-1:e>t?1:-1}function bi(e,t){var r=e.generatedLine-t.generatedLine;return r!==0||(r=e.generatedColumn-t.generatedColumn,r!==0)||(r=K(e.source,t.source),r!==0)||(r=e.originalLine-t.originalLine,r!==0)||(r=e.originalColumn-t.originalColumn,r!==0)?r:K(e.name,t.name)}N.compareByGeneratedPositionsInflated=bi;function Li(e){return JSON.parse(e.replace(/^\\)]}'[^\\n]*\\n/,\"\"))}N.parseSourceMapInput=Li;function Ti(e,t,r){if(t=t||\"\",e&&(e[e.length-1]!==\"/\"&&t[0]!==\"/\"&&(e+=\"/\"),t=e+t),r){var n=Ct(r);if(!n)throw new Error(\"sourceMapURL could not be parsed\");if(n.path){var s=n.path.lastIndexOf(\"/\");s>=0&&(n.path=n.path.substring(0,s+1))}t=je(ft(n),t)}return ce(t)}N.computeSourceURL=Ti});var Xe=lt($e=>{var le=Ut(),he=Object.prototype.hasOwnProperty,it=typeof Map<\"u\";function Q(){this._array=[],this._set=it?new Map:Object.create(null)}Q.fromArray=function(t,r){for(var n=new Q,s=0,o=t.length;s<o;s++)n.add(t[s],r);return n};Q.prototype.size=function(){return it?this._set.size:Object.getOwnPropertyNames(this._set).length};Q.prototype.add=function(t,r){var n=it?t:le.toSetString(t),s=it?this.has(t):he.call(this._set,n),o=this._array.length;(!s||r)&&this._array.push(t),s||(it?this._set.set(t,o):this._set[n]=o)};Q.prototype.has=function(t){if(it)return this._set.has(t);var r=le.toSetString(t);return he.call(this._set,r)};Q.prototype.indexOf=function(t){if(it){var r=this._set.get(t);if(r>=0)return r}else{var n=le.toSetString(t);if(he.call(this._set,n))return this._set[n]}throw new Error('\"'+t+'\" is not in the set.')};Q.prototype.at=function(t){if(t>=0&&t<this._array.length)return this._array[t];throw new Error(\"No element indexed by \"+t)};Q.prototype.toArray=function(){return this._array.slice()};$e.ArraySet=Q});var tr=lt(Ze=>{var Je=Ut();function vi(e,t){var r=e.generatedLine,n=t.generatedLine,s=e.generatedColumn,o=t.generatedColumn;return n>r||n==r&&o>=s||Je.compareByGeneratedPositionsInflated(e,t)<=0}function Wt(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Wt.prototype.unsortedForEach=function(t,r){this._array.forEach(t,r)};Wt.prototype.add=function(t){vi(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))};Wt.prototype.toArray=function(){return this._sorted||(this._array.sort(Je.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};Ze.MappingList=Wt});var rr=lt(er=>{var yt=qe(),v=Ut(),Vt=Xe().ArraySet,Ei=tr().MappingList;function W(e){e||(e={}),this._file=v.getArg(e,\"file\",null),this._sourceRoot=v.getArg(e,\"sourceRoot\",null),this._skipValidation=v.getArg(e,\"skipValidation\",!1),this._sources=new Vt,this._names=new Vt,this._mappings=new Ei,this._sourcesContents=null}W.prototype._version=3;W.fromSourceMap=function(t){var r=t.sourceRoot,n=new W({file:t.file,sourceRoot:r});return t.eachMapping(function(s){var o={generated:{line:s.generatedLine,column:s.generatedColumn}};s.source!=null&&(o.source=s.source,r!=null&&(o.source=v.relative(r,o.source)),o.original={line:s.originalLine,column:s.originalColumn},s.name!=null&&(o.name=s.name)),n.addMapping(o)}),t.sources.forEach(function(s){var o=s;r!==null&&(o=v.relative(r,s)),n._sources.has(o)||n._sources.add(o);var a=t.sourceContentFor(s);a!=null&&n.setSourceContent(s,a)}),n};W.prototype.addMapping=function(t){var r=v.getArg(t,\"generated\"),n=v.getArg(t,\"original\",null),s=v.getArg(t,\"source\",null),o=v.getArg(t,\"name\",null);this._skipValidation||this._validateMapping(r,n,s,o),s!=null&&(s=String(s),this._sources.has(s)||this._sources.add(s)),o!=null&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:s,name:o})};W.prototype.setSourceContent=function(t,r){var n=t;this._sourceRoot!=null&&(n=v.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[v.toSetString(n)]=r):this._sourcesContents&&(delete this._sourcesContents[v.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};W.prototype.applySourceMap=function(t,r,n){var s=r;if(r==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's \"file\" property. Both were omitted.`);s=t.file}var o=this._sourceRoot;o!=null&&(s=v.relative(o,s));var a=new Vt,h=new Vt;this._mappings.unsortedForEach(function(l){if(l.source===s&&l.originalLine!=null){var i=t.originalPositionFor({line:l.originalLine,column:l.originalColumn});i.source!=null&&(l.source=i.source,n!=null&&(l.source=v.join(n,l.source)),o!=null&&(l.source=v.relative(o,l.source)),l.originalLine=i.line,l.originalColumn=i.column,i.name!=null&&(l.name=i.name))}var c=l.source;c!=null&&!a.has(c)&&a.add(c);var f=l.name;f!=null&&!h.has(f)&&h.add(f)},this),this._sources=a,this._names=h,t.sources.forEach(function(l){var i=t.sourceContentFor(l);i!=null&&(n!=null&&(l=v.join(n,l)),o!=null&&(l=v.relative(o,l)),this.setSourceContent(l,i))},this)};W.prototype._validateMapping=function(t,r,n,s){if(r&&typeof r.line!=\"number\"&&typeof r.column!=\"number\")throw new Error(\"original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.\");if(!(t&&\"line\"in t&&\"column\"in t&&t.line>0&&t.column>=0&&!r&&!n&&!s)){if(t&&\"line\"in t&&\"column\"in t&&r&&\"line\"in r&&\"column\"in r&&t.line>0&&t.column>=0&&r.line>0&&r.column>=0&&n)return;throw new Error(\"Invalid mapping: \"+JSON.stringify({generated:t,source:n,original:r,name:s}))}};W.prototype._serializeMappings=function(){for(var t=0,r=1,n=0,s=0,o=0,a=0,h=\"\",l,i,c,f,k=this._mappings.toArray(),S=0,T=k.length;S<T;S++){if(i=k[S],l=\"\",i.generatedLine!==r)for(t=0;i.generatedLine!==r;)l+=\";\",r++;else if(S>0){if(!v.compareByGeneratedPositionsInflated(i,k[S-1]))continue;l+=\",\"}l+=yt.encode(i.generatedColumn-t),t=i.generatedColumn,i.source!=null&&(f=this._sources.indexOf(i.source),l+=yt.encode(f-a),a=f,l+=yt.encode(i.originalLine-1-s),s=i.originalLine-1,l+=yt.encode(i.originalColumn-n),n=i.originalColumn,i.name!=null&&(c=this._names.indexOf(i.name),l+=yt.encode(c-o),o=c)),h+=l}return h};W.prototype._generateSourcesContent=function(t,r){return t.map(function(n){if(!this._sourcesContents)return null;r!=null&&(n=v.relative(r,n));var s=v.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,s)?this._sourcesContents[s]:null},this)};W.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(t.file=this._file),this._sourceRoot!=null&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t};W.prototype.toString=function(){return JSON.stringify(this.toJSON())};er.SourceMapGenerator=W});var gs={};vt(gs,{default:()=>Ie});function I(e){return e>=48&&e<=57}function z(e){return I(e)||e>=65&&e<=70||e>=97&&e<=102}function wt(e){return e>=65&&e<=90}function ei(e){return e>=97&&e<=122}function ri(e){return wt(e)||ei(e)}function ni(e){return e>=128}function Et(e){return ri(e)||ni(e)||e===95}function At(e){return Et(e)||I(e)||e===45}function ii(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function dt(e){return e===10||e===13||e===12}function $(e){return dt(e)||e===32||e===9}function R(e,t){return!(e!==92||dt(t)||t===0)}function Nt(e,t,r){return e===45?Et(t)||t===45||R(t,r):Et(e)?!0:e===92?R(e,t):!1}function It(e,t,r){return e===43||e===45?I(t)?2:t===46&&I(r)?3:0:e===46?I(t)?2:0:I(e)?1:0}function Dt(e){return e===65279||e===65534?1:0}var Xt=new Array(128),si=128,xt=130,Jt=131,Pt=132,Zt=133;for(let e=0;e<Xt.length;e++)Xt[e]=$(e)&&xt||I(e)&&Jt||Et(e)&&Pt||ii(e)&&Zt||e||si;function Ft(e){return e<128?Xt[e]:Pt}function ht(e,t){return t<e.length?e.charCodeAt(t):0}function Rt(e,t,r){return r===13&&ht(e,t+1)===10?2:1}function ee(e,t,r){let n=e.charCodeAt(t);return wt(n)&&(n=n|32),n===r}function et(e,t,r,n){if(r-t!==n.length||t<0||r>e.length)return!1;for(let s=t;s<r;s++){let o=n.charCodeAt(s-t),a=e.charCodeAt(s);if(wt(a)&&(a=a|32),a!==o)return!1}return!0}function Re(e,t){for(;t>=0&&$(e.charCodeAt(t));t--);return t+1}function kt(e,t){for(;t<e.length&&$(e.charCodeAt(t));t++);return t}function te(e,t){for(;t<e.length&&I(e.charCodeAt(t));t++);return t}function X(e,t){if(t+=2,z(ht(e,t-1))){for(let n=Math.min(e.length,t+5);t<n&&z(ht(e,t));t++);let r=ht(e,t);$(r)&&(t+=Rt(e,t,r))}return t}function St(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(!At(r)){if(R(r,ht(e,t+1))){t=X(e,t)-1;continue}break}}return t}function Ot(e,t){let r=e.charCodeAt(t);if((r===43||r===45)&&(r=e.charCodeAt(t+=1)),I(r)&&(t=te(e,t+1),r=e.charCodeAt(t)),r===46&&I(e.charCodeAt(t+1))&&(t+=2,t=te(e,t)),ee(e,t,101)){let n=0;r=e.charCodeAt(t+1),(r===45||r===43)&&(n=1,r=e.charCodeAt(t+2)),I(r)&&(t=te(e,t+1+n+1))}return t}function _t(e,t){for(;t<e.length;t++){let r=e.charCodeAt(t);if(r===41){t++;break}R(r,ht(e,t+1))&&(t=X(e,t))}return t}function re(e){if(e.length===1&&!z(e.charCodeAt(0)))return e[0];let t=parseInt(e,16);return(t===0||t>=55296&&t<=57343||t>1114111)&&(t=65533),String.fromCodePoint(t)}var gt=[\"EOF-token\",\"ident-token\",\"function-token\",\"at-keyword-token\",\"hash-token\",\"string-token\",\"bad-string-token\",\"url-token\",\"bad-url-token\",\"delim-token\",\"number-token\",\"percentage-token\",\"dimension-token\",\"whitespace-token\",\"CDO-token\",\"CDC-token\",\"colon-token\",\"semicolon-token\",\"comma-token\",\"[-token\",\"]-token\",\"(-token\",\")-token\",\"{-token\",\"}-token\",\"comment-token\"];function ut(e=null,t){return e===null||e.length<t?new Uint32Array(Math.max(t+1024,16384)):e}var Oe=10,oi=12,_e=13;function Me(e){let t=e.source,r=t.length,n=t.length>0?Dt(t.charCodeAt(0)):0,s=ut(e.lines,r),o=ut(e.columns,r),a=e.startLine,h=e.startColumn;for(let l=n;l<r;l++){let i=t.charCodeAt(l);s[l]=a,o[l]=h++,(i===Oe||i===_e||i===oi)&&(i===_e&&l+1<r&&t.charCodeAt(l+1)===Oe&&(l++,s[l]=a,o[l]=h),a++,h=1)}s[r]=a,o[r]=h,e.lines=s,e.columns=o,e.computed=!0}var ne=class{constructor(){this.lines=null,this.columns=null,this.computed=!1}setSource(t,r=0,n=1,s=1){this.source=t,this.startOffset=r,this.startLine=n,this.startColumn=s,this.computed=!1}getLocation(t,r){return this.computed||Me(this),{source:r,offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]}}getLocationRange(t,r,n){return this.computed||Me(this),{source:n,start:{offset:this.startOffset+t,line:this.lines[t],column:this.columns[t]},end:{offset:this.startOffset+r,line:this.lines[r],column:this.columns[r]}}}};var M=16777215,V=24,ai=new Map([[2,22],[21,22],[19,20],[23,24]]),ie=class{constructor(t,r){this.setSource(t,r)}reset(){this.eof=!1,this.tokenIndex=-1,this.tokenType=0,this.tokenStart=this.firstCharOffset,this.tokenEnd=this.firstCharOffset}setSource(t=\"\",r=()=>{}){t=String(t||\"\");let n=t.length,s=ut(this.offsetAndType,t.length+1),o=ut(this.balance,t.length+1),a=0,h=0,l=0,i=-1;for(this.offsetAndType=null,this.balance=null,r(t,(c,f,k)=>{switch(c){default:o[a]=n;break;case h:{let S=l&M;for(l=o[S],h=l>>V,o[a]=S,o[S++]=a;S<a;S++)o[S]===n&&(o[S]=a);break}case 21:case 2:case 19:case 23:o[a]=l,h=ai.get(c),l=h<<V|a;break}s[a++]=c<<V|k,i===-1&&(i=f)}),s[a]=0<<V|n,o[a]=n,o[n]=n;l!==0;){let c=l&M;l=o[c],o[c]=n}this.source=t,this.firstCharOffset=i===-1?0:i,this.tokenCount=a,this.offsetAndType=s,this.balance=o,this.reset(),this.next()}lookupType(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t]>>V:0}lookupTypeNonSC(t){for(let r=this.tokenIndex;r<this.tokenCount;r++){let n=this.offsetAndType[r]>>V;if(n!==13&&n!==25&&t--===0)return n}return 0}lookupOffset(t){return t+=this.tokenIndex,t<this.tokenCount?this.offsetAndType[t-1]&M:this.source.length}lookupOffsetNonSC(t){for(let r=this.tokenIndex;r<this.tokenCount;r++){let n=this.offsetAndType[r]>>V;if(n!==13&&n!==25&&t--===0)return r-this.tokenIndex}return 0}lookupValue(t,r){return t+=this.tokenIndex,t<this.tokenCount?et(this.source,this.offsetAndType[t-1]&M,this.offsetAndType[t]&M,r):!1}getTokenStart(t){return t===this.tokenIndex?this.tokenStart:t>0?t<this.tokenCount?this.offsetAndType[t-1]&M:this.offsetAndType[this.tokenCount]&M:this.firstCharOffset}substrToCursor(t){return this.source.substring(t,this.tokenStart)}isBalanceEdge(t){return this.balance[this.tokenIndex]<t}isDelim(t,r){return r?this.lookupType(r)===9&&this.source.charCodeAt(this.lookupOffset(r))===t:this.tokenType===9&&this.source.charCodeAt(this.tokenStart)===t}skip(t){let r=this.tokenIndex+t;r<this.tokenCount?(this.tokenIndex=r,this.tokenStart=this.offsetAndType[r-1]&M,r=this.offsetAndType[r],this.tokenType=r>>V,this.tokenEnd=r&M):(this.tokenIndex=this.tokenCount,this.next())}next(){let t=this.tokenIndex+1;t<this.tokenCount?(this.tokenIndex=t,this.tokenStart=this.tokenEnd,t=this.offsetAndType[t],this.tokenType=t>>V,this.tokenEnd=t&M):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;this.tokenType===13||this.tokenType===25;)this.next()}skipUntilBalanced(t,r){let n=t,s,o;t:for(;n<this.tokenCount;n++){if(s=this.balance[n],s<t)break t;switch(o=n>0?this.offsetAndType[n-1]&M:this.firstCharOffset,r(this.source.charCodeAt(o))){case 1:break t;case 2:n++;break t;default:this.balance[s]===n&&(n=s)}}this.skip(n-this.tokenIndex)}forEachToken(t){for(let r=0,n=this.firstCharOffset;r<this.tokenCount;r++){let s=n,o=this.offsetAndType[r],a=o&M,h=o>>V;n=a,t(h,s,a,r)}}dump(){let t=new Array(this.tokenCount);return this.forEachToken((r,n,s,o)=>{t[o]={idx:o,type:gt[r],chunk:this.source.substring(n,s),balance:this.balance[o]}}),t}};function Bt(e,t){function r(f){return f<h?e.charCodeAt(f):0}function n(){if(i=Ot(e,i),Nt(r(i),r(i+1),r(i+2))){c=12,i=St(e,i);return}if(r(i)===37){c=11,i++;return}c=10}function s(){let f=i;if(i=St(e,i),et(e,f,i,\"url\")&&r(i)===40){if(i=kt(e,i+1),r(i)===34||r(i)===39){c=2,i=f+4;return}a();return}if(r(i)===40){c=2,i++;return}c=1}function o(f){for(f||(f=r(i++)),c=5;i<e.length;i++){let k=e.charCodeAt(i);switch(Ft(k)){case f:i++;return;case xt:if(dt(k)){i+=Rt(e,i,k),c=6;return}break;case 92:if(i===e.length-1)break;let S=r(i+1);dt(S)?i+=Rt(e,i+1,S):R(k,S)&&(i=X(e,i)-1);break}}}function a(){for(c=7,i=kt(e,i);i<e.length;i++){let f=e.charCodeAt(i);switch(Ft(f)){case 41:i++;return;case xt:if(i=kt(e,i),r(i)===41||i>=e.length){i<e.length&&i++;return}i=_t(e,i),c=8;return;case 34:case 39:case 40:case Zt:i=_t(e,i),c=8;return;case 92:if(R(f,r(i+1))){i=X(e,i)-1;break}i=_t(e,i),c=8;return}}}e=String(e||\"\");let h=e.length,l=Dt(r(0)),i=l,c;for(;i<h;){let f=e.charCodeAt(i);switch(Ft(f)){case xt:c=13,i=kt(e,i+1);break;case 34:o();break;case 35:At(r(i+1))||R(r(i+1),r(i+2))?(c=4,i=St(e,i+1)):(c=9,i++);break;case 39:o();break;case 40:c=21,i++;break;case 41:c=22,i++;break;case 43:It(f,r(i+1),r(i+2))?n():(c=9,i++);break;case 44:c=18,i++;break;case 45:It(f,r(i+1),r(i+2))?n():r(i+1)===45&&r(i+2)===62?(c=15,i=i+3):Nt(f,r(i+1),r(i+2))?s():(c=9,i++);break;case 46:It(f,r(i+1),r(i+2))?n():(c=9,i++);break;case 47:r(i+1)===42?(c=25,i=e.indexOf(\"*/\",i+2),i=i===-1?e.length:i+2):(c=9,i++);break;case 58:c=16,i++;break;case 59:c=17,i++;break;case 60:r(i+1)===33&&r(i+2)===45&&r(i+3)===45?(c=14,i=i+4):(c=9,i++);break;case 64:Nt(r(i+1),r(i+2),r(i+3))?(c=3,i=St(e,i+1)):(c=9,i++);break;case 91:c=19,i++;break;case 92:R(f,r(i+1))?s():(c=9,i++);break;case 93:c=20,i++;break;case 123:c=23,i++;break;case 125:c=24,i++;break;case Jt:n();break;case Pt:s();break;default:c=9,i++}t(c,l,l=i)}}var ir=Zn(rr(),1),nr=new Set([\"Atrule\",\"Selector\",\"Declaration\"]);function sr(e){let t=new ir.SourceMapGenerator,r={line:1,column:0},n={line:0,column:0},s={line:1,column:0},o={generated:s},a=1,h=0,l=!1,i=e.node;e.node=function(k){if(k.loc&&k.loc.start&&nr.has(k.type)){let S=k.loc.start.line,T=k.loc.start.column-1;(n.line!==S||n.column!==T)&&(n.line=S,n.column=T,r.line=a,r.column=h,l&&(l=!1,(r.line!==s.line||r.column!==s.column)&&t.addMapping(o)),l=!0,t.addMapping({source:k.loc.source,original:n,generated:r}))}i.call(this,k),l&&nr.has(k.type)&&(s.line=a,s.column=h)};let c=e.emit;e.emit=function(k,S,T){for(let j=0;j<k.length;j++)k.charCodeAt(j)===10?(a++,h=0):h++;c(k,S,T)};let f=e.result;return e.result=function(){return l&&t.addMapping(o),{css:f(),map:t}},e}var Ht={};vt(Ht,{safe:()=>fe,spec:()=>Ii});var wi=43,Ai=45,ue=(e,t)=>{if(e===9&&(e=t),typeof e==\"string\"){let r=e.charCodeAt(0);return r>127?32768:r<<8}return e},or=[[1,1],[1,2],[1,7],[1,8],[1,\"-\"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,\"-\"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,\"-\"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,\"-\"],[12,10],[12,11],[12,12],[12,15],[\"#\",1],[\"#\",2],[\"#\",7],[\"#\",8],[\"#\",\"-\"],[\"#\",10],[\"#\",11],[\"#\",12],[\"#\",15],[\"-\",1],[\"-\",2],[\"-\",7],[\"-\",8],[\"-\",\"-\"],[\"-\",10],[\"-\",11],[\"-\",12],[\"-\",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,\"%\"],[10,15],[\"@\",1],[\"@\",2],[\"@\",7],[\"@\",8],[\"@\",\"-\"],[\"@\",15],[\".\",10],[\".\",11],[\".\",12],[\"+\",10],[\"+\",11],[\"+\",12],[\"/\",\"*\"]],Ni=or.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,\"-\"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,\"-\"]]);function ar(e){let t=new Set(e.map(([r,n])=>ue(r)<<16|ue(n)));return function(r,n,s){let o=ue(n,s),a=s.charCodeAt(0);return(a===Ai&&n!==1&&n!==2&&n!==15||a===wi?t.has(r<<16|a<<8):t.has(r<<16|o))&&this.emit(\" \",13,!0),o}}var Ii=ar(or),fe=ar(Ni);var Di=92;function Pi(e,t){if(typeof t==\"function\"){let r=null;e.children.forEach(n=>{r!==null&&t.call(this,r),this.node(n),r=n});return}e.children.forEach(this.node,this)}function Fi(e){Bt(e,(t,r,n)=>{this.token(t,e.slice(r,n))})}function cr(e){let t=new Map;for(let[r,n]of Object.entries(e.node))typeof(n.generate||n)==\"function\"&&t.set(r,n.generate||n);return function(r,n){let s=\"\",o=0,a={node(l){if(t.has(l.type))t.get(l.type).call(h,l);else throw new Error(\"Unknown node type: \"+l.type)},tokenBefore:fe,token(l,i){o=this.tokenBefore(o,l,i),this.emit(i,l,!1),l===9&&i.charCodeAt(0)===Di&&this.emit(`\n`,13,!0)},emit(l){s+=l},result(){return s}};n&&(typeof n.decorator==\"function\"&&(a=n.decorator(a)),n.sourceMap&&(a=sr(a)),n.mode in Ht&&(a.tokenBefore=Ht[n.mode]));let h={node:l=>a.node(l),children:Pi,token:(l,i)=>a.token(l,i),tokenize:Fi};return a.node(r),a.result()}}var Se={};vt(Se,{AnPlusB:()=>hr,Atrule:()=>ur,AtrulePrelude:()=>fr,AttributeSelector:()=>dr,Block:()=>xr,Brackets:()=>kr,CDC:()=>Sr,CDO:()=>gr,ClassSelector:()=>yr,Combinator:()=>Tr,Comment:()=>vr,Condition:()=>Er,Declaration:()=>wr,DeclarationList:()=>Ar,Dimension:()=>Nr,Feature:()=>Ir,FeatureFunction:()=>Dr,FeatureRange:()=>Pr,Function:()=>Fr,GeneralEnclosed:()=>Rr,Hash:()=>Or,IdSelector:()=>Ur,Identifier:()=>Mr,Layer:()=>Wr,LayerList:()=>Vr,MediaQuery:()=>Hr,MediaQueryList:()=>Gr,NestingSelector:()=>Yr,Nth:()=>zr,Number:()=>Kr,Operator:()=>$r,Parentheses:()=>Xr,Percentage:()=>Zr,PseudoClassSelector:()=>en,PseudoElementSelector:()=>nn,Ratio:()=>sn,Raw:()=>an,Rule:()=>cn,Scope:()=>ln,Selector:()=>un,SelectorList:()=>pn,String:()=>Sn,StyleSheet:()=>gn,SupportsDeclaration:()=>Cn,TypeSelector:()=>Ln,UnicodeRange:()=>Tn,Url:()=>En,Value:()=>wn,WhiteSpace:()=>An});var Y=43,_=45,Gt=110,st=!0,Ri=!1;function qt(e,t){let r=this.tokenStart+e,n=this.charCodeAt(r);for((n===Y||n===_)&&(t&&this.error(\"Number sign is not allowed\"),r++);r<this.tokenEnd;r++)I(this.charCodeAt(r))||this.error(\"Integer is expected\",r)}function pt(e){return qt.call(this,0,e)}function Z(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let r=\"\";switch(t){case Gt:r=\"N is expected\";break;case _:r=\"HyphenMinus is expected\";break}this.error(r,this.tokenStart+e)}}function pe(){let e=0,t=0,r=this.tokenType;for(;r===13||r===25;)r=this.lookupType(++e);if(r!==10)if(this.isDelim(Y,e)||this.isDelim(_,e)){t=this.isDelim(Y,e)?Y:_;do r=this.lookupType(++e);while(r===13||r===25);r!==10&&(this.skip(e),pt.call(this,st))}else return null;return e>0&&this.skip(e),t===0&&(r=this.charCodeAt(this.tokenStart),r!==Y&&r!==_&&this.error(\"Number sign is expected\")),pt.call(this,t!==0),t===_?\"-\"+this.consume(10):this.consume(10)}function lr(){let e=this.tokenStart,t=null,r=null;if(this.tokenType===10)pt.call(this,Ri),r=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,_))switch(t=\"-1\",Z.call(this,1,Gt),this.tokenEnd-this.tokenStart){case 2:this.next(),r=pe.call(this);break;case 3:Z.call(this,2,_),this.next(),this.skipSC(),pt.call(this,st),r=\"-\"+this.consume(10);break;default:Z.call(this,2,_),qt.call(this,3,st),this.next(),r=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(Y)&&this.lookupType(1)===1){let n=0;switch(t=\"1\",this.isDelim(Y)&&(n=1,this.next()),Z.call(this,0,Gt),this.tokenEnd-this.tokenStart){case 1:this.next(),r=pe.call(this);break;case 2:Z.call(this,1,_),this.next(),this.skipSC(),pt.call(this,st),r=\"-\"+this.consume(10);break;default:Z.call(this,1,_),qt.call(this,2,st),this.next(),r=this.substrToCursor(e+n+1)}}else if(this.tokenType===12){let n=this.charCodeAt(this.tokenStart),s=n===Y||n===_,o=this.tokenStart+s;for(;o<this.tokenEnd&&I(this.charCodeAt(o));o++);o===this.tokenStart+s&&this.error(\"Integer is expected\",this.tokenStart+s),Z.call(this,o-this.tokenStart,Gt),t=this.substring(e,o),o+1===this.tokenEnd?(this.next(),r=pe.call(this)):(Z.call(this,o-this.tokenStart+1,_),o+2===this.tokenEnd?(this.next(),this.skipSC(),pt.call(this,st),r=\"-\"+this.consume(10)):(qt.call(this,o-this.tokenStart+2,st),this.next(),r=this.substrToCursor(o+1)))}else this.error();return t!==null&&t.charCodeAt(0)===Y&&(t=t.substr(1)),r!==null&&r.charCodeAt(0)===Y&&(r=r.substr(1)),{type:\"AnPlusB\",loc:this.getLocation(e,this.tokenStart),a:t,b:r}}function hr(e){if(e.a){let t=e.a===\"+1\"&&\"n\"||e.a===\"1\"&&\"n\"||e.a===\"-1\"&&\"-n\"||e.a+\"n\";if(e.b){let r=e.b[0]===\"-\"||e.b[0]===\"+\"?e.b:\"+\"+e.b;this.tokenize(t+r)}else this.tokenize(t)}else this.tokenize(e.b)}function ur(e){this.token(3,\"@\"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?(this.token(23,\"{\"),this.node(e.block),this.token(24,\"}\")):this.token(17,\";\")}function fr(e){this.children(e)}var Oi=36,pr=42,Yt=61,_i=94,me=124,Mi=126;function Bi(){this.eof&&this.error(\"Unexpected end of input\");let e=this.tokenStart,t=!1;return this.isDelim(pr)?(t=!0,this.next()):this.isDelim(me)||this.eat(1),this.isDelim(me)?this.charCodeAt(this.tokenStart+1)!==Yt?(this.next(),this.eat(1)):t&&this.error(\"Identifier is expected\",this.tokenEnd):t&&this.error(\"Vertical line is expected\"),{type:\"Identifier\",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function Ui(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==Yt&&t!==Mi&&t!==_i&&t!==Oi&&t!==pr&&t!==me&&this.error(\"Attribute selector (=, ~=, ^=, $=, *=, |=) is expected\"),this.next(),t!==Yt&&(this.isDelim(Yt)||this.error(\"Equal sign is expected\"),this.next()),this.substrToCursor(e)}function mr(){let e=this.tokenStart,t,r=null,n=null,s=null;return this.eat(19),this.skipSC(),t=Bi.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(r=Ui.call(this),this.skipSC(),n=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(s=this.consume(1),this.skipSC())),this.eat(20),{type:\"AttributeSelector\",loc:this.getLocation(e,this.tokenStart),name:t,matcher:r,value:n,flags:s}}function dr(e){this.token(9,\"[\"),this.node(e.name),e.matcher!==null&&(this.tokenize(e.matcher),this.node(e.value)),e.flags!==null&&this.token(1,e.flags),this.token(9,\"]\")}function xr(e){this.children(e,t=>{t.type===\"Declaration\"&&this.token(17,\";\")})}function kr(e){this.token(9,\"[\"),this.children(e),this.token(9,\"]\")}function Sr(){this.token(15,\"-->\")}function gr(){this.token(14,\"<!--\")}var Wi=46;function Cr(){return this.eatDelim(Wi),{type:\"ClassSelector\",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function yr(e){this.token(9,\".\"),this.token(1,e.name)}var Vi=43,br=47,Hi=62,Gi=126;function Lr(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=\" \";break;case 9:switch(this.charCodeAt(this.tokenStart)){case Hi:case Vi:case Gi:this.next();break;case br:this.next(),this.eatIdent(\"deep\"),this.eatDelim(br);break;default:this.error(\"Combinator is expected\")}t=this.substrToCursor(e);break}return{type:\"Combinator\",loc:this.getLocation(e,this.tokenStart),name:t}}function Tr(e){this.tokenize(e.name)}function vr(e){this.token(25,\"/*\"+e.value+\"*/\")}function Er(e){e.children.forEach(t=>{t.type===\"Condition\"?(this.token(21,\"(\"),this.node(t),this.token(22,\")\")):this.node(t)})}function wr(e){this.token(1,e.property),this.token(16,\":\"),this.node(e.value),e.important&&(this.token(9,\"!\"),this.token(1,e.important===!0?\"important\":e.important))}function Ar(e){this.children(e,t=>{t.type===\"Declaration\"&&this.token(17,\";\")})}function Nr(e){this.token(12,e.value+e.unit)}function Ir(e){this.token(21,\"(\"),this.token(1,e.name),e.value!==null&&(this.token(16,\":\"),this.node(e.value)),this.token(22,\")\")}function Dr(e){this.token(2,e.feature+\"(\"),this.node(e.value),this.token(22,\")\")}function Pr(e){this.token(21,\"(\"),this.node(e.left),this.tokenize(e.leftComparison),this.node(e.middle),e.right&&(this.tokenize(e.rightComparison),this.node(e.right)),this.token(22,\")\")}function Fr(e){this.token(2,e.name+\"(\"),this.children(e),this.token(22,\")\")}function Rr(e){e.function?this.token(2,e.function+\"(\"):this.token(21,\"(\"),this.children(e),this.token(22,\")\")}function Or(e){this.token(4,\"#\"+e.value)}function _r(){return{type:\"Identifier\",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function Mr(e){this.token(1,e.name)}function Br(){let e=this.tokenStart;return this.eat(4),{type:\"IdSelector\",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function Ur(e){this.token(9,\"#\"+e.name)}function Wr(e){this.tokenize(e.name)}function Vr(e){this.children(e,()=>this.token(18,\",\"))}function Hr(e){e.mediaType?(e.modifier&&this.token(1,e.modifier),this.token(1,e.mediaType),e.condition&&(this.token(1,\"and\"),this.node(e.condition))):e.condition&&this.node(e.condition)}function Gr(e){this.children(e,()=>this.token(18,\",\"))}var qi=38;function qr(){let e=this.tokenStart;return this.eatDelim(qi),{type:\"NestingSelector\",loc:this.getLocation(e,this.tokenStart)}}function Yr(){this.token(9,\"&\")}function jr(){this.skipSC();let e=this.tokenStart,t=e,r=null,n;return this.lookupValue(0,\"odd\")||this.lookupValue(0,\"even\")?n=this.Identifier():n=this.AnPlusB(),t=this.tokenStart,this.skipSC(),this.lookupValue(0,\"of\")&&(this.next(),r=this.SelectorList(),t=this.tokenStart),{type:\"Nth\",loc:this.getLocation(e,t),nth:n,selector:r}}function zr(e){this.node(e.nth),e.selector!==null&&(this.token(1,\"of\"),this.node(e.selector))}function Kr(e){this.token(10,e.value)}function Qr(){let e=this.tokenStart;return this.next(),{type:\"Operator\",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function $r(e){this.tokenize(e.value)}function Xr(e){this.token(21,\"(\"),this.children(e),this.token(22,\")\")}function Jr(){return{type:\"Percentage\",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function Zr(e){this.token(11,e.value+\"%\")}function tn(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),this.lookupNonWSType(0)==22?t=this.createList():hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(null,!1))),this.eat(22)):r=this.consume(1),{type:\"PseudoClassSelector\",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function en(e){this.token(16,\":\"),e.children===null?this.token(1,e.name):(this.token(2,e.name+\"(\"),this.children(e),this.token(22,\")\"))}function rn(){let e=this.tokenStart,t=null,r,n;return this.eat(16),this.eat(16),this.tokenType===2?(r=this.consumeFunctionName(),n=r.toLowerCase(),this.lookupNonWSType(0)==22?t=this.createList():hasOwnProperty.call(this.pseudo,n)?(this.skipSC(),t=this.pseudo[n].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(null,!1))),this.eat(22)):r=this.consume(1),{type:\"PseudoElementSelector\",loc:this.getLocation(e,this.tokenStart),name:r,children:t}}function nn(e){this.token(16,\":\"),this.token(16,\":\"),e.children===null?this.token(1,e.name):(this.token(2,e.name+\"(\"),this.children(e),this.token(22,\")\"))}function sn(e){this.node(e.left),this.token(9,\"/\"),e.right?this.node(e.right):this.node(10,1)}function Yi(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}function on(e,t){let r=this.getTokenStart(this.tokenIndex),n;return this.skipUntilBalanced(this.tokenIndex,e||this.consumeUntilBalanceEnd),t&&this.tokenStart>r?n=Yi.call(this):n=this.tokenStart,{type:\"Raw\",loc:this.getLocation(r,n),value:this.substring(r,n)}}function an(e){this.tokenize(e.value)}function cn(e){this.node(e.prelude),this.token(23,\"{\"),this.node(e.block),this.token(24,\"}\")}function ln(e){e.root&&(this.token(21,\"(\"),this.node(e.root),this.token(22,\")\")),e.limit&&(this.token(1,\"to\"),this.token(21,\"(\"),this.node(e.limit),this.token(22,\")\"))}function hn(){let e=this.readSequence(this.scope.Selector);return this.getFirstListNode(e)===null&&this.error(\"Selector is expected\"),{type:\"Selector\",loc:this.getLocationFromList(e),children:e}}function un(e){this.children(e)}function fn(){let e=this.createList();for(;!this.eof;){if(e.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:\"SelectorList\",loc:this.getLocationFromList(e),children:e}}function pn(e){this.children(e,()=>this.token(18,\",\"))}var de=92,mn=34,dn=39;function xe(e){let t=e.length,r=e.charCodeAt(0),n=r===mn||r===dn?1:0,s=n===1&&t>1&&e.charCodeAt(t-1)===r?t-2:t-1,o=\"\";for(let a=n;a<=s;a++){let h=e.charCodeAt(a);if(h===de){if(a===s){a!==t-1&&(o=e.substr(a+1));break}if(h=e.charCodeAt(++a),R(de,h)){let l=a-1,i=X(e,l);a=i-1,o+=re(e.substring(l+1,i))}else h===13&&e.charCodeAt(a+1)===10&&a++}else o+=e[a]}return o}function xn(e,t){let r=t?\"'\":'\"',n=t?dn:mn,s=\"\",o=!1;for(let a=0;a<e.length;a++){let h=e.charCodeAt(a);if(h===0){s+=\"\\uFFFD\";continue}if(h<=31||h===127){s+=\"\\\\\"+h.toString(16),o=!0;continue}h===n||h===de?(s+=\"\\\\\"+e.charAt(a),o=!1):(o&&(z(h)||$(h))&&(s+=\" \"),s+=e.charAt(a),o=!1)}return r+s+r}function kn(){return{type:\"String\",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:xe(this.consume(5))}}function Sn(e){this.token(5,xn(e.value))}function gn(e){this.children(e)}function Cn(e){this.token(21,\"(\"),this.node(e.declaration),this.token(22,\")\")}var zi=42,yn=124;function ke(){this.tokenType!==1&&this.isDelim(zi)===!1&&this.error(\"Identifier or asterisk is expected\"),this.next()}function bn(){let e=this.tokenStart;return this.isDelim(yn)?(this.next(),ke.call(this)):(ke.call(this),this.isDelim(yn)&&(this.next(),ke.call(this))),{type:\"TypeSelector\",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function Ln(e){this.tokenize(e.name)}function Tn(e){this.tokenize(e.value)}var Ki=32,Qi=92,$i=34,Xi=39,Ji=40,Zi=41;function vn(e){let t=\"\",r=!1;for(let n=0;n<e.length;n++){let s=e.charCodeAt(n);if(s===0){t+=\"\\uFFFD\";continue}if(s<=31||s===127){t+=\"\\\\\"+s.toString(16),r=!0;continue}s===Ki||s===Qi||s===$i||s===Xi||s===Ji||s===Zi?(t+=\"\\\\\"+e.charAt(n),r=!1):(r&&z(s)&&(t+=\" \"),t+=e.charAt(n),r=!1)}return\"url(\"+t+\")\"}function En(e){this.token(7,vn(e.value))}function wn(e){this.children(e)}var Ka=Object.freeze({type:\"WhiteSpace\",loc:null,value:\" \"});function An(e){this.token(13,e.value)}var Nn={node:Se};var In=cr(Nn);var mt=null,P=class{static createItem(t){return{prev:null,next:null,data:t}}constructor(){this.head=null,this.tail=null,this.cursor=null}createItem(t){return P.createItem(t)}allocateCursor(t,r){let n;return mt!==null?(n=mt,mt=mt.cursor,n.prev=t,n.next=r,n.cursor=this.cursor):n={prev:t,next:r,cursor:this.cursor},this.cursor=n,n}releaseCursor(){let{cursor:t}=this;this.cursor=t.cursor,t.prev=null,t.next=null,t.cursor=mt,mt=t}updateCursors(t,r,n,s){let{cursor:o}=this;for(;o!==null;)o.prev===t&&(o.prev=r),o.next===n&&(o.next=s),o=o.cursor}*[Symbol.iterator](){for(let t=this.head;t!==null;t=t.next)yield t.data}get size(){let t=0;for(let r=this.head;r!==null;r=r.next)t++;return t}get isEmpty(){return this.head===null}get first(){return this.head&&this.head.data}get last(){return this.tail&&this.tail.data}fromArray(t){let r=null;this.head=null;for(let n of t){let s=P.createItem(n);r!==null?r.next=s:this.head=s,s.prev=r,r=s}return this.tail=r,this}toArray(){return[...this]}toJSON(){return[...this]}forEach(t,r=this){let n=this.allocateCursor(null,this.head);for(;n.next!==null;){let s=n.next;n.next=s.next,t.call(r,s.data,s,this)}this.releaseCursor()}forEachRight(t,r=this){let n=this.allocateCursor(this.tail,null);for(;n.prev!==null;){let s=n.prev;n.prev=s.prev,t.call(r,s.data,s,this)}this.releaseCursor()}reduce(t,r,n=this){let s=this.allocateCursor(null,this.head),o=r,a;for(;s.next!==null;)a=s.next,s.next=a.next,o=t.call(n,o,a.data,a,this);return this.releaseCursor(),o}reduceRight(t,r,n=this){let s=this.allocateCursor(this.tail,null),o=r,a;for(;s.prev!==null;)a=s.prev,s.prev=a.prev,o=t.call(n,o,a.data,a,this);return this.releaseCursor(),o}some(t,r=this){for(let n=this.head;n!==null;n=n.next)if(t.call(r,n.data,n,this))return!0;return!1}map(t,r=this){let n=new P;for(let s=this.head;s!==null;s=s.next)n.appendData(t.call(r,s.data,s,this));return n}filter(t,r=this){let n=new P;for(let s=this.head;s!==null;s=s.next)t.call(r,s.data,s,this)&&n.appendData(s.data);return n}nextUntil(t,r,n=this){if(t===null)return;let s=this.allocateCursor(null,t);for(;s.next!==null;){let o=s.next;if(s.next=o.next,r.call(n,o.data,o,this))break}this.releaseCursor()}prevUntil(t,r,n=this){if(t===null)return;let s=this.allocateCursor(t,null);for(;s.prev!==null;){let o=s.prev;if(s.prev=o.prev,r.call(n,o.data,o,this))break}this.releaseCursor()}clear(){this.head=null,this.tail=null}copy(){let t=new P;for(let r of this)t.appendData(r);return t}prepend(t){return this.updateCursors(null,t,this.head,t),this.head!==null?(this.head.prev=t,t.next=this.head):this.tail=t,this.head=t,this}prependData(t){return this.prepend(P.createItem(t))}append(t){return this.insert(t)}appendData(t){return this.insert(P.createItem(t))}insert(t,r=null){if(r!==null)if(this.updateCursors(r.prev,t,r,t),r.prev===null){if(this.head!==r)throw new Error(\"before doesn't belong to list\");this.head=t,r.prev=t,t.next=r,this.updateCursors(null,t)}else r.prev.next=t,t.prev=r.prev,r.prev=t,t.next=r;else this.updateCursors(this.tail,t,null,t),this.tail!==null?(this.tail.next=t,t.prev=this.tail):this.head=t,this.tail=t;return this}insertData(t,r){return this.insert(P.createItem(t),r)}remove(t){if(this.updateCursors(t,t.prev,t,t.next),t.prev!==null)t.prev.next=t.next;else{if(this.head!==t)throw new Error(\"item doesn't belong to list\");this.head=t.next}if(t.next!==null)t.next.prev=t.prev;else{if(this.tail!==t)throw new Error(\"item doesn't belong to list\");this.tail=t.prev}return t.prev=null,t.next=null,t}push(t){this.insert(P.createItem(t))}pop(){return this.tail!==null?this.remove(this.tail):null}unshift(t){this.prepend(P.createItem(t))}shift(){return this.head!==null?this.remove(this.head):null}prependList(t){return this.insertList(t,this.head)}appendList(t){return this.insertList(t)}insertList(t,r){return t.head===null?this:(r!=null?(this.updateCursors(r.prev,t.tail,r,t.head),r.prev!==null?(r.prev.next=t.head,t.head.prev=r.prev):this.head=t.head,r.prev=t.tail,t.tail.next=r):(this.updateCursors(this.tail,t.tail,null,t.head),this.tail!==null?(this.tail.next=t.head,t.head.prev=this.tail):this.head=t.head,this.tail=t.tail),t.head=null,t.tail=null,this)}replace(t,r){\"head\"in r?this.insertList(r,t):this.insert(r,t),this.remove(t)}};function Dn(e,t){let r=Object.create(SyntaxError.prototype),n=new Error;return Object.assign(r,{name:e,message:t,get stack(){return(n.stack||\"\").replace(/^(.+\\n){1,3}/,`${e}: ${t}\n`)}})}var ge=100,Pn=60,Fn=\"    \";function Rn({source:e,line:t,column:r,baseLine:n,baseColumn:s},o){function a(T,j){return i.slice(T,j).map((tt,$t)=>String(T+$t+1).padStart(k)+\" |\"+tt).join(`\n`)}let h=`\n`.repeat(Math.max(n-1,0)),l=\" \".repeat(Math.max(s-1,0)),i=(h+l+e).split(/\\r\\n?|\\n|\\f/),c=Math.max(1,t-o)-1,f=Math.min(t+o,i.length+1),k=Math.max(4,String(f).length)+1,S=0;r+=(Fn.length-1)*(i[t-1].substr(0,r-1).match(/\\t/g)||[]).length,r>ge&&(S=r-Pn+3,r=Pn-2);for(let T=c;T<=f;T++)T>=0&&T<i.length&&(i[T]=i[T].replace(/\\t/g,Fn),i[T]=(S>0&&i[T].length>S?\"\\u2026\":\"\")+i[T].substr(S,ge-2)+(i[T].length>S+ge-1?\"\\u2026\":\"\"));return[a(c,t),new Array(r+k+2).join(\"-\")+\"^\",a(t,f)].filter(Boolean).join(`\n`).replace(/^(\\s+\\d+\\s+\\|\\n)+/,\"\").replace(/\\n(\\s+\\d+\\s+\\|)+$/,\"\")}function Ce(e,t,r,n,s,o=1,a=1){return Object.assign(Dn(\"SyntaxError\",e),{source:t,offset:r,line:n,column:s,sourceFragment(l){return Rn({source:t,line:n,column:s,baseLine:o,baseColumn:a},isNaN(l)?0:l)},get formattedMessage(){return`Parse error: ${e}\n`+Rn({source:t,line:n,column:s,baseLine:o,baseColumn:a},2)}})}function On(e){let t=this.createList(),r=!1,n={recognizer:e};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:r=!0,this.next();continue}let s=e.getNode.call(this,n);if(s===void 0)break;r&&(e.onWhiteSpace&&e.onWhiteSpace.call(this,s,t,n),r=!1),t.push(s)}return r&&e.onWhiteSpace&&e.onWhiteSpace.call(this,null,t,n),t}var _n=()=>{},es=33,rs=35,ye=59,Mn=123,Bn=0;function ns(e){return function(){return this[e]()}}function be(e){let t=Object.create(null);for(let r of Object.keys(e)){let n=e[r],s=n.parse||n;s&&(t[r]=s)}return t}function is(e){let t={context:Object.create(null),features:Object.assign(Object.create(null),e.features),scope:Object.assign(Object.create(null),e.scope),atrule:be(e.atrule),pseudo:be(e.pseudo),node:be(e.node)};for(let[r,n]of Object.entries(e.parseContext))switch(typeof n){case\"function\":t.context[r]=n;break;case\"string\":t.context[r]=ns(n);break}return{config:t,...t,...t.node}}function Un(e){let t=\"\",r=\"<unknown>\",n=!1,s=_n,o=!1,a=new ne,h=Object.assign(new ie,is(e||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:On,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(i){return i===Mn?1:0},consumeUntilLeftCurlyBracketOrSemicolon(i){return i===Mn||i===ye?1:0},consumeUntilExclamationMarkOrSemicolon(i){return i===es||i===ye?1:0},consumeUntilSemicolonIncluded(i){return i===ye?2:0},createList(){return new P},createSingleNodeList(i){return new P().appendData(i)},getFirstListNode(i){return i&&i.first},getLastListNode(i){return i&&i.last},parseWithFallback(i,c){let f=this.tokenIndex;try{return i.call(this)}catch(k){if(o)throw k;this.skip(f-this.tokenIndex);let S=c.call(this);return o=!0,s(k,S),o=!1,S}},lookupNonWSType(i){let c;do if(c=this.lookupType(i++),c!==13&&c!==25)return c;while(c!==Bn);return Bn},charCodeAt(i){return i>=0&&i<t.length?t.charCodeAt(i):0},substring(i,c){return t.substring(i,c)},substrToCursor(i){return this.source.substring(i,this.tokenStart)},cmpChar(i,c){return ee(t,i,c)},cmpStr(i,c,f){return et(t,i,c,f)},consume(i){let c=this.tokenStart;return this.eat(i),this.substrToCursor(c)},consumeFunctionName(){let i=t.substring(this.tokenStart,this.tokenEnd-1);return this.eat(2),i},consumeNumber(i){let c=t.substring(this.tokenStart,Ot(t,this.tokenStart));return this.eat(i),c},eat(i){if(this.tokenType!==i){let c=gt[i].slice(0,-6).replace(/-/g,\" \").replace(/^./,S=>S.toUpperCase()),f=`${/[[\\](){}]/.test(c)?`\"${c}\"`:c} is expected`,k=this.tokenStart;switch(i){case 1:this.tokenType===2||this.tokenType===7?(k=this.tokenEnd-1,f=\"Identifier is expected but function found\"):f=\"Identifier is expected\";break;case 4:this.isDelim(rs)&&(this.next(),k++,f=\"Name is expected\");break;case 11:this.tokenType===10&&(k=this.tokenEnd,f=\"Percent sign is expected\");break}this.error(f,k)}this.next()},eatIdent(i){(this.tokenType!==1||this.lookupValue(0,i)===!1)&&this.error(`Identifier \"${i}\" is expected`),this.next()},eatDelim(i){this.isDelim(i)||this.error(`Delim \"${String.fromCharCode(i)}\" is expected`),this.next()},getLocation(i,c){return n?a.getLocationRange(i,c,r):null},getLocationFromList(i){if(n){let c=this.getFirstListNode(i),f=this.getLastListNode(i);return a.getLocationRange(c!==null?c.loc.start.offset-a.startOffset:this.tokenStart,f!==null?f.loc.end.offset-a.startOffset:this.tokenStart,r)}return null},error(i,c){let f=typeof c<\"u\"&&c<t.length?a.getLocation(c):this.eof?a.getLocation(Re(t,t.length-1)):a.getLocation(this.tokenStart);throw new Ce(i||\"Unexpected input\",t,f.offset,f.line,f.column,a.startLine,a.startColumn)}});return Object.assign(function(i,c){t=i,c=c||{},h.setSource(t,Bt),a.setSource(t,c.offset,c.line,c.column),r=c.filename||\"<unknown>\",n=Boolean(c.positions),s=typeof c.onParseError==\"function\"?c.onParseError:_n,o=!1,h.parseAtrulePrelude=\"parseAtrulePrelude\"in c?Boolean(c.parseAtrulePrelude):!0,h.parseRulePrelude=\"parseRulePrelude\"in c?Boolean(c.parseRulePrelude):!0,h.parseValue=\"parseValue\"in c?Boolean(c.parseValue):!0,h.parseCustomProperty=\"parseCustomProperty\"in c?Boolean(c.parseCustomProperty):!1;let{context:f=\"default\",onComment:k}=c;if(!(f in h.context))throw new Error(\"Unknown context `\"+f+\"`\");typeof k==\"function\"&&h.forEachToken((T,j,tt)=>{if(T===25){let $t=h.getLocation(j,tt),zn=et(t,tt-2,tt,\"*/\")?t.slice(j+2,tt-2):t.slice(j+2,tt);k(zn,$t)}});let S=h.context[f].call(h,c);return h.eof||h.error(),S},{SyntaxError:Ce,config:h.config})}var os=35,as=38,cs=42,ls=43,hs=47,Wn=46,us=62,fs=124,ps=126;function ms(e,t){t.last!==null&&t.last.type!==\"Combinator\"&&e!==null&&e.type!==\"Combinator\"&&t.push({type:\"Combinator\",loc:null,name:\" \"})}function ds(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===Wn&&this.error(\"Identifier is expected\",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case ls:case us:case ps:case hs:return this.Combinator();case Wn:return this.ClassSelector();case cs:case fs:return this.TypeSelector();case os:return this.IdSelector();case as:return this.NestingSelector()}break}}}var Le={onWhiteSpace:ms,getNode:ds};function Vn(){let e=this.createList();this.skipSC();t:for(;!this.eof;){switch(this.tokenType){case 1:e.push(this.Identifier());break;case 5:e.push(this.String());break;case 18:e.push(this.Operator());break;case 22:break t;default:this.error(\"Identifier, string or comma is expected\")}this.skipSC()}return e}var ot={parse(){return this.createSingleNodeList(this.SelectorList())}},Te={parse(){return this.createSingleNodeList(this.Selector())}},xs={parse(){return this.createSingleNodeList(this.Identifier())}},ks={parse:Vn},jt={parse(){return this.createSingleNodeList(this.Nth())}},Hn={dir:xs,has:ot,lang:ks,matches:ot,is:ot,\"-moz-any\":ot,\"-webkit-any\":ot,where:ot,not:ot,\"nth-child\":jt,\"nth-last-child\":jt,\"nth-last-of-type\":jt,\"nth-of-type\":jt,slotted:Te,host:Te,\"host-context\":Te};var ve={};vt(ve,{AnPlusB:()=>lr,AttributeSelector:()=>mr,ClassSelector:()=>Cr,Combinator:()=>Lr,IdSelector:()=>Br,Identifier:()=>_r,NestingSelector:()=>qr,Nth:()=>jr,Operator:()=>Qr,Percentage:()=>Jr,PseudoClassSelector:()=>tn,PseudoElementSelector:()=>rn,Raw:()=>on,Selector:()=>hn,SelectorList:()=>fn,String:()=>kn,TypeSelector:()=>bn});var Gn={parseContext:{default:\"SelectorList\",selectorList:\"SelectorList\",selector:\"Selector\"},scope:{Selector:Le},atrule:{},pseudo:Hn,node:ve};var Ee=Un(Gn);var at=(e,t)=>e.a===t.a?e.b===t.b?e.c-t.c:e.b-t.b:e.a-t.a,we=(e,t)=>at(e,t)===0,Ae=(e,t)=>at(e,t)>0,Ne=(e,t)=>at(e,t)<0;var qn=(e,t=\"ASC\")=>{let r=e.sort(at);return t===\"DESC\"?r.reverse():r},zt=(...e)=>qn(e,\"ASC\"),Kt=(...e)=>qn(e,\"DESC\");var bt=(...e)=>Kt(...e)[0],Yn=(...e)=>zt(...e)[0];var Lt=e=>{if(!e||e.type!==\"Selector\")throw new TypeError(\"Passed in source is not a Selector AST\");let t=0,r=0,n=0;return e.children.forEach(s=>{switch(s.type){case\"IdSelector\":t+=1;break;case\"AttributeSelector\":case\"ClassSelector\":r+=1;break;case\"PseudoClassSelector\":switch(s.name.toLowerCase()){case\"where\":break;case\"-webkit-any\":case\"any\":s.children?.first&&(r+=1);break;case\"-moz-any\":case\"is\":case\"matches\":case\"not\":case\"has\":if(s.children?.first){let a=bt(...ct(s.children.first));t+=a.a,r+=a.b,n+=a.c}break;case\"nth-child\":case\"nth-last-child\":if(r+=1,s.children?.first?.selector){let a=bt(...ct(s.children.first.selector));t+=a.a,r+=a.b,n+=a.c}break;case\"host-context\":case\"host\":if(r+=1,s.children?.first?.children){let a={type:\"Selector\",children:[]},h=!1;s.children.first.children.forEach(i=>{if(h)return!1;if(i.type===\"Combinator\")return h=!0,!1;a.children.push(i)});let l=ct(a)[0];t+=l.a,r+=l.b,n+=l.c}break;case\"after\":case\"before\":case\"first-letter\":case\"first-line\":n+=1;break;default:r+=1;break}break;case\"PseudoElementSelector\":switch(s.name){case\"slotted\":if(n+=1,s.children?.first?.children){let a={type:\"Selector\",children:[]},h=!1;s.children.first.children.forEach(i=>{if(h)return!1;if(i.type===\"Combinator\")return h=!0,!1;a.children.push(i)});let l=ct(a)[0];t+=l.a,r+=l.b,n+=l.c}break;case\"view-transition-group\":case\"view-transition-image-pair\":case\"view-transition-old\":case\"view-transition-new\":if(s.children?.first?.value===\"*\")break;n+=1;break;default:n+=1;break}break;case\"TypeSelector\":let o=s.name;o.includes(\"|\")&&(o=o.split(\"|\")[1]),o!==\"*\"&&(n+=1);break;default:break}}),new Ie({a:t,b:r,c:n},e)},Ss=e=>{if(typeof e==\"string\"||e instanceof String)try{return Ee(e,{context:\"selectorList\"})}catch(t){throw new TypeError(`Could not convert passed in source '${e}' to SelectorList: ${t.message}`)}if(e instanceof Object){if(e.type&&[\"Selector\",\"SelectorList\"].includes(e.type))return e;if(e.type&&e.type===\"Raw\")try{return Ee(e.value,{context:\"selectorList\"})}catch(t){throw new TypeError(`Could not convert passed in source to SelectorList: ${t.message}`)}throw new TypeError(\"Passed in source is an Object but no AST / AST of the type Selector or SelectorList\")}throw new TypeError(\"Passed in source is not a String nor an Object. I don't know what to do with it.\")},ct=e=>{if(!e)return[];let t=Ss(e);if(t.type===\"Selector\")return[Lt(e)];if(t.type===\"SelectorList\"){let r=[];return t.children.forEach(n=>{let s=Lt(n);r.push(s)}),r}};var Qt=class extends Error{constructor(){super(\"Manipulating a Specificity instance is not allowed. Instead, create a new Specificity()\")}},jn=class{constructor(t,r=null){this.value=t,this.selector=r}get a(){return this.value.a}set a(t){throw new Qt}get b(){return this.value.b}set b(t){throw new Qt}get c(){return this.value.c}set c(t){throw new Qt}selectorString(){return typeof this.selector==\"string\"||this.selector instanceof String?this.selector:this.selector instanceof Object&&this.selector.type===\"Selector\"?In(this.selector):\"\"}toObject(){return this.value}toArray(){return[this.value.a,this.value.b,this.value.c]}toString(){return`(${this.value.a},${this.value.b},${this.value.c})`}toJSON(){return{selector:this.selectorString(),asObject:this.toObject(),asArray:this.toArray(),asString:this.toString()}}isEqualTo(t){return we(this,t)}isGreaterThan(t){return Ae(this,t)}isLessThan(t){return Ne(this,t)}static calculate(t){return ct(t)}static calculateForAST(t){return Lt(t)}static compare(t,r){return at(t,r)}static equals(t,r){return we(t,r)}static lessThan(t,r){return Ne(t,r)}static greaterThan(t,r){return Ae(t,r)}static min(...t){return Yn(...t)}static max(...t){return bt(...t)}static sortAsc(...t){return zt(...t)}static sortDesc(...t){return Kt(...t)}},Ie=jn;module.exports=ti(gs);\n//# sourceMappingURL=index.cjs.map\n","\"use strict\";\n\n// https://drafts.csswg.org/css-color-4/#named-color\nconst namedColors = {\n  __proto__: null,\n  aliceblue: [0xF0, 0xF8, 0xFF],\n  antiquewhite: [0xFA, 0xEB, 0xD7],\n  aqua: [0x00, 0xFF, 0xFF],\n  aquamarine: [0x7F, 0xFF, 0xD4],\n  azure: [0xF0, 0xFF, 0xFF],\n  beige: [0xF5, 0xF5, 0xDC],\n  bisque: [0xFF, 0xE4, 0xC4],\n  black: [0x00, 0x00, 0x00],\n  blanchedalmond: [0xFF, 0xEB, 0xCD],\n  blue: [0x00, 0x00, 0xFF],\n  blueviolet: [0x8A, 0x2B, 0xE2],\n  brown: [0xA5, 0x2A, 0x2A],\n  burlywood: [0xDE, 0xB8, 0x87],\n  cadetblue: [0x5F, 0x9E, 0xA0],\n  chartreuse: [0x7F, 0xFF, 0x00],\n  chocolate: [0xD2, 0x69, 0x1E],\n  coral: [0xFF, 0x7F, 0x50],\n  cornflowerblue: [0x64, 0x95, 0xED],\n  cornsilk: [0xFF, 0xF8, 0xDC],\n  crimson: [0xDC, 0x14, 0x3C],\n  cyan: [0x00, 0xFF, 0xFF],\n  darkblue: [0x00, 0x00, 0x8B],\n  darkcyan: [0x00, 0x8B, 0x8B],\n  darkgoldenrod: [0xB8, 0x86, 0x0B],\n  darkgray: [0xA9, 0xA9, 0xA9],\n  darkgreen: [0x00, 0x64, 0x00],\n  darkgrey: [0xA9, 0xA9, 0xA9],\n  darkkhaki: [0xBD, 0xB7, 0x6B],\n  darkmagenta: [0x8B, 0x00, 0x8B],\n  darkolivegreen: [0x55, 0x6B, 0x2F],\n  darkorange: [0xFF, 0x8C, 0x00],\n  darkorchid: [0x99, 0x32, 0xCC],\n  darkred: [0x8B, 0x00, 0x00],\n  darksalmon: [0xE9, 0x96, 0x7A],\n  darkseagreen: [0x8F, 0xBC, 0x8F],\n  darkslateblue: [0x48, 0x3D, 0x8B],\n  darkslategray: [0x2F, 0x4F, 0x4F],\n  darkslategrey: [0x2F, 0x4F, 0x4F],\n  darkturquoise: [0x00, 0xCE, 0xD1],\n  darkviolet: [0x94, 0x00, 0xD3],\n  deeppink: [0xFF, 0x14, 0x93],\n  deepskyblue: [0x00, 0xBF, 0xFF],\n  dimgray: [0x69, 0x69, 0x69],\n  dimgrey: [0x69, 0x69, 0x69],\n  dodgerblue: [0x1E, 0x90, 0xFF],\n  firebrick: [0xB2, 0x22, 0x22],\n  floralwhite: [0xFF, 0xFA, 0xF0],\n  forestgreen: [0x22, 0x8B, 0x22],\n  fuchsia: [0xFF, 0x00, 0xFF],\n  gainsboro: [0xDC, 0xDC, 0xDC],\n  ghostwhite: [0xF8, 0xF8, 0xFF],\n  gold: [0xFF, 0xD7, 0x00],\n  goldenrod: [0xDA, 0xA5, 0x20],\n  gray: [0x80, 0x80, 0x80],\n  green: [0x00, 0x80, 0x00],\n  greenyellow: [0xAD, 0xFF, 0x2F],\n  grey: [0x80, 0x80, 0x80],\n  honeydew: [0xF0, 0xFF, 0xF0],\n  hotpink: [0xFF, 0x69, 0xB4],\n  indianred: [0xCD, 0x5C, 0x5C],\n  indigo: [0x4B, 0x00, 0x82],\n  ivory: [0xFF, 0xFF, 0xF0],\n  khaki: [0xF0, 0xE6, 0x8C],\n  lavender: [0xE6, 0xE6, 0xFA],\n  lavenderblush: [0xFF, 0xF0, 0xF5],\n  lawngreen: [0x7C, 0xFC, 0x00],\n  lemonchiffon: [0xFF, 0xFA, 0xCD],\n  lightblue: [0xAD, 0xD8, 0xE6],\n  lightcoral: [0xF0, 0x80, 0x80],\n  lightcyan: [0xE0, 0xFF, 0xFF],\n  lightgoldenrodyellow: [0xFA, 0xFA, 0xD2],\n  lightgray: [0xD3, 0xD3, 0xD3],\n  lightgreen: [0x90, 0xEE, 0x90],\n  lightgrey: [0xD3, 0xD3, 0xD3],\n  lightpink: [0xFF, 0xB6, 0xC1],\n  lightsalmon: [0xFF, 0xA0, 0x7A],\n  lightseagreen: [0x20, 0xB2, 0xAA],\n  lightskyblue: [0x87, 0xCE, 0xFA],\n  lightslategray: [0x77, 0x88, 0x99],\n  lightslategrey: [0x77, 0x88, 0x99],\n  lightsteelblue: [0xB0, 0xC4, 0xDE],\n  lightyellow: [0xFF, 0xFF, 0xE0],\n  lime: [0x00, 0xFF, 0x00],\n  limegreen: [0x32, 0xCD, 0x32],\n  linen: [0xFA, 0xF0, 0xE6],\n  magenta: [0xFF, 0x00, 0xFF],\n  maroon: [0x80, 0x00, 0x00],\n  mediumaquamarine: [0x66, 0xCD, 0xAA],\n  mediumblue: [0x00, 0x00, 0xCD],\n  mediumorchid: [0xBA, 0x55, 0xD3],\n  mediumpurple: [0x93, 0x70, 0xDB],\n  mediumseagreen: [0x3C, 0xB3, 0x71],\n  mediumslateblue: [0x7B, 0x68, 0xEE],\n  mediumspringgreen: [0x00, 0xFA, 0x9A],\n  mediumturquoise: [0x48, 0xD1, 0xCC],\n  mediumvioletred: [0xC7, 0x15, 0x85],\n  midnightblue: [0x19, 0x19, 0x70],\n  mintcream: [0xF5, 0xFF, 0xFA],\n  mistyrose: [0xFF, 0xE4, 0xE1],\n  moccasin: [0xFF, 0xE4, 0xB5],\n  navajowhite: [0xFF, 0xDE, 0xAD],\n  navy: [0x00, 0x00, 0x80],\n  oldlace: [0xFD, 0xF5, 0xE6],\n  olive: [0x80, 0x80, 0x00],\n  olivedrab: [0x6B, 0x8E, 0x23],\n  orange: [0xFF, 0xA5, 0x00],\n  orangered: [0xFF, 0x45, 0x00],\n  orchid: [0xDA, 0x70, 0xD6],\n  palegoldenrod: [0xEE, 0xE8, 0xAA],\n  palegreen: [0x98, 0xFB, 0x98],\n  paleturquoise: [0xAF, 0xEE, 0xEE],\n  palevioletred: [0xDB, 0x70, 0x93],\n  papayawhip: [0xFF, 0xEF, 0xD5],\n  peachpuff: [0xFF, 0xDA, 0xB9],\n  peru: [0xCD, 0x85, 0x3F],\n  pink: [0xFF, 0xC0, 0xCB],\n  plum: [0xDD, 0xA0, 0xDD],\n  powderblue: [0xB0, 0xE0, 0xE6],\n  purple: [0x80, 0x00, 0x80],\n  rebeccapurple: [0x66, 0x33, 0x99],\n  red: [0xFF, 0x00, 0x00],\n  rosybrown: [0xBC, 0x8F, 0x8F],\n  royalblue: [0x41, 0x69, 0xE1],\n  saddlebrown: [0x8B, 0x45, 0x13],\n  salmon: [0xFA, 0x80, 0x72],\n  sandybrown: [0xF4, 0xA4, 0x60],\n  seagreen: [0x2E, 0x8B, 0x57],\n  seashell: [0xFF, 0xF5, 0xEE],\n  sienna: [0xA0, 0x52, 0x2D],\n  silver: [0xC0, 0xC0, 0xC0],\n  skyblue: [0x87, 0xCE, 0xEB],\n  slateblue: [0x6A, 0x5A, 0xCD],\n  slategray: [0x70, 0x80, 0x90],\n  slategrey: [0x70, 0x80, 0x90],\n  snow: [0xFF, 0xFA, 0xFA],\n  springgreen: [0x00, 0xFF, 0x7F],\n  steelblue: [0x46, 0x82, 0xB4],\n  tan: [0xD2, 0xB4, 0x8C],\n  teal: [0x00, 0x80, 0x80],\n  thistle: [0xD8, 0xBF, 0xD8],\n  tomato: [0xFF, 0x63, 0x47],\n  turquoise: [0x40, 0xE0, 0xD0],\n  violet: [0xEE, 0x82, 0xEE],\n  wheat: [0xF5, 0xDE, 0xB3],\n  white: [0xFF, 0xFF, 0xFF],\n  whitesmoke: [0xF5, 0xF5, 0xF5],\n  yellow: [0xFF, 0xFF, 0x00],\n  yellowgreen: [0x9A, 0xCD, 0x32]\n};\n\n// Implements some of https://drafts.csswg.org/css-color-4/#resolving-sRGB-values and\n// https://drafts.csswg.org/css-color-4/#serializing-sRGB-values, in a somewhat fragile way since\n// we're not using a real parser/serializer. Attempts to cover:\n// * hex colors\n// * 'rgb()' and 'rgba()' values\n// * named colors\n// * 'transparent'\n\nexports.getSpecifiedColor = color => {\n  const lowercasedColor = color.toLowerCase();\n  if (Object.hasOwn(namedColors, lowercasedColor) || lowercasedColor === \"transparent\") {\n    return lowercasedColor;\n  }\n\n  return sharedSpecifiedAndComputedAndUsed(color);\n};\n\nexports.getComputedOrUsedColor = color => {\n  const lowercasedColor = color.toLowerCase();\n  const fromNamedColors = namedColors[lowercasedColor];\n  if (fromNamedColors !== undefined) {\n    return `rgb(${fromNamedColors.join(\", \")})`;\n  }\n\n  if (lowercasedColor === \"transparent\") {\n    return \"rgba(0, 0, 0, 0)\";\n  }\n\n  return sharedSpecifiedAndComputedAndUsed(color);\n};\n\nfunction sharedSpecifiedAndComputedAndUsed(color) {\n  if (/^#[0-9A-Fa-f]{6}$/.test(color) || /^#[0-9A-Fa-f]{3}$/.test(color)) {\n    return hexToRGB(color.slice(1));\n  }\n\n  if (/^#[0-9A-Fa-f]{8}$/.test(color) || /^#[0-9A-Fa-f]{4}$/.test(color)) {\n    return hexToRGBA(color.slice(1));\n  }\n\n  if (/^rgba?\\(/.test(color)) {\n    return color.split(\",\").map(s => s.trim()).join(\", \");\n  }\n\n  return color;\n}\n\nfunction hexToRGB(color) {\n  if (color.length === 6) {\n    const [r1, r2, g1, g2, b1, b2] = color.split(\"\");\n\n    return `rgb(${hexesToDecimals([r1, r2], [g1, g2], [b1, b2]).join(\", \")})`;\n  }\n\n  if (color.length === 3) {\n    const [r1, g1, b1] = color.split(\"\");\n\n    return `rgb(${hexesToDecimals([r1, r1], [g1, g1], [b1, b1]).join(\", \")})`;\n  }\n\n  return \"rgb(0, 0, 0)\";\n}\n\nfunction hexToRGBA(color) {\n  if (color.length === 8) {\n    const [r1, r2, g1, g2, b1, b2, a1, a2] = color.split(\"\");\n\n    return `rgba(${hexesToDecimals([r1, r2], [g1, g2], [b1, b2]).join(\", \")}, ${hexToPercent(a1, a2)})`;\n  }\n\n  if (color.length === 4) {\n    const [r1, g1, b1, a1] = color.split(\"\");\n\n    return `rgba(${hexesToDecimals([r1, r1], [g1, g1], [b1, b1]).join(\", \")}, ${hexToPercent(a1, a1)})`;\n  }\n\n  return \"rgba(0, 0, 0, 1)\";\n}\n\nfunction hexToDecimal(d1, d2) {\n  return parseInt(d1, 16) * 16 + parseInt(d2, 16);\n}\n\nfunction hexesToDecimals(...hexes) {\n  return hexes.map(pair => hexToDecimal(pair[0], pair[1]));\n}\n\nfunction hexToPercent(d1, d2) {\n  return Math.floor(1000 * hexToDecimal(d1, d2) / 255) / 1000;\n}\n","\"use strict\";\n\n// https://drafts.csswg.org/css-color-4/#css-system-colors\nmodule.exports.systemColors = new Map([\n  [\n    \"accentcolor\", {\n      light: \"rgb(0, 153, 255)\",\n      dark: \"rgb(0, 51, 255)\"\n    }\n  ],\n  [\n    \"accentcolortext\", {\n      light: \"rgb(0, 0, 0)\",\n      dark: \"rgb(255, 255, 255)\"\n    }\n  ],\n  [\n    \"activetext\", {\n      light: \"rgb(255, 0, 0)\",\n      dark: \"rgb(255, 102, 102)\"\n    }\n  ],\n  [\n    \"buttonborder\", {\n      light: \"rgb(51, 51, 51)\",\n      dark: \"rgb(204, 204, 204)\"\n    }\n  ],\n  [\n    \"buttonface\", {\n      light: \"rgb(204, 204, 204)\",\n      dark: \"rgb(51, 51, 51)\"\n    }\n  ],\n  [\n    \"buttontext\", {\n      light: \"rgb(0, 0, 0)\",\n      dark: \"rgb(255, 255, 155)\"\n    }\n  ],\n  [\n    \"canvas\", {\n      light: \"rgb(255, 255, 255)\",\n      dark: \"rgb(0, 0, 0)\"\n    }\n  ],\n  [\n    \"canvastext\", {\n      light: \"rgb(0, 0, 0)\",\n      dark: \"rgb(255, 255, 255)\"\n    }\n  ],\n  [\n    \"field\", {\n      light: \"rgb(255, 255, 255)\",\n      dark: \"rgb(0, 0, 0)\"\n    }\n  ],\n  [\n    \"fieldtext\", {\n      light: \"rgb(0, 0, 0)\",\n      dark: \"rgb(255, 255, 255)\"\n    }\n  ],\n  [\n    \"graytext\", {\n      light: \"rgb(102, 102, 102)\",\n      dark: \"rgb(153, 153, 153)\"\n    }\n  ],\n  [\n    \"highlight\", {\n      light: \"rgb(0, 153, 255)\",\n      dark: \"rgb(0, 51, 255)\"\n    }\n  ],\n  [\n    \"highlighttext\", {\n      light: \"rgb(255, 255, 255)\",\n      dark: \"rgb(0, 0, 0)\"\n    }\n  ],\n  [\n    \"linktext\", {\n      light: \"rgb(0, 0, 255)\",\n      dark: \"rgb(0, 204, 255)\"\n    }\n  ],\n  [\n    \"mark\", {\n      light: \"rgb(255, 255, 0)\",\n      dark: \"rgb(204, 0, 153)\"\n    }\n  ],\n  [\n    \"marktext\", {\n      light: \"rgb(0, 0, 0)\",\n      dark: \"rgb(255, 255, 255)\"\n    }\n  ],\n  [\n    \"selecteditem\", {\n      light: \"rgb(0, 153, 255)\",\n      dark: \"rgb(0, 51, 255)\"\n    }\n  ],\n  [\n    \"selecteditemtext\", {\n      light: \"rgb(255, 255, 255)\",\n      dark: \"rgb(0, 0, 0)\"\n    }\n  ],\n  [\n    \"visitedtext\", {\n      light: \"rgb(128, 0, 128)\",\n      dark: \"rgb(255, 51, 255)\"\n    }\n  ]\n]);\n\n// Deprecated system colors\n// https://drafts.csswg.org/css-color-4/#deprecated-system-colors\nmodule.exports.deprecatedAliases = new Map([\n  [\"activeborder\", \"buttonborder\"],\n  [\"activecaption\", \"canvas\"],\n  [\"appworkspace\", \"canvas\"],\n  [\"background\", \"canvas\"],\n  [\"buttonhighlight\", \"buttonface\"],\n  [\"buttonshadow\", \"buttonface\"],\n  [\"captiontext\", \"canvastext\"],\n  [\"inactiveborder\", \"buttonborder\"],\n  [\"inactivecaption\", \"canvas\"],\n  [\"inactivecaptiontext\", \"graytext\"],\n  [\"infobackground\", \"canvas\"],\n  [\"infotext\", \"canvastext\"],\n  [\"menu\", \"canvas\"],\n  [\"menutext\", \"canvastext\"],\n  [\"scrollbar\", \"canvas\"],\n  [\"threeddarkshadow\", \"buttonborder\"],\n  [\"threedface\", \"buttonface\"],\n  [\"threedhighlight\", \"buttonborder\"],\n  [\"threedlightshadow\", \"buttonborder\"],\n  [\"threedshadow\", \"buttonborder\"],\n  [\"window\", \"canvas\"],\n  [\"windowframe\", \"buttonborder\"],\n  [\"windowtext\", \"canvastext\"]\n]);\n","\"use strict\";\n\nconst fs = require(\"node:fs\");\nconst path = require(\"node:path\");\nconst cssom = require(\"@acemir/cssom\");\nconst Specificity = require(\"@bramus/specificity\").default;\nconst { CSSStyleDeclaration } = require(\"cssstyle\");\nconst { wrapperForImpl } = require(\"../../../generated/idl/utils\");\nconst { getSpecifiedColor, getComputedOrUsedColor } = require(\"./colors\");\nconst { asciiLowercase } = require(\"./strings\");\nconst { deprecatedAliases, systemColors } = require(\"./system-colors\");\n\nconst defaultStyleSheet = fs.readFileSync(\n  path.resolve(__dirname, \"../../browser/default-stylesheet.css\"),\n  { encoding: \"utf-8\" }\n);\nlet parsedDefaultStyleSheet;\n\n// Properties for which getResolvedValue is implemented. This is less than\n// every supported property.\n// https://drafts.csswg.org/indexes/#properties\nconst propertiesWithResolvedValueImplemented = {\n  \"__proto__\": null,\n\n  // https://drafts.csswg.org/css2/visufx.html#visibility\n  \"visibility\": {\n    inherited: true,\n    initial: \"visible\",\n    computedValue: \"as-specified\"\n  },\n  // https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty\n  \"pointer-events\": {\n    inherited: true,\n    initial: \"auto\",\n    computedValue: \"as-specified\"\n  },\n  // https://drafts.csswg.org/css-backgrounds-3/#propdef-background-color\n  \"background-color\": {\n    inherited: false,\n    initial: \"transparent\",\n    computedValue: \"computed-color\"\n  },\n  // https://drafts.csswg.org/css-logical-1/#propdef-border-block-end-color\n  \"border-block-start-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  \"border-block-end-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  \"border-inline-start-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  \"border-inline-end-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  // https://drafts.csswg.org/css-backgrounds-3/#propdef-border-bottom-color\n  \"border-top-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  \"border-right-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  \"border-bottom-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  \"border-left-color\": {\n    inherited: false,\n    initial: \"currentcolor\",\n    computedValue: \"computed-color\"\n  },\n  // https://drafts.csswg.org/css-ui-4/#propdef-caret-color\n  \"caret-color\": {\n    inherited: true,\n    initial: \"auto\",\n    computedValue: \"computed-color\"\n  },\n  // https://drafts.csswg.org/css-color-4/#propdef-color\n  \"color\": {\n    inherited: true,\n    initial: \"canvastext\",\n    computedValue: \"computed-color\"\n  },\n  // https://drafts.csswg.org/css-ui-4/#propdef-outline-color\n  \"outline-color\": {\n    inherited: false,\n    initial: \"invert\",\n    computedValue: \"computed-color\"\n  },\n  // https://drafts.csswg.org/css-display/#the-display-properties\n  // Currently only \"as-specified\" is supported as a computed value\n  \"display\": {\n    inherited: false,\n    initial: \"inline\",\n    computedValue: \"as-specified\"\n  }\n};\nconst implementedProperties = Object.keys(propertiesWithResolvedValueImplemented);\n\nfunction getComputedStyleDeclaration(elementImpl) {\n  const styleCache = elementImpl._ownerDocument._styleCache;\n  const cachedDeclaration = styleCache.get(elementImpl);\n  if (cachedDeclaration) {\n    const opts = prepareCssstyleOpts(elementImpl);\n    const clonedDeclaration = new CSSStyleDeclaration(null, opts);\n    // TODO: Remove when cssstyle options are ready.\n    clonedDeclaration._global = elementImpl._globalObject;\n    clonedDeclaration._computed = true;\n\n    for (let i = 0; i < cachedDeclaration.length; i++) {\n      const property = cachedDeclaration.item(i);\n      const value = cachedDeclaration.getPropertyValue(property);\n      const priority = cachedDeclaration.getPropertyPriority(property);\n      clonedDeclaration.setProperty(property, value, priority);\n    }\n\n    return clonedDeclaration;\n  }\n\n  const declaration = prepareComputedStyleDeclaration(elementImpl, { styleCache });\n\n  // TODO: Remove later.\n  for (const property of implementedProperties) {\n    declaration.setProperty(property, getResolvedValue(elementImpl, property));\n  }\n  declaration._readonly = true;\n\n  return declaration;\n}\n\nfunction prepareComputedStyleDeclaration(elementImpl, { styleCache }) {\n  const opts = prepareCssstyleOpts(elementImpl);\n  const declaration = new CSSStyleDeclaration(null, opts);\n  // TODO: Remove when cssstyle options are ready.\n  declaration._global = elementImpl._globalObject;\n  declaration._computed = true;\n\n  applyStyleSheetRules(elementImpl, declaration);\n\n  for (let i = 0; i < elementImpl.style.length; i++) {\n    const { style } = elementImpl;\n    handlePropertyForInlineStyle(style.item(i), declaration, style);\n  }\n\n  styleCache.set(elementImpl, declaration);\n\n  return declaration;\n}\n\nfunction prepareCssstyleOpts(elementImpl) {\n  // TODO: Prepare options for cssstyle.\n  const opts = {\n    context: wrapperForImpl(elementImpl)\n  };\n\n  return opts;\n}\n\nfunction applyStyleSheetRules(elementImpl, declaration) {\n  if (!parsedDefaultStyleSheet) {\n    parsedDefaultStyleSheet = cssom.parse(defaultStyleSheet);\n  }\n\n  const specificities = new Map();\n  handleSheet(parsedDefaultStyleSheet, elementImpl, declaration, specificities);\n  for (const sheet of elementImpl._ownerDocument.styleSheets._list) {\n    handleSheet(sheet, elementImpl, declaration, specificities);\n  }\n}\n\nfunction handleSheet(sheet, elementImpl, declaration, specificities) {\n  for (const rule of sheet.cssRules) {\n    if (rule.media) {\n      let hasMediaScreen = false;\n      for (let i = 0; i < rule.media.length; i++) {\n        const mediaType = rule.media[i];\n        hasMediaScreen = mediaType === \"screen\";\n        if (hasMediaScreen) {\n          break;\n        }\n      }\n      if (rule.constructor.name === \"CSSImportRule\") {\n        // Handle @import rules if:\n        // - imported sheet loaded successfully\n        // - media is empty or matches \"screen\"\n        if (rule.styleSheet !== null && (rule.media.length === 0 || hasMediaScreen)) {\n          for (const innerRule of rule.styleSheet.cssRules) {\n            const { ast, match } = matches(innerRule, elementImpl);\n            if (match) {\n              handleRule(innerRule, declaration, specificities, ast);\n            }\n          }\n        }\n        // Keep handling @media rules only if media matches \"screen\"\n      } else if (hasMediaScreen) {\n        for (const innerRule of rule.cssRules) {\n          const { ast, match } = matches(innerRule, elementImpl);\n          if (match) {\n            handleRule(innerRule, declaration, specificities, ast);\n          }\n        }\n      }\n    } else {\n      const { ast, match } = matches(rule, elementImpl);\n      if (match) {\n        handleRule(rule, declaration, specificities, ast);\n      }\n    }\n  }\n}\n\nfunction handleRule(rule, declaration, specificities, ast) {\n  const { style } = rule;\n  for (let i = 0; i < style.length; i++) {\n    const property = style[i];\n    handleProperty(property, declaration, style, specificities, ast);\n  }\n}\n\nfunction handleProperty(property, declaration, style, specificities, ast) {\n  const value = style.getPropertyValue(property);\n  const priority = style.getPropertyPriority(property);\n  if (priority) {\n    declaration.setProperty(property, value, priority);\n  } else if (!declaration.getPropertyPriority(property)) {\n    const { value: specificity } = Specificity.max(...Specificity.calculate(ast));\n    if (specificities.has(property)) {\n      if (Specificity.compare(specificity, specificities.get(property)) >= 0) {\n        specificities.set(property, specificity);\n        declaration.setProperty(property, value);\n      }\n    } else {\n      specificities.set(property, specificity);\n      declaration.setProperty(property, value);\n    }\n  }\n}\n\nfunction handlePropertyForInlineStyle(property, declaration, style) {\n  const value = style.getPropertyValue(property);\n  const priority = style.getPropertyPriority(property);\n  if (!declaration.getPropertyPriority(property) || priority) {\n    declaration.setProperty(property, value, priority);\n  }\n}\n\nfunction matches(rule, elementImpl) {\n  try {\n    const { selectorText } = rule;\n    const domSelector = elementImpl._ownerDocument._domSelector;\n    const { ast, match, pseudoElement } = domSelector.check(selectorText, elementImpl);\n    // `pseudoElement` is a pseudo-element selector (e.g. `::before`).\n    // However, we do not support getComputedStyle(element, pseudoElement), so `match` is set to `false`.\n    if (pseudoElement) {\n      return {\n        match: false\n      };\n    }\n    return { ast, match, pseudoElement };\n  } catch {\n    // fall through\n  }\n  return {\n    match: false\n  };\n}\n\n// Naive implementation of https://drafts.csswg.org/css-cascade-4/#cascading\n// based on the previous jsdom implementation of getComputedStyle.\n// Does not implement https://drafts.csswg.org/css-cascade-4/#cascade-specificity,\n// or rather specificity is only implemented by the order in which the matching\n// rules appear. The last rule is the most specific while the first rule is\n// the least specific.\nfunction getCascadedPropertyValue(element, property) {\n  return getComputedStyleDeclaration(element).getPropertyValue(property);\n}\n\n// https://drafts.csswg.org/css-cascade-4/#specified-value\nfunction getSpecifiedValue(element, property) {\n  const { initial, inherited, computedValue } = propertiesWithResolvedValueImplemented[property];\n  const cascade = getCascadedPropertyValue(element, property);\n\n  if (cascade !== \"\") {\n    if (computedValue === \"computed-color\") {\n      return getSpecifiedColor(cascade);\n    }\n\n    return cascade;\n  }\n\n  // Defaulting\n  if (inherited && element.parentElement !== null) {\n    return getComputedValue(element.parentElement, property);\n  }\n\n  // root element without parent element or inherited property\n  return initial;\n}\n\n// https://drafts.csswg.org/css-cascade-4/#computed-value\nfunction getComputedValue(element, property) {\n  const { computedValue, inherited, initial } = propertiesWithResolvedValueImplemented[property];\n  let specifiedValue = getSpecifiedValue(element, property);\n  // https://drafts.csswg.org/css-cascade/#defaulting-keywords\n  switch (specifiedValue) {\n    case \"initial\": {\n      specifiedValue = initial;\n      break;\n    }\n    case \"inherit\": {\n      if (element.parentElement !== null) {\n        specifiedValue = getComputedValue(element.parentElement, property);\n      } else {\n        specifiedValue = initial;\n      }\n      break;\n    }\n    case \"unset\": {\n      if (inherited && element.parentElement !== null) {\n        specifiedValue = getComputedValue(element.parentElement, property);\n      } else {\n        specifiedValue = initial;\n      }\n      break;\n    }\n    // TODO: https://drafts.csswg.org/css-cascade-5/#revert-layer\n    case \"revert-layer\": {\n      break;\n    }\n    // TODO: https://drafts.csswg.org/css-cascade-5/#default\n    case \"revert\": {\n      break;\n    }\n    default: {\n      // fall through; specifiedValue is not a CSS-wide keyword.\n    }\n  }\n  if (computedValue === \"as-specified\") {\n    return specifiedValue;\n  } else if (computedValue === \"computed-color\") {\n    let value = asciiLowercase(specifiedValue);\n    // https://drafts.csswg.org/css-color-4/#resolving-other-colors\n    if (specifiedValue === \"currentcolor\") {\n      if (property === \"color\") {\n        if (element.parentElement !== null) {\n          return getComputedValue(element.parentElement, \"color\");\n        }\n        value = initial;\n      } else {\n        return getComputedValue(element, \"color\");\n      }\n    }\n    if (systemColors.has(value) || deprecatedAliases.has(value)) {\n      let key = value;\n      if (deprecatedAliases.has(value)) {\n        key = deprecatedAliases.get(value);\n      }\n      const { light, dark } = systemColors.get(key);\n      const colorScheme = getCascadedPropertyValue(element, \"color-scheme\");\n      if (colorScheme === \"dark\") {\n        return dark;\n      }\n      return light;\n    }\n    return getComputedOrUsedColor(specifiedValue);\n  }\n\n  throw new TypeError(`Internal error: unrecognized computed value instruction '${computedValue}'`);\n}\n\n// https://drafts.csswg.org/cssom/#resolved-value\n// Only implements the properties that are defined in propertiesWithResolvedValueImplemented.\nfunction getResolvedValue(element, property) {\n  // We can always use the computed value with the current set of propertiesWithResolvedValueImplemented:\n  // * Color properties end up with the used value, but we don't implement any actual differences between used and\n  //   computed that https://drafts.csswg.org/css-cascade-5/#used-value gestures at.\n  // * The other properties fall back to the \"any other property: The resolved value is the computed value.\" case.\n  return getComputedValue(element, property);\n}\n\nfunction invalidateStyleCache(elementImpl) {\n  if (elementImpl._attached) {\n    elementImpl._ownerDocument._styleCache = new WeakMap();\n  }\n}\n\nmodule.exports = {\n  SHADOW_DOM_PSEUDO_REGEXP: /^::(?:part|slotted)\\(/i,\n  getComputedStyleDeclaration,\n  invalidateStyleCache\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst EventTargetImpl = require(\"../events/EventTarget-impl\").implementation;\nconst { simultaneousIterators } = require(\"../../utils\");\nconst NODE_TYPE = require(\"../node-type\");\nconst NODE_DOCUMENT_POSITION = require(\"../node-document-position\");\nconst { clone, locateNamespacePrefix, locateNamespace } = require(\"../node\");\nconst { setAnExistingAttributeValue } = require(\"../attributes\");\n\nconst NodeList = require(\"../../../generated/idl/NodeList\");\n\nconst { nodeRoot, nodeLength, isInclusiveAncestor } = require(\"../helpers/node\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { queueTreeMutationRecord } = require(\"../helpers/mutation-observers\");\nconst { enqueueCECallbackReaction, tryUpgradeElement } = require(\"../helpers/custom-elements\");\nconst {\n  isShadowRoot, shadowIncludingRoot, assignSlot, assignSlotableForTree, assignSlotable, signalSlotChange, isSlot,\n  shadowIncludingInclusiveDescendantsIterator, shadowIncludingDescendantsIterator\n} = require(\"../helpers/shadow-dom\");\nconst { invalidateStyleCache } = require(\"../helpers/style-rules\");\n\nfunction nodeEquals(a, b) {\n  if (a.nodeType !== b.nodeType) {\n    return false;\n  }\n\n  switch (a.nodeType) {\n    case NODE_TYPE.DOCUMENT_TYPE_NODE:\n      if (a.name !== b.name || a.publicId !== b.publicId ||\n          a.systemId !== b.systemId) {\n        return false;\n      }\n      break;\n    case NODE_TYPE.ELEMENT_NODE:\n      if (a._namespaceURI !== b._namespaceURI || a._prefix !== b._prefix || a._localName !== b._localName ||\n          a._attributeList.length !== b._attributeList.length) {\n        return false;\n      }\n      break;\n    case NODE_TYPE.ATTRIBUTE_NODE:\n      if (a._namespace !== b._namespace || a._localName !== b._localName || a._value !== b._value) {\n        return false;\n      }\n      break;\n    case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n      if (a._target !== b._target || a._data !== b._data) {\n        return false;\n      }\n      break;\n    case NODE_TYPE.TEXT_NODE:\n    case NODE_TYPE.COMMENT_NODE:\n      if (a._data !== b._data) {\n        return false;\n      }\n      break;\n  }\n\n  if (a.nodeType === NODE_TYPE.ELEMENT_NODE && !attributeListsEqual(a, b)) {\n    return false;\n  }\n\n  for (const nodes of simultaneousIterators(domSymbolTree.childrenIterator(a), domSymbolTree.childrenIterator(b))) {\n    if (!nodes[0] || !nodes[1]) {\n      // mismatch in the amount of childNodes\n      return false;\n    }\n\n    if (!nodeEquals(nodes[0], nodes[1])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n// Needed by https://dom.spec.whatwg.org/#concept-node-equals\nfunction attributeListsEqual(elementA, elementB) {\n  const listA = elementA._attributeList;\n  const listB = elementB._attributeList;\n\n  const lengthA = listA.length;\n  const lengthB = listB.length;\n\n  if (lengthA !== lengthB) {\n    return false;\n  }\n\n  for (let i = 0; i < lengthA; ++i) {\n    const attrA = listA[i];\n\n    if (!listB.some(attrB => nodeEquals(attrA, attrB))) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n// https://dom.spec.whatwg.org/#concept-tree-host-including-inclusive-ancestor\nfunction isHostInclusiveAncestor(nodeImplA, nodeImplB) {\n  for (const ancestor of domSymbolTree.ancestorsIterator(nodeImplB)) {\n    if (ancestor === nodeImplA) {\n      return true;\n    }\n  }\n\n  const rootImplB = nodeRoot(nodeImplB);\n  if (rootImplB._host) {\n    return isHostInclusiveAncestor(nodeImplA, rootImplB._host);\n  }\n\n  return false;\n}\n\nclass NodeImpl extends EventTargetImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    domSymbolTree.initialize(this);\n\n    this._ownerDocument = privateData.ownerDocument;\n\n    this._childNodesList = null;\n    this._childrenList = null;\n    this._version = 0;\n    this._cachedRoot = null;\n    this._memoizedQueries = {};\n    this._registeredObserverList = [];\n    this._referencedRanges = new Set(); // Set of WeakRef<Range>\n  }\n\n  // Generator that yields live Range objects from _referencedRanges,\n  // cleaning up any dead WeakRefs encountered during iteration.\n  * _liveRanges() {\n    for (const weakRef of this._referencedRanges) {\n      const range = weakRef.deref();\n      if (range) {\n        yield range;\n      } else {\n        // Range was garbage collected - remove the dead WeakRef\n        this._referencedRanges.delete(weakRef);\n      }\n    }\n  }\n\n  _getTheParent() {\n    if (this._assignedSlot) {\n      return this._assignedSlot;\n    }\n\n    return domSymbolTree.parent(this);\n  }\n\n  get parentNode() {\n    return domSymbolTree.parent(this);\n  }\n\n  getRootNode(options) {\n    return options?.composed ? shadowIncludingRoot(this) : nodeRoot(this);\n  }\n\n  get nodeName() {\n    switch (this.nodeType) {\n      case NODE_TYPE.ELEMENT_NODE:\n        return this.tagName;\n      case NODE_TYPE.ATTRIBUTE_NODE:\n        return this._qualifiedName;\n      case NODE_TYPE.TEXT_NODE:\n        return \"#text\";\n      case NODE_TYPE.CDATA_SECTION_NODE:\n        return \"#cdata-section\";\n      case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n        return this.target;\n      case NODE_TYPE.COMMENT_NODE:\n        return \"#comment\";\n      case NODE_TYPE.DOCUMENT_NODE:\n        return \"#document\";\n      case NODE_TYPE.DOCUMENT_TYPE_NODE:\n        return this.name;\n      case NODE_TYPE.DOCUMENT_FRAGMENT_NODE:\n        return \"#document-fragment\";\n    }\n\n    // should never happen\n    return null;\n  }\n\n  get firstChild() {\n    return domSymbolTree.firstChild(this);\n  }\n\n  // https://dom.spec.whatwg.org/#connected\n  // https://dom.spec.whatwg.org/#dom-node-isconnected\n  get isConnected() {\n    const root = shadowIncludingRoot(this);\n    return root && root.nodeType === NODE_TYPE.DOCUMENT_NODE;\n  }\n\n  get ownerDocument() {\n    return this.nodeType === NODE_TYPE.DOCUMENT_NODE ? null : this._ownerDocument;\n  }\n\n  get lastChild() {\n    return domSymbolTree.lastChild(this);\n  }\n\n  get childNodes() {\n    if (!this._childNodesList) {\n      this._childNodesList = NodeList.createImpl(this._globalObject, [], {\n        element: this,\n        query: () => domSymbolTree.childrenToArray(this)\n      });\n    } else {\n      this._childNodesList._update();\n    }\n\n    return this._childNodesList;\n  }\n\n  get nextSibling() {\n    return domSymbolTree.nextSibling(this);\n  }\n\n  get previousSibling() {\n    return domSymbolTree.previousSibling(this);\n  }\n\n  _modified() {\n    this._version++;\n    for (const ancestor of domSymbolTree.ancestorsIterator(this)) {\n      ancestor._version++;\n    }\n\n    if (this._childrenList) {\n      this._childrenList._update();\n    }\n    if (this._childNodesList) {\n      this._childNodesList._update();\n    }\n    this._clearMemoizedQueries();\n    invalidateStyleCache(this);\n  }\n\n  _childTextContentChangeSteps() {\n    invalidateStyleCache(this);\n  }\n\n  _clearMemoizedQueries() {\n    this._memoizedQueries = {};\n    const myParent = domSymbolTree.parent(this);\n    if (myParent) {\n      myParent._clearMemoizedQueries();\n    }\n  }\n\n  _descendantRemoved(parent, child) {\n    const myParent = domSymbolTree.parent(this);\n    if (myParent) {\n      myParent._descendantRemoved(parent, child);\n    }\n  }\n\n  _descendantAdded(parent, child) {\n    const myParent = domSymbolTree.parent(this);\n    if (myParent) {\n      myParent._descendantAdded(parent, child);\n    }\n  }\n\n  _attach() {\n    this._attached = true;\n\n    for (const child of domSymbolTree.childrenIterator(this)) {\n      if (child._attach) {\n        child._attach();\n      }\n    }\n  }\n\n  _detach() {\n    this._attached = false;\n\n    if (this._ownerDocument && this._ownerDocument._lastFocusedElement === this) {\n      this._ownerDocument._lastFocusedElement = null;\n    }\n\n    for (const child of domSymbolTree.childrenIterator(this)) {\n      if (child._detach) {\n        child._detach();\n      }\n    }\n  }\n\n  hasChildNodes() {\n    return domSymbolTree.hasChildren(this);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-node-normalize\n  normalize() {\n    // It is important to use a treeToArray instead of a treeToIterator here, because the\n    // treeToIterator doesn't support tree mutation in the middle of the traversal.\n    for (const node of domSymbolTree.treeToArray(this)) {\n      const parentNode = domSymbolTree.parent(node);\n      if (parentNode === null || node.nodeType !== NODE_TYPE.TEXT_NODE) {\n        continue;\n      }\n\n      let length = nodeLength(node);\n\n      if (length === 0) {\n        parentNode._remove(node);\n        continue;\n      }\n\n      const continuousExclusiveTextNodes = [];\n\n      for (const currentNode of domSymbolTree.previousSiblingsIterator(node)) {\n        if (currentNode.nodeType !== NODE_TYPE.TEXT_NODE) {\n          break;\n        }\n\n        continuousExclusiveTextNodes.unshift(currentNode);\n      }\n      for (const currentNode of domSymbolTree.nextSiblingsIterator(node)) {\n        if (currentNode.nodeType !== NODE_TYPE.TEXT_NODE) {\n          break;\n        }\n\n        continuousExclusiveTextNodes.push(currentNode);\n      }\n\n      const data = continuousExclusiveTextNodes.reduce((d, n) => d + n._data, \"\");\n      node.replaceData(length, 0, data);\n\n      let currentNode = domSymbolTree.nextSibling(node);\n      while (currentNode && currentNode.nodeType === NODE_TYPE.TEXT_NODE) {\n        const currentNodeIndex = domSymbolTree.index(currentNode);\n\n        for (const range of node._liveRanges()) {\n          const { _start, _end } = range;\n\n          if (_start.node === currentNode) {\n            range._setLiveRangeStart(node, _start.offset + length);\n          }\n          if (_end.node === currentNode) {\n            range._setLiveRangeEnd(node, _end.offset + length);\n          }\n        }\n\n        for (const range of parentNode._liveRanges()) {\n          const { _start, _end } = range;\n\n          if (_start.node === parentNode && _start.offset === currentNodeIndex) {\n            range._setLiveRangeStart(node, length);\n          }\n          if (_end.node === parentNode && _end.offset === currentNodeIndex) {\n            range._setLiveRangeEnd(node, length);\n          }\n        }\n\n        length += nodeLength(currentNode);\n        currentNode = domSymbolTree.nextSibling(currentNode);\n      }\n\n      for (const continuousExclusiveTextNode of continuousExclusiveTextNodes) {\n        parentNode._remove(continuousExclusiveTextNode);\n      }\n    }\n  }\n\n  get parentElement() {\n    const parentNode = domSymbolTree.parent(this);\n    return parentNode !== null && parentNode.nodeType === NODE_TYPE.ELEMENT_NODE ? parentNode : null;\n  }\n\n  get baseURI() {\n    return this._ownerDocument.baseURLSerialized();\n  }\n\n  compareDocumentPosition(other) {\n    // Let node1 be other and node2 be the context object.\n    let node1 = other;\n    let node2 = this;\n\n    let attr1 = null;\n    let attr2 = null;\n\n    if (node1.nodeType === NODE_TYPE.ATTRIBUTE_NODE) {\n      attr1 = node1;\n      node1 = attr1._element;\n    }\n\n    if (node2.nodeType === NODE_TYPE.ATTRIBUTE_NODE) {\n      attr2 = node2;\n      node2 = attr2._element;\n\n      if (attr1 !== null && node1 !== null && node2 === node1) {\n        for (const attr of node2._attributeList) {\n          if (nodeEquals(attr, attr1)) {\n            return NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC |\n              NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_PRECEDING;\n          }\n\n          if (nodeEquals(attr, attr2)) {\n            return NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC |\n              NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_FOLLOWING;\n          }\n        }\n      }\n    }\n\n    const result = domSymbolTree.compareTreePosition(node2, node1);\n\n    // “If other and reference are not in the same tree, return the result of adding DOCUMENT_POSITION_DISCONNECTED,\n    //  DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, and either DOCUMENT_POSITION_PRECEDING or\n    // DOCUMENT_POSITION_FOLLOWING, with the constraint that this is to be consistent, together.”\n    if (result === NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_DISCONNECTED) {\n      // symbol-tree does not add these bits required by the spec:\n      return NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_DISCONNECTED |\n        NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC |\n        NODE_DOCUMENT_POSITION.DOCUMENT_POSITION_FOLLOWING;\n    }\n\n    return result;\n  }\n\n  lookupPrefix(namespace) {\n    if (namespace === null || namespace === \"\") {\n      return null;\n    }\n\n    switch (this.nodeType) {\n      case NODE_TYPE.ELEMENT_NODE: {\n        return locateNamespacePrefix(this, namespace);\n      }\n      case NODE_TYPE.DOCUMENT_NODE: {\n        return this.documentElement !== null ? locateNamespacePrefix(this.documentElement, namespace) : null;\n      }\n      case NODE_TYPE.DOCUMENT_TYPE_NODE:\n      case NODE_TYPE.DOCUMENT_FRAGMENT_NODE: {\n        return null;\n      }\n      case NODE_TYPE.ATTRIBUTE_NODE: {\n        return this._element !== null ? locateNamespacePrefix(this._element, namespace) : null;\n      }\n      default: {\n        return this.parentElement !== null ? locateNamespacePrefix(this.parentElement, namespace) : null;\n      }\n    }\n  }\n\n  lookupNamespaceURI(prefix) {\n    if (prefix === \"\") {\n      prefix = null;\n    }\n\n    return locateNamespace(this, prefix);\n  }\n\n  isDefaultNamespace(namespace) {\n    if (namespace === \"\") {\n      namespace = null;\n    }\n\n    const defaultNamespace = locateNamespace(this, null);\n    return defaultNamespace === namespace;\n  }\n\n  contains(other) {\n    return isInclusiveAncestor(this, other);\n  }\n\n  isEqualNode(node) {\n    if (node === null) {\n      return false;\n    }\n\n    // Fast-path, not in the spec\n    if (this === node) {\n      return true;\n    }\n\n    return nodeEquals(this, node);\n  }\n\n  isSameNode(node) {\n    if (this === node) {\n      return true;\n    }\n\n    return false;\n  }\n\n  cloneNode(deep) {\n    if (isShadowRoot(this)) {\n      throw DOMException.create(this._globalObject, [\"ShadowRoot nodes are not clonable.\", \"NotSupportedError\"]);\n    }\n\n    deep = Boolean(deep);\n\n    return clone(this, undefined, deep);\n  }\n\n  get nodeValue() {\n    switch (this.nodeType) {\n      case NODE_TYPE.ATTRIBUTE_NODE: {\n        return this._value;\n      }\n      case NODE_TYPE.TEXT_NODE:\n      case NODE_TYPE.CDATA_SECTION_NODE: // CDATASection is a subclass of Text\n      case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n      case NODE_TYPE.COMMENT_NODE: {\n        return this._data;\n      }\n      default: {\n        return null;\n      }\n    }\n  }\n\n  set nodeValue(value) {\n    if (value === null) {\n      value = \"\";\n    }\n\n    switch (this.nodeType) {\n      case NODE_TYPE.ATTRIBUTE_NODE: {\n        setAnExistingAttributeValue(this, value);\n        break;\n      }\n      case NODE_TYPE.TEXT_NODE:\n      case NODE_TYPE.CDATA_SECTION_NODE: // CDATASection is a subclass of Text\n      case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n      case NODE_TYPE.COMMENT_NODE: {\n        this.replaceData(0, this.length, value);\n        break;\n      }\n    }\n  }\n\n  // https://dom.spec.whatwg.org/#dom-node-textcontent\n  get textContent() {\n    switch (this.nodeType) {\n      case NODE_TYPE.DOCUMENT_FRAGMENT_NODE:\n      case NODE_TYPE.ELEMENT_NODE: {\n        let text = \"\";\n        for (const child of domSymbolTree.treeIterator(this)) {\n          if (child.nodeType === NODE_TYPE.TEXT_NODE || child.nodeType === NODE_TYPE.CDATA_SECTION_NODE) {\n            text += child.nodeValue;\n          }\n        }\n        return text;\n      }\n\n      case NODE_TYPE.ATTRIBUTE_NODE: {\n        return this._value;\n      }\n\n      case NODE_TYPE.TEXT_NODE:\n      case NODE_TYPE.CDATA_SECTION_NODE: // CDATASection is a subclass of Text\n      case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n      case NODE_TYPE.COMMENT_NODE: {\n        return this._data;\n      }\n\n      default: {\n        return null;\n      }\n    }\n  }\n  set textContent(value) {\n    if (value === null) {\n      value = \"\";\n    }\n\n    switch (this.nodeType) {\n      case NODE_TYPE.DOCUMENT_FRAGMENT_NODE:\n      case NODE_TYPE.ELEMENT_NODE: {\n        // https://dom.spec.whatwg.org/#string-replace-all\n        let nodeImpl = null;\n\n        if (value !== \"\") {\n          nodeImpl = this._ownerDocument.createTextNode(value);\n        }\n\n        this._replaceAll(nodeImpl);\n        break;\n      }\n\n      case NODE_TYPE.ATTRIBUTE_NODE: {\n        setAnExistingAttributeValue(this, value);\n        break;\n      }\n\n      case NODE_TYPE.TEXT_NODE:\n      case NODE_TYPE.CDATA_SECTION_NODE: // CDATASection is a subclass of Text\n      case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:\n      case NODE_TYPE.COMMENT_NODE: {\n        this.replaceData(0, this.length, value);\n        break;\n      }\n    }\n  }\n\n  // https://dom.spec.whatwg.org/#dom-node-insertbefore\n  insertBefore(nodeImpl, childImpl) {\n    return this._preInsert(nodeImpl, childImpl);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-node-appendchild\n  appendChild(nodeImpl) {\n    return this._append(nodeImpl);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-node-replacechild\n  replaceChild(nodeImpl, childImpl) {\n    return this._replace(nodeImpl, childImpl);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-node-removechild\n  removeChild(oldChildImpl) {\n    return this._preRemove(oldChildImpl);\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n  _preInsertValidity(nodeImpl, childImpl) {\n    const { nodeType } = nodeImpl;\n    const parentType = this.nodeType;\n\n    if (\n      parentType !== NODE_TYPE.DOCUMENT_NODE &&\n      parentType !== NODE_TYPE.DOCUMENT_FRAGMENT_NODE &&\n      parentType !== NODE_TYPE.ELEMENT_NODE\n    ) {\n      throw DOMException.create(this._globalObject, [\n        `Node can't be inserted in a ${this.nodeName} parent.`,\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (isHostInclusiveAncestor(nodeImpl, this)) {\n      throw DOMException.create(this._globalObject, [\n        \"The operation would yield an incorrect node tree.\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (childImpl && domSymbolTree.parent(childImpl) !== this) {\n      throw DOMException.create(this._globalObject, [\n        \"The child can not be found in the parent.\",\n        \"NotFoundError\"\n      ]);\n    }\n\n    if (\n      nodeType !== NODE_TYPE.DOCUMENT_FRAGMENT_NODE &&\n      nodeType !== NODE_TYPE.DOCUMENT_TYPE_NODE &&\n      nodeType !== NODE_TYPE.ELEMENT_NODE &&\n      nodeType !== NODE_TYPE.TEXT_NODE &&\n      nodeType !== NODE_TYPE.CDATA_SECTION_NODE && // CData section extends from Text\n      nodeType !== NODE_TYPE.PROCESSING_INSTRUCTION_NODE &&\n      nodeType !== NODE_TYPE.COMMENT_NODE\n    ) {\n      throw DOMException.create(this._globalObject, [\n        `${nodeImpl.nodeName} node can't be inserted in parent node.`,\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (\n      (nodeType === NODE_TYPE.TEXT_NODE && parentType === NODE_TYPE.DOCUMENT_NODE) ||\n      (nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE && parentType !== NODE_TYPE.DOCUMENT_NODE)\n    ) {\n      throw DOMException.create(this._globalObject, [\n        `${nodeImpl.nodeName} node can't be inserted in ${this.nodeName} parent.`,\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (parentType === NODE_TYPE.DOCUMENT_NODE) {\n      const nodeChildren = domSymbolTree.childrenToArray(nodeImpl);\n      const parentChildren = domSymbolTree.childrenToArray(this);\n\n      switch (nodeType) {\n        case NODE_TYPE.DOCUMENT_FRAGMENT_NODE: {\n          const nodeChildrenElements = nodeChildren.filter(child => child.nodeType === NODE_TYPE.ELEMENT_NODE);\n          if (nodeChildrenElements.length > 1) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeImpl.nodeName} node in ${this.nodeName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n\n          const hasNodeTextChildren = nodeChildren.some(child => child.nodeType === NODE_TYPE.TEXT_NODE);\n          if (hasNodeTextChildren) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeImpl.nodeName} node in ${this.nodeName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n\n          if (\n            nodeChildrenElements.length === 1 &&\n            (\n              parentChildren.some(child => child.nodeType === NODE_TYPE.ELEMENT_NODE) ||\n              (childImpl && childImpl.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) ||\n              (\n                childImpl &&\n                domSymbolTree.nextSibling(childImpl) &&\n                domSymbolTree.nextSibling(childImpl).nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE\n              )\n            )\n          ) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeImpl.nodeName} node in ${this.nodeName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n          break;\n        }\n\n        case NODE_TYPE.ELEMENT_NODE:\n          if (\n            parentChildren.some(child => child.nodeType === NODE_TYPE.ELEMENT_NODE) ||\n            (childImpl && childImpl.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) ||\n            (\n              childImpl &&\n              domSymbolTree.nextSibling(childImpl) &&\n              domSymbolTree.nextSibling(childImpl).nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE\n            )\n          ) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeImpl.nodeName} node in ${this.nodeName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n          break;\n\n        case NODE_TYPE.DOCUMENT_TYPE_NODE:\n          if (\n            parentChildren.some(child => child.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) ||\n            (\n              childImpl &&\n              domSymbolTree.previousSibling(childImpl) &&\n              domSymbolTree.previousSibling(childImpl).nodeType === NODE_TYPE.ELEMENT_NODE\n            ) ||\n            (!childImpl && parentChildren.some(child => child.nodeType === NODE_TYPE.ELEMENT_NODE))\n          ) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeImpl.nodeName} node in ${this.nodeName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n          break;\n      }\n    }\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-pre-insert\n  _preInsert(nodeImpl, childImpl) {\n    this._preInsertValidity(nodeImpl, childImpl);\n\n    let referenceChildImpl = childImpl;\n    if (referenceChildImpl === nodeImpl) {\n      referenceChildImpl = domSymbolTree.nextSibling(nodeImpl);\n    }\n\n    this._ownerDocument._adoptNode(nodeImpl);\n\n    this._insert(nodeImpl, referenceChildImpl);\n\n    return nodeImpl;\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-insert\n  _insert(nodeImpl, childImpl, suppressObservers) {\n    const count = nodeImpl.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE ?\n        domSymbolTree.childrenCount(nodeImpl) :\n        1;\n\n    if (childImpl) {\n      const childIndex = domSymbolTree.index(childImpl);\n\n      for (const range of this._liveRanges()) {\n        const { _start, _end } = range;\n\n        if (_start.offset > childIndex) {\n          range._setLiveRangeStart(this, _start.offset + count);\n        }\n\n        if (_end.offset > childIndex) {\n          range._setLiveRangeEnd(this, _end.offset + count);\n        }\n      }\n    }\n\n    const nodesImpl = nodeImpl.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE ?\n      domSymbolTree.childrenToArray(nodeImpl) :\n      [nodeImpl];\n\n    if (nodeImpl.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE) {\n      let grandChildImpl;\n      while ((grandChildImpl = domSymbolTree.firstChild(nodeImpl))) {\n        nodeImpl._remove(grandChildImpl, true);\n      }\n    }\n\n    if (nodeImpl.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE) {\n      queueTreeMutationRecord(nodeImpl, [], nodesImpl, null, null);\n    }\n\n    const previousChildImpl = childImpl ?\n      domSymbolTree.previousSibling(childImpl) :\n      domSymbolTree.lastChild(this);\n\n    let isConnected;\n\n    for (const node of nodesImpl) {\n      if (!childImpl) {\n        domSymbolTree.appendChild(this, node);\n      } else {\n        domSymbolTree.insertBefore(childImpl, node);\n      }\n\n      if (\n        (this.nodeType === NODE_TYPE.ELEMENT_NODE && this._shadowRoot !== null) &&\n        (node.nodeType === NODE_TYPE.ELEMENT_NODE || node.nodeType === NODE_TYPE.TEXT_NODE)\n      ) {\n        assignSlot(node);\n      }\n\n      this._modified();\n\n      if (node.nodeType === NODE_TYPE.TEXT_NODE ||\n          node.nodeType === NODE_TYPE.CDATA_SECTION_NODE) {\n        this._childTextContentChangeSteps();\n      }\n\n      if (isSlot(this) && this._assignedNodes.length === 0 && isShadowRoot(nodeRoot(this))) {\n        signalSlotChange(this);\n      }\n\n      const root = nodeRoot(node);\n      if (isShadowRoot(root)) {\n        assignSlotableForTree(root);\n      }\n\n      if (this._attached && nodeImpl._attach) {\n        node._attach();\n      }\n\n      this._descendantAdded(this, node);\n\n      if (isConnected === undefined) {\n        isConnected = node.isConnected;\n      }\n\n      if (isConnected) {\n        for (const inclusiveDescendant of shadowIncludingInclusiveDescendantsIterator(node)) {\n          if (inclusiveDescendant._ceState === \"custom\") {\n            enqueueCECallbackReaction(inclusiveDescendant, \"connectedCallback\", []);\n          } else {\n            tryUpgradeElement(inclusiveDescendant);\n          }\n        }\n      }\n    }\n\n    if (!suppressObservers) {\n      queueTreeMutationRecord(this, nodesImpl, [], previousChildImpl, childImpl);\n    }\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-append\n  _append(nodeImpl) {\n    return this._preInsert(nodeImpl, null);\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-replace\n  _replace(nodeImpl, childImpl) {\n    const { nodeType, nodeName } = nodeImpl;\n    const { nodeType: parentType, nodeName: parentName } = this;\n\n    // Note: This section differs from the pre-insert validation algorithm.\n    if (\n      parentType !== NODE_TYPE.DOCUMENT_NODE &&\n      parentType !== NODE_TYPE.DOCUMENT_FRAGMENT_NODE &&\n      parentType !== NODE_TYPE.ELEMENT_NODE\n    ) {\n      throw DOMException.create(this._globalObject, [\n        `Node can't be inserted in a ${parentName} parent.`,\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (isHostInclusiveAncestor(nodeImpl, this)) {\n      throw DOMException.create(this._globalObject, [\n        \"The operation would yield an incorrect node tree.\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (childImpl && domSymbolTree.parent(childImpl) !== this) {\n      throw DOMException.create(this._globalObject, [\n        \"The child can not be found in the parent.\",\n        \"NotFoundError\"\n      ]);\n    }\n\n    if (\n      nodeType !== NODE_TYPE.DOCUMENT_FRAGMENT_NODE &&\n      nodeType !== NODE_TYPE.DOCUMENT_TYPE_NODE &&\n      nodeType !== NODE_TYPE.ELEMENT_NODE &&\n      nodeType !== NODE_TYPE.TEXT_NODE &&\n      nodeType !== NODE_TYPE.CDATA_SECTION_NODE && // CData section extends from Text\n      nodeType !== NODE_TYPE.PROCESSING_INSTRUCTION_NODE &&\n      nodeType !== NODE_TYPE.COMMENT_NODE\n    ) {\n      throw DOMException.create(this._globalObject, [\n        `${nodeName} node can't be inserted in parent node.`,\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (\n      (nodeType === NODE_TYPE.TEXT_NODE && parentType === NODE_TYPE.DOCUMENT_NODE) ||\n      (nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE && parentType !== NODE_TYPE.DOCUMENT_NODE)\n    ) {\n      throw DOMException.create(this._globalObject, [\n        `${nodeName} node can't be inserted in ${parentName} parent.`,\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    if (parentType === NODE_TYPE.DOCUMENT_NODE) {\n      const nodeChildren = domSymbolTree.childrenToArray(nodeImpl);\n      const parentChildren = domSymbolTree.childrenToArray(this);\n\n      switch (nodeType) {\n        case NODE_TYPE.DOCUMENT_FRAGMENT_NODE: {\n          const nodeChildrenElements = nodeChildren.filter(child => child.nodeType === NODE_TYPE.ELEMENT_NODE);\n          if (nodeChildrenElements.length > 1) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeName} node in ${parentName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n\n          const hasNodeTextChildren = nodeChildren.some(child => child.nodeType === NODE_TYPE.TEXT_NODE);\n          if (hasNodeTextChildren) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeName} node in ${parentName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n\n\n          const parentChildElements = parentChildren.filter(child => child.nodeType === NODE_TYPE.ELEMENT_NODE);\n          if (\n            nodeChildrenElements.length === 1 &&\n            (\n              (parentChildElements.length === 1 && parentChildElements[0] !== childImpl) ||\n              (\n                childImpl &&\n                domSymbolTree.nextSibling(childImpl) &&\n                domSymbolTree.nextSibling(childImpl).nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE\n              )\n            )\n          ) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeName} node in ${parentName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n          break;\n        }\n\n        case NODE_TYPE.ELEMENT_NODE:\n          if (\n            parentChildren.some(child => child.nodeType === NODE_TYPE.ELEMENT_NODE && child !== childImpl) ||\n            (\n              childImpl &&\n              domSymbolTree.nextSibling(childImpl) &&\n              domSymbolTree.nextSibling(childImpl).nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE\n            )\n          ) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeName} node in ${parentName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n          break;\n\n        case NODE_TYPE.DOCUMENT_TYPE_NODE:\n          if (\n            parentChildren.some(child => child.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE && child !== childImpl) ||\n            (\n              childImpl &&\n              domSymbolTree.previousSibling(childImpl) &&\n              domSymbolTree.previousSibling(childImpl).nodeType === NODE_TYPE.ELEMENT_NODE\n            )\n          ) {\n            throw DOMException.create(this._globalObject, [\n              `Invalid insertion of ${nodeName} node in ${parentName} node.`,\n              \"HierarchyRequestError\"\n            ]);\n          }\n          break;\n      }\n    }\n\n    let referenceChildImpl = domSymbolTree.nextSibling(childImpl);\n    if (referenceChildImpl === nodeImpl) {\n      referenceChildImpl = domSymbolTree.nextSibling(nodeImpl);\n    }\n\n    const previousSiblingImpl = domSymbolTree.previousSibling(childImpl);\n\n    this._ownerDocument._adoptNode(nodeImpl);\n\n    let removedNodesImpl = [];\n\n    if (domSymbolTree.parent(childImpl)) {\n      removedNodesImpl = [childImpl];\n      this._remove(childImpl, true);\n    }\n\n    const nodesImpl = nodeImpl.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE ?\n      domSymbolTree.childrenToArray(nodeImpl) :\n      [nodeImpl];\n\n    this._insert(nodeImpl, referenceChildImpl, true);\n\n    queueTreeMutationRecord(this, nodesImpl, removedNodesImpl, previousSiblingImpl, referenceChildImpl);\n\n    return childImpl;\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-replace-all\n  _replaceAll(nodeImpl) {\n    if (nodeImpl !== null) {\n      this._ownerDocument._adoptNode(nodeImpl);\n    }\n\n    const removedNodesImpl = domSymbolTree.childrenToArray(this);\n\n    let addedNodesImpl;\n    if (nodeImpl === null) {\n      addedNodesImpl = [];\n    } else if (nodeImpl.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE) {\n      addedNodesImpl = domSymbolTree.childrenToArray(nodeImpl);\n    } else {\n      addedNodesImpl = [nodeImpl];\n    }\n\n    for (const childImpl of domSymbolTree.childrenIterator(this)) {\n      this._remove(childImpl, true);\n    }\n\n    if (nodeImpl !== null) {\n      this._insert(nodeImpl, null, true);\n    }\n\n    if (addedNodesImpl.length > 0 || removedNodesImpl.length > 0) {\n      queueTreeMutationRecord(this, addedNodesImpl, removedNodesImpl, null, null);\n    }\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-pre-remove\n  _preRemove(childImpl) {\n    if (domSymbolTree.parent(childImpl) !== this) {\n      throw DOMException.create(this._globalObject, [\n        \"The node to be removed is not a child of this node.\",\n        \"NotFoundError\"\n      ]);\n    }\n\n    this._remove(childImpl);\n\n    return childImpl;\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-remove\n  _remove(nodeImpl, suppressObservers) {\n    const index = domSymbolTree.index(nodeImpl);\n\n    for (const descendant of domSymbolTree.treeIterator(nodeImpl)) {\n      for (const range of descendant._liveRanges()) {\n        const { _start, _end } = range;\n\n        if (_start.node === descendant) {\n          range._setLiveRangeStart(this, index);\n        }\n\n        if (_end.node === descendant) {\n          range._setLiveRangeEnd(this, index);\n        }\n      }\n    }\n\n    for (const range of this._liveRanges()) {\n      const { _start, _end } = range;\n\n      if (_start.node === this && _start.offset > index) {\n        range._setLiveRangeStart(this, _start.offset - 1);\n      }\n\n      if (_end.node === this && _end.offset > index) {\n        range._setLiveRangeEnd(this, _end.offset - 1);\n      }\n    }\n\n    if (this._ownerDocument) {\n      this._ownerDocument._runPreRemovingSteps(nodeImpl);\n    }\n\n    const oldPreviousSiblingImpl = domSymbolTree.previousSibling(nodeImpl);\n    const oldNextSiblingImpl = domSymbolTree.nextSibling(nodeImpl);\n\n    domSymbolTree.remove(nodeImpl);\n    nodeImpl._cachedRoot = null;\n\n    if (nodeImpl._assignedSlot) {\n      assignSlotable(nodeImpl._assignedSlot);\n    }\n\n    if (isSlot(this) && this._assignedNodes.length === 0 && isShadowRoot(nodeRoot(this))) {\n      signalSlotChange(this);\n    }\n\n    let hasSlotDescendant = isSlot(nodeImpl);\n    if (!hasSlotDescendant) {\n      for (const child of domSymbolTree.treeIterator(nodeImpl)) {\n        if (isSlot(child)) {\n          hasSlotDescendant = true;\n          break;\n        }\n      }\n    }\n\n    if (hasSlotDescendant) {\n      assignSlotableForTree(nodeRoot(this));\n      assignSlotableForTree(nodeImpl);\n    }\n\n    this._modified();\n    if (nodeImpl._attached) {\n      nodeImpl._detach();\n    }\n    this._descendantRemoved(this, nodeImpl);\n\n    if (this.isConnected) {\n      if (nodeImpl._ceState === \"custom\") {\n        enqueueCECallbackReaction(nodeImpl, \"disconnectedCallback\", []);\n      }\n\n      for (const descendantImpl of shadowIncludingDescendantsIterator(nodeImpl)) {\n        descendantImpl._cachedRoot = null;\n        if (descendantImpl._ceState === \"custom\") {\n          enqueueCECallbackReaction(descendantImpl, \"disconnectedCallback\", []);\n        }\n      }\n    }\n\n    if (!suppressObservers) {\n      queueTreeMutationRecord(this, [], [nodeImpl], oldPreviousSiblingImpl, oldNextSiblingImpl);\n    }\n\n    if (nodeImpl.nodeType === NODE_TYPE.TEXT_NODE) {\n      this._childTextContentChangeSteps();\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: NodeImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst GetRootNodeOptions = require(\"./GetRootNodeOptions.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst EventTarget = require(\"./EventTarget.js\");\n\nconst interfaceName = \"Node\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Node'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Node\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  EventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Node extends globalObject.EventTarget {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    getRootNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'getRootNode' called on an object that is not a valid instance of Node.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = GetRootNodeOptions.convert(globalObject, curArg, {\n          context: \"Failed to execute 'getRootNode' on 'Node': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getRootNode(...args));\n    }\n\n    hasChildNodes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'hasChildNodes' called on an object that is not a valid instance of Node.\");\n      }\n\n      return esValue[implSymbol].hasChildNodes();\n    }\n\n    normalize() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'normalize' called on an object that is not a valid instance of Node.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].normalize();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    cloneNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'cloneNode' called on an object that is not a valid instance of Node.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'cloneNode' on 'Node': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].cloneNode(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    isEqualNode(otherNode) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'isEqualNode' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'isEqualNode' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = exports.convert(globalObject, curArg, {\n            context: \"Failed to execute 'isEqualNode' on 'Node': parameter 1\"\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].isEqualNode(...args);\n    }\n\n    isSameNode(otherNode) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'isSameNode' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'isSameNode' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = exports.convert(globalObject, curArg, {\n            context: \"Failed to execute 'isSameNode' on 'Node': parameter 1\"\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].isSameNode(...args);\n    }\n\n    compareDocumentPosition(other) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'compareDocumentPosition' called on an object that is not a valid instance of Node.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'compareDocumentPosition' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'compareDocumentPosition' on 'Node': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].compareDocumentPosition(...args);\n    }\n\n    contains(other) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'contains' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'contains' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = exports.convert(globalObject, curArg, {\n            context: \"Failed to execute 'contains' on 'Node': parameter 1\"\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].contains(...args);\n    }\n\n    lookupPrefix(namespace) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'lookupPrefix' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'lookupPrefix' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'lookupPrefix' on 'Node': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].lookupPrefix(...args);\n    }\n\n    lookupNamespaceURI(prefix) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'lookupNamespaceURI' called on an object that is not a valid instance of Node.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'lookupNamespaceURI' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'lookupNamespaceURI' on 'Node': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].lookupNamespaceURI(...args);\n    }\n\n    isDefaultNamespace(namespace) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'isDefaultNamespace' called on an object that is not a valid instance of Node.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'isDefaultNamespace' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'isDefaultNamespace' on 'Node': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].isDefaultNamespace(...args);\n    }\n\n    insertBefore(node, child) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'insertBefore' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'insertBefore' on 'Node': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'insertBefore' on 'Node': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = exports.convert(globalObject, curArg, {\n            context: \"Failed to execute 'insertBefore' on 'Node': parameter 2\"\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].insertBefore(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    appendChild(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'appendChild' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'appendChild' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'appendChild' on 'Node': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].appendChild(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replaceChild(node, child) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'replaceChild' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'replaceChild' on 'Node': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'replaceChild' on 'Node': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'replaceChild' on 'Node': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].replaceChild(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    removeChild(child) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'removeChild' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeChild' on 'Node': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'removeChild' on 'Node': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].removeChild(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get nodeType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get nodeType' called on an object that is not a valid instance of Node.\");\n      }\n\n      return esValue[implSymbol][\"nodeType\"];\n    }\n\n    get nodeName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get nodeName' called on an object that is not a valid instance of Node.\");\n      }\n\n      return esValue[implSymbol][\"nodeName\"];\n    }\n\n    get baseURI() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get baseURI' called on an object that is not a valid instance of Node.\");\n      }\n\n      return esValue[implSymbol][\"baseURI\"];\n    }\n\n    get isConnected() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get isConnected' called on an object that is not a valid instance of Node.\");\n      }\n\n      return esValue[implSymbol][\"isConnected\"];\n    }\n\n    get ownerDocument() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ownerDocument' called on an object that is not a valid instance of Node.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ownerDocument\"]);\n    }\n\n    get parentNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get parentNode' called on an object that is not a valid instance of Node.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"parentNode\"]);\n    }\n\n    get parentElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get parentElement' called on an object that is not a valid instance of Node.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"parentElement\"]);\n    }\n\n    get childNodes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get childNodes' called on an object that is not a valid instance of Node.\");\n      }\n\n      return utils.getSameObject(this, \"childNodes\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"childNodes\"]);\n      });\n    }\n\n    get firstChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get firstChild' called on an object that is not a valid instance of Node.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"firstChild\"]);\n    }\n\n    get lastChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get lastChild' called on an object that is not a valid instance of Node.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"lastChild\"]);\n    }\n\n    get previousSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get previousSibling' called on an object that is not a valid instance of Node.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"previousSibling\"]);\n    }\n\n    get nextSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get nextSibling' called on an object that is not a valid instance of Node.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"nextSibling\"]);\n    }\n\n    get nodeValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get nodeValue' called on an object that is not a valid instance of Node.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"nodeValue\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set nodeValue(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set nodeValue' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'nodeValue' property on 'Node': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"nodeValue\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get textContent() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get textContent' called on an object that is not a valid instance of Node.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"textContent\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set textContent(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set textContent' called on an object that is not a valid instance of Node.\");\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'textContent' property on 'Node': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"textContent\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(Node.prototype, {\n    getRootNode: { enumerable: true },\n    hasChildNodes: { enumerable: true },\n    normalize: { enumerable: true },\n    cloneNode: { enumerable: true },\n    isEqualNode: { enumerable: true },\n    isSameNode: { enumerable: true },\n    compareDocumentPosition: { enumerable: true },\n    contains: { enumerable: true },\n    lookupPrefix: { enumerable: true },\n    lookupNamespaceURI: { enumerable: true },\n    isDefaultNamespace: { enumerable: true },\n    insertBefore: { enumerable: true },\n    appendChild: { enumerable: true },\n    replaceChild: { enumerable: true },\n    removeChild: { enumerable: true },\n    nodeType: { enumerable: true },\n    nodeName: { enumerable: true },\n    baseURI: { enumerable: true },\n    isConnected: { enumerable: true },\n    ownerDocument: { enumerable: true },\n    parentNode: { enumerable: true },\n    parentElement: { enumerable: true },\n    childNodes: { enumerable: true },\n    firstChild: { enumerable: true },\n    lastChild: { enumerable: true },\n    previousSibling: { enumerable: true },\n    nextSibling: { enumerable: true },\n    nodeValue: { enumerable: true },\n    textContent: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Node\", configurable: true },\n    ELEMENT_NODE: { value: 1, enumerable: true },\n    ATTRIBUTE_NODE: { value: 2, enumerable: true },\n    TEXT_NODE: { value: 3, enumerable: true },\n    CDATA_SECTION_NODE: { value: 4, enumerable: true },\n    ENTITY_REFERENCE_NODE: { value: 5, enumerable: true },\n    ENTITY_NODE: { value: 6, enumerable: true },\n    PROCESSING_INSTRUCTION_NODE: { value: 7, enumerable: true },\n    COMMENT_NODE: { value: 8, enumerable: true },\n    DOCUMENT_NODE: { value: 9, enumerable: true },\n    DOCUMENT_TYPE_NODE: { value: 10, enumerable: true },\n    DOCUMENT_FRAGMENT_NODE: { value: 11, enumerable: true },\n    NOTATION_NODE: { value: 12, enumerable: true },\n    DOCUMENT_POSITION_DISCONNECTED: { value: 0x01, enumerable: true },\n    DOCUMENT_POSITION_PRECEDING: { value: 0x02, enumerable: true },\n    DOCUMENT_POSITION_FOLLOWING: { value: 0x04, enumerable: true },\n    DOCUMENT_POSITION_CONTAINS: { value: 0x08, enumerable: true },\n    DOCUMENT_POSITION_CONTAINED_BY: { value: 0x10, enumerable: true },\n    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: 0x20, enumerable: true }\n  });\n  Object.defineProperties(Node, {\n    ELEMENT_NODE: { value: 1, enumerable: true },\n    ATTRIBUTE_NODE: { value: 2, enumerable: true },\n    TEXT_NODE: { value: 3, enumerable: true },\n    CDATA_SECTION_NODE: { value: 4, enumerable: true },\n    ENTITY_REFERENCE_NODE: { value: 5, enumerable: true },\n    ENTITY_NODE: { value: 6, enumerable: true },\n    PROCESSING_INSTRUCTION_NODE: { value: 7, enumerable: true },\n    COMMENT_NODE: { value: 8, enumerable: true },\n    DOCUMENT_NODE: { value: 9, enumerable: true },\n    DOCUMENT_TYPE_NODE: { value: 10, enumerable: true },\n    DOCUMENT_FRAGMENT_NODE: { value: 11, enumerable: true },\n    NOTATION_NODE: { value: 12, enumerable: true },\n    DOCUMENT_POSITION_DISCONNECTED: { value: 0x01, enumerable: true },\n    DOCUMENT_POSITION_PRECEDING: { value: 0x02, enumerable: true },\n    DOCUMENT_POSITION_FOLLOWING: { value: 0x04, enumerable: true },\n    DOCUMENT_POSITION_CONTAINS: { value: 0x08, enumerable: true },\n    DOCUMENT_POSITION_CONTAINED_BY: { value: 0x10, enumerable: true },\n    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: 0x20, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = Node;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Node\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/Node-impl.js\");\n","\"use strict\";\n\nconst { setAnExistingAttributeValue } = require(\"../attributes.js\");\nconst NodeImpl = require(\"../nodes/Node-impl.js\").implementation;\nconst { ATTRIBUTE_NODE } = require(\"../node-type.js\");\n\nexports.implementation = class AttrImpl extends NodeImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._namespace = privateData.namespace !== undefined ? privateData.namespace : null;\n    this._namespacePrefix = privateData.namespacePrefix !== undefined ? privateData.namespacePrefix : null;\n    this._localName = privateData.localName;\n    this._value = privateData.value !== undefined ? privateData.value : \"\";\n    this._element = privateData.element !== undefined ? privateData.element : null;\n\n    this.nodeType = ATTRIBUTE_NODE;\n    this.specified = true;\n  }\n\n  get namespaceURI() {\n    return this._namespace;\n  }\n\n  get prefix() {\n    return this._namespacePrefix;\n  }\n\n  get localName() {\n    return this._localName;\n  }\n\n  get name() {\n    return this._qualifiedName;\n  }\n\n  get nodeName() {\n    return this._qualifiedName;\n  }\n\n  get value() {\n    return this._value;\n  }\n  set value(value) {\n    setAnExistingAttributeValue(this, value);\n  }\n\n  get ownerElement() {\n    return this._element;\n  }\n\n  get _qualifiedName() {\n    // https://dom.spec.whatwg.org/#concept-attribute-qualified-name\n    if (this._namespacePrefix === null) {\n      return this._localName;\n    }\n\n    return this._namespacePrefix + \":\" + this._localName;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Node = require(\"./Node.js\");\n\nconst interfaceName = \"Attr\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Attr'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Attr\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Node._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Attr extends globalObject.Node {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get namespaceURI() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get namespaceURI' called on an object that is not a valid instance of Attr.\"\n        );\n      }\n\n      return esValue[implSymbol][\"namespaceURI\"];\n    }\n\n    get prefix() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get prefix' called on an object that is not a valid instance of Attr.\");\n      }\n\n      return esValue[implSymbol][\"prefix\"];\n    }\n\n    get localName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get localName' called on an object that is not a valid instance of Attr.\");\n      }\n\n      return esValue[implSymbol][\"localName\"];\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get name' called on an object that is not a valid instance of Attr.\");\n      }\n\n      return esValue[implSymbol][\"name\"];\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get value' called on an object that is not a valid instance of Attr.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set value' called on an object that is not a valid instance of Attr.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'Attr': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ownerElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ownerElement' called on an object that is not a valid instance of Attr.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ownerElement\"]);\n    }\n\n    get specified() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get specified' called on an object that is not a valid instance of Attr.\");\n      }\n\n      return esValue[implSymbol][\"specified\"];\n    }\n  }\n  Object.defineProperties(Attr.prototype, {\n    namespaceURI: { enumerable: true },\n    prefix: { enumerable: true },\n    localName: { enumerable: true },\n    name: { enumerable: true },\n    value: { enumerable: true },\n    ownerElement: { enumerable: true },\n    specified: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Attr\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Attr;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Attr\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/attributes/Attr-impl.js\");\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst attributes = require(\"../attributes.js\");\nconst { HTML_NS } = require(\"../helpers/namespaces\");\n\nexports.implementation = class NamedNodeMapImpl {\n  constructor(globalObject, args, privateData) {\n    this._element = privateData.element;\n\n    this._globalObject = globalObject;\n  }\n  get _attributeList() {\n    return this._element._attributeList;\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    return this._attributeList.keys();\n  }\n  get length() {\n    return this._attributeList.length;\n  }\n  item(index) {\n    if (index >= this._attributeList.length) {\n      return null;\n    }\n    return this._attributeList[index];\n  }\n\n  get [idlUtils.supportedPropertyNames]() {\n    const names = new Set(this._attributeList.map(a => a._qualifiedName));\n    const el = this._element;\n    if (el._namespaceURI === HTML_NS && el._ownerDocument._parsingMode === \"html\") {\n      for (const name of names) {\n        const lowercaseName = name.toLowerCase();\n        if (lowercaseName !== name) {\n          names.delete(name);\n        }\n      }\n    }\n    return names;\n  }\n  getNamedItem(qualifiedName) {\n    return attributes.getAttributeByName(this._element, qualifiedName);\n  }\n  getNamedItemNS(namespace, localName) {\n    return attributes.getAttributeByNameNS(this._element, namespace, localName);\n  }\n  setNamedItem(attr) {\n    // eslint-disable-next-line no-restricted-properties\n    return attributes.setAttribute(this._element, attr);\n  }\n  setNamedItemNS(attr) {\n    // eslint-disable-next-line no-restricted-properties\n    return attributes.setAttribute(this._element, attr);\n  }\n  removeNamedItem(qualifiedName) {\n    const attr = attributes.removeAttributeByName(this._element, qualifiedName);\n    if (attr === null) {\n      throw DOMException.create(this._globalObject, [\n        \"Tried to remove an attribute that was not present\",\n        \"NotFoundError\"\n      ]);\n    }\n    return attr;\n  }\n  removeNamedItemNS(namespace, localName) {\n    const attr = attributes.removeAttributeByNameNS(this._element, namespace, localName);\n    if (attr === null) {\n      throw DOMException.create(this._globalObject, [\n        \"Tried to remove an attribute that was not present\",\n        \"NotFoundError\"\n      ]);\n    }\n    return attr;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Attr = require(\"./Attr.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"NamedNodeMap\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'NamedNodeMap'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"NamedNodeMap\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class NamedNodeMap {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of NamedNodeMap.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'NamedNodeMap': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'NamedNodeMap': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n    }\n\n    getNamedItem(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getNamedItem' called on an object that is not a valid instance of NamedNodeMap.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getNamedItem' on 'NamedNodeMap': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getNamedItem' on 'NamedNodeMap': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getNamedItem(...args));\n    }\n\n    getNamedItemNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getNamedItemNS' called on an object that is not a valid instance of NamedNodeMap.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getNamedItemNS' on 'NamedNodeMap': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'getNamedItemNS' on 'NamedNodeMap': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getNamedItemNS' on 'NamedNodeMap': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getNamedItemNS(...args));\n    }\n\n    setNamedItem(attr) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setNamedItem' called on an object that is not a valid instance of NamedNodeMap.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setNamedItem' on 'NamedNodeMap': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Attr.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setNamedItem' on 'NamedNodeMap': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].setNamedItem(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    setNamedItemNS(attr) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setNamedItemNS' called on an object that is not a valid instance of NamedNodeMap.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setNamedItemNS' on 'NamedNodeMap': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Attr.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setNamedItemNS' on 'NamedNodeMap': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].setNamedItemNS(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    removeNamedItem(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeNamedItem' called on an object that is not a valid instance of NamedNodeMap.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeNamedItem' on 'NamedNodeMap': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'removeNamedItem' on 'NamedNodeMap': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].removeNamedItem(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    removeNamedItemNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeNamedItemNS' called on an object that is not a valid instance of NamedNodeMap.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeNamedItemNS' on 'NamedNodeMap': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'removeNamedItemNS' on 'NamedNodeMap': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'removeNamedItemNS' on 'NamedNodeMap': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].removeNamedItemNS(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of NamedNodeMap.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(NamedNodeMap.prototype, {\n    item: { enumerable: true },\n    getNamedItem: { enumerable: true },\n    getNamedItemNS: { enumerable: true },\n    setNamedItem: { enumerable: true },\n    setNamedItemNS: { enumerable: true },\n    removeNamedItem: { enumerable: true },\n    removeNamedItemNS: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"NamedNodeMap\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = NamedNodeMap;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: NamedNodeMap\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n      if (!(key in target)) {\n        keys.add(`${key}`);\n      }\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    const namedValue = target[implSymbol].getNamedItem(P);\n\n    if (namedValue !== null && !(P in target) && !ignoreNamedProps) {\n      return {\n        writable: false,\n        enumerable: false,\n        configurable: true,\n        value: utils.tryWrapperForImpl(namedValue)\n      };\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n    if (!Object.hasOwn(target, P)) {\n      const creating = !(target[implSymbol].getNamedItem(P) !== null);\n      if (!creating) {\n        return false;\n      }\n    }\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    if (target[implSymbol].getNamedItem(P) !== null && !(P in target)) {\n      return false;\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/attributes/NamedNodeMap-impl.js\");\n","\"use strict\";\n\nconst enumerationValues = new Set([\"open\", \"closed\"]);\nexports.enumerationValues = enumerationValues;\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  const string = `${value}`;\n  if (!enumerationValues.has(string)) {\n    throw new globalObject.TypeError(`${context} '${string}' is not a valid enumeration value for ShadowRootMode`);\n  }\n  return string;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ShadowRootMode = require(\"./ShadowRootMode.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"mode\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = ShadowRootMode.convert(globalObject, value, { context: context + \" has member 'mode' that\" });\n\n      ret[key] = value;\n    } else {\n      throw new globalObject.TypeError(\"mode is required in 'ShadowRootInit'\");\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst NodeList = require(\"../../../generated/idl/NodeList\");\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst NODE_TYPE = require(\"../node-type\");\nconst { convertNodesIntoNode } = require(\"../node\");\n\nclass ParentNodeImpl {\n  get children() {\n    if (!this._childrenList) {\n      this._childrenList = HTMLCollection.createImpl(this._globalObject, [], {\n        element: this,\n        query: () => domSymbolTree.childrenToArray(this, {\n          filter: node => node.nodeType === NODE_TYPE.ELEMENT_NODE\n        })\n      });\n    } else {\n      this._childrenList._update();\n    }\n    return this._childrenList;\n  }\n\n  get firstElementChild() {\n    for (const child of domSymbolTree.childrenIterator(this)) {\n      if (child.nodeType === NODE_TYPE.ELEMENT_NODE) {\n        return child;\n      }\n    }\n\n    return null;\n  }\n\n  get lastElementChild() {\n    for (const child of domSymbolTree.childrenIterator(this, { reverse: true })) {\n      if (child.nodeType === NODE_TYPE.ELEMENT_NODE) {\n        return child;\n      }\n    }\n\n    return null;\n  }\n\n  get childElementCount() {\n    return this.children.length;\n  }\n\n  prepend(...nodes) {\n    this._preInsert(convertNodesIntoNode(this._ownerDocument, nodes), this.firstChild);\n  }\n\n  append(...nodes) {\n    this._append(convertNodesIntoNode(this._ownerDocument, nodes));\n  }\n\n  replaceChildren(...nodes) {\n    const node = convertNodesIntoNode(this._ownerDocument, nodes);\n    this._preInsertValidity(node, null);\n    this._replaceAll(node);\n  }\n\n  querySelector(selectors) {\n    if (shouldAlwaysSelectNothing(this)) {\n      return null;\n    }\n    const domSelector = this._ownerDocument._domSelector;\n    return domSelector.querySelector(selectors, this);\n  }\n\n  // WARNING FOR INTERNAL USERS:\n  // This returns a NodeList impl, not a NodeList wrapper. NodeList impls are not iterable and do not have indexed\n  // properties. To iterate over them, use `for (let i = 0; i < nodeListImpl.length; ++i) { nodeListImpl.item(i) }`.\n  querySelectorAll(selectors) {\n    if (shouldAlwaysSelectNothing(this)) {\n      return NodeList.createImpl(this._globalObject, [], { nodes: [] });\n    }\n    const domSelector = this._ownerDocument._domSelector;\n    const nodes = domSelector.querySelectorAll(selectors, this);\n    return NodeList.createImpl(this._globalObject, [], { nodes });\n  }\n}\n\nfunction shouldAlwaysSelectNothing(elImpl) {\n  // This is true during initialization.\n  return elImpl === elImpl._ownerDocument && !elImpl.documentElement;\n}\n\nmodule.exports = {\n  implementation: ParentNodeImpl\n};\n","\"use strict\";\n\nconst { convertNodesIntoNode } = require(\"../node\");\n\nclass ChildNodeImpl {\n  remove() {\n    if (!this.parentNode) {\n      return;\n    }\n\n    this.parentNode._remove(this);\n  }\n\n  after(...nodes) {\n    const parent = this.parentNode;\n    if (parent) {\n      let viableNextSibling = this.nextSibling;\n      let idx = viableNextSibling ? nodes.indexOf(viableNextSibling) : -1;\n\n      while (idx !== -1) {\n        viableNextSibling = viableNextSibling.nextSibling;\n        if (!viableNextSibling) {\n          break;\n        }\n        idx = nodes.indexOf(viableNextSibling);\n      }\n\n      parent._preInsert(convertNodesIntoNode(this._ownerDocument, nodes), viableNextSibling);\n    }\n  }\n\n  before(...nodes) {\n    const parent = this.parentNode;\n    if (parent) {\n      let viablePreviousSibling = this.previousSibling;\n      let idx = viablePreviousSibling ? nodes.indexOf(viablePreviousSibling) : -1;\n\n      while (idx !== -1) {\n        viablePreviousSibling = viablePreviousSibling.previousSibling;\n        if (!viablePreviousSibling) {\n          break;\n        }\n        idx = nodes.indexOf(viablePreviousSibling);\n      }\n\n      parent._preInsert(\n        convertNodesIntoNode(this._ownerDocument, nodes),\n        viablePreviousSibling ? viablePreviousSibling.nextSibling : parent.firstChild\n      );\n    }\n  }\n\n  replaceWith(...nodes) {\n    const parent = this.parentNode;\n    if (parent) {\n      let viableNextSibling = this.nextSibling;\n      let idx = viableNextSibling ? nodes.indexOf(viableNextSibling) : -1;\n\n      while (idx !== -1) {\n        viableNextSibling = viableNextSibling.nextSibling;\n        if (!viableNextSibling) {\n          break;\n        }\n        idx = nodes.indexOf(viableNextSibling);\n      }\n\n      const node = convertNodesIntoNode(this._ownerDocument, nodes);\n\n      if (this.parentNode === parent) {\n        parent._replace(node, this);\n      } else {\n        parent._preInsert(node, viableNextSibling);\n      }\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: ChildNodeImpl\n};\n","\"use strict\";\nconst idlUtils = require(\"../../generated/idl/utils.js\");\nconst HTMLCollection = require(\"../../generated/idl/HTMLCollection.js\");\nconst { HTML_NS } = require(\"./helpers/namespaces.js\");\nconst { nodeRoot } = require(\"./helpers/node.js\");\nconst { treeOrderSorter } = require(\"../utils.js\");\n\n// We count iframe/frame here too even though it's not in the relevant part of the spec because we still need to track\n// named iframes/frames, and we'll process the element -> WindowProxy work as special cases.\nconst nameAttributeElementLocalNames = new Set([\"embed\", \"form\", \"img\", \"object\", \"iframe\", \"frame\"]);\n\nconst trackers = new WeakMap(); // WeakMap<WindowProperties, Map<string, Set<Element>>>\n\nfunction upsert(map, key, value) {\n  let set = map.get(key);\n  if (!set) {\n    set = new Set();\n    map.set(key, set);\n  }\n  set.add(value);\n}\n\nfunction remove(map, key, value) {\n  const set = map.get(key);\n  if (set) {\n    set.delete(value);\n    if (set.size === 0) {\n      map.delete(key);\n    }\n  }\n}\n\nfunction getNamedObject(window, name) {\n  const tracker = trackers.get(window);\n  const set = tracker.get(name);\n  if (set === undefined) {\n    return undefined;\n  }\n\n  const sorted = [...set].sort(treeOrderSorter);\n  for (const element of sorted) {\n    if (element.localName === \"iframe\" || element.localName === \"frame\") {\n      const { contentWindow } = element;\n      if (contentWindow && element.getAttributeNS(null, \"name\") === name) {\n        return contentWindow;\n      }\n    }\n  }\n\n  if (set.size === 1) {\n    return idlUtils.wrapperForImpl(set.values().next().value);\n  }\n\n  return HTMLCollection.create(window, [], {\n    element: idlUtils.implForWrapper(window._document).documentElement,\n    query() {\n      // Do *not* reuse `sorted` or `set` from above. We need to re-get and re-iterate the set each time because it\n      // might have changed due to elements being attached, removed, or having their names changed!\n      const currentSet = tracker.get(name);\n      return [...currentSet].sort(treeOrderSorter);\n    }\n  });\n}\n\nexports.elementAttached = element => {\n  const window = element._ownerDocument._globalObject;\n  if (!window) {\n    return;\n  }\n\n  if (element.namespaceURI !== HTML_NS) {\n    return;\n  }\n  if (nodeRoot(element) !== element._ownerDocument) {\n    return;\n  }\n\n  const tracker = trackers.get(window);\n\n  if (nameAttributeElementLocalNames.has(element.localName)) {\n    const nameAttr = element.getAttributeNS(null, \"name\");\n    if (nameAttr !== null) {\n      upsert(tracker, nameAttr, element);\n    }\n  }\n\n  const idAttr = element.getAttributeNS(null, \"id\");\n  if (idAttr !== null) {\n    upsert(tracker, idAttr, element);\n  }\n};\n\nexports.elementDetached = element => {\n  const window = element._ownerDocument._globalObject;\n  if (!window) {\n    return;\n  }\n\n  if (element.namespaceURI !== HTML_NS) {\n    return;\n  }\n\n  const tracker = trackers.get(window);\n\n  const idAttr = element.getAttributeNS(null, \"id\");\n  if (idAttr !== null) {\n    remove(tracker, idAttr, element);\n  }\n\n  const nameAttr = element.getAttributeNS(null, \"name\");\n  if (nameAttr !== null) {\n    remove(tracker, nameAttr, element);\n  }\n};\n\nexports.elementAttributeModified = (element, attributeName, value, oldValue) => {\n  const window = element._ownerDocument._globalObject;\n  if (!window) {\n    return;\n  }\n\n  if (element.namespaceURI !== HTML_NS) {\n    return;\n  }\n  if (nodeRoot(element) !== element._ownerDocument) {\n    return;\n  }\n\n  const tracker = trackers.get(window);\n\n  // TODO what about attribute namespace?\n\n  if (attributeName === \"id\") {\n    if (element.getAttributeNS(null, \"name\") !== oldValue) {\n      remove(tracker, oldValue, element);\n    }\n    if (value !== null) {\n      upsert(tracker, value, element);\n    }\n  } else if (attributeName === \"name\") {\n    if (nameAttributeElementLocalNames.has(element.localName)) {\n      if (element.getAttributeNS(null, \"id\") !== oldValue) {\n        remove(tracker, oldValue, element);\n      }\n      if (value !== null) {\n        upsert(tracker, value, element);\n      }\n    }\n  }\n};\n\nexports.create = (eventTargetPrototype, window) => {\n  const windowProperties = Object.create(eventTargetPrototype, {\n    [Symbol.toStringTag]: {\n      value: \"WindowProperties\",\n      configurable: true\n    }\n  });\n\n  const windowPropertiesProxy = new Proxy(windowProperties, {\n    getOwnPropertyDescriptor(target, property) {\n      if (typeof property === \"symbol\") {\n        return Reflect.getOwnPropertyDescriptor(target, property);\n      }\n\n      // Named property visibility algorithm check, modified as discused in\n      // https://github.com/whatwg/webidl/issues/607.\n      let targetObj = Object.getPrototypeOf(target);\n      while (targetObj !== null) {\n        if (Object.hasOwn(targetObj, property)) {\n          return Reflect.getOwnPropertyDescriptor(target, property);\n        }\n\n        targetObj = Object.getPrototypeOf(targetObj);\n      }\n\n      const value = getNamedObject(window, property);\n      if (value) {\n        return {\n          value,\n          enumerable: false, // Window is [LegacyUnenumerableNamedProperties]\n          writable: true,\n          configurable: true\n        };\n      }\n\n      return Reflect.getOwnPropertyDescriptor(target, property);\n    },\n    has(target, property) {\n      if (typeof property === \"symbol\") {\n        return Reflect.has(target, property);\n      }\n\n      const desc = this.getOwnPropertyDescriptor(target, property);\n      if (desc !== undefined) {\n        return true;\n      }\n\n      const parent = Object.getPrototypeOf(target);\n      return Reflect.has(parent, property);\n    },\n    get(target, property, receiver) {\n      if (typeof property === \"symbol\") {\n        return Reflect.get(target, property, receiver);\n      }\n\n      const desc = this.getOwnPropertyDescriptor(target, property);\n      if (desc === undefined) {\n        const parent = Object.getPrototypeOf(target);\n        return Reflect.get(parent, property, receiver);\n      }\n\n      // Named properties object only has data properties.\n      return desc.value;\n    },\n    set(target, property, value, receiver) {\n      if (typeof property === \"symbol\") {\n        return Reflect.set(target, property, value, receiver);\n      }\n\n      const ownDesc = this.getOwnPropertyDescriptor(target, property);\n      return idlUtils.ordinarySetWithOwnDescriptor(target, property, value, receiver, ownDesc);\n    },\n    defineProperty() {\n      return false;\n    },\n    deleteProperty() {\n      return false;\n    },\n    setPrototypeOf() {\n      throw new TypeError(\"Immutable prototype object WindowProperties cannot have its prototype set.\");\n    },\n    preventExtensions() {\n      return false;\n    }\n  });\n\n  trackers.set(window, new Map());\n\n  return windowPropertiesProxy;\n};\n","\"use strict\";\n/**\n * Character classes and associated utilities for the 5th edition of XML 1.0.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\nexports.CHAR = \"\\t\\n\\r -\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\";\nexports.S = \" \\t\\r\\n\";\n// tslint:disable-next-line:max-line-length\nexports.NAME_START_CHAR = \":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NAME_CHAR = \"-\" + exports.NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.CHAR_RE = new RegExp(\"^[\" + exports.CHAR + \"]$\", \"u\");\nexports.S_RE = new RegExp(\"^[\" + exports.S + \"]+$\", \"u\");\nexports.NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"]$\", \"u\");\nexports.NAME_CHAR_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]$\", \"u\");\nexports.NAME_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"][\" + exports.NAME_CHAR + \"]*$\", \"u\");\nexports.NMTOKEN_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]+$\", \"u\");\nvar TAB = 9;\nvar NL = 0xA;\nvar CR = 0xD;\nvar SPACE = 0x20;\n//\n// Lists.\n//\n/** All characters in the ``S`` production. */\nexports.S_LIST = [SPACE, NL, CR, TAB];\n/**\n * Determines whether a codepoint matches the ``CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR``.\n */\nfunction isChar(c) {\n    return (c >= SPACE && c <= 0xD7FF) ||\n        c === NL || c === CR || c === TAB ||\n        (c >= 0xE000 && c <= 0xFFFD) ||\n        (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isChar = isChar;\n/**\n * Determines whether a codepoint matches the ``S`` (space) production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``S``.\n */\nfunction isS(c) {\n    return c === SPACE || c === NL || c === CR || c === TAB;\n}\nexports.isS = isS;\n/**\n * Determines whether a codepoint matches the ``NAME_START_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_START_CHAR``.\n */\nfunction isNameStartChar(c) {\n    return ((c >= 0x41 && c <= 0x5A) ||\n        (c >= 0x61 && c <= 0x7A) ||\n        c === 0x3A ||\n        c === 0x5F ||\n        c === 0x200C ||\n        c === 0x200D ||\n        (c >= 0xC0 && c <= 0xD6) ||\n        (c >= 0xD8 && c <= 0xF6) ||\n        (c >= 0x00F8 && c <= 0x02FF) ||\n        (c >= 0x0370 && c <= 0x037D) ||\n        (c >= 0x037F && c <= 0x1FFF) ||\n        (c >= 0x2070 && c <= 0x218F) ||\n        (c >= 0x2C00 && c <= 0x2FEF) ||\n        (c >= 0x3001 && c <= 0xD7FF) ||\n        (c >= 0xF900 && c <= 0xFDCF) ||\n        (c >= 0xFDF0 && c <= 0xFFFD) ||\n        (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNameStartChar = isNameStartChar;\n/**\n * Determines whether a codepoint matches the ``NAME_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_CHAR``.\n */\nfunction isNameChar(c) {\n    return isNameStartChar(c) ||\n        (c >= 0x30 && c <= 0x39) ||\n        c === 0x2D ||\n        c === 0x2E ||\n        c === 0xB7 ||\n        (c >= 0x0300 && c <= 0x036F) ||\n        (c >= 0x203F && c <= 0x2040);\n}\nexports.isNameChar = isNameChar;\n//# sourceMappingURL=ed5.js.map","\"use strict\";\n/**\n * Character classes and associated utilities for the 2nd edition of XML 1.1.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\nexports.CHAR = \"\\u0001-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\";\nexports.RESTRICTED_CHAR = \"\\u0001-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F-\\u0084\\u0086-\\u009F\";\nexports.S = \" \\t\\r\\n\";\n// tslint:disable-next-line:max-line-length\nexports.NAME_START_CHAR = \":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NAME_CHAR = \"-\" + exports.NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.CHAR_RE = new RegExp(\"^[\" + exports.CHAR + \"]$\", \"u\");\nexports.RESTRICTED_CHAR_RE = new RegExp(\"^[\" + exports.RESTRICTED_CHAR + \"]$\", \"u\");\nexports.S_RE = new RegExp(\"^[\" + exports.S + \"]+$\", \"u\");\nexports.NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"]$\", \"u\");\nexports.NAME_CHAR_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]$\", \"u\");\nexports.NAME_RE = new RegExp(\"^[\" + exports.NAME_START_CHAR + \"][\" + exports.NAME_CHAR + \"]*$\", \"u\");\nexports.NMTOKEN_RE = new RegExp(\"^[\" + exports.NAME_CHAR + \"]+$\", \"u\");\nvar TAB = 9;\nvar NL = 0xA;\nvar CR = 0xD;\nvar SPACE = 0x20;\n//\n// Lists.\n//\n/** All characters in the ``S`` production. */\nexports.S_LIST = [SPACE, NL, CR, TAB];\n/**\n * Determines whether a codepoint matches the ``CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR``.\n */\nfunction isChar(c) {\n    return (c >= 0x0001 && c <= 0xD7FF) ||\n        (c >= 0xE000 && c <= 0xFFFD) ||\n        (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isChar = isChar;\n/**\n * Determines whether a codepoint matches the ``RESTRICTED_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``RESTRICTED_CHAR``.\n */\nfunction isRestrictedChar(c) {\n    return (c >= 0x1 && c <= 0x8) ||\n        c === 0xB ||\n        c === 0xC ||\n        (c >= 0xE && c <= 0x1F) ||\n        (c >= 0x7F && c <= 0x84) ||\n        (c >= 0x86 && c <= 0x9F);\n}\nexports.isRestrictedChar = isRestrictedChar;\n/**\n * Determines whether a codepoint matches the ``CHAR`` production and does not\n * match the ``RESTRICTED_CHAR`` production. ``isCharAndNotRestricted(x)`` is\n * equivalent to ``isChar(x) && !isRestrictedChar(x)``. This function is faster\n * than running the two-call equivalent.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``CHAR`` and does not match\n * ``RESTRICTED_CHAR``.\n */\nfunction isCharAndNotRestricted(c) {\n    return (c === 0x9) ||\n        (c === 0xA) ||\n        (c === 0xD) ||\n        (c > 0x1F && c < 0x7F) ||\n        (c === 0x85) ||\n        (c > 0x9F && c <= 0xD7FF) ||\n        (c >= 0xE000 && c <= 0xFFFD) ||\n        (c >= 0x10000 && c <= 0x10FFFF);\n}\nexports.isCharAndNotRestricted = isCharAndNotRestricted;\n/**\n * Determines whether a codepoint matches the ``S`` (space) production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``S``.\n */\nfunction isS(c) {\n    return c === SPACE || c === NL || c === CR || c === TAB;\n}\nexports.isS = isS;\n/**\n * Determines whether a codepoint matches the ``NAME_START_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_START_CHAR``.\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction isNameStartChar(c) {\n    return ((c >= 0x41 && c <= 0x5A) ||\n        (c >= 0x61 && c <= 0x7A) ||\n        c === 0x3A ||\n        c === 0x5F ||\n        c === 0x200C ||\n        c === 0x200D ||\n        (c >= 0xC0 && c <= 0xD6) ||\n        (c >= 0xD8 && c <= 0xF6) ||\n        (c >= 0x00F8 && c <= 0x02FF) ||\n        (c >= 0x0370 && c <= 0x037D) ||\n        (c >= 0x037F && c <= 0x1FFF) ||\n        (c >= 0x2070 && c <= 0x218F) ||\n        (c >= 0x2C00 && c <= 0x2FEF) ||\n        (c >= 0x3001 && c <= 0xD7FF) ||\n        (c >= 0xF900 && c <= 0xFDCF) ||\n        (c >= 0xFDF0 && c <= 0xFFFD) ||\n        (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNameStartChar = isNameStartChar;\n/**\n * Determines whether a codepoint matches the ``NAME_CHAR`` production.\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches ``NAME_CHAR``.\n */\nfunction isNameChar(c) {\n    return isNameStartChar(c) ||\n        (c >= 0x30 && c <= 0x39) ||\n        c === 0x2D ||\n        c === 0x2E ||\n        c === 0xB7 ||\n        (c >= 0x0300 && c <= 0x036F) ||\n        (c >= 0x203F && c <= 0x2040);\n}\nexports.isNameChar = isNameChar;\n//# sourceMappingURL=ed2.js.map","\"use strict\";\n/**\n * Character class utilities for XML NS 1.0 edition 3.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// Fragments.\n//\n// tslint:disable-next-line:max-line-length\nexports.NC_NAME_START_CHAR = \"A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\uD800\\uDC00-\\uDB7F\\uDFFF\";\nexports.NC_NAME_CHAR = \"-\" + exports.NC_NAME_START_CHAR + \".0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040\";\n//\n// Regular expressions.\n//\nexports.NC_NAME_START_CHAR_RE = new RegExp(\"^[\" + exports.NC_NAME_START_CHAR + \"]$\", \"u\");\nexports.NC_NAME_CHAR_RE = new RegExp(\"^[\" + exports.NC_NAME_CHAR + \"]$\", \"u\");\nexports.NC_NAME_RE = new RegExp(\"^[\" + exports.NC_NAME_START_CHAR + \"][\" + exports.NC_NAME_CHAR + \"]*$\", \"u\");\n/**\n * Determines whether a codepoint matches [[NC_NAME_START_CHAR]].\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches.\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction isNCNameStartChar(c) {\n    return ((c >= 0x41 && c <= 0x5A) ||\n        c === 0x5F ||\n        (c >= 0x61 && c <= 0x7A) ||\n        (c >= 0xC0 && c <= 0xD6) ||\n        (c >= 0xD8 && c <= 0xF6) ||\n        (c >= 0x00F8 && c <= 0x02FF) ||\n        (c >= 0x0370 && c <= 0x037D) ||\n        (c >= 0x037F && c <= 0x1FFF) ||\n        (c >= 0x200C && c <= 0x200D) ||\n        (c >= 0x2070 && c <= 0x218F) ||\n        (c >= 0x2C00 && c <= 0x2FEF) ||\n        (c >= 0x3001 && c <= 0xD7FF) ||\n        (c >= 0xF900 && c <= 0xFDCF) ||\n        (c >= 0xFDF0 && c <= 0xFFFD) ||\n        (c >= 0x10000 && c <= 0xEFFFF));\n}\nexports.isNCNameStartChar = isNCNameStartChar;\n/**\n * Determines whether a codepoint matches [[NC_NAME_CHAR]].\n *\n * @param c The code point.\n *\n * @returns ``true`` if the codepoint matches.\n */\nfunction isNCNameChar(c) {\n    return isNCNameStartChar(c) ||\n        (c === 0x2D ||\n            c === 0x2E ||\n            (c >= 0x30 && c <= 0x39) ||\n            c === 0x00B7 ||\n            (c >= 0x0300 && c <= 0x036F) ||\n            (c >= 0x203F && c <= 0x2040));\n}\nexports.isNCNameChar = isNCNameChar;\n//# sourceMappingURL=ed3.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SaxesParser = exports.EVENTS = void 0;\nconst ed5 = require(\"xmlchars/xml/1.0/ed5\");\nconst ed2 = require(\"xmlchars/xml/1.1/ed2\");\nconst NSed3 = require(\"xmlchars/xmlns/1.0/ed3\");\nvar isS = ed5.isS;\nvar isChar10 = ed5.isChar;\nvar isNameStartChar = ed5.isNameStartChar;\nvar isNameChar = ed5.isNameChar;\nvar S_LIST = ed5.S_LIST;\nvar NAME_RE = ed5.NAME_RE;\nvar isChar11 = ed2.isChar;\nvar isNCNameStartChar = NSed3.isNCNameStartChar;\nvar isNCNameChar = NSed3.isNCNameChar;\nvar NC_NAME_RE = NSed3.NC_NAME_RE;\nconst XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\nconst XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\nconst rootNS = {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n    __proto__: null,\n    xml: XML_NAMESPACE,\n    xmlns: XMLNS_NAMESPACE,\n};\nconst XML_ENTITIES = {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n    __proto__: null,\n    amp: \"&\",\n    gt: \">\",\n    lt: \"<\",\n    quot: \"\\\"\",\n    apos: \"'\",\n};\n// EOC: end-of-chunk\nconst EOC = -1;\nconst NL_LIKE = -2;\nconst S_BEGIN = 0; // Initial state.\nconst S_BEGIN_WHITESPACE = 1; // leading whitespace\nconst S_DOCTYPE = 2; // <!DOCTYPE\nconst S_DOCTYPE_QUOTE = 3; // <!DOCTYPE \"//blah\nconst S_DTD = 4; // <!DOCTYPE \"//blah\" [ ...\nconst S_DTD_QUOTED = 5; // <!DOCTYPE \"//blah\" [ \"foo\nconst S_DTD_OPEN_WAKA = 6;\nconst S_DTD_OPEN_WAKA_BANG = 7;\nconst S_DTD_COMMENT = 8; // <!--\nconst S_DTD_COMMENT_ENDING = 9; // <!-- blah -\nconst S_DTD_COMMENT_ENDED = 10; // <!-- blah --\nconst S_DTD_PI = 11; // <?\nconst S_DTD_PI_ENDING = 12; // <?hi \"there\" ?\nconst S_TEXT = 13; // general stuff\nconst S_ENTITY = 14; // &amp and such\nconst S_OPEN_WAKA = 15; // <\nconst S_OPEN_WAKA_BANG = 16; // <!...\nconst S_COMMENT = 17; // <!--\nconst S_COMMENT_ENDING = 18; // <!-- blah -\nconst S_COMMENT_ENDED = 19; // <!-- blah --\nconst S_CDATA = 20; // <![CDATA[ something\nconst S_CDATA_ENDING = 21; // ]\nconst S_CDATA_ENDING_2 = 22; // ]]\nconst S_PI_FIRST_CHAR = 23; // <?hi, first char\nconst S_PI_REST = 24; // <?hi, rest of the name\nconst S_PI_BODY = 25; // <?hi there\nconst S_PI_ENDING = 26; // <?hi \"there\" ?\nconst S_XML_DECL_NAME_START = 27; // <?xml\nconst S_XML_DECL_NAME = 28; // <?xml foo\nconst S_XML_DECL_EQ = 29; // <?xml foo=\nconst S_XML_DECL_VALUE_START = 30; // <?xml foo=\nconst S_XML_DECL_VALUE = 31; // <?xml foo=\"bar\"\nconst S_XML_DECL_SEPARATOR = 32; // <?xml foo=\"bar\"\nconst S_XML_DECL_ENDING = 33; // <?xml ... ?\nconst S_OPEN_TAG = 34; // <strong\nconst S_OPEN_TAG_SLASH = 35; // <strong /\nconst S_ATTRIB = 36; // <a\nconst S_ATTRIB_NAME = 37; // <a foo\nconst S_ATTRIB_NAME_SAW_WHITE = 38; // <a foo _\nconst S_ATTRIB_VALUE = 39; // <a foo=\nconst S_ATTRIB_VALUE_QUOTED = 40; // <a foo=\"bar\nconst S_ATTRIB_VALUE_CLOSED = 41; // <a foo=\"bar\"\nconst S_ATTRIB_VALUE_UNQUOTED = 42; // <a foo=bar\nconst S_CLOSE_TAG = 43; // </a\nconst S_CLOSE_TAG_SAW_WHITE = 44; // </a   >\nconst TAB = 9;\nconst NL = 0xA;\nconst CR = 0xD;\nconst SPACE = 0x20;\nconst BANG = 0x21;\nconst DQUOTE = 0x22;\nconst AMP = 0x26;\nconst SQUOTE = 0x27;\nconst MINUS = 0x2D;\nconst FORWARD_SLASH = 0x2F;\nconst SEMICOLON = 0x3B;\nconst LESS = 0x3C;\nconst EQUAL = 0x3D;\nconst GREATER = 0x3E;\nconst QUESTION = 0x3F;\nconst OPEN_BRACKET = 0x5B;\nconst CLOSE_BRACKET = 0x5D;\nconst NEL = 0x85;\nconst LS = 0x2028; // Line Separator\nconst isQuote = (c) => c === DQUOTE || c === SQUOTE;\nconst QUOTES = [DQUOTE, SQUOTE];\nconst DOCTYPE_TERMINATOR = [...QUOTES, OPEN_BRACKET, GREATER];\nconst DTD_TERMINATOR = [...QUOTES, LESS, CLOSE_BRACKET];\nconst XML_DECL_NAME_TERMINATOR = [EQUAL, QUESTION, ...S_LIST];\nconst ATTRIB_VALUE_UNQUOTED_TERMINATOR = [...S_LIST, GREATER, AMP, LESS];\nfunction nsPairCheck(parser, prefix, uri) {\n    switch (prefix) {\n        case \"xml\":\n            if (uri !== XML_NAMESPACE) {\n                parser.fail(`xml prefix must be bound to ${XML_NAMESPACE}.`);\n            }\n            break;\n        case \"xmlns\":\n            if (uri !== XMLNS_NAMESPACE) {\n                parser.fail(`xmlns prefix must be bound to ${XMLNS_NAMESPACE}.`);\n            }\n            break;\n        default:\n    }\n    switch (uri) {\n        case XMLNS_NAMESPACE:\n            parser.fail(prefix === \"\" ?\n                `the default namespace may not be set to ${uri}.` :\n                `may not assign a prefix (even \"xmlns\") to the URI \\\n${XMLNS_NAMESPACE}.`);\n            break;\n        case XML_NAMESPACE:\n            switch (prefix) {\n                case \"xml\":\n                    // Assinging the XML namespace to \"xml\" is fine.\n                    break;\n                case \"\":\n                    parser.fail(`the default namespace may not be set to ${uri}.`);\n                    break;\n                default:\n                    parser.fail(\"may not assign the xml namespace to another prefix.\");\n            }\n            break;\n        default:\n    }\n}\nfunction nsMappingCheck(parser, mapping) {\n    for (const local of Object.keys(mapping)) {\n        nsPairCheck(parser, local, mapping[local]);\n    }\n}\nconst isNCName = (name) => NC_NAME_RE.test(name);\nconst isName = (name) => NAME_RE.test(name);\nconst FORBIDDEN_START = 0;\nconst FORBIDDEN_BRACKET = 1;\nconst FORBIDDEN_BRACKET_BRACKET = 2;\n/**\n * The list of supported events.\n */\nexports.EVENTS = [\n    \"xmldecl\",\n    \"text\",\n    \"processinginstruction\",\n    \"doctype\",\n    \"comment\",\n    \"opentagstart\",\n    \"attribute\",\n    \"opentag\",\n    \"closetag\",\n    \"cdata\",\n    \"error\",\n    \"end\",\n    \"ready\",\n];\nconst EVENT_NAME_TO_HANDLER_NAME = {\n    xmldecl: \"xmldeclHandler\",\n    text: \"textHandler\",\n    processinginstruction: \"piHandler\",\n    doctype: \"doctypeHandler\",\n    comment: \"commentHandler\",\n    opentagstart: \"openTagStartHandler\",\n    attribute: \"attributeHandler\",\n    opentag: \"openTagHandler\",\n    closetag: \"closeTagHandler\",\n    cdata: \"cdataHandler\",\n    error: \"errorHandler\",\n    end: \"endHandler\",\n    ready: \"readyHandler\",\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nclass SaxesParser {\n    /**\n     * @param opt The parser options.\n     */\n    constructor(opt) {\n        this.opt = opt !== null && opt !== void 0 ? opt : {};\n        this.fragmentOpt = !!this.opt.fragment;\n        const xmlnsOpt = this.xmlnsOpt = !!this.opt.xmlns;\n        this.trackPosition = this.opt.position !== false;\n        this.fileName = this.opt.fileName;\n        if (xmlnsOpt) {\n            // This is the function we use to perform name checks on PIs and entities.\n            // When namespaces are used, colons are not allowed in PI target names or\n            // entity names. So the check depends on whether namespaces are used. See:\n            //\n            // https://www.w3.org/XML/xml-names-19990114-errata.html\n            // NE08\n            //\n            this.nameStartCheck = isNCNameStartChar;\n            this.nameCheck = isNCNameChar;\n            this.isName = isNCName;\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            this.processAttribs = this.processAttribsNS;\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            this.pushAttrib = this.pushAttribNS;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n            this.ns = Object.assign({ __proto__: null }, rootNS);\n            const additional = this.opt.additionalNamespaces;\n            if (additional != null) {\n                nsMappingCheck(this, additional);\n                Object.assign(this.ns, additional);\n            }\n        }\n        else {\n            this.nameStartCheck = isNameStartChar;\n            this.nameCheck = isNameChar;\n            this.isName = isName;\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            this.processAttribs = this.processAttribsPlain;\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            this.pushAttrib = this.pushAttribPlain;\n        }\n        //\n        // The order of the members in this table needs to correspond to the state\n        // numbers given to the states that correspond to the methods being recorded\n        // here.\n        //\n        this.stateTable = [\n            /* eslint-disable @typescript-eslint/unbound-method */\n            this.sBegin,\n            this.sBeginWhitespace,\n            this.sDoctype,\n            this.sDoctypeQuote,\n            this.sDTD,\n            this.sDTDQuoted,\n            this.sDTDOpenWaka,\n            this.sDTDOpenWakaBang,\n            this.sDTDComment,\n            this.sDTDCommentEnding,\n            this.sDTDCommentEnded,\n            this.sDTDPI,\n            this.sDTDPIEnding,\n            this.sText,\n            this.sEntity,\n            this.sOpenWaka,\n            this.sOpenWakaBang,\n            this.sComment,\n            this.sCommentEnding,\n            this.sCommentEnded,\n            this.sCData,\n            this.sCDataEnding,\n            this.sCDataEnding2,\n            this.sPIFirstChar,\n            this.sPIRest,\n            this.sPIBody,\n            this.sPIEnding,\n            this.sXMLDeclNameStart,\n            this.sXMLDeclName,\n            this.sXMLDeclEq,\n            this.sXMLDeclValueStart,\n            this.sXMLDeclValue,\n            this.sXMLDeclSeparator,\n            this.sXMLDeclEnding,\n            this.sOpenTag,\n            this.sOpenTagSlash,\n            this.sAttrib,\n            this.sAttribName,\n            this.sAttribNameSawWhite,\n            this.sAttribValue,\n            this.sAttribValueQuoted,\n            this.sAttribValueClosed,\n            this.sAttribValueUnquoted,\n            this.sCloseTag,\n            this.sCloseTagSawWhite,\n            /* eslint-enable @typescript-eslint/unbound-method */\n        ];\n        this._init();\n    }\n    /**\n     * Indicates whether or not the parser is closed. If ``true``, wait for\n     * the ``ready`` event to write again.\n     */\n    get closed() {\n        return this._closed;\n    }\n    _init() {\n        var _a;\n        this.openWakaBang = \"\";\n        this.text = \"\";\n        this.name = \"\";\n        this.piTarget = \"\";\n        this.entity = \"\";\n        this.q = null;\n        this.tags = [];\n        this.tag = null;\n        this.topNS = null;\n        this.chunk = \"\";\n        this.chunkPosition = 0;\n        this.i = 0;\n        this.prevI = 0;\n        this.carriedFromPrevious = undefined;\n        this.forbiddenState = FORBIDDEN_START;\n        this.attribList = [];\n        // The logic is organized so as to minimize the need to check\n        // this.opt.fragment while parsing.\n        const { fragmentOpt } = this;\n        this.state = fragmentOpt ? S_TEXT : S_BEGIN;\n        // We want these to be all true if we are dealing with a fragment.\n        this.reportedTextBeforeRoot = this.reportedTextAfterRoot = this.closedRoot =\n            this.sawRoot = fragmentOpt;\n        // An XML declaration is intially possible only when parsing whole\n        // documents.\n        this.xmlDeclPossible = !fragmentOpt;\n        this.xmlDeclExpects = [\"version\"];\n        this.entityReturnState = undefined;\n        let { defaultXMLVersion } = this.opt;\n        if (defaultXMLVersion === undefined) {\n            if (this.opt.forceXMLVersion === true) {\n                throw new Error(\"forceXMLVersion set but defaultXMLVersion is not set\");\n            }\n            defaultXMLVersion = \"1.0\";\n        }\n        this.setXMLVersion(defaultXMLVersion);\n        this.positionAtNewLine = 0;\n        this.doctype = false;\n        this._closed = false;\n        this.xmlDecl = {\n            version: undefined,\n            encoding: undefined,\n            standalone: undefined,\n        };\n        this.line = 1;\n        this.column = 0;\n        this.ENTITIES = Object.create(XML_ENTITIES);\n        (_a = this.readyHandler) === null || _a === void 0 ? void 0 : _a.call(this);\n    }\n    /**\n     * The stream position the parser is currently looking at. This field is\n     * zero-based.\n     *\n     * This field is not based on counting Unicode characters but is to be\n     * interpreted as a plain index into a JavaScript string.\n     */\n    get position() {\n        return this.chunkPosition + this.i;\n    }\n    /**\n     * The column number of the next character to be read by the parser.  *\n     * This field is zero-based. (The first column in a line is 0.)\n     *\n     * This field reports the index at which the next character would be in the\n     * line if the line were represented as a JavaScript string.  Note that this\n     * *can* be different to a count based on the number of *Unicode characters*\n     * due to how JavaScript handles astral plane characters.\n     *\n     * See [[column]] for a number that corresponds to a count of Unicode\n     * characters.\n     */\n    get columnIndex() {\n        return this.position - this.positionAtNewLine;\n    }\n    /**\n     * Set an event listener on an event. The parser supports one handler per\n     * event type. If you try to set an event handler over an existing handler,\n     * the old handler is silently overwritten.\n     *\n     * @param name The event to listen to.\n     *\n     * @param handler The handler to set.\n     */\n    on(name, handler) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n        this[EVENT_NAME_TO_HANDLER_NAME[name]] = handler;\n    }\n    /**\n     * Unset an event handler.\n     *\n     * @parma name The event to stop listening to.\n     */\n    off(name) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n        this[EVENT_NAME_TO_HANDLER_NAME[name]] = undefined;\n    }\n    /**\n     * Make an error object. The error object will have a message that contains\n     * the ``fileName`` option passed at the creation of the parser. If position\n     * tracking was turned on, it will also have line and column number\n     * information.\n     *\n     * @param message The message describing the error to report.\n     *\n     * @returns An error object with a properly formatted message.\n     */\n    makeError(message) {\n        var _a;\n        let msg = (_a = this.fileName) !== null && _a !== void 0 ? _a : \"\";\n        if (this.trackPosition) {\n            if (msg.length > 0) {\n                msg += \":\";\n            }\n            msg += `${this.line}:${this.column}`;\n        }\n        if (msg.length > 0) {\n            msg += \": \";\n        }\n        return new Error(msg + message);\n    }\n    /**\n     * Report a parsing error. This method is made public so that client code may\n     * check for issues that are outside the scope of this project and can report\n     * errors.\n     *\n     * @param message The error to report.\n     *\n     * @returns this\n     */\n    fail(message) {\n        const err = this.makeError(message);\n        const handler = this.errorHandler;\n        if (handler === undefined) {\n            throw err;\n        }\n        else {\n            handler(err);\n        }\n        return this;\n    }\n    /**\n     * Write a XML data to the parser.\n     *\n     * @param chunk The XML data to write.\n     *\n     * @returns this\n     */\n    // We do need object for the type here. Yes, it often causes problems\n    // but not in this case.\n    write(chunk) {\n        if (this.closed) {\n            return this.fail(\"cannot write after close; assign an onready handler.\");\n        }\n        let end = false;\n        if (chunk === null) {\n            // We cannot return immediately because carriedFromPrevious may need\n            // processing.\n            end = true;\n            chunk = \"\";\n        }\n        else if (typeof chunk === \"object\") {\n            chunk = chunk.toString();\n        }\n        // We checked if performing a pre-decomposition of the string into an array\n        // of single complete characters (``Array.from(chunk)``) would be faster\n        // than the current repeated calls to ``charCodeAt``. As of August 2018, it\n        // isn't. (There may be Node-specific code that would perform faster than\n        // ``Array.from`` but don't want to be dependent on Node.)\n        if (this.carriedFromPrevious !== undefined) {\n            // The previous chunk had char we must carry over.\n            chunk = `${this.carriedFromPrevious}${chunk}`;\n            this.carriedFromPrevious = undefined;\n        }\n        let limit = chunk.length;\n        const lastCode = chunk.charCodeAt(limit - 1);\n        if (!end &&\n            // A trailing CR or surrogate must be carried over to the next\n            // chunk.\n            (lastCode === CR || (lastCode >= 0xD800 && lastCode <= 0xDBFF))) {\n            // The chunk ends with a character that must be carried over. We cannot\n            // know how to handle it until we get the next chunk or the end of the\n            // stream. So save it for later.\n            this.carriedFromPrevious = chunk[limit - 1];\n            limit--;\n            chunk = chunk.slice(0, limit);\n        }\n        const { stateTable } = this;\n        this.chunk = chunk;\n        this.i = 0;\n        while (this.i < limit) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n            stateTable[this.state].call(this);\n        }\n        this.chunkPosition += limit;\n        return end ? this.end() : this;\n    }\n    /**\n     * Close the current stream. Perform final well-formedness checks and reset\n     * the parser tstate.\n     *\n     * @returns this\n     */\n    close() {\n        return this.write(null);\n    }\n    /**\n     * Get a single code point out of the current chunk. This updates the current\n     * position if we do position tracking.\n     *\n     * This is the algorithm to use for XML 1.0.\n     *\n     * @returns The character read.\n     */\n    getCode10() {\n        const { chunk, i } = this;\n        this.prevI = i;\n        // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n        // read this.i again, which is a bit faster.\n        this.i = i + 1;\n        if (i >= chunk.length) {\n            return EOC;\n        }\n        // Using charCodeAt and handling the surrogates ourselves is faster\n        // than using codePointAt.\n        const code = chunk.charCodeAt(i);\n        this.column++;\n        if (code < 0xD800) {\n            if (code >= SPACE || code === TAB) {\n                return code;\n            }\n            switch (code) {\n                case NL:\n                    this.line++;\n                    this.column = 0;\n                    this.positionAtNewLine = this.position;\n                    return NL;\n                case CR:\n                    // We may get NaN if we read past the end of the chunk, which is fine.\n                    if (chunk.charCodeAt(i + 1) === NL) {\n                        // A \\r\\n sequence is converted to \\n so we have to skip over the\n                        // next character. We already know it has a size of 1 so ++ is fine\n                        // here.\n                        this.i = i + 2;\n                    }\n                    // Otherwise, a \\r is just converted to \\n, so we don't have to skip\n                    // ahead.\n                    // In either case, \\r becomes \\n.\n                    this.line++;\n                    this.column = 0;\n                    this.positionAtNewLine = this.position;\n                    return NL_LIKE;\n                default:\n                    // If we get here, then code < SPACE and it is not NL CR or TAB.\n                    this.fail(\"disallowed character.\");\n                    return code;\n            }\n        }\n        if (code > 0xDBFF) {\n            // This is a specialized version of isChar10 that takes into account\n            // that in this context code > 0xDBFF and code <= 0xFFFF. So it does not\n            // test cases that don't need testing.\n            if (!(code >= 0xE000 && code <= 0xFFFD)) {\n                this.fail(\"disallowed character.\");\n            }\n            return code;\n        }\n        const final = 0x10000 + ((code - 0xD800) * 0x400) +\n            (chunk.charCodeAt(i + 1) - 0xDC00);\n        this.i = i + 2;\n        // This is a specialized version of isChar10 that takes into account that in\n        // this context necessarily final >= 0x10000.\n        if (final > 0x10FFFF) {\n            this.fail(\"disallowed character.\");\n        }\n        return final;\n    }\n    /**\n     * Get a single code point out of the current chunk. This updates the current\n     * position if we do position tracking.\n     *\n     * This is the algorithm to use for XML 1.1.\n     *\n     * @returns {number} The character read.\n     */\n    getCode11() {\n        const { chunk, i } = this;\n        this.prevI = i;\n        // Yes, we do this instead of doing this.i++. Doing it this way, we do not\n        // read this.i again, which is a bit faster.\n        this.i = i + 1;\n        if (i >= chunk.length) {\n            return EOC;\n        }\n        // Using charCodeAt and handling the surrogates ourselves is faster\n        // than using codePointAt.\n        const code = chunk.charCodeAt(i);\n        this.column++;\n        if (code < 0xD800) {\n            if ((code > 0x1F && code < 0x7F) || (code > 0x9F && code !== LS) ||\n                code === TAB) {\n                return code;\n            }\n            switch (code) {\n                case NL: // 0xA\n                    this.line++;\n                    this.column = 0;\n                    this.positionAtNewLine = this.position;\n                    return NL;\n                case CR: { // 0xD\n                    // We may get NaN if we read past the end of the chunk, which is\n                    // fine.\n                    const next = chunk.charCodeAt(i + 1);\n                    if (next === NL || next === NEL) {\n                        // A CR NL or CR NEL sequence is converted to NL so we have to skip\n                        // over the next character. We already know it has a size of 1.\n                        this.i = i + 2;\n                    }\n                    // Otherwise, a CR is just converted to NL, no skip.\n                }\n                /* yes, fall through */\n                case NEL: // 0x85\n                case LS: // Ox2028\n                    this.line++;\n                    this.column = 0;\n                    this.positionAtNewLine = this.position;\n                    return NL_LIKE;\n                default:\n                    this.fail(\"disallowed character.\");\n                    return code;\n            }\n        }\n        if (code > 0xDBFF) {\n            // This is a specialized version of isCharAndNotRestricted that takes into\n            // account that in this context code > 0xDBFF and code <= 0xFFFF. So it\n            // does not test cases that don't need testing.\n            if (!(code >= 0xE000 && code <= 0xFFFD)) {\n                this.fail(\"disallowed character.\");\n            }\n            return code;\n        }\n        const final = 0x10000 + ((code - 0xD800) * 0x400) +\n            (chunk.charCodeAt(i + 1) - 0xDC00);\n        this.i = i + 2;\n        // This is a specialized version of isCharAndNotRestricted that takes into\n        // account that in this context necessarily final >= 0x10000.\n        if (final > 0x10FFFF) {\n            this.fail(\"disallowed character.\");\n        }\n        return final;\n    }\n    /**\n     * Like ``getCode`` but with the return value normalized so that ``NL`` is\n     * returned for ``NL_LIKE``.\n     */\n    getCodeNorm() {\n        const c = this.getCode();\n        return c === NL_LIKE ? NL : c;\n    }\n    unget() {\n        this.i = this.prevI;\n        this.column--;\n    }\n    /**\n     * Capture characters into a buffer until encountering one of a set of\n     * characters.\n     *\n     * @param chars An array of codepoints. Encountering a character in the array\n     * ends the capture. (``chars`` may safely contain ``NL``.)\n     *\n     * @return The character code that made the capture end, or ``EOC`` if we hit\n     * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n     * instead.\n     */\n    captureTo(chars) {\n        let { i: start } = this;\n        const { chunk } = this;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const c = this.getCode();\n            const isNLLike = c === NL_LIKE;\n            const final = isNLLike ? NL : c;\n            if (final === EOC || chars.includes(final)) {\n                this.text += chunk.slice(start, this.prevI);\n                return final;\n            }\n            if (isNLLike) {\n                this.text += `${chunk.slice(start, this.prevI)}\\n`;\n                start = this.i;\n            }\n        }\n    }\n    /**\n     * Capture characters into a buffer until encountering a character.\n     *\n     * @param char The codepoint that ends the capture. **NOTE ``char`` MAY NOT\n     * CONTAIN ``NL``.** Passing ``NL`` will result in buggy behavior.\n     *\n     * @return ``true`` if we ran into the character. Otherwise, we ran into the\n     * end of the current chunk.\n     */\n    captureToChar(char) {\n        let { i: start } = this;\n        const { chunk } = this;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            let c = this.getCode();\n            switch (c) {\n                case NL_LIKE:\n                    this.text += `${chunk.slice(start, this.prevI)}\\n`;\n                    start = this.i;\n                    c = NL;\n                    break;\n                case EOC:\n                    this.text += chunk.slice(start);\n                    return false;\n                default:\n            }\n            if (c === char) {\n                this.text += chunk.slice(start, this.prevI);\n                return true;\n            }\n        }\n    }\n    /**\n     * Capture characters that satisfy ``isNameChar`` into the ``name`` field of\n     * this parser.\n     *\n     * @return The character code that made the test fail, or ``EOC`` if we hit\n     * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n     * instead.\n     */\n    captureNameChars() {\n        const { chunk, i: start } = this;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const c = this.getCode();\n            if (c === EOC) {\n                this.name += chunk.slice(start);\n                return EOC;\n            }\n            // NL is not a name char so we don't have to test specifically for it.\n            if (!isNameChar(c)) {\n                this.name += chunk.slice(start, this.prevI);\n                return c === NL_LIKE ? NL : c;\n            }\n        }\n    }\n    /**\n     * Skip white spaces.\n     *\n     * @return The character that ended the skip, or ``EOC`` if we hit\n     * the end of the chunk. The return value cannot be NL_LIKE: NL is returned\n     * instead.\n     */\n    skipSpaces() {\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const c = this.getCodeNorm();\n            if (c === EOC || !isS(c)) {\n                return c;\n            }\n        }\n    }\n    setXMLVersion(version) {\n        this.currentXMLVersion = version;\n        /*  eslint-disable @typescript-eslint/unbound-method */\n        if (version === \"1.0\") {\n            this.isChar = isChar10;\n            this.getCode = this.getCode10;\n        }\n        else {\n            this.isChar = isChar11;\n            this.getCode = this.getCode11;\n        }\n        /* eslint-enable @typescript-eslint/unbound-method */\n    }\n    // STATE ENGINE METHODS\n    // This needs to be a state separate from S_BEGIN_WHITESPACE because we want\n    // to be sure never to come back to this state later.\n    sBegin() {\n        // We are essentially peeking at the first character of the chunk. Since\n        // S_BEGIN can be in effect only when we start working on the first chunk,\n        // the index at which we must look is necessarily 0. Note also that the\n        // following test does not depend on decoding surrogates.\n        // If the initial character is 0xFEFF, ignore it.\n        if (this.chunk.charCodeAt(0) === 0xFEFF) {\n            this.i++;\n            this.column++;\n        }\n        this.state = S_BEGIN_WHITESPACE;\n    }\n    sBeginWhitespace() {\n        // We need to know whether we've encountered spaces or not because as soon\n        // as we run into a space, an XML declaration is no longer possible. Rather\n        // than slow down skipSpaces even in places where we don't care whether it\n        // skipped anything or not, we check whether prevI is equal to the value of\n        // i from before we skip spaces.\n        const iBefore = this.i;\n        const c = this.skipSpaces();\n        if (this.prevI !== iBefore) {\n            this.xmlDeclPossible = false;\n        }\n        switch (c) {\n            case LESS:\n                this.state = S_OPEN_WAKA;\n                // We could naively call closeText but in this state, it is not normal\n                // to have text be filled with any data.\n                if (this.text.length !== 0) {\n                    throw new Error(\"no-empty text at start\");\n                }\n                break;\n            case EOC:\n                break;\n            default:\n                this.unget();\n                this.state = S_TEXT;\n                this.xmlDeclPossible = false;\n        }\n    }\n    sDoctype() {\n        var _a;\n        const c = this.captureTo(DOCTYPE_TERMINATOR);\n        switch (c) {\n            case GREATER: {\n                (_a = this.doctypeHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n                this.text = \"\";\n                this.state = S_TEXT;\n                this.doctype = true; // just remember that we saw it.\n                break;\n            }\n            case EOC:\n                break;\n            default:\n                this.text += String.fromCodePoint(c);\n                if (c === OPEN_BRACKET) {\n                    this.state = S_DTD;\n                }\n                else if (isQuote(c)) {\n                    this.state = S_DOCTYPE_QUOTE;\n                    this.q = c;\n                }\n        }\n    }\n    sDoctypeQuote() {\n        const q = this.q;\n        if (this.captureToChar(q)) {\n            this.text += String.fromCodePoint(q);\n            this.q = null;\n            this.state = S_DOCTYPE;\n        }\n    }\n    sDTD() {\n        const c = this.captureTo(DTD_TERMINATOR);\n        if (c === EOC) {\n            return;\n        }\n        this.text += String.fromCodePoint(c);\n        if (c === CLOSE_BRACKET) {\n            this.state = S_DOCTYPE;\n        }\n        else if (c === LESS) {\n            this.state = S_DTD_OPEN_WAKA;\n        }\n        else if (isQuote(c)) {\n            this.state = S_DTD_QUOTED;\n            this.q = c;\n        }\n    }\n    sDTDQuoted() {\n        const q = this.q;\n        if (this.captureToChar(q)) {\n            this.text += String.fromCodePoint(q);\n            this.state = S_DTD;\n            this.q = null;\n        }\n    }\n    sDTDOpenWaka() {\n        const c = this.getCodeNorm();\n        this.text += String.fromCodePoint(c);\n        switch (c) {\n            case BANG:\n                this.state = S_DTD_OPEN_WAKA_BANG;\n                this.openWakaBang = \"\";\n                break;\n            case QUESTION:\n                this.state = S_DTD_PI;\n                break;\n            default:\n                this.state = S_DTD;\n        }\n    }\n    sDTDOpenWakaBang() {\n        const char = String.fromCodePoint(this.getCodeNorm());\n        const owb = this.openWakaBang += char;\n        this.text += char;\n        if (owb !== \"-\") {\n            this.state = owb === \"--\" ? S_DTD_COMMENT : S_DTD;\n            this.openWakaBang = \"\";\n        }\n    }\n    sDTDComment() {\n        if (this.captureToChar(MINUS)) {\n            this.text += \"-\";\n            this.state = S_DTD_COMMENT_ENDING;\n        }\n    }\n    sDTDCommentEnding() {\n        const c = this.getCodeNorm();\n        this.text += String.fromCodePoint(c);\n        this.state = c === MINUS ? S_DTD_COMMENT_ENDED : S_DTD_COMMENT;\n    }\n    sDTDCommentEnded() {\n        const c = this.getCodeNorm();\n        this.text += String.fromCodePoint(c);\n        if (c === GREATER) {\n            this.state = S_DTD;\n        }\n        else {\n            this.fail(\"malformed comment.\");\n            // <!-- blah -- bloo --> will be recorded as\n            // a comment of \" blah -- bloo \"\n            this.state = S_DTD_COMMENT;\n        }\n    }\n    sDTDPI() {\n        if (this.captureToChar(QUESTION)) {\n            this.text += \"?\";\n            this.state = S_DTD_PI_ENDING;\n        }\n    }\n    sDTDPIEnding() {\n        const c = this.getCodeNorm();\n        this.text += String.fromCodePoint(c);\n        if (c === GREATER) {\n            this.state = S_DTD;\n        }\n    }\n    sText() {\n        //\n        // We did try a version of saxes where the S_TEXT state was split in two\n        // states: one for text inside the root element, and one for text\n        // outside. This was avoiding having to test this.tags.length to decide\n        // what implementation to actually use.\n        //\n        // Peformance testing on gigabyte-size files did not show any advantage to\n        // using the two states solution instead of the current one. Conversely, it\n        // made the code a bit more complicated elsewhere. For instance, a comment\n        // can appear before the root element so when a comment ended it was\n        // necessary to determine whether to return to the S_TEXT state or to the\n        // new text-outside-root state.\n        //\n        if (this.tags.length !== 0) {\n            this.handleTextInRoot();\n        }\n        else {\n            this.handleTextOutsideRoot();\n        }\n    }\n    sEntity() {\n        // This is essentially a specialized version of captureToChar(SEMICOLON...)\n        let { i: start } = this;\n        const { chunk } = this;\n        // eslint-disable-next-line no-labels, no-restricted-syntax\n        loop: \n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            switch (this.getCode()) {\n                case NL_LIKE:\n                    this.entity += `${chunk.slice(start, this.prevI)}\\n`;\n                    start = this.i;\n                    break;\n                case SEMICOLON: {\n                    const { entityReturnState } = this;\n                    const entity = this.entity + chunk.slice(start, this.prevI);\n                    this.state = entityReturnState;\n                    let parsed;\n                    if (entity === \"\") {\n                        this.fail(\"empty entity name.\");\n                        parsed = \"&;\";\n                    }\n                    else {\n                        parsed = this.parseEntity(entity);\n                        this.entity = \"\";\n                    }\n                    if (entityReturnState !== S_TEXT || this.textHandler !== undefined) {\n                        this.text += parsed;\n                    }\n                    // eslint-disable-next-line no-labels\n                    break loop;\n                }\n                case EOC:\n                    this.entity += chunk.slice(start);\n                    // eslint-disable-next-line no-labels\n                    break loop;\n                default:\n            }\n        }\n    }\n    sOpenWaka() {\n        // Reminder: a state handler is called with at least one character\n        // available in the current chunk. So the first call to get code inside of\n        // a state handler cannot return ``EOC``. That's why we don't test\n        // for it.\n        const c = this.getCode();\n        // either a /, ?, !, or text is coming next.\n        if (isNameStartChar(c)) {\n            this.state = S_OPEN_TAG;\n            this.unget();\n            this.xmlDeclPossible = false;\n        }\n        else {\n            switch (c) {\n                case FORWARD_SLASH:\n                    this.state = S_CLOSE_TAG;\n                    this.xmlDeclPossible = false;\n                    break;\n                case BANG:\n                    this.state = S_OPEN_WAKA_BANG;\n                    this.openWakaBang = \"\";\n                    this.xmlDeclPossible = false;\n                    break;\n                case QUESTION:\n                    this.state = S_PI_FIRST_CHAR;\n                    break;\n                default:\n                    this.fail(\"disallowed character in tag name\");\n                    this.state = S_TEXT;\n                    this.xmlDeclPossible = false;\n            }\n        }\n    }\n    sOpenWakaBang() {\n        this.openWakaBang += String.fromCodePoint(this.getCodeNorm());\n        switch (this.openWakaBang) {\n            case \"[CDATA[\":\n                if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n                    this.fail(\"text data outside of root node.\");\n                    this.reportedTextBeforeRoot = true;\n                }\n                if (this.closedRoot && !this.reportedTextAfterRoot) {\n                    this.fail(\"text data outside of root node.\");\n                    this.reportedTextAfterRoot = true;\n                }\n                this.state = S_CDATA;\n                this.openWakaBang = \"\";\n                break;\n            case \"--\":\n                this.state = S_COMMENT;\n                this.openWakaBang = \"\";\n                break;\n            case \"DOCTYPE\":\n                this.state = S_DOCTYPE;\n                if (this.doctype || this.sawRoot) {\n                    this.fail(\"inappropriately located doctype declaration.\");\n                }\n                this.openWakaBang = \"\";\n                break;\n            default:\n                // 7 happens to be the maximum length of the string that can possibly\n                // match one of the cases above.\n                if (this.openWakaBang.length >= 7) {\n                    this.fail(\"incorrect syntax.\");\n                }\n        }\n    }\n    sComment() {\n        if (this.captureToChar(MINUS)) {\n            this.state = S_COMMENT_ENDING;\n        }\n    }\n    sCommentEnding() {\n        var _a;\n        const c = this.getCodeNorm();\n        if (c === MINUS) {\n            this.state = S_COMMENT_ENDED;\n            (_a = this.commentHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n            this.text = \"\";\n        }\n        else {\n            this.text += `-${String.fromCodePoint(c)}`;\n            this.state = S_COMMENT;\n        }\n    }\n    sCommentEnded() {\n        const c = this.getCodeNorm();\n        if (c !== GREATER) {\n            this.fail(\"malformed comment.\");\n            // <!-- blah -- bloo --> will be recorded as\n            // a comment of \" blah -- bloo \"\n            this.text += `--${String.fromCodePoint(c)}`;\n            this.state = S_COMMENT;\n        }\n        else {\n            this.state = S_TEXT;\n        }\n    }\n    sCData() {\n        if (this.captureToChar(CLOSE_BRACKET)) {\n            this.state = S_CDATA_ENDING;\n        }\n    }\n    sCDataEnding() {\n        const c = this.getCodeNorm();\n        if (c === CLOSE_BRACKET) {\n            this.state = S_CDATA_ENDING_2;\n        }\n        else {\n            this.text += `]${String.fromCodePoint(c)}`;\n            this.state = S_CDATA;\n        }\n    }\n    sCDataEnding2() {\n        var _a;\n        const c = this.getCodeNorm();\n        switch (c) {\n            case GREATER: {\n                (_a = this.cdataHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text);\n                this.text = \"\";\n                this.state = S_TEXT;\n                break;\n            }\n            case CLOSE_BRACKET:\n                this.text += \"]\";\n                break;\n            default:\n                this.text += `]]${String.fromCodePoint(c)}`;\n                this.state = S_CDATA;\n        }\n    }\n    // We need this separate state to check the first character fo the pi target\n    // with this.nameStartCheck which allows less characters than this.nameCheck.\n    sPIFirstChar() {\n        const c = this.getCodeNorm();\n        // This is first because in the case where the file is well-formed this is\n        // the branch taken. We optimize for well-formedness.\n        if (this.nameStartCheck(c)) {\n            this.piTarget += String.fromCodePoint(c);\n            this.state = S_PI_REST;\n        }\n        else if (c === QUESTION || isS(c)) {\n            this.fail(\"processing instruction without a target.\");\n            this.state = c === QUESTION ? S_PI_ENDING : S_PI_BODY;\n        }\n        else {\n            this.fail(\"disallowed character in processing instruction name.\");\n            this.piTarget += String.fromCodePoint(c);\n            this.state = S_PI_REST;\n        }\n    }\n    sPIRest() {\n        // Capture characters into a piTarget while ``this.nameCheck`` run on the\n        // character read returns true.\n        const { chunk, i: start } = this;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const c = this.getCodeNorm();\n            if (c === EOC) {\n                this.piTarget += chunk.slice(start);\n                return;\n            }\n            // NL cannot satisfy this.nameCheck so we don't have to test specifically\n            // for it.\n            if (!this.nameCheck(c)) {\n                this.piTarget += chunk.slice(start, this.prevI);\n                const isQuestion = c === QUESTION;\n                if (isQuestion || isS(c)) {\n                    if (this.piTarget === \"xml\") {\n                        if (!this.xmlDeclPossible) {\n                            this.fail(\"an XML declaration must be at the start of the document.\");\n                        }\n                        this.state = isQuestion ? S_XML_DECL_ENDING : S_XML_DECL_NAME_START;\n                    }\n                    else {\n                        this.state = isQuestion ? S_PI_ENDING : S_PI_BODY;\n                    }\n                }\n                else {\n                    this.fail(\"disallowed character in processing instruction name.\");\n                    this.piTarget += String.fromCodePoint(c);\n                }\n                break;\n            }\n        }\n    }\n    sPIBody() {\n        if (this.text.length === 0) {\n            const c = this.getCodeNorm();\n            if (c === QUESTION) {\n                this.state = S_PI_ENDING;\n            }\n            else if (!isS(c)) {\n                this.text = String.fromCodePoint(c);\n            }\n        }\n        // The question mark character is not valid inside any of the XML\n        // declaration name/value pairs.\n        else if (this.captureToChar(QUESTION)) {\n            this.state = S_PI_ENDING;\n        }\n    }\n    sPIEnding() {\n        var _a;\n        const c = this.getCodeNorm();\n        if (c === GREATER) {\n            const { piTarget } = this;\n            if (piTarget.toLowerCase() === \"xml\") {\n                this.fail(\"the XML declaration must appear at the start of the document.\");\n            }\n            (_a = this.piHandler) === null || _a === void 0 ? void 0 : _a.call(this, {\n                target: piTarget,\n                body: this.text,\n            });\n            this.piTarget = this.text = \"\";\n            this.state = S_TEXT;\n        }\n        else if (c === QUESTION) {\n            // We ran into ?? as part of a processing instruction. We initially took\n            // the first ? as a sign that the PI was ending, but it is not. So we have\n            // to add it to the body but we take the new ? as a sign that the PI is\n            // ending.\n            this.text += \"?\";\n        }\n        else {\n            this.text += `?${String.fromCodePoint(c)}`;\n            this.state = S_PI_BODY;\n        }\n        this.xmlDeclPossible = false;\n    }\n    sXMLDeclNameStart() {\n        const c = this.skipSpaces();\n        // The question mark character is not valid inside any of the XML\n        // declaration name/value pairs.\n        if (c === QUESTION) {\n            // It is valid to go to S_XML_DECL_ENDING from this state.\n            this.state = S_XML_DECL_ENDING;\n            return;\n        }\n        if (c !== EOC) {\n            this.state = S_XML_DECL_NAME;\n            this.name = String.fromCodePoint(c);\n        }\n    }\n    sXMLDeclName() {\n        const c = this.captureTo(XML_DECL_NAME_TERMINATOR);\n        // The question mark character is not valid inside any of the XML\n        // declaration name/value pairs.\n        if (c === QUESTION) {\n            this.state = S_XML_DECL_ENDING;\n            this.name += this.text;\n            this.text = \"\";\n            this.fail(\"XML declaration is incomplete.\");\n            return;\n        }\n        if (!(isS(c) || c === EQUAL)) {\n            return;\n        }\n        this.name += this.text;\n        this.text = \"\";\n        if (!this.xmlDeclExpects.includes(this.name)) {\n            switch (this.name.length) {\n                case 0:\n                    this.fail(\"did not expect any more name/value pairs.\");\n                    break;\n                case 1:\n                    this.fail(`expected the name ${this.xmlDeclExpects[0]}.`);\n                    break;\n                default:\n                    this.fail(`expected one of ${this.xmlDeclExpects.join(\", \")}`);\n            }\n        }\n        this.state = c === EQUAL ? S_XML_DECL_VALUE_START : S_XML_DECL_EQ;\n    }\n    sXMLDeclEq() {\n        const c = this.getCodeNorm();\n        // The question mark character is not valid inside any of the XML\n        // declaration name/value pairs.\n        if (c === QUESTION) {\n            this.state = S_XML_DECL_ENDING;\n            this.fail(\"XML declaration is incomplete.\");\n            return;\n        }\n        if (isS(c)) {\n            return;\n        }\n        if (c !== EQUAL) {\n            this.fail(\"value required.\");\n        }\n        this.state = S_XML_DECL_VALUE_START;\n    }\n    sXMLDeclValueStart() {\n        const c = this.getCodeNorm();\n        // The question mark character is not valid inside any of the XML\n        // declaration name/value pairs.\n        if (c === QUESTION) {\n            this.state = S_XML_DECL_ENDING;\n            this.fail(\"XML declaration is incomplete.\");\n            return;\n        }\n        if (isS(c)) {\n            return;\n        }\n        if (!isQuote(c)) {\n            this.fail(\"value must be quoted.\");\n            this.q = SPACE;\n        }\n        else {\n            this.q = c;\n        }\n        this.state = S_XML_DECL_VALUE;\n    }\n    sXMLDeclValue() {\n        const c = this.captureTo([this.q, QUESTION]);\n        // The question mark character is not valid inside any of the XML\n        // declaration name/value pairs.\n        if (c === QUESTION) {\n            this.state = S_XML_DECL_ENDING;\n            this.text = \"\";\n            this.fail(\"XML declaration is incomplete.\");\n            return;\n        }\n        if (c === EOC) {\n            return;\n        }\n        const value = this.text;\n        this.text = \"\";\n        switch (this.name) {\n            case \"version\": {\n                this.xmlDeclExpects = [\"encoding\", \"standalone\"];\n                const version = value;\n                this.xmlDecl.version = version;\n                // This is the test specified by XML 1.0 but it is fine for XML 1.1.\n                if (!/^1\\.[0-9]+$/.test(version)) {\n                    this.fail(\"version number must match /^1\\\\.[0-9]+$/.\");\n                }\n                // When forceXMLVersion is set, the XML declaration is ignored.\n                else if (!this.opt.forceXMLVersion) {\n                    this.setXMLVersion(version);\n                }\n                break;\n            }\n            case \"encoding\":\n                if (!/^[A-Za-z][A-Za-z0-9._-]*$/.test(value)) {\n                    this.fail(\"encoding value must match \\\n/^[A-Za-z0-9][A-Za-z0-9._-]*$/.\");\n                }\n                this.xmlDeclExpects = [\"standalone\"];\n                this.xmlDecl.encoding = value;\n                break;\n            case \"standalone\":\n                if (value !== \"yes\" && value !== \"no\") {\n                    this.fail(\"standalone value must match \\\"yes\\\" or \\\"no\\\".\");\n                }\n                this.xmlDeclExpects = [];\n                this.xmlDecl.standalone = value;\n                break;\n            default:\n            // We don't need to raise an error here since we've already raised one\n            // when checking what name was expected.\n        }\n        this.name = \"\";\n        this.state = S_XML_DECL_SEPARATOR;\n    }\n    sXMLDeclSeparator() {\n        const c = this.getCodeNorm();\n        // The question mark character is not valid inside any of the XML\n        // declaration name/value pairs.\n        if (c === QUESTION) {\n            // It is valid to go to S_XML_DECL_ENDING from this state.\n            this.state = S_XML_DECL_ENDING;\n            return;\n        }\n        if (!isS(c)) {\n            this.fail(\"whitespace required.\");\n            this.unget();\n        }\n        this.state = S_XML_DECL_NAME_START;\n    }\n    sXMLDeclEnding() {\n        var _a;\n        const c = this.getCodeNorm();\n        if (c === GREATER) {\n            if (this.piTarget !== \"xml\") {\n                this.fail(\"processing instructions are not allowed before root.\");\n            }\n            else if (this.name !== \"version\" &&\n                this.xmlDeclExpects.includes(\"version\")) {\n                this.fail(\"XML declaration must contain a version.\");\n            }\n            (_a = this.xmldeclHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.xmlDecl);\n            this.name = \"\";\n            this.piTarget = this.text = \"\";\n            this.state = S_TEXT;\n        }\n        else {\n            // We got here because the previous character was a ?, but the question\n            // mark character is not valid inside any of the XML declaration\n            // name/value pairs.\n            this.fail(\"The character ? is disallowed anywhere in XML declarations.\");\n        }\n        this.xmlDeclPossible = false;\n    }\n    sOpenTag() {\n        var _a;\n        const c = this.captureNameChars();\n        if (c === EOC) {\n            return;\n        }\n        const tag = this.tag = {\n            name: this.name,\n            attributes: Object.create(null),\n        };\n        this.name = \"\";\n        if (this.xmlnsOpt) {\n            this.topNS = tag.ns = Object.create(null);\n        }\n        (_a = this.openTagStartHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n        this.sawRoot = true;\n        if (!this.fragmentOpt && this.closedRoot) {\n            this.fail(\"documents may contain only one root.\");\n        }\n        switch (c) {\n            case GREATER:\n                this.openTag();\n                break;\n            case FORWARD_SLASH:\n                this.state = S_OPEN_TAG_SLASH;\n                break;\n            default:\n                if (!isS(c)) {\n                    this.fail(\"disallowed character in tag name.\");\n                }\n                this.state = S_ATTRIB;\n        }\n    }\n    sOpenTagSlash() {\n        if (this.getCode() === GREATER) {\n            this.openSelfClosingTag();\n        }\n        else {\n            this.fail(\"forward-slash in opening tag not followed by >.\");\n            this.state = S_ATTRIB;\n        }\n    }\n    sAttrib() {\n        const c = this.skipSpaces();\n        if (c === EOC) {\n            return;\n        }\n        if (isNameStartChar(c)) {\n            this.unget();\n            this.state = S_ATTRIB_NAME;\n        }\n        else if (c === GREATER) {\n            this.openTag();\n        }\n        else if (c === FORWARD_SLASH) {\n            this.state = S_OPEN_TAG_SLASH;\n        }\n        else {\n            this.fail(\"disallowed character in attribute name.\");\n        }\n    }\n    sAttribName() {\n        const c = this.captureNameChars();\n        if (c === EQUAL) {\n            this.state = S_ATTRIB_VALUE;\n        }\n        else if (isS(c)) {\n            this.state = S_ATTRIB_NAME_SAW_WHITE;\n        }\n        else if (c === GREATER) {\n            this.fail(\"attribute without value.\");\n            this.pushAttrib(this.name, this.name);\n            this.name = this.text = \"\";\n            this.openTag();\n        }\n        else if (c !== EOC) {\n            this.fail(\"disallowed character in attribute name.\");\n        }\n    }\n    sAttribNameSawWhite() {\n        const c = this.skipSpaces();\n        switch (c) {\n            case EOC:\n                return;\n            case EQUAL:\n                this.state = S_ATTRIB_VALUE;\n                break;\n            default:\n                this.fail(\"attribute without value.\");\n                // Should we do this???\n                // this.tag.attributes[this.name] = \"\";\n                this.text = \"\";\n                this.name = \"\";\n                if (c === GREATER) {\n                    this.openTag();\n                }\n                else if (isNameStartChar(c)) {\n                    this.unget();\n                    this.state = S_ATTRIB_NAME;\n                }\n                else {\n                    this.fail(\"disallowed character in attribute name.\");\n                    this.state = S_ATTRIB;\n                }\n        }\n    }\n    sAttribValue() {\n        const c = this.getCodeNorm();\n        if (isQuote(c)) {\n            this.q = c;\n            this.state = S_ATTRIB_VALUE_QUOTED;\n        }\n        else if (!isS(c)) {\n            this.fail(\"unquoted attribute value.\");\n            this.state = S_ATTRIB_VALUE_UNQUOTED;\n            this.unget();\n        }\n    }\n    sAttribValueQuoted() {\n        // We deliberately do not use captureTo here. The specialized code we use\n        // here is faster than using captureTo.\n        const { q, chunk } = this;\n        let { i: start } = this;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            switch (this.getCode()) {\n                case q:\n                    this.pushAttrib(this.name, this.text + chunk.slice(start, this.prevI));\n                    this.name = this.text = \"\";\n                    this.q = null;\n                    this.state = S_ATTRIB_VALUE_CLOSED;\n                    return;\n                case AMP:\n                    this.text += chunk.slice(start, this.prevI);\n                    this.state = S_ENTITY;\n                    this.entityReturnState = S_ATTRIB_VALUE_QUOTED;\n                    return;\n                case NL:\n                case NL_LIKE:\n                case TAB:\n                    this.text += `${chunk.slice(start, this.prevI)} `;\n                    start = this.i;\n                    break;\n                case LESS:\n                    this.text += chunk.slice(start, this.prevI);\n                    this.fail(\"disallowed character.\");\n                    return;\n                case EOC:\n                    this.text += chunk.slice(start);\n                    return;\n                default:\n            }\n        }\n    }\n    sAttribValueClosed() {\n        const c = this.getCodeNorm();\n        if (isS(c)) {\n            this.state = S_ATTRIB;\n        }\n        else if (c === GREATER) {\n            this.openTag();\n        }\n        else if (c === FORWARD_SLASH) {\n            this.state = S_OPEN_TAG_SLASH;\n        }\n        else if (isNameStartChar(c)) {\n            this.fail(\"no whitespace between attributes.\");\n            this.unget();\n            this.state = S_ATTRIB_NAME;\n        }\n        else {\n            this.fail(\"disallowed character in attribute name.\");\n        }\n    }\n    sAttribValueUnquoted() {\n        // We don't do anything regarding EOL or space handling for unquoted\n        // attributes. We already have failed by the time we get here, and the\n        // contract that saxes upholds states that upon failure, it is not safe to\n        // rely on the data passed to event handlers (other than\n        // ``onerror``). Passing \"bad\" data is not a problem.\n        const c = this.captureTo(ATTRIB_VALUE_UNQUOTED_TERMINATOR);\n        switch (c) {\n            case AMP:\n                this.state = S_ENTITY;\n                this.entityReturnState = S_ATTRIB_VALUE_UNQUOTED;\n                break;\n            case LESS:\n                this.fail(\"disallowed character.\");\n                break;\n            case EOC:\n                break;\n            default:\n                if (this.text.includes(\"]]>\")) {\n                    this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n                }\n                this.pushAttrib(this.name, this.text);\n                this.name = this.text = \"\";\n                if (c === GREATER) {\n                    this.openTag();\n                }\n                else {\n                    this.state = S_ATTRIB;\n                }\n        }\n    }\n    sCloseTag() {\n        const c = this.captureNameChars();\n        if (c === GREATER) {\n            this.closeTag();\n        }\n        else if (isS(c)) {\n            this.state = S_CLOSE_TAG_SAW_WHITE;\n        }\n        else if (c !== EOC) {\n            this.fail(\"disallowed character in closing tag.\");\n        }\n    }\n    sCloseTagSawWhite() {\n        switch (this.skipSpaces()) {\n            case GREATER:\n                this.closeTag();\n                break;\n            case EOC:\n                break;\n            default:\n                this.fail(\"disallowed character in closing tag.\");\n        }\n    }\n    // END OF STATE ENGINE METHODS\n    handleTextInRoot() {\n        // This is essentially a specialized version of captureTo which is optimized\n        // for performing the ]]> check. A previous version of this code, checked\n        // ``this.text`` for the presence of ]]>. It simplified the code but was\n        // very costly when character data contained a lot of entities to be parsed.\n        //\n        // Since we are using a specialized loop, we also keep track of the presence\n        // of ]]> in text data. The sequence ]]> is forbidden to appear as-is.\n        //\n        let { i: start, forbiddenState } = this;\n        const { chunk, textHandler: handler } = this;\n        // eslint-disable-next-line no-labels, no-restricted-syntax\n        scanLoop: \n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            switch (this.getCode()) {\n                case LESS: {\n                    this.state = S_OPEN_WAKA;\n                    if (handler !== undefined) {\n                        const { text } = this;\n                        const slice = chunk.slice(start, this.prevI);\n                        if (text.length !== 0) {\n                            handler(text + slice);\n                            this.text = \"\";\n                        }\n                        else if (slice.length !== 0) {\n                            handler(slice);\n                        }\n                    }\n                    forbiddenState = FORBIDDEN_START;\n                    // eslint-disable-next-line no-labels\n                    break scanLoop;\n                }\n                case AMP:\n                    this.state = S_ENTITY;\n                    this.entityReturnState = S_TEXT;\n                    if (handler !== undefined) {\n                        this.text += chunk.slice(start, this.prevI);\n                    }\n                    forbiddenState = FORBIDDEN_START;\n                    // eslint-disable-next-line no-labels\n                    break scanLoop;\n                case CLOSE_BRACKET:\n                    switch (forbiddenState) {\n                        case FORBIDDEN_START:\n                            forbiddenState = FORBIDDEN_BRACKET;\n                            break;\n                        case FORBIDDEN_BRACKET:\n                            forbiddenState = FORBIDDEN_BRACKET_BRACKET;\n                            break;\n                        case FORBIDDEN_BRACKET_BRACKET:\n                            break;\n                        default:\n                            throw new Error(\"impossible state\");\n                    }\n                    break;\n                case GREATER:\n                    if (forbiddenState === FORBIDDEN_BRACKET_BRACKET) {\n                        this.fail(\"the string \\\"]]>\\\" is disallowed in char data.\");\n                    }\n                    forbiddenState = FORBIDDEN_START;\n                    break;\n                case NL_LIKE:\n                    if (handler !== undefined) {\n                        this.text += `${chunk.slice(start, this.prevI)}\\n`;\n                    }\n                    start = this.i;\n                    forbiddenState = FORBIDDEN_START;\n                    break;\n                case EOC:\n                    if (handler !== undefined) {\n                        this.text += chunk.slice(start);\n                    }\n                    // eslint-disable-next-line no-labels\n                    break scanLoop;\n                default:\n                    forbiddenState = FORBIDDEN_START;\n            }\n        }\n        this.forbiddenState = forbiddenState;\n    }\n    handleTextOutsideRoot() {\n        // This is essentially a specialized version of captureTo which is optimized\n        // for a specialized task. We keep track of the presence of non-space\n        // characters in the text since these are errors when appearing outside the\n        // document root element.\n        let { i: start } = this;\n        const { chunk, textHandler: handler } = this;\n        let nonSpace = false;\n        // eslint-disable-next-line no-labels, no-restricted-syntax\n        outRootLoop: \n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const code = this.getCode();\n            switch (code) {\n                case LESS: {\n                    this.state = S_OPEN_WAKA;\n                    if (handler !== undefined) {\n                        const { text } = this;\n                        const slice = chunk.slice(start, this.prevI);\n                        if (text.length !== 0) {\n                            handler(text + slice);\n                            this.text = \"\";\n                        }\n                        else if (slice.length !== 0) {\n                            handler(slice);\n                        }\n                    }\n                    // eslint-disable-next-line no-labels\n                    break outRootLoop;\n                }\n                case AMP:\n                    this.state = S_ENTITY;\n                    this.entityReturnState = S_TEXT;\n                    if (handler !== undefined) {\n                        this.text += chunk.slice(start, this.prevI);\n                    }\n                    nonSpace = true;\n                    // eslint-disable-next-line no-labels\n                    break outRootLoop;\n                case NL_LIKE:\n                    if (handler !== undefined) {\n                        this.text += `${chunk.slice(start, this.prevI)}\\n`;\n                    }\n                    start = this.i;\n                    break;\n                case EOC:\n                    if (handler !== undefined) {\n                        this.text += chunk.slice(start);\n                    }\n                    // eslint-disable-next-line no-labels\n                    break outRootLoop;\n                default:\n                    if (!isS(code)) {\n                        nonSpace = true;\n                    }\n            }\n        }\n        if (!nonSpace) {\n            return;\n        }\n        // We use the reportedTextBeforeRoot and reportedTextAfterRoot flags\n        // to avoid reporting errors for every single character that is out of\n        // place.\n        if (!this.sawRoot && !this.reportedTextBeforeRoot) {\n            this.fail(\"text data outside of root node.\");\n            this.reportedTextBeforeRoot = true;\n        }\n        if (this.closedRoot && !this.reportedTextAfterRoot) {\n            this.fail(\"text data outside of root node.\");\n            this.reportedTextAfterRoot = true;\n        }\n    }\n    pushAttribNS(name, value) {\n        var _a;\n        const { prefix, local } = this.qname(name);\n        const attr = { name, prefix, local, value };\n        this.attribList.push(attr);\n        (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n        if (prefix === \"xmlns\") {\n            const trimmed = value.trim();\n            if (this.currentXMLVersion === \"1.0\" && trimmed === \"\") {\n                this.fail(\"invalid attempt to undefine prefix in XML 1.0\");\n            }\n            this.topNS[local] = trimmed;\n            nsPairCheck(this, local, trimmed);\n        }\n        else if (name === \"xmlns\") {\n            const trimmed = value.trim();\n            this.topNS[\"\"] = trimmed;\n            nsPairCheck(this, \"\", trimmed);\n        }\n    }\n    pushAttribPlain(name, value) {\n        var _a;\n        const attr = { name, value };\n        this.attribList.push(attr);\n        (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr);\n    }\n    /**\n     * End parsing. This performs final well-formedness checks and resets the\n     * parser to a clean state.\n     *\n     * @returns this\n     */\n    end() {\n        var _a, _b;\n        if (!this.sawRoot) {\n            this.fail(\"document must contain a root element.\");\n        }\n        const { tags } = this;\n        while (tags.length > 0) {\n            const tag = tags.pop();\n            this.fail(`unclosed tag: ${tag.name}`);\n        }\n        if ((this.state !== S_BEGIN) && (this.state !== S_TEXT)) {\n            this.fail(\"unexpected end.\");\n        }\n        const { text } = this;\n        if (text.length !== 0) {\n            (_a = this.textHandler) === null || _a === void 0 ? void 0 : _a.call(this, text);\n            this.text = \"\";\n        }\n        this._closed = true;\n        (_b = this.endHandler) === null || _b === void 0 ? void 0 : _b.call(this);\n        this._init();\n        return this;\n    }\n    /**\n     * Resolve a namespace prefix.\n     *\n     * @param prefix The prefix to resolve.\n     *\n     * @returns The namespace URI or ``undefined`` if the prefix is not defined.\n     */\n    resolve(prefix) {\n        var _a, _b;\n        let uri = this.topNS[prefix];\n        if (uri !== undefined) {\n            return uri;\n        }\n        const { tags } = this;\n        for (let index = tags.length - 1; index >= 0; index--) {\n            uri = tags[index].ns[prefix];\n            if (uri !== undefined) {\n                return uri;\n            }\n        }\n        uri = this.ns[prefix];\n        if (uri !== undefined) {\n            return uri;\n        }\n        return (_b = (_a = this.opt).resolvePrefix) === null || _b === void 0 ? void 0 : _b.call(_a, prefix);\n    }\n    /**\n     * Parse a qname into its prefix and local name parts.\n     *\n     * @param name The name to parse\n     *\n     * @returns\n     */\n    qname(name) {\n        // This is faster than using name.split(\":\").\n        const colon = name.indexOf(\":\");\n        if (colon === -1) {\n            return { prefix: \"\", local: name };\n        }\n        const local = name.slice(colon + 1);\n        const prefix = name.slice(0, colon);\n        if (prefix === \"\" || local === \"\" || local.includes(\":\")) {\n            this.fail(`malformed name: ${name}.`);\n        }\n        return { prefix, local };\n    }\n    processAttribsNS() {\n        var _a;\n        const { attribList } = this;\n        const tag = this.tag;\n        {\n            // add namespace info to tag\n            const { prefix, local } = this.qname(tag.name);\n            tag.prefix = prefix;\n            tag.local = local;\n            const uri = tag.uri = (_a = this.resolve(prefix)) !== null && _a !== void 0 ? _a : \"\";\n            if (prefix !== \"\") {\n                if (prefix === \"xmlns\") {\n                    this.fail(\"tags may not have \\\"xmlns\\\" as prefix.\");\n                }\n                if (uri === \"\") {\n                    this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n                    tag.uri = prefix;\n                }\n            }\n        }\n        if (attribList.length === 0) {\n            return;\n        }\n        const { attributes } = tag;\n        const seen = new Set();\n        // Note: do not apply default ns to attributes:\n        //   http://www.w3.org/TR/REC-xml-names/#defaulting\n        for (const attr of attribList) {\n            const { name, prefix, local } = attr;\n            let uri;\n            let eqname;\n            if (prefix === \"\") {\n                uri = name === \"xmlns\" ? XMLNS_NAMESPACE : \"\";\n                eqname = name;\n            }\n            else {\n                uri = this.resolve(prefix);\n                // if there's any attributes with an undefined namespace,\n                // then fail on them now.\n                if (uri === undefined) {\n                    this.fail(`unbound namespace prefix: ${JSON.stringify(prefix)}.`);\n                    uri = prefix;\n                }\n                eqname = `{${uri}}${local}`;\n            }\n            if (seen.has(eqname)) {\n                this.fail(`duplicate attribute: ${eqname}.`);\n            }\n            seen.add(eqname);\n            attr.uri = uri;\n            attributes[name] = attr;\n        }\n        this.attribList = [];\n    }\n    processAttribsPlain() {\n        const { attribList } = this;\n        // eslint-disable-next-line prefer-destructuring\n        const attributes = this.tag.attributes;\n        for (const { name, value } of attribList) {\n            if (attributes[name] !== undefined) {\n                this.fail(`duplicate attribute: ${name}.`);\n            }\n            attributes[name] = value;\n        }\n        this.attribList = [];\n    }\n    /**\n     * Handle a complete open tag. This parser code calls this once it has seen\n     * the whole tag. This method checks for well-formeness and then emits\n     * ``onopentag``.\n     */\n    openTag() {\n        var _a;\n        this.processAttribs();\n        const { tags } = this;\n        const tag = this.tag;\n        tag.isSelfClosing = false;\n        // There cannot be any pending text here due to the onopentagstart that was\n        // necessarily emitted before we get here. So we do not check text.\n        (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n        tags.push(tag);\n        this.state = S_TEXT;\n        this.name = \"\";\n    }\n    /**\n     * Handle a complete self-closing tag. This parser code calls this once it has\n     * seen the whole tag. This method checks for well-formeness and then emits\n     * ``onopentag`` and ``onclosetag``.\n     */\n    openSelfClosingTag() {\n        var _a, _b, _c;\n        this.processAttribs();\n        const { tags } = this;\n        const tag = this.tag;\n        tag.isSelfClosing = true;\n        // There cannot be any pending text here due to the onopentagstart that was\n        // necessarily emitted before we get here. So we do not check text.\n        (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag);\n        (_b = this.closeTagHandler) === null || _b === void 0 ? void 0 : _b.call(this, tag);\n        const top = this.tag = (_c = tags[tags.length - 1]) !== null && _c !== void 0 ? _c : null;\n        if (top === null) {\n            this.closedRoot = true;\n        }\n        this.state = S_TEXT;\n        this.name = \"\";\n    }\n    /**\n     * Handle a complete close tag. This parser code calls this once it has seen\n     * the whole tag. This method checks for well-formeness and then emits\n     * ``onclosetag``.\n     */\n    closeTag() {\n        const { tags, name } = this;\n        // Our state after this will be S_TEXT, no matter what, and we can clear\n        // tagName now.\n        this.state = S_TEXT;\n        this.name = \"\";\n        if (name === \"\") {\n            this.fail(\"weird empty close tag.\");\n            this.text += \"</>\";\n            return;\n        }\n        const handler = this.closeTagHandler;\n        let l = tags.length;\n        while (l-- > 0) {\n            const tag = this.tag = tags.pop();\n            this.topNS = tag.ns;\n            handler === null || handler === void 0 ? void 0 : handler(tag);\n            if (tag.name === name) {\n                break;\n            }\n            this.fail(\"unexpected close tag.\");\n        }\n        if (l === 0) {\n            this.closedRoot = true;\n        }\n        else if (l < 0) {\n            this.fail(`unmatched closing tag: ${name}.`);\n            this.text += `</${name}>`;\n        }\n    }\n    /**\n     * Resolves an entity. Makes any necessary well-formedness checks.\n     *\n     * @param entity The entity to resolve.\n     *\n     * @returns The parsed entity.\n     */\n    parseEntity(entity) {\n        // startsWith would be significantly slower for this test.\n        if (entity[0] !== \"#\") {\n            const defined = this.ENTITIES[entity];\n            if (defined !== undefined) {\n                return defined;\n            }\n            this.fail(this.isName(entity) ? \"undefined entity.\" :\n                \"disallowed character in entity name.\");\n            return `&${entity};`;\n        }\n        let num = NaN;\n        if (entity[1] === \"x\" && /^#x[0-9a-f]+$/i.test(entity)) {\n            num = parseInt(entity.slice(2), 16);\n        }\n        else if (/^#[0-9]+$/.test(entity)) {\n            num = parseInt(entity.slice(1), 10);\n        }\n        // The character reference is required to match the CHAR production.\n        if (!this.isChar(num)) {\n            this.fail(\"malformed character entity.\");\n            return `&${entity};`;\n        }\n        return String.fromCodePoint(num);\n    }\n}\nexports.SaxesParser = SaxesParser;\n//# sourceMappingURL=saxes.js.map","\"use strict\";\n\n// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// getElementById is implemented separately inside Document and DocumentFragment.\nclass NonElementParentNodeImpl {\n\n}\n\nmodule.exports = {\n  implementation: NonElementParentNodeImpl\n};\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst NODE_TYPE = require(\"../node-type\");\nconst NodeImpl = require(\"./Node-impl\").implementation;\nconst NonElementParentNodeImpl = require(\"./NonElementParentNode-impl\").implementation;\nconst ParentNodeImpl = require(\"./ParentNode-impl\").implementation;\nconst idlUtils = require(\"../../../generated/idl/utils\");\n\nclass DocumentFragmentImpl extends NodeImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, {\n      ownerDocument: idlUtils.implForWrapper(globalObject._document),\n      ...privateData\n    });\n\n    const { host } = privateData;\n    this._host = host;\n\n    this.nodeType = NODE_TYPE.DOCUMENT_FRAGMENT_NODE;\n  }\n\n  // This is implemented separately for Document (which has a _byIdCache) and DocumentFragment (which does not).\n  getElementById(id) {\n    if (id === \"\") {\n      return null;\n    }\n\n    for (const descendant of domSymbolTree.treeIterator(this)) {\n      if (descendant.nodeType === NODE_TYPE.ELEMENT_NODE && descendant.getAttributeNS(null, \"id\") === id) {\n        return descendant;\n      }\n    }\n\n    return null;\n  }\n}\n\nmixin(DocumentFragmentImpl.prototype, NonElementParentNodeImpl.prototype);\nmixin(DocumentFragmentImpl.prototype, ParentNodeImpl.prototype);\n\nmodule.exports = {\n  implementation: DocumentFragmentImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Node = require(\"./Node.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DocumentFragment\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DocumentFragment'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DocumentFragment\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Node._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DocumentFragment extends globalObject.Node {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    getElementById(elementId) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementById' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementById' on 'DocumentFragment': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementById' on 'DocumentFragment': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementById(...args));\n    }\n\n    prepend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'prepend' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'prepend' on 'DocumentFragment': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].prepend(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    append() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'append' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'append' on 'DocumentFragment': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].append(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replaceChildren() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'replaceChildren' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'replaceChildren' on 'DocumentFragment': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].replaceChildren(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    querySelector(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'querySelector' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'querySelector' on 'DocumentFragment': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'querySelector' on 'DocumentFragment': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].querySelector(...args));\n    }\n\n    querySelectorAll(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'querySelectorAll' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'querySelectorAll' on 'DocumentFragment': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'querySelectorAll' on 'DocumentFragment': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].querySelectorAll(...args));\n    }\n\n    get children() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get children' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"children\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"children\"]);\n      });\n    }\n\n    get firstElementChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get firstElementChild' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"firstElementChild\"]);\n    }\n\n    get lastElementChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lastElementChild' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"lastElementChild\"]);\n    }\n\n    get childElementCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get childElementCount' called on an object that is not a valid instance of DocumentFragment.\"\n        );\n      }\n\n      return esValue[implSymbol][\"childElementCount\"];\n    }\n  }\n  Object.defineProperties(DocumentFragment.prototype, {\n    getElementById: { enumerable: true },\n    prepend: { enumerable: true },\n    append: { enumerable: true },\n    replaceChildren: { enumerable: true },\n    querySelector: { enumerable: true },\n    querySelectorAll: { enumerable: true },\n    children: { enumerable: true },\n    firstElementChild: { enumerable: true },\n    lastElementChild: { enumerable: true },\n    childElementCount: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DocumentFragment\", configurable: true },\n    [Symbol.unscopables]: {\n      value: { prepend: true, append: true, replaceChildren: true, __proto__: null },\n      configurable: true\n    }\n  });\n  ctorRegistry[interfaceName] = DocumentFragment;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DocumentFragment\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/DocumentFragment-impl.js\");\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst NodeImpl = require(\"./Node-impl\").implementation;\nconst ChildNodeImpl = require(\"./ChildNode-impl\").implementation;\n\nconst NODE_TYPE = require(\"../node-type\");\n\nclass DocumentTypeImpl extends NodeImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this.nodeType = NODE_TYPE.DOCUMENT_TYPE_NODE;\n\n    this.name = privateData.name;\n    this.publicId = privateData.publicId;\n    this.systemId = privateData.systemId;\n  }\n}\n\nmixin(DocumentTypeImpl.prototype, ChildNodeImpl.prototype);\n\nmodule.exports = {\n  implementation: DocumentTypeImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Node = require(\"./Node.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DocumentType\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DocumentType'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DocumentType\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Node._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DocumentType extends globalObject.Node {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    before() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'before' called on an object that is not a valid instance of DocumentType.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'before' on 'DocumentType': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].before(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    after() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'after' called on an object that is not a valid instance of DocumentType.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'after' on 'DocumentType': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].after(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replaceWith() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'replaceWith' called on an object that is not a valid instance of DocumentType.\"\n        );\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'replaceWith' on 'DocumentType': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].replaceWith(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    remove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'remove' called on an object that is not a valid instance of DocumentType.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].remove();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of DocumentType.\"\n        );\n      }\n\n      return esValue[implSymbol][\"name\"];\n    }\n\n    get publicId() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get publicId' called on an object that is not a valid instance of DocumentType.\"\n        );\n      }\n\n      return esValue[implSymbol][\"publicId\"];\n    }\n\n    get systemId() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get systemId' called on an object that is not a valid instance of DocumentType.\"\n        );\n      }\n\n      return esValue[implSymbol][\"systemId\"];\n    }\n  }\n  Object.defineProperties(DocumentType.prototype, {\n    before: { enumerable: true },\n    after: { enumerable: true },\n    replaceWith: { enumerable: true },\n    remove: { enumerable: true },\n    name: { enumerable: true },\n    publicId: { enumerable: true },\n    systemId: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DocumentType\", configurable: true },\n    [Symbol.unscopables]: {\n      value: { before: true, after: true, replaceWith: true, remove: true, __proto__: null },\n      configurable: true\n    }\n  });\n  ctorRegistry[interfaceName] = DocumentType;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DocumentType\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/DocumentType-impl.js\");\n","\"use strict\";\n\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst NODE_TYPE = require(\"../node-type\");\n\nclass NonDocumentTypeChildNodeImpl {\n  get nextElementSibling() {\n    for (const sibling of domSymbolTree.nextSiblingsIterator(this)) {\n      if (sibling.nodeType === NODE_TYPE.ELEMENT_NODE) {\n        return sibling;\n      }\n    }\n    return null;\n  }\n\n  get previousElementSibling() {\n    for (const sibling of domSymbolTree.previousSiblingsIterator(this)) {\n      if (sibling.nodeType === NODE_TYPE.ELEMENT_NODE) {\n        return sibling;\n      }\n    }\n    return null;\n  }\n}\n\nmodule.exports = {\n  implementation: NonDocumentTypeChildNodeImpl\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst { mixin } = require(\"../../utils\");\nconst NodeImpl = require(\"./Node-impl\").implementation;\nconst ChildNodeImpl = require(\"./ChildNode-impl\").implementation;\nconst NonDocumentTypeChildNodeImpl = require(\"./NonDocumentTypeChildNode-impl\").implementation;\n\nconst { TEXT_NODE } = require(\"../node-type\");\nconst { MUTATION_TYPE, queueMutationRecord } = require(\"../helpers/mutation-observers\");\n\n// https://dom.spec.whatwg.org/#characterdata\nclass CharacterDataImpl extends NodeImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._data = privateData.data;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-characterdata-data\n  get data() {\n    return this._data;\n  }\n  set data(data) {\n    this.replaceData(0, this.length, data);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-characterdata-length\n  get length() {\n    return this._data.length;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-characterdata-substringdata\n  // https://dom.spec.whatwg.org/#concept-cd-substring\n  substringData(offset, count) {\n    const { length } = this;\n\n    if (offset > length) {\n      throw DOMException.create(this._globalObject, [\"The index is not in the allowed range.\", \"IndexSizeError\"]);\n    }\n\n    if (offset + count > length) {\n      return this._data.slice(offset);\n    }\n\n    return this._data.slice(offset, offset + count);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-characterdata-appenddata\n  appendData(data) {\n    this.replaceData(this.length, 0, data);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-characterdata-insertdata\n  insertData(offset, data) {\n    this.replaceData(offset, 0, data);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-characterdata-deletedata\n  deleteData(offset, count) {\n    this.replaceData(offset, count, \"\");\n  }\n\n  // https://dom.spec.whatwg.org/#dom-characterdata-replacedata\n  // https://dom.spec.whatwg.org/#concept-cd-replace\n  replaceData(offset, count, data) {\n    const { length } = this;\n\n    if (offset > length) {\n      throw DOMException.create(this._globalObject, [\n        \"The index is not in the allowed range.\",\n        \"IndexSizeError\"\n      ]);\n    }\n\n    if (offset + count > length) {\n      count = length - offset;\n    }\n\n    queueMutationRecord(MUTATION_TYPE.CHARACTER_DATA, this, null, null, this._data, [], [], null, null);\n\n    const start = this._data.slice(0, offset);\n    const end = this._data.slice(offset + count);\n    this._data = start + data + end;\n\n    for (const range of this._liveRanges()) {\n      const { _start, _end } = range;\n\n      if (_start.node === this && _start.offset > offset && _start.offset <= offset + count) {\n        range._setLiveRangeStart(this, offset);\n      }\n\n      if (_end.node === this && _end.offset > offset && _end.offset <= offset + count) {\n        range._setLiveRangeEnd(this, offset);\n      }\n\n      if (_start.node === this && _start.offset > offset + count) {\n        range._setLiveRangeStart(this, _start.offset + data.length - count);\n      }\n\n      if (_end.node === this && _end.offset > offset + count) {\n        range._setLiveRangeEnd(this, _end.offset + data.length - count);\n      }\n    }\n\n    if (this.nodeType === TEXT_NODE && this.parentNode) {\n      this.parentNode._childTextContentChangeSteps();\n    }\n  }\n}\n\nmixin(CharacterDataImpl.prototype, NonDocumentTypeChildNodeImpl.prototype);\nmixin(CharacterDataImpl.prototype, ChildNodeImpl.prototype);\n\nmodule.exports = {\n  implementation: CharacterDataImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Node = require(\"./Node.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"CharacterData\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'CharacterData'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"CharacterData\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Node._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class CharacterData extends globalObject.Node {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    substringData(offset, count) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'substringData' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'substringData' on 'CharacterData': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'substringData' on 'CharacterData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'substringData' on 'CharacterData': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].substringData(...args);\n    }\n\n    appendData(data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'appendData' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'appendData' on 'CharacterData': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'appendData' on 'CharacterData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].appendData(...args);\n    }\n\n    insertData(offset, data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertData' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'insertData' on 'CharacterData': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'insertData' on 'CharacterData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'insertData' on 'CharacterData': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].insertData(...args);\n    }\n\n    deleteData(offset, count) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteData' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'deleteData' on 'CharacterData': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'deleteData' on 'CharacterData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'deleteData' on 'CharacterData': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].deleteData(...args);\n    }\n\n    replaceData(offset, count, data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'replaceData' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      if (arguments.length < 3) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'replaceData' on 'CharacterData': 3 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'replaceData' on 'CharacterData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'replaceData' on 'CharacterData': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'replaceData' on 'CharacterData': parameter 3\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].replaceData(...args);\n    }\n\n    before() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'before' called on an object that is not a valid instance of CharacterData.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'before' on 'CharacterData': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].before(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    after() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'after' called on an object that is not a valid instance of CharacterData.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'after' on 'CharacterData': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].after(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replaceWith() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'replaceWith' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'replaceWith' on 'CharacterData': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].replaceWith(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    remove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'remove' called on an object that is not a valid instance of CharacterData.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].remove();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get data() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get data' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      return esValue[implSymbol][\"data\"];\n    }\n\n    set data(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set data' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'data' property on 'CharacterData': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      esValue[implSymbol][\"data\"] = V;\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n\n    get previousElementSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get previousElementSibling' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"previousElementSibling\"]);\n    }\n\n    get nextElementSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get nextElementSibling' called on an object that is not a valid instance of CharacterData.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"nextElementSibling\"]);\n    }\n  }\n  Object.defineProperties(CharacterData.prototype, {\n    substringData: { enumerable: true },\n    appendData: { enumerable: true },\n    insertData: { enumerable: true },\n    deleteData: { enumerable: true },\n    replaceData: { enumerable: true },\n    before: { enumerable: true },\n    after: { enumerable: true },\n    replaceWith: { enumerable: true },\n    remove: { enumerable: true },\n    data: { enumerable: true },\n    length: { enumerable: true },\n    previousElementSibling: { enumerable: true },\n    nextElementSibling: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"CharacterData\", configurable: true },\n    [Symbol.unscopables]: {\n      value: { before: true, after: true, replaceWith: true, remove: true, __proto__: null },\n      configurable: true\n    }\n  });\n  ctorRegistry[interfaceName] = CharacterData;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: CharacterData\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/CharacterData-impl.js\");\n","\"use strict\";\n\nconst { findSlot, assignSlot, assignSlotable } = require(\"../helpers/shadow-dom\");\n\n// https://dom.spec.whatwg.org/#mixin-slotable\n// https://dom.spec.whatwg.org/#light-tree-slotables\nclass SlotableMixinImpl {\n  _initSlotableMixin() {\n    this._slotableName = \"\";\n  }\n\n  _attrModifiedSlotableMixin(name, value, oldValue) {\n    if (name === \"slot\") {\n      if (value === oldValue) {\n        return;\n      }\n\n      if (value === null && oldValue === \"\") {\n        return;\n      }\n\n      if (value === \"\" && oldValue === null) {\n        return;\n      }\n\n      if (value === null || value === \"\") {\n        this._slotableName = \"\";\n      } else {\n        this._slotableName = value;\n      }\n\n\n      if (this._assignedSlot) {\n        assignSlotable(this._assignedSlot);\n      }\n\n      assignSlot(this);\n    }\n  }\n\n  get assignedSlot() {\n    return findSlot(this, \"open\");\n  }\n}\n\nmodule.exports = {\n  implementation: SlotableMixinImpl\n};\n","\"use strict\";\nconst SlotableMixinImpl = require(\"./Slotable-impl\").implementation;\nconst CharacterDataImpl = require(\"./CharacterData-impl\").implementation;\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst NODE_TYPE = require(\"../node-type\");\nconst { mixin } = require(\"../../utils\");\n\n// https://dom.spec.whatwg.org/#text\nclass TextImpl extends CharacterDataImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, {\n      data: args[0],\n      ownerDocument: idlUtils.implForWrapper(globalObject._document),\n      ...privateData\n    });\n\n    this._initSlotableMixin();\n\n    this.nodeType = NODE_TYPE.TEXT_NODE;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-text-splittext\n  // https://dom.spec.whatwg.org/#concept-text-split\n  splitText(offset) {\n    const { length } = this;\n\n    if (offset > length) {\n      throw DOMException.create(this._globalObject, [\"The index is not in the allowed range.\", \"IndexSizeError\"]);\n    }\n\n    const count = length - offset;\n    const newData = this.substringData(offset, count);\n\n    const newNode = this._ownerDocument.createTextNode(newData);\n\n    const parent = domSymbolTree.parent(this);\n\n    if (parent !== null) {\n      parent._insert(newNode, this.nextSibling);\n\n      for (const range of this._liveRanges()) {\n        const { _start, _end } = range;\n\n        if (_start.node === this && _start.offset > offset) {\n          range._setLiveRangeStart(newNode, _start.offset - offset);\n        }\n\n        if (_end.node === this && _end.offset > offset) {\n          range._setLiveRangeEnd(newNode, _end.offset - offset);\n        }\n      }\n\n      const nodeIndex = domSymbolTree.index(this);\n      for (const range of parent._liveRanges()) {\n        const { _start, _end } = range;\n\n        if (_start.node === parent && _start.offset === nodeIndex + 1) {\n          range._setLiveRangeStart(parent, _start.offset + 1);\n        }\n\n        if (_end.node === parent && _end.offset === nodeIndex + 1) {\n          range._setLiveRangeEnd(parent, _end.offset + 1);\n        }\n      }\n    }\n\n    this.replaceData(offset, count, \"\");\n\n    return newNode;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-text-wholetext\n  get wholeText() {\n    let wholeText = this.textContent;\n    let next;\n    let current = this;\n    while ((next = domSymbolTree.previousSibling(current)) && next.nodeType === NODE_TYPE.TEXT_NODE) {\n      wholeText = next.textContent + wholeText;\n      current = next;\n    }\n    current = this;\n    while ((next = domSymbolTree.nextSibling(current)) && next.nodeType === NODE_TYPE.TEXT_NODE) {\n      wholeText += next.textContent;\n      current = next;\n    }\n    return wholeText;\n  }\n}\n\nmixin(TextImpl.prototype, SlotableMixinImpl.prototype);\n\nmodule.exports = {\n  implementation: TextImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst CharacterData = require(\"./CharacterData.js\");\n\nconst interfaceName = \"Text\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Text'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Text\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  CharacterData._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Text extends globalObject.CharacterData {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to construct 'Text': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    splitText(offset) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'splitText' called on an object that is not a valid instance of Text.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'splitText' on 'Text': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'splitText' on 'Text': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].splitText(...args));\n    }\n\n    get wholeText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get wholeText' called on an object that is not a valid instance of Text.\");\n      }\n\n      return esValue[implSymbol][\"wholeText\"];\n    }\n\n    get assignedSlot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get assignedSlot' called on an object that is not a valid instance of Text.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"assignedSlot\"]);\n    }\n  }\n  Object.defineProperties(Text.prototype, {\n    splitText: { enumerable: true },\n    wholeText: { enumerable: true },\n    assignedSlot: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Text\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Text;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Text\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/Text-impl.js\");\n","\"use strict\";\n\nconst TextImpl = require(\"./Text-impl\").implementation;\nconst NODE_TYPE = require(\"../node-type\");\n\nclass CDATASectionImpl extends TextImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this.nodeType = NODE_TYPE.CDATA_SECTION_NODE;\n  }\n}\n\nmodule.exports = {\n  implementation: CDATASectionImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Text = require(\"./Text.js\");\n\nconst interfaceName = \"CDATASection\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'CDATASection'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"CDATASection\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Text._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class CDATASection extends globalObject.Text {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(CDATASection.prototype, {\n    [Symbol.toStringTag]: { value: \"CDATASection\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = CDATASection;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: CDATASection\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/CDATASection-impl.js\");\n","\"use strict\";\nconst CharacterDataImpl = require(\"./CharacterData-impl\").implementation;\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst NODE_TYPE = require(\"../node-type\");\n\nclass CommentImpl extends CharacterDataImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, {\n      data: args[0],\n      ownerDocument: idlUtils.implForWrapper(globalObject._document),\n      ...privateData\n    });\n\n    this.nodeType = NODE_TYPE.COMMENT_NODE;\n  }\n}\n\nmodule.exports = {\n  implementation: CommentImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst CharacterData = require(\"./CharacterData.js\");\n\nconst interfaceName = \"Comment\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Comment'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Comment\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  CharacterData._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Comment extends globalObject.CharacterData {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to construct 'Comment': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n  }\n  Object.defineProperties(Comment.prototype, { [Symbol.toStringTag]: { value: \"Comment\", configurable: true } });\n  ctorRegistry[interfaceName] = Comment;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Comment\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/Comment-impl.js\");\n","\"use strict\";\n\nconst CharacterDataImpl = require(\"./CharacterData-impl\").implementation;\n\nconst NODE_TYPE = require(\"../node-type\");\n\nclass ProcessingInstructionImpl extends CharacterDataImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this.nodeType = NODE_TYPE.PROCESSING_INSTRUCTION_NODE;\n    this._target = privateData.target;\n  }\n\n  get target() {\n    return this._target;\n  }\n}\n\nmodule.exports = {\n  implementation: ProcessingInstructionImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst CharacterData = require(\"./CharacterData.js\");\n\nconst interfaceName = \"ProcessingInstruction\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'ProcessingInstruction'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"ProcessingInstruction\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  CharacterData._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class ProcessingInstruction extends globalObject.CharacterData {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get target' called on an object that is not a valid instance of ProcessingInstruction.\"\n        );\n      }\n\n      return esValue[implSymbol][\"target\"];\n    }\n  }\n  Object.defineProperties(ProcessingInstruction.prototype, {\n    target: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"ProcessingInstruction\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = ProcessingInstruction;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: ProcessingInstruction\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/ProcessingInstruction-impl.js\");\n","\"use strict\";\n\nconst { SaxesParser } = require(\"saxes\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst { createElement } = require(\"../../living/helpers/create-element\");\n\nconst DocumentFragment = require(\"../../../generated/idl/DocumentFragment\");\nconst DocumentType = require(\"../../../generated/idl/DocumentType\");\nconst CDATASection = require(\"../../../generated/idl/CDATASection\");\nconst Comment = require(\"../../../generated/idl/Comment\");\nconst ProcessingInstruction = require(\"../../../generated/idl/ProcessingInstruction\");\nconst Text = require(\"../../../generated/idl/Text\");\n\nconst attributes = require(\"../../living/attributes\");\nconst { HTML_NS } = require(\"../../living/helpers/namespaces\");\n\nconst HTML5_DOCTYPE = /<!doctype html>/i;\nconst PUBLIC_DOCTYPE = /<!doctype\\s+([^\\s]+)\\s+public\\s+\"([^\"]+)\"\\s+\"([^\"]+)\"/i;\nconst SYSTEM_DOCTYPE = /<!doctype\\s+([^\\s]+)\\s+system\\s+\"([^\"]+)\"/i;\nconst CUSTOM_NAME_DOCTYPE = /<!doctype\\s+([^\\s>]+)/i;\n\nfunction parseDocType(globalObject, ownerDocument, html) {\n  if (HTML5_DOCTYPE.test(html)) {\n    return createDocumentType(globalObject, ownerDocument, \"html\", \"\", \"\");\n  }\n\n  const publicPieces = PUBLIC_DOCTYPE.exec(html);\n  if (publicPieces) {\n    return createDocumentType(globalObject, ownerDocument, publicPieces[1], publicPieces[2], publicPieces[3]);\n  }\n\n  const systemPieces = SYSTEM_DOCTYPE.exec(html);\n  if (systemPieces) {\n    return createDocumentType(globalObject, ownerDocument, systemPieces[1], \"\", systemPieces[2]);\n  }\n\n  const namePiece = CUSTOM_NAME_DOCTYPE.exec(html)[1] || \"html\";\n  return createDocumentType(globalObject, ownerDocument, namePiece, \"\", \"\");\n}\n\nfunction createDocumentType(globalObject, ownerDocument, name, publicId, systemId) {\n  return DocumentType.createImpl(globalObject, [], { ownerDocument, name, publicId, systemId });\n}\n\nfunction isHTMLTemplateElement(element) {\n  return element.tagName === \"template\" && element.namespaceURI === HTML_NS;\n}\n\n\nfunction createParser(rootNode, globalObject, saxesOptions) {\n  const parser = new SaxesParser({\n    ...saxesOptions,\n    // Browsers always have namespace support.\n    xmlns: true,\n    // We force the parser to treat all documents (even documents declaring themselves to be XML 1.1 documents) as XML\n    // 1.0 documents. See https://github.com/jsdom/jsdom/issues/2677 for a discussion of the stakes.\n    defaultXMLVersion: \"1.0\",\n    forceXMLVersion: true\n  });\n  const openStack = [rootNode];\n\n  function getOwnerDocument() {\n    const currentElement = openStack[openStack.length - 1];\n\n    return isHTMLTemplateElement(currentElement) ?\n      currentElement._templateContents._ownerDocument :\n      currentElement._ownerDocument;\n  }\n\n  function appendChild(child) {\n    const parentElement = openStack[openStack.length - 1];\n\n    if (isHTMLTemplateElement(parentElement)) {\n      parentElement._templateContents._insert(child, null);\n    } else {\n      parentElement._insert(child, null);\n    }\n  }\n\n  parser.on(\"text\", saxesOptions.fragment ?\n    // In a fragment, all text events produced by saxes must result in a text\n    // node.\n    data => {\n      const ownerDocument = getOwnerDocument();\n      appendChild(Text.createImpl(globalObject, [], { data, ownerDocument }));\n    } :\n    // When parsing a whole document, we must ignore those text nodes that are\n    // produced outside the root element. Saxes produces events for them,\n    // but DOM trees do not record text outside the root element.\n    data => {\n      if (openStack.length > 1) {\n        const ownerDocument = getOwnerDocument();\n        appendChild(Text.createImpl(globalObject, [], { data, ownerDocument }));\n      }\n    });\n\n  parser.on(\"cdata\", data => {\n    const ownerDocument = getOwnerDocument();\n    appendChild(CDATASection.createImpl(globalObject, [], { data, ownerDocument }));\n  });\n\n  parser.on(\"opentag\", tag => {\n    const { local: tagLocal, attributes: tagAttributes } = tag;\n\n    const ownerDocument = getOwnerDocument();\n    const tagNamespace = tag.uri === \"\" ? null : tag.uri;\n    const tagPrefix = tag.prefix === \"\" ? null : tag.prefix;\n    const isValue = tagAttributes.is === undefined ? null : tagAttributes.is.value;\n\n    const elem = createElement(ownerDocument, tagLocal, tagNamespace, tagPrefix, isValue, true);\n\n    // We mark a script element as \"parser-inserted\", which prevents it from\n    // being immediately executed.\n    if (tagLocal === \"script\" && tagNamespace === HTML_NS) {\n      elem._parserInserted = true;\n    }\n\n    for (const key of Object.keys(tagAttributes)) {\n      const { prefix, local, uri, value } = tagAttributes[key];\n      attributes.setAttributeValue(elem, local, value, prefix === \"\" ? null : prefix, uri === \"\" ? null : uri);\n    }\n\n    appendChild(elem);\n    openStack.push(elem);\n  });\n\n  parser.on(\"closetag\", () => {\n    const elem = openStack.pop();\n    // Once a script is populated, we can execute it.\n    if (elem.localName === \"script\" && elem.namespaceURI === HTML_NS) {\n      elem._eval();\n    }\n  });\n\n  parser.on(\"comment\", data => {\n    const ownerDocument = getOwnerDocument();\n    appendChild(Comment.createImpl(globalObject, [], { data, ownerDocument }));\n  });\n\n  parser.on(\"processinginstruction\", ({ target, body }) => {\n    const ownerDocument = getOwnerDocument();\n    appendChild(ProcessingInstruction.createImpl(globalObject, [], { target, data: body, ownerDocument }));\n  });\n\n  parser.on(\"doctype\", dt => {\n    const ownerDocument = getOwnerDocument();\n    appendChild(parseDocType(globalObject, ownerDocument, `<!doctype ${dt}>`));\n\n    const entityMatcher = /<!ENTITY ([^ ]+) \"([^\"]+)\">/g;\n    let result;\n    while ((result = entityMatcher.exec(dt))) {\n      const [, name, value] = result;\n      if (!(name in parser.ENTITIES)) {\n        parser.ENTITIES[name] = value;\n      }\n    }\n  });\n\n  parser.on(\"error\", err => {\n    throw DOMException.create(globalObject, [err.message, \"SyntaxError\"]);\n  });\n\n  return parser;\n}\n\nfunction parseFragment(markup, contextElement) {\n  const { _globalObject, _ownerDocument } = contextElement;\n\n  const fragment = DocumentFragment.createImpl(_globalObject, [], { ownerDocument: _ownerDocument });\n\n  // Only parseFragment needs resolvePrefix per the saxes documentation:\n  // https://github.com/lddubeau/saxes#parsing-xml-fragments\n  const parser = createParser(fragment, _globalObject, {\n    fragment: true,\n    resolvePrefix(prefix) {\n      // saxes wants undefined as the return value if the prefix is not defined, not null.\n      return contextElement.lookupNamespaceURI(prefix) || undefined;\n    }\n  });\n\n  parser.write(markup).close();\n\n  return fragment;\n}\n\nfunction parseIntoDocument(markup, ownerDocument) {\n  const { _globalObject } = ownerDocument;\n\n  const parser = createParser(ownerDocument, _globalObject, {\n    fileName: ownerDocument.location && ownerDocument.location.href\n  });\n\n  parser.write(markup).close();\n\n  return ownerDocument;\n}\n\nmodule.exports = {\n  parseFragment,\n  parseIntoDocument\n};\n","const UNDEFINED_CODE_POINTS = new Set([\n    65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n    393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n    720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n    1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n    CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n    CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n    CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n    CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n    CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n    CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n    CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n    CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n    CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n    CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n    CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n    CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n    CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n    CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n    CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n    DASH_DASH: '--',\n    CDATA_START: '[CDATA[',\n    DOCTYPE: 'doctype',\n    SCRIPT: 'script',\n    PUBLIC: 'public',\n    SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n    return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n    return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n    return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n    return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n        (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n    return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n","export var ERR;\n(function (ERR) {\n    ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n    ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n    ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n    ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n    ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n    ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n    ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n    ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n    ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n    ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n    ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n    ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n    ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n    ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n    ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n    ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n    ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n    ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n    ERR[\"eofInTag\"] = \"eof-in-tag\";\n    ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n    ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n    ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n    ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n    ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n    ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n    ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n    ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n    ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n    ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n    ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n    ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n    ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n    ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n    ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n    ERR[\"nestedComment\"] = \"nested-comment\";\n    ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n    ERR[\"eofInComment\"] = \"eof-in-comment\";\n    ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n    ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n    ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n    ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n    ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n    ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n    ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n    ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n    ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n    ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n    ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n    ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n    ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n    ERR[\"missingDoctype\"] = \"missing-doctype\";\n    ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n    ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n    ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n    ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n    ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n    ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n    ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n    ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n    ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n    constructor(handler) {\n        this.handler = handler;\n        this.html = '';\n        this.pos = -1;\n        // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n        this.lastGapPos = -2;\n        this.gapStack = [];\n        this.skipNextNewLine = false;\n        this.lastChunkWritten = false;\n        this.endOfChunkHit = false;\n        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n        this.isEol = false;\n        this.lineStartPos = 0;\n        this.droppedBufferSize = 0;\n        this.line = 1;\n        //NOTE: avoid reporting errors twice on advance/retreat\n        this.lastErrOffset = -1;\n    }\n    /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n    get col() {\n        return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n    }\n    get offset() {\n        return this.droppedBufferSize + this.pos;\n    }\n    getError(code, cpOffset) {\n        const { line, col, offset } = this;\n        const startCol = col + cpOffset;\n        const startOffset = offset + cpOffset;\n        return {\n            code,\n            startLine: line,\n            endLine: line,\n            startCol,\n            endCol: startCol,\n            startOffset,\n            endOffset: startOffset,\n        };\n    }\n    _err(code) {\n        if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n            this.lastErrOffset = this.offset;\n            this.handler.onParseError(this.getError(code, 0));\n        }\n    }\n    _addGap() {\n        this.gapStack.push(this.lastGapPos);\n        this.lastGapPos = this.pos;\n    }\n    _processSurrogate(cp) {\n        //NOTE: try to peek a surrogate pair\n        if (this.pos !== this.html.length - 1) {\n            const nextCp = this.html.charCodeAt(this.pos + 1);\n            if (isSurrogatePair(nextCp)) {\n                //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n                this.pos++;\n                //NOTE: add a gap that should be avoided during retreat\n                this._addGap();\n                return getSurrogatePairCodePoint(cp, nextCp);\n            }\n        }\n        //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n        else if (!this.lastChunkWritten) {\n            this.endOfChunkHit = true;\n            return $.EOF;\n        }\n        //NOTE: isolated surrogate\n        this._err(ERR.surrogateInInputStream);\n        return cp;\n    }\n    willDropParsedChunk() {\n        return this.pos > this.bufferWaterline;\n    }\n    dropParsedChunk() {\n        if (this.willDropParsedChunk()) {\n            this.html = this.html.substring(this.pos);\n            this.lineStartPos -= this.pos;\n            this.droppedBufferSize += this.pos;\n            this.pos = 0;\n            this.lastGapPos = -2;\n            this.gapStack.length = 0;\n        }\n    }\n    write(chunk, isLastChunk) {\n        if (this.html.length > 0) {\n            this.html += chunk;\n        }\n        else {\n            this.html = chunk;\n        }\n        this.endOfChunkHit = false;\n        this.lastChunkWritten = isLastChunk;\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n        this.endOfChunkHit = false;\n    }\n    startsWith(pattern, caseSensitive) {\n        // Check if our buffer has enough characters\n        if (this.pos + pattern.length > this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return false;\n        }\n        if (caseSensitive) {\n            return this.html.startsWith(pattern, this.pos);\n        }\n        for (let i = 0; i < pattern.length; i++) {\n            const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n            if (cp !== pattern.charCodeAt(i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    peek(offset) {\n        const pos = this.pos + offset;\n        if (pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        const code = this.html.charCodeAt(pos);\n        return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n    }\n    advance() {\n        this.pos++;\n        //NOTE: LF should be in the last column of the line\n        if (this.isEol) {\n            this.isEol = false;\n            this.line++;\n            this.lineStartPos = this.pos;\n        }\n        if (this.pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        let cp = this.html.charCodeAt(this.pos);\n        //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n        if (cp === $.CARRIAGE_RETURN) {\n            this.isEol = true;\n            this.skipNextNewLine = true;\n            return $.LINE_FEED;\n        }\n        //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n        //must be ignored.\n        if (cp === $.LINE_FEED) {\n            this.isEol = true;\n            if (this.skipNextNewLine) {\n                // `line` will be bumped again in the recursive call.\n                this.line--;\n                this.skipNextNewLine = false;\n                this._addGap();\n                return this.advance();\n            }\n        }\n        this.skipNextNewLine = false;\n        if (isSurrogate(cp)) {\n            cp = this._processSurrogate(cp);\n        }\n        //OPTIMIZATION: first check if code point is in the common allowed\n        //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n        //before going into detailed performance cost validation.\n        const isCommonValidRange = this.handler.onParseError === null ||\n            (cp > 0x1f && cp < 0x7f) ||\n            cp === $.LINE_FEED ||\n            cp === $.CARRIAGE_RETURN ||\n            (cp > 0x9f && cp < 64976);\n        if (!isCommonValidRange) {\n            this._checkForProblematicCharacters(cp);\n        }\n        return cp;\n    }\n    _checkForProblematicCharacters(cp) {\n        if (isControlCodePoint(cp)) {\n            this._err(ERR.controlCharacterInInputStream);\n        }\n        else if (isUndefinedCodePoint(cp)) {\n            this._err(ERR.noncharacterInInputStream);\n        }\n    }\n    retreat(count) {\n        this.pos -= count;\n        while (this.pos < this.lastGapPos) {\n            this.lastGapPos = this.gapStack.pop();\n            this.pos--;\n        }\n        this.isEol = false;\n    }\n}\n","export var TokenType;\n(function (TokenType) {\n    TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n    TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n    TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n    TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n    TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n    TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n    TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n    TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n    TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n    for (let i = token.attrs.length - 1; i >= 0; i--) {\n        if (token.attrs[i].name === attrName) {\n            return token.attrs[i].value;\n        }\n    }\n    return null;\n}\n","// Generated using scripts/write-decode-map.ts\nexport const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n    .split(\"\")\n    .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n    NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n    NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n    NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n    NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n    NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n    NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n    ATTRS[\"TYPE\"] = \"type\";\n    ATTRS[\"ACTION\"] = \"action\";\n    ATTRS[\"ENCODING\"] = \"encoding\";\n    ATTRS[\"PROMPT\"] = \"prompt\";\n    ATTRS[\"NAME\"] = \"name\";\n    ATTRS[\"COLOR\"] = \"color\";\n    ATTRS[\"FACE\"] = \"face\";\n    ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n    DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n    DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n    DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n    TAG_NAMES[\"A\"] = \"a\";\n    TAG_NAMES[\"ADDRESS\"] = \"address\";\n    TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n    TAG_NAMES[\"APPLET\"] = \"applet\";\n    TAG_NAMES[\"AREA\"] = \"area\";\n    TAG_NAMES[\"ARTICLE\"] = \"article\";\n    TAG_NAMES[\"ASIDE\"] = \"aside\";\n    TAG_NAMES[\"B\"] = \"b\";\n    TAG_NAMES[\"BASE\"] = \"base\";\n    TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n    TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n    TAG_NAMES[\"BIG\"] = \"big\";\n    TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n    TAG_NAMES[\"BODY\"] = \"body\";\n    TAG_NAMES[\"BR\"] = \"br\";\n    TAG_NAMES[\"BUTTON\"] = \"button\";\n    TAG_NAMES[\"CAPTION\"] = \"caption\";\n    TAG_NAMES[\"CENTER\"] = \"center\";\n    TAG_NAMES[\"CODE\"] = \"code\";\n    TAG_NAMES[\"COL\"] = \"col\";\n    TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n    TAG_NAMES[\"DD\"] = \"dd\";\n    TAG_NAMES[\"DESC\"] = \"desc\";\n    TAG_NAMES[\"DETAILS\"] = \"details\";\n    TAG_NAMES[\"DIALOG\"] = \"dialog\";\n    TAG_NAMES[\"DIR\"] = \"dir\";\n    TAG_NAMES[\"DIV\"] = \"div\";\n    TAG_NAMES[\"DL\"] = \"dl\";\n    TAG_NAMES[\"DT\"] = \"dt\";\n    TAG_NAMES[\"EM\"] = \"em\";\n    TAG_NAMES[\"EMBED\"] = \"embed\";\n    TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n    TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n    TAG_NAMES[\"FIGURE\"] = \"figure\";\n    TAG_NAMES[\"FONT\"] = \"font\";\n    TAG_NAMES[\"FOOTER\"] = \"footer\";\n    TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n    TAG_NAMES[\"FORM\"] = \"form\";\n    TAG_NAMES[\"FRAME\"] = \"frame\";\n    TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n    TAG_NAMES[\"H1\"] = \"h1\";\n    TAG_NAMES[\"H2\"] = \"h2\";\n    TAG_NAMES[\"H3\"] = \"h3\";\n    TAG_NAMES[\"H4\"] = \"h4\";\n    TAG_NAMES[\"H5\"] = \"h5\";\n    TAG_NAMES[\"H6\"] = \"h6\";\n    TAG_NAMES[\"HEAD\"] = \"head\";\n    TAG_NAMES[\"HEADER\"] = \"header\";\n    TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n    TAG_NAMES[\"HR\"] = \"hr\";\n    TAG_NAMES[\"HTML\"] = \"html\";\n    TAG_NAMES[\"I\"] = \"i\";\n    TAG_NAMES[\"IMG\"] = \"img\";\n    TAG_NAMES[\"IMAGE\"] = \"image\";\n    TAG_NAMES[\"INPUT\"] = \"input\";\n    TAG_NAMES[\"IFRAME\"] = \"iframe\";\n    TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n    TAG_NAMES[\"LABEL\"] = \"label\";\n    TAG_NAMES[\"LI\"] = \"li\";\n    TAG_NAMES[\"LINK\"] = \"link\";\n    TAG_NAMES[\"LISTING\"] = \"listing\";\n    TAG_NAMES[\"MAIN\"] = \"main\";\n    TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n    TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n    TAG_NAMES[\"MATH\"] = \"math\";\n    TAG_NAMES[\"MENU\"] = \"menu\";\n    TAG_NAMES[\"META\"] = \"meta\";\n    TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n    TAG_NAMES[\"MI\"] = \"mi\";\n    TAG_NAMES[\"MO\"] = \"mo\";\n    TAG_NAMES[\"MN\"] = \"mn\";\n    TAG_NAMES[\"MS\"] = \"ms\";\n    TAG_NAMES[\"MTEXT\"] = \"mtext\";\n    TAG_NAMES[\"NAV\"] = \"nav\";\n    TAG_NAMES[\"NOBR\"] = \"nobr\";\n    TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n    TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n    TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n    TAG_NAMES[\"OBJECT\"] = \"object\";\n    TAG_NAMES[\"OL\"] = \"ol\";\n    TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n    TAG_NAMES[\"OPTION\"] = \"option\";\n    TAG_NAMES[\"P\"] = \"p\";\n    TAG_NAMES[\"PARAM\"] = \"param\";\n    TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n    TAG_NAMES[\"PRE\"] = \"pre\";\n    TAG_NAMES[\"RB\"] = \"rb\";\n    TAG_NAMES[\"RP\"] = \"rp\";\n    TAG_NAMES[\"RT\"] = \"rt\";\n    TAG_NAMES[\"RTC\"] = \"rtc\";\n    TAG_NAMES[\"RUBY\"] = \"ruby\";\n    TAG_NAMES[\"S\"] = \"s\";\n    TAG_NAMES[\"SCRIPT\"] = \"script\";\n    TAG_NAMES[\"SEARCH\"] = \"search\";\n    TAG_NAMES[\"SECTION\"] = \"section\";\n    TAG_NAMES[\"SELECT\"] = \"select\";\n    TAG_NAMES[\"SOURCE\"] = \"source\";\n    TAG_NAMES[\"SMALL\"] = \"small\";\n    TAG_NAMES[\"SPAN\"] = \"span\";\n    TAG_NAMES[\"STRIKE\"] = \"strike\";\n    TAG_NAMES[\"STRONG\"] = \"strong\";\n    TAG_NAMES[\"STYLE\"] = \"style\";\n    TAG_NAMES[\"SUB\"] = \"sub\";\n    TAG_NAMES[\"SUMMARY\"] = \"summary\";\n    TAG_NAMES[\"SUP\"] = \"sup\";\n    TAG_NAMES[\"TABLE\"] = \"table\";\n    TAG_NAMES[\"TBODY\"] = \"tbody\";\n    TAG_NAMES[\"TEMPLATE\"] = \"template\";\n    TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n    TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n    TAG_NAMES[\"TD\"] = \"td\";\n    TAG_NAMES[\"TH\"] = \"th\";\n    TAG_NAMES[\"THEAD\"] = \"thead\";\n    TAG_NAMES[\"TITLE\"] = \"title\";\n    TAG_NAMES[\"TR\"] = \"tr\";\n    TAG_NAMES[\"TRACK\"] = \"track\";\n    TAG_NAMES[\"TT\"] = \"tt\";\n    TAG_NAMES[\"U\"] = \"u\";\n    TAG_NAMES[\"UL\"] = \"ul\";\n    TAG_NAMES[\"SVG\"] = \"svg\";\n    TAG_NAMES[\"VAR\"] = \"var\";\n    TAG_NAMES[\"WBR\"] = \"wbr\";\n    TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n    TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n    TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n    TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n    TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n    TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n    TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n    TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n    TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n    TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n    TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n    TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n    TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n    TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n    TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n    TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n    TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n    TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n    TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n    TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n    TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n    TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n    TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n    TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n    TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n    TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n    TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n    TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n    TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n    TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n    TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n    TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n    TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n    TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n    TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n    TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n    TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n    TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n    TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n    TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n    TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n    TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n    TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n    TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n    TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n    TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n    TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n    TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n    TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n    TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n    TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n    TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n    TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n    TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n    TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n    TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n    TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n    TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n    TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n    TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n    TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n    TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n    TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n    TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n    TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n    TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n    TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n    TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n    TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n    TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n    TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n    TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n    TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n    TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n    TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n    TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n    TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n    TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n    TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n    TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n    TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n    TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n    TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n    TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n    TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n    TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n    TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n    TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n    TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n    TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n    TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n    TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n    TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n    TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n    TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n    TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n    TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n    TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n    TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n    TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n    TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n    TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n    TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n    TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n    TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n    TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n    TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n    TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n    TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n    TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n    TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n    TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n    TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n    TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n    TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n    TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n    TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n    TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n    TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n    TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n    TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n    TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n    TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n    TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n    [TAG_NAMES.A, TAG_ID.A],\n    [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n    [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n    [TAG_NAMES.APPLET, TAG_ID.APPLET],\n    [TAG_NAMES.AREA, TAG_ID.AREA],\n    [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n    [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n    [TAG_NAMES.B, TAG_ID.B],\n    [TAG_NAMES.BASE, TAG_ID.BASE],\n    [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n    [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n    [TAG_NAMES.BIG, TAG_ID.BIG],\n    [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n    [TAG_NAMES.BODY, TAG_ID.BODY],\n    [TAG_NAMES.BR, TAG_ID.BR],\n    [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n    [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n    [TAG_NAMES.CENTER, TAG_ID.CENTER],\n    [TAG_NAMES.CODE, TAG_ID.CODE],\n    [TAG_NAMES.COL, TAG_ID.COL],\n    [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n    [TAG_NAMES.DD, TAG_ID.DD],\n    [TAG_NAMES.DESC, TAG_ID.DESC],\n    [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n    [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n    [TAG_NAMES.DIR, TAG_ID.DIR],\n    [TAG_NAMES.DIV, TAG_ID.DIV],\n    [TAG_NAMES.DL, TAG_ID.DL],\n    [TAG_NAMES.DT, TAG_ID.DT],\n    [TAG_NAMES.EM, TAG_ID.EM],\n    [TAG_NAMES.EMBED, TAG_ID.EMBED],\n    [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n    [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n    [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n    [TAG_NAMES.FONT, TAG_ID.FONT],\n    [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n    [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n    [TAG_NAMES.FORM, TAG_ID.FORM],\n    [TAG_NAMES.FRAME, TAG_ID.FRAME],\n    [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n    [TAG_NAMES.H1, TAG_ID.H1],\n    [TAG_NAMES.H2, TAG_ID.H2],\n    [TAG_NAMES.H3, TAG_ID.H3],\n    [TAG_NAMES.H4, TAG_ID.H4],\n    [TAG_NAMES.H5, TAG_ID.H5],\n    [TAG_NAMES.H6, TAG_ID.H6],\n    [TAG_NAMES.HEAD, TAG_ID.HEAD],\n    [TAG_NAMES.HEADER, TAG_ID.HEADER],\n    [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n    [TAG_NAMES.HR, TAG_ID.HR],\n    [TAG_NAMES.HTML, TAG_ID.HTML],\n    [TAG_NAMES.I, TAG_ID.I],\n    [TAG_NAMES.IMG, TAG_ID.IMG],\n    [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n    [TAG_NAMES.INPUT, TAG_ID.INPUT],\n    [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n    [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n    [TAG_NAMES.LABEL, TAG_ID.LABEL],\n    [TAG_NAMES.LI, TAG_ID.LI],\n    [TAG_NAMES.LINK, TAG_ID.LINK],\n    [TAG_NAMES.LISTING, TAG_ID.LISTING],\n    [TAG_NAMES.MAIN, TAG_ID.MAIN],\n    [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n    [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n    [TAG_NAMES.MATH, TAG_ID.MATH],\n    [TAG_NAMES.MENU, TAG_ID.MENU],\n    [TAG_NAMES.META, TAG_ID.META],\n    [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n    [TAG_NAMES.MI, TAG_ID.MI],\n    [TAG_NAMES.MO, TAG_ID.MO],\n    [TAG_NAMES.MN, TAG_ID.MN],\n    [TAG_NAMES.MS, TAG_ID.MS],\n    [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n    [TAG_NAMES.NAV, TAG_ID.NAV],\n    [TAG_NAMES.NOBR, TAG_ID.NOBR],\n    [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n    [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n    [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n    [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n    [TAG_NAMES.OL, TAG_ID.OL],\n    [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n    [TAG_NAMES.OPTION, TAG_ID.OPTION],\n    [TAG_NAMES.P, TAG_ID.P],\n    [TAG_NAMES.PARAM, TAG_ID.PARAM],\n    [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n    [TAG_NAMES.PRE, TAG_ID.PRE],\n    [TAG_NAMES.RB, TAG_ID.RB],\n    [TAG_NAMES.RP, TAG_ID.RP],\n    [TAG_NAMES.RT, TAG_ID.RT],\n    [TAG_NAMES.RTC, TAG_ID.RTC],\n    [TAG_NAMES.RUBY, TAG_ID.RUBY],\n    [TAG_NAMES.S, TAG_ID.S],\n    [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n    [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n    [TAG_NAMES.SECTION, TAG_ID.SECTION],\n    [TAG_NAMES.SELECT, TAG_ID.SELECT],\n    [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n    [TAG_NAMES.SMALL, TAG_ID.SMALL],\n    [TAG_NAMES.SPAN, TAG_ID.SPAN],\n    [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n    [TAG_NAMES.STRONG, TAG_ID.STRONG],\n    [TAG_NAMES.STYLE, TAG_ID.STYLE],\n    [TAG_NAMES.SUB, TAG_ID.SUB],\n    [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n    [TAG_NAMES.SUP, TAG_ID.SUP],\n    [TAG_NAMES.TABLE, TAG_ID.TABLE],\n    [TAG_NAMES.TBODY, TAG_ID.TBODY],\n    [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n    [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n    [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n    [TAG_NAMES.TD, TAG_ID.TD],\n    [TAG_NAMES.TH, TAG_ID.TH],\n    [TAG_NAMES.THEAD, TAG_ID.THEAD],\n    [TAG_NAMES.TITLE, TAG_ID.TITLE],\n    [TAG_NAMES.TR, TAG_ID.TR],\n    [TAG_NAMES.TRACK, TAG_ID.TRACK],\n    [TAG_NAMES.TT, TAG_ID.TT],\n    [TAG_NAMES.U, TAG_ID.U],\n    [TAG_NAMES.UL, TAG_ID.UL],\n    [TAG_NAMES.SVG, TAG_ID.SVG],\n    [TAG_NAMES.VAR, TAG_ID.VAR],\n    [TAG_NAMES.WBR, TAG_ID.WBR],\n    [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n    var _a;\n    return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n    [NS.HTML]: new Set([\n        $.ADDRESS,\n        $.APPLET,\n        $.AREA,\n        $.ARTICLE,\n        $.ASIDE,\n        $.BASE,\n        $.BASEFONT,\n        $.BGSOUND,\n        $.BLOCKQUOTE,\n        $.BODY,\n        $.BR,\n        $.BUTTON,\n        $.CAPTION,\n        $.CENTER,\n        $.COL,\n        $.COLGROUP,\n        $.DD,\n        $.DETAILS,\n        $.DIR,\n        $.DIV,\n        $.DL,\n        $.DT,\n        $.EMBED,\n        $.FIELDSET,\n        $.FIGCAPTION,\n        $.FIGURE,\n        $.FOOTER,\n        $.FORM,\n        $.FRAME,\n        $.FRAMESET,\n        $.H1,\n        $.H2,\n        $.H3,\n        $.H4,\n        $.H5,\n        $.H6,\n        $.HEAD,\n        $.HEADER,\n        $.HGROUP,\n        $.HR,\n        $.HTML,\n        $.IFRAME,\n        $.IMG,\n        $.INPUT,\n        $.LI,\n        $.LINK,\n        $.LISTING,\n        $.MAIN,\n        $.MARQUEE,\n        $.MENU,\n        $.META,\n        $.NAV,\n        $.NOEMBED,\n        $.NOFRAMES,\n        $.NOSCRIPT,\n        $.OBJECT,\n        $.OL,\n        $.P,\n        $.PARAM,\n        $.PLAINTEXT,\n        $.PRE,\n        $.SCRIPT,\n        $.SECTION,\n        $.SELECT,\n        $.SOURCE,\n        $.STYLE,\n        $.SUMMARY,\n        $.TABLE,\n        $.TBODY,\n        $.TD,\n        $.TEMPLATE,\n        $.TEXTAREA,\n        $.TFOOT,\n        $.TH,\n        $.THEAD,\n        $.TITLE,\n        $.TR,\n        $.TRACK,\n        $.UL,\n        $.WBR,\n        $.XMP,\n    ]),\n    [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n    [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n    [NS.XLINK]: new Set(),\n    [NS.XML]: new Set(),\n    [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n    TAG_NAMES.STYLE,\n    TAG_NAMES.SCRIPT,\n    TAG_NAMES.XMP,\n    TAG_NAMES.IFRAME,\n    TAG_NAMES.NOEMBED,\n    TAG_NAMES.NOFRAMES,\n    TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n    return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/decode';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n    State[State[\"DATA\"] = 0] = \"DATA\";\n    State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n    State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n    State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n    State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n    State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n    State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n    State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n    State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n    State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n    State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n    State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n    State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n    State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n    State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n    State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n    State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n    State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n    State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n    State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n    State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n    State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n    State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n    State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n    State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n    State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n    State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n    State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n    State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n    State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n    State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n    State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n    State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n    State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n    State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n    State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n    State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n    State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n    DATA: State.DATA,\n    RCDATA: State.RCDATA,\n    RAWTEXT: State.RAWTEXT,\n    SCRIPT_DATA: State.SCRIPT_DATA,\n    PLAINTEXT: State.PLAINTEXT,\n    CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n    return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n    return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n    return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n    return cp + 32;\n}\nfunction isWhitespace(cp) {\n    return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n    return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n    if (code === $.NULL) {\n        return ERR.nullCharacterReference;\n    }\n    else if (code > 1114111) {\n        return ERR.characterReferenceOutsideUnicodeRange;\n    }\n    else if (isSurrogate(code)) {\n        return ERR.surrogateCharacterReference;\n    }\n    else if (isUndefinedCodePoint(code)) {\n        return ERR.noncharacterCharacterReference;\n    }\n    else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n        return ERR.controlCharacterReference;\n    }\n    return null;\n}\n//Tokenizer\nexport class Tokenizer {\n    constructor(options, handler) {\n        this.options = options;\n        this.handler = handler;\n        this.paused = false;\n        /** Ensures that the parsing loop isn't run multiple times at once. */\n        this.inLoop = false;\n        /**\n         * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n         * and that it is not an integration point for either MathML or HTML.\n         *\n         * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n         */\n        this.inForeignNode = false;\n        this.lastStartTagName = '';\n        this.active = false;\n        this.state = State.DATA;\n        this.returnState = State.DATA;\n        this.entityStartPos = 0;\n        this.consumedAfterSnapshot = -1;\n        this.currentCharacterToken = null;\n        this.currentToken = null;\n        this.currentAttr = { name: '', value: '' };\n        this.preprocessor = new Preprocessor(handler);\n        this.currentLocation = this.getCurrentLocation(-1);\n        this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n            // Note: Set `pos` _before_ flushing, as flushing might drop\n            // the current chunk and invalidate `entityStartPos`.\n            this.preprocessor.pos = this.entityStartPos + consumed - 1;\n            this._flushCodePointConsumedAsCharacterReference(cp);\n        }, handler.onParseError\n            ? {\n                missingSemicolonAfterCharacterReference: () => {\n                    this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n                },\n                absenceOfDigitsInNumericCharacterReference: (consumed) => {\n                    this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n                },\n                validateNumericCharacterReference: (code) => {\n                    const error = getErrorForNumericCharacterReference(code);\n                    if (error)\n                        this._err(error, 1);\n                },\n            }\n            : undefined);\n    }\n    //Errors\n    _err(code, cpOffset = 0) {\n        var _a, _b;\n        (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n    }\n    // NOTE: `offset` may never run across line boundaries.\n    getCurrentLocation(offset) {\n        if (!this.options.sourceCodeLocationInfo) {\n            return null;\n        }\n        return {\n            startLine: this.preprocessor.line,\n            startCol: this.preprocessor.col - offset,\n            startOffset: this.preprocessor.offset - offset,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1,\n        };\n    }\n    _runParsingLoop() {\n        if (this.inLoop)\n            return;\n        this.inLoop = true;\n        while (this.active && !this.paused) {\n            this.consumedAfterSnapshot = 0;\n            const cp = this._consume();\n            if (!this._ensureHibernation()) {\n                this._callState(cp);\n            }\n        }\n        this.inLoop = false;\n    }\n    //API\n    pause() {\n        this.paused = true;\n    }\n    resume(writeCallback) {\n        if (!this.paused) {\n            throw new Error('Parser was already resumed');\n        }\n        this.paused = false;\n        // Necessary for synchronous resume.\n        if (this.inLoop)\n            return;\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    write(chunk, isLastChunk, writeCallback) {\n        this.active = true;\n        this.preprocessor.write(chunk, isLastChunk);\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.active = true;\n        this.preprocessor.insertHtmlAtCurrentPos(chunk);\n        this._runParsingLoop();\n    }\n    //Hibernation\n    _ensureHibernation() {\n        if (this.preprocessor.endOfChunkHit) {\n            this.preprocessor.retreat(this.consumedAfterSnapshot);\n            this.consumedAfterSnapshot = 0;\n            this.active = false;\n            return true;\n        }\n        return false;\n    }\n    //Consumption\n    _consume() {\n        this.consumedAfterSnapshot++;\n        return this.preprocessor.advance();\n    }\n    _advanceBy(count) {\n        this.consumedAfterSnapshot += count;\n        for (let i = 0; i < count; i++) {\n            this.preprocessor.advance();\n        }\n    }\n    _consumeSequenceIfMatch(pattern, caseSensitive) {\n        if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n            // We will already have consumed one character before calling this method.\n            this._advanceBy(pattern.length - 1);\n            return true;\n        }\n        return false;\n    }\n    //Token creation\n    _createStartTagToken() {\n        this.currentToken = {\n            type: TokenType.START_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(1),\n        };\n    }\n    _createEndTagToken() {\n        this.currentToken = {\n            type: TokenType.END_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(2),\n        };\n    }\n    _createCommentToken(offset) {\n        this.currentToken = {\n            type: TokenType.COMMENT,\n            data: '',\n            location: this.getCurrentLocation(offset),\n        };\n    }\n    _createDoctypeToken(initialName) {\n        this.currentToken = {\n            type: TokenType.DOCTYPE,\n            name: initialName,\n            forceQuirks: false,\n            publicId: null,\n            systemId: null,\n            location: this.currentLocation,\n        };\n    }\n    _createCharacterToken(type, chars) {\n        this.currentCharacterToken = {\n            type,\n            chars,\n            location: this.currentLocation,\n        };\n    }\n    //Tag attributes\n    _createAttr(attrNameFirstCh) {\n        this.currentAttr = {\n            name: attrNameFirstCh,\n            value: '',\n        };\n        this.currentLocation = this.getCurrentLocation(0);\n    }\n    _leaveAttrName() {\n        var _a;\n        var _b;\n        const token = this.currentToken;\n        if (getTokenAttr(token, this.currentAttr.name) === null) {\n            token.attrs.push(this.currentAttr);\n            if (token.location && this.currentLocation) {\n                const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n                attrLocations[this.currentAttr.name] = this.currentLocation;\n                // Set end location\n                this._leaveAttrValue();\n            }\n        }\n        else {\n            this._err(ERR.duplicateAttribute);\n        }\n    }\n    _leaveAttrValue() {\n        if (this.currentLocation) {\n            this.currentLocation.endLine = this.preprocessor.line;\n            this.currentLocation.endCol = this.preprocessor.col;\n            this.currentLocation.endOffset = this.preprocessor.offset;\n        }\n    }\n    //Token emission\n    prepareToken(ct) {\n        this._emitCurrentCharacterToken(ct.location);\n        this.currentToken = null;\n        if (ct.location) {\n            ct.location.endLine = this.preprocessor.line;\n            ct.location.endCol = this.preprocessor.col + 1;\n            ct.location.endOffset = this.preprocessor.offset + 1;\n        }\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    emitCurrentTagToken() {\n        const ct = this.currentToken;\n        this.prepareToken(ct);\n        ct.tagID = getTagID(ct.tagName);\n        if (ct.type === TokenType.START_TAG) {\n            this.lastStartTagName = ct.tagName;\n            this.handler.onStartTag(ct);\n        }\n        else {\n            if (ct.attrs.length > 0) {\n                this._err(ERR.endTagWithAttributes);\n            }\n            if (ct.selfClosing) {\n                this._err(ERR.endTagWithTrailingSolidus);\n            }\n            this.handler.onEndTag(ct);\n        }\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentComment(ct) {\n        this.prepareToken(ct);\n        this.handler.onComment(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentDoctype(ct) {\n        this.prepareToken(ct);\n        this.handler.onDoctype(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    _emitCurrentCharacterToken(nextLocation) {\n        if (this.currentCharacterToken) {\n            //NOTE: if we have a pending character token, make it's end location equal to the\n            //current token's start location.\n            if (nextLocation && this.currentCharacterToken.location) {\n                this.currentCharacterToken.location.endLine = nextLocation.startLine;\n                this.currentCharacterToken.location.endCol = nextLocation.startCol;\n                this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n            }\n            switch (this.currentCharacterToken.type) {\n                case TokenType.CHARACTER: {\n                    this.handler.onCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.NULL_CHARACTER: {\n                    this.handler.onNullCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.WHITESPACE_CHARACTER: {\n                    this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n                    break;\n                }\n            }\n            this.currentCharacterToken = null;\n        }\n    }\n    _emitEOFToken() {\n        const location = this.getCurrentLocation(0);\n        if (location) {\n            location.endLine = location.startLine;\n            location.endCol = location.startCol;\n            location.endOffset = location.startOffset;\n        }\n        this._emitCurrentCharacterToken(location);\n        this.handler.onEof({ type: TokenType.EOF, location });\n        this.active = false;\n    }\n    //Characters emission\n    //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n    //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n    //If we have a sequence of characters that belong to the same group, the parser can process it\n    //as a single solid character token.\n    //So, there are 3 types of character tokens in parse5:\n    //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n    //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n    //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n    _appendCharToCurrentCharacterToken(type, ch) {\n        if (this.currentCharacterToken) {\n            if (this.currentCharacterToken.type === type) {\n                this.currentCharacterToken.chars += ch;\n                return;\n            }\n            else {\n                this.currentLocation = this.getCurrentLocation(0);\n                this._emitCurrentCharacterToken(this.currentLocation);\n                this.preprocessor.dropParsedChunk();\n            }\n        }\n        this._createCharacterToken(type, ch);\n    }\n    _emitCodePoint(cp) {\n        const type = isWhitespace(cp)\n            ? TokenType.WHITESPACE_CHARACTER\n            : cp === $.NULL\n                ? TokenType.NULL_CHARACTER\n                : TokenType.CHARACTER;\n        this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n    }\n    //NOTE: used when we emit characters explicitly.\n    //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n    _emitChars(ch) {\n        this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n    }\n    // Character reference helpers\n    _startCharacterReference() {\n        this.returnState = this.state;\n        this.state = State.CHARACTER_REFERENCE;\n        this.entityStartPos = this.preprocessor.pos;\n        this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n    }\n    _isCharacterReferenceInAttribute() {\n        return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n    }\n    _flushCodePointConsumedAsCharacterReference(cp) {\n        if (this._isCharacterReferenceInAttribute()) {\n            this.currentAttr.value += String.fromCodePoint(cp);\n        }\n        else {\n            this._emitCodePoint(cp);\n        }\n    }\n    // Calling states this way turns out to be much faster than any other approach.\n    _callState(cp) {\n        switch (this.state) {\n            case State.DATA: {\n                this._stateData(cp);\n                break;\n            }\n            case State.RCDATA: {\n                this._stateRcdata(cp);\n                break;\n            }\n            case State.RAWTEXT: {\n                this._stateRawtext(cp);\n                break;\n            }\n            case State.SCRIPT_DATA: {\n                this._stateScriptData(cp);\n                break;\n            }\n            case State.PLAINTEXT: {\n                this._statePlaintext(cp);\n                break;\n            }\n            case State.TAG_OPEN: {\n                this._stateTagOpen(cp);\n                break;\n            }\n            case State.END_TAG_OPEN: {\n                this._stateEndTagOpen(cp);\n                break;\n            }\n            case State.TAG_NAME: {\n                this._stateTagName(cp);\n                break;\n            }\n            case State.RCDATA_LESS_THAN_SIGN: {\n                this._stateRcdataLessThanSign(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_OPEN: {\n                this._stateRcdataEndTagOpen(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_NAME: {\n                this._stateRcdataEndTagName(cp);\n                break;\n            }\n            case State.RAWTEXT_LESS_THAN_SIGN: {\n                this._stateRawtextLessThanSign(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_OPEN: {\n                this._stateRawtextEndTagOpen(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_NAME: {\n                this._stateRawtextEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n                this._stateScriptDataLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_OPEN: {\n                this._stateScriptDataEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_NAME: {\n                this._stateScriptDataEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START: {\n                this._stateScriptDataEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n                this._stateScriptDataEscapeStartDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED: {\n                this._stateScriptDataEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH: {\n                this._stateScriptDataEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n                this._stateScriptDataEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n                this._stateScriptDataEscapedEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n                this._stateScriptDataEscapedEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n                this._stateScriptDataDoubleEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n                this._stateScriptDataDoubleEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n                this._stateScriptDataDoubleEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n                this._stateScriptDataDoubleEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataDoubleEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n                this._stateScriptDataDoubleEscapeEnd(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_NAME: {\n                this._stateBeforeAttributeName(cp);\n                break;\n            }\n            case State.ATTRIBUTE_NAME: {\n                this._stateAttributeName(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_NAME: {\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_VALUE: {\n                this._stateBeforeAttributeValue(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n                this._stateAttributeValueDoubleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n                this._stateAttributeValueSingleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_UNQUOTED: {\n                this._stateAttributeValueUnquoted(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n                this._stateAfterAttributeValueQuoted(cp);\n                break;\n            }\n            case State.SELF_CLOSING_START_TAG: {\n                this._stateSelfClosingStartTag(cp);\n                break;\n            }\n            case State.BOGUS_COMMENT: {\n                this._stateBogusComment(cp);\n                break;\n            }\n            case State.MARKUP_DECLARATION_OPEN: {\n                this._stateMarkupDeclarationOpen(cp);\n                break;\n            }\n            case State.COMMENT_START: {\n                this._stateCommentStart(cp);\n                break;\n            }\n            case State.COMMENT_START_DASH: {\n                this._stateCommentStartDash(cp);\n                break;\n            }\n            case State.COMMENT: {\n                this._stateComment(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN: {\n                this._stateCommentLessThanSign(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG: {\n                this._stateCommentLessThanSignBang(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n                this._stateCommentLessThanSignBangDash(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n                this._stateCommentLessThanSignBangDashDash(cp);\n                break;\n            }\n            case State.COMMENT_END_DASH: {\n                this._stateCommentEndDash(cp);\n                break;\n            }\n            case State.COMMENT_END: {\n                this._stateCommentEnd(cp);\n                break;\n            }\n            case State.COMMENT_END_BANG: {\n                this._stateCommentEndBang(cp);\n                break;\n            }\n            case State.DOCTYPE: {\n                this._stateDoctype(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_NAME: {\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case State.DOCTYPE_NAME: {\n                this._stateDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_NAME: {\n                this._stateAfterDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n                this._stateAfterDoctypePublicKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateBeforeDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypePublicIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateAfterDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n                this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n                this._stateAfterDoctypeSystemKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateBeforeDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateAfterDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.BOGUS_DOCTYPE: {\n                this._stateBogusDoctype(cp);\n                break;\n            }\n            case State.CDATA_SECTION: {\n                this._stateCdataSection(cp);\n                break;\n            }\n            case State.CDATA_SECTION_BRACKET: {\n                this._stateCdataSectionBracket(cp);\n                break;\n            }\n            case State.CDATA_SECTION_END: {\n                this._stateCdataSectionEnd(cp);\n                break;\n            }\n            case State.CHARACTER_REFERENCE: {\n                this._stateCharacterReference();\n                break;\n            }\n            case State.AMBIGUOUS_AMPERSAND: {\n                this._stateAmbiguousAmpersand(cp);\n                break;\n            }\n            default: {\n                throw new Error('Unknown state');\n            }\n        }\n    }\n    // State machine\n    // Data state\n    //------------------------------------------------------------------\n    _stateData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.TAG_OPEN;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    //  RCDATA state\n    //------------------------------------------------------------------\n    _stateRcdata(cp) {\n        switch (cp) {\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RCDATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // RAWTEXT state\n    //------------------------------------------------------------------\n    _stateRawtext(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RAWTEXT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data state\n    //------------------------------------------------------------------\n    _stateScriptData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // PLAINTEXT state\n    //------------------------------------------------------------------\n    _statePlaintext(cp) {\n        switch (cp) {\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Tag open state\n    //------------------------------------------------------------------\n    _stateTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createStartTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.EXCLAMATION_MARK: {\n                    this.state = State.MARKUP_DECLARATION_OPEN;\n                    break;\n                }\n                case $.SOLIDUS: {\n                    this.state = State.END_TAG_OPEN;\n                    break;\n                }\n                case $.QUESTION_MARK: {\n                    this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n                    this._createCommentToken(1);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('<');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._emitChars('<');\n                    this.state = State.DATA;\n                    this._stateData(cp);\n                }\n            }\n    }\n    // End tag open state\n    //------------------------------------------------------------------\n    _stateEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingEndTagName);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('</');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._createCommentToken(2);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                }\n            }\n    }\n    // Tag name state\n    //------------------------------------------------------------------\n    _stateTagName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.tagName += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // RCDATA less-than sign state\n    //------------------------------------------------------------------\n    _stateRcdataLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RCDATA_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RCDATA end tag open state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RCDATA_END_TAG_NAME;\n            this._stateRcdataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    handleSpecialEndTag(_cp) {\n        if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n            return !this._ensureHibernation();\n        }\n        this._createEndTagToken();\n        const token = this.currentToken;\n        token.tagName = this.lastStartTagName;\n        const cp = this.preprocessor.peek(this.lastStartTagName.length);\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                return false;\n            }\n            case $.SOLIDUS: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.SELF_CLOSING_START_TAG;\n                return false;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.emitCurrentTagToken();\n                this.state = State.DATA;\n                return false;\n            }\n            default: {\n                return !this._ensureHibernation();\n            }\n        }\n    }\n    // RCDATA end tag name state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RAWTEXT less-than sign state\n    //------------------------------------------------------------------\n    _stateRawtextLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RAWTEXT_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag open state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RAWTEXT_END_TAG_NAME;\n            this._stateRawtextEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag name state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // Script data less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataLessThanSign(cp) {\n        switch (cp) {\n            case $.SOLIDUS: {\n                this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.SCRIPT_DATA_ESCAPE_START;\n                this._emitChars('<!');\n                break;\n            }\n            default: {\n                this._emitChars('<');\n                this.state = State.SCRIPT_DATA;\n                this._stateScriptData(cp);\n            }\n        }\n    }\n    // Script data end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_END_TAG_NAME;\n            this._stateScriptDataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStart(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStartDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n        }\n        else if (isAsciiLetter(cp)) {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n            this._stateScriptDataDoubleEscapeStart(cp);\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n            this._stateScriptDataEscapedEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeStart(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n            this._emitChars('/');\n        }\n        else {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Script data double escape end state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeEnd(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Before attribute name state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n                this._createAttr('=');\n                this.state = State.ATTRIBUTE_NAME;\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Attribute name state\n    //------------------------------------------------------------------\n    _stateAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED:\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this._leaveAttrName();\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._leaveAttrName();\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN: {\n                this._err(ERR.unexpectedCharacterInAttributeName);\n                this.currentAttr.name += String.fromCodePoint(cp);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After attribute name state\n    //------------------------------------------------------------------\n    _stateAfterAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Before attribute value state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeValue(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingAttributeValue);\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            default: {\n                this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this._stateAttributeValueUnquoted(cp);\n            }\n        }\n    }\n    // Attribute value (double-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueDoubleQuoted(cp) {\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (single-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueSingleQuoted(cp) {\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (unquoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueUnquoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.AMPERSAND: {\n                this._startCharacterReference();\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN:\n            case $.EQUALS_SIGN:\n            case $.GRAVE_ACCENT: {\n                this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n                this.currentAttr.value += String.fromCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After attribute value (quoted) state\n    //------------------------------------------------------------------\n    _stateAfterAttributeValueQuoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this._leaveAttrValue();\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBetweenAttributes);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Self-closing start tag state\n    //------------------------------------------------------------------\n    _stateSelfClosingStartTag(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                const token = this.currentToken;\n                token.selfClosing = true;\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedSolidusInTag);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Bogus comment state\n    //------------------------------------------------------------------\n    _stateBogusComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Markup declaration open state\n    //------------------------------------------------------------------\n    _stateMarkupDeclarationOpen(cp) {\n        if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n            this._createCommentToken($$.DASH_DASH.length + 1);\n            this.state = State.COMMENT_START;\n        }\n        else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n            // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n            this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n            this.state = State.DOCTYPE;\n        }\n        else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n            if (this.inForeignNode) {\n                this.state = State.CDATA_SECTION;\n            }\n            else {\n                this._err(ERR.cdataInHtmlContent);\n                this._createCommentToken($$.CDATA_START.length + 1);\n                this.currentToken.data = '[CDATA[';\n                this.state = State.BOGUS_COMMENT;\n            }\n        }\n        //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.incorrectlyOpenedComment);\n            this._createCommentToken(2);\n            this.state = State.BOGUS_COMMENT;\n            this._stateBogusComment(cp);\n        }\n    }\n    // Comment start state\n    //------------------------------------------------------------------\n    _stateCommentStart(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_START_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                const token = this.currentToken;\n                this.emitCurrentComment(token);\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment start dash state\n    //------------------------------------------------------------------\n    _stateCommentStartDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment state\n    //------------------------------------------------------------------\n    _stateComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                this.state = State.COMMENT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Comment less-than sign state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSign(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.EXCLAMATION_MARK: {\n                token.data += '!';\n                this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment less-than sign bang state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBang(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n        }\n        else {\n            this.state = State.COMMENT;\n            this._stateComment(cp);\n        }\n    }\n    // Comment less-than sign bang dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n        }\n        else {\n            this.state = State.COMMENT_END_DASH;\n            this._stateCommentEndDash(cp);\n        }\n    }\n    // Comment less-than sign bang dash dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDashDash(cp) {\n        if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n            this._err(ERR.nestedComment);\n        }\n        this.state = State.COMMENT_END;\n        this._stateCommentEnd(cp);\n    }\n    // Comment end dash state\n    //------------------------------------------------------------------\n    _stateCommentEndDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end state\n    //------------------------------------------------------------------\n    _stateCommentEnd(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.COMMENT_END_BANG;\n                break;\n            }\n            case $.HYPHEN_MINUS: {\n                token.data += '-';\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end bang state\n    //------------------------------------------------------------------\n    _stateCommentEndBang(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                token.data += '--!';\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.incorrectlyClosedComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--!';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // DOCTYPE state\n    //------------------------------------------------------------------\n    _stateDoctype(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                this._createDoctypeToken(null);\n                const token = this.currentToken;\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBeforeDoctypeName);\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n            }\n        }\n    }\n    // Before DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeName(cp) {\n        if (isAsciiUpper(cp)) {\n            this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n            this.state = State.DOCTYPE_NAME;\n        }\n        else\n            switch (cp) {\n                case $.SPACE:\n                case $.LINE_FEED:\n                case $.TABULATION:\n                case $.FORM_FEED: {\n                    // Ignore whitespace\n                    break;\n                }\n                case $.NULL: {\n                    this._err(ERR.unexpectedNullCharacter);\n                    this._createDoctypeToken(REPLACEMENT_CHARACTER);\n                    this.state = State.DOCTYPE_NAME;\n                    break;\n                }\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingDoctypeName);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofInDoctype);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._createDoctypeToken(String.fromCodePoint(cp));\n                    this.state = State.DOCTYPE_NAME;\n                }\n            }\n    }\n    // DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.AFTER_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n                    this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n                }\n                else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n                    this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n                }\n                //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n                //results are no longer valid and we will need to start over.\n                else if (!this._ensureHibernation()) {\n                    this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n                    token.forceQuirks = true;\n                    this.state = State.BOGUS_DOCTYPE;\n                    this._stateBogusDoctype(cp);\n                }\n            }\n        }\n    }\n    // After DOCTYPE public keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Between DOCTYPE public and system identifiers state\n    //------------------------------------------------------------------\n    _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // After DOCTYPE system keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Bogus DOCTYPE state\n    //------------------------------------------------------------------\n    _stateBogusDoctype(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    // CDATA section state\n    //------------------------------------------------------------------\n    _stateCdataSection(cp) {\n        switch (cp) {\n            case $.RIGHT_SQUARE_BRACKET: {\n                this.state = State.CDATA_SECTION_BRACKET;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInCdata);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // CDATA section bracket state\n    //------------------------------------------------------------------\n    _stateCdataSectionBracket(cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = State.CDATA_SECTION_END;\n        }\n        else {\n            this._emitChars(']');\n            this.state = State.CDATA_SECTION;\n            this._stateCdataSection(cp);\n        }\n    }\n    // CDATA section end state\n    //------------------------------------------------------------------\n    _stateCdataSectionEnd(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                break;\n            }\n            case $.RIGHT_SQUARE_BRACKET: {\n                this._emitChars(']');\n                break;\n            }\n            default: {\n                this._emitChars(']]');\n                this.state = State.CDATA_SECTION;\n                this._stateCdataSection(cp);\n            }\n        }\n    }\n    // Character reference state\n    //------------------------------------------------------------------\n    _stateCharacterReference() {\n        let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n        if (length < 0) {\n            if (this.preprocessor.lastChunkWritten) {\n                length = this.entityDecoder.end();\n            }\n            else {\n                // Wait for the rest of the entity.\n                this.active = false;\n                // Mark the entire buffer as read.\n                this.preprocessor.pos = this.preprocessor.html.length - 1;\n                this.consumedAfterSnapshot = 0;\n                this.preprocessor.endOfChunkHit = true;\n                return;\n            }\n        }\n        if (length === 0) {\n            // This was not a valid entity. Go back to the beginning, and\n            // figure out what to do.\n            this.preprocessor.pos = this.entityStartPos;\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this.state =\n                !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n                    ? State.AMBIGUOUS_AMPERSAND\n                    : this.returnState;\n        }\n        else {\n            // We successfully parsed an entity. Switch to the return state.\n            this.state = this.returnState;\n        }\n    }\n    // Ambiguos ampersand state\n    //------------------------------------------------------------------\n    _stateAmbiguousAmpersand(cp) {\n        if (isAsciiAlphaNumeric(cp)) {\n            this._flushCodePointConsumedAsCharacterReference(cp);\n        }\n        else {\n            if (cp === $.SEMICOLON) {\n                this._err(ERR.unknownNamedCharacterReference);\n            }\n            this.state = this.returnState;\n            this._callState(cp);\n        }\n    }\n}\n","import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n    ...IMPLICIT_END_TAG_REQUIRED,\n    $.CAPTION,\n    $.COLGROUP,\n    $.TBODY,\n    $.TD,\n    $.TFOOT,\n    $.TH,\n    $.THEAD,\n    $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n    $.APPLET,\n    $.CAPTION,\n    $.HTML,\n    $.MARQUEE,\n    $.OBJECT,\n    $.TABLE,\n    $.TD,\n    $.TEMPLATE,\n    $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n    get currentTmplContentOrNode() {\n        return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n    }\n    constructor(document, treeAdapter, handler) {\n        this.treeAdapter = treeAdapter;\n        this.handler = handler;\n        this.items = [];\n        this.tagIDs = [];\n        this.stackTop = -1;\n        this.tmplCount = 0;\n        this.currentTagId = $.UNKNOWN;\n        this.current = document;\n    }\n    //Index of element\n    _indexOf(element) {\n        return this.items.lastIndexOf(element, this.stackTop);\n    }\n    //Update current element\n    _isInTemplate() {\n        return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n    }\n    _updateCurrentElement() {\n        this.current = this.items[this.stackTop];\n        this.currentTagId = this.tagIDs[this.stackTop];\n    }\n    //Mutations\n    push(element, tagID) {\n        this.stackTop++;\n        this.items[this.stackTop] = element;\n        this.current = element;\n        this.tagIDs[this.stackTop] = tagID;\n        this.currentTagId = tagID;\n        if (this._isInTemplate()) {\n            this.tmplCount++;\n        }\n        this.handler.onItemPush(element, tagID, true);\n    }\n    pop() {\n        const popped = this.current;\n        if (this.tmplCount > 0 && this._isInTemplate()) {\n            this.tmplCount--;\n        }\n        this.stackTop--;\n        this._updateCurrentElement();\n        this.handler.onItemPop(popped, true);\n    }\n    replace(oldElement, newElement) {\n        const idx = this._indexOf(oldElement);\n        this.items[idx] = newElement;\n        if (idx === this.stackTop) {\n            this.current = newElement;\n        }\n    }\n    insertAfter(referenceElement, newElement, newElementID) {\n        const insertionIdx = this._indexOf(referenceElement) + 1;\n        this.items.splice(insertionIdx, 0, newElement);\n        this.tagIDs.splice(insertionIdx, 0, newElementID);\n        this.stackTop++;\n        if (insertionIdx === this.stackTop) {\n            this._updateCurrentElement();\n        }\n        if (this.current && this.currentTagId !== undefined) {\n            this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n        }\n    }\n    popUntilTagNamePopped(tagName) {\n        let targetIdx = this.stackTop + 1;\n        do {\n            targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n        } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n        this.shortenToLength(Math.max(targetIdx, 0));\n    }\n    shortenToLength(idx) {\n        while (this.stackTop >= idx) {\n            const popped = this.current;\n            if (this.tmplCount > 0 && this._isInTemplate()) {\n                this.tmplCount -= 1;\n            }\n            this.stackTop--;\n            this._updateCurrentElement();\n            this.handler.onItemPop(popped, this.stackTop < idx);\n        }\n    }\n    popUntilElementPopped(element) {\n        const idx = this._indexOf(element);\n        this.shortenToLength(Math.max(idx, 0));\n    }\n    popUntilPopped(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(Math.max(idx, 0));\n    }\n    popUntilNumberedHeaderPopped() {\n        this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n    }\n    popUntilTableCellPopped() {\n        this.popUntilPopped(TABLE_CELLS, NS.HTML);\n    }\n    popAllUpToHtmlElement() {\n        //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n        //we perform this fast stack clean up.\n        this.tmplCount = 0;\n        this.shortenToLength(1);\n    }\n    _indexOfTagNames(tagNames, namespace) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n                return i;\n            }\n        }\n        return -1;\n    }\n    clearBackTo(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx + 1);\n    }\n    clearBackToTableContext() {\n        this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n    }\n    clearBackToTableBodyContext() {\n        this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n    }\n    clearBackToTableRowContext() {\n        this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n    }\n    remove(element) {\n        const idx = this._indexOf(element);\n        if (idx >= 0) {\n            if (idx === this.stackTop) {\n                this.pop();\n            }\n            else {\n                this.items.splice(idx, 1);\n                this.tagIDs.splice(idx, 1);\n                this.stackTop--;\n                this._updateCurrentElement();\n                this.handler.onItemPop(element, false);\n            }\n        }\n    }\n    //Search\n    tryPeekProperlyNestedBodyElement() {\n        //Properly nested <body> element (should be second element in stack).\n        return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n    }\n    contains(element) {\n        return this._indexOf(element) > -1;\n    }\n    getCommonAncestor(element) {\n        const elementIdx = this._indexOf(element) - 1;\n        return elementIdx >= 0 ? this.items[elementIdx] : null;\n    }\n    isRootHtmlElementCurrent() {\n        return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n    }\n    //Element in scope\n    hasInDynamicScope(tagName, htmlScope) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n                case NS.HTML: {\n                    if (tn === tagName)\n                        return true;\n                    if (htmlScope.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.SVG: {\n                    if (SCOPING_ELEMENTS_SVG.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.MATHML: {\n                    if (SCOPING_ELEMENTS_MATHML.has(tn))\n                        return false;\n                    break;\n                }\n            }\n        }\n        return true;\n    }\n    hasInScope(tagName) {\n        return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n    }\n    hasInListItemScope(tagName) {\n        return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n    }\n    hasInButtonScope(tagName) {\n        return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n    }\n    hasNumberedHeaderInScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n                case NS.HTML: {\n                    if (NUMBERED_HEADERS.has(tn))\n                        return true;\n                    if (SCOPING_ELEMENTS_HTML.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.SVG: {\n                    if (SCOPING_ELEMENTS_SVG.has(tn))\n                        return false;\n                    break;\n                }\n                case NS.MATHML: {\n                    if (SCOPING_ELEMENTS_MATHML.has(tn))\n                        return false;\n                    break;\n                }\n            }\n        }\n        return true;\n    }\n    hasInTableScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n                continue;\n            }\n            switch (this.tagIDs[i]) {\n                case tagName: {\n                    return true;\n                }\n                case $.TABLE:\n                case $.HTML: {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n    hasTableBodyContextInTableScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n                continue;\n            }\n            switch (this.tagIDs[i]) {\n                case $.TBODY:\n                case $.THEAD:\n                case $.TFOOT: {\n                    return true;\n                }\n                case $.TABLE:\n                case $.HTML: {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n    hasInSelectScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n                continue;\n            }\n            switch (this.tagIDs[i]) {\n                case tagName: {\n                    return true;\n                }\n                case $.OPTION:\n                case $.OPTGROUP: {\n                    break;\n                }\n                default: {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n    //Implied end tags\n    generateImpliedEndTags() {\n        while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsThoroughly() {\n        while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsWithExclusion(exclusionId) {\n        while (this.currentTagId !== undefined &&\n            this.currentTagId !== exclusionId &&\n            IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n}\n","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n    EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n    EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n    constructor(treeAdapter) {\n        this.treeAdapter = treeAdapter;\n        this.entries = [];\n        this.bookmark = null;\n    }\n    //Noah Ark's condition\n    //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n    //lightweight heuristics without thorough attributes check.\n    _getNoahArkConditionCandidates(newElement, neAttrs) {\n        const candidates = [];\n        const neAttrsLength = neAttrs.length;\n        const neTagName = this.treeAdapter.getTagName(newElement);\n        const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n        for (let i = 0; i < this.entries.length; i++) {\n            const entry = this.entries[i];\n            if (entry.type === EntryType.Marker) {\n                break;\n            }\n            const { element } = entry;\n            if (this.treeAdapter.getTagName(element) === neTagName &&\n                this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n                const elementAttrs = this.treeAdapter.getAttrList(element);\n                if (elementAttrs.length === neAttrsLength) {\n                    candidates.push({ idx: i, attrs: elementAttrs });\n                }\n            }\n        }\n        return candidates;\n    }\n    _ensureNoahArkCondition(newElement) {\n        if (this.entries.length < NOAH_ARK_CAPACITY)\n            return;\n        const neAttrs = this.treeAdapter.getAttrList(newElement);\n        const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n        if (candidates.length < NOAH_ARK_CAPACITY)\n            return;\n        //NOTE: build attrs map for the new element, so we can perform fast lookups\n        const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n        let validCandidates = 0;\n        //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n        for (let i = 0; i < candidates.length; i++) {\n            const candidate = candidates[i];\n            // We know that `candidate.attrs.length === neAttrs.length`\n            if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n                validCandidates += 1;\n                if (validCandidates >= NOAH_ARK_CAPACITY) {\n                    this.entries.splice(candidate.idx, 1);\n                }\n            }\n        }\n    }\n    //Mutations\n    insertMarker() {\n        this.entries.unshift(MARKER);\n    }\n    pushElement(element, token) {\n        this._ensureNoahArkCondition(element);\n        this.entries.unshift({\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    insertElementAfterBookmark(element, token) {\n        const bookmarkIdx = this.entries.indexOf(this.bookmark);\n        this.entries.splice(bookmarkIdx, 0, {\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    removeEntry(entry) {\n        const entryIndex = this.entries.indexOf(entry);\n        if (entryIndex !== -1) {\n            this.entries.splice(entryIndex, 1);\n        }\n    }\n    /**\n     * Clears the list of formatting elements up to the last marker.\n     *\n     * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n     */\n    clearToLastMarker() {\n        const markerIdx = this.entries.indexOf(MARKER);\n        if (markerIdx === -1) {\n            this.entries.length = 0;\n        }\n        else {\n            this.entries.splice(0, markerIdx + 1);\n        }\n    }\n    //Search\n    getElementEntryInScopeWithTagName(tagName) {\n        const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n        return entry && entry.type === EntryType.Element ? entry : null;\n    }\n    getElementEntry(element) {\n        return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n    }\n}\n","import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n    //Node construction\n    createDocument() {\n        return {\n            nodeName: '#document',\n            mode: DOCUMENT_MODE.NO_QUIRKS,\n            childNodes: [],\n        };\n    },\n    createDocumentFragment() {\n        return {\n            nodeName: '#document-fragment',\n            childNodes: [],\n        };\n    },\n    createElement(tagName, namespaceURI, attrs) {\n        return {\n            nodeName: tagName,\n            tagName,\n            attrs,\n            namespaceURI,\n            childNodes: [],\n            parentNode: null,\n        };\n    },\n    createCommentNode(data) {\n        return {\n            nodeName: '#comment',\n            data,\n            parentNode: null,\n        };\n    },\n    createTextNode(value) {\n        return {\n            nodeName: '#text',\n            value,\n            parentNode: null,\n        };\n    },\n    //Tree mutation\n    appendChild(parentNode, newNode) {\n        parentNode.childNodes.push(newNode);\n        newNode.parentNode = parentNode;\n    },\n    insertBefore(parentNode, newNode, referenceNode) {\n        const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n        parentNode.childNodes.splice(insertionIdx, 0, newNode);\n        newNode.parentNode = parentNode;\n    },\n    setTemplateContent(templateElement, contentElement) {\n        templateElement.content = contentElement;\n    },\n    getTemplateContent(templateElement) {\n        return templateElement.content;\n    },\n    setDocumentType(document, name, publicId, systemId) {\n        const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n        if (doctypeNode) {\n            doctypeNode.name = name;\n            doctypeNode.publicId = publicId;\n            doctypeNode.systemId = systemId;\n        }\n        else {\n            const node = {\n                nodeName: '#documentType',\n                name,\n                publicId,\n                systemId,\n                parentNode: null,\n            };\n            defaultTreeAdapter.appendChild(document, node);\n        }\n    },\n    setDocumentMode(document, mode) {\n        document.mode = mode;\n    },\n    getDocumentMode(document) {\n        return document.mode;\n    },\n    detachNode(node) {\n        if (node.parentNode) {\n            const idx = node.parentNode.childNodes.indexOf(node);\n            node.parentNode.childNodes.splice(idx, 1);\n            node.parentNode = null;\n        }\n    },\n    insertText(parentNode, text) {\n        if (parentNode.childNodes.length > 0) {\n            const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n            if (defaultTreeAdapter.isTextNode(prevNode)) {\n                prevNode.value += text;\n                return;\n            }\n        }\n        defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n    },\n    insertTextBefore(parentNode, text, referenceNode) {\n        const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n        if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n            prevNode.value += text;\n        }\n        else {\n            defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n        }\n    },\n    adoptAttributes(recipient, attrs) {\n        const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n        for (let j = 0; j < attrs.length; j++) {\n            if (!recipientAttrsMap.has(attrs[j].name)) {\n                recipient.attrs.push(attrs[j]);\n            }\n        }\n    },\n    //Tree traversing\n    getFirstChild(node) {\n        return node.childNodes[0];\n    },\n    getChildNodes(node) {\n        return node.childNodes;\n    },\n    getParentNode(node) {\n        return node.parentNode;\n    },\n    getAttrList(element) {\n        return element.attrs;\n    },\n    //Node data\n    getTagName(element) {\n        return element.tagName;\n    },\n    getNamespaceURI(element) {\n        return element.namespaceURI;\n    },\n    getTextNodeContent(textNode) {\n        return textNode.value;\n    },\n    getCommentNodeContent(commentNode) {\n        return commentNode.data;\n    },\n    getDocumentTypeNodeName(doctypeNode) {\n        return doctypeNode.name;\n    },\n    getDocumentTypeNodePublicId(doctypeNode) {\n        return doctypeNode.publicId;\n    },\n    getDocumentTypeNodeSystemId(doctypeNode) {\n        return doctypeNode.systemId;\n    },\n    //Node types\n    isTextNode(node) {\n        return node.nodeName === '#text';\n    },\n    isCommentNode(node) {\n        return node.nodeName === '#comment';\n    },\n    isDocumentTypeNode(node) {\n        return node.nodeName === '#documentType';\n    },\n    isElementNode(node) {\n        return Object.prototype.hasOwnProperty.call(node, 'tagName');\n    },\n    // Source code location\n    setNodeSourceCodeLocation(node, location) {\n        node.sourceCodeLocation = location;\n    },\n    getNodeSourceCodeLocation(node) {\n        return node.sourceCodeLocation;\n    },\n    updateNodeSourceCodeLocation(node, endLocation) {\n        node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n    },\n};\n","import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n    '+//silmaril//dtd html pro v0r11 19970101//',\n    '-//as//dtd html 3.0 aswedit + extensions//',\n    '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n    '-//ietf//dtd html 2.0 level 1//',\n    '-//ietf//dtd html 2.0 level 2//',\n    '-//ietf//dtd html 2.0 strict level 1//',\n    '-//ietf//dtd html 2.0 strict level 2//',\n    '-//ietf//dtd html 2.0 strict//',\n    '-//ietf//dtd html 2.0//',\n    '-//ietf//dtd html 2.1e//',\n    '-//ietf//dtd html 3.0//',\n    '-//ietf//dtd html 3.2 final//',\n    '-//ietf//dtd html 3.2//',\n    '-//ietf//dtd html 3//',\n    '-//ietf//dtd html level 0//',\n    '-//ietf//dtd html level 1//',\n    '-//ietf//dtd html level 2//',\n    '-//ietf//dtd html level 3//',\n    '-//ietf//dtd html strict level 0//',\n    '-//ietf//dtd html strict level 1//',\n    '-//ietf//dtd html strict level 2//',\n    '-//ietf//dtd html strict level 3//',\n    '-//ietf//dtd html strict//',\n    '-//ietf//dtd html//',\n    '-//metrius//dtd metrius presentational//',\n    '-//microsoft//dtd internet explorer 2.0 html strict//',\n    '-//microsoft//dtd internet explorer 2.0 html//',\n    '-//microsoft//dtd internet explorer 2.0 tables//',\n    '-//microsoft//dtd internet explorer 3.0 html strict//',\n    '-//microsoft//dtd internet explorer 3.0 html//',\n    '-//microsoft//dtd internet explorer 3.0 tables//',\n    '-//netscape comm. corp.//dtd html//',\n    '-//netscape comm. corp.//dtd strict html//',\n    \"-//o'reilly and associates//dtd html 2.0//\",\n    \"-//o'reilly and associates//dtd html extended 1.0//\",\n    \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n    '-//sq//dtd html 2.0 hotmetal + extensions//',\n    '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n    '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n    '-//spyglass//dtd html 2.0 extended//',\n    '-//sun microsystems corp.//dtd hotjava html//',\n    '-//sun microsystems corp.//dtd hotjava strict html//',\n    '-//w3c//dtd html 3 1995-03-24//',\n    '-//w3c//dtd html 3.2 draft//',\n    '-//w3c//dtd html 3.2 final//',\n    '-//w3c//dtd html 3.2//',\n    '-//w3c//dtd html 3.2s draft//',\n    '-//w3c//dtd html 4.0 frameset//',\n    '-//w3c//dtd html 4.0 transitional//',\n    '-//w3c//dtd html experimental 19960712//',\n    '-//w3c//dtd html experimental 970421//',\n    '-//w3c//dtd w3 html//',\n    '-//w3o//dtd w3 html 3.0//',\n    '-//webtechs//dtd mozilla html 2.0//',\n    '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n    '-//w3o//dtd w3 html strict 3.0//en//',\n    '-/w3c/dtd html 4.0 transitional/en',\n    'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n    return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n    return (token.name === VALID_DOCTYPE_NAME &&\n        token.publicId === null &&\n        (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n    if (token.name !== VALID_DOCTYPE_NAME) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    const { systemId } = token;\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    let { publicId } = token;\n    if (publicId !== null) {\n        publicId = publicId.toLowerCase();\n        if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        prefixes =\n            systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.LIMITED_QUIRKS;\n        }\n    }\n    return DOCUMENT_MODE.NO_QUIRKS;\n}\n","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n    'attributeName',\n    'attributeType',\n    'baseFrequency',\n    'baseProfile',\n    'calcMode',\n    'clipPathUnits',\n    'diffuseConstant',\n    'edgeMode',\n    'filterUnits',\n    'glyphRef',\n    'gradientTransform',\n    'gradientUnits',\n    'kernelMatrix',\n    'kernelUnitLength',\n    'keyPoints',\n    'keySplines',\n    'keyTimes',\n    'lengthAdjust',\n    'limitingConeAngle',\n    'markerHeight',\n    'markerUnits',\n    'markerWidth',\n    'maskContentUnits',\n    'maskUnits',\n    'numOctaves',\n    'pathLength',\n    'patternContentUnits',\n    'patternTransform',\n    'patternUnits',\n    'pointsAtX',\n    'pointsAtY',\n    'pointsAtZ',\n    'preserveAlpha',\n    'preserveAspectRatio',\n    'primitiveUnits',\n    'refX',\n    'refY',\n    'repeatCount',\n    'repeatDur',\n    'requiredExtensions',\n    'requiredFeatures',\n    'specularConstant',\n    'specularExponent',\n    'spreadMethod',\n    'startOffset',\n    'stdDeviation',\n    'stitchTiles',\n    'surfaceScale',\n    'systemLanguage',\n    'tableValues',\n    'targetX',\n    'targetY',\n    'textLength',\n    'viewBox',\n    'viewTarget',\n    'xChannelSelector',\n    'yChannelSelector',\n    'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n    ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n    ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n    ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n    ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n    ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n    ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n    ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n    ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n    ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n    ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n    ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n    'altGlyph',\n    'altGlyphDef',\n    'altGlyphItem',\n    'animateColor',\n    'animateMotion',\n    'animateTransform',\n    'clipPath',\n    'feBlend',\n    'feColorMatrix',\n    'feComponentTransfer',\n    'feComposite',\n    'feConvolveMatrix',\n    'feDiffuseLighting',\n    'feDisplacementMap',\n    'feDistantLight',\n    'feFlood',\n    'feFuncA',\n    'feFuncB',\n    'feFuncG',\n    'feFuncR',\n    'feGaussianBlur',\n    'feImage',\n    'feMerge',\n    'feMergeNode',\n    'feMorphology',\n    'feOffset',\n    'fePointLight',\n    'feSpecularLighting',\n    'feSpotLight',\n    'feTile',\n    'feTurbulence',\n    'foreignObject',\n    'glyphRef',\n    'linearGradient',\n    'radialGradient',\n    'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n    $.B,\n    $.BIG,\n    $.BLOCKQUOTE,\n    $.BODY,\n    $.BR,\n    $.CENTER,\n    $.CODE,\n    $.DD,\n    $.DIV,\n    $.DL,\n    $.DT,\n    $.EM,\n    $.EMBED,\n    $.H1,\n    $.H2,\n    $.H3,\n    $.H4,\n    $.H5,\n    $.H6,\n    $.HEAD,\n    $.HR,\n    $.I,\n    $.IMG,\n    $.LI,\n    $.LISTING,\n    $.MENU,\n    $.META,\n    $.NOBR,\n    $.OL,\n    $.P,\n    $.PRE,\n    $.RUBY,\n    $.S,\n    $.SMALL,\n    $.SPAN,\n    $.STRONG,\n    $.STRIKE,\n    $.SUB,\n    $.SUP,\n    $.TABLE,\n    $.TT,\n    $.U,\n    $.UL,\n    $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n    const tn = startTagToken.tagID;\n    const isFontWithAttrs = tn === $.FONT &&\n        startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n    return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n            token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n            break;\n        }\n    }\n}\nexport function adjustTokenSVGAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrName != null) {\n            token.attrs[i].name = adjustedAttrName;\n        }\n    }\n}\nexport function adjustTokenXMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrEntry) {\n            token.attrs[i].prefix = adjustedAttrEntry.prefix;\n            token.attrs[i].name = adjustedAttrEntry.name;\n            token.attrs[i].namespace = adjustedAttrEntry.namespace;\n        }\n    }\n}\nexport function adjustTokenSVGTagName(token) {\n    const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n    if (adjustedTagName != null) {\n        token.tagName = adjustedTagName;\n        token.tagID = getTagID(token.tagName);\n    }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n        for (let i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.ENCODING) {\n                const value = attrs[i].value.toLowerCase();\n                return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n            }\n        }\n    }\n    return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n    return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n        ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n    InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n    InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n    InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n    InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n    InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n    InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n    InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n    InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n    InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n    InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n    InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n    InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n    InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n    InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n    InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n    InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n    startLine: -1,\n    startCol: -1,\n    startOffset: -1,\n    endLine: -1,\n    endCol: -1,\n    endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n    scriptingEnabled: true,\n    sourceCodeLocationInfo: false,\n    treeAdapter: defaultTreeAdapter,\n    onParseError: null,\n};\n//Parser\nexport class Parser {\n    constructor(options, document, \n    /** @internal */\n    fragmentContext = null, \n    /** @internal */\n    scriptHandler = null) {\n        this.fragmentContext = fragmentContext;\n        this.scriptHandler = scriptHandler;\n        this.currentToken = null;\n        this.stopped = false;\n        /** @internal */\n        this.insertionMode = InsertionMode.INITIAL;\n        /** @internal */\n        this.originalInsertionMode = InsertionMode.INITIAL;\n        /** @internal */\n        this.headElement = null;\n        /** @internal */\n        this.formElement = null;\n        /** Indicates that the current node is not an element in the HTML namespace */\n        this.currentNotInHTML = false;\n        /**\n         * The template insertion mode stack is maintained from the left.\n         * Ie. the topmost element will always have index 0.\n         *\n         * @internal\n         */\n        this.tmplInsertionModeStack = [];\n        /** @internal */\n        this.pendingCharacterTokens = [];\n        /** @internal */\n        this.hasNonWhitespacePendingCharacterToken = false;\n        /** @internal */\n        this.framesetOk = true;\n        /** @internal */\n        this.skipNextNewLine = false;\n        /** @internal */\n        this.fosterParentingEnabled = false;\n        this.options = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        this.treeAdapter = this.options.treeAdapter;\n        this.onParseError = this.options.onParseError;\n        // Always enable location info if we report parse errors.\n        if (this.onParseError) {\n            this.options.sourceCodeLocationInfo = true;\n        }\n        this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n        this.tokenizer = new Tokenizer(this.options, this);\n        this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n        this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n        this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n        this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n    }\n    // API\n    static parse(html, options) {\n        const parser = new this(options);\n        parser.tokenizer.write(html, true);\n        return parser.document;\n    }\n    static getFragmentParser(fragmentContext, options) {\n        const opts = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        //NOTE: use a <template> element as the fragment context if no context element was provided,\n        //so we will parse in a \"forgiving\" manner\n        fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n        //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n        //This is important for jsdom, where a new `document` cannot be created. This led to\n        //fragment parsing messing with the main `document`.\n        const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n        const parser = new this(opts, documentMock, fragmentContext);\n        if (parser.fragmentContextID === $.TEMPLATE) {\n            parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n        }\n        parser._initTokenizerForFragmentParsing();\n        parser._insertFakeRootElement();\n        parser._resetInsertionMode();\n        parser._findFormInFragmentContext();\n        return parser;\n    }\n    getFragment() {\n        const rootElement = this.treeAdapter.getFirstChild(this.document);\n        const fragment = this.treeAdapter.createDocumentFragment();\n        this._adoptNodes(rootElement, fragment);\n        return fragment;\n    }\n    //Errors\n    /** @internal */\n    _err(token, code, beforeToken) {\n        var _a;\n        if (!this.onParseError)\n            return;\n        const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n        const err = {\n            code,\n            startLine: loc.startLine,\n            startCol: loc.startCol,\n            startOffset: loc.startOffset,\n            endLine: beforeToken ? loc.startLine : loc.endLine,\n            endCol: beforeToken ? loc.startCol : loc.endCol,\n            endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n        };\n        this.onParseError(err);\n    }\n    //Stack events\n    /** @internal */\n    onItemPush(node, tid, isTop) {\n        var _a, _b;\n        (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n        if (isTop && this.openElements.stackTop > 0)\n            this._setContextModes(node, tid);\n    }\n    /** @internal */\n    onItemPop(node, isTop) {\n        var _a, _b;\n        if (this.options.sourceCodeLocationInfo) {\n            this._setEndLocation(node, this.currentToken);\n        }\n        (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n        if (isTop) {\n            let current;\n            let currentTagId;\n            if (this.openElements.stackTop === 0 && this.fragmentContext) {\n                current = this.fragmentContext;\n                currentTagId = this.fragmentContextID;\n            }\n            else {\n                ({ current, currentTagId } = this.openElements);\n            }\n            this._setContextModes(current, currentTagId);\n        }\n    }\n    _setContextModes(current, tid) {\n        const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === NS.HTML);\n        this.currentNotInHTML = !isHTML;\n        this.tokenizer.inForeignNode =\n            !isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);\n    }\n    /** @protected */\n    _switchToTextParsing(currentToken, nextTokenizerState) {\n        this._insertElement(currentToken, NS.HTML);\n        this.tokenizer.state = nextTokenizerState;\n        this.originalInsertionMode = this.insertionMode;\n        this.insertionMode = InsertionMode.TEXT;\n    }\n    switchToPlaintextParsing() {\n        this.insertionMode = InsertionMode.TEXT;\n        this.originalInsertionMode = InsertionMode.IN_BODY;\n        this.tokenizer.state = TokenizerMode.PLAINTEXT;\n    }\n    //Fragment parsing\n    /** @protected */\n    _getAdjustedCurrentElement() {\n        return this.openElements.stackTop === 0 && this.fragmentContext\n            ? this.fragmentContext\n            : this.openElements.current;\n    }\n    /** @protected */\n    _findFormInFragmentContext() {\n        let node = this.fragmentContext;\n        while (node) {\n            if (this.treeAdapter.getTagName(node) === TN.FORM) {\n                this.formElement = node;\n                break;\n            }\n            node = this.treeAdapter.getParentNode(node);\n        }\n    }\n    _initTokenizerForFragmentParsing() {\n        if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n            return;\n        }\n        switch (this.fragmentContextID) {\n            case $.TITLE:\n            case $.TEXTAREA: {\n                this.tokenizer.state = TokenizerMode.RCDATA;\n                break;\n            }\n            case $.STYLE:\n            case $.XMP:\n            case $.IFRAME:\n            case $.NOEMBED:\n            case $.NOFRAMES:\n            case $.NOSCRIPT: {\n                this.tokenizer.state = TokenizerMode.RAWTEXT;\n                break;\n            }\n            case $.SCRIPT: {\n                this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n                break;\n            }\n            case $.PLAINTEXT: {\n                this.tokenizer.state = TokenizerMode.PLAINTEXT;\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    //Tree mutation\n    /** @protected */\n    _setDocumentType(token) {\n        const name = token.name || '';\n        const publicId = token.publicId || '';\n        const systemId = token.systemId || '';\n        this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n        if (token.location) {\n            const documentChildren = this.treeAdapter.getChildNodes(this.document);\n            const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n            if (docTypeNode) {\n                this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n            }\n        }\n    }\n    /** @protected */\n    _attachElementToTree(element, location) {\n        if (this.options.sourceCodeLocationInfo) {\n            const loc = location && {\n                ...location,\n                startTag: location,\n            };\n            this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n        }\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentElement(element);\n        }\n        else {\n            const parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);\n        }\n    }\n    /**\n     * For self-closing tags. Add an element to the tree, but skip adding it\n     * to the stack.\n     */\n    /** @protected */\n    _appendElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n    }\n    /** @protected */\n    _insertElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n        this.openElements.push(element, token.tagID);\n    }\n    /** @protected */\n    _insertFakeElement(tagName, tagID) {\n        const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n        this._attachElementToTree(element, null);\n        this.openElements.push(element, tagID);\n    }\n    /** @protected */\n    _insertTemplate(token) {\n        const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n        const content = this.treeAdapter.createDocumentFragment();\n        this.treeAdapter.setTemplateContent(tmpl, content);\n        this._attachElementToTree(tmpl, token.location);\n        this.openElements.push(tmpl, token.tagID);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(content, null);\n    }\n    /** @protected */\n    _insertFakeRootElement() {\n        const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(element, null);\n        this.treeAdapter.appendChild(this.openElements.current, element);\n        this.openElements.push(element, $.HTML);\n    }\n    /** @protected */\n    _appendCommentNode(token, parent) {\n        const commentNode = this.treeAdapter.createCommentNode(token.data);\n        this.treeAdapter.appendChild(parent, commentNode);\n        if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n        }\n    }\n    /** @protected */\n    _insertCharacters(token) {\n        let parent;\n        let beforeElement;\n        if (this._shouldFosterParentOnInsertion()) {\n            ({ parent, beforeElement } = this._findFosterParentingLocation());\n            if (beforeElement) {\n                this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n            }\n            else {\n                this.treeAdapter.insertText(parent, token.chars);\n            }\n        }\n        else {\n            parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.insertText(parent, token.chars);\n        }\n        if (!token.location)\n            return;\n        const siblings = this.treeAdapter.getChildNodes(parent);\n        const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n        const textNode = siblings[textNodeIdx - 1];\n        //NOTE: if we have a location assigned by another token, then just update the end position\n        const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n        if (tnLoc) {\n            const { endLine, endCol, endOffset } = token.location;\n            this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n        }\n        else if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n        }\n    }\n    /** @protected */\n    _adoptNodes(donor, recipient) {\n        for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n            this.treeAdapter.detachNode(child);\n            this.treeAdapter.appendChild(recipient, child);\n        }\n    }\n    /** @protected */\n    _setEndLocation(element, closingToken) {\n        if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n            const ctLoc = closingToken.location;\n            const tn = this.treeAdapter.getTagName(element);\n            const endLoc = \n            // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n            // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n            closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n                ? {\n                    endTag: { ...ctLoc },\n                    endLine: ctLoc.endLine,\n                    endCol: ctLoc.endCol,\n                    endOffset: ctLoc.endOffset,\n                }\n                : {\n                    endLine: ctLoc.startLine,\n                    endCol: ctLoc.startCol,\n                    endOffset: ctLoc.startOffset,\n                };\n            this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n        }\n    }\n    //Token processing\n    shouldProcessStartTagTokenInForeignContent(token) {\n        // Check that neither current === document, or ns === NS.HTML\n        if (!this.currentNotInHTML)\n            return false;\n        let current;\n        let currentTagId;\n        if (this.openElements.stackTop === 0 && this.fragmentContext) {\n            current = this.fragmentContext;\n            currentTagId = this.fragmentContextID;\n        }\n        else {\n            ({ current, currentTagId } = this.openElements);\n        }\n        if (token.tagID === $.SVG &&\n            this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n            this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n            return false;\n        }\n        return (\n        // Check that `current` is not an integration point for HTML or MathML elements.\n        this.tokenizer.inForeignNode ||\n            // If it _is_ an integration point, then we might have to check that it is not an HTML\n            // integration point.\n            ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n                currentTagId !== undefined &&\n                !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n    }\n    /** @protected */\n    _processToken(token) {\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                this.onCharacter(token);\n                break;\n            }\n            case TokenType.NULL_CHARACTER: {\n                this.onNullCharacter(token);\n                break;\n            }\n            case TokenType.COMMENT: {\n                this.onComment(token);\n                break;\n            }\n            case TokenType.DOCTYPE: {\n                this.onDoctype(token);\n                break;\n            }\n            case TokenType.START_TAG: {\n                this._processStartTag(token);\n                break;\n            }\n            case TokenType.END_TAG: {\n                this.onEndTag(token);\n                break;\n            }\n            case TokenType.EOF: {\n                this.onEof(token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                this.onWhitespaceCharacter(token);\n                break;\n            }\n        }\n    }\n    //Integration points\n    /** @protected */\n    _isIntegrationPoint(tid, element, foreignNS) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        const attrs = this.treeAdapter.getAttrList(element);\n        return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n    }\n    //Active formatting elements reconstruction\n    /** @protected */\n    _reconstructActiveFormattingElements() {\n        const listLength = this.activeFormattingElements.entries.length;\n        if (listLength) {\n            const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n            const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;\n            for (let i = unopenIdx; i >= 0; i--) {\n                const entry = this.activeFormattingElements.entries[i];\n                this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n                entry.element = this.openElements.current;\n            }\n        }\n    }\n    //Close elements\n    /** @protected */\n    _closeTableCell() {\n        this.openElements.generateImpliedEndTags();\n        this.openElements.popUntilTableCellPopped();\n        this.activeFormattingElements.clearToLastMarker();\n        this.insertionMode = InsertionMode.IN_ROW;\n    }\n    /** @protected */\n    _closePElement() {\n        this.openElements.generateImpliedEndTagsWithExclusion($.P);\n        this.openElements.popUntilTagNamePopped($.P);\n    }\n    //Insertion modes\n    /** @protected */\n    _resetInsertionMode() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            //Insertion mode reset map\n            switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n                case $.TR: {\n                    this.insertionMode = InsertionMode.IN_ROW;\n                    return;\n                }\n                case $.TBODY:\n                case $.THEAD:\n                case $.TFOOT: {\n                    this.insertionMode = InsertionMode.IN_TABLE_BODY;\n                    return;\n                }\n                case $.CAPTION: {\n                    this.insertionMode = InsertionMode.IN_CAPTION;\n                    return;\n                }\n                case $.COLGROUP: {\n                    this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n                    return;\n                }\n                case $.TABLE: {\n                    this.insertionMode = InsertionMode.IN_TABLE;\n                    return;\n                }\n                case $.BODY: {\n                    this.insertionMode = InsertionMode.IN_BODY;\n                    return;\n                }\n                case $.FRAMESET: {\n                    this.insertionMode = InsertionMode.IN_FRAMESET;\n                    return;\n                }\n                case $.SELECT: {\n                    this._resetInsertionModeForSelect(i);\n                    return;\n                }\n                case $.TEMPLATE: {\n                    this.insertionMode = this.tmplInsertionModeStack[0];\n                    return;\n                }\n                case $.HTML: {\n                    this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n                    return;\n                }\n                case $.TD:\n                case $.TH: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_CELL;\n                        return;\n                    }\n                    break;\n                }\n                case $.HEAD: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_HEAD;\n                        return;\n                    }\n                    break;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_BODY;\n    }\n    /** @protected */\n    _resetInsertionModeForSelect(selectIdx) {\n        if (selectIdx > 0) {\n            for (let i = selectIdx - 1; i > 0; i--) {\n                const tn = this.openElements.tagIDs[i];\n                if (tn === $.TEMPLATE) {\n                    break;\n                }\n                else if (tn === $.TABLE) {\n                    this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n                    return;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_SELECT;\n    }\n    //Foster parenting\n    /** @protected */\n    _isElementCausesFosterParenting(tn) {\n        return TABLE_STRUCTURE_TAGS.has(tn);\n    }\n    /** @protected */\n    _shouldFosterParentOnInsertion() {\n        return (this.fosterParentingEnabled &&\n            this.openElements.currentTagId !== undefined &&\n            this._isElementCausesFosterParenting(this.openElements.currentTagId));\n    }\n    /** @protected */\n    _findFosterParentingLocation() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            const openElement = this.openElements.items[i];\n            switch (this.openElements.tagIDs[i]) {\n                case $.TEMPLATE: {\n                    if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n                        return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n                    }\n                    break;\n                }\n                case $.TABLE: {\n                    const parent = this.treeAdapter.getParentNode(openElement);\n                    if (parent) {\n                        return { parent, beforeElement: openElement };\n                    }\n                    return { parent: this.openElements.items[i - 1], beforeElement: null };\n                }\n                default:\n                // Do nothing\n            }\n        }\n        return { parent: this.openElements.items[0], beforeElement: null };\n    }\n    /** @protected */\n    _fosterParentElement(element) {\n        const location = this._findFosterParentingLocation();\n        if (location.beforeElement) {\n            this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n        }\n        else {\n            this.treeAdapter.appendChild(location.parent, element);\n        }\n    }\n    //Special elements\n    /** @protected */\n    _isSpecialElement(element, id) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        return SPECIAL_ELEMENTS[ns].has(id);\n    }\n    /** @internal */\n    onCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            characterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE: {\n                characterInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                characterInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onNullCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            nullCharacterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onComment(token) {\n        this.skipNextNewLine = false;\n        if (this.currentNotInHTML) {\n            appendComment(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL:\n            case InsertionMode.BEFORE_HTML:\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                appendComment(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                appendCommentToRootHtmlElement(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                appendCommentToDocument(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onDoctype(token) {\n        this.skipNextNewLine = false;\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                doctypeInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD: {\n                this._err(token, ERR.misplacedDoctype);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onStartTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        this._processStartTag(token);\n        if (token.selfClosing && !token.ackSelfClosing) {\n            this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n        }\n    }\n    /**\n     * Processes a given start tag.\n     *\n     * `onStartTag` checks if a self-closing tag was recognized. When a token\n     * is moved inbetween multiple insertion modes, this check for self-closing\n     * could lead to false positives. To avoid this, `_processStartTag` is used\n     * for nested calls.\n     *\n     * @param token The token to process.\n     * @protected\n     */\n    _processStartTag(token) {\n        if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n            startTagInForeignContent(this, token);\n        }\n        else {\n            this._startTagOutsideForeignContent(token);\n        }\n    }\n    /** @protected */\n    _startTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                startTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                startTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                startTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                startTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                startTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                startTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                startTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                startTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                startTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                startTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                startTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                startTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                startTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                startTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                startTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                startTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                startTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                startTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                startTagAfterAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                startTagAfterAfterFrameset(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onEndTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        if (this.currentNotInHTML) {\n            endTagInForeignContent(this, token);\n        }\n        else {\n            this._endTagOutsideForeignContent(token);\n        }\n    }\n    /** @protected */\n    _endTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                endTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                endTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                endTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                endTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                endTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                endTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                endTagInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                endTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                endTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                endTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                endTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                endTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                endTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                endTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                endTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                endTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                endTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                endTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                endTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onEof(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                eofInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                eofInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                eofInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                stopParsing(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    /** @internal */\n    onWhitespaceCharacter(token) {\n        if (this.skipNextNewLine) {\n            this.skipNextNewLine = false;\n            if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n                if (token.chars.length === 1) {\n                    return;\n                }\n                token.chars = token.chars.substr(1);\n            }\n        }\n        if (this.tokenizer.inForeignNode) {\n            this._insertCharacters(token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                whitespaceCharacterInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                whitespaceCharacterInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n    let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n    if (formattingElementEntry) {\n        if (!p.openElements.contains(formattingElementEntry.element)) {\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\n            formattingElementEntry = null;\n        }\n        else if (!p.openElements.hasInScope(token.tagID)) {\n            formattingElementEntry = null;\n        }\n    }\n    else {\n        genericEndTagInBody(p, token);\n    }\n    return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n    let furthestBlock = null;\n    let idx = p.openElements.stackTop;\n    for (; idx >= 0; idx--) {\n        const element = p.openElements.items[idx];\n        if (element === formattingElementEntry.element) {\n            break;\n        }\n        if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n            furthestBlock = element;\n        }\n    }\n    if (!furthestBlock) {\n        p.openElements.shortenToLength(Math.max(idx, 0));\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\n    }\n    return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n    let lastElement = furthestBlock;\n    let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n    for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n        //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n        nextElement = p.openElements.getCommonAncestor(element);\n        const elementEntry = p.activeFormattingElements.getElementEntry(element);\n        const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n        if (shouldRemoveFromOpenElements) {\n            if (counterOverflow) {\n                p.activeFormattingElements.removeEntry(elementEntry);\n            }\n            p.openElements.remove(element);\n        }\n        else {\n            element = aaRecreateElementFromEntry(p, elementEntry);\n            if (lastElement === furthestBlock) {\n                p.activeFormattingElements.bookmark = elementEntry;\n            }\n            p.treeAdapter.detachNode(lastElement);\n            p.treeAdapter.appendChild(element, lastElement);\n            lastElement = element;\n        }\n    }\n    return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n    const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n    p.openElements.replace(elementEntry.element, newElement);\n    elementEntry.element = newElement;\n    return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n    const tn = p.treeAdapter.getTagName(commonAncestor);\n    const tid = getTagID(tn);\n    if (p._isElementCausesFosterParenting(tid)) {\n        p._fosterParentElement(lastElement);\n    }\n    else {\n        const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n        if (tid === $.TEMPLATE && ns === NS.HTML) {\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n        }\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\n    }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n    const { token } = formattingElementEntry;\n    const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n    p._adoptNodes(furthestBlock, newElement);\n    p.treeAdapter.appendChild(furthestBlock, newElement);\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\n    p.openElements.remove(formattingElementEntry.element);\n    p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n    for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n        const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n        if (!formattingElementEntry) {\n            break;\n        }\n        const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n        if (!furthestBlock) {\n            break;\n        }\n        p.activeFormattingElements.bookmark = formattingElementEntry;\n        const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n        const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n        p.treeAdapter.detachNode(lastElement);\n        if (commonAncestor)\n            aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n    }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n    p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n    p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n    p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n    p.stopped = true;\n    // NOTE: Set end locations for elements that remain on the open element stack.\n    if (token.location) {\n        // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n        // This is a problem, as we might overwrite their end position here.\n        const target = p.fragmentContext ? 0 : 2;\n        for (let i = p.openElements.stackTop; i >= target; i--) {\n            p._setEndLocation(p.openElements.items[i], token);\n        }\n        // Handle `html` and `body`\n        if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n            const htmlElement = p.openElements.items[0];\n            const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n            if (htmlLocation && !htmlLocation.endTag) {\n                p._setEndLocation(htmlElement, token);\n                if (p.openElements.stackTop >= 1) {\n                    const bodyElement = p.openElements.items[1];\n                    const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n                    if (bodyLocation && !bodyLocation.endTag) {\n                        p._setEndLocation(bodyElement, token);\n                    }\n                }\n            }\n        }\n    }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n    p._setDocumentType(token);\n    const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n    if (!doctype.isConforming(token)) {\n        p._err(token, ERR.nonConformingDoctype);\n    }\n    p.treeAdapter.setDocumentMode(p.document, mode);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n    p._err(token, ERR.missingDoctype, true);\n    p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n    p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n    if (token.tagID === $.HTML) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.BEFORE_HEAD;\n    }\n    else {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction endTagBeforeHtml(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction tokenBeforeHtml(p, token) {\n    p._insertFakeRootElement();\n    p.insertionMode = InsertionMode.BEFORE_HEAD;\n    p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.HEAD: {\n            p._insertElement(token, NS.HTML);\n            p.headElement = p.openElements.current;\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        default: {\n            tokenBeforeHead(p, token);\n        }\n    }\n}\nfunction endTagBeforeHead(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenBeforeHead(p, token);\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenBeforeHead(p, token) {\n    p._insertFakeElement(TN.HEAD, $.HEAD);\n    p.headElement = p.openElements.current;\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TITLE: {\n            p._switchToTextParsing(token, TokenizerMode.RCDATA);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            }\n            else {\n                p._insertElement(token, NS.HTML);\n                p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n            }\n            break;\n        }\n        case $.NOFRAMES:\n        case $.STYLE: {\n            p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            break;\n        }\n        case $.SCRIPT: {\n            p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n            break;\n        }\n        case $.TEMPLATE: {\n            p._insertTemplate(token);\n            p.activeFormattingElements.insertMarker();\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_TEMPLATE;\n            p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenInHead(p, token);\n        }\n    }\n}\nfunction endTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HEAD: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.AFTER_HEAD;\n            break;\n        }\n        case $.BODY:\n        case $.BR:\n        case $.HTML: {\n            tokenInHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction templateEndTagInHead(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.generateImpliedEndTagsThoroughly();\n        if (p.openElements.currentTagId !== $.TEMPLATE) {\n            p._err(token, ERR.closingOfElementWithOpenChildElements);\n        }\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenInHead(p, token) {\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.AFTER_HEAD;\n    p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.HEAD:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.STYLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            p._err(token, ERR.nestedNoscriptInHead);\n            break;\n        }\n        default: {\n            tokenInHeadNoScript(p, token);\n        }\n    }\n}\nfunction endTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.NOSCRIPT: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        case $.BR: {\n            tokenInHeadNoScript(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenInHeadNoScript(p, token) {\n    const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n    p._err(token, errCode);\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BODY: {\n            p._insertElement(token, NS.HTML);\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_BODY;\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_FRAMESET;\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            p._err(token, ERR.abandonedHeadElementChild);\n            p.openElements.push(p.headElement, $.HEAD);\n            startTagInHead(p, token);\n            p.openElements.remove(p.headElement);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenAfterHead(p, token);\n        }\n    }\n}\nfunction endTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.BODY:\n        case $.HTML:\n        case $.BR: {\n            tokenAfterHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenAfterHead(p, token) {\n    p._insertFakeElement(TN.BODY, $.BODY);\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n    switch (token.type) {\n        case TokenType.CHARACTER: {\n            characterInBody(p, token);\n            break;\n        }\n        case TokenType.WHITESPACE_CHARACTER: {\n            whitespaceCharacterInBody(p, token);\n            break;\n        }\n        case TokenType.COMMENT: {\n            appendComment(p, token);\n            break;\n        }\n        case TokenType.START_TAG: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TokenType.END_TAG: {\n            endTagInBody(p, token);\n            break;\n        }\n        case TokenType.EOF: {\n            eofInBody(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction whitespaceCharacterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n    if (p.openElements.tmplCount === 0) {\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n    }\n}\nfunction bodyStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (bodyElement && p.openElements.tmplCount === 0) {\n        p.framesetOk = false;\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n    }\n}\nfunction framesetStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (p.framesetOk && bodyElement) {\n        p.treeAdapter.detachNode(bodyElement);\n        p.openElements.popAllUpToHtmlElement();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.IN_FRAMESET;\n    }\n}\nfunction addressStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n        p.openElements.pop();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    if (!p.formElement || inTemplate) {\n        if (p.openElements.hasInButtonScope($.P)) {\n            p._closePElement();\n        }\n        p._insertElement(token, NS.HTML);\n        if (!inTemplate) {\n            p.formElement = p.openElements.current;\n        }\n    }\n}\nfunction listItemStartTagInBody(p, token) {\n    p.framesetOk = false;\n    const tn = token.tagID;\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const elementId = p.openElements.tagIDs[i];\n        if ((tn === $.LI && elementId === $.LI) ||\n            ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n            p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n            p.openElements.popUntilTagNamePopped(elementId);\n            break;\n        }\n        if (elementId !== $.ADDRESS &&\n            elementId !== $.DIV &&\n            elementId !== $.P &&\n            p._isSpecialElement(p.openElements.items[i], elementId)) {\n            break;\n        }\n    }\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BUTTON)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped($.BUTTON);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n    const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n    if (activeElementEntry) {\n        callAdoptionAgency(p, token);\n        p.openElements.remove(activeElementEntry.element);\n        p.activeFormattingElements.removeEntry(activeElementEntry);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    if (p.openElements.hasInScope($.NOBR)) {\n        callAdoptionAgency(p, token);\n        p._reconstructActiveFormattingElements();\n    }\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.insertMarker();\n    p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n    if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n    const inputType = getTokenAttr(token, ATTRS.TYPE);\n    return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    if (!isHiddenInput(token)) {\n        p.framesetOk = false;\n    }\n    token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n    p._appendElement(token, NS.HTML);\n    token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n    token.tagName = TN.IMG;\n    token.tagID = $.IMG;\n    areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.tokenizer.state = TokenizerMode.RCDATA;\n    p.originalInsertionMode = p.insertionMode;\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._reconstructActiveFormattingElements();\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode =\n        p.insertionMode === InsertionMode.IN_TABLE ||\n            p.insertionMode === InsertionMode.IN_CAPTION ||\n            p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n            p.insertionMode === InsertionMode.IN_ROW ||\n            p.insertionMode === InsertionMode.IN_CELL\n            ? InsertionMode.IN_SELECT_IN_TABLE\n            : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n    if (p.openElements.currentTagId === $.OPTION) {\n        p.openElements.pop();\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTags();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenMathMLAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.MATHML);\n    }\n    else {\n        p._insertElement(token, NS.MATHML);\n    }\n    token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenSVGAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.SVG);\n    }\n    else {\n        p._insertElement(token, NS.SVG);\n    }\n    token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.I:\n        case $.S:\n        case $.B:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            bStartTagInBody(p, token);\n            break;\n        }\n        case $.A: {\n            aStartTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderStartTagInBody(p, token);\n            break;\n        }\n        case $.P:\n        case $.DL:\n        case $.OL:\n        case $.UL:\n        case $.DIV:\n        case $.DIR:\n        case $.NAV:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.DETAILS:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.SEARCH:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressStartTagInBody(p, token);\n            break;\n        }\n        case $.LI:\n        case $.DD:\n        case $.DT: {\n            listItemStartTagInBody(p, token);\n            break;\n        }\n        case $.BR:\n        case $.IMG:\n        case $.WBR:\n        case $.AREA:\n        case $.EMBED:\n        case $.KEYGEN: {\n            areaStartTagInBody(p, token);\n            break;\n        }\n        case $.HR: {\n            hrStartTagInBody(p, token);\n            break;\n        }\n        case $.RB:\n        case $.RTC: {\n            rbStartTagInBody(p, token);\n            break;\n        }\n        case $.RT:\n        case $.RP: {\n            rtStartTagInBody(p, token);\n            break;\n        }\n        case $.PRE:\n        case $.LISTING: {\n            preStartTagInBody(p, token);\n            break;\n        }\n        case $.XMP: {\n            xmpStartTagInBody(p, token);\n            break;\n        }\n        case $.SVG: {\n            svgStartTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlStartTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.LINK:\n        case $.META:\n        case $.STYLE:\n        case $.TITLE:\n        case $.SCRIPT:\n        case $.BGSOUND:\n        case $.BASEFONT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.BODY: {\n            bodyStartTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInBody(p, token);\n            break;\n        }\n        case $.NOBR: {\n            nobrStartTagInBody(p, token);\n            break;\n        }\n        case $.MATH: {\n            mathStartTagInBody(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInBody(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInBody(p, token);\n            break;\n        }\n        case $.PARAM:\n        case $.TRACK:\n        case $.SOURCE: {\n            paramStartTagInBody(p, token);\n            break;\n        }\n        case $.IMAGE: {\n            imageStartTagInBody(p, token);\n            break;\n        }\n        case $.BUTTON: {\n            buttonStartTagInBody(p, token);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletStartTagInBody(p, token);\n            break;\n        }\n        case $.IFRAME: {\n            iframeStartTagInBody(p, token);\n            break;\n        }\n        case $.SELECT: {\n            selectStartTagInBody(p, token);\n            break;\n        }\n        case $.OPTION:\n        case $.OPTGROUP: {\n            optgroupStartTagInBody(p, token);\n            break;\n        }\n        case $.NOEMBED:\n        case $.NOFRAMES: {\n            rawTextStartTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            framesetStartTagInBody(p, token);\n            break;\n        }\n        case $.TEXTAREA: {\n            textareaStartTagInBody(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                rawTextStartTagInBody(p, token);\n            }\n            else {\n                genericStartTagInBody(p, token);\n            }\n            break;\n        }\n        case $.PLAINTEXT: {\n            plaintextStartTagInBody(p, token);\n            break;\n        }\n        case $.COL:\n        case $.TH:\n        case $.TD:\n        case $.TR:\n        case $.HEAD:\n        case $.FRAME:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.CAPTION:\n        case $.COLGROUP: {\n            // Ignore token\n            break;\n        }\n        default: {\n            genericStartTagInBody(p, token);\n        }\n    }\n}\nfunction bodyEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        //NOTE: <body> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo) {\n            const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n            if (bodyElement) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n}\nfunction htmlEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        endTagAfterBody(p, token);\n    }\n}\nfunction addressEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction formEndTagInBody(p) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    const { formElement } = p;\n    if (!inTemplate) {\n        p.formElement = null;\n    }\n    if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n        p.openElements.generateImpliedEndTags();\n        if (inTemplate) {\n            p.openElements.popUntilTagNamePopped($.FORM);\n        }\n        else if (formElement) {\n            p.openElements.remove(formElement);\n        }\n    }\n}\nfunction pEndTagInBody(p) {\n    if (!p.openElements.hasInButtonScope($.P)) {\n        p._insertFakeElement(TN.P, $.P);\n    }\n    p._closePElement();\n}\nfunction liEndTagInBody(p) {\n    if (p.openElements.hasInListItemScope($.LI)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n        p.openElements.popUntilTagNamePopped($.LI);\n    }\n}\nfunction ddEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction numberedHeaderEndTagInBody(p) {\n    if (p.openElements.hasNumberedHeaderInScope()) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilNumberedHeaderPopped();\n    }\n}\nfunction appletEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n        p.activeFormattingElements.clearToLastMarker();\n    }\n}\nfunction brEndTagInBody(p) {\n    p._reconstructActiveFormattingElements();\n    p._insertFakeElement(TN.BR, $.BR);\n    p.openElements.pop();\n    p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n    const tn = token.tagName;\n    const tid = token.tagID;\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        const elementId = p.openElements.tagIDs[i];\n        // Compare the tag name here, as the tag might not be a known tag with an ID.\n        if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n            p.openElements.generateImpliedEndTagsWithExclusion(tid);\n            if (p.openElements.stackTop >= i)\n                p.openElements.shortenToLength(i);\n            break;\n        }\n        if (p._isSpecialElement(element, elementId)) {\n            break;\n        }\n    }\n}\nfunction endTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.A:\n        case $.B:\n        case $.I:\n        case $.S:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.NOBR:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            callAdoptionAgency(p, token);\n            break;\n        }\n        case $.P: {\n            pEndTagInBody(p);\n            break;\n        }\n        case $.DL:\n        case $.UL:\n        case $.OL:\n        case $.DIR:\n        case $.DIV:\n        case $.NAV:\n        case $.PRE:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.BUTTON:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.DETAILS:\n        case $.SEARCH:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.LISTING:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressEndTagInBody(p, token);\n            break;\n        }\n        case $.LI: {\n            liEndTagInBody(p);\n            break;\n        }\n        case $.DD:\n        case $.DT: {\n            ddEndTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderEndTagInBody(p);\n            break;\n        }\n        case $.BR: {\n            brEndTagInBody(p);\n            break;\n        }\n        case $.BODY: {\n            bodyEndTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlEndTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formEndTagInBody(p);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletEndTagInBody(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            genericEndTagInBody(p, token);\n        }\n    }\n}\nfunction eofInBody(p, token) {\n    if (p.tmplInsertionModeStack.length > 0) {\n        eofInTemplate(p, token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n    var _a;\n    if (token.tagID === $.SCRIPT) {\n        (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n    }\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n    p._err(token, ERR.eofInElementThatCanContainOnlyText);\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n    p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n    if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n        p.pendingCharacterTokens.length = 0;\n        p.hasNonWhitespacePendingCharacterToken = false;\n        p.originalInsertionMode = p.insertionMode;\n        p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                characterInTableText(p, token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                whitespaceCharacterInTableText(p, token);\n                break;\n            }\n            // Ignore null\n        }\n    }\n    else {\n        tokenInTable(p, token);\n    }\n}\nfunction captionStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p.activeFormattingElements.insertMarker();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n    startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.TBODY, $.TBODY);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n    startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n    if (p.openElements.hasInTableScope($.TABLE)) {\n        p.openElements.popUntilTagNamePopped($.TABLE);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n}\nfunction inputStartTagInTable(p, token) {\n    if (isHiddenInput(token)) {\n        p._appendElement(token, NS.HTML);\n    }\n    else {\n        tokenInTable(p, token);\n    }\n    token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n    if (!p.formElement && p.openElements.tmplCount === 0) {\n        p._insertElement(token, NS.HTML);\n        p.formElement = p.openElements.current;\n        p.openElements.pop();\n    }\n}\nfunction startTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            tdStartTagInTable(p, token);\n            break;\n        }\n        case $.STYLE:\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            colStartTagInTable(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInTable(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInTable(p, token);\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            tbodyStartTagInTable(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInTable(p, token);\n            break;\n        }\n        case $.CAPTION: {\n            captionStartTagInTable(p, token);\n            break;\n        }\n        case $.COLGROUP: {\n            colgroupStartTagInTable(p, token);\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction endTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TABLE)) {\n                p.openElements.popUntilTagNamePopped($.TABLE);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction tokenInTable(p, token) {\n    const savedFosterParentingState = p.fosterParentingEnabled;\n    p.fosterParentingEnabled = true;\n    // Process token in `In Body` mode\n    modeInBody(p, token);\n    p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n    p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n    let i = 0;\n    if (p.hasNonWhitespacePendingCharacterToken) {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            tokenInTable(p, p.pendingCharacterTokens[i]);\n        }\n    }\n    else {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            p._insertCharacters(p.pendingCharacterTokens[i]);\n        }\n    }\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCaption(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.CAPTION:\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.CAPTION)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped($.CAPTION);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                if (tn === $.TABLE) {\n                    endTagInTable(p, token);\n                }\n            }\n            break;\n        }\n        case $.BODY:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.COL: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction endTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.COLGROUP: {\n            if (p.openElements.currentTagId === $.COLGROUP) {\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction tokenInColumnGroup(p, token) {\n    if (p.openElements.currentTagId === $.COLGROUP) {\n        p.openElements.pop();\n        p.insertionMode = InsertionMode.IN_TABLE;\n        p._processToken(token);\n    }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_ROW;\n            break;\n        }\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertFakeElement(TN.TR, $.TR);\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                startTagInTable(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInTableBody(p, token) {\n    const tn = token.tagID;\n    switch (token.tagID) {\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                endTagInTable(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableRowContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_CELL;\n            p.activeFormattingElements.insertMarker();\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                startTagInTableBody(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH: {\n            // Ignore end tag\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n            p._closeTableCell();\n            startTagInRow(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCell(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.TD:\n        case $.TH: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped(tn);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_ROW;\n            }\n            break;\n        }\n        case $.TABLE:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p._closeTableCell();\n                endTagInRow(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.OPTGROUP: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.HR: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.INPUT:\n        case $.KEYGEN:\n        case $.TEXTAREA:\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n                if (token.tagID !== $.SELECT) {\n                    p._processStartTag(token);\n                }\n            }\n            break;\n        }\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.OPTGROUP: {\n            if (p.openElements.stackTop > 0 &&\n                p.openElements.currentTagId === $.OPTION &&\n                p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n    else {\n        startTagInSelect(p, token);\n    }\n}\nfunction endTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n            p.onEndTag(token);\n        }\n    }\n    else {\n        endTagInSelect(p, token);\n    }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n    switch (token.tagID) {\n        // First, handle tags that can start without a mode change\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        // Re-process the token in the appropriate mode\n        case $.CAPTION:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n            break;\n        }\n        case $.COL: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n            p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n            startTagInColumnGroup(p, token);\n            break;\n        }\n        case $.TR: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n            p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            startTagInTableBody(p, token);\n            break;\n        }\n        case $.TD:\n        case $.TH: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        default: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n            p.insertionMode = InsertionMode.IN_BODY;\n            startTagInBody(p, token);\n        }\n    }\n}\nfunction endTagInTemplate(p, token) {\n    if (token.tagID === $.TEMPLATE) {\n        templateEndTagInHead(p, token);\n    }\n}\nfunction eofInTemplate(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n        p.onEof(token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction endTagAfterBody(p, token) {\n    var _a;\n    if (token.tagID === $.HTML) {\n        if (!p.fragmentContext) {\n            p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n        }\n        //NOTE: <html> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n            p._setEndLocation(p.openElements.items[0], token);\n            // Update the body element, if it doesn't have an end tag\n            const bodyElement = p.openElements.items[1];\n            if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction tokenAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.FRAME: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInFrameset(p, token) {\n    if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n        p.openElements.pop();\n        if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n            p.insertionMode = InsertionMode.AFTER_FRAMESET;\n        }\n    }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagAfterFrameset(p, token) {\n    if (token.tagID === $.HTML) {\n        p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n    }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterAfterBody(p, token);\n    }\n}\nfunction tokenAfterAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n    token.chars = unicode.REPLACEMENT_CHARACTER;\n    p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n    while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n        p.openElements.currentTagId !== undefined &&\n        !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n        p.openElements.pop();\n    }\n}\nfunction startTagInForeignContent(p, token) {\n    if (foreignContent.causesExit(token)) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._startTagOutsideForeignContent(token);\n    }\n    else {\n        const current = p._getAdjustedCurrentElement();\n        const currentNs = p.treeAdapter.getNamespaceURI(current);\n        if (currentNs === NS.MATHML) {\n            foreignContent.adjustTokenMathMLAttrs(token);\n        }\n        else if (currentNs === NS.SVG) {\n            foreignContent.adjustTokenSVGTagName(token);\n            foreignContent.adjustTokenSVGAttrs(token);\n        }\n        foreignContent.adjustTokenXMLAttrs(token);\n        if (token.selfClosing) {\n            p._appendElement(token, currentNs);\n        }\n        else {\n            p._insertElement(token, currentNs);\n        }\n        token.ackSelfClosing = true;\n    }\n}\nfunction endTagInForeignContent(p, token) {\n    if (token.tagID === $.P || token.tagID === $.BR) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._endTagOutsideForeignContent(token);\n        return;\n    }\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n            p._endTagOutsideForeignContent(token);\n            break;\n        }\n        const tagName = p.treeAdapter.getTagName(element);\n        if (tagName.toLowerCase() === token.tagName) {\n            //NOTE: update the token tag name for `_setEndLocation`.\n            token.tagName = tagName;\n            p.openElements.shortenToLength(i);\n            break;\n        }\n    }\n}\n","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \"&quot;\"],\n    [38, \"&amp;\"],\n    [39, \"&apos;\"],\n    [60, \"&lt;\"],\n    [62, \"&gt;\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \"&quot;\"],\n    [38, \"&amp;\"],\n    [160, \"&nbsp;\"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&amp;\"],\n    [60, \"&lt;\"],\n    [62, \"&gt;\"],\n    [160, \"&nbsp;\"],\n]));\n//# sourceMappingURL=escape.js.map","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/escape';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n    $.AREA,\n    $.BASE,\n    $.BASEFONT,\n    $.BGSOUND,\n    $.BR,\n    $.COL,\n    $.EMBED,\n    $.FRAME,\n    $.HR,\n    $.IMG,\n    $.INPUT,\n    $.KEYGEN,\n    $.LINK,\n    $.META,\n    $.PARAM,\n    $.SOURCE,\n    $.TRACK,\n    $.WBR,\n]);\nfunction isVoidElement(node, options) {\n    return (options.treeAdapter.isElementNode(node) &&\n        options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n        VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    if (isVoidElement(node, opts)) {\n        return '';\n    }\n    return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n    let html = '';\n    // Get container of the child nodes\n    const container = options.treeAdapter.isElementNode(parentNode) &&\n        options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n        options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n        ? options.treeAdapter.getTemplateContent(parentNode)\n        : parentNode;\n    const childNodes = options.treeAdapter.getChildNodes(container);\n    if (childNodes) {\n        for (const currentNode of childNodes) {\n            html += serializeNode(currentNode, options);\n        }\n    }\n    return html;\n}\nfunction serializeNode(node, options) {\n    if (options.treeAdapter.isElementNode(node)) {\n        return serializeElement(node, options);\n    }\n    if (options.treeAdapter.isTextNode(node)) {\n        return serializeTextNode(node, options);\n    }\n    if (options.treeAdapter.isCommentNode(node)) {\n        return serializeCommentNode(node, options);\n    }\n    if (options.treeAdapter.isDocumentTypeNode(node)) {\n        return serializeDocumentTypeNode(node, options);\n    }\n    // Return an empty string for unknown nodes\n    return '';\n}\nfunction serializeElement(node, options) {\n    const tn = options.treeAdapter.getTagName(node);\n    return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n    let html = '';\n    for (const attr of treeAdapter.getAttrList(node)) {\n        html += ' ';\n        if (attr.namespace) {\n            switch (attr.namespace) {\n                case NS.XML: {\n                    html += `xml:${attr.name}`;\n                    break;\n                }\n                case NS.XMLNS: {\n                    if (attr.name !== 'xmlns') {\n                        html += 'xmlns:';\n                    }\n                    html += attr.name;\n                    break;\n                }\n                case NS.XLINK: {\n                    html += `xlink:${attr.name}`;\n                    break;\n                }\n                default: {\n                    html += `${attr.prefix}:${attr.name}`;\n                }\n            }\n        }\n        else {\n            html += attr.name;\n        }\n        html += `=\"${escapeAttribute(attr.value)}\"`;\n    }\n    return html;\n}\nfunction serializeTextNode(node, options) {\n    const { treeAdapter } = options;\n    const content = treeAdapter.getTextNodeContent(node);\n    const parent = treeAdapter.getParentNode(node);\n    const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n    return parentTn &&\n        treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n        hasUnescapedText(parentTn, options.scriptingEnabled)\n        ? content\n        : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n    return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n    return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n","import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n    return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n    if (typeof fragmentContext === 'string') {\n        options = html;\n        html = fragmentContext;\n        fragmentContext = null;\n    }\n    const parser = Parser.getFragmentParser(fragmentContext, options);\n    parser.tokenizer.write(html, true);\n    return parser.getFragment();\n}\n","\"use strict\";\nconst nodeTypes = require(\"../node-type\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\n// Serialization only requires a subset of the tree adapter interface.\n\n// Tree traversing\nexports.getFirstChild = node => node.firstChild;\n\nexports.getChildNodes = node => domSymbolTree.childrenToArray(node);\n\nexports.getParentNode = node => node.parentNode;\n\nexports.getAttrList = element => {\n  const attributeList = [...element._attributeList];\n\n  if (element._isValue && attributeList.every(attr => attr.name !== \"is\")) {\n    attributeList.unshift({\n      name: \"is\",\n      namespace: null,\n      prefix: null,\n      value: element._isValue\n    });\n  }\n\n  return attributeList;\n};\n\n// Node data\nexports.getTagName = element => element._qualifiedName; // https://github.com/inikulin/parse5/issues/231\n\nexports.getNamespaceURI = element => element.namespaceURI;\n\nexports.getTextNodeContent = exports.getCommentNodeContent = node => node.data;\n\nexports.getDocumentTypeNodeName = node => node.name;\n\nexports.getDocumentTypeNodePublicId = node => node.publicId;\n\nexports.getDocumentTypeNodeSystemId = node => node.systemId;\n\nexports.getTemplateContent = templateElement => templateElement._templateContents;\n\nexports.getDocumentMode = document => document._mode;\n\n// Node types\nexports.isTextNode = node => node.nodeType === nodeTypes.TEXT_NODE;\n\nexports.isCommentNode = node => node.nodeType === nodeTypes.COMMENT_NODE;\n\nexports.isDocumentTypeNode = node => node.nodeType === nodeTypes.DOCUMENT_TYPE_NODE;\n\nexports.isElementNode = node => node.nodeType === nodeTypes.ELEMENT_NODE;\n\n// Source code location\nexports.setNodeSourceCodeLocation = (node, location) => {\n  node.sourceCodeLocation = location;\n};\n\nexports.getNodeSourceCodeLocation = node => node.sourceCodeLocation;\n\nexports.updateNodeSourceCodeLocation = (node, endLocation) => {\n  Object.assign(node.sourceCodeLocation, endLocation);\n};\n","\"use strict\";\n\nconst parse5 = require(\"parse5\");\n\nconst { createElement } = require(\"../../living/helpers/create-element\");\nconst { HTML_NS } = require(\"../../living/helpers/namespaces\");\n\nconst DocumentType = require(\"../../../generated/idl/DocumentType\");\nconst DocumentFragment = require(\"../../../generated/idl/DocumentFragment\");\nconst Text = require(\"../../../generated/idl/Text\");\nconst Comment = require(\"../../../generated/idl/Comment\");\n\nconst attributes = require(\"../../living/attributes\");\nconst nodeTypes = require(\"../../living/node-type\");\n\nconst serializationAdapter = require(\"../../living/domparsing/parse5-adapter-serialization\");\nconst {\n  customElementReactionsStack, invokeCEReactions, lookupCEDefinition\n} = require(\"../../living/helpers/custom-elements\");\n\n\nclass JSDOMParse5Adapter {\n  constructor(documentImpl, options = {}) {\n    this._documentImpl = documentImpl;\n    this._globalObject = documentImpl._globalObject;\n    this._fragment = options.fragment || false;\n\n    // Since the createElement hook doesn't provide the parent element, we keep track of this using _currentElement:\n    // https://github.com/inikulin/parse5/issues/285.\n    this._currentElement = undefined;\n  }\n\n  _ownerDocument() {\n    const { _currentElement } = this;\n\n    // The _currentElement is undefined when parsing elements at the root of the document.\n    if (_currentElement) {\n      return _currentElement.localName === \"template\" && _currentElement.namespaceURI === HTML_NS ?\n        _currentElement.content._ownerDocument :\n        _currentElement._ownerDocument;\n    }\n\n    return this._documentImpl;\n  }\n\n  createDocument() {\n    // parse5's model assumes that parse(html) will call into here to create the new Document, then return it. However,\n    // jsdom's model assumes we can create a Window (and through that create an empty Document), do some other setup\n    // stuff, and then parse, stuffing nodes into that Document as we go. So to adapt between these two models, we just\n    // return the already-created Document when asked by parse5 to \"create\" a Document.\n    return this._documentImpl;\n  }\n\n  createDocumentFragment() {\n    const ownerDocument = this._ownerDocument();\n    return DocumentFragment.createImpl(this._globalObject, [], { ownerDocument });\n  }\n\n  // https://html.spec.whatwg.org/#create-an-element-for-the-token\n  createElement(localName, namespace, attrs) {\n    const ownerDocument = this._ownerDocument();\n\n    const isAttribute = attrs.find(attr => attr.name === \"is\");\n    const isValue = isAttribute ? isAttribute.value : null;\n\n    const definition = lookupCEDefinition(ownerDocument, namespace, localName);\n\n    let willExecuteScript = false;\n    if (definition !== null && !this._fragment) {\n      willExecuteScript = true;\n    }\n\n    if (willExecuteScript) {\n      ownerDocument._throwOnDynamicMarkupInsertionCounter++;\n      customElementReactionsStack.push([]);\n    }\n\n    const element = createElement(ownerDocument, localName, namespace, null, isValue, willExecuteScript);\n    this.adoptAttributes(element, attrs);\n\n    if (willExecuteScript) {\n      const queue = customElementReactionsStack.pop();\n      invokeCEReactions(queue);\n      ownerDocument._throwOnDynamicMarkupInsertionCounter--;\n    }\n\n    if (\"_parserInserted\" in element) {\n      element._parserInserted = true;\n    }\n\n    return element;\n  }\n\n  createCommentNode(data) {\n    const ownerDocument = this._ownerDocument();\n    return Comment.createImpl(this._globalObject, [], { data, ownerDocument });\n  }\n\n  appendChild(parentNode, newNode) {\n    parentNode._append(newNode);\n  }\n\n  insertBefore(parentNode, newNode, referenceNode) {\n    parentNode._insert(newNode, referenceNode);\n  }\n\n  setTemplateContent(templateElement, contentFragment) {\n    // This code makes the glue between jsdom and parse5 HTMLTemplateElement parsing:\n    //\n    // * jsdom during the construction of the HTMLTemplateElement (for example when create via\n    //   `document.createElement(\"template\")`), creates a DocumentFragment and set it into _templateContents.\n    // * parse5 when parsing a <template> tag creates an HTMLTemplateElement (`createElement` adapter hook) and also\n    //   create a DocumentFragment (`createDocumentFragment` adapter hook).\n    //\n    // At this point we now have to replace the one created in jsdom with one created by parse5.\n    const { _ownerDocument, _host } = templateElement._templateContents;\n    contentFragment._ownerDocument = _ownerDocument;\n    contentFragment._host = _host;\n\n    templateElement._templateContents = contentFragment;\n  }\n\n  setDocumentType(document, name, publicId, systemId) {\n    const ownerDocument = this._ownerDocument();\n    const documentType = DocumentType.createImpl(this._globalObject, [], { name, publicId, systemId, ownerDocument });\n\n    document._append(documentType);\n  }\n\n  setDocumentMode(document, mode) {\n    // TODO: the rest of jsdom ignores this\n    document._mode = mode;\n  }\n\n  detachNode(node) {\n    node.remove();\n  }\n\n  insertText(parentNode, text) {\n    const { lastChild } = parentNode;\n    if (lastChild && lastChild.nodeType === nodeTypes.TEXT_NODE) {\n      lastChild.data += text;\n    } else {\n      const ownerDocument = this._ownerDocument();\n      const textNode = Text.createImpl(this._globalObject, [], { data: text, ownerDocument });\n      parentNode._append(textNode);\n    }\n  }\n\n  insertTextBefore(parentNode, text, referenceNode) {\n    const { previousSibling } = referenceNode;\n    if (previousSibling && previousSibling.nodeType === nodeTypes.TEXT_NODE) {\n      previousSibling.data += text;\n    } else {\n      const ownerDocument = this._ownerDocument();\n      const textNode = Text.createImpl(this._globalObject, [], { data: text, ownerDocument });\n      parentNode._append(textNode, referenceNode);\n    }\n  }\n\n  adoptAttributes(element, attrs) {\n    for (const attr of attrs) {\n      const prefix = attr.prefix === \"\" ? null : attr.prefix;\n      attributes.setAttributeValue(element, attr.name, attr.value, prefix, attr.namespace);\n    }\n  }\n\n  onItemPush(after) {\n    this._currentElement = after;\n    after._pushedOnStackOfOpenElements?.();\n  }\n\n  onItemPop(before, newTop) {\n    this._currentElement = newTop;\n    before._poppedOffStackOfOpenElements?.();\n  }\n}\n\n// Assign shared adapters with serializer.\nObject.assign(JSDOMParse5Adapter.prototype, serializationAdapter);\n\nfunction parseFragment(markup, contextElement) {\n  const ownerDocument = contextElement.localName === \"template\" && contextElement.namespaceURI === HTML_NS ?\n    contextElement.content._ownerDocument :\n    contextElement._ownerDocument;\n\n  const config = {\n    ...ownerDocument._parseOptions,\n    sourceCodeLocationInfo: false,\n    treeAdapter: new JSDOMParse5Adapter(ownerDocument, { fragment: true })\n  };\n\n  return parse5.parseFragment(contextElement, markup, config);\n}\n\nfunction parseIntoDocument(markup, ownerDocument) {\n  const config = {\n    ...ownerDocument._parseOptions,\n    treeAdapter: new JSDOMParse5Adapter(ownerDocument)\n  };\n\n  return parse5.parse(markup, config);\n}\n\nmodule.exports = {\n  parseFragment,\n  parseIntoDocument\n};\n","\"use strict\";\n\nconst xmlParser = require(\"./xml\");\nconst htmlParser = require(\"./html\");\n\n// https://w3c.github.io/DOM-Parsing/#dfn-fragment-parsing-algorithm\nfunction parseFragment(markup, contextElement) {\n  const { _parsingMode } = contextElement._ownerDocument;\n\n  let parseAlgorithm;\n  if (_parsingMode === \"html\") {\n    parseAlgorithm = htmlParser.parseFragment;\n  } else if (_parsingMode === \"xml\") {\n    parseAlgorithm = xmlParser.parseFragment;\n  }\n\n  // Note: HTML and XML fragment parsing algorithm already return a document fragments; no need to do steps 3 and 4\n  return parseAlgorithm(markup, contextElement);\n}\n\nfunction parseIntoDocument(markup, ownerDocument) {\n  const { _parsingMode } = ownerDocument;\n\n  let parseAlgorithm;\n  if (_parsingMode === \"html\") {\n    parseAlgorithm = htmlParser.parseIntoDocument;\n  } else if (_parsingMode === \"xml\") {\n    parseAlgorithm = xmlParser.parseIntoDocument;\n  }\n\n  return parseAlgorithm(markup, ownerDocument);\n}\n\nmodule.exports = {\n  parseFragment,\n  parseIntoDocument\n};\n","\"use strict\";\n\nmodule.exports.NAMESPACES = {\n  HTML: \"http://www.w3.org/1999/xhtml\",\n  XML: \"http://www.w3.org/XML/1998/namespace\",\n  XMLNS: \"http://www.w3.org/2000/xmlns/\"\n};\n\nmodule.exports.NODE_TYPES = {\n  ELEMENT_NODE: 1,\n  ATTRIBUTE_NODE: 2, // historical\n  TEXT_NODE: 3,\n  CDATA_SECTION_NODE: 4,\n  ENTITY_REFERENCE_NODE: 5, // historical\n  ENTITY_NODE: 6, // historical\n  PROCESSING_INSTRUCTION_NODE: 7,\n  COMMENT_NODE: 8,\n  DOCUMENT_NODE: 9,\n  DOCUMENT_TYPE_NODE: 10,\n  DOCUMENT_FRAGMENT_NODE: 11,\n  NOTATION_NODE: 12 // historical\n};\n\nmodule.exports.VOID_ELEMENTS = new Set([\n  \"area\",\n  \"base\",\n  \"basefont\",\n  \"bgsound\",\n  \"br\",\n  \"col\",\n  \"embed\",\n  \"frame\",\n  \"hr\",\n  \"img\",\n  \"input\",\n  \"keygen\",\n  \"link\",\n  \"menuitem\",\n  \"meta\",\n  \"param\",\n  \"source\",\n  \"track\",\n  \"wbr\"\n]);\n","\"use strict\";\n\nconst xnv = require(\"xml-name-validator\");\n\nconst { NAMESPACES } = require(\"./constants\");\n\nfunction generatePrefix(map, newNamespace, prefixIndex) {\n  const generatedPrefix = `ns${prefixIndex}`;\n  map[newNamespace] = [generatedPrefix];\n  return generatedPrefix;\n}\n\nfunction preferredPrefixString(map, ns, preferredPrefix) {\n  const candidateList = map[ns];\n  if (!candidateList) {\n    return null;\n  }\n  if (candidateList.includes(preferredPrefix)) {\n    return preferredPrefix;\n  }\n  return candidateList[candidateList.length - 1];\n}\n\nfunction serializeAttributeValue(value/* , requireWellFormed*/) {\n  if (value === null) {\n    return \"\";\n  }\n  // TODO: Check well-formedness\n  return value\n    .replace(/&/ug, \"&amp;\")\n    .replace(/\"/ug, \"&quot;\")\n    .replace(/</ug, \"&lt;\")\n    .replace(/>/ug, \"&gt;\")\n    .replace(/\\t/ug, \"&#x9;\")\n    .replace(/\\n/ug, \"&#xA;\")\n    .replace(/\\r/ug, \"&#xD;\");\n}\n\nfunction serializeAttributes(\n  element,\n  map,\n  localPrefixes,\n  ignoreNamespaceDefAttr,\n  requireWellFormed,\n  refs\n) {\n  let result = \"\";\n  const namespaceLocalnames = Object.create(null);\n  for (const attr of element.attributes) {\n    if (\n      requireWellFormed &&\n      namespaceLocalnames[attr.namespaceURI] &&\n      namespaceLocalnames[attr.namespaceURI].has(attr.localName)\n    ) {\n      throw new Error(\"Found duplicated attribute\");\n    }\n    if (!namespaceLocalnames[attr.namespaceURI]) {\n      namespaceLocalnames[attr.namespaceURI] = new Set();\n    }\n    namespaceLocalnames[attr.namespaceURI].add(attr.localName);\n    const attributeNamespace = attr.namespaceURI;\n    let candidatePrefix = null;\n    if (attributeNamespace !== null) {\n      candidatePrefix = preferredPrefixString(\n        map,\n        attributeNamespace,\n        attr.prefix\n      );\n      if (attributeNamespace === NAMESPACES.XMLNS) {\n        if (\n          attr.value === NAMESPACES.XML ||\n          (attr.prefix === null && ignoreNamespaceDefAttr) ||\n          (attr.prefix !== null &&\n            localPrefixes[attr.localName] !== attr.value &&\n            map[attr.value].includes(attr.localName))\n        ) {\n          continue;\n        }\n        if (requireWellFormed && attr.value === NAMESPACES.XMLNS) {\n          throw new Error(\n            \"The XMLNS namespace is reserved and cannot be applied as an element's namespace via XML parsing\"\n          );\n        }\n        if (requireWellFormed && attr.value === \"\") {\n          throw new Error(\n            \"Namespace prefix declarations cannot be used to undeclare a namespace\"\n          );\n        }\n        if (attr.prefix === \"xmlns\") {\n          candidatePrefix = \"xmlns\";\n        }\n      } else if (candidatePrefix === null) {\n        candidatePrefix = generatePrefix(\n          map,\n          attributeNamespace,\n          refs.prefixIndex++\n        );\n        result += ` xmlns:${candidatePrefix}=\"${serializeAttributeValue(\n          attributeNamespace,\n          requireWellFormed\n        )}\"`;\n      }\n    }\n\n    result += \" \";\n    if (candidatePrefix !== null) {\n      result += `${candidatePrefix}:`;\n    }\n    if (\n      requireWellFormed &&\n      (attr.localName.includes(\":\") ||\n        !xnv.name(attr.localName) ||\n        (attr.localName === \"xmlns\" && attributeNamespace === null))\n    ) {\n      throw new Error(\"Invalid attribute localName value\");\n    }\n    result += `${attr.localName}=\"${serializeAttributeValue(attr.value, requireWellFormed)}\"`;\n  }\n  return result;\n}\n\nmodule.exports.preferredPrefixString = preferredPrefixString;\nmodule.exports.generatePrefix = generatePrefix;\nmodule.exports.serializeAttributeValue = serializeAttributeValue;\nmodule.exports.serializeAttributes = serializeAttributes;\n","\"use strict\";\n\nconst xnv = require(\"xml-name-validator\");\n\nconst attributeUtils = require(\"./attributes\");\nconst { NAMESPACES, VOID_ELEMENTS, NODE_TYPES } = require(\"./constants\");\n\nconst XML_CHAR = /^(\\x09|\\x0A|\\x0D|[\\x20-\\uD7FF]|[\\uE000-\\uFFFD]|[\\u{10000}-\\u{10FFFF}])*$/u;\nconst PUBID_CHAR = /^(\\x20|\\x0D|\\x0A|[a-zA-Z0-9]|[-'()+,./:=?;!*#@$_%])*$/u;\n\nfunction asciiCaseInsensitiveMatch(a, b) {\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (let i = 0; i < a.length; ++i) {\n    if ((a.charCodeAt(i) | 32) !== (b.charCodeAt(i) | 32)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction recordNamespaceInformation(element, map, prefixMap) {\n  let defaultNamespaceAttrValue = null;\n  for (let i = 0; i < element.attributes.length; ++i) {\n    const attr = element.attributes[i];\n    if (attr.namespaceURI === NAMESPACES.XMLNS) {\n      if (attr.prefix === null) {\n        defaultNamespaceAttrValue = attr.value;\n        continue;\n      }\n      let namespaceDefinition = attr.value;\n      if (namespaceDefinition === NAMESPACES.XML) {\n        continue;\n      }\n      // This is exactly the other way than the spec says, but that's intended.\n      // All the maps coalesce null to the empty string (explained in the\n      // spec), so instead of doing that every time, just do it once here.\n      if (namespaceDefinition === null) {\n        namespaceDefinition = \"\";\n      }\n\n      if (\n        namespaceDefinition in map &&\n        map[namespaceDefinition].includes(attr.localName)\n      ) {\n        continue;\n      }\n      if (!(namespaceDefinition in map)) {\n        map[namespaceDefinition] = [];\n      }\n      map[namespaceDefinition].push(attr.localName);\n      prefixMap[attr.localName] = namespaceDefinition;\n    }\n  }\n  return defaultNamespaceAttrValue;\n}\n\nfunction serializeDocumentType(node, namespace, prefixMap, requireWellFormed) {\n  if (requireWellFormed && !PUBID_CHAR.test(node.publicId)) {\n    throw new Error(\"Failed to serialize XML: document type node publicId is not well-formed.\");\n  }\n\n  if (\n    requireWellFormed &&\n    (!XML_CHAR.test(node.systemId) ||\n      (node.systemId.includes('\"') && node.systemId.includes(\"'\")))\n  ) {\n    throw new Error(\"Failed to serialize XML: document type node systemId is not well-formed.\");\n  }\n\n  let markup = `<!DOCTYPE ${node.name}`;\n  if (node.publicId !== \"\") {\n    markup += ` PUBLIC \"${node.publicId}\"`;\n  } else if (node.systemId !== \"\") {\n    markup += \" SYSTEM\";\n  }\n  if (node.systemId !== \"\") {\n    markup += ` \"${node.systemId}\"`;\n  }\n  return `${markup}>`;\n}\n\nfunction serializeProcessingInstruction(\n  node,\n  namespace,\n  prefixMap,\n  requireWellFormed\n) {\n  if (\n    requireWellFormed &&\n    (node.target.includes(\":\") || asciiCaseInsensitiveMatch(node.target, \"xml\"))\n  ) {\n    throw new Error(\"Failed to serialize XML: processing instruction node target is not well-formed.\");\n  }\n  if (\n    requireWellFormed &&\n    (!XML_CHAR.test(node.data) || node.data.includes(\"?>\"))\n  ) {\n    throw new Error(\"Failed to serialize XML: processing instruction node data is not well-formed.\");\n  }\n  return `<?${node.target} ${node.data}?>`;\n}\n\nfunction serializeDocument(\n  node,\n  namespace,\n  prefixMap,\n  requireWellFormed,\n  refs\n) {\n  if (requireWellFormed && node.documentElement === null) {\n    throw new Error(\"Failed to serialize XML: document does not have a document element.\");\n  }\n  let serializedDocument = \"\";\n  for (const child of node.childNodes) {\n    serializedDocument += xmlSerialization(\n      child,\n      namespace,\n      prefixMap,\n      requireWellFormed,\n      refs\n    );\n  }\n  return serializedDocument;\n}\n\nfunction serializeDocumentFragment(\n  node,\n  namespace,\n  prefixMap,\n  requireWellFormed,\n  refs\n) {\n  let markup = \"\";\n  for (const child of node.childNodes) {\n    markup += xmlSerialization(\n      child,\n      namespace,\n      prefixMap,\n      requireWellFormed,\n      refs\n    );\n  }\n  return markup;\n}\n\nfunction serializeText(node, namespace, prefixMap, requireWellFormed) {\n  if (requireWellFormed && !XML_CHAR.test(node.data)) {\n    throw new Error(\"Failed to serialize XML: text node data is not well-formed.\");\n  }\n\n  return node.data\n    .replace(/&/ug, \"&amp;\")\n    .replace(/</ug, \"&lt;\")\n    .replace(/>/ug, \"&gt;\");\n}\n\nfunction serializeComment(node, namespace, prefixMap, requireWellFormed) {\n  if (requireWellFormed && !XML_CHAR.test(node.data)) {\n    throw new Error(\"Failed to serialize XML: comment node data is not well-formed.\");\n  }\n\n  if (\n    requireWellFormed &&\n    (node.data.includes(\"--\") || node.data.endsWith(\"-\"))\n  ) {\n    throw new Error(\"Failed to serialize XML: found hyphens in illegal places in comment node data.\");\n  }\n  return `<!--${node.data}-->`;\n}\n\nfunction serializeElement(node, namespace, prefixMap, requireWellFormed, refs) {\n  if (\n    requireWellFormed &&\n    (node.localName.includes(\":\") || !xnv.name(node.localName))\n  ) {\n    throw new Error(\"Failed to serialize XML: element node localName is not a valid XML name.\");\n  }\n  let markup = \"<\";\n  let qualifiedName = \"\";\n  let skipEndTag = false;\n  let ignoreNamespaceDefinitionAttr = false;\n  const map = { ...prefixMap };\n  const localPrefixesMap = Object.create(null);\n  const localDefaultNamespace = recordNamespaceInformation(\n    node,\n    map,\n    localPrefixesMap\n  );\n  let inheritedNs = namespace;\n  const ns = node.namespaceURI;\n  if (inheritedNs === ns) {\n    if (localDefaultNamespace !== null) {\n      ignoreNamespaceDefinitionAttr = true;\n    }\n    if (ns === NAMESPACES.XML) {\n      qualifiedName = `xml:${node.localName}`;\n    } else {\n      qualifiedName = node.localName;\n    }\n    markup += qualifiedName;\n  } else {\n    let { prefix } = node;\n    let candidatePrefix = attributeUtils.preferredPrefixString(map, ns, prefix);\n    if (prefix === \"xmlns\") {\n      if (requireWellFormed) {\n        throw new Error(\"Failed to serialize XML: element nodes can't have a prefix of \\\"xmlns\\\".\");\n      }\n      candidatePrefix = \"xmlns\";\n    }\n    if (candidatePrefix !== null) {\n      qualifiedName = `${candidatePrefix}:${node.localName}`;\n      if (\n        localDefaultNamespace !== null &&\n        localDefaultNamespace !== NAMESPACES.XML\n      ) {\n        inheritedNs =\n          localDefaultNamespace === \"\" ? null : localDefaultNamespace;\n      }\n      markup += qualifiedName;\n    } else if (prefix !== null) {\n      if (prefix in localPrefixesMap) {\n        prefix = attributeUtils.generatePrefix(map, ns, refs.prefixIndex++);\n      }\n      if (map[ns]) {\n        map[ns].push(prefix);\n      } else {\n        map[ns] = [prefix];\n      }\n      qualifiedName = `${prefix}:${node.localName}`;\n      markup += `${qualifiedName} xmlns:${prefix}=\"${attributeUtils.serializeAttributeValue(ns, requireWellFormed)}\"`;\n      if (localDefaultNamespace !== null) {\n        inheritedNs =\n          localDefaultNamespace === \"\" ? null : localDefaultNamespace;\n      }\n    } else if (localDefaultNamespace === null || localDefaultNamespace !== ns) {\n      ignoreNamespaceDefinitionAttr = true;\n      qualifiedName = node.localName;\n      inheritedNs = ns;\n      markup += `${qualifiedName} xmlns=\"${attributeUtils.serializeAttributeValue(ns, requireWellFormed)}\"`;\n    } else {\n      qualifiedName = node.localName;\n      inheritedNs = ns;\n      markup += qualifiedName;\n    }\n  }\n\n  markup += attributeUtils.serializeAttributes(\n    node,\n    map,\n    localPrefixesMap,\n    ignoreNamespaceDefinitionAttr,\n    requireWellFormed,\n    refs\n  );\n\n  if (\n    ns === NAMESPACES.HTML &&\n    node.childNodes.length === 0 &&\n    VOID_ELEMENTS.has(node.localName)\n  ) {\n    markup += \" /\";\n    skipEndTag = true;\n  } else if (ns !== NAMESPACES.HTML && node.childNodes.length === 0) {\n    markup += \"/\";\n    skipEndTag = true;\n  }\n  markup += \">\";\n  if (skipEndTag) {\n    return markup;\n  }\n\n  if (ns === NAMESPACES.HTML && node.localName === \"template\") {\n    markup += xmlSerialization(\n      node.content,\n      inheritedNs,\n      map,\n      requireWellFormed,\n      refs\n    );\n  } else {\n    for (const child of node.childNodes) {\n      markup += xmlSerialization(\n        child,\n        inheritedNs,\n        map,\n        requireWellFormed,\n        refs\n      );\n    }\n  }\n  markup += `</${qualifiedName}>`;\n  return markup;\n}\n\nfunction serializeCDATASection(node) {\n  return `<![CDATA[${node.data}]]>`;\n}\n\n/**\n * @param {{prefixIndex: number}} refs\n */\nfunction xmlSerialization(node, namespace, prefixMap, requireWellFormed, refs) {\n  switch (node.nodeType) {\n    case NODE_TYPES.ELEMENT_NODE:\n      return serializeElement(\n        node,\n        namespace,\n        prefixMap,\n        requireWellFormed,\n        refs\n      );\n    case NODE_TYPES.DOCUMENT_NODE:\n      return serializeDocument(\n        node,\n        namespace,\n        prefixMap,\n        requireWellFormed,\n        refs\n      );\n    case NODE_TYPES.COMMENT_NODE:\n      return serializeComment(node, namespace, prefixMap, requireWellFormed);\n    case NODE_TYPES.TEXT_NODE:\n      return serializeText(node, namespace, prefixMap, requireWellFormed);\n    case NODE_TYPES.DOCUMENT_FRAGMENT_NODE:\n      return serializeDocumentFragment(\n        node,\n        namespace,\n        prefixMap,\n        requireWellFormed,\n        refs\n      );\n    case NODE_TYPES.DOCUMENT_TYPE_NODE:\n      return serializeDocumentType(\n        node,\n        namespace,\n        prefixMap,\n        requireWellFormed\n      );\n    case NODE_TYPES.PROCESSING_INSTRUCTION_NODE:\n      return serializeProcessingInstruction(\n        node,\n        namespace,\n        prefixMap,\n        requireWellFormed\n      );\n    case NODE_TYPES.ATTRIBUTE_NODE:\n      return \"\";\n    case NODE_TYPES.CDATA_SECTION_NODE:\n      return serializeCDATASection(node);\n    default:\n      throw new TypeError(\"Failed to serialize XML: only Nodes can be serialized.\");\n  }\n}\n\nmodule.exports = (root, { requireWellFormed = false } = {}) => {\n  const namespacePrefixMap = Object.create(null);\n  namespacePrefixMap[\"http://www.w3.org/XML/1998/namespace\"] = [\"xml\"];\n  return xmlSerialization(root, null, namespacePrefixMap, requireWellFormed, {\n    prefixIndex: 1\n  });\n};\n","\"use strict\";\n\nconst produceXMLSerialization = require(\"w3c-xmlserializer\");\nconst parse5 = require(\"parse5\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst utils = require(\"../../../generated/idl/utils\");\nconst treeAdapter = require(\"./parse5-adapter-serialization\");\nconst NODE_TYPE = require(\"../node-type\");\n\nmodule.exports.fragmentSerialization = (node, { outer, requireWellFormed, globalObject }) => {\n  const contextDocument =\n    node.nodeType === NODE_TYPE.DOCUMENT_NODE ? node : node._ownerDocument;\n  if (contextDocument._parsingMode === \"html\") {\n    const config = {\n      ...contextDocument._parseOptions,\n      treeAdapter\n    };\n    return outer ? parse5.serializeOuter(node, config) : parse5.serialize(node, config);\n  }\n\n  const childNodes = outer ? [node] : domSymbolTree.childrenToArray(node);\n\n  try {\n    let serialized = \"\";\n    for (let i = 0; i < childNodes.length; ++i) {\n      serialized += produceXMLSerialization(\n        utils.wrapperForImpl(childNodes[i]),\n        { requireWellFormed }\n      );\n    }\n    return serialized;\n  } catch (e) {\n    throw DOMException.create(globalObject, [e.message, \"InvalidStateError\"]);\n  }\n};\n","\"use strict\";\n\nconst { parseFragment } = require(\"../../browser/parser\");\nconst { HTML_NS } = require(\"../helpers/namespaces.js\");\nconst { isShadowRoot } = require(\"../helpers/shadow-dom.js\");\nconst NODE_TYPE = require(\"../node-type.js\");\nconst { fragmentSerialization } = require(\"./serialization.js\");\n\n// https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin\nexports.implementation = class InnerHTMLImpl {\n  // https://w3c.github.io/DOM-Parsing/#dom-innerhtml-innerhtml\n  get innerHTML() {\n    return fragmentSerialization(this, {\n      outer: false,\n      requireWellFormed: true,\n      globalObject: this._globalObject\n    });\n  }\n  set innerHTML(markup) {\n    const contextElement = isShadowRoot(this) ? this.host : this;\n    const fragment = parseFragment(markup, contextElement);\n\n    let contextObject = this;\n    if (this.nodeType === NODE_TYPE.ELEMENT_NODE && this.localName === \"template\" && this.namespaceURI === HTML_NS) {\n      contextObject = this._templateContents;\n    }\n\n    contextObject._replaceAll(fragment);\n  }\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst OrderedSet = require(\"../helpers/ordered-set.js\");\nconst { asciiLowercase } = require(\"../helpers/strings.js\");\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\n\nconst { getAttributeValue, setAttributeValue, hasAttributeByName } = require(\"../attributes.js\");\n\nfunction validateTokens(globalObject, ...tokens) {\n  for (const token of tokens) {\n    if (token === \"\") {\n      throw DOMException.create(globalObject, [\"The token provided must not be empty.\", \"SyntaxError\"]);\n    }\n  }\n  for (const token of tokens) {\n    if (/[\\t\\n\\f\\r ]/.test(token)) {\n      throw DOMException.create(globalObject, [\n        \"The token provided contains HTML space characters, which are not valid in tokens.\",\n        \"InvalidCharacterError\"\n      ]);\n    }\n  }\n}\n\n// https://dom.spec.whatwg.org/#domtokenlist\nclass DOMTokenListImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n\n    // _syncWithElement() must always be called before any _tokenSet access.\n    this._tokenSet = new OrderedSet();\n    this._element = privateData.element;\n    this._attributeLocalName = privateData.attributeLocalName;\n    this._supportedTokens = privateData.supportedTokens;\n\n    // Needs synchronization with element if token set is to be accessed.\n    this._dirty = true;\n  }\n\n  attrModified() {\n    this._dirty = true;\n  }\n\n  _syncWithElement() {\n    if (!this._dirty) {\n      return;\n    }\n\n    const val = getAttributeValue(this._element, this._attributeLocalName);\n    if (val === null) {\n      this._tokenSet.empty();\n    } else {\n      this._tokenSet = OrderedSet.parse(val);\n    }\n\n    this._dirty = false;\n  }\n\n  _validationSteps(token) {\n    if (!this._supportedTokens) {\n      throw new TypeError(`${this._attributeLocalName} attribute has no supported tokens`);\n    }\n    const lowerToken = asciiLowercase(token);\n    return this._supportedTokens.has(lowerToken);\n  }\n\n  _updateSteps() {\n    if (!hasAttributeByName(this._element, this._attributeLocalName) && this._tokenSet.isEmpty()) {\n      return;\n    }\n    setAttributeValue(this._element, this._attributeLocalName, this._tokenSet.serialize());\n  }\n\n  _serializeSteps() {\n    return getAttributeValue(this._element, this._attributeLocalName);\n  }\n\n  // Used by other parts of jsdom\n  get tokenSet() {\n    this._syncWithElement();\n    return this._tokenSet;\n  }\n\n  get length() {\n    this._syncWithElement();\n    return this._tokenSet.size;\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    this._syncWithElement();\n    return this._tokenSet.keys();\n  }\n\n  item(index) {\n    this._syncWithElement();\n    if (index >= this._tokenSet.size) {\n      return null;\n    }\n    return this._tokenSet.get(index);\n  }\n\n  contains(token) {\n    this._syncWithElement();\n    return this._tokenSet.contains(token);\n  }\n\n  add(...tokens) {\n    for (const token of tokens) {\n      validateTokens(this._globalObject, token);\n    }\n    this._syncWithElement();\n    for (const token of tokens) {\n      this._tokenSet.append(token);\n    }\n    this._updateSteps();\n  }\n\n  remove(...tokens) {\n    for (const token of tokens) {\n      validateTokens(this._globalObject, token);\n    }\n    this._syncWithElement();\n    this._tokenSet.remove(...tokens);\n    this._updateSteps();\n  }\n\n  toggle(token, force = undefined) {\n    validateTokens(this._globalObject, token);\n    this._syncWithElement();\n    if (this._tokenSet.contains(token)) {\n      if (force === undefined || force === false) {\n        this._tokenSet.remove(token);\n        this._updateSteps();\n        return false;\n      }\n      return true;\n    }\n    if (force === undefined || force === true) {\n      this._tokenSet.append(token);\n      this._updateSteps();\n      return true;\n    }\n    return false;\n  }\n\n  replace(token, newToken) {\n    validateTokens(this._globalObject, token, newToken);\n    this._syncWithElement();\n    if (!this._tokenSet.contains(token)) {\n      return false;\n    }\n    this._tokenSet.replace(token, newToken);\n    this._updateSteps();\n    return true;\n  }\n\n  supports(token) {\n    return this._validationSteps(token);\n  }\n\n  get value() {\n    return this._serializeSteps();\n  }\n\n  set value(V) {\n    setAttributeValue(this._element, this._attributeLocalName, V);\n  }\n}\n\nexports.implementation = DOMTokenListImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DOMTokenList\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DOMTokenList'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DOMTokenList\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DOMTokenList {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of DOMTokenList.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'DOMTokenList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'DOMTokenList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].item(...args);\n    }\n\n    contains(token) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'contains' called on an object that is not a valid instance of DOMTokenList.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'contains' on 'DOMTokenList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'contains' on 'DOMTokenList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].contains(...args);\n    }\n\n    add() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'add' called on an object that is not a valid instance of DOMTokenList.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'add' on 'DOMTokenList': parameter \" + (i + 1),\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].add(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    remove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'remove' called on an object that is not a valid instance of DOMTokenList.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'remove' on 'DOMTokenList': parameter \" + (i + 1),\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].remove(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    toggle(token) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'toggle' called on an object that is not a valid instance of DOMTokenList.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'toggle' on 'DOMTokenList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'toggle' on 'DOMTokenList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'toggle' on 'DOMTokenList': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].toggle(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replace(token, newToken) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'replace' called on an object that is not a valid instance of DOMTokenList.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'replace' on 'DOMTokenList': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'replace' on 'DOMTokenList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'replace' on 'DOMTokenList': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].replace(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    supports(token) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'supports' called on an object that is not a valid instance of DOMTokenList.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'supports' on 'DOMTokenList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'supports' on 'DOMTokenList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].supports(...args);\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of DOMTokenList.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of DOMTokenList.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of DOMTokenList.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'DOMTokenList': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    toString() {\n      const esValue = this;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toString' called on an object that is not a valid instance of DOMTokenList.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(DOMTokenList.prototype, {\n    item: { enumerable: true },\n    contains: { enumerable: true },\n    add: { enumerable: true },\n    remove: { enumerable: true },\n    toggle: { enumerable: true },\n    replace: { enumerable: true },\n    supports: { enumerable: true },\n    length: { enumerable: true },\n    value: { enumerable: true },\n    toString: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DOMTokenList\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true },\n    keys: { value: globalObject.Array.prototype.keys, configurable: true, enumerable: true, writable: true },\n    values: { value: globalObject.Array.prototype.values, configurable: true, enumerable: true, writable: true },\n    entries: { value: globalObject.Array.prototype.entries, configurable: true, enumerable: true, writable: true },\n    forEach: { value: globalObject.Array.prototype.forEach, configurable: true, enumerable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = DOMTokenList;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DOMTokenList\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/DOMTokenList-impl.js\");\n","\"use strict\";\nconst NODE_TYPE = require(\"../node-type\");\nconst { nodeRoot } = require(\"../helpers/node\");\nconst { retarget } = require(\"../helpers/shadow-dom\");\n\nclass DocumentOrShadowRootImpl {\n  get activeElement() {\n    let candidate = this._ownerDocument._lastFocusedElement || this._ownerDocument.body;\n    if (!candidate) {\n      return null;\n    }\n    candidate = retarget(candidate, this);\n    if (nodeRoot(candidate) !== this) {\n      return null;\n    }\n    if (candidate.nodeType !== NODE_TYPE.DOCUMENT_NODE) {\n      return candidate;\n    }\n    if (candidate.body !== null) {\n      return candidate.body;\n    }\n    return candidate.documentElement;\n  }\n}\n\nmodule.exports = {\n  implementation: DocumentOrShadowRootImpl\n};\n","\"use strict\";\n\nconst { nodeRoot } = require(\"../helpers/node\");\nconst { mixin } = require(\"../../utils\");\n\nconst DocumentFragment = require(\"./DocumentFragment-impl\").implementation;\nconst DocumentOrShadowRootImpl = require(\"./DocumentOrShadowRoot-impl\").implementation;\nconst InnerHTMLImpl = require(\"../domparsing/InnerHTML-impl\").implementation;\n\nclass ShadowRootImpl extends DocumentFragment {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    const { mode } = privateData;\n    this._mode = mode;\n    this._availableToElementInternals = false;\n  }\n\n  _getTheParent(event) {\n    if (!event.composed && this === nodeRoot(event._path[0].item)) {\n      return null;\n    }\n\n    return this._host;\n  }\n\n  get mode() {\n    return this._mode;\n  }\n\n  get host() {\n    return this._host;\n  }\n}\n\nmixin(ShadowRootImpl.prototype, DocumentOrShadowRootImpl.prototype);\nmixin(ShadowRootImpl.prototype, InnerHTMLImpl.prototype);\n\nmodule.exports = {\n  implementation: ShadowRootImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst DocumentFragment = require(\"./DocumentFragment.js\");\n\nconst interfaceName = \"ShadowRoot\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'ShadowRoot'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"ShadowRoot\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  DocumentFragment._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class ShadowRoot extends globalObject.DocumentFragment {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get mode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get mode' called on an object that is not a valid instance of ShadowRoot.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"mode\"]);\n    }\n\n    get host() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get host' called on an object that is not a valid instance of ShadowRoot.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"host\"]);\n    }\n\n    get innerHTML() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get innerHTML' called on an object that is not a valid instance of ShadowRoot.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"innerHTML\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set innerHTML(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set innerHTML' called on an object that is not a valid instance of ShadowRoot.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'innerHTML' property on 'ShadowRoot': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"innerHTML\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get activeElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get activeElement' called on an object that is not a valid instance of ShadowRoot.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"activeElement\"]);\n    }\n  }\n  Object.defineProperties(ShadowRoot.prototype, {\n    mode: { enumerable: true },\n    host: { enumerable: true },\n    innerHTML: { enumerable: true },\n    activeElement: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"ShadowRoot\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = ShadowRoot;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: ShadowRoot\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/ShadowRoot-impl.js\");\n","\"use strict\";\nconst { HTML_NS } = require(\"../helpers/namespaces\");\nconst { mixin, memoizeQuery } = require(\"../../utils\");\nconst NodeImpl = require(\"./Node-impl\").implementation;\nconst ParentNodeImpl = require(\"./ParentNode-impl\").implementation;\nconst ChildNodeImpl = require(\"./ChildNode-impl\").implementation;\nconst attributes = require(\"../attributes\");\nconst windowProperties = require(\"../window-properties\");\nconst NODE_TYPE = require(\"../node-type\");\nconst { parseFragment } = require(\"../../browser/parser\");\nconst InnerHTMLImpl = require(\"../domparsing/InnerHTML-impl\").implementation;\nconst { fragmentSerialization } = require(\"../domparsing/serialization\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst DOMTokenList = require(\"../../../generated/idl/DOMTokenList\");\nconst NamedNodeMap = require(\"../../../generated/idl/NamedNodeMap\");\nconst validateNames = require(\"../helpers/validate-names\");\nconst { asciiLowercase, asciiUppercase } = require(\"../helpers/strings\");\nconst { listOfElementsWithQualifiedName, listOfElementsWithNamespaceAndLocalName,\n  listOfElementsWithClassNames } = require(\"../node\");\nconst SlotableMixinImpl = require(\"./Slotable-impl\").implementation;\nconst NonDocumentTypeChildNode = require(\"./NonDocumentTypeChildNode-impl\").implementation;\nconst ShadowRoot = require(\"../../../generated/idl/ShadowRoot\");\nconst Text = require(\"../../../generated/idl/Text\");\nconst { isValidHostElementName } = require(\"../helpers/shadow-dom\");\nconst { isValidCustomElementName, lookupCEDefinition } = require(\"../helpers/custom-elements\");\n\nclass ElementImpl extends NodeImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._initSlotableMixin();\n\n    this._namespaceURI = privateData.namespace;\n    this._prefix = privateData.prefix;\n    this._localName = privateData.localName;\n    this._ceState = privateData.ceState;\n    this._ceDefinition = privateData.ceDefinition;\n    this._isValue = privateData.isValue;\n\n    this._shadowRoot = null;\n    this._ceReactionQueue = [];\n\n    this.nodeType = NODE_TYPE.ELEMENT_NODE;\n    this.scrollTop = 0;\n    this.scrollLeft = 0;\n\n    this._attributeList = [];\n    // Used for caching.\n    this._attributesByNameMap = new Map();\n    this._attributes = null;\n\n    this._cachedTagName = null;\n  }\n\n  _attach() {\n    windowProperties.elementAttached(this);\n\n    const id = this.getAttributeNS(null, \"id\");\n    if (id) {\n      this._ownerDocument._byIdCache.add(id, this);\n    }\n\n    // If the element is initially in an HTML document but is later\n    // inserted in another type of document, the tagName should no\n    // longer be uppercase. Therefore the cached tagName is reset.\n    this._cachedTagName = null;\n    super._attach();\n  }\n\n  _detach() {\n    super._detach();\n\n    windowProperties.elementDetached(this);\n\n    const id = this.getAttributeNS(null, \"id\");\n    if (id) {\n      this._ownerDocument._byIdCache.delete(id, this);\n    }\n  }\n\n  _attrModified(name, value, oldValue) {\n    this._modified();\n\n    windowProperties.elementAttributeModified(this, name, value, oldValue);\n\n    if (name === \"id\" && this._attached) {\n      const cache = this._ownerDocument._byIdCache;\n      if (oldValue) {\n        cache.delete(oldValue, this);\n      }\n      if (value) {\n        cache.add(value, this);\n      }\n    }\n\n    // update classList\n    if (name === \"class\" && this._classList !== undefined) {\n      this._classList.attrModified();\n    }\n\n    // clear domSelector cached results on attribute change\n    this._ownerDocument._domSelector.clear();\n\n    this._attrModifiedSlotableMixin(name, value, oldValue);\n  }\n\n  get namespaceURI() {\n    return this._namespaceURI;\n  }\n  get prefix() {\n    return this._prefix;\n  }\n  get localName() {\n    return this._localName;\n  }\n  get _qualifiedName() {\n    return this._prefix !== null ? this._prefix + \":\" + this._localName : this._localName;\n  }\n  get tagName() {\n    // This getter can be a hotpath in getComputedStyle.\n    // All these are invariants during the instance lifetime so we can safely cache the computed tagName.\n    // We could create it during construction but since we already identified this as potentially slow we do it lazily.\n    if (this._cachedTagName === null) {\n      if (this._namespaceURI === HTML_NS && this._ownerDocument._parsingMode === \"html\") {\n        this._cachedTagName = asciiUppercase(this._qualifiedName);\n      } else {\n        this._cachedTagName = this._qualifiedName;\n      }\n    }\n    return this._cachedTagName;\n  }\n\n  get attributes() {\n    if (!this._attributes) {\n      this._attributes = NamedNodeMap.createImpl(this._globalObject, [], {\n        element: this\n      });\n    }\n\n    return this._attributes;\n  }\n\n  // https://w3c.github.io/DOM-Parsing/#dom-element-outerhtml\n  get outerHTML() {\n    return fragmentSerialization(this, {\n      outer: true,\n      requireWellFormed: true,\n      globalObject: this._globalObject\n    });\n  }\n  set outerHTML(markup) {\n    let parent = domSymbolTree.parent(this);\n    const document = this._ownerDocument;\n\n    if (!parent) {\n      return;\n    }\n\n    if (parent.nodeType === NODE_TYPE.DOCUMENT_NODE) {\n      throw DOMException.create(this._globalObject, [\n        \"Modifications are not allowed for this document\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n\n    if (parent.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE) {\n      parent = document.createElementNS(HTML_NS, \"body\");\n    }\n\n    const fragment = parseFragment(markup, parent);\n\n    const contextObjectParent = domSymbolTree.parent(this);\n    contextObjectParent._replace(fragment, this);\n  }\n\n  get classList() {\n    if (this._classList === undefined) {\n      this._classList = DOMTokenList.createImpl(this._globalObject, [], {\n        element: this,\n        attributeLocalName: \"class\"\n      });\n    }\n    return this._classList;\n  }\n\n  hasAttributes() {\n    return attributes.hasAttributes(this);\n  }\n\n  getAttributeNames() {\n    return attributes.attributeNames(this);\n  }\n\n  getAttribute(name) {\n    const attr = attributes.getAttributeByName(this, name);\n    if (!attr) {\n      return null;\n    }\n    return attr._value;\n  }\n\n  getAttributeNS(namespace, localName) {\n    const attr = attributes.getAttributeByNameNS(this, namespace, localName);\n    if (!attr) {\n      return null;\n    }\n    return attr._value;\n  }\n\n  setAttribute(name, value) {\n    validateNames.name(this._globalObject, name);\n\n    if (this._namespaceURI === HTML_NS && this._ownerDocument._parsingMode === \"html\") {\n      name = asciiLowercase(name);\n    }\n\n    const attribute = attributes.getAttributeByName(this, name);\n\n    if (attribute === null) {\n      const newAttr = this._ownerDocument._createAttribute({\n        localName: name,\n        value\n      });\n      attributes.appendAttribute(this, newAttr);\n      return;\n    }\n\n    attributes.changeAttribute(this, attribute, value);\n  }\n\n  setAttributeNS(namespace, name, value) {\n    const extracted = validateNames.validateAndExtract(this._globalObject, namespace, name);\n\n    // Because of widespread use of this method internally, e.g. to manually implement attribute/content reflection, we\n    // centralize the conversion to a string here, so that all call sites don't have to do it.\n    value = `${value}`;\n\n    attributes.setAttributeValue(this, extracted.localName, value, extracted.prefix, extracted.namespace);\n  }\n\n  removeAttribute(name) {\n    attributes.removeAttributeByName(this, name);\n  }\n\n  removeAttributeNS(namespace, localName) {\n    attributes.removeAttributeByNameNS(this, namespace, localName);\n  }\n\n  toggleAttribute(qualifiedName, force) {\n    validateNames.name(this._globalObject, qualifiedName);\n\n    if (this._namespaceURI === HTML_NS && this._ownerDocument._parsingMode === \"html\") {\n      qualifiedName = asciiLowercase(qualifiedName);\n    }\n\n    const attribute = attributes.getAttributeByName(this, qualifiedName);\n\n    if (attribute === null) {\n      if (force === undefined || force === true) {\n        const newAttr = this._ownerDocument._createAttribute({\n          localName: qualifiedName,\n          value: \"\"\n        });\n        attributes.appendAttribute(this, newAttr);\n        return true;\n      }\n      return false;\n    }\n\n    if (force === undefined || force === false) {\n      attributes.removeAttributeByName(this, qualifiedName);\n      return false;\n    }\n\n    return true;\n  }\n\n  hasAttribute(name) {\n    if (this._namespaceURI === HTML_NS && this._ownerDocument._parsingMode === \"html\") {\n      name = asciiLowercase(name);\n    }\n\n    return attributes.hasAttributeByName(this, name);\n  }\n\n  hasAttributeNS(namespace, localName) {\n    if (namespace === \"\") {\n      namespace = null;\n    }\n\n    return attributes.hasAttributeByNameNS(this, namespace, localName);\n  }\n\n  getAttributeNode(name) {\n    return attributes.getAttributeByName(this, name);\n  }\n\n  getAttributeNodeNS(namespace, localName) {\n    return attributes.getAttributeByNameNS(this, namespace, localName);\n  }\n\n  setAttributeNode(attr) {\n    // eslint-disable-next-line no-restricted-properties\n    return attributes.setAttribute(this, attr);\n  }\n\n  setAttributeNodeNS(attr) {\n    // eslint-disable-next-line no-restricted-properties\n    return attributes.setAttribute(this, attr);\n  }\n\n  removeAttributeNode(attr) {\n    // eslint-disable-next-line no-restricted-properties\n    if (!attributes.hasAttribute(this, attr)) {\n      throw DOMException.create(this._globalObject, [\n        \"Tried to remove an attribute that was not present\",\n        \"NotFoundError\"\n      ]);\n    }\n\n    // eslint-disable-next-line no-restricted-properties\n    attributes.removeAttribute(this, attr);\n\n    return attr;\n  }\n\n  getBoundingClientRect() {\n    return {\n      x: 0,\n      y: 0,\n      bottom: 0,\n      height: 0,\n      left: 0,\n      right: 0,\n      top: 0,\n      width: 0\n    };\n  }\n\n  getClientRects() {\n    return [];\n  }\n\n  get scrollWidth() {\n    return 0;\n  }\n\n  get scrollHeight() {\n    return 0;\n  }\n\n  get clientTop() {\n    return 0;\n  }\n\n  get clientLeft() {\n    return 0;\n  }\n\n  get clientWidth() {\n    return 0;\n  }\n\n  get clientHeight() {\n    return 0;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-element-attachshadow\n  attachShadow(init) {\n    const { _ownerDocument, _namespaceURI, _localName, _isValue } = this;\n\n    if (this.namespaceURI !== HTML_NS) {\n      throw DOMException.create(this._globalObject, [\n        \"This element does not support attachShadow. This element is not part of the HTML namespace.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    if (!isValidHostElementName(_localName) && !isValidCustomElementName(_localName)) {\n      const message = \"This element does not support attachShadow. This element is not a custom element nor \" +\n        \"a standard element supporting a shadow root.\";\n      throw DOMException.create(this._globalObject, [message, \"NotSupportedError\"]);\n    }\n\n    if (isValidCustomElementName(_localName) || _isValue) {\n      const definition = lookupCEDefinition(_ownerDocument, _namespaceURI, _localName, _isValue);\n\n      if (definition && definition.disableShadow) {\n        throw DOMException.create(this._globalObject, [\n          \"Shadow root cannot be create on a custom element with disabled shadow\",\n          \"NotSupportedError\"\n        ]);\n      }\n    }\n\n    if (this._shadowRoot !== null) {\n      throw DOMException.create(this._globalObject, [\n        \"Shadow root cannot be created on a host which already hosts a shadow tree.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    const shadow = ShadowRoot.createImpl(this._globalObject, [], {\n      ownerDocument: this.ownerDocument,\n      mode: init.mode,\n      host: this\n    });\n\n    if (this._ceState === \"precustomized\" || this._ceState === \"custom\") {\n      shadow._availableToElementInternals = true;\n    }\n\n    this._shadowRoot = shadow;\n\n    return shadow;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-element-shadowroot\n  get shadowRoot() {\n    const shadow = this._shadowRoot;\n\n    if (shadow === null || shadow.mode === \"closed\") {\n      return null;\n    }\n\n    return shadow;\n  }\n\n  // https://dom.spec.whatwg.org/#insert-adjacent\n  _insertAdjacent(element, where, node) {\n    where = asciiLowercase(where);\n\n    if (where === \"beforebegin\") {\n      if (element.parentNode === null) {\n        return null;\n      }\n      return element.parentNode._preInsert(node, element);\n    }\n    if (where === \"afterbegin\") {\n      return element._preInsert(node, element.firstChild);\n    }\n    if (where === \"beforeend\") {\n      return element._preInsert(node, null);\n    }\n    if (where === \"afterend\") {\n      if (element.parentNode === null) {\n        return null;\n      }\n      return element.parentNode._preInsert(node, element.nextSibling);\n    }\n\n    throw DOMException.create(this._globalObject, [\n      'Must provide one of \"beforebegin\", \"afterbegin\", \"beforeend\", or \"afterend\".',\n      \"SyntaxError\"\n    ]);\n  }\n\n  insertAdjacentElement(where, element) {\n    return this._insertAdjacent(this, where, element);\n  }\n\n  insertAdjacentText(where, data) {\n    const text = Text.createImpl(this._globalObject, [], { data, ownerDocument: this._ownerDocument });\n\n    this._insertAdjacent(this, where, text);\n  }\n\n  // https://w3c.github.io/DOM-Parsing/#dom-element-insertadjacenthtml\n  insertAdjacentHTML(position, text) {\n    position = asciiLowercase(position);\n\n    let context;\n    switch (position) {\n      case \"beforebegin\":\n      case \"afterend\": {\n        context = this.parentNode;\n        if (context === null || context.nodeType === NODE_TYPE.DOCUMENT_NODE) {\n          throw DOMException.create(this._globalObject, [\n            \"Cannot insert HTML adjacent to parent-less nodes or children of document nodes.\",\n            \"NoModificationAllowedError\"\n          ]);\n        }\n        break;\n      }\n      case \"afterbegin\":\n      case \"beforeend\": {\n        context = this;\n        break;\n      }\n      default: {\n        throw DOMException.create(this._globalObject, [\n          'Must provide one of \"beforebegin\", \"afterbegin\", \"beforeend\", or \"afterend\".',\n          \"SyntaxError\"\n        ]);\n      }\n    }\n\n    if (\n      context.nodeType !== NODE_TYPE.ELEMENT_NODE ||\n      (\n        context._ownerDocument._parsingMode === \"html\" &&\n        context._localName === \"html\" &&\n        context._namespaceURI === HTML_NS\n      )\n    ) {\n      context = context._ownerDocument.createElement(\"body\");\n    }\n\n    const fragment = parseFragment(text, context);\n\n    switch (position) {\n      case \"beforebegin\": {\n        this.parentNode._insert(fragment, this);\n        break;\n      }\n      case \"afterbegin\": {\n        this._insert(fragment, this.firstChild);\n        break;\n      }\n      case \"beforeend\": {\n        this._append(fragment);\n        break;\n      }\n      case \"afterend\": {\n        this.parentNode._insert(fragment, this.nextSibling);\n        break;\n      }\n    }\n  }\n\n  closest(selectors) {\n    const domSelector = this._ownerDocument._domSelector;\n    return domSelector.closest(selectors, this);\n  }\n\n  matches(selectors) {\n    const domSelector = this._ownerDocument._domSelector;\n    return domSelector.matches(selectors, this);\n  }\n\n  webkitMatchesSelector(selectors) {\n    return this.matches(selectors);\n  }\n\n  // https://html.spec.whatwg.org/#reflecting-content-attributes-in-idl-attributes\n  _reflectGetTheElement() {\n    return this;\n  }\n\n  _reflectGetTheContentAttribute(reflectedContentAttributeName) {\n    return this.getAttributeNS(null, reflectedContentAttributeName);\n  }\n\n  _reflectSetTheContentAttribute(reflectedContentAttributeName, value) {\n    this.setAttributeNS(null, reflectedContentAttributeName, value);\n  }\n\n  _reflectDeleteTheContentAttribute(reflectedContentAttributeName) {\n    this.removeAttributeNS(null, reflectedContentAttributeName);\n  }\n}\n\nmixin(ElementImpl.prototype, NonDocumentTypeChildNode.prototype);\nmixin(ElementImpl.prototype, ParentNodeImpl.prototype);\nmixin(ElementImpl.prototype, ChildNodeImpl.prototype);\nmixin(ElementImpl.prototype, SlotableMixinImpl.prototype);\nmixin(ElementImpl.prototype, InnerHTMLImpl.prototype);\n\nElementImpl.prototype.getElementsByTagName = memoizeQuery(function (qualifiedName) {\n  return listOfElementsWithQualifiedName(qualifiedName, this);\n});\n\nElementImpl.prototype.getElementsByTagNameNS = memoizeQuery(function (namespace, localName) {\n  return listOfElementsWithNamespaceAndLocalName(namespace, localName, this);\n});\n\nElementImpl.prototype.getElementsByClassName = memoizeQuery(function (classNames) {\n  return listOfElementsWithClassNames(classNames, this);\n});\n\nmodule.exports = {\n  implementation: ElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst Attr = require(\"./Attr.js\");\nconst ShadowRootInit = require(\"./ShadowRootInit.js\");\nconst Node = require(\"./Node.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Element\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Element'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Element\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Node._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Element extends globalObject.Node {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    hasAttributes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'hasAttributes' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol].hasAttributes();\n    }\n\n    getAttributeNames() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getAttributeNames' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getAttributeNames());\n    }\n\n    getAttribute(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'getAttribute' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getAttribute' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getAttribute' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getAttribute(...args);\n    }\n\n    getAttributeNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getAttributeNS' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getAttributeNS' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'getAttributeNS' on 'Element': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getAttributeNS' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getAttributeNS(...args);\n    }\n\n    setAttribute(qualifiedName, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setAttribute' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setAttribute' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setAttribute' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setAttribute' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].setAttribute(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    setAttributeNS(namespace, qualifiedName, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setAttributeNS' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 3) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setAttributeNS' on 'Element': 3 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'setAttributeNS' on 'Element': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setAttributeNS' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setAttributeNS' on 'Element': parameter 3\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].setAttributeNS(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    removeAttribute(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeAttribute' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeAttribute' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'removeAttribute' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].removeAttribute(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    removeAttributeNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeAttributeNS' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeAttributeNS' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'removeAttributeNS' on 'Element': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'removeAttributeNS' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].removeAttributeNS(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    toggleAttribute(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toggleAttribute' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'toggleAttribute' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'toggleAttribute' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'toggleAttribute' on 'Element': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].toggleAttribute(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    hasAttribute(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'hasAttribute' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'hasAttribute' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'hasAttribute' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].hasAttribute(...args);\n    }\n\n    hasAttributeNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'hasAttributeNS' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'hasAttributeNS' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'hasAttributeNS' on 'Element': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'hasAttributeNS' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].hasAttributeNS(...args);\n    }\n\n    getAttributeNode(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getAttributeNode' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getAttributeNode' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getAttributeNode' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getAttributeNode(...args));\n    }\n\n    getAttributeNodeNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getAttributeNodeNS' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getAttributeNodeNS' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'getAttributeNodeNS' on 'Element': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getAttributeNodeNS' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getAttributeNodeNS(...args));\n    }\n\n    setAttributeNode(attr) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setAttributeNode' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setAttributeNode' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Attr.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setAttributeNode' on 'Element': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].setAttributeNode(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    setAttributeNodeNS(attr) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setAttributeNodeNS' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setAttributeNodeNS' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Attr.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setAttributeNodeNS' on 'Element': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].setAttributeNodeNS(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    removeAttributeNode(attr) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeAttributeNode' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeAttributeNode' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Attr.convert(globalObject, curArg, {\n          context: \"Failed to execute 'removeAttributeNode' on 'Element': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].removeAttributeNode(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    attachShadow(init) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'attachShadow' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'attachShadow' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = ShadowRootInit.convert(globalObject, curArg, {\n          context: \"Failed to execute 'attachShadow' on 'Element': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].attachShadow(...args));\n    }\n\n    closest(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'closest' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'closest' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'closest' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].closest(...args));\n    }\n\n    matches(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'matches' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'matches' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'matches' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].matches(...args);\n    }\n\n    webkitMatchesSelector(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'webkitMatchesSelector' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'webkitMatchesSelector' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'webkitMatchesSelector' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].webkitMatchesSelector(...args);\n    }\n\n    getElementsByTagName(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementsByTagName' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementsByTagName' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementsByTagName' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementsByTagName(...args));\n    }\n\n    getElementsByTagNameNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementsByTagNameNS' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementsByTagNameNS' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'getElementsByTagNameNS' on 'Element': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementsByTagNameNS' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementsByTagNameNS(...args));\n    }\n\n    getElementsByClassName(classNames) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementsByClassName' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementsByClassName' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementsByClassName' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementsByClassName(...args));\n    }\n\n    insertAdjacentElement(where, element) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertAdjacentElement' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'insertAdjacentElement' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'insertAdjacentElement' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'insertAdjacentElement' on 'Element': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].insertAdjacentElement(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    insertAdjacentText(where, data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertAdjacentText' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'insertAdjacentText' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'insertAdjacentText' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'insertAdjacentText' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].insertAdjacentText(...args);\n    }\n\n    insertAdjacentHTML(position, text) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertAdjacentHTML' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'insertAdjacentHTML' on 'Element': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'insertAdjacentHTML' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'insertAdjacentHTML' on 'Element': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].insertAdjacentHTML(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    getClientRects() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getClientRects' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getClientRects());\n    }\n\n    getBoundingClientRect() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getBoundingClientRect' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getBoundingClientRect());\n    }\n\n    before() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'before' called on an object that is not a valid instance of Element.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'before' on 'Element': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].before(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    after() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'after' called on an object that is not a valid instance of Element.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'after' on 'Element': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].after(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replaceWith() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'replaceWith' called on an object that is not a valid instance of Element.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'replaceWith' on 'Element': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].replaceWith(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    remove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'remove' called on an object that is not a valid instance of Element.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].remove();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    prepend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'prepend' called on an object that is not a valid instance of Element.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'prepend' on 'Element': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].prepend(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    append() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'append' called on an object that is not a valid instance of Element.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'append' on 'Element': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].append(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replaceChildren() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'replaceChildren' called on an object that is not a valid instance of Element.\"\n        );\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'replaceChildren' on 'Element': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].replaceChildren(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    querySelector(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'querySelector' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'querySelector' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'querySelector' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].querySelector(...args));\n    }\n\n    querySelectorAll(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'querySelectorAll' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'querySelectorAll' on 'Element': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'querySelectorAll' on 'Element': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].querySelectorAll(...args));\n    }\n\n    get namespaceURI() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get namespaceURI' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"namespaceURI\"];\n    }\n\n    get prefix() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get prefix' called on an object that is not a valid instance of Element.\");\n      }\n\n      return esValue[implSymbol][\"prefix\"];\n    }\n\n    get localName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get localName' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"localName\"];\n    }\n\n    get tagName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get tagName' called on an object that is not a valid instance of Element.\");\n      }\n\n      return esValue[implSymbol][\"tagName\"];\n    }\n\n    get id() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get id' called on an object that is not a valid instance of Element.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"id\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set id(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set id' called on an object that is not a valid instance of Element.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'id' property on 'Element': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"id\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get className() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get className' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"class\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set className(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set className' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'className' property on 'Element': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"class\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get classList() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get classList' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"classList\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"classList\"]);\n      });\n    }\n\n    set classList(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set classList' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      const Q = esValue[\"classList\"];\n      if (!utils.isObject(Q)) {\n        throw new globalObject.TypeError(\"Property 'classList' is not an object\");\n      }\n      Reflect.set(Q, \"value\", V);\n    }\n\n    get slot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get slot' called on an object that is not a valid instance of Element.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"slot\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set slot(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set slot' called on an object that is not a valid instance of Element.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'slot' property on 'Element': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"slot\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get attributes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get attributes' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"attributes\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"attributes\"]);\n      });\n    }\n\n    get shadowRoot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get shadowRoot' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"shadowRoot\"]);\n    }\n\n    get outerHTML() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get outerHTML' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"outerHTML\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set outerHTML(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set outerHTML' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'outerHTML' property on 'Element': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"outerHTML\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get scrollTop() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrollTop' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"scrollTop\"];\n    }\n\n    set scrollTop(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scrollTop' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      V = conversions[\"unrestricted double\"](V, {\n        context: \"Failed to set the 'scrollTop' property on 'Element': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"scrollTop\"] = V;\n    }\n\n    get scrollLeft() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrollLeft' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"scrollLeft\"];\n    }\n\n    set scrollLeft(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scrollLeft' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      V = conversions[\"unrestricted double\"](V, {\n        context: \"Failed to set the 'scrollLeft' property on 'Element': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"scrollLeft\"] = V;\n    }\n\n    get scrollWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrollWidth' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"scrollWidth\"];\n    }\n\n    get scrollHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrollHeight' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"scrollHeight\"];\n    }\n\n    get clientTop() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get clientTop' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"clientTop\"];\n    }\n\n    get clientLeft() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get clientLeft' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"clientLeft\"];\n    }\n\n    get clientWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get clientWidth' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"clientWidth\"];\n    }\n\n    get clientHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get clientHeight' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"clientHeight\"];\n    }\n\n    get innerHTML() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get innerHTML' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"innerHTML\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set innerHTML(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set innerHTML' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'innerHTML' property on 'Element': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"innerHTML\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get role() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get role' called on an object that is not a valid instance of Element.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"role\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set role(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set role' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'role' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"role\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"role\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaAtomic() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaAtomic' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-atomic\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaAtomic(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaAtomic' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaAtomic' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-atomic\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-atomic\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaAutoComplete() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaAutoComplete' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-autocomplete\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaAutoComplete(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaAutoComplete' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaAutoComplete' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-autocomplete\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-autocomplete\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaBusy() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get ariaBusy' called on an object that is not a valid instance of Element.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-busy\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaBusy(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set ariaBusy' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaBusy' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-busy\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-busy\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaChecked() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaChecked' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-checked\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaChecked(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaChecked' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaChecked' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-checked\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-checked\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColCount' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colcount\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColCount(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColCount' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColCount' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colcount\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colcount\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColIndex' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colindex\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColIndex' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColIndex' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colindex\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colindex\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColIndexText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColIndexText' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colindextext\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColIndexText(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColIndexText' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColIndexText' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colindextext\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colindextext\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColSpan() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColSpan' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colspan\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColSpan(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColSpan' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColSpan' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colspan\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colspan\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaCurrent() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaCurrent' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-current\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaCurrent(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaCurrent' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaCurrent' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-current\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-current\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaDescription() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaDescription' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-description\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaDescription(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaDescription' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaDescription' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-description\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-description\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaDisabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaDisabled' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-disabled\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaDisabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaDisabled' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaDisabled' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-disabled\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-disabled\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaExpanded() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaExpanded' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-expanded\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaExpanded(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaExpanded' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaExpanded' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-expanded\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-expanded\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaHasPopup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaHasPopup' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-haspopup\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaHasPopup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaHasPopup' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaHasPopup' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-haspopup\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-haspopup\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaHidden() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaHidden' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-hidden\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaHidden(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaHidden' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaHidden' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-hidden\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-hidden\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaInvalid() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaInvalid' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-invalid\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaInvalid(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaInvalid' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaInvalid' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-invalid\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-invalid\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaKeyShortcuts() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaKeyShortcuts' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-keyshortcuts\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaKeyShortcuts(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaKeyShortcuts' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaKeyShortcuts' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-keyshortcuts\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-keyshortcuts\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaLabel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaLabel' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-label\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaLabel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaLabel' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaLabel' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-label\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-label\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaLevel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaLevel' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-level\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaLevel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaLevel' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaLevel' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-level\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-level\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaLive() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get ariaLive' called on an object that is not a valid instance of Element.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-live\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaLive(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set ariaLive' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaLive' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-live\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-live\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaModal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaModal' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-modal\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaModal(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaModal' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaModal' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-modal\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-modal\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaMultiLine() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaMultiLine' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-multiline\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaMultiLine(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaMultiLine' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaMultiLine' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-multiline\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-multiline\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaMultiSelectable() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaMultiSelectable' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-multiselectable\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaMultiSelectable(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaMultiSelectable' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaMultiSelectable' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-multiselectable\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-multiselectable\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaOrientation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaOrientation' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-orientation\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaOrientation(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaOrientation' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaOrientation' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-orientation\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-orientation\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaPlaceholder() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaPlaceholder' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-placeholder\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaPlaceholder(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaPlaceholder' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaPlaceholder' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-placeholder\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-placeholder\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaPosInSet() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaPosInSet' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-posinset\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaPosInSet(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaPosInSet' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaPosInSet' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-posinset\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-posinset\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaPressed() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaPressed' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-pressed\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaPressed(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaPressed' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaPressed' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-pressed\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-pressed\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaReadOnly() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaReadOnly' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-readonly\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaReadOnly(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaReadOnly' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaReadOnly' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-readonly\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-readonly\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRequired() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRequired' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-required\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRequired(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRequired' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRequired' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-required\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-required\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRoleDescription() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRoleDescription' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-roledescription\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRoleDescription(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRoleDescription' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRoleDescription' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-roledescription\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-roledescription\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowCount' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowcount\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowCount(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowCount' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowCount' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowcount\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowcount\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowIndex' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowindex\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowIndex' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowIndex' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowindex\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowindex\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowIndexText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowIndexText' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowindextext\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowIndexText(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowIndexText' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowIndexText' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowindextext\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowindextext\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowSpan() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowSpan' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowspan\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowSpan(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowSpan' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowSpan' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowspan\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowspan\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaSelected() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaSelected' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-selected\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaSelected(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaSelected' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaSelected' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-selected\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-selected\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaSetSize() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaSetSize' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-setsize\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaSetSize(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaSetSize' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaSetSize' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-setsize\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-setsize\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaSort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get ariaSort' called on an object that is not a valid instance of Element.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-sort\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaSort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set ariaSort' called on an object that is not a valid instance of Element.\");\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaSort' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-sort\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-sort\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueMax() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueMax' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuemax\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueMax(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueMax' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueMax' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuemax\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuemax\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueMin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueMin' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuemin\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueMin(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueMin' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueMin' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuemin\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuemin\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueNow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueNow' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuenow\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueNow(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueNow' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueNow' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuenow\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuenow\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueText' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuetext\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueText(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueText' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueText' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuetext\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuetext\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRelevant() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRelevant' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-relevant\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRelevant(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRelevant' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRelevant' property on 'Element': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-relevant\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-relevant\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get previousElementSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get previousElementSibling' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"previousElementSibling\"]);\n    }\n\n    get nextElementSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get nextElementSibling' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"nextElementSibling\"]);\n    }\n\n    get children() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get children' called on an object that is not a valid instance of Element.\");\n      }\n\n      return utils.getSameObject(this, \"children\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"children\"]);\n      });\n    }\n\n    get firstElementChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get firstElementChild' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"firstElementChild\"]);\n    }\n\n    get lastElementChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lastElementChild' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"lastElementChild\"]);\n    }\n\n    get childElementCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get childElementCount' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return esValue[implSymbol][\"childElementCount\"];\n    }\n\n    get assignedSlot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get assignedSlot' called on an object that is not a valid instance of Element.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"assignedSlot\"]);\n    }\n  }\n  Object.defineProperties(Element.prototype, {\n    hasAttributes: { enumerable: true },\n    getAttributeNames: { enumerable: true },\n    getAttribute: { enumerable: true },\n    getAttributeNS: { enumerable: true },\n    setAttribute: { enumerable: true },\n    setAttributeNS: { enumerable: true },\n    removeAttribute: { enumerable: true },\n    removeAttributeNS: { enumerable: true },\n    toggleAttribute: { enumerable: true },\n    hasAttribute: { enumerable: true },\n    hasAttributeNS: { enumerable: true },\n    getAttributeNode: { enumerable: true },\n    getAttributeNodeNS: { enumerable: true },\n    setAttributeNode: { enumerable: true },\n    setAttributeNodeNS: { enumerable: true },\n    removeAttributeNode: { enumerable: true },\n    attachShadow: { enumerable: true },\n    closest: { enumerable: true },\n    matches: { enumerable: true },\n    webkitMatchesSelector: { enumerable: true },\n    getElementsByTagName: { enumerable: true },\n    getElementsByTagNameNS: { enumerable: true },\n    getElementsByClassName: { enumerable: true },\n    insertAdjacentElement: { enumerable: true },\n    insertAdjacentText: { enumerable: true },\n    insertAdjacentHTML: { enumerable: true },\n    getClientRects: { enumerable: true },\n    getBoundingClientRect: { enumerable: true },\n    before: { enumerable: true },\n    after: { enumerable: true },\n    replaceWith: { enumerable: true },\n    remove: { enumerable: true },\n    prepend: { enumerable: true },\n    append: { enumerable: true },\n    replaceChildren: { enumerable: true },\n    querySelector: { enumerable: true },\n    querySelectorAll: { enumerable: true },\n    namespaceURI: { enumerable: true },\n    prefix: { enumerable: true },\n    localName: { enumerable: true },\n    tagName: { enumerable: true },\n    id: { enumerable: true },\n    className: { enumerable: true },\n    classList: { enumerable: true },\n    slot: { enumerable: true },\n    attributes: { enumerable: true },\n    shadowRoot: { enumerable: true },\n    outerHTML: { enumerable: true },\n    scrollTop: { enumerable: true },\n    scrollLeft: { enumerable: true },\n    scrollWidth: { enumerable: true },\n    scrollHeight: { enumerable: true },\n    clientTop: { enumerable: true },\n    clientLeft: { enumerable: true },\n    clientWidth: { enumerable: true },\n    clientHeight: { enumerable: true },\n    innerHTML: { enumerable: true },\n    role: { enumerable: true },\n    ariaAtomic: { enumerable: true },\n    ariaAutoComplete: { enumerable: true },\n    ariaBusy: { enumerable: true },\n    ariaChecked: { enumerable: true },\n    ariaColCount: { enumerable: true },\n    ariaColIndex: { enumerable: true },\n    ariaColIndexText: { enumerable: true },\n    ariaColSpan: { enumerable: true },\n    ariaCurrent: { enumerable: true },\n    ariaDescription: { enumerable: true },\n    ariaDisabled: { enumerable: true },\n    ariaExpanded: { enumerable: true },\n    ariaHasPopup: { enumerable: true },\n    ariaHidden: { enumerable: true },\n    ariaInvalid: { enumerable: true },\n    ariaKeyShortcuts: { enumerable: true },\n    ariaLabel: { enumerable: true },\n    ariaLevel: { enumerable: true },\n    ariaLive: { enumerable: true },\n    ariaModal: { enumerable: true },\n    ariaMultiLine: { enumerable: true },\n    ariaMultiSelectable: { enumerable: true },\n    ariaOrientation: { enumerable: true },\n    ariaPlaceholder: { enumerable: true },\n    ariaPosInSet: { enumerable: true },\n    ariaPressed: { enumerable: true },\n    ariaReadOnly: { enumerable: true },\n    ariaRequired: { enumerable: true },\n    ariaRoleDescription: { enumerable: true },\n    ariaRowCount: { enumerable: true },\n    ariaRowIndex: { enumerable: true },\n    ariaRowIndexText: { enumerable: true },\n    ariaRowSpan: { enumerable: true },\n    ariaSelected: { enumerable: true },\n    ariaSetSize: { enumerable: true },\n    ariaSort: { enumerable: true },\n    ariaValueMax: { enumerable: true },\n    ariaValueMin: { enumerable: true },\n    ariaValueNow: { enumerable: true },\n    ariaValueText: { enumerable: true },\n    ariaRelevant: { enumerable: true },\n    previousElementSibling: { enumerable: true },\n    nextElementSibling: { enumerable: true },\n    children: { enumerable: true },\n    firstElementChild: { enumerable: true },\n    lastElementChild: { enumerable: true },\n    childElementCount: { enumerable: true },\n    assignedSlot: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Element\", configurable: true },\n    [Symbol.unscopables]: {\n      value: {\n        slot: true,\n        before: true,\n        after: true,\n        replaceWith: true,\n        remove: true,\n        prepend: true,\n        append: true,\n        replaceChildren: true,\n        __proto__: null\n      },\n      configurable: true\n    }\n  });\n  ctorRegistry[interfaceName] = Element;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Element\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/Element-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"is\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, { context: context + \" has member 'is' that\", globals: globalObject });\n\n      ret[key] = value;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (!utils.isObject(value)) {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  function callTheUserObjectsOperation(node) {\n    let thisArg = utils.tryWrapperForImpl(this);\n    let O = value;\n    let X = O;\n\n    if (typeof O !== \"function\") {\n      X = O[\"acceptNode\"];\n      if (typeof X !== \"function\") {\n        throw new globalObject.TypeError(`${context} does not correctly implement NodeFilter.`);\n      }\n      thisArg = O;\n    }\n\n    node = utils.tryWrapperForImpl(node);\n\n    let callResult = Reflect.apply(X, thisArg, [node]);\n\n    callResult = conversions[\"unsigned short\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  }\n\n  callTheUserObjectsOperation[utils.wrapperSymbol] = value;\n  callTheUserObjectsOperation.objectReference = value;\n\n  return callTheUserObjectsOperation;\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  const NodeFilter = () => {\n    throw new globalObject.TypeError(\"Illegal invocation\");\n  };\n\n  Object.defineProperties(NodeFilter, {\n    FILTER_ACCEPT: { value: 1, enumerable: true },\n    FILTER_REJECT: { value: 2, enumerable: true },\n    FILTER_SKIP: { value: 3, enumerable: true },\n    SHOW_ALL: { value: 0xffffffff, enumerable: true },\n    SHOW_ELEMENT: { value: 0x1, enumerable: true },\n    SHOW_ATTRIBUTE: { value: 0x2, enumerable: true },\n    SHOW_TEXT: { value: 0x4, enumerable: true },\n    SHOW_CDATA_SECTION: { value: 0x8, enumerable: true },\n    SHOW_ENTITY_REFERENCE: { value: 0x10, enumerable: true },\n    SHOW_ENTITY: { value: 0x20, enumerable: true },\n    SHOW_PROCESSING_INSTRUCTION: { value: 0x40, enumerable: true },\n    SHOW_COMMENT: { value: 0x80, enumerable: true },\n    SHOW_DOCUMENT: { value: 0x100, enumerable: true },\n    SHOW_DOCUMENT_TYPE: { value: 0x200, enumerable: true },\n    SHOW_DOCUMENT_FRAGMENT: { value: 0x400, enumerable: true },\n    SHOW_NOTATION: { value: 0x800, enumerable: true }\n  });\n\n  Object.defineProperty(globalObject, \"NodeFilter\", {\n    configurable: true,\n    writable: true,\n    value: NodeFilter\n  });\n};\n","\"use strict\";\n\nconst { HTML_NS } = require(\"./namespaces\");\nconst { createElement, getValidTagNames } = require(\"./create-element\");\n\nconst { implForWrapper, wrapperForImpl } = require(\"../../../generated/idl/utils\");\n\n// https://html.spec.whatwg.org/multipage/custom-elements.html#concept-already-constructed-marker\nconst ALREADY_CONSTRUCTED_MARKER = Symbol(\"already-constructed-marker\");\n\n// https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor\nfunction HTMLConstructor(globalObject, constructorName, newTarget) {\n  const registry = implForWrapper(globalObject._customElementRegistry);\n  if (newTarget === HTMLConstructor) {\n    throw new TypeError(\"Invalid constructor\");\n  }\n\n  const definition = registry._customElementDefinitions.find(entry => entry.objectReference === newTarget);\n  if (definition === undefined) {\n    throw new TypeError(\"Invalid constructor, the constructor is not part of the custom element registry\");\n  }\n\n  let isValue = null;\n\n  if (definition.localName === definition.name) {\n    if (constructorName !== \"HTMLElement\") {\n      throw new TypeError(\"Invalid constructor, autonomous custom element should extend from HTMLElement\");\n    }\n  } else {\n    const validLocalNames = getValidTagNames(HTML_NS, constructorName);\n    if (!validLocalNames.includes(definition.localName)) {\n      throw new TypeError(`${definition.localName} is not valid local name for ${constructorName}`);\n    }\n\n    isValue = definition.name;\n  }\n\n  let { prototype } = newTarget;\n\n  if (prototype === null || typeof prototype !== \"object\") {\n    // The following line deviates from the specification. The HTMLElement prototype should be retrieved from the realm\n    // associated with the \"new.target\". Because it is impossible to get such information in jsdom, we fallback to the\n    // HTMLElement prototype associated with the current object.\n    prototype = globalObject.HTMLElement.prototype;\n  }\n\n  if (definition.constructionStack.length === 0) {\n    const documentImpl = implForWrapper(globalObject.document);\n\n    const elementImpl = createElement(documentImpl, definition.localName, HTML_NS);\n\n    const element = wrapperForImpl(elementImpl);\n    Object.setPrototypeOf(element, prototype);\n\n    elementImpl._ceState = \"custom\";\n    elementImpl._ceDefinition = definition;\n    elementImpl._isValue = isValue;\n\n    return element;\n  }\n\n  const elementImpl = definition.constructionStack[definition.constructionStack.length - 1];\n  const element = wrapperForImpl(elementImpl);\n\n  if (elementImpl === ALREADY_CONSTRUCTED_MARKER) {\n    throw new TypeError(\"This instance is already constructed\");\n  }\n\n  Object.setPrototypeOf(element, prototype);\n\n  definition.constructionStack[definition.constructionStack.length - 1] = ALREADY_CONSTRUCTED_MARKER;\n\n  return element;\n}\n\nmodule.exports = {\n  HTMLConstructor\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst PointerEvent = require(\"./PointerEvent.js\");\nconst MouseEventInit = require(\"./MouseEventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  MouseEventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"altitudeAngle\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, {\n        context: context + \" has member 'altitudeAngle' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"azimuthAngle\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, {\n        context: context + \" has member 'azimuthAngle' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"coalescedEvents\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (!utils.isObject(value)) {\n        throw new globalObject.TypeError(\n          context + \" has member 'coalescedEvents' that\" + \" is not an iterable object.\"\n        );\n      } else {\n        const V = [];\n        const tmp = value;\n        for (let nextItem of tmp) {\n          nextItem = PointerEvent.convert(globalObject, nextItem, {\n            context: context + \" has member 'coalescedEvents' that\" + \"'s element\"\n          });\n\n          V.push(nextItem);\n        }\n        value = V;\n      }\n\n      ret[key] = value;\n    } else {\n      ret[key] = [];\n    }\n  }\n\n  {\n    const key = \"height\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'height' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 1;\n    }\n  }\n\n  {\n    const key = \"isPrimary\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'isPrimary' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"persistentDeviceId\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, {\n        context: context + \" has member 'persistentDeviceId' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"pointerId\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'pointerId' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"pointerType\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, {\n        context: context + \" has member 'pointerType' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"predictedEvents\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (!utils.isObject(value)) {\n        throw new globalObject.TypeError(\n          context + \" has member 'predictedEvents' that\" + \" is not an iterable object.\"\n        );\n      } else {\n        const V = [];\n        const tmp = value;\n        for (let nextItem of tmp) {\n          nextItem = PointerEvent.convert(globalObject, nextItem, {\n            context: context + \" has member 'predictedEvents' that\" + \"'s element\"\n          });\n\n          V.push(nextItem);\n        }\n        value = V;\n      }\n\n      ret[key] = value;\n    } else {\n      ret[key] = [];\n    }\n  }\n\n  {\n    const key = \"pressure\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"float\"](value, { context: context + \" has member 'pressure' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"tangentialPressure\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"float\"](value, {\n        context: context + \" has member 'tangentialPressure' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"tiltX\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'tiltX' that\", globals: globalObject });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"tiltY\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'tiltY' that\", globals: globalObject });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"twist\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long\"](value, { context: context + \" has member 'twist' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"width\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'width' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 1;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst MouseEventImpl = require(\"./MouseEvent-impl\").implementation;\nconst PointerEventInit = require(\"../../../generated/idl/PointerEventInit\");\n\nclass PointerEventImpl extends MouseEventImpl {\n  getCoalescedEvents() {\n    // The EventImpl constructor initializes this.coalescedEvents from the init dictionary.\n    // Return a new array each time (webidl2js doesn't handle this for us.)\n    return [...this.coalescedEvents];\n  }\n\n  getPredictedEvents() {\n    // As above.\n    return [...this.predictedEvents];\n  }\n}\nPointerEventImpl.defaultInit = PointerEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: PointerEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst PointerEventInit = require(\"./PointerEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst MouseEvent = require(\"./MouseEvent.js\");\n\nconst interfaceName = \"PointerEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'PointerEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"PointerEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  MouseEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class PointerEvent extends globalObject.MouseEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'PointerEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'PointerEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = PointerEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'PointerEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    getCoalescedEvents() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getCoalescedEvents' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getCoalescedEvents());\n    }\n\n    getPredictedEvents() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getPredictedEvents' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getPredictedEvents());\n    }\n\n    get pointerId() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pointerId' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"pointerId\"];\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"width\"];\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"height\"];\n    }\n\n    get pressure() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pressure' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"pressure\"];\n    }\n\n    get tangentialPressure() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tangentialPressure' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"tangentialPressure\"];\n    }\n\n    get tiltX() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tiltX' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"tiltX\"];\n    }\n\n    get tiltY() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tiltY' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"tiltY\"];\n    }\n\n    get twist() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get twist' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"twist\"];\n    }\n\n    get altitudeAngle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get altitudeAngle' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"altitudeAngle\"];\n    }\n\n    get azimuthAngle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get azimuthAngle' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"azimuthAngle\"];\n    }\n\n    get pointerType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pointerType' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"pointerType\"];\n    }\n\n    get isPrimary() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get isPrimary' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"isPrimary\"];\n    }\n\n    get persistentDeviceId() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get persistentDeviceId' called on an object that is not a valid instance of PointerEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"persistentDeviceId\"];\n    }\n  }\n  Object.defineProperties(PointerEvent.prototype, {\n    getCoalescedEvents: { enumerable: true },\n    getPredictedEvents: { enumerable: true },\n    pointerId: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    pressure: { enumerable: true },\n    tangentialPressure: { enumerable: true },\n    tiltX: { enumerable: true },\n    tiltY: { enumerable: true },\n    twist: { enumerable: true },\n    altitudeAngle: { enumerable: true },\n    azimuthAngle: { enumerable: true },\n    pointerType: { enumerable: true },\n    isPrimary: { enumerable: true },\n    persistentDeviceId: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"PointerEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = PointerEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: PointerEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/PointerEvent-impl.js\");\n","\"use strict\";\n\nfunction isLeapYear(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#number-of-days-in-month-month-of-year-year\nconst daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction numberOfDaysInMonthOfYear(month, year) {\n  if (month === 2 && isLeapYear(year)) {\n    return 29;\n  }\n  return daysInMonth[month - 1];\n}\n\nconst monthRe = /^([0-9]{4,})-([0-9]{2})$/;\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-month-string\nfunction parseMonthString(str) {\n  const matches = monthRe.exec(str);\n  if (!matches) {\n    return null;\n  }\n  const year = Number(matches[1]);\n  if (year <= 0) {\n    return null;\n  }\n  const month = Number(matches[2]);\n  if (month < 1 || month > 12) {\n    return null;\n  }\n  return { year, month };\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-month-string\nfunction isValidMonthString(str) {\n  return parseMonthString(str) !== null;\n}\nfunction serializeMonth({ year, month }) {\n  const yearStr = `${year}`.padStart(4, \"0\");\n  const monthStr = `${month}`.padStart(2, \"0\");\n  return `${yearStr}-${monthStr}`;\n}\n\nconst dateRe = /^([0-9]{4,})-([0-9]{2})-([0-9]{2})$/;\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-date-string\nfunction parseDateString(str) {\n  const matches = dateRe.exec(str);\n  if (!matches) {\n    return null;\n  }\n  const year = Number(matches[1]);\n  if (year <= 0) {\n    return null;\n  }\n  const month = Number(matches[2]);\n  if (month < 1 || month > 12) {\n    return null;\n  }\n  const day = Number(matches[3]);\n  if (day < 1 || day > numberOfDaysInMonthOfYear(month, year)) {\n    return null;\n  }\n  return { year, month, day };\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string\nfunction isValidDateString(str) {\n  return parseDateString(str) !== null;\n}\nfunction serializeDate(date) {\n  const dayStr = `${date.day}`.padStart(2, \"0\");\n  return `${serializeMonth(date)}-${dayStr}`;\n}\n\nconst yearlessDateRe = /^(?:--)?([0-9]{2})-([0-9]{2})$/;\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-yearless-date-string\nfunction parseYearlessDateString(str) {\n  const matches = yearlessDateRe.exec(str);\n  if (!matches) {\n    return null;\n  }\n  const month = Number(matches[1]);\n  if (month < 1 || month > 12) {\n    return null;\n  }\n  const day = Number(matches[2]);\n  if (day < 1 || day > numberOfDaysInMonthOfYear(month, 4)) {\n    return null;\n  }\n  return { month, day };\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-yearless-date-string\nfunction isValidYearlessDateString(str) {\n  return parseYearlessDateString(str) !== null;\n}\nfunction serializeYearlessDate({ month, day }) {\n  const monthStr = `${month}`.padStart(2, \"0\");\n  const dayStr = `${day}`.padStart(2, \"0\");\n  return `${monthStr}-${dayStr}`;\n}\n\nconst timeRe = /^([0-9]{2}):([0-9]{2})(?::([0-9]{2}(?:\\.([0-9]{1,3}))?))?$/;\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-time-string\nfunction parseTimeString(str) {\n  const matches = timeRe.exec(str);\n  if (!matches) {\n    return null;\n  }\n  const hour = Number(matches[1]);\n  if (hour < 0 || hour > 23) {\n    return null;\n  }\n  const minute = Number(matches[2]);\n  if (minute < 0 || minute > 59) {\n    return null;\n  }\n  const second = matches[3] !== undefined ? Math.trunc(Number(matches[3])) : 0;\n  if (second < 0 || second >= 60) {\n    return null;\n  }\n  const millisecond = matches[4] !== undefined ? Number(matches[4]) : 0;\n  return { hour, minute, second, millisecond };\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-time-string\nfunction isValidTimeString(str) {\n  return parseTimeString(str) !== null;\n}\n\nfunction serializeTime({ hour, minute, second, millisecond }) {\n  const hourStr = `${hour}`.padStart(2, \"0\");\n  const minuteStr = `${minute}`.padStart(2, \"0\");\n  if (second === 0 && millisecond === 0) {\n    return `${hourStr}:${minuteStr}`;\n  }\n  const secondStr = `${second}`.padStart(2, \"0\");\n  const millisecondStr = `${millisecond}`.padStart(3, \"0\");\n  return `${hourStr}:${minuteStr}:${secondStr}.${millisecondStr}`;\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-local-date-and-time-string\nfunction parseLocalDateAndTimeString(str, normalized = false) {\n  let separatorIdx = str.indexOf(\"T\");\n  if (separatorIdx < 0 && !normalized) {\n    separatorIdx = str.indexOf(\" \");\n  }\n  if (separatorIdx < 0) {\n    return null;\n  }\n  const date = parseDateString(str.slice(0, separatorIdx));\n  if (date === null) {\n    return null;\n  }\n  const time = parseTimeString(str.slice(separatorIdx + 1));\n  if (time === null) {\n    return null;\n  }\n  return { date, time };\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-local-date-and-time-string\nfunction isValidLocalDateAndTimeString(str) {\n  return parseLocalDateAndTimeString(str) !== null;\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-normalised-local-date-and-time-string\nfunction isValidNormalizedLocalDateAndTimeString(str) {\n  return parseLocalDateAndTimeString(str, true) !== null;\n}\nfunction serializeNormalizedDateAndTime({ date, time }) {\n  return `${serializeDate(date)}T${serializeTime(time)}`;\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#week-number-of-the-last-day\n// https://stackoverflow.com/a/18538272/1937836\nfunction weekNumberOfLastDay(year) {\n  const jan1 = new Date(year, 0);\n  return jan1.getDay() === 4 || (isLeapYear(year) && jan1.getDay() === 3) ? 53 : 52;\n}\n\nconst weekRe = /^([0-9]{4,5})-W([0-9]{2})$/;\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#parse-a-week-string\nfunction parseWeekString(str) {\n  const matches = weekRe.exec(str);\n  if (!matches) {\n    return null;\n  }\n  const year = Number(matches[1]);\n  if (year <= 0) {\n    return null;\n  }\n  const week = Number(matches[2]);\n  if (week < 1 || week > weekNumberOfLastDay(year)) {\n    return null;\n  }\n  return { year, week };\n}\n\n// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-week-string\nfunction isValidWeekString(str) {\n  return parseWeekString(str) !== null;\n}\nfunction serializeWeek({ year, week }) {\n  const yearStr = `${year}`.padStart(4, \"0\");\n  const weekStr = `${week}`.padStart(2, \"0\");\n  return `${yearStr}-W${weekStr}`;\n}\n\n// https://stackoverflow.com/a/6117889\nfunction parseDateAsWeek(originalDate) {\n  const dayInSeconds = 86400000;\n  // Copy date so don't modify original\n  const date = new Date(Date.UTC(originalDate.getUTCFullYear(), originalDate.getUTCMonth(), originalDate.getUTCDate()));\n  // Set to nearest Thursday: current date + 4 - current day number\n  // Make Sunday's day number 7\n  date.setUTCDate(date.getUTCDate() + 4 - (date.getUTCDay() || 7));\n  // Get first day of year\n  const yearStart = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));\n  // Calculate full weeks to nearest Thursday\n  const week = Math.ceil((((date - yearStart) / dayInSeconds) + 1) / 7);\n\n  return { year: date.getUTCFullYear(), week };\n}\n\nfunction isDate(obj) {\n  try {\n    Date.prototype.valueOf.call(obj);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nmodule.exports = {\n  isDate,\n  numberOfDaysInMonthOfYear,\n\n  parseMonthString,\n  isValidMonthString,\n  serializeMonth,\n\n  parseDateString,\n  isValidDateString,\n  serializeDate,\n\n  parseYearlessDateString,\n  isValidYearlessDateString,\n  serializeYearlessDate,\n\n  parseTimeString,\n  isValidTimeString,\n  serializeTime,\n\n  parseLocalDateAndTimeString,\n  isValidLocalDateAndTimeString,\n  isValidNormalizedLocalDateAndTimeString,\n  serializeNormalizedDateAndTime,\n\n  parseDateAsWeek,\n  weekNumberOfLastDay,\n  parseWeekString,\n  isValidWeekString,\n  serializeWeek\n};\n","\"use strict\";\nconst { domSymbolTree } = require(\"./internal-constants\");\nconst { HTML_NS } = require(\"./namespaces\");\n\n// All these operate on and return impls, not wrappers!\n\nexports.closest = (e, localName, namespace = HTML_NS) => {\n  while (e) {\n    if (e.localName === localName && e.namespaceURI === namespace) {\n      return e;\n    }\n    e = domSymbolTree.parent(e);\n  }\n\n  return null;\n};\n\nexports.childrenByLocalName = (parent, localName, namespace = HTML_NS) => {\n  return domSymbolTree.childrenToArray(parent, { filter(node) {\n    return node._localName === localName && node._namespaceURI === namespace;\n  } });\n};\n\nexports.descendantsByLocalName = (parent, localName, namespace = HTML_NS) => {\n  return domSymbolTree.treeToArray(parent, { filter(node) {\n    return node._localName === localName && node._namespaceURI === namespace && node !== parent;\n  } });\n};\n\nexports.childrenByLocalNames = (parent, localNamesSet, namespace = HTML_NS) => {\n  return domSymbolTree.childrenToArray(parent, { filter(node) {\n    return localNamesSet.has(node._localName) && node._namespaceURI === namespace;\n  } });\n};\n\nexports.descendantsByLocalNames = (parent, localNamesSet, namespace = HTML_NS) => {\n  return domSymbolTree.treeToArray(parent, { filter(node) {\n    return localNamesSet.has(node._localName) &&\n           node._namespaceURI === namespace &&\n           node !== parent;\n  } });\n};\n\nexports.firstChildWithLocalName = (parent, localName, namespace = HTML_NS) => {\n  const iterator = domSymbolTree.childrenIterator(parent);\n  for (const child of iterator) {\n    if (child._localName === localName && child._namespaceURI === namespace) {\n      return child;\n    }\n  }\n  return null;\n};\n\nexports.firstChildWithLocalNames = (parent, localNamesSet, namespace = HTML_NS) => {\n  const iterator = domSymbolTree.childrenIterator(parent);\n  for (const child of iterator) {\n    if (localNamesSet.has(child._localName) && child._namespaceURI === namespace) {\n      return child;\n    }\n  }\n  return null;\n};\n\nexports.firstDescendantWithLocalName = (parent, localName, namespace = HTML_NS) => {\n  const iterator = domSymbolTree.treeIterator(parent);\n  for (const descendant of iterator) {\n    if (descendant._localName === localName && descendant._namespaceURI === namespace) {\n      return descendant;\n    }\n  }\n  return null;\n};\n","\"use strict\";\n\nconst {\n  isValidFloatingPointNumber,\n  isValidSimpleColor,\n  parseFloatingPointNumber,\n  stripLeadingAndTrailingASCIIWhitespace,\n  stripNewlines,\n  splitOnCommas\n} = require(\"./strings\");\nconst {\n  isValidDateString,\n  isValidMonthString,\n  isValidTimeString,\n  isValidWeekString,\n  parseLocalDateAndTimeString,\n  serializeNormalizedDateAndTime\n} = require(\"./dates-and-times\");\nconst whatwgURL = require(\"whatwg-url\");\n\nconst NodeList = require(\"../../../generated/idl/NodeList\");\nconst { domSymbolTree } = require(\"./internal-constants\");\nconst { closest, firstChildWithLocalName } = require(\"./traversal\");\nconst NODE_TYPE = require(\"../node-type\");\nconst { HTML_NS } = require(\"./namespaces\");\n\n// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#concept-fe-disabled\nexports.isDisabled = formControl => {\n  if (formControl.localName === \"button\" || formControl.localName === \"input\" || formControl.localName === \"select\" ||\n      formControl.localName === \"textarea\") {\n    if (formControl.hasAttributeNS(null, \"disabled\")) {\n      return true;\n    }\n  }\n\n  let e = formControl.parentNode;\n  while (e) {\n    if (e.localName === \"fieldset\" && e.hasAttributeNS(null, \"disabled\")) {\n      const firstLegendElementChild = firstChildWithLocalName(e, \"legend\");\n      if (!firstLegendElementChild || !firstLegendElementChild.contains(formControl)) {\n        return true;\n      }\n    }\n    e = e.parentNode;\n  }\n\n  return false;\n};\n\n// https://html.spec.whatwg.org/multipage/forms.html#category-listed\nconst listedElements = new Set([\"button\", \"fieldset\", \"input\", \"object\", \"output\", \"select\", \"textarea\"]);\nexports.isListed = formControl => listedElements.has(formControl._localName) && formControl.namespaceURI === HTML_NS;\n\n// https://html.spec.whatwg.org/multipage/forms.html#category-submit\nconst submittableElements = new Set([\"button\", \"input\", \"object\", \"select\", \"textarea\"]);\nexports.isSubmittable = formControl => {\n  return submittableElements.has(formControl._localName) && formControl.namespaceURI === HTML_NS;\n};\n\n// https://html.spec.whatwg.org/multipage/forms.html#concept-submit-button\nconst submitButtonInputTypes = new Set([\"submit\", \"image\"]);\nexports.isSubmitButton = formControl => {\n  return ((formControl._localName === \"input\" && submitButtonInputTypes.has(formControl.type)) ||\n          (formControl._localName === \"button\" && formControl.type === \"submit\")) &&\n         formControl.namespaceURI === HTML_NS;\n};\n\n// https://html.spec.whatwg.org/multipage/forms.html#concept-button\nconst buttonInputTypes = new Set([...submitButtonInputTypes, \"reset\", \"button\"]);\nexports.isButton = formControl => {\n  return ((formControl._localName === \"input\" && buttonInputTypes.has(formControl.type)) ||\n          formControl._localName === \"button\") &&\n         formControl.namespaceURI === HTML_NS;\n};\n\n// https://html.spec.whatwg.org/multipage/dom.html#interactive-content-2\nexports.isInteractiveContent = node => {\n  if (node.nodeType !== NODE_TYPE.ELEMENT_NODE) {\n    return false;\n  }\n  if (node.namespaceURI !== HTML_NS) {\n    return false;\n  }\n  if (node.hasAttributeNS(null, \"tabindex\")) {\n    return true;\n  }\n  switch (node.localName) {\n    case \"a\":\n      return node.hasAttributeNS(null, \"href\");\n\n    case \"audio\":\n    case \"video\":\n      return node.hasAttributeNS(null, \"controls\");\n\n    case \"img\":\n    case \"object\":\n      return node.hasAttributeNS(null, \"usemap\");\n\n    case \"input\":\n      return node.type !== \"hidden\";\n\n    case \"button\":\n    case \"details\":\n    case \"embed\":\n    case \"iframe\":\n    case \"label\":\n    case \"select\":\n    case \"textarea\":\n      return true;\n  }\n\n  return false;\n};\n\n// https://html.spec.whatwg.org/multipage/forms.html#category-label\nexports.isLabelable = node => {\n  if (node.nodeType !== NODE_TYPE.ELEMENT_NODE) {\n    return false;\n  }\n  if (node.namespaceURI !== HTML_NS) {\n    return false;\n  }\n  switch (node.localName) {\n    case \"button\":\n    case \"meter\":\n    case \"output\":\n    case \"progress\":\n    case \"select\":\n    case \"textarea\":\n      return true;\n\n    case \"input\":\n      return node.type !== \"hidden\";\n  }\n  if (node._ceDefinition?.formAssociated) {\n    return true;\n  }\n\n  return false;\n};\n\nexports.getLabelsForLabelable = labelable => {\n  if (!exports.isLabelable(labelable)) {\n    return null;\n  }\n  if (!labelable._labels) {\n    const root = labelable.getRootNode({});\n    labelable._labels = NodeList.createImpl(root._globalObject, [], {\n      element: root,\n      query: () => {\n        const nodes = [];\n        for (const descendant of domSymbolTree.treeIterator(root)) {\n          if (descendant.control === labelable) {\n            nodes.push(descendant);\n          }\n        }\n        return nodes;\n      }\n    });\n  }\n  return labelable._labels;\n};\n\n// https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\nexports.isValidEmailAddress = (emailAddress, multiple = false) => {\n  const emailAddressRegExp = new RegExp(\"^[a-zA-Z0-9.!#$%&'*+\\\\/=?^_`{|}~-]+@[a-zA-Z0-9]\" +\n    \"(?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}\" +\n    \"[a-zA-Z0-9])?)*$\");\n  // A valid e-mail address list is a set of comma-separated tokens, where each token is itself\n  // a valid e - mail address.To obtain the list of tokens from a valid e - mail address list,\n  // an implementation must split the string on commas.\n  if (multiple) {\n    return splitOnCommas(emailAddress).every(value => emailAddressRegExp.test(value));\n  }\n  return emailAddressRegExp.test(emailAddress);\n};\n\nexports.isValidAbsoluteURL = url => {\n  return whatwgURL.parseURL(url) !== null;\n};\n\nexports.sanitizeValueByType = (input, val) => {\n  switch (input.type.toLowerCase()) {\n    case \"password\":\n    case \"search\":\n    case \"tel\":\n    case \"text\":\n      val = stripNewlines(val);\n      break;\n\n    case \"color\":\n      // https://html.spec.whatwg.org/multipage/forms.html#color-state-(type=color):value-sanitization-algorithm\n      val = isValidSimpleColor(val) ? val.toLowerCase() : \"#000000\";\n      break;\n\n    case \"date\":\n      // https://html.spec.whatwg.org/multipage/input.html#date-state-(type=date):value-sanitization-algorithm\n      if (!isValidDateString(val)) {\n        val = \"\";\n      }\n      break;\n\n    case \"datetime-local\": {\n      // https://html.spec.whatwg.org/multipage/input.html#local-date-and-time-state-(type=datetime-local):value-sanitization-algorithm\n      const dateAndTime = parseLocalDateAndTimeString(val);\n      val = dateAndTime !== null ? serializeNormalizedDateAndTime(dateAndTime) : \"\";\n      break;\n    }\n\n    case \"email\":\n      // https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email):value-sanitization-algorithm\n      // https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email):value-sanitization-algorithm-2\n      if (input.hasAttributeNS(null, \"multiple\")) {\n        val = val.split(\",\").map(token => stripLeadingAndTrailingASCIIWhitespace(token)).join(\",\");\n      } else {\n        val = stripNewlines(val);\n        val = stripLeadingAndTrailingASCIIWhitespace(val);\n      }\n      break;\n\n    case \"month\":\n      // https://html.spec.whatwg.org/multipage/input.html#month-state-(type=month):value-sanitization-algorithm\n      if (!isValidMonthString(val)) {\n        val = \"\";\n      }\n      break;\n\n    case \"number\":\n      // https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number):value-sanitization-algorithm\n      // TODO: using parseFloatingPointNumber in addition to isValidFloatingPointNumber to pass number.html WPT.\n      // Possible spec bug.\n      if (!isValidFloatingPointNumber(val) || parseFloatingPointNumber(val) === null) {\n        val = \"\";\n      }\n      break;\n\n    case \"range\":\n      // https://html.spec.whatwg.org/multipage/input.html#range-state-(type=range):value-sanitization-algorithm\n      // TODO: using parseFloatingPointNumber in addition to isValidFloatingPointNumber to pass number.html WPT.\n      // Possible spec bug.\n      if (!isValidFloatingPointNumber(val) || parseFloatingPointNumber(val) === null) {\n        const minimum = input._minimum;\n        const maximum = input._maximum;\n        const defaultValue = maximum < minimum ? minimum : (minimum + maximum) / 2;\n        val = `${defaultValue}`;\n      } else if (val < input._minimum) {\n        val = `${input._minimum}`;\n      } else if (val > input._maximum) {\n        val = `${input._maximum}`;\n      }\n      break;\n\n    case \"time\":\n      // https://html.spec.whatwg.org/multipage/input.html#time-state-(type=time):value-sanitization-algorithm\n      if (!isValidTimeString(val)) {\n        val = \"\";\n      }\n      break;\n\n    case \"url\":\n      // https://html.spec.whatwg.org/multipage/forms.html#url-state-(type=url):value-sanitization-algorithm\n      val = stripNewlines(val);\n      val = stripLeadingAndTrailingASCIIWhitespace(val);\n      break;\n\n    case \"week\":\n      // https://html.spec.whatwg.org/multipage/input.html#week-state-(type=week):value-sanitization-algorithm\n      if (!isValidWeekString(val)) {\n        val = \"\";\n      }\n  }\n\n  return val;\n};\n\n// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-owner\n// TODO: The spec describes an imperative process for assigning/resetting an element's form\n// owner based on activities involving form-associated elements. This simpler implementation\n// instead calculates the current form owner only when the property is accessed. This is not\n// sufficient to pass all the web platform tests, but is good enough for most purposes. We\n// should eventually update it to use the correct version, though. See\n// https://github.com/whatwg/html/issues/4050 for some discussion.\n\nexports.formOwner = formControl => {\n  const formAttr = formControl.getAttributeNS(null, \"form\");\n  if (formAttr === \"\") {\n    return null;\n  }\n  if (formAttr === null) {\n    return closest(formControl, \"form\");\n  }\n\n  const root = formControl.getRootNode({});\n  let firstElementWithId;\n  for (const descendant of domSymbolTree.treeIterator(root)) {\n    if (descendant.nodeType === NODE_TYPE.ELEMENT_NODE &&\n      descendant.getAttributeNS(null, \"id\") === formAttr) {\n      firstElementWithId = descendant;\n      break;\n    }\n  }\n\n  if (firstElementWithId &&\n    firstElementWithId.namespaceURI === HTML_NS &&\n    firstElementWithId.localName === \"form\") {\n    return firstElementWithId;\n  }\n  return null;\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { getLabelsForLabelable } = require(\"../helpers/form-controls\");\n\nclass ElementInternalsImpl {\n  constructor(globalObject, args, { targetElement }) {\n    this._targetElement = targetElement;\n  }\n\n  get shadowRoot() {\n    const shadow = this._targetElement._shadowRoot;\n\n    if (!shadow || !shadow._availableToElementInternals) {\n      return null;\n    }\n\n    return shadow;\n  }\n\n  get labels() {\n    if (!this._targetElement._ceDefinition.formAssociated) {\n      throw DOMException.create(this._targetElement._globalObject, [\n        \"Accesing an ElementInternal's labels property is only supported for form-associated custom elements\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    return getLabelsForLabelable(this._targetElement);\n  }\n\n  // https://html.spec.whatwg.org/#reflecting-content-attributes-in-idl-attributes\n  _reflectGetTheElement() {\n    return this._targetElement;\n  }\n\n  _reflectGetTheContentAttribute(reflectedContentAttributeName) {\n    return this._targetElement._internalContentAttributeMap?.get(reflectedContentAttributeName) ?? null;\n  }\n\n  _reflectSetTheContentAttribute(reflectedContentAttributeName, value) {\n    if (!this._targetElement._internalContentAttributeMap) {\n      this._targetElement._internalContentAttributeMap = new Map();\n    }\n\n    this._targetElement._internalContentAttributeMap.set(reflectedContentAttributeName, value);\n  }\n\n  _reflectDeleteTheContentAttribute(reflectedContentAttributeName) {\n    this._targetElement._internalContentAttributeMap?.delete(reflectedContentAttributeName);\n  }\n}\n\nmodule.exports = {\n  implementation: ElementInternalsImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"ElementInternals\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'ElementInternals'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"ElementInternals\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class ElementInternals {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get shadowRoot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get shadowRoot' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"shadowRoot\"]);\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n\n    get role() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get role' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"role\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set role(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set role' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'role' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"role\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"role\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaAtomic() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaAtomic' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-atomic\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaAtomic(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaAtomic' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaAtomic' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-atomic\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-atomic\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaAutoComplete() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaAutoComplete' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-autocomplete\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaAutoComplete(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaAutoComplete' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaAutoComplete' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-autocomplete\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-autocomplete\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaBusy() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaBusy' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-busy\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaBusy(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaBusy' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaBusy' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-busy\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-busy\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaChecked() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaChecked' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-checked\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaChecked(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaChecked' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaChecked' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-checked\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-checked\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColCount' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colcount\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColCount(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColCount' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColCount' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colcount\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colcount\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColIndex' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colindex\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColIndex' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColIndex' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colindex\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colindex\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColIndexText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColIndexText' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colindextext\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColIndexText(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColIndexText' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColIndexText' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colindextext\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colindextext\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaColSpan() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaColSpan' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-colspan\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaColSpan(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaColSpan' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaColSpan' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-colspan\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-colspan\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaCurrent() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaCurrent' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-current\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaCurrent(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaCurrent' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaCurrent' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-current\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-current\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaDescription() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaDescription' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-description\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaDescription(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaDescription' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaDescription' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-description\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-description\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaDisabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaDisabled' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-disabled\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaDisabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaDisabled' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaDisabled' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-disabled\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-disabled\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaExpanded() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaExpanded' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-expanded\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaExpanded(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaExpanded' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaExpanded' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-expanded\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-expanded\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaHasPopup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaHasPopup' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-haspopup\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaHasPopup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaHasPopup' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaHasPopup' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-haspopup\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-haspopup\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaHidden() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaHidden' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-hidden\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaHidden(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaHidden' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaHidden' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-hidden\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-hidden\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaInvalid() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaInvalid' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-invalid\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaInvalid(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaInvalid' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaInvalid' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-invalid\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-invalid\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaKeyShortcuts() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaKeyShortcuts' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-keyshortcuts\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaKeyShortcuts(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaKeyShortcuts' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaKeyShortcuts' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-keyshortcuts\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-keyshortcuts\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaLabel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaLabel' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-label\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaLabel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaLabel' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaLabel' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-label\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-label\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaLevel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaLevel' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-level\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaLevel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaLevel' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaLevel' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-level\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-level\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaLive() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaLive' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-live\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaLive(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaLive' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaLive' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-live\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-live\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaModal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaModal' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-modal\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaModal(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaModal' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaModal' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-modal\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-modal\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaMultiLine() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaMultiLine' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-multiline\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaMultiLine(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaMultiLine' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaMultiLine' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-multiline\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-multiline\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaMultiSelectable() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaMultiSelectable' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-multiselectable\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaMultiSelectable(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaMultiSelectable' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaMultiSelectable' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-multiselectable\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-multiselectable\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaOrientation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaOrientation' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-orientation\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaOrientation(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaOrientation' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaOrientation' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-orientation\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-orientation\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaPlaceholder() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaPlaceholder' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-placeholder\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaPlaceholder(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaPlaceholder' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaPlaceholder' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-placeholder\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-placeholder\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaPosInSet() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaPosInSet' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-posinset\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaPosInSet(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaPosInSet' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaPosInSet' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-posinset\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-posinset\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaPressed() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaPressed' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-pressed\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaPressed(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaPressed' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaPressed' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-pressed\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-pressed\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaReadOnly() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaReadOnly' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-readonly\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaReadOnly(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaReadOnly' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaReadOnly' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-readonly\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-readonly\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRequired() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRequired' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-required\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRequired(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRequired' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRequired' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-required\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-required\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRoleDescription() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRoleDescription' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-roledescription\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRoleDescription(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRoleDescription' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRoleDescription' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-roledescription\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-roledescription\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowCount' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowcount\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowCount(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowCount' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowCount' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowcount\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowcount\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowIndex' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowindex\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowIndex' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowIndex' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowindex\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowindex\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowIndexText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowIndexText' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowindextext\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowIndexText(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowIndexText' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowIndexText' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowindextext\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowindextext\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRowSpan() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRowSpan' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-rowspan\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRowSpan(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRowSpan' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRowSpan' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-rowspan\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-rowspan\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaSelected() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaSelected' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-selected\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaSelected(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaSelected' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaSelected' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-selected\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-selected\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaSetSize() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaSetSize' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-setsize\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaSetSize(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaSetSize' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaSetSize' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-setsize\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-setsize\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaSort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaSort' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-sort\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaSort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaSort' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaSort' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-sort\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-sort\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueMax() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueMax' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuemax\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueMax(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueMax' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueMax' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuemax\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuemax\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueMin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueMin' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuemin\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueMin(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueMin' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueMin' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuemin\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuemin\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueNow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueNow' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuenow\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueNow(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueNow' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueNow' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuenow\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuenow\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaValueText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaValueText' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-valuetext\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaValueText(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaValueText' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaValueText' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-valuetext\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-valuetext\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ariaRelevant() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ariaRelevant' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"aria-relevant\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ariaRelevant(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ariaRelevant' called on an object that is not a valid instance of ElementInternals.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'ariaRelevant' property on 'ElementInternals': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"aria-relevant\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"aria-relevant\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(ElementInternals.prototype, {\n    shadowRoot: { enumerable: true },\n    labels: { enumerable: true },\n    role: { enumerable: true },\n    ariaAtomic: { enumerable: true },\n    ariaAutoComplete: { enumerable: true },\n    ariaBusy: { enumerable: true },\n    ariaChecked: { enumerable: true },\n    ariaColCount: { enumerable: true },\n    ariaColIndex: { enumerable: true },\n    ariaColIndexText: { enumerable: true },\n    ariaColSpan: { enumerable: true },\n    ariaCurrent: { enumerable: true },\n    ariaDescription: { enumerable: true },\n    ariaDisabled: { enumerable: true },\n    ariaExpanded: { enumerable: true },\n    ariaHasPopup: { enumerable: true },\n    ariaHidden: { enumerable: true },\n    ariaInvalid: { enumerable: true },\n    ariaKeyShortcuts: { enumerable: true },\n    ariaLabel: { enumerable: true },\n    ariaLevel: { enumerable: true },\n    ariaLive: { enumerable: true },\n    ariaModal: { enumerable: true },\n    ariaMultiLine: { enumerable: true },\n    ariaMultiSelectable: { enumerable: true },\n    ariaOrientation: { enumerable: true },\n    ariaPlaceholder: { enumerable: true },\n    ariaPosInSet: { enumerable: true },\n    ariaPressed: { enumerable: true },\n    ariaReadOnly: { enumerable: true },\n    ariaRequired: { enumerable: true },\n    ariaRoleDescription: { enumerable: true },\n    ariaRowCount: { enumerable: true },\n    ariaRowIndex: { enumerable: true },\n    ariaRowIndexText: { enumerable: true },\n    ariaRowSpan: { enumerable: true },\n    ariaSelected: { enumerable: true },\n    ariaSetSize: { enumerable: true },\n    ariaSort: { enumerable: true },\n    ariaValueMax: { enumerable: true },\n    ariaValueMin: { enumerable: true },\n    ariaValueNow: { enumerable: true },\n    ariaValueText: { enumerable: true },\n    ariaRelevant: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"ElementInternals\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = ElementInternals;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: ElementInternals\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/custom-elements/ElementInternals-impl.js\");\n","\"use strict\";\nconst cssstyle = require(\"cssstyle\");\n\nclass ElementCSSInlineStyle {\n  _initElementCSSInlineStyle() {\n    this._settingCssText = false;\n    this._style = new cssstyle.CSSStyleDeclaration(newCssText => {\n      if (!this._settingCssText) {\n        this._settingCssText = true;\n        this.setAttributeNS(null, \"style\", newCssText);\n        this._settingCssText = false;\n      }\n    });\n  }\n  get style() {\n    return this._style;\n  }\n}\n\nmodule.exports = {\n  implementation: ElementCSSInlineStyle\n};\n","// This file is generated by scripts/generate-event-sets.js. Do not edit.\n\n\"use strict\";\n\nexports.globalEventHandlersEvents = new Set([\n  \"abort\",\n  \"auxclick\",\n  \"beforeinput\",\n  \"beforematch\",\n  \"beforetoggle\",\n  \"blur\",\n  \"cancel\",\n  \"canplay\",\n  \"canplaythrough\",\n  \"change\",\n  \"click\",\n  \"close\",\n  \"contextlost\",\n  \"contextmenu\",\n  \"contextrestored\",\n  \"copy\",\n  \"cuechange\",\n  \"cut\",\n  \"dblclick\",\n  \"drag\",\n  \"dragend\",\n  \"dragenter\",\n  \"dragleave\",\n  \"dragover\",\n  \"dragstart\",\n  \"drop\",\n  \"durationchange\",\n  \"emptied\",\n  \"ended\",\n  \"error\",\n  \"focus\",\n  \"formdata\",\n  \"input\",\n  \"invalid\",\n  \"keydown\",\n  \"keypress\",\n  \"keyup\",\n  \"load\",\n  \"loadeddata\",\n  \"loadedmetadata\",\n  \"loadstart\",\n  \"mousedown\",\n  \"mouseenter\",\n  \"mouseleave\",\n  \"mousemove\",\n  \"mouseout\",\n  \"mouseover\",\n  \"mouseup\",\n  \"paste\",\n  \"pause\",\n  \"play\",\n  \"playing\",\n  \"progress\",\n  \"ratechange\",\n  \"reset\",\n  \"resize\",\n  \"scroll\",\n  \"scrollend\",\n  \"securitypolicyviolation\",\n  \"seeked\",\n  \"seeking\",\n  \"select\",\n  \"slotchange\",\n  \"stalled\",\n  \"submit\",\n  \"suspend\",\n  \"timeupdate\",\n  \"toggle\",\n  \"volumechange\",\n  \"waiting\",\n  \"webkitanimationend\",\n  \"webkitanimationiteration\",\n  \"webkitanimationstart\",\n  \"webkittransitionend\",\n  \"wheel\",\n  \"touchstart\",\n  \"touchend\",\n  \"touchmove\",\n  \"touchcancel\",\n  \"pointerover\",\n  \"pointerenter\",\n  \"pointerdown\",\n  \"pointermove\",\n  \"pointerrawupdate\",\n  \"pointerup\",\n  \"pointercancel\",\n  \"pointerout\",\n  \"pointerleave\",\n  \"gotpointercapture\",\n  \"lostpointercapture\"\n]);\n\nexports.windowEventHandlersEvents = new Set([\n  \"afterprint\",\n  \"beforeprint\",\n  \"beforeunload\",\n  \"hashchange\",\n  \"languagechange\",\n  \"message\",\n  \"messageerror\",\n  \"offline\",\n  \"online\",\n  \"pagehide\",\n  \"pageshow\",\n  \"popstate\",\n  \"rejectionhandled\",\n  \"storage\",\n  \"unhandledrejection\",\n  \"unload\"\n]);\n","\"use strict\";\n\nconst { appendHandler, createEventAccessor } = require(\"../helpers/create-event-accessor\");\nconst { globalEventHandlersEvents, windowEventHandlersEvents } = require(\"../../../generated/event-sets\");\n\n// These events are specified on GlobalEventHandlers but, per the HTML spec, are reflected on the Window from the body\n// element. They are not derivable from the IDL alone.\nconst windowReflectingBodyElementEvents = new Set([\"blur\", \"error\", \"focus\", \"load\", \"resize\", \"scroll\"]);\n\nclass GlobalEventHandlersImpl {\n  _initGlobalEvents() {\n    this._registeredHandlers = new Set();\n    this._eventHandlers = Object.create(null);\n  }\n\n  _getEventHandlerTarget(event) {\n    // https://html.spec.whatwg.org/multipage/webappapis.html#determining-the-target-of-an-event-handler\n\n    // Step 1\n    if (this._localName !== \"body\" && this._localName !== \"frameset\") {\n      return this;\n    }\n\n    // Step 2\n    if (!windowEventHandlersEvents.has(event) && !windowReflectingBodyElementEvents.has(event)) {\n      return this;\n    }\n\n    // Step 3 + 4\n    const window = this._ownerDocument._defaultView;\n    return window || null;\n  }\n\n  _getEventHandlerFor(event) {\n    const target = this._getEventHandlerTarget(event);\n    if (!target) {\n      return null;\n    }\n\n    return target._eventHandlers[event];\n  }\n\n  _setEventHandlerFor(event, handler) {\n    const target = this._getEventHandlerTarget(event);\n    if (!target) {\n      return;\n    }\n\n    if (!target._registeredHandlers.has(event) && handler !== null) {\n      target._registeredHandlers.add(event);\n      appendHandler(target, event);\n    }\n    target._eventHandlers[event] = handler;\n  }\n\n  _globalEventChanged(event) {\n    const propName = \"on\" + event;\n    if (!(propName in this)) {\n      return;\n    }\n\n    // Only translate attribute changes into properties when runScripts: \"dangerously\" is set.\n    // Documents without a browsing context (i.e. without a _defaultView) never run scripts.\n    const runScripts = \"_runScripts\" in this ? this._runScripts : (this._ownerDocument._defaultView || {})._runScripts;\n    if (runScripts !== \"dangerously\") {\n      return;\n    }\n\n    const val = this.getAttributeNS(null, propName);\n    const handler = val === null ? null : { body: val };\n    this._setEventHandlerFor(event, handler);\n  }\n}\n\nfor (const event of globalEventHandlersEvents) {\n  createEventAccessor(GlobalEventHandlersImpl.prototype, event);\n}\n\nmodule.exports = {\n  implementation: GlobalEventHandlersImpl\n};\n","\"use strict\";\nconst { firstChildWithLocalName } = require(\"./traversal\");\nconst { HTML_NS } = require(\"./namespaces\");\n\n// https://html.spec.whatwg.org/multipage/interactive-elements.html#summary-for-its-parent-details\nexports.isSummaryForParentDetails = summaryElement => {\n  const parent = summaryElement.parentNode;\n  if (parent === null) {\n    return false;\n  }\n  if (parent._localName !== \"details\" || parent._namespaceURI !== HTML_NS) {\n    return false;\n  }\n  return firstChildWithLocalName(parent, \"summary\") === summaryElement;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventTarget = require(\"./EventTarget.js\");\nconst UIEventInit = require(\"./UIEventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  UIEventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"relatedTarget\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = EventTarget.convert(globalObject, value, { context: context + \" has member 'relatedTarget' that\" });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst UIEventImpl = require(\"./UIEvent-impl\").implementation;\n\nconst FocusEventInit = require(\"../../../generated/idl/FocusEventInit\");\n\nclass FocusEventImpl extends UIEventImpl {}\nFocusEventImpl.defaultInit = FocusEventInit.convert(undefined, undefined);\n\nexports.implementation = FocusEventImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst FocusEventInit = require(\"./FocusEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst UIEvent = require(\"./UIEvent.js\");\n\nconst interfaceName = \"FocusEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'FocusEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"FocusEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  UIEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class FocusEvent extends globalObject.UIEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'FocusEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'FocusEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = FocusEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'FocusEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get relatedTarget() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get relatedTarget' called on an object that is not a valid instance of FocusEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"relatedTarget\"]);\n    }\n  }\n  Object.defineProperties(FocusEvent.prototype, {\n    relatedTarget: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"FocusEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = FocusEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: FocusEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/FocusEvent-impl.js\");\n","\"use strict\";\nconst { SVG_NS } = require(\"../namespaces\");\n\n// https://svgwg.org/svg2-draft/render.html#TermNeverRenderedElement\nconst neverRenderedElements = new Set([\n  \"clipPath\",\n  \"defs\",\n  \"desc\",\n  \"linearGradient\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"pattern\",\n  \"radialGradient\",\n  \"script\",\n  \"style\",\n  \"title\",\n  \"symbol\"\n]);\n\n// https://svgwg.org/svg2-draft/render.html#Rendered-vs-NonRendered\nexports.isRenderedElement = elImpl => {\n  if (neverRenderedElements.has(elImpl._localName)) {\n    return false;\n  }\n\n  // This does not check for elements excluded because of conditional processing attributes or ‘switch’ structures,\n  // because conditional processing is not implemented.\n  // https://svgwg.org/svg2-draft/struct.html#ConditionalProcessing\n\n  // This does not check for computed style of display being none, since that is not yet implemented for HTML\n  // focusability either (and there are no tests yet).\n\n  if (!elImpl.isConnected) {\n    return false;\n  }\n\n  // The spec is unclear about how to deal with non-SVG parents, so we only perform this check for SVG-namespace\n  // parents.\n  if (elImpl.parentElement && elImpl.parentElement._namespaceURI === SVG_NS &&\n                              !exports.isRenderedElement(elImpl.parentNode)) {\n    return false;\n  }\n\n  return true;\n};\n","\"use strict\";\nconst FocusEvent = require(\"../../../generated/idl/FocusEvent.js\");\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst { isDisabled } = require(\"./form-controls.js\");\nconst { firstChildWithLocalName } = require(\"./traversal\");\nconst { createAnEvent } = require(\"./events\");\nconst { HTML_NS, SVG_NS } = require(\"./namespaces\");\nconst { isRenderedElement } = require(\"./svg/render\");\n\nconst focusableFormElements = new Set([\"input\", \"select\", \"textarea\", \"button\"]);\n\n// https://html.spec.whatwg.org/multipage/interaction.html#focusable-area, but also some of\n// https://html.spec.whatwg.org/multipage/interaction.html#focusing-steps and some of\n// https://svgwg.org/svg2-draft/interact.html#TermFocusable\nexports.isFocusableAreaElement = elImpl => {\n  // We implemented most of the suggested focusable elements found here:\n  // https://html.spec.whatwg.org/multipage/interaction.html#tabindex-value\n  // However, some suggested elements are not focusable in web browsers, as detailed here:\n  // https://github.com/whatwg/html/issues/5490\n  if (elImpl._namespaceURI === HTML_NS) {\n    if (!elImpl._ownerDocument._defaultView) {\n      return false;\n    }\n\n    if (!elImpl.isConnected) {\n      return false;\n    }\n\n    if (!Number.isNaN(parseInt(elImpl.getAttributeNS(null, \"tabindex\")))) {\n      return true;\n    }\n\n    if (elImpl._localName === \"iframe\") {\n      return true;\n    }\n\n    if (elImpl._localName === \"a\" && elImpl.hasAttributeNS(null, \"href\")) {\n      return true;\n    }\n\n    if (elImpl._localName === \"summary\" && elImpl.parentNode &&\n        elImpl.parentNode._localName === \"details\" &&\n        elImpl === firstChildWithLocalName(elImpl.parentNode, \"summary\")) {\n      return true;\n    }\n\n    if (focusableFormElements.has(elImpl._localName) && !isDisabled(elImpl)) {\n      if (elImpl._localName === \"input\" && elImpl.type === \"hidden\") {\n        return false;\n      }\n\n      return true;\n    }\n\n    if (elImpl.hasAttributeNS(null, \"contenteditable\")) {\n      return true;\n    }\n\n    return false;\n\n    // This does not check for a designMode Document as specified in\n    // https://html.spec.whatwg.org/multipage/interaction.html#editing-host because the designMode\n    // attribute is not implemented.\n  }\n\n  if (elImpl._namespaceURI === SVG_NS) {\n    if (!Number.isNaN(parseInt(elImpl.getAttributeNS(null, \"tabindex\"))) && isRenderedElement(elImpl)) {\n      return true;\n    }\n\n    if (elImpl._localName === \"a\" && elImpl.hasAttributeNS(null, \"href\")) {\n      return true;\n    }\n\n    return false;\n  }\n\n  return false;\n};\n\n// https://html.spec.whatwg.org/multipage/interaction.html#fire-a-focus-event plus the steps of\n// https://html.spec.whatwg.org/multipage/interaction.html#focus-update-steps that adjust Documents to Windows\n// It's extended with the bubbles option to also handle focusin/focusout, which are \"defined\" in\n// https://w3c.github.io/uievents/#event-type-focusin. See https://github.com/whatwg/html/issues/3514.\nexports.fireFocusEventWithTargetAdjustment = (name, target, relatedTarget, { bubbles = false } = {}) => {\n  if (target === null) {\n    // E.g. firing blur with nothing previously focused.\n    return;\n  }\n\n  const event = createAnEvent(name, target._globalObject, FocusEvent, {\n    bubbles,\n    composed: true,\n    relatedTarget,\n    view: target._ownerDocument._defaultView,\n    detail: 0\n  });\n\n  if (target._defaultView) {\n    target = idlUtils.implForWrapper(target._defaultView);\n  }\n\n  target._dispatch(event);\n};\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst { setAttributeValue, removeAttributeByName } = require(\"../attributes\");\nconst validateName = require(\"../helpers/validate-names\").name;\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst dataAttrRe = /^data-([^A-Z]*)$/;\n\nfunction attrCamelCase(name) {\n  return name.replace(/-([a-z])/g, (match, alpha) => alpha.toUpperCase());\n}\n\nfunction attrSnakeCase(name) {\n  return name.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`);\n}\n\nexports.implementation = class DOMStringMapImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n    this._element = privateData.element;\n  }\n  get [idlUtils.supportedPropertyNames]() {\n    const result = new Set();\n    const { attributes } = this._element;\n    for (let i = 0; i < attributes.length; i++) {\n      const attr = attributes.item(i);\n      const matches = dataAttrRe.exec(attr.localName);\n      if (matches) {\n        result.add(attrCamelCase(matches[1]));\n      }\n    }\n    return result;\n  }\n  [idlUtils.namedGet](name) {\n    const { attributes } = this._element;\n    for (let i = 0; i < attributes.length; i++) {\n      const attr = attributes.item(i);\n      const matches = dataAttrRe.exec(attr.localName);\n      if (matches && attrCamelCase(matches[1]) === name) {\n        return attr.value;\n      }\n    }\n    return undefined;\n  }\n  [idlUtils.namedSetNew](name, value) {\n    if (/-[a-z]/.test(name)) {\n      throw DOMException.create(this._globalObject, [\n        `'${name}' is not a valid property name`,\n        \"SyntaxError\"\n      ]);\n    }\n    name = `data-${attrSnakeCase(name)}`;\n    validateName(this._globalObject, name);\n    setAttributeValue(this._element, name, value);\n  }\n  [idlUtils.namedSetExisting](name, value) {\n    this[idlUtils.namedSetNew](name, value);\n  }\n  [idlUtils.namedDelete](name) {\n    name = `data-${attrSnakeCase(name)}`;\n    removeAttributeByName(this._element, name);\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DOMStringMap\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DOMStringMap'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DOMStringMap\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DOMStringMap {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(DOMStringMap.prototype, {\n    [Symbol.toStringTag]: { value: \"DOMStringMap\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = DOMStringMap;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DOMStringMap\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n      if (!Object.hasOwn(target, key)) {\n        keys.add(`${key}`);\n      }\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    const namedValue = target[implSymbol][utils.namedGet](P);\n\n    if (namedValue !== undefined && !Object.hasOwn(target, P) && !ignoreNamedProps) {\n      return {\n        writable: true,\n        enumerable: true,\n        configurable: true,\n        value: utils.tryWrapperForImpl(namedValue)\n      };\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n\n      if (typeof P === \"string\") {\n        let namedValue = V;\n\n        namedValue = conversions[\"DOMString\"](namedValue, {\n          context: \"Failed to set the '\" + P + \"' property on 'DOMStringMap': The provided value\",\n          globals: globalObject\n        });\n\n        ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n        try {\n          const creating = !(target[implSymbol][utils.namedGet](P) !== undefined);\n          if (creating) {\n            target[implSymbol][utils.namedSetNew](P, namedValue);\n          } else {\n            target[implSymbol][utils.namedSetExisting](P, namedValue);\n          }\n        } finally {\n          ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n        }\n\n        return true;\n      }\n    }\n    let ownDesc;\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (desc.get || desc.set) {\n      return false;\n    }\n\n    let namedValue = desc.value;\n\n    namedValue = conversions[\"DOMString\"](namedValue, {\n      context: \"Failed to set the '\" + P + \"' property on 'DOMStringMap': The provided value\",\n      globals: globalObject\n    });\n\n    ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n    try {\n      const creating = !(target[implSymbol][utils.namedGet](P) !== undefined);\n      if (creating) {\n        target[implSymbol][utils.namedSetNew](P, namedValue);\n      } else {\n        target[implSymbol][utils.namedSetExisting](P, namedValue);\n      }\n    } finally {\n      ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n    }\n\n    return true;\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (target[implSymbol][utils.namedGet](P) !== undefined && !Object.hasOwn(target, P)) {\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        target[implSymbol][utils.namedDelete](P);\n        return true;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/DOMStringMap-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst { isSummaryForParentDetails } = require(\"../helpers/details\");\nconst focusing = require(\"../helpers/focusing\");\nconst { HTML_NS, SVG_NS } = require(\"../helpers/namespaces\");\nconst DOMStringMap = require(\"../../../generated/idl/DOMStringMap\");\n\nconst tabIndexReflectAllowedHTMLElements = new Set([\n  \"a\", \"area\", \"button\", \"frame\", \"iframe\",\n  \"input\", \"object\", \"select\", \"textarea\"\n]);\n\nclass HTMLOrSVGElementImpl {\n  _initHTMLOrSVGElement() {\n    this._tabIndex = 0;\n    this._dataset = null;\n  }\n\n  get dataset() {\n    if (!this._dataset) {\n      this._dataset = DOMStringMap.createImpl(this._globalObject, [], { element: this });\n    }\n    return this._dataset;\n  }\n\n  // TODO this should be [Reflect]able if we added default value support to webidl2js's [Reflect]\n  get tabIndex() {\n    if (!this.hasAttributeNS(null, \"tabindex\")) {\n      if ((this.namespaceURI === HTML_NS && (tabIndexReflectAllowedHTMLElements.has(this._localName) ||\n                                             (this._localName === \"summary\" && isSummaryForParentDetails(this)))) ||\n          (this.namespaceURI === SVG_NS && this._localName === \"a\")) {\n        return 0;\n      }\n      return -1;\n    }\n    return conversions.long(this.getAttributeNS(null, \"tabindex\"));\n  }\n\n  set tabIndex(value) {\n    this.setAttributeNS(null, \"tabindex\", String(value));\n  }\n\n  focus() {\n    if (!focusing.isFocusableAreaElement(this)) {\n      return;\n    }\n    const ownerDocument = this._ownerDocument;\n    const previous = ownerDocument._lastFocusedElement;\n\n    if (previous === this) {\n      return;\n    }\n\n    ownerDocument._lastFocusedElement = null;\n    if (previous) {\n      focusing.fireFocusEventWithTargetAdjustment(\"blur\", previous, this);\n      focusing.fireFocusEventWithTargetAdjustment(\"focusout\", previous, this, { bubbles: true });\n    } else {\n      const frameElement = ownerDocument._defaultView._frameElement;\n      if (frameElement) {\n        const frameLastFocusedElement = frameElement.ownerDocument._lastFocusedElement;\n        frameElement.ownerDocument._lastFocusedElement = null;\n        focusing.fireFocusEventWithTargetAdjustment(\"blur\", frameLastFocusedElement, null);\n        focusing.fireFocusEventWithTargetAdjustment(\"focusout\", frameLastFocusedElement, null, { bubbles: true });\n        frameElement.ownerDocument._lastFocusedElement = frameElement;\n      }\n    }\n\n    ownerDocument._lastFocusedElement = this;\n    focusing.fireFocusEventWithTargetAdjustment(\"focus\", this, previous);\n    focusing.fireFocusEventWithTargetAdjustment(\"focusin\", this, previous, { bubbles: true });\n    ownerDocument.getSelection().collapse(this, 0);\n  }\n\n  blur() {\n    if (this._ownerDocument._lastFocusedElement !== this || !focusing.isFocusableAreaElement(this)) {\n      return;\n    }\n\n    this._ownerDocument._lastFocusedElement = null;\n    focusing.fireFocusEventWithTargetAdjustment(\"blur\", this, null);\n    focusing.fireFocusEventWithTargetAdjustment(\"focusout\", this, null, { bubbles: true });\n    this._ownerDocument.getSelection().empty();\n  }\n}\n\nexports.implementation = HTMLOrSVGElementImpl;\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst ElementImpl = require(\"./Element-impl\").implementation;\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst PointerEvent = require(\"../../../generated/idl/PointerEvent\");\nconst ElementInternals = require(\"../../../generated/idl/ElementInternals\");\nconst ElementCSSInlineStyleImpl = require(\"./ElementCSSInlineStyle-impl\").implementation;\nconst GlobalEventHandlersImpl = require(\"./GlobalEventHandlers-impl\").implementation;\nconst HTMLOrSVGElementImpl = require(\"./HTMLOrSVGElement-impl\").implementation;\nconst { firstChildWithLocalName } = require(\"../helpers/traversal\");\nconst { isDisabled } = require(\"../helpers/form-controls\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst { asciiLowercase } = require(\"../helpers/strings\");\nconst { lookupCEDefinition } = require(\"../helpers/custom-elements\");\n\nclass HTMLElementImpl extends ElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._initHTMLOrSVGElement();\n    this._initElementCSSInlineStyle();\n    this._initGlobalEvents();\n\n    this._clickInProgress = false;\n\n    // <summary> uses HTMLElement and has activation behavior\n    this._hasActivationBehavior = this._localName === \"summary\";\n\n    // https://html.spec.whatwg.org/#attached-internals\n    this._attachedInternals = null;\n  }\n\n  _activationBehavior() {\n    const parent = this.parentNode;\n    if (parent && parent._localName === \"details\" &&\n        this === firstChildWithLocalName(parent, \"summary\")) {\n      if (parent.hasAttributeNS(null, \"open\")) {\n        parent.removeAttributeNS(null, \"open\");\n      } else {\n        parent.setAttributeNS(null, \"open\", \"\");\n      }\n    }\n  }\n\n  // https://html.spec.whatwg.org/multipage/dom.html#the-translate-attribute\n  get translate() {\n    const translateAttr = this.getAttributeNS(null, \"translate\");\n    const translateAttrString = asciiLowercase(translateAttr || \"\");\n\n    if (translateAttrString === \"yes\" || (translateAttr && translateAttrString === \"\")) {\n      return true;\n    } else if (translateAttrString === \"no\") {\n      return false;\n    }\n\n    if (this === this.ownerDocument.documentElement) {\n      return true;\n    }\n\n    return this.parentElement && this.parentElement.translate;\n  }\n  set translate(value) {\n    if (value === true) {\n      this.setAttributeNS(null, \"translate\", \"yes\");\n    } else {\n      this.setAttributeNS(null, \"translate\", \"no\");\n    }\n  }\n\n  click() {\n    // https://html.spec.whatwg.org/multipage/interaction.html#dom-click\n    // https://html.spec.whatwg.org/multipage/webappapis.html#fire-a-synthetic-pointer-event\n\n    if (isDisabled(this)) {\n      return;\n    }\n\n    if (this._clickInProgress) {\n      return;\n    }\n\n    this._clickInProgress = true;\n\n    // https://github.com/whatwg/html/issues/4452\n    // https://github.com/whatwg/html/issues/11236\n    fireAnEvent(\"click\", this, PointerEvent, {\n      bubbles: true,\n      cancelable: true,\n      composed: true,\n      isTrusted: false,\n      pointerId: -1,\n      view: this.ownerDocument.defaultView\n    });\n\n    this._clickInProgress = false;\n  }\n\n  get draggable() {\n    const attributeValue = asciiLowercase(this.getAttributeNS(null, \"draggable\") || \"\");\n\n    if (attributeValue === \"true\") {\n      return true;\n    } else if (attributeValue === \"false\") {\n      return false;\n    }\n\n    return this._localName === \"img\" || (this._localName === \"a\" && this.hasAttributeNS(null, \"href\"));\n  }\n  set draggable(value) {\n    this.setAttributeNS(null, \"draggable\", String(value));\n  }\n\n  get dir() {\n    let dirValue = this.getAttributeNS(null, \"dir\");\n    if (dirValue !== null) {\n      dirValue = dirValue.toLowerCase();\n\n      if ([\"ltr\", \"rtl\", \"auto\"].includes(dirValue)) {\n        return dirValue;\n      }\n    }\n    return \"\";\n  }\n  set dir(value) {\n    this.setAttributeNS(null, \"dir\", value);\n  }\n\n  // https://html.spec.whatwg.org/#dom-attachinternals\n  attachInternals() {\n    if (this._isValue !== null) {\n      throw DOMException.create(this._globalObject, [\n        \"Unable to attach ElementInternals to a customized built-in element.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    const definition = lookupCEDefinition(this._ownerDocument, this._namespaceURI, this._localName, null);\n\n    if (definition === null) {\n      throw DOMException.create(this._globalObject, [\n        \"Unable to attach ElementInternals to non-custom elements.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    if (definition.disableInternals === true) {\n      throw DOMException.create(this._globalObject, [\n        \"ElementInternals is disabled by disabledFeature static field.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    if (this._attachedInternals !== null) {\n      throw DOMException.create(this._globalObject, [\n        \"ElementInternals for the specified element was already attached.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    if (this._ceState !== \"precustomized\" && this._ceState !== \"custom\") {\n      throw DOMException.create(this._globalObject, [\n        \"The attachInternals() function cannot be called prior to the execution of the custom element constructor.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    this._attachedInternals = ElementInternals.createImpl(this._globalObject, [], { targetElement: this });\n\n    return this._attachedInternals;\n  }\n\n  // Keep in sync with SVGElement. https://github.com/jsdom/jsdom/issues/2599\n  _attrModified(name, value, oldValue) {\n    if (name === \"style\" && value !== oldValue && !this._settingCssText) {\n      this._settingCssText = true;\n      this._style.cssText = value;\n      this._settingCssText = false;\n    } else if (name.startsWith(\"on\")) {\n      this._globalEventChanged(name.substring(2));\n    }\n\n    super._attrModified(name, value, oldValue);\n  }\n\n  get offsetParent() {\n    return null;\n  }\n\n  get offsetTop() {\n    return 0;\n  }\n\n  get offsetLeft() {\n    return 0;\n  }\n\n  get offsetWidth() {\n    return 0;\n  }\n\n  get offsetHeight() {\n    return 0;\n  }\n}\n\nmixin(HTMLElementImpl.prototype, ElementCSSInlineStyleImpl.prototype);\nmixin(HTMLElementImpl.prototype, GlobalEventHandlersImpl.prototype);\nmixin(HTMLElementImpl.prototype, HTMLOrSVGElementImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst OnErrorEventHandlerNonNull = require(\"./OnErrorEventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Element = require(\"./Element.js\");\n\nconst interfaceName = \"HTMLElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Element._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLElement extends globalObject.Element {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    click() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'click' called on an object that is not a valid instance of HTMLElement.\");\n      }\n\n      return esValue[implSymbol].click();\n    }\n\n    attachInternals() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'attachInternals' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].attachInternals());\n    }\n\n    focus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'focus' called on an object that is not a valid instance of HTMLElement.\");\n      }\n\n      return esValue[implSymbol].focus();\n    }\n\n    blur() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'blur' called on an object that is not a valid instance of HTMLElement.\");\n      }\n\n      return esValue[implSymbol].blur();\n    }\n\n    get title() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get title' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"title\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set title(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set title' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'title' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"title\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get lang() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get lang' called on an object that is not a valid instance of HTMLElement.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"lang\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set lang(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set lang' called on an object that is not a valid instance of HTMLElement.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'lang' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"lang\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get translate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get translate' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"translate\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set translate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set translate' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'translate' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"translate\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get dir() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get dir' called on an object that is not a valid instance of HTMLElement.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"dir\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set dir(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set dir' called on an object that is not a valid instance of HTMLElement.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'dir' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"dir\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hidden() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hidden' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"hidden\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hidden(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hidden' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'hidden' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"hidden\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"hidden\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get accessKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get accessKey' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"accesskey\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set accessKey(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set accessKey' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'accessKey' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"accesskey\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get draggable() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get draggable' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"draggable\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set draggable(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set draggable' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'draggable' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"draggable\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get offsetParent() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get offsetParent' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"offsetParent\"]);\n    }\n\n    get offsetTop() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get offsetTop' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"offsetTop\"];\n    }\n\n    get offsetLeft() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get offsetLeft' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"offsetLeft\"];\n    }\n\n    get offsetWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get offsetWidth' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"offsetWidth\"];\n    }\n\n    get offsetHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get offsetHeight' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"offsetHeight\"];\n    }\n\n    get style() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get style' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"style\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"style\"]);\n      });\n    }\n\n    set style(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set style' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      const Q = esValue[\"style\"];\n      if (!utils.isObject(Q)) {\n        throw new globalObject.TypeError(\"Property 'style' is not an object\");\n      }\n      Reflect.set(Q, \"cssText\", V);\n    }\n\n    get onabort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onabort' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onabort\"]);\n    }\n\n    set onabort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onabort' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onabort' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onabort\"] = V;\n    }\n\n    get onauxclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onauxclick' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onauxclick\"]);\n    }\n\n    set onauxclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onauxclick' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onauxclick' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onauxclick\"] = V;\n    }\n\n    get onbeforeinput() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeinput' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeinput\"]);\n    }\n\n    set onbeforeinput(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeinput' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeinput' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeinput\"] = V;\n    }\n\n    get onbeforematch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforematch' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforematch\"]);\n    }\n\n    set onbeforematch(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforematch' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforematch' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforematch\"] = V;\n    }\n\n    get onbeforetoggle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforetoggle' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforetoggle\"]);\n    }\n\n    set onbeforetoggle(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforetoggle' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforetoggle' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforetoggle\"] = V;\n    }\n\n    get onblur() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onblur' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onblur\"]);\n    }\n\n    set onblur(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onblur' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onblur' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onblur\"] = V;\n    }\n\n    get oncancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncancel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncancel\"]);\n    }\n\n    set oncancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncancel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncancel' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncancel\"] = V;\n    }\n\n    get oncanplay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncanplay' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncanplay\"]);\n    }\n\n    set oncanplay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncanplay' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncanplay' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncanplay\"] = V;\n    }\n\n    get oncanplaythrough() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncanplaythrough' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncanplaythrough\"]);\n    }\n\n    set oncanplaythrough(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncanplaythrough' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncanplaythrough' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncanplaythrough\"] = V;\n    }\n\n    get onchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onchange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onchange\"]);\n    }\n\n    set onchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onchange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onchange' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onchange\"] = V;\n    }\n\n    get onclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onclick' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onclick\"]);\n    }\n\n    set onclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onclick' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onclick' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onclick\"] = V;\n    }\n\n    get onclose() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onclose' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onclose\"]);\n    }\n\n    set onclose(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onclose' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onclose' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onclose\"] = V;\n    }\n\n    get oncontextlost() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextlost' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextlost\"]);\n    }\n\n    set oncontextlost(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextlost' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextlost' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextlost\"] = V;\n    }\n\n    get oncontextmenu() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextmenu' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextmenu\"]);\n    }\n\n    set oncontextmenu(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextmenu' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextmenu' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextmenu\"] = V;\n    }\n\n    get oncontextrestored() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextrestored' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextrestored\"]);\n    }\n\n    set oncontextrestored(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextrestored' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextrestored' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextrestored\"] = V;\n    }\n\n    get oncopy() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncopy' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncopy\"]);\n    }\n\n    set oncopy(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncopy' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncopy' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncopy\"] = V;\n    }\n\n    get oncuechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncuechange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncuechange\"]);\n    }\n\n    set oncuechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncuechange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncuechange' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncuechange\"] = V;\n    }\n\n    get oncut() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncut' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncut\"]);\n    }\n\n    set oncut(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncut' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncut' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncut\"] = V;\n    }\n\n    get ondblclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondblclick' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondblclick\"]);\n    }\n\n    set ondblclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondblclick' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondblclick' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondblclick\"] = V;\n    }\n\n    get ondrag() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondrag' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondrag\"]);\n    }\n\n    set ondrag(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondrag' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondrag' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondrag\"] = V;\n    }\n\n    get ondragend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragend\"]);\n    }\n\n    set ondragend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragend' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragend\"] = V;\n    }\n\n    get ondragenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragenter' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragenter\"]);\n    }\n\n    set ondragenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragenter' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragenter' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragenter\"] = V;\n    }\n\n    get ondragleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragleave' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragleave\"]);\n    }\n\n    set ondragleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragleave' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragleave' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragleave\"] = V;\n    }\n\n    get ondragover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragover' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragover\"]);\n    }\n\n    set ondragover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragover' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragover' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragover\"] = V;\n    }\n\n    get ondragstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragstart\"]);\n    }\n\n    set ondragstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragstart' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragstart\"] = V;\n    }\n\n    get ondrop() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondrop' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondrop\"]);\n    }\n\n    set ondrop(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondrop' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondrop' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondrop\"] = V;\n    }\n\n    get ondurationchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondurationchange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondurationchange\"]);\n    }\n\n    set ondurationchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondurationchange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondurationchange' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondurationchange\"] = V;\n    }\n\n    get onemptied() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onemptied' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onemptied\"]);\n    }\n\n    set onemptied(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onemptied' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onemptied' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onemptied\"] = V;\n    }\n\n    get onended() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onended' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onended\"]);\n    }\n\n    set onended(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onended' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onended' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onended\"] = V;\n    }\n\n    get onerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onerror' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onerror\"]);\n    }\n\n    set onerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onerror' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = OnErrorEventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onerror' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onerror\"] = V;\n    }\n\n    get onfocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onfocus' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onfocus\"]);\n    }\n\n    set onfocus(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onfocus' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onfocus' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onfocus\"] = V;\n    }\n\n    get onformdata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onformdata' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onformdata\"]);\n    }\n\n    set onformdata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onformdata' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onformdata' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onformdata\"] = V;\n    }\n\n    get oninput() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oninput' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oninput\"]);\n    }\n\n    set oninput(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oninput' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oninput' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oninput\"] = V;\n    }\n\n    get oninvalid() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oninvalid' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oninvalid\"]);\n    }\n\n    set oninvalid(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oninvalid' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oninvalid' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oninvalid\"] = V;\n    }\n\n    get onkeydown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeydown' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeydown\"]);\n    }\n\n    set onkeydown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeydown' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeydown' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeydown\"] = V;\n    }\n\n    get onkeypress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeypress' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeypress\"]);\n    }\n\n    set onkeypress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeypress' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeypress' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeypress\"] = V;\n    }\n\n    get onkeyup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeyup' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeyup\"]);\n    }\n\n    set onkeyup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeyup' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeyup' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeyup\"] = V;\n    }\n\n    get onload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onload' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onload\"]);\n    }\n\n    set onload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onload' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onload' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onload\"] = V;\n    }\n\n    get onloadeddata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadeddata' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadeddata\"]);\n    }\n\n    set onloadeddata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadeddata' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadeddata' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadeddata\"] = V;\n    }\n\n    get onloadedmetadata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadedmetadata' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadedmetadata\"]);\n    }\n\n    set onloadedmetadata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadedmetadata' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadedmetadata' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadedmetadata\"] = V;\n    }\n\n    get onloadstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadstart\"]);\n    }\n\n    set onloadstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadstart' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadstart\"] = V;\n    }\n\n    get onmousedown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmousedown' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmousedown\"]);\n    }\n\n    set onmousedown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmousedown' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmousedown' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmousedown\"] = V;\n    }\n\n    get onmouseenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseenter\"]);\n    }\n\n    set onmouseenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseenter' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseenter\"] = V;\n    }\n\n    get onmouseleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseleave\"]);\n    }\n\n    set onmouseleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseleave' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseleave\"] = V;\n    }\n\n    get onmousemove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmousemove' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmousemove\"]);\n    }\n\n    set onmousemove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmousemove' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmousemove' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmousemove\"] = V;\n    }\n\n    get onmouseout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseout' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseout\"]);\n    }\n\n    set onmouseout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseout' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseout' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseout\"] = V;\n    }\n\n    get onmouseover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseover' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseover\"]);\n    }\n\n    set onmouseover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseover' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseover' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseover\"] = V;\n    }\n\n    get onmouseup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseup' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseup\"]);\n    }\n\n    set onmouseup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseup' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseup' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseup\"] = V;\n    }\n\n    get onpaste() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpaste' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpaste\"]);\n    }\n\n    set onpaste(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpaste' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpaste' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpaste\"] = V;\n    }\n\n    get onpause() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpause' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpause\"]);\n    }\n\n    set onpause(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpause' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpause' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpause\"] = V;\n    }\n\n    get onplay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onplay' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onplay\"]);\n    }\n\n    set onplay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onplay' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onplay' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onplay\"] = V;\n    }\n\n    get onplaying() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onplaying' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onplaying\"]);\n    }\n\n    set onplaying(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onplaying' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onplaying' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onplaying\"] = V;\n    }\n\n    get onprogress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onprogress' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onprogress\"]);\n    }\n\n    set onprogress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onprogress' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onprogress' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onprogress\"] = V;\n    }\n\n    get onratechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onratechange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onratechange\"]);\n    }\n\n    set onratechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onratechange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onratechange' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onratechange\"] = V;\n    }\n\n    get onreset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onreset' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onreset\"]);\n    }\n\n    set onreset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onreset' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onreset' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onreset\"] = V;\n    }\n\n    get onresize() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onresize' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onresize\"]);\n    }\n\n    set onresize(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onresize' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onresize' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onresize\"] = V;\n    }\n\n    get onscroll() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onscroll' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onscroll\"]);\n    }\n\n    set onscroll(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onscroll' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onscroll' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onscroll\"] = V;\n    }\n\n    get onscrollend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onscrollend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onscrollend\"]);\n    }\n\n    set onscrollend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onscrollend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onscrollend' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onscrollend\"] = V;\n    }\n\n    get onsecuritypolicyviolation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsecuritypolicyviolation' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsecuritypolicyviolation\"]);\n    }\n\n    set onsecuritypolicyviolation(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsecuritypolicyviolation' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsecuritypolicyviolation' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsecuritypolicyviolation\"] = V;\n    }\n\n    get onseeked() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onseeked' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onseeked\"]);\n    }\n\n    set onseeked(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onseeked' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onseeked' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onseeked\"] = V;\n    }\n\n    get onseeking() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onseeking' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onseeking\"]);\n    }\n\n    set onseeking(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onseeking' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onseeking' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onseeking\"] = V;\n    }\n\n    get onselect() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onselect' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onselect\"]);\n    }\n\n    set onselect(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onselect' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onselect' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onselect\"] = V;\n    }\n\n    get onslotchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onslotchange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onslotchange\"]);\n    }\n\n    set onslotchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onslotchange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onslotchange' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onslotchange\"] = V;\n    }\n\n    get onstalled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onstalled' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onstalled\"]);\n    }\n\n    set onstalled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onstalled' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onstalled' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onstalled\"] = V;\n    }\n\n    get onsubmit() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsubmit' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsubmit\"]);\n    }\n\n    set onsubmit(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsubmit' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsubmit' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsubmit\"] = V;\n    }\n\n    get onsuspend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsuspend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsuspend\"]);\n    }\n\n    set onsuspend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsuspend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsuspend' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsuspend\"] = V;\n    }\n\n    get ontimeupdate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontimeupdate' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontimeupdate\"]);\n    }\n\n    set ontimeupdate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontimeupdate' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontimeupdate' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontimeupdate\"] = V;\n    }\n\n    get ontoggle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontoggle' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontoggle\"]);\n    }\n\n    set ontoggle(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontoggle' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontoggle' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontoggle\"] = V;\n    }\n\n    get onvolumechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onvolumechange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onvolumechange\"]);\n    }\n\n    set onvolumechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onvolumechange' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onvolumechange' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onvolumechange\"] = V;\n    }\n\n    get onwaiting() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwaiting' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwaiting\"]);\n    }\n\n    set onwaiting(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwaiting' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwaiting' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwaiting\"] = V;\n    }\n\n    get onwebkitanimationend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationend\"]);\n    }\n\n    set onwebkitanimationend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationend' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationend\"] = V;\n    }\n\n    get onwebkitanimationiteration() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationiteration' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationiteration\"]);\n    }\n\n    set onwebkitanimationiteration(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationiteration' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationiteration' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationiteration\"] = V;\n    }\n\n    get onwebkitanimationstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationstart\"]);\n    }\n\n    set onwebkitanimationstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationstart' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationstart\"] = V;\n    }\n\n    get onwebkittransitionend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkittransitionend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkittransitionend\"]);\n    }\n\n    set onwebkittransitionend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkittransitionend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkittransitionend' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkittransitionend\"] = V;\n    }\n\n    get onwheel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwheel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwheel\"]);\n    }\n\n    set onwheel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwheel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwheel' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwheel\"] = V;\n    }\n\n    get ontouchstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchstart\"]);\n    }\n\n    set ontouchstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchstart' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchstart' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchstart\"] = V;\n    }\n\n    get ontouchend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchend\"]);\n    }\n\n    set ontouchend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchend' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchend' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchend\"] = V;\n    }\n\n    get ontouchmove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchmove' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchmove\"]);\n    }\n\n    set ontouchmove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchmove' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchmove' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchmove\"] = V;\n    }\n\n    get ontouchcancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchcancel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchcancel\"]);\n    }\n\n    set ontouchcancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchcancel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchcancel' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchcancel\"] = V;\n    }\n\n    get onpointerover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerover' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerover\"]);\n    }\n\n    set onpointerover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerover' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerover' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerover\"] = V;\n    }\n\n    get onpointerenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerenter' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerenter\"]);\n    }\n\n    set onpointerenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerenter' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerenter' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerenter\"] = V;\n    }\n\n    get onpointerdown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerdown' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerdown\"]);\n    }\n\n    set onpointerdown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerdown' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerdown' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerdown\"] = V;\n    }\n\n    get onpointermove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointermove' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointermove\"]);\n    }\n\n    set onpointermove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointermove' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointermove' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointermove\"] = V;\n    }\n\n    get onpointerrawupdate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerrawupdate' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerrawupdate\"]);\n    }\n\n    set onpointerrawupdate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerrawupdate' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerrawupdate' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerrawupdate\"] = V;\n    }\n\n    get onpointerup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerup' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerup\"]);\n    }\n\n    set onpointerup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerup' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerup' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerup\"] = V;\n    }\n\n    get onpointercancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointercancel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointercancel\"]);\n    }\n\n    set onpointercancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointercancel' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointercancel' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointercancel\"] = V;\n    }\n\n    get onpointerout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerout' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerout\"]);\n    }\n\n    set onpointerout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerout' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerout' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerout\"] = V;\n    }\n\n    get onpointerleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerleave' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerleave\"]);\n    }\n\n    set onpointerleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerleave' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerleave' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerleave\"] = V;\n    }\n\n    get ongotpointercapture() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ongotpointercapture' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ongotpointercapture\"]);\n    }\n\n    set ongotpointercapture(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ongotpointercapture' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ongotpointercapture' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ongotpointercapture\"] = V;\n    }\n\n    get onlostpointercapture() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onlostpointercapture' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onlostpointercapture\"]);\n    }\n\n    set onlostpointercapture(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onlostpointercapture' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onlostpointercapture' property on 'HTMLElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onlostpointercapture\"] = V;\n    }\n\n    get dataset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get dataset' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"dataset\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"dataset\"]);\n      });\n    }\n\n    get nonce() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get nonce' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"nonce\");\n      return value === null ? \"\" : value;\n    }\n\n    set nonce(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set nonce' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'nonce' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol]._reflectSetTheContentAttribute(\"nonce\", V);\n    }\n\n    get tabIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tabIndex' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"tabIndex\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set tabIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set tabIndex' called on an object that is not a valid instance of HTMLElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'tabIndex' property on 'HTMLElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"tabIndex\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLElement.prototype, {\n    click: { enumerable: true },\n    attachInternals: { enumerable: true },\n    focus: { enumerable: true },\n    blur: { enumerable: true },\n    title: { enumerable: true },\n    lang: { enumerable: true },\n    translate: { enumerable: true },\n    dir: { enumerable: true },\n    hidden: { enumerable: true },\n    accessKey: { enumerable: true },\n    draggable: { enumerable: true },\n    offsetParent: { enumerable: true },\n    offsetTop: { enumerable: true },\n    offsetLeft: { enumerable: true },\n    offsetWidth: { enumerable: true },\n    offsetHeight: { enumerable: true },\n    style: { enumerable: true },\n    onabort: { enumerable: true },\n    onauxclick: { enumerable: true },\n    onbeforeinput: { enumerable: true },\n    onbeforematch: { enumerable: true },\n    onbeforetoggle: { enumerable: true },\n    onblur: { enumerable: true },\n    oncancel: { enumerable: true },\n    oncanplay: { enumerable: true },\n    oncanplaythrough: { enumerable: true },\n    onchange: { enumerable: true },\n    onclick: { enumerable: true },\n    onclose: { enumerable: true },\n    oncontextlost: { enumerable: true },\n    oncontextmenu: { enumerable: true },\n    oncontextrestored: { enumerable: true },\n    oncopy: { enumerable: true },\n    oncuechange: { enumerable: true },\n    oncut: { enumerable: true },\n    ondblclick: { enumerable: true },\n    ondrag: { enumerable: true },\n    ondragend: { enumerable: true },\n    ondragenter: { enumerable: true },\n    ondragleave: { enumerable: true },\n    ondragover: { enumerable: true },\n    ondragstart: { enumerable: true },\n    ondrop: { enumerable: true },\n    ondurationchange: { enumerable: true },\n    onemptied: { enumerable: true },\n    onended: { enumerable: true },\n    onerror: { enumerable: true },\n    onfocus: { enumerable: true },\n    onformdata: { enumerable: true },\n    oninput: { enumerable: true },\n    oninvalid: { enumerable: true },\n    onkeydown: { enumerable: true },\n    onkeypress: { enumerable: true },\n    onkeyup: { enumerable: true },\n    onload: { enumerable: true },\n    onloadeddata: { enumerable: true },\n    onloadedmetadata: { enumerable: true },\n    onloadstart: { enumerable: true },\n    onmousedown: { enumerable: true },\n    onmouseenter: { enumerable: true },\n    onmouseleave: { enumerable: true },\n    onmousemove: { enumerable: true },\n    onmouseout: { enumerable: true },\n    onmouseover: { enumerable: true },\n    onmouseup: { enumerable: true },\n    onpaste: { enumerable: true },\n    onpause: { enumerable: true },\n    onplay: { enumerable: true },\n    onplaying: { enumerable: true },\n    onprogress: { enumerable: true },\n    onratechange: { enumerable: true },\n    onreset: { enumerable: true },\n    onresize: { enumerable: true },\n    onscroll: { enumerable: true },\n    onscrollend: { enumerable: true },\n    onsecuritypolicyviolation: { enumerable: true },\n    onseeked: { enumerable: true },\n    onseeking: { enumerable: true },\n    onselect: { enumerable: true },\n    onslotchange: { enumerable: true },\n    onstalled: { enumerable: true },\n    onsubmit: { enumerable: true },\n    onsuspend: { enumerable: true },\n    ontimeupdate: { enumerable: true },\n    ontoggle: { enumerable: true },\n    onvolumechange: { enumerable: true },\n    onwaiting: { enumerable: true },\n    onwebkitanimationend: { enumerable: true },\n    onwebkitanimationiteration: { enumerable: true },\n    onwebkitanimationstart: { enumerable: true },\n    onwebkittransitionend: { enumerable: true },\n    onwheel: { enumerable: true },\n    ontouchstart: { enumerable: true },\n    ontouchend: { enumerable: true },\n    ontouchmove: { enumerable: true },\n    ontouchcancel: { enumerable: true },\n    onpointerover: { enumerable: true },\n    onpointerenter: { enumerable: true },\n    onpointerdown: { enumerable: true },\n    onpointermove: { enumerable: true },\n    onpointerrawupdate: { enumerable: true },\n    onpointerup: { enumerable: true },\n    onpointercancel: { enumerable: true },\n    onpointerout: { enumerable: true },\n    onpointerleave: { enumerable: true },\n    ongotpointercapture: { enumerable: true },\n    onlostpointercapture: { enumerable: true },\n    dataset: { enumerable: true },\n    nonce: { enumerable: true },\n    tabIndex: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLElement-impl.js\");\n","/**\n * Forked and modified from nwsapi@2.2.2\n * - Export to cjs only\n * - Remove ./modules directory\n * - Remove unused exported properties\n * - Remove unused pseudo-classes\n * - Remove Snapshot.root and resolve document.documentElement on runtime\n * - Use `let` and `const` as much as possible\n * - Use `===` and `!==`\n * - Fix `:nth-of-type()`\n * - Fix function source for :root, :target and :indeterminate pseudo-classes\n * - Fix <ident-token>\n * - Support complex selectors within `:is()` and `:not()`\n * - Add ::slotted() and ::part() to pseudo-elements list\n * - Add isContentEditable() function\n * - Add createMatchingParensRegex() function from upstream\n * - Invalidate cache for :has() pseudo class\n * - Optimize some regular expressions\n */\n/*\n * Copyright (C) 2007-2019 Diego Perini\n * All rights reserved.\n *\n * nwsapi.js - Fast CSS Selectors API Engine\n *\n * Author: Diego Perini <diego.perini at gmail com>\n * Version: 2.2.0\n * Created: 20070722\n * Release: 20220901\n *\n * License:\n *  http://javascript.nwbox.com/nwsapi/MIT-LICENSE\n * Download:\n *  http://javascript.nwbox.com/nwsapi/nwsapi.js\n */\n\n(function Export(global, factory) {\n  'use strict';\n  module.exports = factory;\n})(this, function Factory(global, Export) {\n  const version = 'nwsapi-2.2.2';\n\n  let doc = global.document;\n\n  /**\n   * Generate a regex that matches a balanced set of parentheses.\n   * Outermost parentheses are excluded so any amount of children can be handled.\n   * See https://stackoverflow.com/a/35271017 for reference\n   *\n   * @param {number} depth\n   * @return {string}\n   */\n  function createMatchingParensRegex(depth = 1) {\n    const out = '\\\\([^)(]*?(?:'.repeat(depth) + '\\\\([^)(]*?\\\\)' + '[^)(]*?)*?\\\\)'.repeat(depth);\n    // remove outermost escaped parens\n    return out.slice(2, out.length - 2);\n  }\n\n  const CFG = {\n    // extensions\n    operators: '[~*^$|]=|=',\n    combinators: '[\\\\s>+~](?=[^>+~])'\n  };\n\n  const NOT = {\n    // not enclosed in double/single/parens/square\n    doubleEnc: '(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)',\n    singleEnc: \"(?=(?:[^']*'[^']*')*[^']*$)\",\n    parensEnc: '(?![^\\\\x28]*\\\\x29)',\n    squareEnc: '(?![^\\\\x5b]*\\\\x5d)'\n  };\n\n  const REX = {\n    // regular expressions\n    hasEscapes: /\\\\/,\n    hexNumbers: /^[0-9a-f]/i,\n    escOrQuote: /^\\\\|[\\x22\\x27]/,\n    regExpChar: /(?:(?!\\\\)[\\\\^$.*+?()[\\]{}|/])/g,\n    trimSpaces: /[\\r\\n\\f]|^\\s+|\\s+$/g,\n    commaGroup: RegExp('(\\\\s{0,255},\\\\s{0,255})' + NOT.squareEnc + NOT.parensEnc, 'g'),\n    splitGroup: /((?:\\x28[^\\x29]{0,255}\\x29|\\[[^\\]]{0,255}\\]|\\\\.|[^,])+)/g,\n    fixEscapes: /\\\\([0-9a-f]{1,6}\\s?|.)|([\\x22\\x27])/gi,\n    combineWSP: RegExp('\\\\s{1,255}' + NOT.singleEnc + NOT.doubleEnc, 'g'),\n    tabCharWSP: RegExp('(\\\\s?\\\\t{1,255}\\\\s?)' + NOT.singleEnc + NOT.doubleEnc, 'g'),\n    pseudosWSP: RegExp('\\\\s{1,255}([-+])\\\\s{1,255}' + NOT.squareEnc, 'g')\n  };\n\n  const STD = {\n    combinator: /\\s?([>+~])\\s?/g,\n    apimethods: /^(?:[a-z]+|\\*)\\|/i,\n    namespaces: /(\\*|[a-z]+)\\|[-a-z]+/i\n  };\n\n  const GROUPS = {\n    // pseudo-classes requiring parameters\n    logicalsel: '(is|where|matches|not|has)(?:\\\\x28\\\\s?(' + createMatchingParensRegex(3) + ')\\\\s?\\\\x29)',\n    treestruct: '(nth(?:-last)?(?:-child|-of-type))(?:\\\\x28\\\\s?(even|odd|(?:[-+]?\\\\d*)(?:n\\\\s?[-+]?\\\\s?\\\\d*)?)\\\\s?(?:\\\\x29|$))',\n    // pseudo-classes not requiring parameters\n    locationpc: '(any-link|link|visited|target)\\\\b',\n    structural: '(root|empty|(?:(?:first|last|only)(?:-child|-of-type)))\\\\b',\n    inputstate: '(enabled|disabled|read-(?:only|write)|placeholder-shown|default)\\\\b',\n    inputvalue: '(checked|indeterminate)\\\\b',\n    // pseudo-classes for parsing only selectors\n    pseudoNop: '(autofill|-webkit-autofill)\\\\b',\n    // pseudo-elements starting with single colon (:)\n    pseudoSng: '(after|before|first-letter|first-line)\\\\b',\n    // pseudo-elements starting with double colon (::)\n    pseudoDbl: ':(after|before|first-letter|first-line|selection|part|placeholder|slotted|-webkit-[-a-z0-9]{2,})\\\\b'\n  };\n\n  const Patterns = {\n    // pseudo-classes\n    treestruct: RegExp('^:(?:' + GROUPS.treestruct + ')(.*)', 'i'),\n    structural: RegExp('^:(?:' + GROUPS.structural + ')(.*)', 'i'),\n    inputstate: RegExp('^:(?:' + GROUPS.inputstate + ')(.*)', 'i'),\n    inputvalue: RegExp('^:(?:' + GROUPS.inputvalue + ')(.*)', 'i'),\n    locationpc: RegExp('^:(?:' + GROUPS.locationpc + ')(.*)', 'i'),\n    logicalsel: RegExp('^:(?:' + GROUPS.logicalsel + ')(.*)', 'i'),\n    pseudoNop: RegExp('^:(?:' + GROUPS.pseudoNop + ')(.*)', 'i'),\n    pseudoSng: RegExp('^:(?:' + GROUPS.pseudoSng + ')(.*)', 'i'),\n    pseudoDbl: RegExp('^:(?:' + GROUPS.pseudoDbl + ')(.*)', 'i'),\n    // combinator symbols\n    children: /^\\s?>\\s?(.*)/,\n    adjacent: /^\\s?\\+\\s?(.*)/,\n    relative: /^\\s?~\\s?(.*)/,\n    ancestor: /^\\s+(.*)/,\n    // universal & namespace\n    universal: /^\\*(.*)/,\n    namespace: /^(\\w+|\\*)?\\|(.*)/\n  };\n\n  // emulate firefox error strings\n  const qsNotArgs = 'Not enough arguments';\n  const qsInvalid = ' is not a valid selector';\n\n  // detect structural pseudo-classes in selectors\n  const reNthElem = /(:nth(?:-last)?-child)/i;\n  const reNthType = /(:nth(?:-last)?-of-type)/i;\n\n  // placeholder for global regexp\n  let reOptimizer;\n  let reValidator;\n\n  // special handling configuration flags\n  const Config = {\n    IDS_DUPES: true,\n    MIXEDCASE: true,\n    LOGERRORS: true,\n    VERBOSITY: true\n  };\n\n  let NAMESPACE;\n  let QUIRKS_MODE;\n  let HTML_DOCUMENT;\n\n  const ATTR_STD_OPS = {\n    '=': 1,\n    '^=': 1,\n    '$=': 1,\n    '|=': 1,\n    '*=': 1,\n    '~=': 1\n  };\n\n  const HTML_TABLE = {\n    accept: 1,\n    'accept-charset': 1,\n    align: 1,\n    alink: 1,\n    axis: 1,\n    bgcolor: 1,\n    charset: 1,\n    checked: 1,\n    clear: 1,\n    codetype: 1,\n    color: 1,\n    compact: 1,\n    declare: 1,\n    defer: 1,\n    dir: 1,\n    direction: 1,\n    disabled: 1,\n    enctype: 1,\n    face: 1,\n    frame: 1,\n    hreflang: 1,\n    'http-equiv': 1,\n    lang: 1,\n    language: 1,\n    link: 1,\n    media: 1,\n    method: 1,\n    multiple: 1,\n    nohref: 1,\n    noresize: 1,\n    noshade: 1,\n    nowrap: 1,\n    readonly: 1,\n    rel: 1,\n    rev: 1,\n    rules: 1,\n    scope: 1,\n    scrolling: 1,\n    selected: 1,\n    shape: 1,\n    target: 1,\n    text: 1,\n    type: 1,\n    valign: 1,\n    valuetype: 1,\n    vlink: 1\n  };\n\n  const Combinators = {};\n\n  const Selectors = {};\n\n  const Operators = {\n    '=': {\n      p1: '^',\n      p2: '$',\n      p3: 'true'\n    },\n    '^=': {\n      p1: '^',\n      p2: '',\n      p3: 'true'\n    },\n    '$=': {\n      p1: '',\n      p2: '$',\n      p3: 'true'\n    },\n    '*=': {\n      p1: '',\n      p2: '',\n      p3: 'true'\n    },\n    '|=': {\n      p1: '^',\n      p2: '(-|$)',\n      p3: 'true'\n    },\n    '~=': {\n      p1: '(^|\\\\s)',\n      p2: '(\\\\s|$)',\n      p3: 'true'\n    }\n  };\n\n  const concatCall = function (nodes, callback) {\n    let i = 0;\n    const l = nodes.length;\n    const list = Array(l);\n    while (l > i) {\n      if (callback(list[i] = nodes[i]) === false) {\n        break;\n      }\n      ++i;\n    }\n    return list;\n  };\n\n  const concatList = function (list, nodes) {\n    let i = -1;\n    let l = nodes.length;\n    while (l--) {\n      list[list.length] = nodes[++i];\n    }\n    return list;\n  };\n\n  let hasDupes = false;\n\n  const documentOrder = function (a, b) {\n    if (!hasDupes && a === b) {\n      hasDupes = true;\n      return 0;\n    }\n    return a.compareDocumentPosition(b) & 4 ? -1 : 1;\n  };\n\n  const unique = function (nodes) {\n    let i = 0;\n    let j = -1;\n    let l = nodes.length + 1;\n    const list = [];\n    while (--l) {\n      if (nodes[i++] === nodes[i]) {\n        continue;\n      }\n      list[++j] = nodes[i - 1];\n    }\n    hasDupes = false;\n    return list;\n  };\n\n  // check context for mixed content\n  const hasMixedCaseTagNames = function (context) {\n    const api = 'getElementsByTagNameNS';\n\n    // current host context (ownerDocument)\n    context = context.ownerDocument || context;\n\n    // documentElement (root) element namespace or default html/xhtml namespace\n    const ns = context.documentElement && context.documentElement.namespaceURI\n       ? context.documentElement.namespaceURI\n       : 'http://www.w3.org/1999/xhtml';\n\n    // checking the number of non HTML nodes in the document\n    return (context[api]('*', '*').length - context[api](ns, '*').length) > 0;\n  };\n\n  // check if the document type is HTML\n  const isHTML = function (node) {\n    const doc = node.ownerDocument || node;\n    return doc.nodeType === 9 && doc.contentType === 'text/html';\n  };\n\n  // convert single codepoint to UTF-16 encoding\n  const codePointToUTF16 = function (codePoint) {\n    // out of range, use replacement character\n    if (codePoint < 1 || codePoint > 0x10ffff ||\n        (codePoint > 0xd7ff && codePoint < 0xe000)) {\n      return '\\\\ufffd';\n    }\n    // javascript strings are UTF-16 encoded\n    if (codePoint < 0x10000) {\n      const lowHex = '000' + codePoint.toString(16);\n      return '\\\\u' + lowHex.substr(lowHex.length - 4);\n    }\n    // supplementary high + low surrogates\n    return '\\\\u' + (((codePoint - 0x10000) >> 0x0a) + 0xd800).toString(16) +\n           '\\\\u' + (((codePoint - 0x10000) % 0x400) + 0xdc00).toString(16);\n  };\n\n  // convert single codepoint to string\n  const stringFromCodePoint = function (codePoint) {\n    // out of range, use replacement character\n    if (codePoint < 1 || codePoint > 0x10ffff ||\n        (codePoint > 0xd7ff && codePoint < 0xe000)) {\n      return '\\ufffd';\n    }\n    if (codePoint < 0x10000) {\n      return String.fromCharCode(codePoint);\n    }\n    return String.fromCodePoint(codePoint);\n  };\n\n  // convert escape sequence in a CSS string or identifier\n  // to javascript string with javascript escape sequences\n  const convertEscapes = function (str) {\n    return REX.hasEscapes.test(str)\n      ? str.replace(REX.fixEscapes, function (substring, p1, p2) {\n        // unescaped \" or '\n        return p2\n          ? '\\\\' + p2\n          // javascript strings are UTF-16 encoded\n          : REX.hexNumbers.test(p1)\n            ? codePointToUTF16(parseInt(p1, 16))\n            // \\' \\\"\n            : REX.escOrQuote.test(p1)\n              ? substring\n              // \\g \\h \\. \\# etc\n              : p1;\n      })\n      : str;\n  };\n\n  // convert escape sequence in a CSS string or identifier\n  // to javascript string with characters representations\n  const unescapeIdentifier = function (str) {\n    return REX.hasEscapes.test(str)\n      ? str.replace(REX.fixEscapes, function (substring, p1, p2) {\n        // unescaped \" or '\n        return p2 || (REX.hexNumbers.test(p1)\n          ? stringFromCodePoint(parseInt(p1, 16))\n          // \\' \\\"\n          : REX.escOrQuote.test(p1)\n            ? substring\n            // \\g \\h \\. \\# etc\n            : p1);\n      })\n      : str;\n  };\n\n  // empty set\n  const none = [];\n\n  // cached lambdas\n  const matchLambdas = {};\n  const selectLambdas = {};\n\n  // cached resolvers\n  let matchResolvers = {};\n  let selectResolvers = {};\n\n  const method = {\n    '#': 'getElementById',\n    '*': 'getElementsByTagName',\n    '|': 'getElementsByTagNameNS',\n    '.': 'getElementsByClassName'\n  };\n\n  // find duplicate ids using iterative walk\n  const byIdRaw = function (id, context) {\n    let node = context;\n    const nodes = [];\n    let next = node.firstElementChild;\n    while ((node = next)) {\n      node.id === id && nodes.push(node);\n      if ((next = node.firstElementChild || node.nextElementSibling)) {\n        continue;\n      }\n      while (!next && (node = node.parentElement) && node !== context) {\n        next = node.nextElementSibling;\n      }\n    }\n    return nodes;\n  };\n\n  // context agnostic getElementById\n  const byId = function (id, context) {\n    let e;\n    const api = method['#'];\n\n    // duplicates id allowed\n    if (Config.IDS_DUPES === false) {\n      if (api in context) {\n        e = context[api](id);\n        return e ? [e] : none;\n      }\n    } else if ('all' in context) {\n      if ((e = context.all[id])) {\n        if (e.nodeType === 1) {\n          return e.getAttribute('id') !== id ? [] : [e];\n        } else if (id === 'length') {\n          e = context[api](id);\n          return e ? [e] : none;\n        }\n        const nodes = [];\n        for (let i = 0, l = e.length; l > i; ++i) {\n          if (e[i].id === id) {\n            nodes.push(e[i]);\n          }\n        }\n        return nodes.length ? nodes : none;\n      } else {\n        return none;\n      }\n    }\n\n    return byIdRaw(id, context);\n  };\n\n  // context agnostic getElementsByTagName\n  const byTag = function (tag, context) {\n    let e;\n    let nodes;\n    const api = method['*'];\n\n    // DOCUMENT_NODE (9) & ELEMENT_NODE (1)\n    if (api in context) {\n      return Array.prototype.slice.call(context[api](tag));\n    } else {\n      tag = tag.toLowerCase();\n      // DOCUMENT_FRAGMENT_NODE (11)\n      if ((e = context.firstElementChild)) {\n        if (!(e.nextElementSibling || tag === '*' || e.localName === tag)) {\n          return Array.prototype.slice.call(e[api](tag));\n        } else {\n          nodes = [];\n          do {\n            if (tag === '*' || e.localName === tag) {\n              nodes.push(e);\n            }\n            concatList(nodes, e[api](tag));\n          } while ((e = e.nextElementSibling));\n        }\n      } else {\n        nodes = none;\n      }\n    }\n    return nodes;\n  };\n\n  // context agnostic getElementsByClassName\n  const byClass = function (cls, context) {\n    let e;\n    let nodes;\n    const api = method['.'];\n    let reCls;\n    // DOCUMENT_NODE (9) & ELEMENT_NODE (1)\n    if (api in context) {\n      return Array.prototype.slice.call(context[api](cls));\n    } else {\n      // DOCUMENT_FRAGMENT_NODE (11)\n      if ((e = context.firstElementChild)) {\n        reCls = RegExp('(^|\\\\s)' + cls + '(\\\\s|$)', QUIRKS_MODE ? 'i' : '');\n        if (!(e.nextElementSibling || reCls.test(e.className))) {\n          return Array.prototype.slice.call(e[api](cls));\n        } else {\n          nodes = [];\n          do {\n            if (reCls.test(e.className)) {\n              nodes.push(e);\n            }\n            concatList(nodes, e[api](cls));\n          } while ((e = e.nextElementSibling));\n        }\n      } else nodes = none;\n    }\n    return nodes;\n  };\n\n  const compat = {\n    '#': function (c, n) {\n      REX.hasEscapes.test(n) && (n = unescapeIdentifier(n));\n      return function (e, f) {\n        return byId(n, c);\n      };\n    },\n    '*': function (c, n) {\n      REX.hasEscapes.test(n) && (n = unescapeIdentifier(n));\n      return function (e, f) {\n        return byTag(n, c);\n      };\n    },\n    '|': function (c, n) {\n      REX.hasEscapes.test(n) && (n = unescapeIdentifier(n));\n      return function (e, f) {\n        return byTag(n, c);\n      };\n    },\n    '.': function (c, n) {\n      REX.hasEscapes.test(n) && (n = unescapeIdentifier(n));\n      return function (e, f) {\n        return byClass(n, c);\n      };\n    }\n  };\n\n  // namespace aware hasAttribute\n  // helper for XML/XHTML documents\n  const hasAttributeNS = function (e, name) {\n    let i;\n    let l;\n    const attr = e.getAttributeNames();\n    name = RegExp(':?' + name + '$', HTML_DOCUMENT ? 'i' : '');\n    for (i = 0, l = attr.length; l > i; ++i) {\n      if (name.test(attr[i])) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  // fast resolver for the :nth-child() and :nth-last-child() pseudo-classes\n  const nthElement = (function () {\n    let idx = 0;\n    let len = 0;\n    let set = 0;\n    let parent;\n    let parents = [];\n    let nodes = [];\n    return function (element, dir) {\n      // ensure caches are emptied after each run, invoking with dir = 2\n      if (dir === 2) {\n        idx = 0; len = 0; set = 0; nodes = []; parents = []; parent = undefined;\n        return -1;\n      }\n      let e, i, j, k, l;\n      if (parent === element.parentElement) {\n        i = set; j = idx; l = len;\n      } else {\n        l = parents.length;\n        parent = element.parentElement;\n        for (i = -1, j = 0, k = l - 1; l > j; ++j, --k) {\n          if (parents[j] === parent) {\n            i = j;\n            break;\n          }\n          if (parents[k] === parent) {\n            i = k;\n            break;\n          }\n        }\n        if (i < 0) {\n          parents[i = l] = parent;\n          l = 0; nodes[i] = [];\n          e = (parent && parent.firstElementChild) || element;\n          while (e) {\n            nodes[i][l] = e;\n            if (e === element) {\n              j = l;\n            }\n            e = e.nextElementSibling;\n            ++l;\n          }\n          set = i; idx = 0; len = l;\n          if (l < 2) {\n            return l;\n          }\n        } else {\n          l = nodes[i].length;\n          set = i;\n        }\n      }\n      if (element !== nodes[i][j] && element !== nodes[i][j = 0]) {\n        for (j = 0, e = nodes[i], k = l - 1; l > j; ++j, --k) {\n          if (e[j] === element) {\n            break;\n          }\n          if (e[k] === element) {\n            j = k;\n            break;\n          }\n        }\n      }\n      idx = j + 1; len = l;\n      return dir ? l - j : idx;\n    };\n  })();\n\n  // fast resolver for the :nth-of-type() and :nth-last-of-type() pseudo-classes\n  const nthOfType = (function () {\n    let idx = 0;\n    let len = 0;\n    let set = 0;\n    let parent;\n    let parents = [];\n    let nodes = [];\n    return function (element, dir) {\n      // ensure caches are emptied after each run, invoking with dir = 2\n      if (dir === 2) {\n        idx = 0; len = 0; set = 0; nodes = []; parents = []; parent = undefined;\n        return -1;\n      }\n      const name = element.localName;\n      const nsURI = element.namespaceURI;\n      if (nsURI !== 'http://www.w3.org/1999/xhtml') {\n        idx = 0; len = 0; set = 0; nodes = []; parents = []; parent = undefined;\n      }\n      let e;\n      let i;\n      let j;\n      let k;\n      let l;\n      if (nodes[set] && nodes[set][name] && parent === element.parentElement) {\n        i = set;\n        j = idx;\n        l = len;\n      } else {\n        l = parents.length;\n        parent = element.parentElement;\n        for (i = -1, j = 0, k = l - 1; l > j; ++j, --k) {\n          if (parents[j] === parent) {\n            i = j;\n            break;\n          }\n          if (parents[k] === parent) {\n            i = k;\n            break;\n          }\n        }\n        if (i < 0 || !nodes[i][name]) {\n          parents[i = l] = parent;\n          nodes[i] || (nodes[i] = Object());\n          l = 0; nodes[i][name] = [];\n          e = (parent && parent.firstElementChild) || element;\n          while (e) {\n            if (e === element) {\n              j = l;\n            }\n            if (e.localName === name && e.namespaceURI === nsURI) {\n              nodes[i][name][l] = e;\n              ++l;\n            }\n            e = e.nextElementSibling;\n          }\n          set = i; idx = j; len = l;\n          if (l < 2) {\n            return l;\n          }\n        } else {\n          l = nodes[i][name].length;\n          set = i;\n        }\n      }\n      if (element !== nodes[i][name][j] && element !== nodes[i][name][j = 0]) {\n        for (j = 0, e = nodes[i][name], k = l - 1; l > j; ++j, --k) {\n          if (e[j] === element) {\n            break;\n          }\n          if (e[k] === element) {\n            j = k;\n            break;\n          }\n        }\n      }\n      idx = j + 1; len = l;\n      return dir ? l - j : idx;\n    };\n  })();\n\n  // check if the node is the target\n  const isTarget = function (node) {\n    const doc = node.ownerDocument || node;\n    const { hash } = new URL(doc.URL);\n    if (node.id && hash === `#${node.id}` && doc.contains(node)) {\n      return true;\n    }\n    return false;\n  };\n\n  // check if node is indeterminate\n  const isIndeterminate = function (node) {\n    if ((node.indeterminate && node.localName === 'input' &&\n         node.type === 'checkbox') ||\n        (node.localName === 'progress' && !node.hasAttribute('value'))) {\n      return true;\n    }\n    if (node.localName === 'input' && node.type === 'radio' &&\n        !node.hasAttribute('checked')) {\n      const nodeName = node.name;\n      let parent = node.parentNode;\n      while (parent) {\n        if (parent.localName === 'form') {\n          break;\n        }\n        parent = parent.parentNode;\n      }\n      if (!parent) {\n        const doc = node.ownerDocument;\n        parent = doc.documentElement;\n      }\n      const items = parent.getElementsByTagName('input');\n      const l = items.length;\n      let checked;\n      for (let i = 0; i < l; i++) {\n        const item = items[i];\n        if (item.getAttribute('type') === 'radio') {\n          if (nodeName) {\n            if (item.getAttribute('name') === nodeName) {\n              checked = !!item.checked;\n            }\n          } else if (!item.hasAttribute('name')) {\n            checked = !!item.checked;\n          }\n          if (checked) {\n            break;\n          }\n        }\n      }\n      if (!checked) {\n        return true;\n      }\n    }\n    return false;\n  };\n\n  // check if node content is editable\n  const isContentEditable = function (node) {\n    let attrValue = 'inherit';\n    if (node.hasAttribute('contenteditable')) {\n      attrValue = node.getAttribute('contenteditable');\n    }\n    switch (attrValue) {\n      case '':\n      case 'plaintext-only':\n      case 'true':\n        return true;\n      case 'false':\n        return false;\n      default:\n        if (node.parentNode && node.parentNode.nodeType === 1) {\n          return isContentEditable(node.parentNode);\n        }\n        return false;\n    }\n  };\n\n  // build validation regexps used by the engine\n  const setIdentifierSyntax = function () {\n    //\n    // NOTE: SPECIAL CASES IN CSS SYNTAX PARSING RULES\n    //\n    // The <EOF-token> https://drafts.csswg.org/css-syntax/#typedef-eof-token\n    // allow mangled|unclosed selector syntax at the end of selectors strings\n    //\n    // Literal equivalent hex representations of the characters: \" ' ` ] )\n    //\n    //     \\\\x22 = \" - double quotes    \\\\x5b = [ - open square bracket\n    //     \\\\x27 = ' - single quote     \\\\x5d = ] - closed square bracket\n    //     \\\\x60 = ` - back tick        \\\\x28 = ( - open round parens\n    //     \\\\x5c = \\ - back slash       \\\\x29 = ) - closed round parens\n    //\n    // using hex format prevents false matches of opened/closed instances\n    // pairs, coloring breakage and other editors highlightning problems.\n    //\n\n    // @see https://drafts.csswg.org/css-syntax-3/#ident-token-diagram\n    const nonascii = '[^\\\\x00-\\\\x9f]';\n    const esctoken = '\\\\\\\\(?:[^\\\\r\\\\n\\\\f\\\\da-f]|[\\\\da-f]{1,6}\\\\s{0,255})';\n    const identifier =\n      '(?:--|-?(?:[a-z_]|' + nonascii + '|' + esctoken + '))' +\n      '(?:[\\\\w-]|' + nonascii + '|' + esctoken + ')*';\n\n    const pseudonames = '[-\\\\w]+';\n    const pseudoparms = '(?:[-+]?\\\\d*)(?:n\\\\s?[-+]?\\\\s?\\\\d*)';\n    const doublequote = '\"[^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*(?:\"|$)';\n    const singlequote = \"'[^'\\\\\\\\]*(?:\\\\\\\\.[^'\\\\\\\\]*)*(?:'|$)\";\n\n    const attrparser = identifier + '|' + doublequote + '|' + singlequote;\n\n    const attrvalues = '([\\\\x22\\\\x27]?)((?!\\\\3)*|(?:\\\\\\\\?.)*?)(?:\\\\3|$)';\n\n    const attributes =\n      '\\\\[' +\n        // attribute presence\n        '(?:\\\\*\\\\|)?\\\\s?(' + identifier + '(?::' + identifier + ')?)\\\\s?' +\n        '(?:(' + CFG.operators + ')\\\\s?(?:' + attrparser + '))?' +\n        // attribute case sensitivity\n        '(?:\\\\s?\\\\b(i))?\\\\s?' +\n      '(?:\\\\]|$)';\n\n    const attrmatcher = attributes.replace(attrparser, attrvalues);\n\n    const pseudoclass =\n      '(?:\\\\x28\\\\s*' +\n        '(?:' + pseudoparms + '?)?|' +\n        // universal * &\n        // namespace *|*\n        '[*|]|' +\n        '(?:' +\n          '(?::' + pseudonames + '(?:\\\\x28' + pseudoparms + '?(?:\\\\x29|$))?)|' +\n          '(?:[.#]?' + identifier + ')|' +\n          '(?:' + attributes + ')' +\n        ')+|' +\n        '\\\\s?[>+~]\\\\s?|' +\n        '\\\\s?,\\\\s?|' +\n        '\\\\s|' +\n        '\\\\x29|$' +\n      ')*';\n\n    const standardValidator =\n      '(?=\\\\s?[^>+~(){}<])' +\n      '(?:' +\n        // universal * &\n        // namespace *|*\n        '\\\\*|\\\\||' +\n        '(?:[.#]?' + identifier + ')+|' +\n        '(?:' + attributes + ')+|' +\n        '(?:::?' + pseudonames + pseudoclass + ')|' +\n        '(?:\\\\s?' + CFG.combinators + '\\\\s?)|' +\n        '\\\\s?,\\\\s?|' +\n        '\\\\s?' +\n      ')+';\n\n    // the following global RE is used to return the\n    // deepest localName in selector strings and then\n    // use it to retrieve all possible matching nodes\n    // that will be filtered by compiled resolvers\n    reOptimizer = RegExp(\n      '(?:([.:#*]?)(' + identifier + ')' +\n        '(?::[-\\\\w]+|\\\\[[^\\\\]]+(?:\\\\]|$)|\\\\x28[^\\\\x29]+(?:\\\\x29|$))*' +\n      ')$', 'i');\n\n    // global\n    reValidator = RegExp(standardValidator, 'gi');\n\n    Patterns.id = RegExp('^#(' + identifier + ')(.*)', 'i');\n    Patterns.tagName = RegExp('^(' + identifier + ')(.*)', 'i');\n    Patterns.className = RegExp('^\\\\.(' + identifier + ')(.*)', 'i');\n    Patterns.attribute = RegExp('^(?:' + attrmatcher + ')(.*)');\n  };\n\n  // configure the engine to use special handling\n  const configure = function (option, clear) {\n    if (typeof option === 'string') {\n      return !!Config[option];\n    }\n    if (typeof option !== 'object') {\n      return Config;\n    }\n    for (const i in option) {\n      Config[i] = !!option[i];\n    }\n    // clear lambda cache\n    if (clear) {\n      matchResolvers = {};\n      selectResolvers = {};\n    }\n    setIdentifierSyntax();\n    return true;\n  };\n\n  // centralized error and exceptions handling\n  const emit = function (message, proto) {\n    let err;\n    if (Config.VERBOSITY) {\n      if (global[proto]) {\n        err = new global[proto](message);\n      } else {\n        err = new global.DOMException(message, 'SyntaxError');\n      }\n      throw err;\n    }\n    if (Config.LOGERRORS && console && console.log) {\n      console.log(message);\n    }\n  };\n\n  // passed to resolvers\n  const Snapshot = {\n    doc: null,\n    from: null,\n    byTag: null,\n    first: null,\n    match: null,\n    ancestor: null,\n    nthOfType: null,\n    nthElement: null,\n    hasAttributeNS: null,\n    isTarget: null,\n    isIndeterminate: null,\n    isContentEditable: null\n  };\n\n  // context\n  let lastContext;\n\n  const switchContext = function (context, force) {\n    const oldDoc = doc;\n    doc = context.ownerDocument || context;\n    if (force || oldDoc !== doc) {\n      // force a new check for each document change\n      // performed before the next select operation\n      HTML_DOCUMENT = isHTML(doc);\n      QUIRKS_MODE = HTML_DOCUMENT && doc.compatMode.indexOf('CSS') < 0;\n      NAMESPACE = doc.documentElement && doc.documentElement.namespaceURI;\n      Snapshot.doc = doc;\n    }\n    Snapshot.from = context;\n    return context;\n  };\n\n  // selector\n  let lastMatched;\n  let lastSelected;\n\n  const F_INIT = '\"use strict\";return function Resolver(c,f,x,r)';\n\n  const S_HEAD = 'var e,n,o,j=r.length-1,k=-1';\n  const M_HEAD = 'var e,n,o';\n\n  const S_LOOP = 'main:while((e=c[++k]))';\n  const N_LOOP = 'main:while((e=c.item(++k)))';\n  const M_LOOP = 'e=c;';\n\n  const S_BODY = 'r[++j]=c[k];';\n  const N_BODY = 'r[++j]=c.item(k);';\n  const M_BODY = '';\n\n  const S_TAIL = 'continue main;';\n  const M_TAIL = 'r=true;';\n\n  const S_TEST = 'if(f(c[k])){break main;}';\n  const N_TEST = 'if(f(c.item(k))){break main;}';\n  const M_TEST = 'f(c);';\n\n  let S_VARS = [];\n  let M_VARS = [];\n\n  // build conditional code to check components of selector strings\n  const compileSelector = function (expression, source, mode, callback) {\n    // N is the negation pseudo-class flag\n    // D is the default inverted negation flag\n    let a;\n    let b;\n    let n;\n    let f;\n    let name;\n    let NS;\n    const N = '';\n    const D = '!';\n    let compat;\n    let expr;\n    let match;\n    let result;\n    let status;\n    let symbol;\n    let test;\n    let type;\n    let selector = expression;\n    let vars;\n\n    // original 'select' or 'match' selector string before normalization\n    const selectorString = mode ? lastSelected : lastMatched;\n\n    // isolate selector combinators/components and normalize whitespace\n    selector = selector.replace(STD.combinator, '$1'); // .replace(STD.whitespace, ' ');\n\n    let selectorRecursion = true;\n    while (selector) {\n      // get namespace prefix if present or get first char of selector\n      symbol = STD.apimethods.test(selector) ? '|' : selector[0];\n\n      switch (symbol) {\n        // universal resolver\n        case '*':\n          match = selector.match(Patterns.universal);\n          if (N === '!') {\n            source = 'if(' + N + 'true' + '){' + source + '}';\n          }\n          break;\n        // id resolver\n        case '#':\n          match = selector.match(Patterns.id);\n          source = 'if(' + N + '(/^' + match[1] + '$/.test(e.getAttribute(\"id\"))' +\n            ')){' + source + '}';\n          break;\n        // class name resolver\n        case '.':\n          match = selector.match(Patterns.className);\n          compat = (QUIRKS_MODE ? 'i' : '') + '.test(e.getAttribute(\"class\"))';\n          source = 'if(' + N + '(/(^|\\\\s)' + match[1] + '(\\\\s|$)/' + compat +\n            ')){' + source + '}';\n          break;\n        // tag name resolver\n        case (/[_a-z]/i.test(symbol) ? symbol : undefined):\n          match = selector.match(Patterns.tagName);\n          source = 'if(' + N + '(e.localName' +\n            (Config.MIXEDCASE || hasMixedCaseTagNames(doc)\n              ? '==\"' + match[1].toLowerCase() + '\"'\n              : '==\"' + match[1].toUpperCase() + '\"') +\n            ')){' + source + '}';\n          break;\n        // namespace resolver\n        case '|':\n          match = selector.match(Patterns.namespace);\n          if (match[1] === '*') {\n            source = 'if(' + N + 'true){' + source + '}';\n          } else if (!match[1]) {\n            source = 'if(' + N + '(!e.namespaceURI)){' + source + '}';\n          } else if (typeof match[1] === 'string' && doc.documentElement &&\n                     doc.documentElement.prefix === match[1]) {\n            source = 'if(' + N + '(e.namespaceURI==\"' + NAMESPACE + '\")){' + source + '}';\n          } else {\n            emit('\\'' + selectorString + '\\'' + qsInvalid);\n          }\n          break;\n        // attributes resolver\n        case '[':\n          match = selector.match(Patterns.attribute);\n          NS = match[0].match(STD.namespaces);\n          name = match[1];\n          expr = name.split(':');\n          expr = expr.length === 2 ? expr[1] : expr[0];\n          if (match[2] && !(test = Operators[match[2]])) {\n            emit('\\'' + selectorString + '\\'' + qsInvalid);\n            return '';\n          }\n          if (match[4] === '') {\n            test = match[2] === '~='\n              ? { p1: '^\\\\s', p2: '+$', p3: 'true' }\n              : match[2] in ATTR_STD_OPS && match[2] !== '~='\n                ? { p1: '^', p2: '$', p3: 'true' }\n                : test;\n          } else if (match[2] === '~=' && match[4].includes(' ')) {\n            // whitespace separated list but value contains space\n            source = 'if(' + N + 'false){' + source + '}';\n            break;\n          } else if (match[4]) {\n            match[4] = convertEscapes(match[4]).replace(REX.regExpChar, '\\\\$&');\n          }\n          type = match[5] === 'i' || (HTML_DOCUMENT && HTML_TABLE[expr.toLowerCase()])\n            ? 'i'\n            : '';\n          source =\n            'if(' + N + '(' +\n              (!match[2]\n                ? (NS ? 's.hasAttributeNS(e,\"' + name + '\")' : 'e.hasAttribute&&e.hasAttribute(\"' + name + '\")')\n                : !match[4] && ATTR_STD_OPS[match[2]] && match[2] !== '~='\n                  ? 'e.getAttribute&&e.getAttribute(\"' + name + '\")==\"\"'\n                  : '(/' + test.p1 + match[4] + test.p2 + '/' + type + ').test(e.getAttribute&&e.getAttribute(\"' + name + '\"))==' + test.p3) +\n            ')){' + source + '}';\n          break;\n        // *** General sibling combinator\n        // E ~ F (F relative sibling of E)\n        case '~':\n          match = selector.match(Patterns.relative);\n          source = 'n=e;while((e=e.previousElementSibling)){' + source + '}e=n;';\n          break;\n        // *** Adjacent sibling combinator\n        // E + F (F adiacent sibling of E)\n        case '+':\n          match = selector.match(Patterns.adjacent);\n          source = 'n=e;if((e=e.previousElementSibling)){' + source + '}e=n;';\n          break;\n        // *** Descendant combinator\n        // E F (E ancestor of F)\n        case '\\x09':\n        case '\\x20':\n          match = selector.match(Patterns.ancestor);\n          source = 'n=e;while((e=e.parentElement)){' + source + '}e=n;';\n          break;\n        // *** Child combinator\n        // E > F (F children of E)\n        case '>':\n          match = selector.match(Patterns.children);\n          source = 'n=e;if((e=e.parentElement)){' + source + '}e=n;';\n          break;\n        // *** user supplied combinators extensions\n        case (symbol in Combinators ? symbol : undefined):\n          // for other registered combinators extensions\n          match[match.length - 1] = '*';\n          source = Combinators[symbol](match) + source;\n          break;\n        // *** tree-structural pseudo-classes\n        // :root, :empty, :first-child, :last-child, :only-child, :first-of-type, :last-of-type, :only-of-type\n        case ':':\n          if ((match = selector.match(Patterns.structural))) {\n            match[1] = match[1].toLowerCase();\n            switch (match[1]) {\n              case 'root':\n                // there can only be one :root element, so exit the loop once found\n                source = 'if(' + N + '(e===s.doc.documentElement)){' + source + (mode ? 'break main;' : '') + '}';\n                break;\n              case 'empty':\n                // matches elements that don't contain elements or text nodes\n                source = 'n=e.firstChild;while(n&&!(/1|3/).test(n.nodeType)){n=n.nextSibling}if(' + D + 'n){' + source + '}';\n                break;\n              // *** child-indexed pseudo-classes\n              // :first-child, :last-child, :only-child\n              case 'only-child':\n                source = 'if(' + N + '(!e.nextElementSibling&&!e.previousElementSibling)){' + source + '}';\n                break;\n              case 'last-child':\n                source = 'if(' + N + '(!e.nextElementSibling)){' + source + '}';\n                break;\n              case 'first-child':\n                source = 'if(' + N + '(!e.previousElementSibling)){' + source + '}';\n                break;\n              // *** typed child-indexed pseudo-classes\n              // :only-of-type, :last-of-type, :first-of-type\n              case 'only-of-type':\n                source = 'o=e.localName;' +\n                  'n=e;while((n=n.nextElementSibling)&&n.localName!=o);if(!n){' +\n                  'n=e;while((n=n.previousElementSibling)&&n.localName!=o);}if(' + D + 'n){' + source + '}';\n                break;\n              case 'last-of-type':\n                source = 'n=e;o=e.localName;while((n=n.nextElementSibling)&&n.localName!=o);if(' + D + 'n){' + source + '}';\n                break;\n              case 'first-of-type':\n                source = 'n=e;o=e.localName;while((n=n.previousElementSibling)&&n.localName!=o);if(' + D + 'n){' + source + '}';\n                break;\n              default:\n                emit('\\'' + selectorString + '\\'' + qsInvalid);\n            }\n          // *** child-indexed & typed child-indexed pseudo-classes\n          // :nth-child, :nth-of-type, :nth-last-child, :nth-last-of-type\n          } else if ((match = selector.match(Patterns.treestruct))) {\n            match[1] = match[1].toLowerCase();\n            switch (match[1]) {\n              case 'nth-child':\n              case 'nth-of-type':\n              case 'nth-last-child':\n              case 'nth-last-of-type':\n                expr = /-of-type/i.test(match[1]);\n                if (match[1] && match[2]) {\n                  type = /last/i.test(match[1]);\n                  if (match[2] === 'n') {\n                    source = 'if(' + N + 'true){' + source + '}';\n                    break;\n                  } else if (match[2] === '1') {\n                    test = type ? 'next' : 'previous';\n                    source = expr\n                      ? 'n=e;o=e.localName;' +\n                          'while((n=n.' + test + 'ElementSibling)&&n.localName!=o);if(' + D + 'n){' + source + '}'\n                      : 'if(' + N + '!e.' + test + 'ElementSibling){' + source + '}';\n                    break;\n                  } else if (match[2] === 'even' || match[2] === '2n0' || match[2] === '2n+0' || match[2] === '2n') {\n                    test = 'n%2==0';\n                  } else if (match[2] === 'odd' || match[2] === '2n1' || match[2] === '2n+1') {\n                    test = 'n%2==1';\n                  } else {\n                    f = /n/i.test(match[2]);\n                    n = match[2].split('n');\n                    a = parseInt(n[0], 10) || 0;\n                    b = parseInt(n[1], 10) || 0;\n                    if (n[0] === '-') {\n                      a = -1;\n                    }\n                    if (n[0] === '+') {\n                      a = +1;\n                    }\n                    test = (b ? '(n' + (b > 0 ? '-' : '+') + Math.abs(b) + ')' : 'n') + '%' + a + '==0';\n                    test = a >= +1\n                      ? (f\n                          ? 'n>' + (b - 1) + (Math.abs(a) !== 1\n                            ? '&&' + test\n                            : '')\n                          : 'n==' + a)\n                      : a <= -1\n                        ? (f\n                            ? 'n<' + (b + 1) + (Math.abs(a) !== 1\n                              ? '&&' + test\n                              : '')\n                            : 'n==' + a)\n                        : a === 0\n                          ? (n[0]\n                              ? 'n==' + b\n                              : 'n>' + (b - 1))\n                          : 'false';\n                  }\n                  expr = expr ? 'OfType' : 'Element';\n                  type = type ? 'true' : 'false';\n                  source = 'n=s.nth' + expr + '(e,' + type + ');if(' + N + '(' + test + ')){' + source + '}';\n                } else {\n                  emit('\\'' + selectorString + '\\'' + qsInvalid);\n                }\n                break;\n              default:\n                emit('\\'' + selectorString + '\\'' + qsInvalid);\n            }\n          // *** logical combination pseudo-classes\n          // :is( s1, [ s2, ... ]), :not( s1, [ s2, ... ])\n          } else if ((match = selector.match(Patterns.logicalsel))) {\n            match[1] = match[1].toLowerCase();\n            expr = match[2].replace(REX.CommaGroup, ',').replace(REX.TrimSpaces, '');\n            switch (match[1]) {\n              // FIXME:\n              case 'is':\n              case 'where':\n              case 'matches':\n                source = 'if(s.match(\"' + expr.replace(/\\x22/g, '\\\\\"') + '\",e)){' + source + '}';\n                break;\n              // FIXME:\n              case 'not':\n                source = 'if(!s.match(\"' + expr.replace(/\\x22/g, '\\\\\"') + '\",e)){' + source + '}';\n                break;\n              // FIXME:\n              case 'has':\n                // clear cache\n                matchResolvers = {};\n                source = 'if(e.querySelector(\":scope ' + expr.replace(/\\x22/g, '\\\\\"') + '\")){' + source + '}';\n                break;\n              default:\n                emit('\\'' + selectorString + '\\'' + qsInvalid);\n            }\n          // *** location pseudo-classes\n          // :any-link, :link, :visited, :target\n          } else if ((match = selector.match(Patterns.locationpc))) {\n            match[1] = match[1].toLowerCase();\n            switch (match[1]) {\n              case 'any-link':\n                source = 'if(' + N + '(/^a|area$/i.test(e.localName)&&e.hasAttribute(\"href\")||e.visited)){' + source + '}';\n                break;\n              case 'link':\n                source = 'if(' + N + '(/^a|area$/i.test(e.localName)&&e.hasAttribute(\"href\"))){' + source + '}';\n                break;\n              // FIXME:\n              case 'visited':\n                source = 'if(' + N + '(/^a|area$/i.test(e.localName)&&e.hasAttribute(\"href\")&&e.visited)){' + source + '}';\n                break;\n              case 'target':\n                source = 'if(s.isTarget(e)){' + source + '}';\n                break;\n              default:\n                emit('\\'' + selectorString + '\\'' + qsInvalid);\n            }\n          // *** user interface and form pseudo-classes\n          // :enabled, :disabled, :read-only, :read-write, :placeholder-shown, :default\n          } else if ((match = selector.match(Patterns.inputstate))) {\n            match[1] = match[1].toLowerCase();\n            switch (match[1]) {\n              // FIXME: lacks custom element support\n              case 'enabled':\n                source = 'if(((\"form\" in e||/^optgroup$/i.test(e.localName))&&\"disabled\" in e &&e.disabled===false' +\n                  ')){' + source + '}';\n                break;\n              // FIXME: lacks custom element support\n              case 'disabled':\n                // https://html.spec.whatwg.org/#enabling-and-disabling-form-controls:-the-disabled-attribute\n                source = 'if(((\"form\" in e||/^optgroup$/i.test(e.localName))&&\"disabled\" in e)){' +\n                  // F is true if any of the fieldset elements in the ancestry chain has the disabled attribute specified\n                  // L is true if the first legend element of the fieldset contains the element\n                  'var x=0,N=[],F=false,L=false;' +\n                  'if(!(/^(optgroup|option)$/i.test(e.localName))){' +\n                    'n=e.parentElement;' +\n                    'while(n){' +\n                      'if(n.localName===\"fieldset\"){' +\n                        'N[x++]=n;' +\n                        'if(n.disabled===true){' +\n                          'F=true;' +\n                          'break;' +\n                        '}' +\n                      '}' +\n                      'n=n.parentElement;' +\n                    '}' +\n                    'for(var x=0;x<N.length;x++){' +\n                      'if((n=s.first(\"legend\",N[x]))&&n.contains(e)){' +\n                        'L=true;' +\n                        'break;' +\n                      '}' +\n                    '}' +\n                  '}' +\n                  'if(e.disabled===true||(F&&!L)){' + source + '}}';\n                break;\n              case 'read-only':\n                source =\n                  'if(' +\n                    '(/^textarea$/i.test(e.localName)&&(e.readOnly||e.disabled))||' +\n                    '(/^input$/i.test(e.localName)&&(\"|date|datetime-local|email|month|number|password|search|tel|text|time|url|week|\".includes(\"|\"+e.type+\"|\")?(e.readOnly||e.disabled):true))||' +\n                    '(!/^(?:input|textarea)$/i.test(e.localName) && !s.isContentEditable(e))' +\n                  '){' + source + '}';\n                break;\n              case 'read-write':\n                source =\n                  'if(' +\n                    '(/^textarea$/i.test(e.localName)&&!e.readOnly&&!e.disabled)||' +\n                    '(/^input$/i.test(e.localName)&&\"|date|datetime-local|email|month|number|password|search|tel|text|time|url|week|\".includes(\"|\"+e.type+\"|\")&&!e.readOnly&&!e.disabled)||' +\n                    '(!/^(?:input|textarea)$/i.test(e.localName) && s.isContentEditable(e))' +\n                  '){' + source + '}';\n                break;\n              // FIXME:\n              case 'placeholder-shown':\n                source =\n                  'if((' +\n                    '(/^input|textarea$/i.test(e.localName))&&e.hasAttribute(\"placeholder\")&&' +\n                    '(\"|textarea|password|number|search|email|text|tel|url|\".includes(\"|\"+e.type+\"|\"))&&' +\n                    '(!s.match(\":focus\",e))' +\n                  ')){' + source + '}';\n                break;\n              // FIXME:\n              case 'default':\n                source =\n                  'if((\"form\" in e && e.form)){' +\n                    'var x=0;n=[];' +\n                    'if(e.type==\"image\")n=e.form.getElementsByTagName(\"input\");' +\n                    'if(e.type==\"submit\")n=e.form.elements;' +\n                    'while(n[x]&&e!==n[x]){' +\n                      'if(n[x].type==\"image\")break;' +\n                      'if(n[x].type==\"submit\")break;' +\n                      'x++;' +\n                    '}' +\n                  '}' +\n                  'if((e.form&&(e===n[x]&&\"|image|submit|\".includes(\"|\"+e.type+\"|\"))||' +\n                    '((/^option$/i.test(e.localName))&&e.defaultSelected)||' +\n                    '((\"|radio|checkbox|\".includes(\"|\"+e.type+\"|\"))&&e.defaultChecked)' +\n                  ')){' + source + '}';\n                break;\n              default:\n                emit('\\'' + selector_string + '\\'' + qsInvalid);\n                break;\n            }\n          // *** input pseudo-classes (for form validation)\n          // :checked, :indeterminate, :valid, :invalid, :in-range, :out-of-range, :required, :optional\n          } else if ((match = selector.match(Patterns.inputvalue))) {\n            match[1] = match[1].toLowerCase();\n            switch (match[1]) {\n              case 'checked':\n                source = 'if(' + N + '(/^input$/i.test(e.localName)&&' +\n                  '(\"|radio|checkbox|\".includes(\"|\"+e.type+\"|\")&&e.checked)||' +\n                  '(/^option$/i.test(e.localName)&&(e.selected||e.checked))' +\n                  ')){' + source + '}';\n                break;\n              case 'indeterminate':\n                source = 'if(s.isIndeterminate(e)){' + source + '}';\n                break;\n              // FIXME:\n              case 'required':\n                source =\n                  'if(' + N +\n                    '(/^input|select|textarea$/i.test(e.localName)&&e.required)' +\n                  '){' + source + '}';\n                break;\n              // FIXME:\n              case 'optional':\n                source =\n                  'if(' + N +\n                    '(/^input|select|textarea$/i.test(e.localName)&&!e.required)' +\n                  '){' + source + '}';\n                break;\n              // FIXME:\n              case 'invalid':\n                source =\n                  'if(' + N + '((' +\n                    '(/^form$/i.test(e.localName)&&!e.noValidate)||' +\n                    '(e.willValidate&&!e.formNoValidate))&&!e.checkValidity())||' +\n                    '(/^fieldset$/i.test(e.localName)&&s.first(\":invalid\",e))' +\n                  '){' + source + '}';\n                break;\n              // FIXME:\n              case 'valid':\n                source =\n                  'if(' + N + '((' +\n                    '(/^form$/i.test(e.localName)&&!e.noValidate)||' +\n                    '(e.willValidate&&!e.formNoValidate))&&e.checkValidity())||' +\n                    '(/^fieldset$/i.test(e.localName)&&s.first(\":valid\",e))' +\n                  '){' + source + '}';\n                break;\n              // FIXME:\n              case 'in-range':\n                source =\n                  'if(' + N +\n                    '(/^input$/i.test(e.localName))&&' +\n                    '(e.willValidate&&!e.formNoValidate)&&' +\n                    '(!e.validity.rangeUnderflow&&!e.validity.rangeOverflow)&&' +\n                    '(\"|date|datetime-local|month|number|range|time|week|\".includes(\"|\"+e.type+\"|\"))&&' +\n                    '(\"range\"==e.type||e.getAttribute(\"min\")||e.getAttribute(\"max\"))' +\n                  '){' + source + '}';\n                break;\n              // FIXME:\n              case 'out-of-range':\n                source =\n                  'if(' + N +\n                    '(/^input$/i.test(e.localName))&&' +\n                    '(e.willValidate&&!e.formNoValidate)&&' +\n                    '(e.validity.rangeUnderflow||e.validity.rangeOverflow)&&' +\n                    '(\"|date|datetime-local|month|number|range|time|week|\".includes(\"|\"+e.type+\"|\"))&&' +\n                    '(\"range\"==e.type||e.getAttribute(\"min\")||e.getAttribute(\"max\"))' +\n                  '){' + source + '}';\n                break;\n              default:\n                emit('\\'' + selectorString + '\\'' + qsInvalid);\n            }\n          // allow pseudo-elements starting with single colon (:)\n          // :after, :before, :first-letter, :first-line\n          // assert: e.type is in double-colon format, like ::after\n          } else if ((match = selector.match(Patterns.pseudoSng))) {\n            source = 'if(e.element&&e.type.toLowerCase()==\"' +\n              ':' + match[0].toLowerCase() + '\"){e=e.element;' + source + '}';\n          // allow pseudo-elements starting with double colon (::)\n          // ::after, ::before, ::marker, ::placeholder, ::inactive-selection, ::selection, ::-webkit-<foo-bar>\n          // assert: e.type is in double-colon format, like ::after\n          } else if ((match = selector.match(Patterns.pseudoDbl))) {\n            source = 'if(e.element&&e.type.toLowerCase()==\"' +\n              match[0].toLowerCase() + '\"){e=e.element;' + source + '}';\n          // placeholder for parsed only no-op selectors\n          } else if ((match = selector.match(Patterns.pseudoNop))) {\n            source = 'if(' + N + 'false' + '){' + source + '}';\n          } else {\n            // reset\n            expr = false;\n            status = false;\n            // process registered selector extensions\n            for (expr in Selectors) {\n              if ((match = selector.match(Selectors[expr].Expression))) {\n                result = Selectors[expr].Callback(match, source, mode, callback);\n                if ('match' in result) {\n                  match = result.match;\n                }\n                vars = result.modvar;\n                if (mode) {\n                  // add extra select() vars\n                  vars && !S_VARS.includes(vars) && S_VARS.push(vars);\n                } else {\n                  // add extra match() vars\n                  vars && M_VARS.includes(vars) && M_VARS.push(vars);\n                }\n                // extension source code\n                source = result.source;\n                // extension status code\n                status = result.status;\n                // break on status error\n                if (status) { break; }\n              }\n            }\n            if (!status) {\n              emit('unknown pseudo-class selector \\'' + selector + '\\'');\n              return '';\n            }\n            if (!expr) {\n              emit('unknown token in selector \\'' + selector + '\\'');\n              return '';\n            }\n          }\n          break;\n        default:\n          selectorRecursion = false;\n          emit('\\'' + selectorString + '\\'' + qsInvalid);\n      }\n      // end of switch symbol\n      if (!selectorRecursion) {\n        break;\n      }\n      if (!match) {\n        emit('\\'' + selectorString + '\\'' + qsInvalid);\n        return '';\n      }\n\n      // pop last component\n      selector = match.pop();\n    }\n    // end of while selector\n\n    return source;\n  };\n\n  // compile groups or single selector strings into\n  // executable functions for matching or selecting\n  const compile = function (selector, mode, callback) {\n    let head = ''; let loop = ''; let macro = ''; let source = ''; let vars = '';\n\n    // 'mode' can be boolean or null\n    // true = select / false = match\n    // null to use collection.item()\n    switch (mode) {\n      case true:\n        if (selectLambdas[selector]) {\n          return selectLambdas[selector];\n        }\n        macro = S_BODY + (callback ? S_TEST : '') + S_TAIL;\n        head = S_HEAD;\n        loop = S_LOOP;\n        break;\n      case false:\n        if (matchLambdas[selector]) {\n          return matchLambdas[selector];\n        }\n        macro = M_BODY + (callback ? M_TEST : '') + M_TAIL;\n        head = M_HEAD;\n        loop = M_LOOP;\n        break;\n      case null:\n        if (selectLambdas[selector]) {\n          return selectLambdas[selector];\n        }\n        macro = N_BODY + (callback ? N_TEST : '') + S_TAIL;\n        head = S_HEAD;\n        loop = N_LOOP;\n        break;\n      default:\n    }\n\n    source = compileSelector(selector, macro, mode, callback);\n\n    loop += (mode || mode === null) ? '{' + source + '}' : source;\n\n    if ((mode || mode === null) && selector.includes(':nth')) {\n      loop += reNthElem.test(selector) ? 's.nthElement(null, 2);' : '';\n      loop += reNthType.test(selector) ? 's.nthOfType(null, 2);' : '';\n    }\n\n    if (S_VARS[0] || M_VARS[0]) {\n      vars = ',' + (S_VARS.join(',') || M_VARS.join(','));\n      S_VARS = [];\n      M_VARS = [];\n    }\n\n    const factory = Function('s', F_INIT + '{' + head + vars + ';' + loop + 'return r;}')(Snapshot);\n\n    return mode || mode === null ? (selectLambdas[selector] = factory) : (matchLambdas[selector] = factory);\n  };\n\n  // optimize selectors avoiding duplicated checks\n  const optimize = function (selector, token) {\n    const index = token.index;\n    const length = token[1].length + token[2].length;\n    return selector.slice(0, index) +\n      (' >+~'.indexOf(selector.charAt(index - 1)) > -1\n        ? (':['.indexOf(selector.charAt(index + length + 1)) > -1\n            ? '*'\n            : '')\n        : '') + selector.slice(index + length - (token[1] === '*' ? 1 : 0));\n  };\n\n  // prepare factory resolvers and closure collections\n  const collect = function (selectors, context, callback) {\n    let i;\n    let l;\n    const seen = { };\n    let token = ['', '*', '*'];\n    const optimized = selectors;\n    const factory = [];\n    const htmlset = [];\n    const nodeset = [];\n    let results = [];\n    let type;\n\n    for (i = 0, l = selectors.length; l > i; ++i) {\n      if (!seen[selectors[i]] && (seen[selectors[i]] = true)) {\n        type = selectors[i].match(reOptimizer);\n        if (type && type[1] !== ':' && (token = type)) {\n          token[1] || (token[1] = '*');\n          optimized[i] = optimize(optimized[i], token);\n        } else {\n          token = ['', '*', '*'];\n        }\n      }\n\n      nodeset[i] = token[1] + token[2];\n      htmlset[i] = compat[token[1]](context, token[2]);\n      factory[i] = compile(optimized[i], true, null);\n\n      factory[i]\n        ? factory[i](htmlset[i](), callback, context, results)\n        : results.concat(htmlset[i]());\n    }\n\n    if (l > 1) {\n      results.sort(documentOrder);\n      hasDupes && (results = unique(results));\n    }\n\n    return {\n      callback,\n      context,\n      factory,\n      htmlset,\n      nodeset,\n      results\n    };\n  };\n\n  // replace ':scope' pseudo-class with element references\n  const makeref = function (selectors, element) {\n    // DOCUMENT_NODE (9)\n    if (element.nodeType === 9) {\n      element = element.documentElement;\n    }\n\n    return selectors.replace(/:scope/gi,\n      element.localName +\n        (element.id ? '#' + element.id : '') +\n        (element.className ? '.' + element.classList[0] : ''));\n  };\n\n  const matchAssert = function (f, element, callback) {\n    let r = false;\n    for (let i = 0, l = f.length; l > i; ++i) {\n      f[i](element, callback, null, false) && (r = true);\n    }\n    return r;\n  };\n\n  const matchCollect = function (selectors, callback) {\n    const f = [];\n    for (let i = 0, l = selectors.length; l > i; ++i) {\n      f[i] = compile(selectors[i], false, callback);\n    }\n    return { factory: f };\n  };\n\n  // equivalent of w3c 'matches' method\n  const match = function _matches(selectors, element, callback) {\n    let expressions;\n\n    if (element && !/:has\\(/.test(selectors) && matchResolvers[selectors]) {\n      return matchAssert(matchResolvers[selectors].factory, element, callback);\n    }\n\n    lastMatched = selectors;\n\n    // arguments validation\n    if (arguments.length === 0) {\n      emit(qsNotArgs, 'TypeError');\n      return Config.VERBOSITY ? undefined : false;\n    } else if (arguments[0] === '') {\n      emit('\\'\\'' + qsInvalid);\n      return Config.VERBOSITY ? undefined : false;\n    }\n\n    // input NULL or UNDEFINED\n    if (typeof selectors !== 'string') {\n      selectors = '' + selectors;\n    }\n\n    if ((/:scope/i).test(selectors)) {\n      selectors = makeref(selectors, element);\n    }\n\n    // normalize input string\n    const parsed = selectors\n      .replace(/\\0|\\\\$/g, '\\ufffd')\n      .replace(REX.combineWSP, '\\x20')\n      .replace(REX.pseudosWSP, '$1')\n      .replace(REX.tabCharWSP, '\\t')\n      .replace(REX.commaGroup, ',')\n      .replace(REX.trimSpaces, '');\n\n    // parse, validate and split possible compound selectors\n    if ((expressions = parsed.match(reValidator)) && expressions.join('') === parsed) {\n      expressions = parsed.match(REX.splitGroup);\n      if (parsed[parsed.length - 1] === ',') {\n        emit(qsInvalid);\n        return Config.VERBOSITY ? undefined : false;\n      }\n    } else {\n      emit('\\'' + selectors + '\\'' + qsInvalid);\n      return Config.VERBOSITY ? undefined : false;\n    }\n\n    matchResolvers[selectors] = matchCollect(expressions, callback);\n\n    return matchAssert(matchResolvers[selectors].factory, element, callback);\n  };\n\n  // equivalent of w3c 'closest' method\n  const ancestor = function _closest(selectors, element, callback) {\n    if ((/:scope/i).test(selectors)) {\n      selectors = makeref(selectors, element);\n    }\n\n    while (element) {\n      if (match(selectors, element, callback)) break;\n      element = element.parentElement;\n    }\n    return element;\n  };\n\n  // equivalent of w3c 'querySelectorAll' method\n  const select = function _querySelectorAll(selectors, context, callback) {\n    let expressions; let nodes = []; let resolver;\n\n    context || (context = doc);\n\n    if (selectors) {\n      if ((resolver = selectResolvers[selectors])) {\n        if (resolver.context === context && resolver.callback === callback) {\n          const f = resolver.factory;\n          const h = resolver.htmlset;\n          const n = resolver.nodeset;\n          if (n.length > 1) {\n            const l = n.length;\n            for (let i = 0, l = n.length, list; l > i; ++i) {\n              list = compat[n[i][0]](context, n[i].slice(1))();\n              if (f[i] !== null) {\n                f[i](list, callback, context, nodes);\n              } else {\n                nodes = nodes.concat(list);\n              }\n            }\n            if (l > 1 && nodes.length > 1) {\n              nodes.sort(documentOrder);\n              hasDupes && (nodes = unique(nodes));\n            }\n          } else {\n            if (f[0]) {\n              nodes = f[0](h[0](), callback, context, nodes);\n            } else {\n              nodes = h[0]();\n            }\n          }\n          return typeof callback === 'function'\n            ? concatCall(nodes, callback)\n            : nodes;\n        }\n      }\n    }\n\n    lastSelected = selectors;\n\n    // arguments validation\n    if (arguments.length === 0) {\n      emit(qsNotArgs, 'TypeError');\n      return Config.VERBOSITY ? undefined : none;\n    } else if (arguments[0] === '') {\n      emit('\\'\\'' + qsInvalid);\n      return Config.VERBOSITY ? undefined : none;\n    } else if (lastContext !== context) {\n      lastContext = switchContext(context);\n    }\n\n    // input NULL or UNDEFINED\n    if (typeof selectors !== 'string') {\n      selectors = '' + selectors;\n    }\n\n    if ((/:scope/i).test(selectors)) {\n      selectors = makeref(selectors, context);\n    }\n\n    // normalize input string\n    const parsed = selectors\n      .replace(/\\0|\\\\$/g, '\\ufffd')\n      .replace(REX.combineWSP, '\\x20')\n      .replace(REX.pseudosWSP, '$1')\n      .replace(REX.tabCharWSP, '\\t')\n      .replace(REX.commaGroup, ',')\n      .replace(REX.trimSpaces, '');\n\n    // parse, validate and split possible compound selectors\n    if ((expressions = parsed.match(reValidator)) && expressions.join('') === parsed) {\n      expressions = parsed.match(REX.splitGroup);\n      if (parsed[parsed.length - 1] === ',') {\n        emit(qsInvalid);\n        return Config.VERBOSITY ? undefined : false;\n      }\n    } else {\n      emit('\\'' + selectors + '\\'' + qsInvalid);\n      return Config.VERBOSITY ? undefined : false;\n    }\n\n    // save/reuse factory and closure collection\n    selectResolvers[selectors] = collect(expressions, context, callback);\n\n    nodes = selectResolvers[selectors].results;\n\n    return typeof callback === 'function'\n      ? concatCall(nodes, callback)\n      : nodes;\n  };\n\n  // equivalent of w3c 'querySelector' method\n  const first = function _querySelector(selectors, context, callback) {\n    if (arguments.length === 0) {\n      emit(qsNotArgs, 'TypeError');\n    }\n    return select(selectors, context, typeof callback === 'function'\n      ? function firstMatch(element) {\n        callback(element);\n        return false;\n      }\n      : function firstMatch() {\n        return false;\n      }\n    )[0] || null;\n  };\n\n  // execute the engine initialization code\n  const initialize = function (d) {\n    setIdentifierSyntax();\n    lastContext = switchContext(d, true);\n    Snapshot.doc = doc;\n    Snapshot.from = doc;\n    Snapshot.byTag = byTag;\n    Snapshot.first = first;\n    Snapshot.match = match;\n    Snapshot.ancestor = ancestor;\n    Snapshot.nthOfType = nthOfType;\n    Snapshot.nthElement = nthElement;\n    Snapshot.hasAttributeNS = hasAttributeNS;\n    Snapshot.isTarget = isTarget;\n    Snapshot.isIndeterminate = isIndeterminate;\n    Snapshot.isContentEditable = isContentEditable;\n  };\n\n  initialize(doc);\n\n  // public exported methods/objects\n  const Dom = {\n    // exported engine methods\n    Version: version,\n    configure,\n    match,\n    closest: ancestor,\n    first,\n    select\n  };\n\n  return Dom;\n});\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bidi_js = factory());\n}(this, (function () { 'use strict';\n\n  function bidiFactory() {\n  var bidi = (function (exports) {\n\n    // Bidi character types data, auto generated\n    var DATA = {\n      \"R\": \"13k,1a,2,3,3,2+1j,ch+16,a+1,5+2,2+n,5,a,4,6+16,4+3,h+1b,4mo,179q,2+9,2+11,2i9+7y,2+68,4,3+4,5+13,4+3,2+4k,3+29,8+cf,1t+7z,w+17,3+3m,1t+3z,16o1+5r,8+30,8+mc,29+1r,29+4v,75+73\",\n      \"EN\": \"1c+9,3d+1,6,187+9,513,4+5,7+9,sf+j,175h+9,qw+q,161f+1d,4xt+a,25i+9\",\n      \"ES\": \"17,2,6dp+1,f+1,av,16vr,mx+1,4o,2\",\n      \"ET\": \"z+2,3h+3,b+1,ym,3e+1,2o,p4+1,8,6u,7c,g6,1wc,1n9+4,30+1b,2n,6d,qhx+1,h0m,a+1,49+2,63+1,4+1,6bb+3,12jj\",\n      \"AN\": \"16o+5,2j+9,2+1,35,ed,1ff2+9,87+u\",\n      \"CS\": \"18,2+1,b,2u,12k,55v,l,17v0,2,3,53,2+1,b\",\n      \"B\": \"a,3,f+2,2v,690\",\n      \"S\": \"9,2,k\",\n      \"WS\": \"c,k,4f4,1vk+a,u,1j,335\",\n      \"ON\": \"x+1,4+4,h+5,r+5,r+3,z,5+3,2+1,2+1,5,2+2,3+4,o,w,ci+1,8+d,3+d,6+8,2+g,39+1,9,6+1,2,33,b8,3+1,3c+1,7+1,5r,b,7h+3,sa+5,2,3i+6,jg+3,ur+9,2v,ij+1,9g+9,7+a,8m,4+1,49+x,14u,2+2,c+2,e+2,e+2,e+1,i+n,e+e,2+p,u+2,e+2,36+1,2+3,2+1,b,2+2,6+5,2,2,2,h+1,5+4,6+3,3+f,16+2,5+3l,3+81,1y+p,2+40,q+a,m+13,2r+ch,2+9e,75+hf,3+v,2+2w,6e+5,f+6,75+2a,1a+p,2+2g,d+5x,r+b,6+3,4+o,g,6+1,6+2,2k+1,4,2j,5h+z,1m+1,1e+f,t+2,1f+e,d+3,4o+3,2s+1,w,535+1r,h3l+1i,93+2,2s,b+1,3l+x,2v,4g+3,21+3,kz+1,g5v+1,5a,j+9,n+v,2,3,2+8,2+1,3+2,2,3,46+1,4+4,h+5,r+5,r+a,3h+2,4+6,b+4,78,1r+24,4+c,4,1hb,ey+6,103+j,16j+c,1ux+7,5+g,fsh,jdq+1t,4,57+2e,p1,1m,1m,1m,1m,4kt+1,7j+17,5+2r,d+e,3+e,2+e,2+10,m+4,w,1n+5,1q,4z+5,4b+rb,9+c,4+c,4+37,d+2g,8+b,l+b,5+1j,9+9,7+13,9+t,3+1,27+3c,2+29,2+3q,d+d,3+4,4+2,6+6,a+o,8+6,a+2,e+6,16+42,2+1i\",\n      \"BN\": \"0+8,6+d,2s+5,2+p,e,4m9,1kt+2,2b+5,5+5,17q9+v,7k,6p+8,6+1,119d+3,440+7,96s+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+75,6p+2rz,1ben+1,1ekf+1,1ekf+1\",\n      \"NSM\": \"lc+33,7o+6,7c+18,2,2+1,2+1,2,21+a,1d+k,h,2u+6,3+5,3+1,2+3,10,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,g+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+g,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,k1+w,2db+2,3y,2p+v,ff+3,30+1,n9x+3,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,r2,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+5,3+1,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2d+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,f0c+4,1o+6,t5,1s+3,2a,f5l+1,43t+2,i+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,gzhy+6n\",\n      \"AL\": \"16w,3,2,e+1b,z+2,2+2s,g+1,8+1,b+m,2+t,s+2i,c+e,4h+f,1d+1e,1bwe+dp,3+3z,x+c,2+1,35+3y,2rm+z,5+7,b+5,dt+l,c+u,17nl+27,1t+27,4x+6n,3+d\",\n      \"LRO\": \"6ct\",\n      \"RLO\": \"6cu\",\n      \"LRE\": \"6cq\",\n      \"RLE\": \"6cr\",\n      \"PDF\": \"6cs\",\n      \"LRI\": \"6ee\",\n      \"RLI\": \"6ef\",\n      \"FSI\": \"6eg\",\n      \"PDI\": \"6eh\"\n    };\n\n    var TYPES = {};\n    var TYPES_TO_NAMES = {};\n    TYPES.L = 1; //L is the default\n    TYPES_TO_NAMES[1] = 'L';\n    Object.keys(DATA).forEach(function (type, i) {\n      TYPES[type] = 1 << (i + 1);\n      TYPES_TO_NAMES[TYPES[type]] = type;\n    });\n    Object.freeze(TYPES);\n\n    var ISOLATE_INIT_TYPES = TYPES.LRI | TYPES.RLI | TYPES.FSI;\n    var STRONG_TYPES = TYPES.L | TYPES.R | TYPES.AL;\n    var NEUTRAL_ISOLATE_TYPES = TYPES.B | TYPES.S | TYPES.WS | TYPES.ON | TYPES.FSI | TYPES.LRI | TYPES.RLI | TYPES.PDI;\n    var BN_LIKE_TYPES = TYPES.BN | TYPES.RLE | TYPES.LRE | TYPES.RLO | TYPES.LRO | TYPES.PDF;\n    var TRAILING_TYPES = TYPES.S | TYPES.WS | TYPES.B | ISOLATE_INIT_TYPES | TYPES.PDI | BN_LIKE_TYPES;\n\n    var map = null;\n\n    function parseData () {\n      if (!map) {\n        //const start = performance.now()\n        map = new Map();\n        var loop = function ( type ) {\n          if (DATA.hasOwnProperty(type)) {\n            var lastCode = 0;\n            DATA[type].split(',').forEach(function (range) {\n              var ref = range.split('+');\n              var skip = ref[0];\n              var step = ref[1];\n              skip = parseInt(skip, 36);\n              step = step ? parseInt(step, 36) : 0;\n              map.set(lastCode += skip, TYPES[type]);\n              for (var i = 0; i < step; i++) {\n                map.set(++lastCode, TYPES[type]);\n              }\n            });\n          }\n        };\n\n        for (var type in DATA) loop( type );\n        //console.log(`char types parsed in ${performance.now() - start}ms`)\n      }\n    }\n\n    /**\n     * @param {string} char\n     * @return {number}\n     */\n    function getBidiCharType (char) {\n      parseData();\n      return map.get(char.codePointAt(0)) || TYPES.L\n    }\n\n    function getBidiCharTypeName(char) {\n      return TYPES_TO_NAMES[getBidiCharType(char)]\n    }\n\n    // Bidi bracket pairs data, auto generated\n    var data$1 = {\n      \"pairs\": \"14>1,1e>2,u>2,2wt>1,1>1,1ge>1,1wp>1,1j>1,f>1,hm>1,1>1,u>1,u6>1,1>1,+5,28>1,w>1,1>1,+3,b8>1,1>1,+3,1>3,-1>-1,3>1,1>1,+2,1s>1,1>1,x>1,th>1,1>1,+2,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,4q>1,1e>2,u>2,2>1,+1\",\n      \"canonical\": \"6f1>-6dx,6dy>-6dx,6ec>-6ed,6ee>-6ed,6ww>2jj,-2ji>2jj,14r4>-1e7l,1e7m>-1e7l,1e7m>-1e5c,1e5d>-1e5b,1e5c>-14qx,14qy>-14qx,14vn>-1ecg,1ech>-1ecg,1edu>-1ecg,1eci>-1ecg,1eda>-1ecg,1eci>-1ecg,1eci>-168q,168r>-168q,168s>-14ye,14yf>-14ye\"\n    };\n\n    /**\n     * Parses an string that holds encoded codepoint mappings, e.g. for bracket pairs or\n     * mirroring characters, as encoded by scripts/generateBidiData.js. Returns an object\n     * holding the `map`, and optionally a `reverseMap` if `includeReverse:true`.\n     * @param {string} encodedString\n     * @param {boolean} includeReverse - true if you want reverseMap in the output\n     * @return {{map: Map<number, number>, reverseMap?: Map<number, number>}}\n     */\n    function parseCharacterMap (encodedString, includeReverse) {\n      var radix = 36;\n      var lastCode = 0;\n      var map = new Map();\n      var reverseMap = includeReverse && new Map();\n      var prevPair;\n      encodedString.split(',').forEach(function visit(entry) {\n        if (entry.indexOf('+') !== -1) {\n          for (var i = +entry; i--;) {\n            visit(prevPair);\n          }\n        } else {\n          prevPair = entry;\n          var ref = entry.split('>');\n          var a = ref[0];\n          var b = ref[1];\n          a = String.fromCodePoint(lastCode += parseInt(a, radix));\n          b = String.fromCodePoint(lastCode += parseInt(b, radix));\n          map.set(a, b);\n          includeReverse && reverseMap.set(b, a);\n        }\n      });\n      return { map: map, reverseMap: reverseMap }\n    }\n\n    var openToClose, closeToOpen, canonical;\n\n    function parse$1 () {\n      if (!openToClose) {\n        //const start = performance.now()\n        var ref = parseCharacterMap(data$1.pairs, true);\n        var map = ref.map;\n        var reverseMap = ref.reverseMap;\n        openToClose = map;\n        closeToOpen = reverseMap;\n        canonical = parseCharacterMap(data$1.canonical, false).map;\n        //console.log(`brackets parsed in ${performance.now() - start}ms`)\n      }\n    }\n\n    function openingToClosingBracket (char) {\n      parse$1();\n      return openToClose.get(char) || null\n    }\n\n    function closingToOpeningBracket (char) {\n      parse$1();\n      return closeToOpen.get(char) || null\n    }\n\n    function getCanonicalBracket (char) {\n      parse$1();\n      return canonical.get(char) || null\n    }\n\n    // Local type aliases\n    var TYPE_L = TYPES.L;\n    var TYPE_R = TYPES.R;\n    var TYPE_EN = TYPES.EN;\n    var TYPE_ES = TYPES.ES;\n    var TYPE_ET = TYPES.ET;\n    var TYPE_AN = TYPES.AN;\n    var TYPE_CS = TYPES.CS;\n    var TYPE_B = TYPES.B;\n    var TYPE_S = TYPES.S;\n    var TYPE_ON = TYPES.ON;\n    var TYPE_BN = TYPES.BN;\n    var TYPE_NSM = TYPES.NSM;\n    var TYPE_AL = TYPES.AL;\n    var TYPE_LRO = TYPES.LRO;\n    var TYPE_RLO = TYPES.RLO;\n    var TYPE_LRE = TYPES.LRE;\n    var TYPE_RLE = TYPES.RLE;\n    var TYPE_PDF = TYPES.PDF;\n    var TYPE_LRI = TYPES.LRI;\n    var TYPE_RLI = TYPES.RLI;\n    var TYPE_FSI = TYPES.FSI;\n    var TYPE_PDI = TYPES.PDI;\n\n    /**\n     * @typedef {object} GetEmbeddingLevelsResult\n     * @property {{start, end, level}[]} paragraphs\n     * @property {Uint8Array} levels\n     */\n\n    /**\n     * This function applies the Bidirectional Algorithm to a string, returning the resolved embedding levels\n     * in a single Uint8Array plus a list of objects holding each paragraph's start and end indices and resolved\n     * base embedding level.\n     *\n     * @param {string} string - The input string\n     * @param {\"ltr\"|\"rtl\"|\"auto\"} [baseDirection] - Use \"ltr\" or \"rtl\" to force a base paragraph direction,\n     *        otherwise a direction will be chosen automatically from each paragraph's contents.\n     * @return {GetEmbeddingLevelsResult}\n     */\n    function getEmbeddingLevels (string, baseDirection) {\n      var MAX_DEPTH = 125;\n\n      // Start by mapping all characters to their unicode type, as a bitmask integer\n      var charTypes = new Uint32Array(string.length);\n      for (var i = 0; i < string.length; i++) {\n        charTypes[i] = getBidiCharType(string[i]);\n      }\n\n      var charTypeCounts = new Map(); //will be cleared at start of each paragraph\n      function changeCharType(i, type) {\n        var oldType = charTypes[i];\n        charTypes[i] = type;\n        charTypeCounts.set(oldType, charTypeCounts.get(oldType) - 1);\n        if (oldType & NEUTRAL_ISOLATE_TYPES) {\n          charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) - 1);\n        }\n        charTypeCounts.set(type, (charTypeCounts.get(type) || 0) + 1);\n        if (type & NEUTRAL_ISOLATE_TYPES) {\n          charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n        }\n      }\n\n      var embedLevels = new Uint8Array(string.length);\n      var isolationPairs = new Map(); //init->pdi and pdi->init\n\n      // === 3.3.1 The Paragraph Level ===\n      // 3.3.1 P1: Split the text into paragraphs\n      var paragraphs = []; // [{start, end, level}, ...]\n      var paragraph = null;\n      for (var i$1 = 0; i$1 < string.length; i$1++) {\n        if (!paragraph) {\n          paragraphs.push(paragraph = {\n            start: i$1,\n            end: string.length - 1,\n            // 3.3.1 P2-P3: Determine the paragraph level\n            level: baseDirection === 'rtl' ? 1 : baseDirection === 'ltr' ? 0 : determineAutoEmbedLevel(i$1, false)\n          });\n        }\n        if (charTypes[i$1] & TYPE_B) {\n          paragraph.end = i$1;\n          paragraph = null;\n        }\n      }\n\n      var FORMATTING_TYPES = TYPE_RLE | TYPE_LRE | TYPE_RLO | TYPE_LRO | ISOLATE_INIT_TYPES | TYPE_PDI | TYPE_PDF | TYPE_B;\n      var nextEven = function (n) { return n + ((n & 1) ? 1 : 2); };\n      var nextOdd = function (n) { return n + ((n & 1) ? 2 : 1); };\n\n      // Everything from here on will operate per paragraph.\n      for (var paraIdx = 0; paraIdx < paragraphs.length; paraIdx++) {\n        paragraph = paragraphs[paraIdx];\n        var statusStack = [{\n          _level: paragraph.level,\n          _override: 0, //0=neutral, 1=L, 2=R\n          _isolate: 0 //bool\n        }];\n        var stackTop = (void 0);\n        var overflowIsolateCount = 0;\n        var overflowEmbeddingCount = 0;\n        var validIsolateCount = 0;\n        charTypeCounts.clear();\n\n        // === 3.3.2 Explicit Levels and Directions ===\n        for (var i$2 = paragraph.start; i$2 <= paragraph.end; i$2++) {\n          var charType = charTypes[i$2];\n          stackTop = statusStack[statusStack.length - 1];\n\n          // Set initial counts\n          charTypeCounts.set(charType, (charTypeCounts.get(charType) || 0) + 1);\n          if (charType & NEUTRAL_ISOLATE_TYPES) {\n            charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n          }\n\n          // Explicit Embeddings: 3.3.2 X2 - X3\n          if (charType & FORMATTING_TYPES) { //prefilter all formatters\n            if (charType & (TYPE_RLE | TYPE_LRE)) {\n              embedLevels[i$2] = stackTop._level; // 5.2\n              var level = (charType === TYPE_RLE ? nextOdd : nextEven)(stackTop._level);\n              if (level <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n                statusStack.push({\n                  _level: level,\n                  _override: 0,\n                  _isolate: 0\n                });\n              } else if (!overflowIsolateCount) {\n                overflowEmbeddingCount++;\n              }\n            }\n\n            // Explicit Overrides: 3.3.2 X4 - X5\n            else if (charType & (TYPE_RLO | TYPE_LRO)) {\n              embedLevels[i$2] = stackTop._level; // 5.2\n              var level$1 = (charType === TYPE_RLO ? nextOdd : nextEven)(stackTop._level);\n              if (level$1 <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n                statusStack.push({\n                  _level: level$1,\n                  _override: (charType & TYPE_RLO) ? TYPE_R : TYPE_L,\n                  _isolate: 0\n                });\n              } else if (!overflowIsolateCount) {\n                overflowEmbeddingCount++;\n              }\n            }\n\n            // Isolates: 3.3.2 X5a - X5c\n            else if (charType & ISOLATE_INIT_TYPES) {\n              // X5c - FSI becomes either RLI or LRI\n              if (charType & TYPE_FSI) {\n                charType = determineAutoEmbedLevel(i$2 + 1, true) === 1 ? TYPE_RLI : TYPE_LRI;\n              }\n\n              embedLevels[i$2] = stackTop._level;\n              if (stackTop._override) {\n                changeCharType(i$2, stackTop._override);\n              }\n              var level$2 = (charType === TYPE_RLI ? nextOdd : nextEven)(stackTop._level);\n              if (level$2 <= MAX_DEPTH && overflowIsolateCount === 0 && overflowEmbeddingCount === 0) {\n                validIsolateCount++;\n                statusStack.push({\n                  _level: level$2,\n                  _override: 0,\n                  _isolate: 1,\n                  _isolInitIndex: i$2\n                });\n              } else {\n                overflowIsolateCount++;\n              }\n            }\n\n            // Terminating Isolates: 3.3.2 X6a\n            else if (charType & TYPE_PDI) {\n              if (overflowIsolateCount > 0) {\n                overflowIsolateCount--;\n              } else if (validIsolateCount > 0) {\n                overflowEmbeddingCount = 0;\n                while (!statusStack[statusStack.length - 1]._isolate) {\n                  statusStack.pop();\n                }\n                // Add to isolation pairs bidirectional mapping:\n                var isolInitIndex = statusStack[statusStack.length - 1]._isolInitIndex;\n                if (isolInitIndex != null) {\n                  isolationPairs.set(isolInitIndex, i$2);\n                  isolationPairs.set(i$2, isolInitIndex);\n                }\n                statusStack.pop();\n                validIsolateCount--;\n              }\n              stackTop = statusStack[statusStack.length - 1];\n              embedLevels[i$2] = stackTop._level;\n              if (stackTop._override) {\n                changeCharType(i$2, stackTop._override);\n              }\n            }\n\n\n            // Terminating Embeddings and Overrides: 3.3.2 X7\n            else if (charType & TYPE_PDF) {\n              if (overflowIsolateCount === 0) {\n                if (overflowEmbeddingCount > 0) {\n                  overflowEmbeddingCount--;\n                } else if (!stackTop._isolate && statusStack.length > 1) {\n                  statusStack.pop();\n                  stackTop = statusStack[statusStack.length - 1];\n                }\n              }\n              embedLevels[i$2] = stackTop._level; // 5.2\n            }\n\n            // End of Paragraph: 3.3.2 X8\n            else if (charType & TYPE_B) {\n              embedLevels[i$2] = paragraph.level;\n            }\n          }\n\n          // Non-formatting characters: 3.3.2 X6\n          else {\n            embedLevels[i$2] = stackTop._level;\n            // NOTE: This exclusion of BN seems to go against what section 5.2 says, but is required for test passage\n            if (stackTop._override && charType !== TYPE_BN) {\n              changeCharType(i$2, stackTop._override);\n            }\n          }\n        }\n\n        // === 3.3.3 Preparations for Implicit Processing ===\n\n        // Remove all RLE, LRE, RLO, LRO, PDF, and BN characters: 3.3.3 X9\n        // Note: Due to section 5.2, we won't remove them, but we'll use the BN_LIKE_TYPES bitset to\n        // easily ignore them all from here on out.\n\n        // 3.3.3 X10\n        // Compute the set of isolating run sequences as specified by BD13\n        var levelRuns = [];\n        var currentRun = null;\n        for (var i$3 = paragraph.start; i$3 <= paragraph.end; i$3++) {\n          var charType$1 = charTypes[i$3];\n          if (!(charType$1 & BN_LIKE_TYPES)) {\n            var lvl = embedLevels[i$3];\n            var isIsolInit = charType$1 & ISOLATE_INIT_TYPES;\n            var isPDI = charType$1 === TYPE_PDI;\n            if (currentRun && lvl === currentRun._level) {\n              currentRun._end = i$3;\n              currentRun._endsWithIsolInit = isIsolInit;\n            } else {\n              levelRuns.push(currentRun = {\n                _start: i$3,\n                _end: i$3,\n                _level: lvl,\n                _startsWithPDI: isPDI,\n                _endsWithIsolInit: isIsolInit\n              });\n            }\n          }\n        }\n        var isolatingRunSeqs = []; // [{seqIndices: [], sosType: L|R, eosType: L|R}]\n        for (var runIdx = 0; runIdx < levelRuns.length; runIdx++) {\n          var run = levelRuns[runIdx];\n          if (!run._startsWithPDI || (run._startsWithPDI && !isolationPairs.has(run._start))) {\n            var seqRuns = [currentRun = run];\n            for (var pdiIndex = (void 0); currentRun && currentRun._endsWithIsolInit && (pdiIndex = isolationPairs.get(currentRun._end)) != null;) {\n              for (var i$4 = runIdx + 1; i$4 < levelRuns.length; i$4++) {\n                if (levelRuns[i$4]._start === pdiIndex) {\n                  seqRuns.push(currentRun = levelRuns[i$4]);\n                  break\n                }\n              }\n            }\n            // build flat list of indices across all runs:\n            var seqIndices = [];\n            for (var i$5 = 0; i$5 < seqRuns.length; i$5++) {\n              var run$1 = seqRuns[i$5];\n              for (var j = run$1._start; j <= run$1._end; j++) {\n                seqIndices.push(j);\n              }\n            }\n            // determine the sos/eos types:\n            var firstLevel = embedLevels[seqIndices[0]];\n            var prevLevel = paragraph.level;\n            for (var i$6 = seqIndices[0] - 1; i$6 >= 0; i$6--) {\n              if (!(charTypes[i$6] & BN_LIKE_TYPES)) { //5.2\n                prevLevel = embedLevels[i$6];\n                break\n              }\n            }\n            var lastIndex = seqIndices[seqIndices.length - 1];\n            var lastLevel = embedLevels[lastIndex];\n            var nextLevel = paragraph.level;\n            if (!(charTypes[lastIndex] & ISOLATE_INIT_TYPES)) {\n              for (var i$7 = lastIndex + 1; i$7 <= paragraph.end; i$7++) {\n                if (!(charTypes[i$7] & BN_LIKE_TYPES)) { //5.2\n                  nextLevel = embedLevels[i$7];\n                  break\n                }\n              }\n            }\n            isolatingRunSeqs.push({\n              _seqIndices: seqIndices,\n              _sosType: Math.max(prevLevel, firstLevel) % 2 ? TYPE_R : TYPE_L,\n              _eosType: Math.max(nextLevel, lastLevel) % 2 ? TYPE_R : TYPE_L\n            });\n          }\n        }\n\n        // The next steps are done per isolating run sequence\n        for (var seqIdx = 0; seqIdx < isolatingRunSeqs.length; seqIdx++) {\n          var ref = isolatingRunSeqs[seqIdx];\n          var seqIndices$1 = ref._seqIndices;\n          var sosType = ref._sosType;\n          var eosType = ref._eosType;\n          /**\n           * All the level runs in an isolating run sequence have the same embedding level.\n           * \n           * DO NOT change any `embedLevels[i]` within the current scope.\n           */\n          var embedDirection = ((embedLevels[seqIndices$1[0]]) & 1) ? TYPE_R : TYPE_L;\n\n          // === 3.3.4 Resolving Weak Types ===\n\n          // W1 + 5.2. Search backward from each NSM to the first character in the isolating run sequence whose\n          // bidirectional type is not BN, and set the NSM to ON if it is an isolate initiator or PDI, and to its\n          // type otherwise. If the NSM is the first non-BN character, change the NSM to the type of sos.\n          if (charTypeCounts.get(TYPE_NSM)) {\n            for (var si = 0; si < seqIndices$1.length; si++) {\n              var i$8 = seqIndices$1[si];\n              if (charTypes[i$8] & TYPE_NSM) {\n                var prevType = sosType;\n                for (var sj = si - 1; sj >= 0; sj--) {\n                  if (!(charTypes[seqIndices$1[sj]] & BN_LIKE_TYPES)) { //5.2 scan back to first non-BN\n                    prevType = charTypes[seqIndices$1[sj]];\n                    break\n                  }\n                }\n                changeCharType(i$8, (prevType & (ISOLATE_INIT_TYPES | TYPE_PDI)) ? TYPE_ON : prevType);\n              }\n            }\n          }\n\n          // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sos)\n          // is found. If an AL is found, change the type of the European number to Arabic number.\n          if (charTypeCounts.get(TYPE_EN)) {\n            for (var si$1 = 0; si$1 < seqIndices$1.length; si$1++) {\n              var i$9 = seqIndices$1[si$1];\n              if (charTypes[i$9] & TYPE_EN) {\n                for (var sj$1 = si$1 - 1; sj$1 >= -1; sj$1--) {\n                  var prevCharType = sj$1 === -1 ? sosType : charTypes[seqIndices$1[sj$1]];\n                  if (prevCharType & STRONG_TYPES) {\n                    if (prevCharType === TYPE_AL) {\n                      changeCharType(i$9, TYPE_AN);\n                    }\n                    break\n                  }\n                }\n              }\n            }\n          }\n\n          // W3. Change all ALs to R\n          if (charTypeCounts.get(TYPE_AL)) {\n            for (var si$2 = 0; si$2 < seqIndices$1.length; si$2++) {\n              var i$10 = seqIndices$1[si$2];\n              if (charTypes[i$10] & TYPE_AL) {\n                changeCharType(i$10, TYPE_R);\n              }\n            }\n          }\n\n          // W4. A single European separator between two European numbers changes to a European number. A single common\n          // separator between two numbers of the same type changes to that type.\n          if (charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n            for (var si$3 = 1; si$3 < seqIndices$1.length - 1; si$3++) {\n              var i$11 = seqIndices$1[si$3];\n              if (charTypes[i$11] & (TYPE_ES | TYPE_CS)) {\n                var prevType$1 = 0, nextType = 0;\n                for (var sj$2 = si$3 - 1; sj$2 >= 0; sj$2--) {\n                  prevType$1 = charTypes[seqIndices$1[sj$2]];\n                  if (!(prevType$1 & BN_LIKE_TYPES)) { //5.2\n                    break\n                  }\n                }\n                for (var sj$3 = si$3 + 1; sj$3 < seqIndices$1.length; sj$3++) {\n                  nextType = charTypes[seqIndices$1[sj$3]];\n                  if (!(nextType & BN_LIKE_TYPES)) { //5.2\n                    break\n                  }\n                }\n                if (prevType$1 === nextType && (charTypes[i$11] === TYPE_ES ? prevType$1 === TYPE_EN : (prevType$1 & (TYPE_EN | TYPE_AN)))) {\n                  changeCharType(i$11, prevType$1);\n                }\n              }\n            }\n          }\n\n          // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers.\n          if (charTypeCounts.get(TYPE_EN)) {\n            for (var si$4 = 0; si$4 < seqIndices$1.length; si$4++) {\n              var i$12 = seqIndices$1[si$4];\n              if (charTypes[i$12] & TYPE_EN) {\n                for (var sj$4 = si$4 - 1; sj$4 >= 0 && (charTypes[seqIndices$1[sj$4]] & (TYPE_ET | BN_LIKE_TYPES)); sj$4--) {\n                  changeCharType(seqIndices$1[sj$4], TYPE_EN);\n                }\n                for (si$4++; si$4 < seqIndices$1.length && (charTypes[seqIndices$1[si$4]] & (TYPE_ET | BN_LIKE_TYPES | TYPE_EN)); si$4++) {\n                  if (charTypes[seqIndices$1[si$4]] !== TYPE_EN) {\n                    changeCharType(seqIndices$1[si$4], TYPE_EN);\n                  }\n                }\n              }\n            }\n          }\n\n          // W6. Otherwise, separators and terminators change to Other Neutral.\n          if (charTypeCounts.get(TYPE_ET) || charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n            for (var si$5 = 0; si$5 < seqIndices$1.length; si$5++) {\n              var i$13 = seqIndices$1[si$5];\n              if (charTypes[i$13] & (TYPE_ET | TYPE_ES | TYPE_CS)) {\n                changeCharType(i$13, TYPE_ON);\n                // 5.2 transform adjacent BNs too:\n                for (var sj$5 = si$5 - 1; sj$5 >= 0 && (charTypes[seqIndices$1[sj$5]] & BN_LIKE_TYPES); sj$5--) {\n                  changeCharType(seqIndices$1[sj$5], TYPE_ON);\n                }\n                for (var sj$6 = si$5 + 1; sj$6 < seqIndices$1.length && (charTypes[seqIndices$1[sj$6]] & BN_LIKE_TYPES); sj$6++) {\n                  changeCharType(seqIndices$1[sj$6], TYPE_ON);\n                }\n              }\n            }\n          }\n\n          // W7. Search backward from each instance of a European number until the first strong type (R, L, or sos)\n          // is found. If an L is found, then change the type of the European number to L.\n          // NOTE: implemented in single forward pass for efficiency\n          if (charTypeCounts.get(TYPE_EN)) {\n            for (var si$6 = 0, prevStrongType = sosType; si$6 < seqIndices$1.length; si$6++) {\n              var i$14 = seqIndices$1[si$6];\n              var type = charTypes[i$14];\n              if (type & TYPE_EN) {\n                if (prevStrongType === TYPE_L) {\n                  changeCharType(i$14, TYPE_L);\n                }\n              } else if (type & STRONG_TYPES) {\n                prevStrongType = type;\n              }\n            }\n          }\n\n          // === 3.3.5 Resolving Neutral and Isolate Formatting Types ===\n\n          if (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES)) {\n            // N0. Process bracket pairs in an isolating run sequence sequentially in the logical order of the text\n            // positions of the opening paired brackets using the logic given below. Within this scope, bidirectional\n            // types EN and AN are treated as R.\n            var R_TYPES_FOR_N_STEPS = (TYPE_R | TYPE_EN | TYPE_AN);\n            var STRONG_TYPES_FOR_N_STEPS = R_TYPES_FOR_N_STEPS | TYPE_L;\n\n            // * Identify the bracket pairs in the current isolating run sequence according to BD16.\n            var bracketPairs = [];\n            {\n              var openerStack = [];\n              for (var si$7 = 0; si$7 < seqIndices$1.length; si$7++) {\n                // NOTE: for any potential bracket character we also test that it still carries a NI\n                // type, as that may have been changed earlier. This doesn't seem to be explicitly\n                // called out in the spec, but is required for passage of certain tests.\n                if (charTypes[seqIndices$1[si$7]] & NEUTRAL_ISOLATE_TYPES) {\n                  var char = string[seqIndices$1[si$7]];\n                  var oppositeBracket = (void 0);\n                  // Opening bracket\n                  if (openingToClosingBracket(char) !== null) {\n                    if (openerStack.length < 63) {\n                      openerStack.push({ char: char, seqIndex: si$7 });\n                    } else {\n                      break\n                    }\n                  }\n                  // Closing bracket\n                  else if ((oppositeBracket = closingToOpeningBracket(char)) !== null) {\n                    for (var stackIdx = openerStack.length - 1; stackIdx >= 0; stackIdx--) {\n                      var stackChar = openerStack[stackIdx].char;\n                      if (stackChar === oppositeBracket ||\n                        stackChar === closingToOpeningBracket(getCanonicalBracket(char)) ||\n                        openingToClosingBracket(getCanonicalBracket(stackChar)) === char\n                      ) {\n                        bracketPairs.push([openerStack[stackIdx].seqIndex, si$7]);\n                        openerStack.length = stackIdx; //pop the matching bracket and all following\n                        break\n                      }\n                    }\n                  }\n                }\n              }\n              bracketPairs.sort(function (a, b) { return a[0] - b[0]; });\n            }\n            // * For each bracket-pair element in the list of pairs of text positions\n            for (var pairIdx = 0; pairIdx < bracketPairs.length; pairIdx++) {\n              var ref$1 = bracketPairs[pairIdx];\n              var openSeqIdx = ref$1[0];\n              var closeSeqIdx = ref$1[1];\n              // a. Inspect the bidirectional types of the characters enclosed within the bracket pair.\n              // b. If any strong type (either L or R) matching the embedding direction is found, set the type for both\n              // brackets in the pair to match the embedding direction.\n              var foundStrongType = false;\n              var useStrongType = 0;\n              for (var si$8 = openSeqIdx + 1; si$8 < closeSeqIdx; si$8++) {\n                var i$15 = seqIndices$1[si$8];\n                if (charTypes[i$15] & STRONG_TYPES_FOR_N_STEPS) {\n                  foundStrongType = true;\n                  var lr = (charTypes[i$15] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                  if (lr === embedDirection) {\n                    useStrongType = lr;\n                    break\n                  }\n                }\n              }\n              // c. Otherwise, if there is a strong type it must be opposite the embedding direction. Therefore, test\n              // for an established context with a preceding strong type by checking backwards before the opening paired\n              // bracket until the first strong type (L, R, or sos) is found.\n              //    1. If the preceding strong type is also opposite the embedding direction, context is established, so\n              //    set the type for both brackets in the pair to that direction.\n              //    2. Otherwise set the type for both brackets in the pair to the embedding direction.\n              if (foundStrongType && !useStrongType) {\n                useStrongType = sosType;\n                for (var si$9 = openSeqIdx - 1; si$9 >= 0; si$9--) {\n                  var i$16 = seqIndices$1[si$9];\n                  if (charTypes[i$16] & STRONG_TYPES_FOR_N_STEPS) {\n                    var lr$1 = (charTypes[i$16] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                    if (lr$1 !== embedDirection) {\n                      useStrongType = lr$1;\n                    } else {\n                      useStrongType = embedDirection;\n                    }\n                    break\n                  }\n                }\n              }\n              if (useStrongType) {\n                charTypes[seqIndices$1[openSeqIdx]] = charTypes[seqIndices$1[closeSeqIdx]] = useStrongType;\n                // * Any number of characters that had original bidirectional character type NSM prior to the application\n                // of W1 that immediately follow a paired bracket which changed to L or R under N0 should change to match\n                // the type of their preceding bracket.\n                if (useStrongType !== embedDirection) {\n                  for (var si$10 = openSeqIdx + 1; si$10 < seqIndices$1.length; si$10++) {\n                    if (!(charTypes[seqIndices$1[si$10]] & BN_LIKE_TYPES)) {\n                      if (getBidiCharType(string[seqIndices$1[si$10]]) & TYPE_NSM) {\n                        charTypes[seqIndices$1[si$10]] = useStrongType;\n                      }\n                      break\n                    }\n                  }\n                }\n                if (useStrongType !== embedDirection) {\n                  for (var si$11 = closeSeqIdx + 1; si$11 < seqIndices$1.length; si$11++) {\n                    if (!(charTypes[seqIndices$1[si$11]] & BN_LIKE_TYPES)) {\n                      if (getBidiCharType(string[seqIndices$1[si$11]]) & TYPE_NSM) {\n                        charTypes[seqIndices$1[si$11]] = useStrongType;\n                      }\n                      break\n                    }\n                  }\n                }\n              }\n            }\n\n            // N1. A sequence of NIs takes the direction of the surrounding strong text if the text on both sides has the\n            // same direction.\n            // N2. Any remaining NIs take the embedding direction.\n            for (var si$12 = 0; si$12 < seqIndices$1.length; si$12++) {\n              if (charTypes[seqIndices$1[si$12]] & NEUTRAL_ISOLATE_TYPES) {\n                var niRunStart = si$12, niRunEnd = si$12;\n                var prevType$2 = sosType; //si === 0 ? sosType : (charTypes[seqIndices[si - 1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L\n                for (var si2 = si$12 - 1; si2 >= 0; si2--) {\n                  if (charTypes[seqIndices$1[si2]] & BN_LIKE_TYPES) {\n                    niRunStart = si2; //5.2 treat BNs adjacent to NIs as NIs\n                  } else {\n                    prevType$2 = (charTypes[seqIndices$1[si2]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                    break\n                  }\n                }\n                var nextType$1 = eosType;\n                for (var si2$1 = si$12 + 1; si2$1 < seqIndices$1.length; si2$1++) {\n                  if (charTypes[seqIndices$1[si2$1]] & (NEUTRAL_ISOLATE_TYPES | BN_LIKE_TYPES)) {\n                    niRunEnd = si2$1;\n                  } else {\n                    nextType$1 = (charTypes[seqIndices$1[si2$1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n                    break\n                  }\n                }\n                for (var sj$7 = niRunStart; sj$7 <= niRunEnd; sj$7++) {\n                  charTypes[seqIndices$1[sj$7]] = prevType$2 === nextType$1 ? prevType$2 : embedDirection;\n                }\n                si$12 = niRunEnd;\n              }\n            }\n          }\n        }\n\n        // === 3.3.6 Resolving Implicit Levels ===\n\n        for (var i$17 = paragraph.start; i$17 <= paragraph.end; i$17++) {\n          var level$3 = embedLevels[i$17];\n          var type$1 = charTypes[i$17];\n          // I2. For all characters with an odd (right-to-left) embedding level, those of type L, EN or AN go up one level.\n          if (level$3 & 1) {\n            if (type$1 & (TYPE_L | TYPE_EN | TYPE_AN)) {\n              embedLevels[i$17]++;\n            }\n          }\n            // I1. For all characters with an even (left-to-right) embedding level, those of type R go up one level\n          // and those of type AN or EN go up two levels.\n          else {\n            if (type$1 & TYPE_R) {\n              embedLevels[i$17]++;\n            } else if (type$1 & (TYPE_AN | TYPE_EN)) {\n              embedLevels[i$17] += 2;\n            }\n          }\n\n          // 5.2: Resolve any LRE, RLE, LRO, RLO, PDF, or BN to the level of the preceding character if there is one,\n          // and otherwise to the base level.\n          if (type$1 & BN_LIKE_TYPES) {\n            embedLevels[i$17] = i$17 === 0 ? paragraph.level : embedLevels[i$17 - 1];\n          }\n\n          // 3.4 L1.1-4: Reset the embedding level of segment/paragraph separators, and any sequence of whitespace or\n          // isolate formatting characters preceding them or the end of the paragraph, to the paragraph level.\n          // NOTE: this will also need to be applied to each individual line ending after line wrapping occurs.\n          if (i$17 === paragraph.end || getBidiCharType(string[i$17]) & (TYPE_S | TYPE_B)) {\n            for (var j$1 = i$17; j$1 >= 0 && (getBidiCharType(string[j$1]) & TRAILING_TYPES); j$1--) {\n              embedLevels[j$1] = paragraph.level;\n            }\n          }\n        }\n      }\n\n      // DONE! The resolved levels can then be used, after line wrapping, to flip runs of characters\n      // according to section 3.4 Reordering Resolved Levels\n      return {\n        levels: embedLevels,\n        paragraphs: paragraphs\n      }\n\n      function determineAutoEmbedLevel (start, isFSI) {\n        // 3.3.1 P2 - P3\n        for (var i = start; i < string.length; i++) {\n          var charType = charTypes[i];\n          if (charType & (TYPE_R | TYPE_AL)) {\n            return 1\n          }\n          if ((charType & (TYPE_B | TYPE_L)) || (isFSI && charType === TYPE_PDI)) {\n            return 0\n          }\n          if (charType & ISOLATE_INIT_TYPES) {\n            var pdi = indexOfMatchingPDI(i);\n            i = pdi === -1 ? string.length : pdi;\n          }\n        }\n        return 0\n      }\n\n      function indexOfMatchingPDI (isolateStart) {\n        // 3.1.2 BD9\n        var isolationLevel = 1;\n        for (var i = isolateStart + 1; i < string.length; i++) {\n          var charType = charTypes[i];\n          if (charType & TYPE_B) {\n            break\n          }\n          if (charType & TYPE_PDI) {\n            if (--isolationLevel === 0) {\n              return i\n            }\n          } else if (charType & ISOLATE_INIT_TYPES) {\n            isolationLevel++;\n          }\n        }\n        return -1\n      }\n    }\n\n    // Bidi mirrored chars data, auto generated\n    var data = \"14>1,j>2,t>2,u>2,1a>g,2v3>1,1>1,1ge>1,1wd>1,b>1,1j>1,f>1,ai>3,-2>3,+1,8>1k0,-1jq>1y7,-1y6>1hf,-1he>1h6,-1h5>1ha,-1h8>1qi,-1pu>1,6>3u,-3s>7,6>1,1>1,f>1,1>1,+2,3>1,1>1,+13,4>1,1>1,6>1eo,-1ee>1,3>1mg,-1me>1mk,-1mj>1mi,-1mg>1mi,-1md>1,1>1,+2,1>10k,-103>1,1>1,4>1,5>1,1>1,+10,3>1,1>8,-7>8,+1,-6>7,+1,a>1,1>1,u>1,u6>1,1>1,+5,26>1,1>1,2>1,2>2,8>1,7>1,4>1,1>1,+5,b8>1,1>1,+3,1>3,-2>1,2>1,1>1,+2,c>1,3>1,1>1,+2,h>1,3>1,a>1,1>1,2>1,3>1,1>1,d>1,f>1,3>1,1a>1,1>1,6>1,7>1,13>1,k>1,1>1,+19,4>1,1>1,+2,2>1,1>1,+18,m>1,a>1,1>1,lk>1,1>1,4>1,2>1,f>1,3>1,1>1,+3,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,6>1,4j>1,j>2,t>2,u>2,2>1,+1\";\n\n    var mirrorMap;\n\n    function parse () {\n      if (!mirrorMap) {\n        //const start = performance.now()\n        var ref = parseCharacterMap(data, true);\n        var map = ref.map;\n        var reverseMap = ref.reverseMap;\n        // Combine both maps into one\n        reverseMap.forEach(function (value, key) {\n          map.set(key, value);\n        });\n        mirrorMap = map;\n        //console.log(`mirrored chars parsed in ${performance.now() - start}ms`)\n      }\n    }\n\n    function getMirroredCharacter (char) {\n      parse();\n      return mirrorMap.get(char) || null\n    }\n\n    /**\n     * Given a string and its resolved embedding levels, build a map of indices to replacement chars\n     * for any characters in right-to-left segments that have defined mirrored characters.\n     * @param string\n     * @param embeddingLevels\n     * @param [start]\n     * @param [end]\n     * @return {Map<number, string>}\n     */\n    function getMirroredCharactersMap(string, embeddingLevels, start, end) {\n      var strLen = string.length;\n      start = Math.max(0, start == null ? 0 : +start);\n      end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n      var map = new Map();\n      for (var i = start; i <= end; i++) {\n        if (embeddingLevels[i] & 1) { //only odd (rtl) levels\n          var mirror = getMirroredCharacter(string[i]);\n          if (mirror !== null) {\n            map.set(i, mirror);\n          }\n        }\n      }\n      return map\n    }\n\n    /**\n     * Given a start and end denoting a single line within a string, and a set of precalculated\n     * bidi embedding levels, produce a list of segments whose ordering should be flipped, in sequence.\n     * @param {string} string - the full input string\n     * @param {GetEmbeddingLevelsResult} embeddingLevelsResult - the result object from getEmbeddingLevels\n     * @param {number} [start] - first character in a subset of the full string\n     * @param {number} [end] - last character in a subset of the full string\n     * @return {number[][]} - the list of start/end segments that should be flipped, in order.\n     */\n    function getReorderSegments(string, embeddingLevelsResult, start, end) {\n      var strLen = string.length;\n      start = Math.max(0, start == null ? 0 : +start);\n      end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n      var segments = [];\n      embeddingLevelsResult.paragraphs.forEach(function (paragraph) {\n        var lineStart = Math.max(start, paragraph.start);\n        var lineEnd = Math.min(end, paragraph.end);\n        if (lineStart < lineEnd) {\n          // Local slice for mutation\n          var lineLevels = embeddingLevelsResult.levels.slice(lineStart, lineEnd + 1);\n\n          // 3.4 L1.4: Reset any sequence of whitespace characters and/or isolate formatting characters at the\n          // end of the line to the paragraph level.\n          for (var i = lineEnd; i >= lineStart && (getBidiCharType(string[i]) & TRAILING_TYPES); i--) {\n            lineLevels[i] = paragraph.level;\n          }\n\n          // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels\n          // not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher.\n          var maxLevel = paragraph.level;\n          var minOddLevel = Infinity;\n          for (var i$1 = 0; i$1 < lineLevels.length; i$1++) {\n            var level = lineLevels[i$1];\n            if (level > maxLevel) { maxLevel = level; }\n            if (level < minOddLevel) { minOddLevel = level | 1; }\n          }\n          for (var lvl = maxLevel; lvl >= minOddLevel; lvl--) {\n            for (var i$2 = 0; i$2 < lineLevels.length; i$2++) {\n              if (lineLevels[i$2] >= lvl) {\n                var segStart = i$2;\n                while (i$2 + 1 < lineLevels.length && lineLevels[i$2 + 1] >= lvl) {\n                  i$2++;\n                }\n                if (i$2 > segStart) {\n                  segments.push([segStart + lineStart, i$2 + lineStart]);\n                }\n              }\n            }\n          }\n        }\n      });\n      return segments\n    }\n\n    /**\n     * @param {string} string\n     * @param {GetEmbeddingLevelsResult} embedLevelsResult\n     * @param {number} [start]\n     * @param {number} [end]\n     * @return {string} the new string with bidi segments reordered\n     */\n    function getReorderedString(string, embedLevelsResult, start, end) {\n      var indices = getReorderedIndices(string, embedLevelsResult, start, end);\n      var chars = [].concat( string );\n      indices.forEach(function (charIndex, i) {\n        chars[i] = (\n          (embedLevelsResult.levels[charIndex] & 1) ? getMirroredCharacter(string[charIndex]) : null\n        ) || string[charIndex];\n      });\n      return chars.join('')\n    }\n\n    /**\n     * @param {string} string\n     * @param {GetEmbeddingLevelsResult} embedLevelsResult\n     * @param {number} [start]\n     * @param {number} [end]\n     * @return {number[]} an array with character indices in their new bidi order\n     */\n    function getReorderedIndices(string, embedLevelsResult, start, end) {\n      var segments = getReorderSegments(string, embedLevelsResult, start, end);\n      // Fill an array with indices\n      var indices = [];\n      for (var i = 0; i < string.length; i++) {\n        indices[i] = i;\n      }\n      // Reverse each segment in order\n      segments.forEach(function (ref) {\n        var start = ref[0];\n        var end = ref[1];\n\n        var slice = indices.slice(start, end + 1);\n        for (var i = slice.length; i--;) {\n          indices[end - i] = slice[i];\n        }\n      });\n      return indices\n    }\n\n    exports.closingToOpeningBracket = closingToOpeningBracket;\n    exports.getBidiCharType = getBidiCharType;\n    exports.getBidiCharTypeName = getBidiCharTypeName;\n    exports.getCanonicalBracket = getCanonicalBracket;\n    exports.getEmbeddingLevels = getEmbeddingLevels;\n    exports.getMirroredCharacter = getMirroredCharacter;\n    exports.getMirroredCharactersMap = getMirroredCharactersMap;\n    exports.getReorderSegments = getReorderSegments;\n    exports.getReorderedIndices = getReorderedIndices;\n    exports.getReorderedString = getReorderedString;\n    exports.openingToClosingBracket = openingToClosingBracket;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n    return exports;\n\n  }({}));\n  return bidi}\n\n  return bidiFactory;\n\n})));\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.js\nvar index_exports = {};\n__export(index_exports, {\n  DOMSelector: () => DOMSelector\n});\nmodule.exports = __toCommonJS(index_exports);\nvar import_lru_cache = require(\"lru-cache\");\n\n// src/js/parser.js\nvar cssTree2 = __toESM(require(\"css-tree\"), 1);\n\n// src/js/utility.js\nvar import_nwsapi = __toESM(require(\"@asamuzakjp/nwsapi\"), 1);\nvar import_bidi_js = __toESM(require(\"bidi-js\"), 1);\nvar cssTree = __toESM(require(\"css-tree\"), 1);\nvar import_is_potential_custom_element_name = __toESM(require(\"is-potential-custom-element-name\"), 1);\n\n// src/js/constant.js\nvar ATTR_SELECTOR = \"AttributeSelector\";\nvar CLASS_SELECTOR = \"ClassSelector\";\nvar COMBINATOR = \"Combinator\";\nvar IDENT = \"Identifier\";\nvar ID_SELECTOR = \"IdSelector\";\nvar NOT_SUPPORTED_ERR = \"NotSupportedError\";\nvar NTH = \"Nth\";\nvar PS_CLASS_SELECTOR = \"PseudoClassSelector\";\nvar PS_ELEMENT_SELECTOR = \"PseudoElementSelector\";\nvar SELECTOR = \"Selector\";\nvar STRING = \"String\";\nvar SYNTAX_ERR = \"SyntaxError\";\nvar TARGET_ALL = \"all\";\nvar TARGET_FIRST = \"first\";\nvar TARGET_LINEAL = \"lineal\";\nvar TARGET_SELF = \"self\";\nvar TYPE_SELECTOR = \"TypeSelector\";\nvar BIT_01 = 1;\nvar BIT_02 = 2;\nvar BIT_04 = 4;\nvar BIT_08 = 8;\nvar BIT_16 = 16;\nvar BIT_32 = 32;\nvar BIT_FFFF = 65535;\nvar DUO = 2;\nvar HEX = 16;\nvar TYPE_FROM = 8;\nvar TYPE_TO = -1;\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar DOCUMENT_POSITION_PRECEDING = 2;\nvar DOCUMENT_POSITION_CONTAINS = 8;\nvar SHOW_ALL = 4294967295;\nvar SHOW_CONTAINER = 1281;\nvar ALPHA_NUM = \"[A-Z\\\\d]+\";\nvar CHILD_IDX = \"(?:first|last|only)-(?:child|of-type)\";\nvar DIGIT = \"(?:0|[1-9]\\\\d*)\";\nvar LANG_PART = `(?:-${ALPHA_NUM})*`;\nvar PSEUDO_CLASS = `(?:any-)?link|${CHILD_IDX}|checked|empty|indeterminate|read-(?:only|write)|target`;\nvar ANB = `[+-]?(?:${DIGIT}n?|n)|(?:[+-]?${DIGIT})?n\\\\s*[+-]\\\\s*${DIGIT}`;\nvar COMBO = \"\\\\s?[\\\\s>~+]\\\\s?\";\nvar DESCEND = \"\\\\s?[\\\\s>]\\\\s?\";\nvar SIBLING = \"\\\\s?[+~]\\\\s?\";\nvar LOGIC_IS = `:is\\\\(\\\\s*[^)]+\\\\s*\\\\)`;\nvar N_TH = `nth-(?:last-)?(?:child|of-type)\\\\(\\\\s*(?:even|odd|${ANB})\\\\s*\\\\)`;\nvar SUB_TYPE = \"\\\\[[^|\\\\]]+\\\\]|[#.:][\\\\w-]+\";\nvar SUB_TYPE_WO_PSEUDO = \"\\\\[[^|\\\\]]+\\\\]|[#.][\\\\w-]+\";\nvar TAG_TYPE = \"\\\\*|[A-Za-z][\\\\w-]*\";\nvar TAG_TYPE_I = \"\\\\*|[A-Z][\\\\w-]*\";\nvar COMPOUND = `(?:${TAG_TYPE}|(?:${TAG_TYPE})?(?:${SUB_TYPE})+)`;\nvar COMPOUND_L = `(?:${TAG_TYPE}|(?:${TAG_TYPE})?(?:${SUB_TYPE}|${LOGIC_IS})+)`;\nvar COMPOUND_I = `(?:${TAG_TYPE_I}|(?:${TAG_TYPE_I})?(?:${SUB_TYPE})+)`;\nvar COMPOUND_WO_PSEUDO = `(?:${TAG_TYPE}|(?:${TAG_TYPE})?(?:${SUB_TYPE_WO_PSEUDO})+)`;\nvar COMPLEX = `${COMPOUND}(?:${COMBO}${COMPOUND})*`;\nvar COMPLEX_L = `${COMPOUND_L}(?:${COMBO}${COMPOUND_L})*`;\nvar HAS_COMPOUND = `has\\\\([\\\\s>]?\\\\s*${COMPOUND_WO_PSEUDO}\\\\s*\\\\)`;\nvar LOGIC_COMPOUND = `(?:is|not)\\\\(\\\\s*${COMPOUND_L}(?:\\\\s*,\\\\s*${COMPOUND_L})*\\\\s*\\\\)`;\nvar LOGIC_COMPLEX = `(?:is|not)\\\\(\\\\s*${COMPLEX_L}(?:\\\\s*,\\\\s*${COMPLEX_L})*\\\\s*\\\\)`;\nvar FORM_PARTS = Object.freeze([\n  \"button\",\n  \"input\",\n  \"select\",\n  \"textarea\"\n]);\nvar INPUT_BUTTON = Object.freeze([\"button\", \"reset\", \"submit\"]);\nvar INPUT_CHECK = Object.freeze([\"checkbox\", \"radio\"]);\nvar INPUT_DATE = Object.freeze([\n  \"date\",\n  \"datetime-local\",\n  \"month\",\n  \"time\",\n  \"week\"\n]);\nvar INPUT_TEXT = Object.freeze([\n  \"email\",\n  \"password\",\n  \"search\",\n  \"tel\",\n  \"text\",\n  \"url\"\n]);\nvar INPUT_EDIT = Object.freeze([\n  ...INPUT_DATE,\n  ...INPUT_TEXT,\n  \"number\"\n]);\nvar INPUT_LTR = Object.freeze([\n  ...INPUT_CHECK,\n  \"color\",\n  \"date\",\n  \"image\",\n  \"number\",\n  \"range\",\n  \"time\"\n]);\nvar KEYS_LOGICAL = /* @__PURE__ */ new Set([\"has\", \"is\", \"not\", \"where\"]);\n\n// src/js/utility.js\nvar KEYS_DIR_AUTO = /* @__PURE__ */ new Set([...INPUT_BUTTON, ...INPUT_TEXT, \"hidden\"]);\nvar KEYS_DIR_LTR = new Set(INPUT_LTR);\nvar KEYS_INPUT_EDIT = new Set(INPUT_EDIT);\nvar KEYS_NODE_DIR_EXCLUDE = /* @__PURE__ */ new Set([\"bdi\", \"script\", \"style\", \"textarea\"]);\nvar KEYS_NODE_FOCUSABLE = /* @__PURE__ */ new Set([\"button\", \"select\", \"textarea\"]);\nvar KEYS_NODE_FOCUSABLE_SVG = /* @__PURE__ */ new Set([\n  \"clipPath\",\n  \"defs\",\n  \"desc\",\n  \"linearGradient\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"pattern\",\n  \"radialGradient\",\n  \"script\",\n  \"style\",\n  \"symbol\",\n  \"title\"\n]);\nvar REG_EXCLUDE_BASIC = /[|\\\\]|::|[^\\u0021-\\u007F\\s]|\\[\\s*[\\w$*=^|~-]+(?:(?:\"[\\w$*=^|~\\s'-]+\"|'[\\w$*=^|~\\s\"-]+')?(?:\\s+[\\w$*=^|~-]+)+|\"[^\"\\]]{1,255}|'[^'\\]]{1,255})\\s*\\]|:(?:is|where)\\(\\s*\\)/;\nvar REG_COMPLEX = new RegExp(`${COMPOUND_I}${COMBO}${COMPOUND_I}`, \"i\");\nvar REG_DESCEND = new RegExp(`${COMPOUND_I}${DESCEND}${COMPOUND_I}`, \"i\");\nvar REG_SIBLING = new RegExp(`${COMPOUND_I}${SIBLING}${COMPOUND_I}`, \"i\");\nvar REG_LOGIC_COMPLEX = new RegExp(\n  `:(?!${PSEUDO_CLASS}|${N_TH}|${LOGIC_COMPLEX})`\n);\nvar REG_LOGIC_COMPOUND = new RegExp(\n  `:(?!${PSEUDO_CLASS}|${N_TH}|${LOGIC_COMPOUND})`\n);\nvar REG_LOGIC_HAS_COMPOUND = new RegExp(\n  `:(?!${PSEUDO_CLASS}|${N_TH}|${LOGIC_COMPOUND}|${HAS_COMPOUND})`\n);\nvar REG_END_WITH_HAS = new RegExp(`:${HAS_COMPOUND}$`);\nvar REG_WO_LOGICAL = new RegExp(`:(?!${PSEUDO_CLASS}|${N_TH})`);\nvar REG_IS_HTML = /^(?:application\\/xhtml\\+x|text\\/ht)ml$/;\nvar REG_IS_XML = /^(?:application\\/(?:[\\w\\-.]+\\+)?|image\\/[\\w\\-.]+\\+|text\\/)xml$/;\nvar getType = (o) => Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\nvar generateException = (msg, name, globalObject = globalThis) => {\n  return new globalObject.DOMException(msg, name);\n};\nvar findNestedHas = (leaf) => {\n  return leaf.name === \"has\";\n};\nvar findLogicalWithNestedHas = (leaf) => {\n  if (KEYS_LOGICAL.has(leaf.name) && cssTree.find(leaf, findNestedHas)) {\n    return leaf;\n  }\n  return null;\n};\nvar filterNodesByAnB = (nodes, anb) => {\n  const { a, b, reverse } = anb;\n  const processedNodes = reverse ? [...nodes].reverse() : nodes;\n  const l = nodes.length;\n  const matched = [];\n  if (a === 0) {\n    if (b > 0 && b <= l) {\n      matched.push(processedNodes[b - 1]);\n    }\n    return matched;\n  }\n  let startIndex = b - 1;\n  if (a > 0) {\n    while (startIndex < 0) {\n      startIndex += a;\n    }\n    for (let i = startIndex; i < l; i += a) {\n      matched.push(processedNodes[i]);\n    }\n  } else if (startIndex >= 0) {\n    for (let i = startIndex; i >= 0; i += a) {\n      matched.push(processedNodes[i]);\n    }\n    return matched.reverse();\n  }\n  return matched;\n};\nvar resolveContent = (node) => {\n  if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  let document;\n  let root;\n  let shadow;\n  switch (node.nodeType) {\n    case DOCUMENT_NODE: {\n      document = node;\n      root = node;\n      break;\n    }\n    case DOCUMENT_FRAGMENT_NODE: {\n      const { host, mode, ownerDocument } = node;\n      document = ownerDocument;\n      root = node;\n      shadow = host && (mode === \"close\" || mode === \"open\");\n      break;\n    }\n    case ELEMENT_NODE: {\n      document = node.ownerDocument;\n      let refNode = node;\n      while (refNode) {\n        const { host, mode, nodeType, parentNode } = refNode;\n        if (nodeType === DOCUMENT_FRAGMENT_NODE) {\n          shadow = host && (mode === \"close\" || mode === \"open\");\n          break;\n        } else if (parentNode) {\n          refNode = parentNode;\n        } else {\n          break;\n        }\n      }\n      root = refNode;\n      break;\n    }\n    default: {\n      throw new TypeError(`Unexpected node ${node.nodeName}`);\n    }\n  }\n  return [document, root, !!shadow];\n};\nvar traverseNode = (node, walker, force = false) => {\n  if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  if (!walker) {\n    return null;\n  }\n  let refNode = walker.currentNode;\n  if (refNode === node) {\n    return refNode;\n  } else if (force || refNode.contains(node)) {\n    refNode = walker.nextNode();\n    while (refNode) {\n      if (refNode === node) {\n        break;\n      }\n      refNode = walker.nextNode();\n    }\n    return refNode;\n  } else {\n    if (refNode !== walker.root) {\n      let bool;\n      while (refNode) {\n        if (refNode === node) {\n          bool = true;\n          break;\n        } else if (refNode === walker.root || refNode.contains(node)) {\n          break;\n        }\n        refNode = walker.parentNode();\n      }\n      if (bool) {\n        return refNode;\n      }\n    }\n    if (node.nodeType === ELEMENT_NODE) {\n      let bool;\n      while (refNode) {\n        if (refNode === node) {\n          bool = true;\n          break;\n        }\n        refNode = walker.nextNode();\n      }\n      if (bool) {\n        return refNode;\n      }\n    }\n  }\n  return null;\n};\nvar isCustomElement = (node, opt = {}) => {\n  if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  if (node.nodeType !== ELEMENT_NODE) {\n    return false;\n  }\n  const { localName, ownerDocument } = node;\n  const { formAssociated } = opt;\n  const window = ownerDocument.defaultView;\n  let elmConstructor;\n  const attr = node.getAttribute(\"is\");\n  if (attr) {\n    elmConstructor = (0, import_is_potential_custom_element_name.default)(attr) && window.customElements.get(attr);\n  } else {\n    elmConstructor = (0, import_is_potential_custom_element_name.default)(localName) && window.customElements.get(localName);\n  }\n  if (elmConstructor) {\n    if (formAssociated) {\n      return !!elmConstructor.formAssociated;\n    }\n    return true;\n  }\n  return false;\n};\nvar getSlottedTextContent = (node) => {\n  if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  if (typeof node.assignedNodes !== \"function\") {\n    return null;\n  }\n  const nodes = node.assignedNodes();\n  if (nodes.length) {\n    let text = \"\";\n    const l = nodes.length;\n    for (let i = 0; i < l; i++) {\n      const item = nodes[i];\n      text = item.textContent.trim();\n      if (text) {\n        break;\n      }\n    }\n    return text;\n  }\n  return node.textContent.trim();\n};\nvar getDirectionality = (node) => {\n  if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  if (node.nodeType !== ELEMENT_NODE) {\n    return null;\n  }\n  const { dir: dirAttr, localName, parentNode } = node;\n  const { getEmbeddingLevels } = (0, import_bidi_js.default)();\n  if (dirAttr === \"ltr\" || dirAttr === \"rtl\") {\n    return dirAttr;\n  } else if (dirAttr === \"auto\") {\n    let text = \"\";\n    switch (localName) {\n      case \"input\": {\n        if (!node.type || KEYS_DIR_AUTO.has(node.type)) {\n          text = node.value;\n        } else if (KEYS_DIR_LTR.has(node.type)) {\n          return \"ltr\";\n        }\n        break;\n      }\n      case \"slot\": {\n        text = getSlottedTextContent(node);\n        break;\n      }\n      case \"textarea\": {\n        text = node.value;\n        break;\n      }\n      default: {\n        const items = [].slice.call(node.childNodes);\n        for (const item of items) {\n          const {\n            dir: itemDir,\n            localName: itemLocalName,\n            nodeType: itemNodeType,\n            textContent: itemTextContent\n          } = item;\n          if (itemNodeType === TEXT_NODE) {\n            text = itemTextContent.trim();\n          } else if (itemNodeType === ELEMENT_NODE && !KEYS_NODE_DIR_EXCLUDE.has(itemLocalName) && (!itemDir || itemDir !== \"ltr\" && itemDir !== \"rtl\")) {\n            if (itemLocalName === \"slot\") {\n              text = getSlottedTextContent(item);\n            } else {\n              text = itemTextContent.trim();\n            }\n          }\n          if (text) {\n            break;\n          }\n        }\n      }\n    }\n    if (text) {\n      const {\n        paragraphs: [{ level }]\n      } = getEmbeddingLevels(text);\n      if (level % 2 === 1) {\n        return \"rtl\";\n      }\n    } else if (parentNode) {\n      const { nodeType: parentNodeType } = parentNode;\n      if (parentNodeType === ELEMENT_NODE) {\n        return getDirectionality(parentNode);\n      }\n    }\n  } else if (localName === \"input\" && node.type === \"tel\") {\n    return \"ltr\";\n  } else if (localName === \"bdi\") {\n    const text = node.textContent.trim();\n    if (text) {\n      const {\n        paragraphs: [{ level }]\n      } = getEmbeddingLevels(text);\n      if (level % 2 === 1) {\n        return \"rtl\";\n      }\n    }\n  } else if (parentNode) {\n    if (localName === \"slot\") {\n      const text = getSlottedTextContent(node);\n      if (text) {\n        const {\n          paragraphs: [{ level }]\n        } = getEmbeddingLevels(text);\n        if (level % 2 === 1) {\n          return \"rtl\";\n        }\n        return \"ltr\";\n      }\n    }\n    const { nodeType: parentNodeType } = parentNode;\n    if (parentNodeType === ELEMENT_NODE) {\n      return getDirectionality(parentNode);\n    }\n  }\n  return \"ltr\";\n};\nvar getLanguageAttribute = (node) => {\n  if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  if (node.nodeType !== ELEMENT_NODE) {\n    return null;\n  }\n  const { contentType } = node.ownerDocument;\n  const isHtml = REG_IS_HTML.test(contentType);\n  const isXml = REG_IS_XML.test(contentType);\n  let isShadow = false;\n  let current = node;\n  while (current) {\n    switch (current.nodeType) {\n      case ELEMENT_NODE: {\n        if (isHtml && current.hasAttribute(\"lang\")) {\n          return current.getAttribute(\"lang\");\n        } else if (isXml && current.hasAttribute(\"xml:lang\")) {\n          return current.getAttribute(\"xml:lang\");\n        }\n        break;\n      }\n      case DOCUMENT_FRAGMENT_NODE: {\n        if (current.host) {\n          isShadow = true;\n        }\n        break;\n      }\n      case DOCUMENT_NODE:\n      default: {\n        return null;\n      }\n    }\n    if (isShadow) {\n      current = current.host;\n      isShadow = false;\n    } else if (current.parentNode) {\n      current = current.parentNode;\n    } else {\n      break;\n    }\n  }\n  return null;\n};\nvar isContentEditable = (node) => {\n  if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  if (node.nodeType !== ELEMENT_NODE) {\n    return false;\n  }\n  if (typeof node.isContentEditable === \"boolean\") {\n    return node.isContentEditable;\n  } else if (node.ownerDocument.designMode === \"on\") {\n    return true;\n  } else {\n    let attr;\n    if (node.hasAttribute(\"contenteditable\")) {\n      attr = node.getAttribute(\"contenteditable\");\n    } else {\n      attr = \"inherit\";\n    }\n    switch (attr) {\n      case \"\":\n      case \"true\": {\n        return true;\n      }\n      case \"plaintext-only\": {\n        return true;\n      }\n      case \"false\": {\n        return false;\n      }\n      default: {\n        if (node?.parentNode?.nodeType === ELEMENT_NODE) {\n          return isContentEditable(node.parentNode);\n        }\n        return false;\n      }\n    }\n  }\n};\nvar isVisible = (node) => {\n  if (node?.nodeType !== ELEMENT_NODE) {\n    return false;\n  }\n  const window = node.ownerDocument.defaultView;\n  const { display, visibility } = window.getComputedStyle(node);\n  if (display !== \"none\" && visibility === \"visible\") {\n    return true;\n  }\n  return false;\n};\nvar isFocusVisible = (node) => {\n  if (node?.nodeType !== ELEMENT_NODE) {\n    return false;\n  }\n  const { localName, type } = node;\n  switch (localName) {\n    case \"input\": {\n      if (!type || KEYS_INPUT_EDIT.has(type)) {\n        return true;\n      }\n      return false;\n    }\n    case \"textarea\": {\n      return true;\n    }\n    default: {\n      return isContentEditable(node);\n    }\n  }\n};\nvar isFocusableArea = (node) => {\n  if (node?.nodeType !== ELEMENT_NODE) {\n    return false;\n  }\n  if (!node.isConnected) {\n    return false;\n  }\n  const window = node.ownerDocument.defaultView;\n  if (node instanceof window.HTMLElement) {\n    if (Number.isInteger(parseInt(node.getAttribute(\"tabindex\")))) {\n      return true;\n    }\n    if (isContentEditable(node)) {\n      return true;\n    }\n    const { localName, parentNode } = node;\n    switch (localName) {\n      case \"a\": {\n        if (node.href || node.hasAttribute(\"href\")) {\n          return true;\n        }\n        return false;\n      }\n      case \"iframe\": {\n        return true;\n      }\n      case \"input\": {\n        if (node.disabled || node.hasAttribute(\"disabled\") || node.hidden || node.hasAttribute(\"hidden\")) {\n          return false;\n        }\n        return true;\n      }\n      case \"summary\": {\n        if (parentNode.localName === \"details\") {\n          let child = parentNode.firstElementChild;\n          let bool = false;\n          while (child) {\n            if (child.localName === \"summary\") {\n              bool = child === node;\n              break;\n            }\n            child = child.nextElementSibling;\n          }\n          return bool;\n        }\n        return false;\n      }\n      default: {\n        if (KEYS_NODE_FOCUSABLE.has(localName) && !(node.disabled || node.hasAttribute(\"disabled\"))) {\n          return true;\n        }\n      }\n    }\n  } else if (node instanceof window.SVGElement) {\n    if (Number.isInteger(parseInt(node.getAttributeNS(null, \"tabindex\")))) {\n      const ns = \"http://www.w3.org/2000/svg\";\n      let bool;\n      let refNode = node;\n      while (refNode.namespaceURI === ns) {\n        bool = KEYS_NODE_FOCUSABLE_SVG.has(refNode.localName);\n        if (bool) {\n          break;\n        }\n        if (refNode?.parentNode?.namespaceURI === ns) {\n          refNode = refNode.parentNode;\n        } else {\n          break;\n        }\n      }\n      if (bool) {\n        return false;\n      }\n      return true;\n    }\n    if (node.localName === \"a\" && (node.href || node.hasAttributeNS(null, \"href\"))) {\n      return true;\n    }\n  }\n  return false;\n};\nvar getNamespaceURI = (ns, node) => {\n  if (typeof ns !== \"string\") {\n    throw new TypeError(`Unexpected type ${getType(ns)}`);\n  } else if (!node?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(node)}`);\n  }\n  if (!ns || node.nodeType !== ELEMENT_NODE) {\n    return null;\n  }\n  const { attributes } = node;\n  let res;\n  for (const attr of attributes) {\n    const { name, namespaceURI, prefix, value } = attr;\n    if (name === `xmlns:${ns}`) {\n      res = value;\n    } else if (prefix === ns) {\n      res = namespaceURI;\n    }\n    if (res) {\n      break;\n    }\n  }\n  return res ?? null;\n};\nvar isNamespaceDeclared = (ns = \"\", node = {}) => {\n  if (!ns || typeof ns !== \"string\" || node?.nodeType !== ELEMENT_NODE) {\n    return false;\n  }\n  if (node.lookupNamespaceURI(ns)) {\n    return true;\n  }\n  const root = node.ownerDocument.documentElement;\n  let parent = node;\n  let res;\n  while (parent) {\n    res = getNamespaceURI(ns, parent);\n    if (res || parent === root) {\n      break;\n    }\n    parent = parent.parentNode;\n  }\n  return !!res;\n};\nvar isPreceding = (nodeA, nodeB) => {\n  if (!nodeA?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(nodeA)}`);\n  } else if (!nodeB?.nodeType) {\n    throw new TypeError(`Unexpected type ${getType(nodeB)}`);\n  }\n  if (nodeA.nodeType !== ELEMENT_NODE || nodeB.nodeType !== ELEMENT_NODE) {\n    return false;\n  }\n  const posBit = nodeB.compareDocumentPosition(nodeA);\n  const res = posBit & DOCUMENT_POSITION_PRECEDING || posBit & DOCUMENT_POSITION_CONTAINS;\n  return !!res;\n};\nvar compareNodes = (a, b) => {\n  if (isPreceding(b, a)) {\n    return 1;\n  }\n  return -1;\n};\nvar sortNodes = (nodes = []) => {\n  const arr = [...nodes];\n  if (arr.length > 1) {\n    arr.sort(compareNodes);\n  }\n  return arr;\n};\nvar initNwsapi = (window, document) => {\n  if (!window?.DOMException) {\n    throw new TypeError(`Unexpected global object ${getType(window)}`);\n  }\n  if (document?.nodeType !== DOCUMENT_NODE) {\n    document = window.document;\n  }\n  const nw = (0, import_nwsapi.default)({\n    document,\n    DOMException: window.DOMException\n  });\n  nw.configure({\n    LOGERRORS: false\n  });\n  return nw;\n};\nvar filterSelector = (selector, target) => {\n  const isQuerySelectorType = target === TARGET_FIRST || target === TARGET_ALL;\n  if (!selector || typeof selector !== \"string\" || /null|undefined/.test(selector)) {\n    return false;\n  }\n  if (selector.includes(\"[\")) {\n    const index = selector.lastIndexOf(\"[\");\n    const sel = selector.substring(index);\n    if (sel.indexOf(\"]\") < 0) {\n      return false;\n    }\n  }\n  if (selector.includes(\"/\") || REG_EXCLUDE_BASIC.test(selector)) {\n    return false;\n  }\n  if (selector.includes(\":\")) {\n    let complex = false;\n    if (target !== isQuerySelectorType) {\n      complex = REG_COMPLEX.test(selector);\n    }\n    if (isQuerySelectorType && REG_DESCEND.test(selector) && !REG_SIBLING.test(selector)) {\n      return false;\n    } else if (!isQuerySelectorType && /:has\\(/.test(selector)) {\n      if (!complex || REG_LOGIC_HAS_COMPOUND.test(selector)) {\n        return false;\n      }\n      return REG_END_WITH_HAS.test(selector);\n    } else if (/:(?:is|not)\\(/.test(selector)) {\n      if (complex) {\n        return !REG_LOGIC_COMPLEX.test(selector);\n      } else {\n        return !REG_LOGIC_COMPOUND.test(selector);\n      }\n    } else {\n      return !REG_WO_LOGICAL.test(selector);\n    }\n  }\n  return true;\n};\n\n// src/js/parser.js\nvar import_css_tree = require(\"css-tree\");\nvar AST_SORT_ORDER = /* @__PURE__ */ new Map([\n  [PS_ELEMENT_SELECTOR, BIT_01],\n  [ID_SELECTOR, BIT_02],\n  [CLASS_SELECTOR, BIT_04],\n  [TYPE_SELECTOR, BIT_08],\n  [ATTR_SELECTOR, BIT_16],\n  [PS_CLASS_SELECTOR, BIT_32]\n]);\nvar KEYS_PS_CLASS_STATE = /* @__PURE__ */ new Set([\n  \"checked\",\n  \"closed\",\n  \"disabled\",\n  \"empty\",\n  \"enabled\",\n  \"in-range\",\n  \"indeterminate\",\n  \"invalid\",\n  \"open\",\n  \"out-of-range\",\n  \"placeholder-shown\",\n  \"read-only\",\n  \"read-write\",\n  \"valid\"\n]);\nvar KEYS_SHADOW_HOST = /* @__PURE__ */ new Set([\"host\", \"host-context\"]);\nvar REG_EMPTY_PS_FUNC = /(?<=:(?:dir|has|host(?:-context)?|is|lang|not|nth-(?:last-)?(?:child|of-type)|where))\\(\\s+\\)/g;\nvar REG_SHADOW_PS_ELEMENT = /^part|slotted$/;\nvar U_FFFD = \"\\uFFFD\";\nvar unescapeSelector = (selector = \"\") => {\n  if (typeof selector === \"string\" && selector.indexOf(\"\\\\\", 0) >= 0) {\n    const arr = selector.split(\"\\\\\");\n    const selectorItems = [arr[0]];\n    const l = arr.length;\n    for (let i = 1; i < l; i++) {\n      const item = arr[i];\n      if (item === \"\" && i === l - 1) {\n        selectorItems.push(U_FFFD);\n      } else {\n        const hexExists = /^([\\da-f]{1,6}\\s?)/i.exec(item);\n        if (hexExists) {\n          const [, hex] = hexExists;\n          let str;\n          try {\n            const low = parseInt(\"D800\", HEX);\n            const high = parseInt(\"DFFF\", HEX);\n            const deci = parseInt(hex, HEX);\n            if (deci === 0 || deci >= low && deci <= high) {\n              str = U_FFFD;\n            } else {\n              str = String.fromCodePoint(deci);\n            }\n          } catch (e) {\n            str = U_FFFD;\n          }\n          let postStr = \"\";\n          if (item.length > hex.length) {\n            postStr = item.substring(hex.length);\n          }\n          selectorItems.push(`${str}${postStr}`);\n        } else if (/^[\\n\\r\\f]/.test(item)) {\n          selectorItems.push(`\\\\${item}`);\n        } else {\n          selectorItems.push(item);\n        }\n      }\n    }\n    return selectorItems.join(\"\");\n  }\n  return selector;\n};\nvar preprocess = (value) => {\n  if (typeof value !== \"string\") {\n    if (value === void 0 || value === null) {\n      return getType(value).toLowerCase();\n    } else if (Array.isArray(value)) {\n      return value.join(\",\");\n    } else if (Object.hasOwn(value, \"toString\")) {\n      return value.toString();\n    } else {\n      throw new DOMException(`Invalid selector ${value}`, SYNTAX_ERR);\n    }\n  }\n  let selector = value;\n  let index = 0;\n  while (index >= 0) {\n    index = selector.indexOf(\"#\", index);\n    if (index < 0) {\n      break;\n    }\n    const preHash = selector.substring(0, index + 1);\n    let postHash = selector.substring(index + 1);\n    const codePoint = postHash.codePointAt(0);\n    if (codePoint > BIT_FFFF) {\n      const str = `\\\\${codePoint.toString(HEX)} `;\n      if (postHash.length === DUO) {\n        postHash = str;\n      } else {\n        postHash = `${str}${postHash.substring(DUO)}`;\n      }\n    }\n    selector = `${preHash}${postHash}`;\n    index++;\n  }\n  selector = selector.replace(/\\f|\\r\\n?/g, \"\\n\").replace(/[\\0\\uD800-\\uDFFF]|\\\\$/g, U_FFFD);\n  if (selector === \"&\") {\n    return \"\";\n  }\n  return selector.replace(/\\x26/g, \":scope\");\n};\nvar parseSelector = (sel) => {\n  const selector = preprocess(sel);\n  if (/^$|^\\s*>|,\\s*$/.test(selector)) {\n    throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);\n  }\n  try {\n    return cssTree2.parse(selector, {\n      context: \"selectorList\",\n      parseCustomProperty: true\n    });\n  } catch (e) {\n    const { message } = e;\n    if (/^(?:\"\\]\"|Attribute selector [()\\s,=~^$*|]+) is expected$/.test(\n      message\n    ) && !selector.endsWith(\"]\")) {\n      const index = selector.lastIndexOf(\"[\");\n      const selPart = selector.substring(index);\n      if (selPart.includes('\"')) {\n        const quotes = selPart.match(/\"/g).length;\n        if (quotes % 2) {\n          return parseSelector(`${selector}\"]`);\n        }\n        return parseSelector(`${selector}]`);\n      }\n      return parseSelector(`${selector}]`);\n    } else if (message === '\")\" is expected') {\n      if (REG_EMPTY_PS_FUNC.test(selector)) {\n        return parseSelector(`${selector.replaceAll(REG_EMPTY_PS_FUNC, \"()\")}`);\n      } else if (!selector.endsWith(\")\")) {\n        return parseSelector(`${selector})`);\n      } else {\n        throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);\n      }\n    } else {\n      throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);\n    }\n  }\n};\nvar walkAST = (ast = {}, toObject = false) => {\n  const branches = /* @__PURE__ */ new Set();\n  const info = {\n    hasForgivenPseudoFunc: false,\n    hasHasPseudoFunc: false,\n    hasLogicalPseudoFunc: false,\n    hasNotPseudoFunc: false,\n    hasNthChildOfSelector: false,\n    hasNestedSelector: false,\n    hasStatePseudoClass: false\n  };\n  const opt = {\n    enter(node) {\n      switch (node.type) {\n        case CLASS_SELECTOR: {\n          if (/^-?\\d/.test(node.name)) {\n            throw new DOMException(\n              `Invalid selector .${node.name}`,\n              SYNTAX_ERR\n            );\n          }\n          break;\n        }\n        case ID_SELECTOR: {\n          if (/^-?\\d/.test(node.name)) {\n            throw new DOMException(\n              `Invalid selector #${node.name}`,\n              SYNTAX_ERR\n            );\n          }\n          break;\n        }\n        case PS_CLASS_SELECTOR: {\n          if (KEYS_LOGICAL.has(node.name)) {\n            info.hasNestedSelector = true;\n            info.hasLogicalPseudoFunc = true;\n            if (node.name === \"has\") {\n              info.hasHasPseudoFunc = true;\n            } else if (node.name === \"not\") {\n              info.hasNotPseudoFunc = true;\n            } else {\n              info.hasForgivenPseudoFunc = true;\n            }\n          } else if (KEYS_PS_CLASS_STATE.has(node.name)) {\n            info.hasStatePseudoClass = true;\n          } else if (KEYS_SHADOW_HOST.has(node.name) && Array.isArray(node.children) && node.children.length) {\n            info.hasNestedSelector = true;\n          }\n          break;\n        }\n        case PS_ELEMENT_SELECTOR: {\n          if (REG_SHADOW_PS_ELEMENT.test(node.name)) {\n            info.hasNestedSelector = true;\n          }\n          break;\n        }\n        case NTH: {\n          if (node.selector) {\n            info.hasNestedSelector = true;\n            info.hasNthChildOfSelector = true;\n          }\n          break;\n        }\n        case SELECTOR: {\n          branches.add(node.children);\n          break;\n        }\n        default:\n      }\n    }\n  };\n  const clonedAst = cssTree2.clone(ast);\n  cssTree2.walk(toObject ? cssTree2.toPlainObject(clonedAst) : clonedAst, opt);\n  if (info.hasNestedSelector === true) {\n    cssTree2.findAll(clonedAst, (node, item, list) => {\n      if (list) {\n        if (node.type === PS_CLASS_SELECTOR && KEYS_LOGICAL.has(node.name)) {\n          const itemList = list.filter((i) => {\n            const { name, type } = i;\n            return type === PS_CLASS_SELECTOR && KEYS_LOGICAL.has(name);\n          });\n          for (const { children } of itemList) {\n            for (const { children: grandChildren } of children) {\n              for (const { children: greatGrandChildren } of grandChildren) {\n                if (branches.has(greatGrandChildren)) {\n                  branches.delete(greatGrandChildren);\n                }\n              }\n            }\n          }\n        } else if (node.type === PS_CLASS_SELECTOR && KEYS_SHADOW_HOST.has(node.name) && Array.isArray(node.children) && node.children.length) {\n          const itemList = list.filter((i) => {\n            const { children, name, type } = i;\n            const res = type === PS_CLASS_SELECTOR && KEYS_SHADOW_HOST.has(name) && Array.isArray(children) && children.length;\n            return res;\n          });\n          for (const { children } of itemList) {\n            for (const { children: grandChildren } of children) {\n              if (branches.has(grandChildren)) {\n                branches.delete(grandChildren);\n              }\n            }\n          }\n        } else if (node.type === PS_ELEMENT_SELECTOR && REG_SHADOW_PS_ELEMENT.test(node.name)) {\n          const itemList = list.filter((i) => {\n            const { name, type } = i;\n            const res = type === PS_ELEMENT_SELECTOR && REG_SHADOW_PS_ELEMENT.test(name);\n            return res;\n          });\n          for (const { children } of itemList) {\n            for (const { children: grandChildren } of children) {\n              if (branches.has(grandChildren)) {\n                branches.delete(grandChildren);\n              }\n            }\n          }\n        } else if (node.type === NTH && node.selector) {\n          const itemList = list.filter((i) => {\n            const { selector, type } = i;\n            const res = type === NTH && selector;\n            return res;\n          });\n          for (const { selector } of itemList) {\n            const { children } = selector;\n            for (const { children: grandChildren } of children) {\n              if (branches.has(grandChildren)) {\n                branches.delete(grandChildren);\n              }\n            }\n          }\n        }\n      }\n    });\n  }\n  return {\n    info,\n    branches: [...branches]\n  };\n};\nvar compareASTNodes = (a, b) => {\n  const bitA = AST_SORT_ORDER.get(a.type);\n  const bitB = AST_SORT_ORDER.get(b.type);\n  if (bitA === bitB) {\n    return 0;\n  } else if (bitA > bitB) {\n    return 1;\n  } else {\n    return -1;\n  }\n};\nvar sortAST = (asts) => {\n  const arr = [...asts];\n  if (arr.length > 1) {\n    arr.sort(compareASTNodes);\n  }\n  return arr;\n};\nvar parseAstName = (selector) => {\n  let prefix;\n  let localName;\n  if (selector && typeof selector === \"string\") {\n    if (selector.indexOf(\"|\") > -1) {\n      [prefix, localName] = selector.split(\"|\");\n    } else {\n      prefix = \"*\";\n      localName = selector;\n    }\n  } else {\n    throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);\n  }\n  return {\n    prefix,\n    localName\n  };\n};\n\n// src/js/matcher.js\nvar KEYS_FORM_PS_DISABLED = /* @__PURE__ */ new Set([\n  ...FORM_PARTS,\n  \"fieldset\",\n  \"optgroup\",\n  \"option\"\n]);\nvar KEYS_INPUT_EDIT2 = new Set(INPUT_EDIT);\nvar REG_LANG_VALID = new RegExp(`^(?:\\\\*-)?${ALPHA_NUM}${LANG_PART}$`, \"i\");\nvar REG_TAG_NAME = /[A-Z][\\\\w-]*/i;\nvar matchPseudoElementSelector = (astName, astType, opt = {}) => {\n  const { forgive, globalObject, warn } = opt;\n  if (astType !== PS_ELEMENT_SELECTOR) {\n    throw new TypeError(`Unexpected ast type ${getType(astType)}`);\n  }\n  switch (astName) {\n    case \"after\":\n    case \"backdrop\":\n    case \"before\":\n    case \"cue\":\n    case \"cue-region\":\n    case \"first-letter\":\n    case \"first-line\":\n    case \"file-selector-button\":\n    case \"marker\":\n    case \"placeholder\":\n    case \"selection\":\n    case \"target-text\": {\n      if (warn) {\n        throw generateException(\n          `Unsupported pseudo-element ::${astName}`,\n          NOT_SUPPORTED_ERR,\n          globalObject\n        );\n      }\n      break;\n    }\n    case \"part\":\n    case \"slotted\": {\n      if (warn) {\n        throw generateException(\n          `Unsupported pseudo-element ::${astName}()`,\n          NOT_SUPPORTED_ERR,\n          globalObject\n        );\n      }\n      break;\n    }\n    default: {\n      if (astName.startsWith(\"-webkit-\")) {\n        if (warn) {\n          throw generateException(\n            `Unsupported pseudo-element ::${astName}`,\n            NOT_SUPPORTED_ERR,\n            globalObject\n          );\n        }\n      } else if (!forgive) {\n        throw generateException(\n          `Unknown pseudo-element ::${astName}`,\n          SYNTAX_ERR,\n          globalObject\n        );\n      }\n    }\n  }\n};\nvar matchDirectionPseudoClass = (ast, node) => {\n  const { name } = ast;\n  if (!name) {\n    const type = name === \"\" ? \"(empty String)\" : getType(name);\n    throw new TypeError(`Unexpected ast type ${type}`);\n  }\n  const dir = getDirectionality(node);\n  return name === dir;\n};\nvar matchLanguagePseudoClass = (ast, node) => {\n  const { name, type, value } = ast;\n  let langPattern;\n  if (type === STRING && value) {\n    langPattern = value;\n  } else if (type === IDENT && name) {\n    langPattern = unescapeSelector(name);\n  }\n  if (typeof langPattern !== \"string\") {\n    return false;\n  }\n  const elementLang = getLanguageAttribute(node);\n  if (elementLang === null) {\n    return false;\n  }\n  if (langPattern === \"*\") {\n    return elementLang !== \"\";\n  }\n  if (!REG_LANG_VALID.test(langPattern)) {\n    return false;\n  }\n  let matcherRegex;\n  if (langPattern.indexOf(\"-\") > -1) {\n    const [langMain, langSub, ...langRest] = langPattern.split(\"-\");\n    const extendedMain = langMain === \"*\" ? `${ALPHA_NUM}${LANG_PART}` : `${langMain}${LANG_PART}`;\n    const extendedSub = `-${langSub}${LANG_PART}`;\n    let extendedRest = \"\";\n    for (let i = 0; i < langRest.length; i++) {\n      extendedRest += `-${langRest[i]}${LANG_PART}`;\n    }\n    matcherRegex = new RegExp(\n      `^${extendedMain}${extendedSub}${extendedRest}$`,\n      \"i\"\n    );\n  } else {\n    matcherRegex = new RegExp(`^${langPattern}${LANG_PART}$`, \"i\");\n  }\n  return matcherRegex.test(elementLang);\n};\nvar matchDisabledPseudoClass = (astName, node) => {\n  const { localName, parentNode } = node;\n  if (!KEYS_FORM_PS_DISABLED.has(localName) && !isCustomElement(node, { formAssociated: true })) {\n    return false;\n  }\n  let isDisabled = false;\n  if (node.disabled || node.hasAttribute(\"disabled\")) {\n    isDisabled = true;\n  } else if (localName === \"option\") {\n    if (parentNode && parentNode.localName === \"optgroup\" && (parentNode.disabled || parentNode.hasAttribute(\"disabled\"))) {\n      isDisabled = true;\n    }\n  } else if (localName !== \"optgroup\") {\n    let current = parentNode;\n    while (current) {\n      if (current.localName === \"fieldset\" && (current.disabled || current.hasAttribute(\"disabled\"))) {\n        let legend;\n        let element = current.firstElementChild;\n        while (element) {\n          if (element.localName === \"legend\") {\n            legend = element;\n            break;\n          }\n          element = element.nextElementSibling;\n        }\n        if (!legend || !legend.contains(node)) {\n          isDisabled = true;\n        }\n        break;\n      }\n      current = current.parentNode;\n    }\n  }\n  if (astName === \"disabled\") {\n    return isDisabled;\n  }\n  return !isDisabled;\n};\nvar matchReadOnlyPseudoClass = (astName, node) => {\n  const { localName } = node;\n  let isReadOnly = false;\n  switch (localName) {\n    case \"textarea\":\n    case \"input\": {\n      const isEditableInput = !node.type || KEYS_INPUT_EDIT2.has(node.type);\n      if (localName === \"textarea\" || isEditableInput) {\n        isReadOnly = node.readOnly || node.hasAttribute(\"readonly\") || node.disabled || node.hasAttribute(\"disabled\");\n      } else {\n        isReadOnly = true;\n      }\n      break;\n    }\n    default: {\n      isReadOnly = !isContentEditable(node);\n    }\n  }\n  if (astName === \"read-only\") {\n    return isReadOnly;\n  }\n  return !isReadOnly;\n};\nvar matchAttributeSelector = (ast, node, opt = {}) => {\n  const {\n    flags: astFlags,\n    matcher: astMatcher,\n    name: astName,\n    value: astValue\n  } = ast;\n  const { check, forgive, globalObject } = opt;\n  if (typeof astFlags === \"string\" && !/^[is]$/i.test(astFlags) && !forgive) {\n    const css = (0, import_css_tree.generate)(ast);\n    throw generateException(\n      `Invalid selector ${css}`,\n      SYNTAX_ERR,\n      globalObject\n    );\n  }\n  const { attributes } = node;\n  if (!attributes || !attributes.length) {\n    return false;\n  }\n  const contentType = node.ownerDocument.contentType;\n  let caseInsensitive;\n  if (contentType === \"text/html\") {\n    if (typeof astFlags === \"string\" && /^s$/i.test(astFlags)) {\n      caseInsensitive = false;\n    } else {\n      caseInsensitive = true;\n    }\n  } else if (typeof astFlags === \"string\" && /^i$/i.test(astFlags)) {\n    caseInsensitive = true;\n  } else {\n    caseInsensitive = false;\n  }\n  let astAttrName = unescapeSelector(astName.name);\n  if (caseInsensitive) {\n    astAttrName = astAttrName.toLowerCase();\n  }\n  const attrValues = /* @__PURE__ */ new Set();\n  if (astAttrName.indexOf(\"|\") > -1) {\n    const { prefix: astPrefix, localName: astLocalName } = parseAstName(astAttrName);\n    for (const item of attributes) {\n      let { name: itemName, value: itemValue } = item;\n      if (caseInsensitive) {\n        itemName = itemName.toLowerCase();\n        itemValue = itemValue.toLowerCase();\n      }\n      switch (astPrefix) {\n        case \"\": {\n          if (astLocalName === itemName) {\n            attrValues.add(itemValue);\n          }\n          break;\n        }\n        case \"*\": {\n          if (itemName.indexOf(\":\") > -1) {\n            const [, ...restItemName] = itemName.split(\":\");\n            const itemLocalName = restItemName.join(\":\").replace(/^:/, \"\");\n            if (itemLocalName === astLocalName) {\n              attrValues.add(itemValue);\n            }\n          } else if (astLocalName === itemName) {\n            attrValues.add(itemValue);\n          }\n          break;\n        }\n        default: {\n          if (!check) {\n            if (forgive) {\n              return false;\n            }\n            const css = (0, import_css_tree.generate)(ast);\n            throw generateException(\n              `Invalid selector ${css}`,\n              SYNTAX_ERR,\n              globalObject\n            );\n          }\n          if (itemName.indexOf(\":\") > -1) {\n            const [itemPrefix, ...restItemName] = itemName.split(\":\");\n            const itemLocalName = restItemName.join(\":\").replace(/^:/, \"\");\n            if (itemPrefix === \"xml\" && itemLocalName === \"lang\") {\n              continue;\n            } else if (astPrefix === itemPrefix && astLocalName === itemLocalName) {\n              const namespaceDeclared = isNamespaceDeclared(astPrefix, node);\n              if (namespaceDeclared) {\n                attrValues.add(itemValue);\n              }\n            }\n          }\n        }\n      }\n    }\n  } else {\n    for (let { name: itemName, value: itemValue } of attributes) {\n      if (caseInsensitive) {\n        itemName = itemName.toLowerCase();\n        itemValue = itemValue.toLowerCase();\n      }\n      if (itemName.indexOf(\":\") > -1) {\n        const [itemPrefix, ...restItemName] = itemName.split(\":\");\n        const itemLocalName = restItemName.join(\":\").replace(/^:/, \"\");\n        if (!itemPrefix && astAttrName === `:${itemLocalName}`) {\n          attrValues.add(itemValue);\n        } else if (itemPrefix === \"xml\" && itemLocalName === \"lang\") {\n          continue;\n        } else if (astAttrName === itemLocalName) {\n          attrValues.add(itemValue);\n        }\n      } else if (astAttrName === itemName) {\n        attrValues.add(itemValue);\n      }\n    }\n  }\n  if (!attrValues.size) {\n    return false;\n  }\n  const { name: astIdentValue, value: astStringValue } = astValue ?? {};\n  let attrValue;\n  if (astIdentValue) {\n    if (caseInsensitive) {\n      attrValue = astIdentValue.toLowerCase();\n    } else {\n      attrValue = astIdentValue;\n    }\n  } else if (astStringValue) {\n    if (caseInsensitive) {\n      attrValue = astStringValue.toLowerCase();\n    } else {\n      attrValue = astStringValue;\n    }\n  } else if (astStringValue === \"\") {\n    attrValue = astStringValue;\n  }\n  switch (astMatcher) {\n    case \"=\": {\n      return typeof attrValue === \"string\" && attrValues.has(attrValue);\n    }\n    case \"~=\": {\n      if (attrValue && typeof attrValue === \"string\") {\n        for (const value of attrValues) {\n          const item = new Set(value.split(/\\s+/));\n          if (item.has(attrValue)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    case \"|=\": {\n      if (attrValue && typeof attrValue === \"string\") {\n        for (const value of attrValues) {\n          if (value === attrValue || value.startsWith(`${attrValue}-`)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    case \"^=\": {\n      if (attrValue && typeof attrValue === \"string\") {\n        for (const value of attrValues) {\n          if (value.startsWith(`${attrValue}`)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    case \"$=\": {\n      if (attrValue && typeof attrValue === \"string\") {\n        for (const value of attrValues) {\n          if (value.endsWith(`${attrValue}`)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    case \"*=\": {\n      if (attrValue && typeof attrValue === \"string\") {\n        for (const value of attrValues) {\n          if (value.includes(`${attrValue}`)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    case null:\n    default: {\n      return true;\n    }\n  }\n};\nvar matchTypeSelector = (ast, node, opt = {}) => {\n  const astName = unescapeSelector(ast.name);\n  const { localName, namespaceURI, prefix } = node;\n  const { check, forgive, globalObject } = opt;\n  let { prefix: astPrefix, localName: astLocalName } = parseAstName(\n    astName,\n    node\n  );\n  if (node.ownerDocument.contentType === \"text/html\" && (!namespaceURI || namespaceURI === \"http://www.w3.org/1999/xhtml\") && REG_TAG_NAME.test(localName)) {\n    astPrefix = astPrefix.toLowerCase();\n    astLocalName = astLocalName.toLowerCase();\n  }\n  let nodePrefix;\n  let nodeLocalName;\n  if (localName.indexOf(\":\") > -1) {\n    [nodePrefix, nodeLocalName] = localName.split(\":\");\n  } else {\n    nodePrefix = prefix || \"\";\n    nodeLocalName = localName;\n  }\n  switch (astPrefix) {\n    case \"\": {\n      if (!nodePrefix && !namespaceURI && (astLocalName === \"*\" || astLocalName === nodeLocalName)) {\n        return true;\n      }\n      return false;\n    }\n    case \"*\": {\n      if (astLocalName === \"*\" || astLocalName === nodeLocalName) {\n        return true;\n      }\n      return false;\n    }\n    default: {\n      if (!check) {\n        if (forgive) {\n          return false;\n        }\n        const css = (0, import_css_tree.generate)(ast);\n        throw generateException(\n          `Invalid selector ${css}`,\n          SYNTAX_ERR,\n          globalObject\n        );\n      }\n      const astNS = node.lookupNamespaceURI(astPrefix);\n      const nodeNS = node.lookupNamespaceURI(nodePrefix);\n      if (astNS === nodeNS && astPrefix === nodePrefix) {\n        if (astLocalName === \"*\" || astLocalName === nodeLocalName) {\n          return true;\n        }\n        return false;\n      } else if (!forgive && !astNS) {\n        throw generateException(\n          `Undeclared namespace ${astPrefix}`,\n          SYNTAX_ERR,\n          globalObject\n        );\n      }\n      return false;\n    }\n  }\n};\n\n// src/js/finder.js\nvar DIR_NEXT = \"next\";\nvar DIR_PREV = \"prev\";\nvar KEYS_FORM = /* @__PURE__ */ new Set([...FORM_PARTS, \"fieldset\", \"form\"]);\nvar KEYS_FORM_PS_VALID = /* @__PURE__ */ new Set([...FORM_PARTS, \"form\"]);\nvar KEYS_INPUT_CHECK = new Set(INPUT_CHECK);\nvar KEYS_INPUT_PLACEHOLDER = /* @__PURE__ */ new Set([...INPUT_TEXT, \"number\"]);\nvar KEYS_INPUT_RANGE = /* @__PURE__ */ new Set([...INPUT_DATE, \"number\", \"range\"]);\nvar KEYS_INPUT_REQUIRED = /* @__PURE__ */ new Set([...INPUT_CHECK, ...INPUT_EDIT, \"file\"]);\nvar KEYS_INPUT_RESET = /* @__PURE__ */ new Set([\"button\", \"reset\"]);\nvar KEYS_INPUT_SUBMIT = /* @__PURE__ */ new Set([\"image\", \"submit\"]);\nvar KEYS_MODIFIER = /* @__PURE__ */ new Set([\n  \"Alt\",\n  \"AltGraph\",\n  \"CapsLock\",\n  \"Control\",\n  \"Fn\",\n  \"FnLock\",\n  \"Hyper\",\n  \"Meta\",\n  \"NumLock\",\n  \"ScrollLock\",\n  \"Shift\",\n  \"Super\",\n  \"Symbol\",\n  \"SymbolLock\"\n]);\nvar KEYS_PS_UNCACHE = /* @__PURE__ */ new Set([\n  \"any-link\",\n  \"defined\",\n  \"dir\",\n  \"link\",\n  \"scope\"\n]);\nvar KEYS_PS_NTH_OF_TYPE = /* @__PURE__ */ new Set([\n  \"first-of-type\",\n  \"last-of-type\",\n  \"only-of-type\"\n]);\nvar Finder = class {\n  /* private fields */\n  #ast;\n  #astCache;\n  #check;\n  #descendant;\n  #document;\n  #documentCache;\n  #documentURL;\n  #event;\n  #eventHandlers;\n  #focus;\n  #invalidate;\n  #invalidateResults;\n  #lastFocusVisible;\n  #node;\n  #nodeWalker;\n  #nodes;\n  #noexcept;\n  #pseudoElement;\n  #results;\n  #root;\n  #rootWalker;\n  #scoped;\n  #selector;\n  #selectorAST;\n  #shadow;\n  #verifyShadowHost;\n  #walkers;\n  #warn;\n  #window;\n  /**\n   * constructor\n   * @param {object} window - The window object.\n   */\n  constructor(window) {\n    this.#window = window;\n    this.#astCache = /* @__PURE__ */ new WeakMap();\n    this.#documentCache = /* @__PURE__ */ new WeakMap();\n    this.#event = null;\n    this.#focus = null;\n    this.#lastFocusVisible = null;\n    this.#eventHandlers = /* @__PURE__ */ new Set([\n      {\n        keys: [\"focus\", \"focusin\"],\n        handler: this._handleFocusEvent\n      },\n      {\n        keys: [\"keydown\", \"keyup\"],\n        handler: this._handleKeyboardEvent\n      },\n      {\n        keys: [\"mouseover\", \"mousedown\", \"mouseup\", \"click\", \"mouseout\"],\n        handler: this._handleMouseEvent\n      }\n    ]);\n    this._registerEventListeners();\n    this.clearResults(true);\n  }\n  /**\n   * Handles errors.\n   * @param {Error} e - The error object.\n   * @param {object} [opt] - Options.\n   * @param {boolean} [opt.noexcept] - If true, exceptions are not thrown.\n   * @throws {Error} Throws an error.\n   * @returns {void}\n   */\n  onError = (e, opt = {}) => {\n    const noexcept = opt.noexcept ?? this.#noexcept;\n    if (noexcept) {\n      return;\n    }\n    const isDOMException = e instanceof DOMException || e instanceof this.#window.DOMException;\n    if (isDOMException) {\n      if (e.name === NOT_SUPPORTED_ERR) {\n        if (this.#warn) {\n          console.warn(e.message);\n        }\n        return;\n      }\n      throw new this.#window.DOMException(e.message, e.name);\n    }\n    if (e.name in this.#window) {\n      throw new this.#window[e.name](e.message, { cause: e });\n    }\n    throw e;\n  };\n  /**\n   * Sets up the finder.\n   * @param {string} selector - The CSS selector.\n   * @param {object} node - Document, DocumentFragment, or Element.\n   * @param {object} [opt] - Options.\n   * @param {boolean} [opt.check] - Indicates if running in internal check().\n   * @param {boolean} [opt.noexcept] - If true, exceptions are not thrown.\n   * @param {boolean} [opt.warn] - If true, console warnings are enabled.\n   * @returns {object} The finder instance.\n   */\n  setup = (selector, node, opt = {}) => {\n    const { check, noexcept, warn } = opt;\n    this.#check = !!check;\n    this.#noexcept = !!noexcept;\n    this.#warn = !!warn;\n    [this.#document, this.#root, this.#shadow] = resolveContent(node);\n    this.#documentURL = null;\n    this.#node = node;\n    this.#scoped = this.#node !== this.#root && this.#node.nodeType === ELEMENT_NODE;\n    this.#selector = selector;\n    [this.#ast, this.#nodes] = this._correspond(selector);\n    this.#pseudoElement = [];\n    this.#walkers = /* @__PURE__ */ new WeakMap();\n    this.#nodeWalker = null;\n    this.#rootWalker = null;\n    this.#verifyShadowHost = null;\n    this.clearResults();\n    return this;\n  };\n  /**\n   * Clear cached results.\n   * @param {boolean} all - clear all results\n   * @returns {void}\n   */\n  clearResults = (all = false) => {\n    this.#invalidateResults = /* @__PURE__ */ new WeakMap();\n    if (all) {\n      this.#results = /* @__PURE__ */ new WeakMap();\n    }\n  };\n  /**\n   * Handles focus events.\n   * @private\n   * @param {Event} evt - The event object.\n   * @returns {void}\n   */\n  _handleFocusEvent = (evt) => {\n    this.#focus = evt;\n  };\n  /**\n   * Handles keyboard events.\n   * @private\n   * @param {Event} evt - The event object.\n   * @returns {void}\n   */\n  _handleKeyboardEvent = (evt) => {\n    const { key } = evt;\n    if (!KEYS_MODIFIER.has(key)) {\n      this.#event = evt;\n    }\n  };\n  /**\n   * Handles mouse events.\n   * @private\n   * @param {Event} evt - The event object.\n   * @returns {void}\n   */\n  _handleMouseEvent = (evt) => {\n    this.#event = evt;\n  };\n  /**\n   * Registers event listeners.\n   * @private\n   * @returns {Array.<void>} An array of return values from addEventListener.\n   */\n  _registerEventListeners = () => {\n    const opt = {\n      capture: true,\n      passive: true\n    };\n    const func = [];\n    for (const eventHandler of this.#eventHandlers) {\n      const { keys, handler } = eventHandler;\n      const l = keys.length;\n      for (let i = 0; i < l; i++) {\n        const key = keys[i];\n        func.push(this.#window.addEventListener(key, handler, opt));\n      }\n    }\n    return func;\n  };\n  /**\n   * Processes selector branches into the internal AST structure.\n   * @private\n   * @param {Array.<Array.<object>>} branches - The branches from walkAST.\n   * @param {string} selector - The original selector for error reporting.\n   * @returns {{ast: Array, descendant: boolean}}\n   * An object with the AST, descendant flag.\n   */\n  _processSelectorBranches = (branches, selector) => {\n    let descendant = false;\n    const ast = [];\n    const l = branches.length;\n    for (let i = 0; i < l; i++) {\n      const items = [...branches[i]];\n      const branch = [];\n      let item = items.shift();\n      if (item && item.type !== COMBINATOR) {\n        const leaves = /* @__PURE__ */ new Set();\n        while (item) {\n          if (item.type === COMBINATOR) {\n            const [nextItem] = items;\n            if (!nextItem || nextItem.type === COMBINATOR) {\n              const msg = `Invalid selector ${selector}`;\n              this.onError(generateException(msg, SYNTAX_ERR, this.#window));\n              return { ast: [], descendant: false, invalidate: false };\n            }\n            if (item.name === \" \" || item.name === \">\") {\n              descendant = true;\n            }\n            branch.push({ combo: item, leaves: sortAST(leaves) });\n            leaves.clear();\n          } else {\n            if (item.name && typeof item.name === \"string\") {\n              const unescapedName = unescapeSelector(item.name);\n              if (unescapedName !== item.name) {\n                item.name = unescapedName;\n              }\n              if (/[|:]/.test(unescapedName)) {\n                item.namespace = true;\n              }\n            }\n            leaves.add(item);\n          }\n          if (items.length) {\n            item = items.shift();\n          } else {\n            branch.push({ combo: null, leaves: sortAST(leaves) });\n            leaves.clear();\n            break;\n          }\n        }\n      }\n      ast.push({ branch, dir: null, filtered: false, find: false });\n    }\n    return { ast, descendant };\n  };\n  /**\n   * Corresponds AST and nodes.\n   * @private\n   * @param {string} selector - The CSS selector.\n   * @returns {Array.<Array.<object>>} An array with the AST and nodes.\n   */\n  _correspond = (selector) => {\n    const nodes = [];\n    this.#descendant = false;\n    this.#invalidate = false;\n    let ast;\n    if (this.#documentCache.has(this.#document)) {\n      const cachedItem = this.#documentCache.get(this.#document);\n      if (cachedItem && cachedItem.has(`${selector}`)) {\n        const item = cachedItem.get(`${selector}`);\n        ast = item.ast;\n        this.#descendant = item.descendant;\n        this.#invalidate = item.invalidate;\n      }\n    }\n    if (ast) {\n      const l = ast.length;\n      for (let i = 0; i < l; i++) {\n        ast[i].dir = null;\n        ast[i].filtered = false;\n        ast[i].find = false;\n        nodes[i] = [];\n      }\n    } else {\n      try {\n        this.#selectorAST = parseSelector(selector);\n      } catch (e) {\n        this.#selectorAST = null;\n        return this.onError(e);\n      }\n      const { branches, info } = walkAST(this.#selectorAST, true);\n      const {\n        hasHasPseudoFunc,\n        hasLogicalPseudoFunc,\n        hasNthChildOfSelector,\n        hasStatePseudoClass\n      } = info;\n      this.#invalidate = hasHasPseudoFunc || hasStatePseudoClass || !!(hasLogicalPseudoFunc && hasNthChildOfSelector);\n      const processed = this._processSelectorBranches(branches, selector);\n      ast = processed.ast;\n      this.#descendant = processed.descendant;\n      let cachedItem;\n      if (this.#documentCache.has(this.#document)) {\n        cachedItem = this.#documentCache.get(this.#document);\n      } else {\n        cachedItem = /* @__PURE__ */ new Map();\n      }\n      cachedItem.set(`${selector}`, {\n        ast,\n        descendant: this.#descendant,\n        invalidate: this.#invalidate\n      });\n      this.#documentCache.set(this.#document, cachedItem);\n      for (let i = 0; i < ast.length; i++) {\n        nodes[i] = [];\n      }\n    }\n    return [ast, nodes];\n  };\n  /**\n   * Creates a TreeWalker.\n   * @private\n   * @param {object} node - The Document, DocumentFragment, or Element node.\n   * @param {object} [opt] - Options.\n   * @param {boolean} [opt.force] - Force creation of a new TreeWalker.\n   * @param {number} [opt.whatToShow] - The NodeFilter whatToShow value.\n   * @returns {object} The TreeWalker object.\n   */\n  _createTreeWalker = (node, opt = {}) => {\n    const { force = false, whatToShow = SHOW_CONTAINER } = opt;\n    if (force) {\n      return this.#document.createTreeWalker(node, whatToShow);\n    } else if (this.#walkers.has(node)) {\n      return this.#walkers.get(node);\n    }\n    const walker = this.#document.createTreeWalker(node, whatToShow);\n    this.#walkers.set(node, walker);\n    return walker;\n  };\n  /**\n   * Gets selector branches from cache or parses them.\n   * @private\n   * @param {object} selector - The AST.\n   * @returns {Array.<Array.<object>>} The selector branches.\n   */\n  _getSelectorBranches = (selector) => {\n    if (this.#astCache.has(selector)) {\n      return this.#astCache.get(selector);\n    }\n    const { branches } = walkAST(selector);\n    this.#astCache.set(selector, branches);\n    return branches;\n  };\n  /**\n   * Gets the children of a node, optionally filtered by a selector.\n   * @private\n   * @param {object} parentNode - The parent element.\n   * @param {Array.<Array.<object>>} selectorBranches - The selector branches.\n   * @param {object} [opt] - Options.\n   * @returns {Array.<object>} An array of child nodes.\n   */\n  _getFilteredChildren = (parentNode, selectorBranches, opt = {}) => {\n    const children = [];\n    const walker = this._createTreeWalker(parentNode, { force: true });\n    let childNode = walker.firstChild();\n    while (childNode) {\n      if (selectorBranches) {\n        if (isVisible(childNode)) {\n          let isMatch = false;\n          const l = selectorBranches.length;\n          for (let i = 0; i < l; i++) {\n            const leaves = selectorBranches[i];\n            if (this._matchLeaves(leaves, childNode, opt)) {\n              isMatch = true;\n              break;\n            }\n          }\n          if (isMatch) {\n            children.push(childNode);\n          }\n        }\n      } else {\n        children.push(childNode);\n      }\n      childNode = walker.nextSibling();\n    }\n    return children;\n  };\n  /**\n   * Collects nth-child nodes.\n   * @private\n   * @param {object} anb - An+B options.\n   * @param {number} anb.a - The 'a' value.\n   * @param {number} anb.b - The 'b' value.\n   * @param {boolean} [anb.reverse] - If true, reverses the order.\n   * @param {object} [anb.selector] - The AST.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _collectNthChild = (anb, node, opt = {}) => {\n    const { a, b, selector } = anb;\n    const { parentNode } = node;\n    if (!parentNode) {\n      const matchedNode = /* @__PURE__ */ new Set();\n      if (node === this.#root && a * 1 + b * 1 === 1) {\n        if (selector) {\n          const selectorBranches2 = this._getSelectorBranches(selector);\n          const l = selectorBranches2.length;\n          for (let i = 0; i < l; i++) {\n            const leaves = selectorBranches2[i];\n            if (this._matchLeaves(leaves, node, opt)) {\n              matchedNode.add(node);\n              break;\n            }\n          }\n        } else {\n          matchedNode.add(node);\n        }\n      }\n      return matchedNode;\n    }\n    const selectorBranches = selector ? this._getSelectorBranches(selector) : null;\n    const children = this._getFilteredChildren(\n      parentNode,\n      selectorBranches,\n      opt\n    );\n    const matchedNodes = filterNodesByAnB(children, anb);\n    return new Set(matchedNodes);\n  };\n  /**\n   * Collects nth-of-type nodes.\n   * @private\n   * @param {object} anb - An+B options.\n   * @param {number} anb.a - The 'a' value.\n   * @param {number} anb.b - The 'b' value.\n   * @param {boolean} [anb.reverse] - If true, reverses the order.\n   * @param {object} node - The Element node.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _collectNthOfType = (anb, node) => {\n    const { parentNode } = node;\n    if (!parentNode) {\n      if (node === this.#root && anb.a * 1 + anb.b * 1 === 1) {\n        return /* @__PURE__ */ new Set([node]);\n      }\n      return /* @__PURE__ */ new Set();\n    }\n    const typedSiblings = [];\n    const walker = this._createTreeWalker(parentNode, { force: true });\n    let sibling = walker.firstChild();\n    while (sibling) {\n      if (sibling.localName === node.localName && sibling.namespaceURI === node.namespaceURI && sibling.prefix === node.prefix) {\n        typedSiblings.push(sibling);\n      }\n      sibling = walker.nextSibling();\n    }\n    const matchedNodes = filterNodesByAnB(typedSiblings, anb);\n    return new Set(matchedNodes);\n  };\n  /**\n   * Matches An+B.\n   * @private\n   * @param {object} ast - The AST.\n   * @param {object} node - The Element node.\n   * @param {string} nthName - The name of the nth pseudo-class.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchAnPlusB = (ast, node, nthName, opt = {}) => {\n    const {\n      nth: { a, b, name: nthIdentName },\n      selector\n    } = ast;\n    const anbMap = /* @__PURE__ */ new Map();\n    if (nthIdentName) {\n      if (nthIdentName === \"even\") {\n        anbMap.set(\"a\", 2);\n        anbMap.set(\"b\", 0);\n      } else if (nthIdentName === \"odd\") {\n        anbMap.set(\"a\", 2);\n        anbMap.set(\"b\", 1);\n      }\n      if (nthName.indexOf(\"last\") > -1) {\n        anbMap.set(\"reverse\", true);\n      }\n    } else {\n      if (typeof a === \"string\" && /-?\\d+/.test(a)) {\n        anbMap.set(\"a\", a * 1);\n      } else {\n        anbMap.set(\"a\", 0);\n      }\n      if (typeof b === \"string\" && /-?\\d+/.test(b)) {\n        anbMap.set(\"b\", b * 1);\n      } else {\n        anbMap.set(\"b\", 0);\n      }\n      if (nthName.indexOf(\"last\") > -1) {\n        anbMap.set(\"reverse\", true);\n      }\n    }\n    if (nthName === \"nth-child\" || nthName === \"nth-last-child\") {\n      if (selector) {\n        anbMap.set(\"selector\", selector);\n      }\n      const anb = Object.fromEntries(anbMap);\n      const nodes = this._collectNthChild(anb, node, opt);\n      return nodes;\n    } else if (nthName === \"nth-of-type\" || nthName === \"nth-last-of-type\") {\n      const anb = Object.fromEntries(anbMap);\n      const nodes = this._collectNthOfType(anb, node);\n      return nodes;\n    }\n    return /* @__PURE__ */ new Set();\n  };\n  /**\n   * Matches the :has() pseudo-class function.\n   * @private\n   * @param {Array.<object>} astLeaves - The AST leaves.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {boolean} The result.\n   */\n  _matchHasPseudoFunc = (astLeaves, node, opt = {}) => {\n    if (Array.isArray(astLeaves) && astLeaves.length) {\n      const leaves = [...astLeaves];\n      const [leaf] = leaves;\n      const { type: leafType } = leaf;\n      let combo;\n      if (leafType === COMBINATOR) {\n        combo = leaves.shift();\n      } else {\n        combo = {\n          name: \" \",\n          type: COMBINATOR\n        };\n      }\n      const twigLeaves = [];\n      while (leaves.length) {\n        const [item] = leaves;\n        const { type: itemType } = item;\n        if (itemType === COMBINATOR) {\n          break;\n        } else {\n          twigLeaves.push(leaves.shift());\n        }\n      }\n      const twig = {\n        combo,\n        leaves: twigLeaves\n      };\n      opt.dir = DIR_NEXT;\n      const nodes = this._matchCombinator(twig, node, opt);\n      if (nodes.size) {\n        if (leaves.length) {\n          let bool = false;\n          for (const nextNode of nodes) {\n            bool = this._matchHasPseudoFunc(leaves, nextNode, opt);\n            if (bool) {\n              break;\n            }\n          }\n          return bool;\n        }\n        return true;\n      }\n    }\n    return false;\n  };\n  /**\n   * Evaluates the :has() pseudo-class.\n   * @private\n   * @param {object} astData - The AST data.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {?object} The matched node.\n   */\n  _evaluateHasPseudo = (astData, node, opt) => {\n    const { branches } = astData;\n    let bool = false;\n    const l = branches.length;\n    for (let i = 0; i < l; i++) {\n      const leaves = branches[i];\n      bool = this._matchHasPseudoFunc(leaves, node, opt);\n      if (bool) {\n        break;\n      }\n    }\n    if (!bool) {\n      return null;\n    }\n    if ((opt.isShadowRoot || this.#shadow) && node.nodeType === DOCUMENT_FRAGMENT_NODE) {\n      return this.#verifyShadowHost ? node : null;\n    }\n    return node;\n  };\n  /**\n   * Matches logical pseudo-class functions.\n   * @private\n   * @param {object} astData - The AST data.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {?object} The matched node.\n   */\n  _matchLogicalPseudoFunc = (astData, node, opt = {}) => {\n    const { astName, branches, twigBranches } = astData;\n    if (astName === \"has\") {\n      return this._evaluateHasPseudo(astData, node, opt);\n    }\n    const isShadowRoot = (opt.isShadowRoot || this.#shadow) && node.nodeType === DOCUMENT_FRAGMENT_NODE;\n    if (isShadowRoot) {\n      let invalid = false;\n      for (const branch of branches) {\n        if (branch.length > 1) {\n          invalid = true;\n          break;\n        } else if (astName === \"not\") {\n          const [{ type: childAstType }] = branch;\n          if (childAstType !== PS_CLASS_SELECTOR) {\n            invalid = true;\n            break;\n          }\n        }\n      }\n      if (invalid) {\n        return null;\n      }\n    }\n    opt.forgive = astName === \"is\" || astName === \"where\";\n    const l = twigBranches.length;\n    let bool;\n    for (let i = 0; i < l; i++) {\n      const branch = twigBranches[i];\n      const lastIndex = branch.length - 1;\n      const { leaves } = branch[lastIndex];\n      bool = this._matchLeaves(leaves, node, opt);\n      if (bool && lastIndex > 0) {\n        let nextNodes = /* @__PURE__ */ new Set([node]);\n        for (let j = lastIndex - 1; j >= 0; j--) {\n          const twig = branch[j];\n          const arr = [];\n          opt.dir = DIR_PREV;\n          for (const nextNode of nextNodes) {\n            const m = this._matchCombinator(twig, nextNode, opt);\n            if (m.size) {\n              arr.push(...m);\n            }\n          }\n          if (arr.length) {\n            if (j === 0) {\n              bool = true;\n            } else {\n              nextNodes = new Set(arr);\n            }\n          } else {\n            bool = false;\n            break;\n          }\n        }\n      }\n      if (bool) {\n        break;\n      }\n    }\n    if (astName === \"not\") {\n      if (bool) {\n        return null;\n      }\n      return node;\n    } else if (bool) {\n      return node;\n    }\n    return null;\n  };\n  /**\n   * match pseudo-class selector\n   * @private\n   * @see https://html.spec.whatwg.org/#pseudo-classes\n   * @param {object} ast - AST\n   * @param {object} node - Element node\n   * @param {object} [opt] - options\n   * @returns {Set.<object>} - collection of matched nodes\n   */\n  _matchPseudoClassSelector(ast, node, opt = {}) {\n    const { children: astChildren, name: astName } = ast;\n    const { localName, parentNode } = node;\n    const { forgive, warn = this.#warn } = opt;\n    const matched = /* @__PURE__ */ new Set();\n    if (Array.isArray(astChildren) && KEYS_LOGICAL.has(astName)) {\n      if (!astChildren.length && astName !== \"is\" && astName !== \"where\") {\n        const css = (0, import_css_tree.generate)(ast);\n        const msg = `Invalid selector ${css}`;\n        return this.onError(generateException(msg, SYNTAX_ERR, this.#window));\n      }\n      let astData;\n      if (this.#astCache.has(ast)) {\n        astData = this.#astCache.get(ast);\n      } else {\n        const { branches } = walkAST(ast);\n        if (astName === \"has\") {\n          let forgiven = false;\n          const l = astChildren.length;\n          for (let i = 0; i < l; i++) {\n            const child = astChildren[i];\n            const item = (0, import_css_tree.find)(child, findLogicalWithNestedHas);\n            if (item) {\n              const itemName = item.name;\n              if (itemName === \"is\" || itemName === \"where\") {\n                forgiven = true;\n                break;\n              } else {\n                const css = (0, import_css_tree.generate)(ast);\n                const msg = `Invalid selector ${css}`;\n                return this.onError(\n                  generateException(msg, SYNTAX_ERR, this.#window)\n                );\n              }\n            }\n          }\n          if (forgiven) {\n            return matched;\n          }\n          astData = {\n            astName,\n            branches\n          };\n        } else {\n          const twigBranches = [];\n          const l = branches.length;\n          for (let i = 0; i < l; i++) {\n            const [...leaves] = branches[i];\n            const branch = [];\n            const leavesSet = /* @__PURE__ */ new Set();\n            let item = leaves.shift();\n            while (item) {\n              if (item.type === COMBINATOR) {\n                branch.push({\n                  combo: item,\n                  leaves: [...leavesSet]\n                });\n                leavesSet.clear();\n              } else if (item) {\n                leavesSet.add(item);\n              }\n              if (leaves.length) {\n                item = leaves.shift();\n              } else {\n                branch.push({\n                  combo: null,\n                  leaves: [...leavesSet]\n                });\n                leavesSet.clear();\n                break;\n              }\n            }\n            twigBranches.push(branch);\n          }\n          astData = {\n            astName,\n            branches,\n            twigBranches\n          };\n          this.#astCache.set(ast, astData);\n        }\n      }\n      const res = this._matchLogicalPseudoFunc(astData, node, opt);\n      if (res) {\n        matched.add(res);\n      }\n    } else if (Array.isArray(astChildren)) {\n      if (/^nth-(?:last-)?(?:child|of-type)$/.test(astName)) {\n        if (astChildren.length !== 1) {\n          const css = (0, import_css_tree.generate)(ast);\n          return this.onError(\n            generateException(\n              `Invalid selector ${css}`,\n              SYNTAX_ERR,\n              this.#window\n            )\n          );\n        }\n        const [branch] = astChildren;\n        const nodes = this._matchAnPlusB(branch, node, astName, opt);\n        return nodes;\n      } else {\n        switch (astName) {\n          // :dir()\n          case \"dir\": {\n            if (astChildren.length !== 1) {\n              const css = (0, import_css_tree.generate)(ast);\n              return this.onError(\n                generateException(\n                  `Invalid selector ${css}`,\n                  SYNTAX_ERR,\n                  this.#window\n                )\n              );\n            }\n            const [astChild] = astChildren;\n            const res = matchDirectionPseudoClass(astChild, node);\n            if (res) {\n              matched.add(node);\n            }\n            break;\n          }\n          // :lang()\n          case \"lang\": {\n            if (!astChildren.length) {\n              const css = (0, import_css_tree.generate)(ast);\n              return this.onError(\n                generateException(\n                  `Invalid selector ${css}`,\n                  SYNTAX_ERR,\n                  this.#window\n                )\n              );\n            }\n            let bool;\n            for (const astChild of astChildren) {\n              bool = matchLanguagePseudoClass(astChild, node);\n              if (bool) {\n                break;\n              }\n            }\n            if (bool) {\n              matched.add(node);\n            }\n            break;\n          }\n          // :state()\n          case \"state\": {\n            if (isCustomElement(node)) {\n              const [{ value: stateValue }] = astChildren;\n              if (stateValue) {\n                if (node[stateValue]) {\n                  matched.add(node);\n                } else {\n                  for (const i in node) {\n                    const prop = node[i];\n                    if (prop instanceof this.#window.ElementInternals) {\n                      if (prop?.states?.has(stateValue)) {\n                        matched.add(node);\n                      }\n                      break;\n                    }\n                  }\n                }\n              }\n            }\n            break;\n          }\n          case \"current\":\n          case \"heading\":\n          case \"nth-col\":\n          case \"nth-last-col\": {\n            if (warn) {\n              this.onError(\n                generateException(\n                  `Unsupported pseudo-class :${astName}()`,\n                  NOT_SUPPORTED_ERR,\n                  this.#window\n                )\n              );\n            }\n            break;\n          }\n          // Ignore :host() and :host-context().\n          case \"host\":\n          case \"host-context\": {\n            break;\n          }\n          // Deprecated in CSS Selectors 3.\n          case \"contains\": {\n            if (warn) {\n              this.onError(\n                generateException(\n                  `Unknown pseudo-class :${astName}()`,\n                  NOT_SUPPORTED_ERR,\n                  this.#window\n                )\n              );\n            }\n            break;\n          }\n          default: {\n            if (!forgive) {\n              this.onError(\n                generateException(\n                  `Unknown pseudo-class :${astName}()`,\n                  SYNTAX_ERR,\n                  this.#window\n                )\n              );\n            }\n          }\n        }\n      }\n    } else if (KEYS_PS_NTH_OF_TYPE.has(astName)) {\n      if (node === this.#root) {\n        matched.add(node);\n      } else if (parentNode) {\n        switch (astName) {\n          case \"first-of-type\": {\n            const [node1] = this._collectNthOfType(\n              {\n                a: 0,\n                b: 1\n              },\n              node\n            );\n            if (node1) {\n              matched.add(node1);\n            }\n            break;\n          }\n          case \"last-of-type\": {\n            const [node1] = this._collectNthOfType(\n              {\n                a: 0,\n                b: 1,\n                reverse: true\n              },\n              node\n            );\n            if (node1) {\n              matched.add(node1);\n            }\n            break;\n          }\n          // 'only-of-type' is handled by default.\n          default: {\n            const [node1] = this._collectNthOfType(\n              {\n                a: 0,\n                b: 1\n              },\n              node\n            );\n            if (node1 === node) {\n              const [node2] = this._collectNthOfType(\n                {\n                  a: 0,\n                  b: 1,\n                  reverse: true\n                },\n                node\n              );\n              if (node2 === node) {\n                matched.add(node);\n              }\n            }\n          }\n        }\n      }\n    } else {\n      switch (astName) {\n        case \"disabled\":\n        case \"enabled\": {\n          const isMatch = matchDisabledPseudoClass(astName, node);\n          if (isMatch) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"read-only\":\n        case \"read-write\": {\n          const isMatch = matchReadOnlyPseudoClass(astName, node);\n          if (isMatch) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"any-link\":\n        case \"link\": {\n          if ((localName === \"a\" || localName === \"area\") && node.hasAttribute(\"href\")) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"local-link\": {\n          if ((localName === \"a\" || localName === \"area\") && node.hasAttribute(\"href\")) {\n            if (!this.#documentURL) {\n              this.#documentURL = new URL(this.#document.URL);\n            }\n            const { href, origin, pathname } = this.#documentURL;\n            const attrURL = new URL(node.getAttribute(\"href\"), href);\n            if (attrURL.origin === origin && attrURL.pathname === pathname) {\n              matched.add(node);\n            }\n          }\n          break;\n        }\n        case \"visited\": {\n          break;\n        }\n        case \"hover\": {\n          const { target, type } = this.#event ?? {};\n          if (/^(?:click|mouse(?:down|over|up))$/.test(type) && node.contains(target)) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"active\": {\n          const { buttons, target, type } = this.#event ?? {};\n          if (type === \"mousedown\" && buttons & 1 && node.contains(target)) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"target\": {\n          if (!this.#documentURL) {\n            this.#documentURL = new URL(this.#document.URL);\n          }\n          const { hash } = this.#documentURL;\n          if (node.id && hash === `#${node.id}` && this.#document.contains(node)) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"target-within\": {\n          if (!this.#documentURL) {\n            this.#documentURL = new URL(this.#document.URL);\n          }\n          const { hash } = this.#documentURL;\n          if (hash) {\n            const id = hash.replace(/^#/, \"\");\n            let current = this.#document.getElementById(id);\n            while (current) {\n              if (current === node) {\n                matched.add(node);\n                break;\n              }\n              current = current.parentNode;\n            }\n          }\n          break;\n        }\n        case \"scope\": {\n          if (this.#node.nodeType === ELEMENT_NODE) {\n            if (!this.#shadow && node === this.#node) {\n              matched.add(node);\n            }\n          } else if (node === this.#document.documentElement) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"focus\": {\n          const activeElement = this.#document.activeElement;\n          if (node === activeElement && isFocusableArea(node)) {\n            matched.add(node);\n          } else if (activeElement.shadowRoot) {\n            const activeShadowElement = activeElement.shadowRoot.activeElement;\n            let current = activeShadowElement;\n            while (current) {\n              if (current.nodeType === DOCUMENT_FRAGMENT_NODE) {\n                const { host } = current;\n                if (host === activeElement) {\n                  if (isFocusableArea(node)) {\n                    matched.add(node);\n                  } else {\n                    matched.add(host);\n                  }\n                }\n                break;\n              } else {\n                current = current.parentNode;\n              }\n            }\n          }\n          break;\n        }\n        case \"focus-visible\": {\n          if (node === this.#document.activeElement && isFocusableArea(node)) {\n            let bool;\n            if (isFocusVisible(node)) {\n              bool = true;\n            } else if (this.#focus) {\n              const { relatedTarget, target: focusTarget } = this.#focus;\n              if (focusTarget === node) {\n                if (isFocusVisible(relatedTarget)) {\n                  bool = true;\n                } else if (this.#event) {\n                  const {\n                    altKey: eventAltKey,\n                    ctrlKey: eventCtrlKey,\n                    key: eventKey,\n                    metaKey: eventMetaKey,\n                    target: eventTarget,\n                    type: eventType\n                  } = this.#event;\n                  if (eventTarget === relatedTarget) {\n                    if (this.#lastFocusVisible === null) {\n                      bool = true;\n                    } else if (focusTarget === this.#lastFocusVisible) {\n                      bool = true;\n                    }\n                  } else if (eventKey === \"Tab\") {\n                    if (eventType === \"keydown\" && eventTarget !== node || eventType === \"keyup\" && eventTarget === node) {\n                      if (eventTarget === focusTarget) {\n                        if (this.#lastFocusVisible === null) {\n                          bool = true;\n                        } else if (eventTarget === this.#lastFocusVisible && relatedTarget === null) {\n                          bool = true;\n                        }\n                      } else {\n                        bool = true;\n                      }\n                    }\n                  } else if (eventKey) {\n                    if ((eventType === \"keydown\" || eventType === \"keyup\") && !eventAltKey && !eventCtrlKey && !eventMetaKey && eventTarget === node) {\n                      bool = true;\n                    }\n                  }\n                } else if (relatedTarget === null || relatedTarget === this.#lastFocusVisible) {\n                  bool = true;\n                }\n              }\n            }\n            if (bool) {\n              this.#lastFocusVisible = node;\n              matched.add(node);\n            } else if (this.#lastFocusVisible === node) {\n              this.#lastFocusVisible = null;\n            }\n          }\n          break;\n        }\n        case \"focus-within\": {\n          const activeElement = this.#document.activeElement;\n          if (node.contains(activeElement) && isFocusableArea(activeElement)) {\n            matched.add(node);\n          } else if (activeElement.shadowRoot) {\n            const activeShadowElement = activeElement.shadowRoot.activeElement;\n            if (node.contains(activeShadowElement)) {\n              matched.add(node);\n            } else {\n              let current = activeShadowElement;\n              while (current) {\n                if (current.nodeType === DOCUMENT_FRAGMENT_NODE) {\n                  const { host } = current;\n                  if (host === activeElement && node.contains(host)) {\n                    matched.add(node);\n                  }\n                  break;\n                } else {\n                  current = current.parentNode;\n                }\n              }\n            }\n          }\n          break;\n        }\n        case \"open\":\n        case \"closed\": {\n          if (localName === \"details\" || localName === \"dialog\") {\n            if (node.hasAttribute(\"open\")) {\n              if (astName === \"open\") {\n                matched.add(node);\n              }\n            } else if (astName === \"closed\") {\n              matched.add(node);\n            }\n          }\n          break;\n        }\n        case \"placeholder-shown\": {\n          let placeholder;\n          if (node.placeholder) {\n            placeholder = node.placeholder;\n          } else if (node.hasAttribute(\"placeholder\")) {\n            placeholder = node.getAttribute(\"placeholder\");\n          }\n          if (typeof placeholder === \"string\" && !/[\\r\\n]/.test(placeholder)) {\n            let targetNode;\n            if (localName === \"textarea\") {\n              targetNode = node;\n            } else if (localName === \"input\") {\n              if (node.hasAttribute(\"type\")) {\n                if (KEYS_INPUT_PLACEHOLDER.has(node.getAttribute(\"type\"))) {\n                  targetNode = node;\n                }\n              } else {\n                targetNode = node;\n              }\n            }\n            if (targetNode && node.value === \"\") {\n              matched.add(node);\n            }\n          }\n          break;\n        }\n        case \"checked\": {\n          const attrType = node.getAttribute(\"type\");\n          if (node.checked && localName === \"input\" && (attrType === \"checkbox\" || attrType === \"radio\") || node.selected && localName === \"option\") {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"indeterminate\": {\n          if (node.indeterminate && localName === \"input\" && node.type === \"checkbox\" || localName === \"progress\" && !node.hasAttribute(\"value\")) {\n            matched.add(node);\n          } else if (localName === \"input\" && node.type === \"radio\" && !node.hasAttribute(\"checked\")) {\n            const nodeName = node.name;\n            let parent = node.parentNode;\n            while (parent) {\n              if (parent.localName === \"form\") {\n                break;\n              }\n              parent = parent.parentNode;\n            }\n            if (!parent) {\n              parent = this.#document.documentElement;\n            }\n            const walker = this._createTreeWalker(parent);\n            let refNode = traverseNode(parent, walker);\n            refNode = walker.firstChild();\n            let checked;\n            while (refNode) {\n              if (refNode.localName === \"input\" && refNode.getAttribute(\"type\") === \"radio\") {\n                if (refNode.hasAttribute(\"name\")) {\n                  if (refNode.getAttribute(\"name\") === nodeName) {\n                    checked = !!refNode.checked;\n                  }\n                } else {\n                  checked = !!refNode.checked;\n                }\n                if (checked) {\n                  break;\n                }\n              }\n              refNode = walker.nextNode();\n            }\n            if (!checked) {\n              matched.add(node);\n            }\n          }\n          break;\n        }\n        case \"default\": {\n          const attrType = node.getAttribute(\"type\");\n          if (localName === \"button\" && !(node.hasAttribute(\"type\") && KEYS_INPUT_RESET.has(attrType)) || localName === \"input\" && node.hasAttribute(\"type\") && KEYS_INPUT_SUBMIT.has(attrType)) {\n            let form = node.parentNode;\n            while (form) {\n              if (form.localName === \"form\") {\n                break;\n              }\n              form = form.parentNode;\n            }\n            if (form) {\n              const walker = this._createTreeWalker(form);\n              let refNode = traverseNode(form, walker);\n              refNode = walker.firstChild();\n              while (refNode) {\n                const nodeName = refNode.localName;\n                const nodeAttrType = refNode.getAttribute(\"type\");\n                let m;\n                if (nodeName === \"button\") {\n                  m = !(refNode.hasAttribute(\"type\") && KEYS_INPUT_RESET.has(nodeAttrType));\n                } else if (nodeName === \"input\") {\n                  m = refNode.hasAttribute(\"type\") && KEYS_INPUT_SUBMIT.has(nodeAttrType);\n                }\n                if (m) {\n                  if (refNode === node) {\n                    matched.add(node);\n                  }\n                  break;\n                }\n                refNode = walker.nextNode();\n              }\n            }\n          } else if (localName === \"input\" && node.hasAttribute(\"type\") && node.hasAttribute(\"checked\") && KEYS_INPUT_CHECK.has(attrType)) {\n            matched.add(node);\n          } else if (localName === \"option\" && node.hasAttribute(\"selected\")) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"valid\":\n        case \"invalid\": {\n          if (KEYS_FORM_PS_VALID.has(localName)) {\n            let valid;\n            if (node.checkValidity()) {\n              if (node.maxLength >= 0) {\n                if (node.maxLength >= node.value.length) {\n                  valid = true;\n                }\n              } else {\n                valid = true;\n              }\n            }\n            if (valid) {\n              if (astName === \"valid\") {\n                matched.add(node);\n              }\n            } else if (astName === \"invalid\") {\n              matched.add(node);\n            }\n          } else if (localName === \"fieldset\") {\n            const walker = this._createTreeWalker(node);\n            let refNode = traverseNode(node, walker);\n            refNode = walker.firstChild();\n            let valid;\n            if (!refNode) {\n              valid = true;\n            } else {\n              while (refNode) {\n                if (KEYS_FORM_PS_VALID.has(refNode.localName)) {\n                  if (refNode.checkValidity()) {\n                    if (refNode.maxLength >= 0) {\n                      valid = refNode.maxLength >= refNode.value.length;\n                    } else {\n                      valid = true;\n                    }\n                  } else {\n                    valid = false;\n                  }\n                  if (!valid) {\n                    break;\n                  }\n                }\n                refNode = walker.nextNode();\n              }\n            }\n            if (valid) {\n              if (astName === \"valid\") {\n                matched.add(node);\n              }\n            } else if (astName === \"invalid\") {\n              matched.add(node);\n            }\n          }\n          break;\n        }\n        case \"in-range\":\n        case \"out-of-range\": {\n          const attrType = node.getAttribute(\"type\");\n          if (localName === \"input\" && !(node.readonly || node.hasAttribute(\"readonly\")) && !(node.disabled || node.hasAttribute(\"disabled\")) && KEYS_INPUT_RANGE.has(attrType)) {\n            const flowed = node.validity.rangeUnderflow || node.validity.rangeOverflow;\n            if (astName === \"out-of-range\" && flowed) {\n              matched.add(node);\n            } else if (astName === \"in-range\" && !flowed && (node.hasAttribute(\"min\") || node.hasAttribute(\"max\") || attrType === \"range\")) {\n              matched.add(node);\n            }\n          }\n          break;\n        }\n        case \"required\":\n        case \"optional\": {\n          let required;\n          let optional;\n          if (localName === \"select\" || localName === \"textarea\") {\n            if (node.required || node.hasAttribute(\"required\")) {\n              required = true;\n            } else {\n              optional = true;\n            }\n          } else if (localName === \"input\") {\n            if (node.hasAttribute(\"type\")) {\n              const attrType = node.getAttribute(\"type\");\n              if (KEYS_INPUT_REQUIRED.has(attrType)) {\n                if (node.required || node.hasAttribute(\"required\")) {\n                  required = true;\n                } else {\n                  optional = true;\n                }\n              } else {\n                optional = true;\n              }\n            } else if (node.required || node.hasAttribute(\"required\")) {\n              required = true;\n            } else {\n              optional = true;\n            }\n          }\n          if (astName === \"required\" && required) {\n            matched.add(node);\n          } else if (astName === \"optional\" && optional) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"root\": {\n          if (node === this.#document.documentElement) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"empty\": {\n          if (node.hasChildNodes()) {\n            const walker = this._createTreeWalker(node, {\n              force: true,\n              whatToShow: SHOW_ALL\n            });\n            let refNode = walker.firstChild();\n            let bool;\n            while (refNode) {\n              bool = refNode.nodeType !== ELEMENT_NODE && refNode.nodeType !== TEXT_NODE;\n              if (!bool) {\n                break;\n              }\n              refNode = walker.nextSibling();\n            }\n            if (bool) {\n              matched.add(node);\n            }\n          } else {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"first-child\": {\n          if (parentNode && node === parentNode.firstElementChild || node === this.#root) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"last-child\": {\n          if (parentNode && node === parentNode.lastElementChild || node === this.#root) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"only-child\": {\n          if (parentNode && node === parentNode.firstElementChild && node === parentNode.lastElementChild || node === this.#root) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"defined\": {\n          if (node.hasAttribute(\"is\") || localName.includes(\"-\")) {\n            if (isCustomElement(node)) {\n              matched.add(node);\n            }\n          } else if (node instanceof this.#window.HTMLElement || node instanceof this.#window.SVGElement) {\n            matched.add(node);\n          }\n          break;\n        }\n        case \"popover-open\": {\n          if (node.popover && isVisible(node)) {\n            matched.add(node);\n          }\n          break;\n        }\n        // Ignore :host.\n        case \"host\": {\n          break;\n        }\n        // Legacy pseudo-elements.\n        case \"after\":\n        case \"before\":\n        case \"first-letter\":\n        case \"first-line\": {\n          if (warn) {\n            this.onError(\n              generateException(\n                `Unsupported pseudo-element ::${astName}`,\n                NOT_SUPPORTED_ERR,\n                this.#window\n              )\n            );\n          }\n          break;\n        }\n        // Not supported.\n        case \"autofill\":\n        case \"blank\":\n        case \"buffering\":\n        case \"current\":\n        case \"fullscreen\":\n        case \"future\":\n        case \"has-slotted\":\n        case \"heading\":\n        case \"modal\":\n        case \"muted\":\n        case \"past\":\n        case \"paused\":\n        case \"picture-in-picture\":\n        case \"playing\":\n        case \"seeking\":\n        case \"stalled\":\n        case \"user-invalid\":\n        case \"user-valid\":\n        case \"volume-locked\":\n        case \"-webkit-autofill\": {\n          if (warn) {\n            this.onError(\n              generateException(\n                `Unsupported pseudo-class :${astName}`,\n                NOT_SUPPORTED_ERR,\n                this.#window\n              )\n            );\n          }\n          break;\n        }\n        default: {\n          if (astName.startsWith(\"-webkit-\")) {\n            if (warn) {\n              this.onError(\n                generateException(\n                  `Unsupported pseudo-class :${astName}`,\n                  NOT_SUPPORTED_ERR,\n                  this.#window\n                )\n              );\n            }\n          } else if (!forgive) {\n            this.onError(\n              generateException(\n                `Unknown pseudo-class :${astName}`,\n                SYNTAX_ERR,\n                this.#window\n              )\n            );\n          }\n        }\n      }\n    }\n    return matched;\n  }\n  /**\n   * Evaluates the :host() pseudo-class.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves.\n   * @param {object} host - The host element.\n   * @param {object} ast - The original AST for error reporting.\n   * @returns {boolean} True if matched.\n   */\n  _evaluateHostPseudo = (leaves, host, ast) => {\n    const l = leaves.length;\n    for (let i = 0; i < l; i++) {\n      const leaf = leaves[i];\n      if (leaf.type === COMBINATOR) {\n        const css = (0, import_css_tree.generate)(ast);\n        const msg = `Invalid selector ${css}`;\n        this.onError(generateException(msg, SYNTAX_ERR, this.#window));\n        return false;\n      }\n      if (!this._matchSelector(leaf, host).has(host)) {\n        return false;\n      }\n    }\n    return true;\n  };\n  /**\n   * Evaluates the :host-context() pseudo-class.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves.\n   * @param {object} host - The host element.\n   * @param {object} ast - The original AST for error reporting.\n   * @returns {boolean} True if matched.\n   */\n  _evaluateHostContextPseudo = (leaves, host, ast) => {\n    let parent = host;\n    while (parent) {\n      let bool;\n      const l = leaves.length;\n      for (let i = 0; i < l; i++) {\n        const leaf = leaves[i];\n        if (leaf.type === COMBINATOR) {\n          const css = (0, import_css_tree.generate)(ast);\n          const msg = `Invalid selector ${css}`;\n          this.onError(generateException(msg, SYNTAX_ERR, this.#window));\n          return false;\n        }\n        bool = this._matchSelector(leaf, parent).has(parent);\n        if (!bool) {\n          break;\n        }\n      }\n      if (bool) {\n        return true;\n      }\n      parent = parent.parentNode;\n    }\n    return false;\n  };\n  /**\n   * Matches shadow host pseudo-classes.\n   * @private\n   * @param {object} ast - The AST.\n   * @param {object} node - The DocumentFragment node.\n   * @returns {?object} The matched node.\n   */\n  _matchShadowHostPseudoClass = (ast, node) => {\n    const { children: astChildren, name: astName } = ast;\n    if (!Array.isArray(astChildren)) {\n      if (astName === \"host\") {\n        return node;\n      }\n      const msg = `Invalid selector :${astName}`;\n      return this.onError(generateException(msg, SYNTAX_ERR, this.#window));\n    }\n    if (astName !== \"host\" && astName !== \"host-context\") {\n      const msg = `Invalid selector :${astName}()`;\n      return this.onError(generateException(msg, SYNTAX_ERR, this.#window));\n    }\n    if (astChildren.length !== 1) {\n      const css = (0, import_css_tree.generate)(ast);\n      const msg = `Invalid selector ${css}`;\n      return this.onError(generateException(msg, SYNTAX_ERR, this.#window));\n    }\n    const { host } = node;\n    const { branches } = walkAST(astChildren[0]);\n    const [branch] = branches;\n    const [...leaves] = branch;\n    let isMatch = false;\n    if (astName === \"host\") {\n      isMatch = this._evaluateHostPseudo(leaves, host, ast);\n    } else {\n      isMatch = this._evaluateHostContextPseudo(leaves, host, ast);\n    }\n    return isMatch ? node : null;\n  };\n  /**\n   * Matches a selector for element nodes.\n   * @private\n   * @param {object} ast - The AST.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchSelectorForElement = (ast, node, opt = {}) => {\n    const { type: astType } = ast;\n    const astName = unescapeSelector(ast.name);\n    const matched = /* @__PURE__ */ new Set();\n    switch (astType) {\n      case ATTR_SELECTOR: {\n        if (matchAttributeSelector(ast, node, opt)) {\n          matched.add(node);\n        }\n        break;\n      }\n      case ID_SELECTOR: {\n        if (node.id === astName) {\n          matched.add(node);\n        }\n        break;\n      }\n      case CLASS_SELECTOR: {\n        if (node.classList.contains(astName)) {\n          matched.add(node);\n        }\n        break;\n      }\n      case PS_CLASS_SELECTOR: {\n        return this._matchPseudoClassSelector(ast, node, opt);\n      }\n      case TYPE_SELECTOR: {\n        if (matchTypeSelector(ast, node, opt)) {\n          matched.add(node);\n        }\n        break;\n      }\n      // PS_ELEMENT_SELECTOR is handled by default.\n      default: {\n        try {\n          if (opt.check) {\n            const css = (0, import_css_tree.generate)(ast);\n            this.#pseudoElement.push(css);\n            matched.add(node);\n          } else {\n            matchPseudoElementSelector(astName, astType, opt);\n          }\n        } catch (e) {\n          this.onError(e);\n        }\n      }\n    }\n    return matched;\n  };\n  /**\n   * Matches a selector for a shadow root.\n   * @private\n   * @param {object} ast - The AST.\n   * @param {object} node - The DocumentFragment node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchSelectorForShadowRoot = (ast, node, opt = {}) => {\n    const { name: astName } = ast;\n    if (KEYS_LOGICAL.has(astName)) {\n      opt.isShadowRoot = true;\n      return this._matchPseudoClassSelector(ast, node, opt);\n    }\n    const matched = /* @__PURE__ */ new Set();\n    if (astName === \"host\" || astName === \"host-context\") {\n      const res = this._matchShadowHostPseudoClass(ast, node, opt);\n      if (res) {\n        this.#verifyShadowHost = true;\n        matched.add(res);\n      }\n    }\n    return matched;\n  };\n  /**\n   * Matches a selector.\n   * @private\n   * @param {object} ast - The AST.\n   * @param {object} node - The Document, DocumentFragment, or Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchSelector = (ast, node, opt = {}) => {\n    if (node.nodeType === ELEMENT_NODE) {\n      return this._matchSelectorForElement(ast, node, opt);\n    }\n    if (this.#shadow && node.nodeType === DOCUMENT_FRAGMENT_NODE && ast.type === PS_CLASS_SELECTOR) {\n      return this._matchSelectorForShadowRoot(ast, node, opt);\n    }\n    return /* @__PURE__ */ new Set();\n  };\n  /**\n   * Matches leaves.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves.\n   * @param {object} node - The node.\n   * @param {object} [opt] - Options.\n   * @returns {boolean} The result.\n   */\n  _matchLeaves = (leaves, node, opt = {}) => {\n    const results = this.#invalidate ? this.#invalidateResults : this.#results;\n    let result = results.get(leaves);\n    if (result && result.has(node)) {\n      const { matched } = result.get(node);\n      return matched;\n    }\n    let cacheable = true;\n    if (node.nodeType === ELEMENT_NODE && KEYS_FORM.has(node.localName)) {\n      cacheable = false;\n    }\n    let bool;\n    const l = leaves.length;\n    for (let i = 0; i < l; i++) {\n      const leaf = leaves[i];\n      switch (leaf.type) {\n        case ATTR_SELECTOR:\n        case ID_SELECTOR: {\n          cacheable = false;\n          break;\n        }\n        case PS_CLASS_SELECTOR: {\n          if (KEYS_PS_UNCACHE.has(leaf.name)) {\n            cacheable = false;\n          }\n          break;\n        }\n        default: {\n        }\n      }\n      bool = this._matchSelector(leaf, node, opt).has(node);\n      if (!bool) {\n        break;\n      }\n    }\n    if (cacheable) {\n      if (!result) {\n        result = /* @__PURE__ */ new WeakMap();\n      }\n      result.set(node, {\n        matched: bool\n      });\n      results.set(leaves, result);\n    }\n    return bool;\n  };\n  /**\n   * Traverses all descendant nodes and collects matches.\n   * @private\n   * @param {object} baseNode - The base Element node or Element.shadowRoot.\n   * @param {Array.<object>} leaves - The AST leaves.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _traverseAllDescendants = (baseNode, leaves, opt = {}) => {\n    const walker = this._createTreeWalker(baseNode);\n    traverseNode(baseNode, walker);\n    let currentNode = walker.firstChild();\n    const nodes = /* @__PURE__ */ new Set();\n    while (currentNode) {\n      if (this._matchLeaves(leaves, currentNode, opt)) {\n        nodes.add(currentNode);\n      }\n      currentNode = walker.nextNode();\n    }\n    return nodes;\n  };\n  /**\n   * Finds descendant nodes.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves.\n   * @param {object} baseNode - The base Element node or Element.shadowRoot.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _findDescendantNodes = (leaves, baseNode, opt = {}) => {\n    const [leaf, ...filterLeaves] = leaves;\n    const { type: leafType } = leaf;\n    switch (leafType) {\n      case ID_SELECTOR: {\n        const canUseGetElementById = !this.#shadow && baseNode.nodeType === ELEMENT_NODE && this.#root.nodeType !== ELEMENT_NODE;\n        if (canUseGetElementById) {\n          const leafName = unescapeSelector(leaf.name);\n          const nodes = /* @__PURE__ */ new Set();\n          const foundNode = this.#root.getElementById(leafName);\n          if (foundNode && foundNode !== baseNode && baseNode.contains(foundNode)) {\n            const isCompoundSelector = filterLeaves.length > 0;\n            if (!isCompoundSelector || this._matchLeaves(filterLeaves, foundNode, opt)) {\n              nodes.add(foundNode);\n            }\n          }\n          return nodes;\n        }\n        return this._traverseAllDescendants(baseNode, leaves, opt);\n      }\n      case PS_ELEMENT_SELECTOR: {\n        const leafName = unescapeSelector(leaf.name);\n        matchPseudoElementSelector(leafName, leafType, opt);\n        return /* @__PURE__ */ new Set();\n      }\n      default: {\n        return this._traverseAllDescendants(baseNode, leaves, opt);\n      }\n    }\n  };\n  /**\n   * Matches the descendant combinator ' '.\n   * @private\n   * @param {object} twig - The twig object.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchDescendantCombinator = (twig, node, opt = {}) => {\n    const { leaves } = twig;\n    const { parentNode } = node;\n    const { dir } = opt;\n    if (dir === DIR_NEXT) {\n      return this._findDescendantNodes(leaves, node, opt);\n    }\n    const ancestors = [];\n    let refNode = parentNode;\n    while (refNode) {\n      if (this._matchLeaves(leaves, refNode, opt)) {\n        ancestors.push(refNode);\n      }\n      refNode = refNode.parentNode;\n    }\n    if (ancestors.length) {\n      return new Set(ancestors.reverse());\n    }\n    return /* @__PURE__ */ new Set();\n  };\n  /**\n   * Matches the child combinator '>'.\n   * @private\n   * @param {object} twig - The twig object.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchChildCombinator = (twig, node, opt = {}) => {\n    const { leaves } = twig;\n    const { dir } = opt;\n    const { parentNode } = node;\n    const matched = /* @__PURE__ */ new Set();\n    if (dir === DIR_NEXT) {\n      let refNode = node.firstElementChild;\n      while (refNode) {\n        if (this._matchLeaves(leaves, refNode, opt)) {\n          matched.add(refNode);\n        }\n        refNode = refNode.nextElementSibling;\n      }\n    } else {\n      if (parentNode && this._matchLeaves(leaves, parentNode, opt)) {\n        matched.add(parentNode);\n      }\n    }\n    return matched;\n  };\n  /**\n   * Matches the adjacent sibling combinator '+'.\n   * @private\n   * @param {object} twig - The twig object.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchAdjacentSiblingCombinator = (twig, node, opt = {}) => {\n    const { leaves } = twig;\n    const { dir } = opt;\n    const matched = /* @__PURE__ */ new Set();\n    const refNode = dir === DIR_NEXT ? node.nextElementSibling : node.previousElementSibling;\n    if (refNode && this._matchLeaves(leaves, refNode, opt)) {\n      matched.add(refNode);\n    }\n    return matched;\n  };\n  /**\n   * Matches the general sibling combinator '~'.\n   * @private\n   * @param {object} twig - The twig object.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchGeneralSiblingCombinator = (twig, node, opt = {}) => {\n    const { leaves } = twig;\n    const { dir } = opt;\n    const matched = /* @__PURE__ */ new Set();\n    let refNode = dir === DIR_NEXT ? node.nextElementSibling : node.previousElementSibling;\n    while (refNode) {\n      if (this._matchLeaves(leaves, refNode, opt)) {\n        matched.add(refNode);\n      }\n      refNode = dir === DIR_NEXT ? refNode.nextElementSibling : refNode.previousElementSibling;\n    }\n    return matched;\n  };\n  /**\n   * Matches a combinator.\n   * @private\n   * @param {object} twig - The twig object.\n   * @param {object} node - The Element node.\n   * @param {object} [opt] - Options.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  _matchCombinator = (twig, node, opt = {}) => {\n    const {\n      combo: { name: comboName }\n    } = twig;\n    switch (comboName) {\n      case \"+\": {\n        return this._matchAdjacentSiblingCombinator(twig, node, opt);\n      }\n      case \"~\": {\n        return this._matchGeneralSiblingCombinator(twig, node, opt);\n      }\n      case \">\": {\n        return this._matchChildCombinator(twig, node, opt);\n      }\n      case \" \":\n      default: {\n        return this._matchDescendantCombinator(twig, node, opt);\n      }\n    }\n  };\n  /**\n   * Traverses with a TreeWalker and collects nodes matching the leaves.\n   * @private\n   * @param {TreeWalker} walker - The TreeWalker instance to use.\n   * @param {Array} leaves - The AST leaves to match against.\n   * @param {object} options - Traversal options.\n   * @param {Node} options.startNode - The node to start traversal from.\n   * @param {string} options.targetType - The type of target ('all' or 'first').\n   * @param {Node} [options.boundaryNode] - The node to stop traversal at.\n   * @param {boolean} [options.force] - Force traversal to the next node.\n   * @returns {Array.<Node>} An array of matched nodes.\n   */\n  _traverseAndCollectNodes = (walker, leaves, options) => {\n    const { boundaryNode, force, startNode, targetType } = options;\n    const collectedNodes = [];\n    let currentNode = traverseNode(startNode, walker, !!force);\n    if (!currentNode) {\n      return [];\n    }\n    if (currentNode.nodeType !== ELEMENT_NODE) {\n      currentNode = walker.nextNode();\n    } else if (currentNode === startNode && currentNode !== this.#root) {\n      currentNode = walker.nextNode();\n    }\n    const matchOpt = {\n      warn: this.#warn\n    };\n    while (currentNode) {\n      if (boundaryNode) {\n        if (currentNode === boundaryNode) {\n          break;\n        } else if (targetType === TARGET_ALL && !boundaryNode.contains(currentNode)) {\n          break;\n        }\n      }\n      if (this._matchLeaves(leaves, currentNode, matchOpt) && currentNode !== this.#node) {\n        collectedNodes.push(currentNode);\n        if (targetType !== TARGET_ALL) {\n          break;\n        }\n      }\n      currentNode = walker.nextNode();\n    }\n    return collectedNodes;\n  };\n  /**\n   * Finds matched node(s) preceding this.#node.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves.\n   * @param {object} node - The node to start from.\n   * @param {object} opt - Options.\n   * @param {boolean} [opt.force] - If true, traverses only to the next node.\n   * @param {string} [opt.targetType] - The target type.\n   * @returns {Array.<object>} A collection of matched nodes.\n   */\n  _findPrecede = (leaves, node, opt = {}) => {\n    const { force, targetType } = opt;\n    if (!this.#rootWalker) {\n      this.#rootWalker = this._createTreeWalker(this.#root);\n    }\n    return this._traverseAndCollectNodes(this.#rootWalker, leaves, {\n      force,\n      targetType,\n      boundaryNode: this.#node,\n      startNode: node\n    });\n  };\n  /**\n   * Finds matched node(s) in #nodeWalker.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves.\n   * @param {object} node - The node to start from.\n   * @param {object} opt - Options.\n   * @param {boolean} [opt.precede] - If true, finds preceding nodes.\n   * @returns {Array.<object>} A collection of matched nodes.\n   */\n  _findNodeWalker = (leaves, node, opt = {}) => {\n    const { precede, ...traversalOpts } = opt;\n    if (precede) {\n      const precedeNodes = this._findPrecede(leaves, this.#root, opt);\n      if (precedeNodes.length) {\n        return precedeNodes;\n      }\n    }\n    if (!this.#nodeWalker) {\n      this.#nodeWalker = this._createTreeWalker(this.#node);\n    }\n    return this._traverseAndCollectNodes(this.#nodeWalker, leaves, {\n      startNode: node,\n      ...traversalOpts\n    });\n  };\n  /**\n   * Matches the node itself.\n   * @private\n   * @param {Array} leaves - The AST leaves.\n   * @param {boolean} check - Indicates if running in internal check().\n   * @returns {Array} An array containing [nodes, filtered, pseudoElement].\n   */\n  _matchSelf = (leaves, check = false) => {\n    const options = { check, warn: this.#warn };\n    const matched = this._matchLeaves(leaves, this.#node, options);\n    const nodes = matched ? [this.#node] : [];\n    return [nodes, matched, this.#pseudoElement];\n  };\n  /**\n   * Finds lineal nodes (self and ancestors).\n   * @private\n   * @param {Array} leaves - The AST leaves.\n   * @param {object} opt - Options.\n   * @returns {Array} An array containing [nodes, filtered].\n   */\n  _findLineal = (leaves, opt) => {\n    const { complex } = opt;\n    const nodes = [];\n    const options = { warn: this.#warn };\n    const selfMatched = this._matchLeaves(leaves, this.#node, options);\n    if (selfMatched) {\n      nodes.push(this.#node);\n    }\n    if (!selfMatched || complex) {\n      let currentNode = this.#node.parentNode;\n      while (currentNode) {\n        if (this._matchLeaves(leaves, currentNode, options)) {\n          nodes.push(currentNode);\n        }\n        currentNode = currentNode.parentNode;\n      }\n    }\n    const filtered = nodes.length > 0;\n    return [nodes, filtered];\n  };\n  /**\n   * Finds entry nodes for pseudo-element selectors.\n   * @private\n   * @param {object} leaf - The pseudo-element leaf from the AST.\n   * @param {Array.<object>} filterLeaves - Leaves for compound selectors.\n   * @param {string} targetType - The type of target to find.\n   * @returns {object} The result { nodes, filtered, pending }.\n   */\n  _findEntryNodesForPseudoElement = (leaf, filterLeaves, targetType) => {\n    let nodes = [];\n    let filtered = false;\n    if (targetType === TARGET_SELF && this.#check) {\n      const css = (0, import_css_tree.generate)(leaf);\n      this.#pseudoElement.push(css);\n      if (filterLeaves.length) {\n        [nodes, filtered] = this._matchSelf(filterLeaves, this.#check);\n      } else {\n        nodes.push(this.#node);\n        filtered = true;\n      }\n    } else {\n      matchPseudoElementSelector(leaf.name, leaf.type, { warn: this.#warn });\n    }\n    return { nodes, filtered, pending: false };\n  };\n  /**\n   * Finds entry nodes for ID selectors.\n   * @private\n   * @param {object} twig - The current twig from the AST branch.\n   * @param {string} targetType - The type of target to find.\n   * @param {object} opt - Additional options for finding nodes.\n   * @returns {object} The result { nodes, filtered, pending }.\n   */\n  _findEntryNodesForId = (twig, targetType, opt) => {\n    const { leaves } = twig;\n    const [leaf, ...filterLeaves] = leaves;\n    const { complex, precede } = opt;\n    let nodes = [];\n    let filtered = false;\n    if (targetType === TARGET_SELF) {\n      [nodes, filtered] = this._matchSelf(leaves);\n    } else if (targetType === TARGET_LINEAL) {\n      [nodes, filtered] = this._findLineal(leaves, { complex });\n    } else if (targetType === TARGET_FIRST && this.#root.nodeType !== ELEMENT_NODE) {\n      const node = this.#root.getElementById(leaf.name);\n      if (node) {\n        if (filterLeaves.length) {\n          if (this._matchLeaves(filterLeaves, node, { warn: this.#warn })) {\n            nodes.push(node);\n            filtered = true;\n          }\n        } else {\n          nodes.push(node);\n          filtered = true;\n        }\n      }\n    } else {\n      nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });\n      filtered = nodes.length > 0;\n    }\n    return { nodes, filtered, pending: false };\n  };\n  /**\n   * Finds entry nodes for class selectors.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves for the selector.\n   * @param {string} targetType - The type of target to find.\n   * @param {object} opt - Additional options for finding nodes.\n   * @returns {object} The result { nodes, filtered, pending }.\n   */\n  _findEntryNodesForClass = (leaves, targetType, opt) => {\n    const { complex, precede } = opt;\n    let nodes = [];\n    let filtered = false;\n    if (targetType === TARGET_SELF) {\n      [nodes, filtered] = this._matchSelf(leaves);\n    } else if (targetType === TARGET_LINEAL) {\n      [nodes, filtered] = this._findLineal(leaves, { complex });\n    } else {\n      nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });\n      filtered = nodes.length > 0;\n    }\n    return { nodes, filtered, pending: false };\n  };\n  /**\n   * Finds entry nodes for type selectors.\n   * @private\n   * @param {Array.<object>} leaves - The AST leaves for the selector.\n   * @param {string} targetType - The type of target to find.\n   * @param {object} opt - Additional options for finding nodes.\n   * @returns {object} The result { nodes, filtered, pending }.\n   */\n  _findEntryNodesForType = (leaves, targetType, opt) => {\n    const { complex, precede } = opt;\n    let nodes = [];\n    let filtered = false;\n    if (targetType === TARGET_SELF) {\n      [nodes, filtered] = this._matchSelf(leaves);\n    } else if (targetType === TARGET_LINEAL) {\n      [nodes, filtered] = this._findLineal(leaves, { complex });\n    } else {\n      nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });\n      filtered = nodes.length > 0;\n    }\n    return { nodes, filtered, pending: false };\n  };\n  /**\n   * Finds entry nodes for other selector types (default case).\n   * @private\n   * @param {object} twig - The current twig from the AST branch.\n   * @param {string} targetType - The type of target to find.\n   * @param {object} opt - Additional options for finding nodes.\n   * @returns {object} The result { nodes, filtered, pending }.\n   */\n  _findEntryNodesForOther = (twig, targetType, opt) => {\n    const { leaves } = twig;\n    const [leaf, ...filterLeaves] = leaves;\n    const { complex, precede } = opt;\n    let nodes = [];\n    let filtered = false;\n    let pending = false;\n    if (targetType !== TARGET_LINEAL && /host(?:-context)?/.test(leaf.name)) {\n      let shadowRoot = null;\n      if (this.#shadow && this.#node.nodeType === DOCUMENT_FRAGMENT_NODE) {\n        shadowRoot = this._matchShadowHostPseudoClass(leaf, this.#node);\n      } else if (filterLeaves.length && this.#node.nodeType === ELEMENT_NODE) {\n        shadowRoot = this._matchShadowHostPseudoClass(\n          leaf,\n          this.#node.shadowRoot\n        );\n      }\n      if (shadowRoot) {\n        let bool = true;\n        const l = filterLeaves.length;\n        for (let i = 0; i < l; i++) {\n          const filterLeaf = filterLeaves[i];\n          switch (filterLeaf.name) {\n            case \"host\":\n            case \"host-context\": {\n              const matchedNode = this._matchShadowHostPseudoClass(\n                filterLeaf,\n                shadowRoot\n              );\n              bool = matchedNode === shadowRoot;\n              break;\n            }\n            case \"has\": {\n              bool = this._matchPseudoClassSelector(\n                filterLeaf,\n                shadowRoot,\n                {}\n              ).has(shadowRoot);\n              break;\n            }\n            default: {\n              bool = false;\n            }\n          }\n          if (!bool) {\n            break;\n          }\n        }\n        if (bool) {\n          nodes.push(shadowRoot);\n          filtered = true;\n        }\n      }\n    } else if (targetType === TARGET_SELF) {\n      [nodes, filtered] = this._matchSelf(leaves);\n    } else if (targetType === TARGET_LINEAL) {\n      [nodes, filtered] = this._findLineal(leaves, { complex });\n    } else if (targetType === TARGET_FIRST) {\n      nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });\n      filtered = nodes.length > 0;\n    } else {\n      pending = true;\n    }\n    return { nodes, filtered, pending };\n  };\n  /**\n   * Finds entry nodes.\n   * @private\n   * @param {object} twig - The twig object.\n   * @param {string} targetType - The target type.\n   * @param {object} [opt] - Options.\n   * @param {boolean} [opt.complex] - If true, the selector is complex.\n   * @param {string} [opt.dir] - The find direction.\n   * @returns {object} An object with nodes and their state.\n   */\n  _findEntryNodes = (twig, targetType, opt = {}) => {\n    const { leaves } = twig;\n    const [leaf, ...filterLeaves] = leaves;\n    const { complex = false, dir = DIR_PREV } = opt;\n    const precede = dir === DIR_NEXT && this.#node.nodeType === ELEMENT_NODE && this.#node !== this.#root;\n    let result;\n    switch (leaf.type) {\n      case PS_ELEMENT_SELECTOR: {\n        result = this._findEntryNodesForPseudoElement(\n          leaf,\n          filterLeaves,\n          targetType\n        );\n        break;\n      }\n      case ID_SELECTOR: {\n        result = this._findEntryNodesForId(twig, targetType, {\n          complex,\n          precede\n        });\n        break;\n      }\n      case CLASS_SELECTOR: {\n        result = this._findEntryNodesForClass(leaves, targetType, {\n          complex,\n          precede\n        });\n        break;\n      }\n      case TYPE_SELECTOR: {\n        result = this._findEntryNodesForType(leaves, targetType, {\n          complex,\n          precede\n        });\n        break;\n      }\n      default: {\n        result = this._findEntryNodesForOther(twig, targetType, {\n          complex,\n          precede\n        });\n      }\n    }\n    return {\n      compound: filterLeaves.length > 0,\n      filtered: result.filtered,\n      nodes: result.nodes,\n      pending: result.pending\n    };\n  };\n  /**\n   * Determines the direction and starting twig for a selector branch.\n   * @private\n   * @param {Array.<object>} branch - The AST branch.\n   * @param {string} targetType - The type of target to find.\n   * @returns {object} An object with the direction and starting twig.\n   */\n  _determineTraversalStrategy = (branch, targetType) => {\n    const branchLen = branch.length;\n    const firstTwig = branch[0];\n    const lastTwig = branch[branchLen - 1];\n    if (branchLen === 1) {\n      return { dir: DIR_PREV, twig: firstTwig };\n    }\n    const {\n      leaves: [{ name: firstName, type: firstType }]\n    } = firstTwig;\n    const {\n      leaves: [{ name: lastName, type: lastType }]\n    } = lastTwig;\n    const { combo: firstCombo } = firstTwig;\n    if (this.#selector.includes(\":scope\") || lastType === PS_ELEMENT_SELECTOR || lastType === ID_SELECTOR) {\n      return { dir: DIR_PREV, twig: lastTwig };\n    }\n    if (firstType === ID_SELECTOR) {\n      return { dir: DIR_NEXT, twig: firstTwig };\n    }\n    if (firstName === \"*\" && firstType === TYPE_SELECTOR) {\n      return { dir: DIR_PREV, twig: lastTwig };\n    }\n    if (lastName === \"*\" && lastType === TYPE_SELECTOR) {\n      return { dir: DIR_NEXT, twig: firstTwig };\n    }\n    if (branchLen === 2) {\n      if (targetType === TARGET_FIRST) {\n        return { dir: DIR_PREV, twig: lastTwig };\n      }\n      const { name: comboName } = firstCombo;\n      if (comboName === \"+\" || comboName === \"~\") {\n        return { dir: DIR_PREV, twig: lastTwig };\n      }\n    } else if (branchLen > 2 && this.#scoped && targetType === TARGET_FIRST) {\n      if (lastType === TYPE_SELECTOR) {\n        return { dir: DIR_PREV, twig: lastTwig };\n      }\n      let isChildOrDescendant = false;\n      for (const { combo } of branch) {\n        if (combo) {\n          const { name: comboName } = combo;\n          isChildOrDescendant = comboName === \">\" || comboName === \" \";\n          if (!isChildOrDescendant) {\n            break;\n          }\n        }\n      }\n      if (isChildOrDescendant) {\n        return { dir: DIR_PREV, twig: lastTwig };\n      }\n    }\n    return { dir: DIR_NEXT, twig: firstTwig };\n  };\n  /**\n   * Processes pending items not resolved with a direct strategy.\n   * @private\n   * @param {Set.<Map>} pendingItems - The set of pending items.\n   */\n  _processPendingItems = (pendingItems) => {\n    if (!pendingItems.size) {\n      return;\n    }\n    if (!this.#rootWalker) {\n      this.#rootWalker = this._createTreeWalker(this.#root);\n    }\n    const walker = this.#rootWalker;\n    let node = this.#root;\n    if (this.#scoped) {\n      node = this.#node;\n    }\n    let nextNode = traverseNode(node, walker);\n    while (nextNode) {\n      const isWithinScope = this.#node.nodeType !== ELEMENT_NODE || nextNode === this.#node || this.#node.contains(nextNode);\n      if (isWithinScope) {\n        for (const pendingItem of pendingItems) {\n          const { leaves } = pendingItem.get(\"twig\");\n          if (this._matchLeaves(leaves, nextNode, { warn: this.#warn })) {\n            const index = pendingItem.get(\"index\");\n            this.#ast[index].filtered = true;\n            this.#ast[index].find = true;\n            this.#nodes[index].push(nextNode);\n          }\n        }\n      } else if (this.#scoped) {\n        break;\n      }\n      nextNode = walker.nextNode();\n    }\n  };\n  /**\n   * Collects nodes.\n   * @private\n   * @param {string} targetType - The target type.\n   * @returns {Array.<Array.<object>>} An array containing the AST and nodes.\n   */\n  _collectNodes = (targetType) => {\n    const ast = this.#ast.values();\n    if (targetType === TARGET_ALL || targetType === TARGET_FIRST) {\n      const pendingItems = /* @__PURE__ */ new Set();\n      let i = 0;\n      for (const { branch } of ast) {\n        const complex = branch.length > 1;\n        const { dir, twig } = this._determineTraversalStrategy(\n          branch,\n          targetType\n        );\n        const { compound, filtered, nodes, pending } = this._findEntryNodes(\n          twig,\n          targetType,\n          { complex, dir }\n        );\n        if (nodes.length) {\n          this.#ast[i].find = true;\n          this.#nodes[i] = nodes;\n        } else if (pending) {\n          pendingItems.add(\n            /* @__PURE__ */ new Map([\n              [\"index\", i],\n              [\"twig\", twig]\n            ])\n          );\n        }\n        this.#ast[i].dir = dir;\n        this.#ast[i].filtered = filtered || !compound;\n        i++;\n      }\n      this._processPendingItems(pendingItems);\n    } else {\n      let i = 0;\n      for (const { branch } of ast) {\n        const twig = branch[branch.length - 1];\n        const complex = branch.length > 1;\n        const dir = DIR_PREV;\n        const { compound, filtered, nodes } = this._findEntryNodes(\n          twig,\n          targetType,\n          { complex, dir }\n        );\n        if (nodes.length) {\n          this.#ast[i].find = true;\n          this.#nodes[i] = nodes;\n        }\n        this.#ast[i].dir = dir;\n        this.#ast[i].filtered = filtered || !compound;\n        i++;\n      }\n    }\n    return [this.#ast, this.#nodes];\n  };\n  /**\n   * Gets combined nodes.\n   * @private\n   * @param {object} twig - The twig object.\n   * @param {object} nodes - A collection of nodes.\n   * @param {string} dir - The direction.\n   * @returns {Array.<object>} A collection of matched nodes.\n   */\n  _getCombinedNodes = (twig, nodes, dir) => {\n    const arr = [];\n    const options = {\n      dir,\n      warn: this.#warn\n    };\n    for (const node of nodes) {\n      const matched = this._matchCombinator(twig, node, options);\n      if (matched.size) {\n        arr.push(...matched);\n      }\n    }\n    return arr;\n  };\n  /**\n   * Matches a node in the 'next' direction.\n   * @private\n   * @param {Array} branch - The branch.\n   * @param {Set.<object>} nodes - A collection of Element nodes.\n   * @param {object} opt - Options.\n   * @param {object} opt.combo - The combo object.\n   * @param {number} opt.index - The index.\n   * @returns {?object} The matched node.\n   */\n  _matchNodeNext = (branch, nodes, opt) => {\n    const { combo, index } = opt;\n    const { combo: nextCombo, leaves } = branch[index];\n    const twig = {\n      combo,\n      leaves\n    };\n    const nextNodes = new Set(this._getCombinedNodes(twig, nodes, DIR_NEXT));\n    if (nextNodes.size) {\n      if (index === branch.length - 1) {\n        const [nextNode] = sortNodes(nextNodes);\n        return nextNode;\n      }\n      return this._matchNodeNext(branch, nextNodes, {\n        combo: nextCombo,\n        index: index + 1\n      });\n    }\n    return null;\n  };\n  /**\n   * Matches a node in the 'previous' direction.\n   * @private\n   * @param {Array} branch - The branch.\n   * @param {object} node - The Element node.\n   * @param {object} opt - Options.\n   * @param {number} opt.index - The index.\n   * @returns {?object} The node.\n   */\n  _matchNodePrev = (branch, node, opt) => {\n    const { index } = opt;\n    const twig = branch[index];\n    const nodes = /* @__PURE__ */ new Set([node]);\n    const nextNodes = new Set(this._getCombinedNodes(twig, nodes, DIR_PREV));\n    if (nextNodes.size) {\n      if (index === 0) {\n        return node;\n      }\n      let matched;\n      for (const nextNode of nextNodes) {\n        matched = this._matchNodePrev(branch, nextNode, {\n          index: index - 1\n        });\n        if (matched) {\n          break;\n        }\n      }\n      if (matched) {\n        return node;\n      }\n    }\n    return null;\n  };\n  /**\n   * Processes a complex selector branch to find all matching nodes.\n   * @private\n   * @param {Array} branch - The selector branch from the AST.\n   * @param {Array} entryNodes - The initial set of nodes to start from.\n   * @param {string} dir - The direction of traversal ('next' or 'prev').\n   * @returns {Set.<object>} A set of all matched nodes.\n   */\n  _processComplexBranchAll = (branch, entryNodes, dir) => {\n    const matchedNodes = /* @__PURE__ */ new Set();\n    const branchLen = branch.length;\n    const lastIndex = branchLen - 1;\n    if (dir === DIR_NEXT) {\n      const { combo: firstCombo } = branch[0];\n      for (const node of entryNodes) {\n        let combo = firstCombo;\n        let nextNodes = /* @__PURE__ */ new Set([node]);\n        for (let j = 1; j < branchLen; j++) {\n          const { combo: nextCombo, leaves } = branch[j];\n          const twig = { combo, leaves };\n          const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);\n          if (nodesArr.length) {\n            if (j === lastIndex) {\n              for (const nextNode of nodesArr) {\n                matchedNodes.add(nextNode);\n              }\n            }\n            combo = nextCombo;\n            nextNodes = new Set(nodesArr);\n          } else {\n            nextNodes.clear();\n            break;\n          }\n        }\n      }\n    } else {\n      for (const node of entryNodes) {\n        let nextNodes = /* @__PURE__ */ new Set([node]);\n        for (let j = lastIndex - 1; j >= 0; j--) {\n          const twig = branch[j];\n          const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);\n          if (nodesArr.length) {\n            if (j === 0) {\n              matchedNodes.add(node);\n            }\n            nextNodes = new Set(nodesArr);\n          } else {\n            nextNodes.clear();\n            break;\n          }\n        }\n      }\n    }\n    return matchedNodes;\n  };\n  /**\n   * Processes a complex selector branch to find the first matching node.\n   * @private\n   * @param {Array} branch - The selector branch from the AST.\n   * @param {Array} entryNodes - The initial set of nodes to start from.\n   * @param {string} dir - The direction of traversal ('next' or 'prev').\n   * @param {string} targetType - The type of search (e.g., 'first').\n   * @returns {?object} The first matched node, or null.\n   */\n  _processComplexBranchFirst = (branch, entryNodes, dir, targetType) => {\n    const branchLen = branch.length;\n    const lastIndex = branchLen - 1;\n    if (dir === DIR_NEXT) {\n      const { combo: entryCombo } = branch[0];\n      for (const node of entryNodes) {\n        const matchedNode = this._matchNodeNext(branch, /* @__PURE__ */ new Set([node]), {\n          combo: entryCombo,\n          index: 1\n        });\n        if (matchedNode) {\n          if (this.#node.nodeType === ELEMENT_NODE) {\n            if (matchedNode !== this.#node && this.#node.contains(matchedNode)) {\n              return matchedNode;\n            }\n          } else {\n            return matchedNode;\n          }\n        }\n      }\n      const { leaves: entryLeaves } = branch[0];\n      const [entryNode] = entryNodes;\n      if (this.#node.contains(entryNode)) {\n        let [refNode] = this._findNodeWalker(entryLeaves, entryNode, {\n          targetType\n        });\n        while (refNode) {\n          const matchedNode = this._matchNodeNext(branch, /* @__PURE__ */ new Set([refNode]), {\n            combo: entryCombo,\n            index: 1\n          });\n          if (matchedNode) {\n            if (this.#node.nodeType === ELEMENT_NODE) {\n              if (matchedNode !== this.#node && this.#node.contains(matchedNode)) {\n                return matchedNode;\n              }\n            } else {\n              return matchedNode;\n            }\n          }\n          [refNode] = this._findNodeWalker(entryLeaves, refNode, {\n            targetType,\n            force: true\n          });\n        }\n      }\n    } else {\n      for (const node of entryNodes) {\n        const matchedNode = this._matchNodePrev(branch, node, {\n          index: lastIndex - 1\n        });\n        if (matchedNode) {\n          return matchedNode;\n        }\n      }\n      if (targetType === TARGET_FIRST) {\n        const { leaves: entryLeaves } = branch[lastIndex];\n        const [entryNode] = entryNodes;\n        let [refNode] = this._findNodeWalker(entryLeaves, entryNode, {\n          targetType\n        });\n        while (refNode) {\n          const matchedNode = this._matchNodePrev(branch, refNode, {\n            index: lastIndex - 1\n          });\n          if (matchedNode) {\n            return refNode;\n          }\n          [refNode] = this._findNodeWalker(entryLeaves, refNode, {\n            targetType,\n            force: true\n          });\n        }\n      }\n    }\n    return null;\n  };\n  /**\n   * Finds matched nodes.\n   * @param {string} targetType - The target type.\n   * @returns {Set.<object>} A collection of matched nodes.\n   */\n  find = (targetType) => {\n    const [[...branches], collectedNodes] = this._collectNodes(targetType);\n    const l = branches.length;\n    let sort = l > 1 && targetType === TARGET_ALL && this.#selector.includes(\":scope\");\n    let nodes = /* @__PURE__ */ new Set();\n    for (let i = 0; i < l; i++) {\n      const { branch, dir, find: find3 } = branches[i];\n      if (!branch.length || !find3) {\n        continue;\n      }\n      const entryNodes = collectedNodes[i];\n      const lastIndex = branch.length - 1;\n      if (lastIndex === 0) {\n        if ((targetType === TARGET_ALL || targetType === TARGET_FIRST) && this.#node.nodeType === ELEMENT_NODE) {\n          for (const node of entryNodes) {\n            if (node !== this.#node && this.#node.contains(node)) {\n              nodes.add(node);\n              if (targetType === TARGET_FIRST) {\n                break;\n              }\n            }\n          }\n        } else if (targetType === TARGET_ALL) {\n          if (nodes.size) {\n            for (const node of entryNodes) {\n              nodes.add(node);\n            }\n            sort = true;\n          } else {\n            nodes = new Set(entryNodes);\n          }\n        } else {\n          if (entryNodes.length) {\n            nodes.add(entryNodes[0]);\n          }\n        }\n      } else {\n        if (targetType === TARGET_ALL) {\n          const newNodes = this._processComplexBranchAll(\n            branch,\n            entryNodes,\n            dir\n          );\n          if (nodes.size) {\n            for (const newNode of newNodes) {\n              nodes.add(newNode);\n            }\n            sort = true;\n          } else {\n            nodes = newNodes;\n          }\n        } else {\n          const matchedNode = this._processComplexBranchFirst(\n            branch,\n            entryNodes,\n            dir,\n            targetType\n          );\n          if (matchedNode) {\n            nodes.add(matchedNode);\n          }\n        }\n      }\n    }\n    if (this.#check) {\n      const match = !!nodes.size;\n      let pseudoElement;\n      if (this.#pseudoElement.length) {\n        pseudoElement = this.#pseudoElement.join(\"\");\n      } else {\n        pseudoElement = null;\n      }\n      return {\n        match,\n        pseudoElement,\n        ast: this.#selectorAST\n      };\n    }\n    if (targetType === TARGET_FIRST || targetType === TARGET_ALL) {\n      nodes.delete(this.#node);\n    }\n    if ((sort || targetType === TARGET_FIRST) && nodes.size > 1) {\n      return new Set(sortNodes(nodes));\n    }\n    return nodes;\n  };\n  /**\n   * Gets AST for selector.\n   * @param {string} selector - The selector text.\n   * @returns {object} The AST for the selector.\n   */\n  getAST = (selector) => {\n    if (selector === this.#selector) {\n      return this.#selectorAST;\n    }\n    return parseSelector(selector);\n  };\n};\n\n// src/index.js\nvar MAX_CACHE = 1024;\nvar DOMSelector = class {\n  /* private fields */\n  #window;\n  #document;\n  #finder;\n  #idlUtils;\n  #nwsapi;\n  #cache;\n  /**\n   * Creates an instance of DOMSelector.\n   * @param {Window} window - The window object.\n   * @param {Document} document - The document object.\n   * @param {object} [opt] - Options.\n   */\n  constructor(window, document, opt = {}) {\n    const { idlUtils } = opt;\n    this.#window = window;\n    this.#document = document ?? window.document;\n    this.#finder = new Finder(window);\n    this.#idlUtils = idlUtils;\n    this.#nwsapi = initNwsapi(window, document);\n    this.#cache = new import_lru_cache.LRUCache({\n      max: MAX_CACHE\n    });\n  }\n  /**\n   * Clears the internal cache of finder results.\n   * @returns {void}\n   */\n  clear = () => {\n    this.#finder.clearResults(true);\n  };\n  /**\n   * Checks if an element matches a CSS selector.\n   * @param {string} selector - The CSS selector to check against.\n   * @param {Element} node - The element node to check.\n   * @param {object} [opt] - Optional parameters.\n   * @returns {CheckResult} An object containing the check result.\n   */\n  check = (selector, node, opt = {}) => {\n    if (!node?.nodeType) {\n      const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);\n      return this.#finder.onError(e, opt);\n    } else if (node.nodeType !== ELEMENT_NODE) {\n      const e = new this.#window.TypeError(`Unexpected node ${node.nodeName}`);\n      return this.#finder.onError(e, opt);\n    }\n    const document = node.ownerDocument;\n    if (document === this.#document && document.contentType === \"text/html\" && document.documentElement && node.parentNode) {\n      const cacheKey = `check_${selector}`;\n      let filterMatches = false;\n      if (this.#cache.has(cacheKey)) {\n        filterMatches = this.#cache.get(cacheKey);\n      } else {\n        filterMatches = filterSelector(selector, TARGET_SELF);\n        this.#cache.set(cacheKey, filterMatches);\n      }\n      if (filterMatches) {\n        try {\n          const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;\n          const match = this.#nwsapi.match(selector, n);\n          let ast = null;\n          if (match) {\n            const astCacheKey = `check_ast_${selector}`;\n            if (this.#cache.has(astCacheKey)) {\n              ast = this.#cache.get(astCacheKey);\n            } else {\n              ast = this.#finder.getAST(selector);\n              this.#cache.set(astCacheKey, ast);\n            }\n          }\n          return {\n            match,\n            ast,\n            pseudoElement: null\n          };\n        } catch (e) {\n        }\n      }\n    }\n    let res;\n    try {\n      if (this.#idlUtils) {\n        node = this.#idlUtils.wrapperForImpl(node);\n      }\n      opt.check = true;\n      opt.noexept = true;\n      opt.warn = false;\n      this.#finder.setup(selector, node, opt);\n      res = this.#finder.find(TARGET_SELF);\n    } catch (e) {\n      this.#finder.onError(e, opt);\n    }\n    return res;\n  };\n  /**\n   * Returns true if the element matches the selector.\n   * @param {string} selector - The CSS selector to match against.\n   * @param {Element} node - The element node to test.\n   * @param {object} [opt] - Optional parameters.\n   * @returns {boolean} `true` if the element matches, or `false` otherwise.\n   */\n  matches = (selector, node, opt = {}) => {\n    if (!node?.nodeType) {\n      const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);\n      return this.#finder.onError(e, opt);\n    } else if (node.nodeType !== ELEMENT_NODE) {\n      const e = new this.#window.TypeError(`Unexpected node ${node.nodeName}`);\n      return this.#finder.onError(e, opt);\n    }\n    const document = node.ownerDocument;\n    if (document === this.#document && document.contentType === \"text/html\" && document.documentElement && node.parentNode) {\n      const cacheKey = `matches_${selector}`;\n      let filterMatches = false;\n      if (this.#cache.has(cacheKey)) {\n        filterMatches = this.#cache.get(cacheKey);\n      } else {\n        filterMatches = filterSelector(selector, TARGET_SELF);\n        this.#cache.set(cacheKey, filterMatches);\n      }\n      if (filterMatches) {\n        try {\n          const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;\n          const res2 = this.#nwsapi.match(selector, n);\n          return res2;\n        } catch (e) {\n        }\n      }\n    }\n    let res;\n    try {\n      if (this.#idlUtils) {\n        node = this.#idlUtils.wrapperForImpl(node);\n      }\n      this.#finder.setup(selector, node, opt);\n      const nodes = this.#finder.find(TARGET_SELF);\n      res = nodes.size;\n    } catch (e) {\n      this.#finder.onError(e, opt);\n    }\n    return !!res;\n  };\n  /**\n   * Traverses up the DOM tree to find the first node that matches the selector.\n   * @param {string} selector - The CSS selector to match against.\n   * @param {Element} node - The element from which to start traversing.\n   * @param {object} [opt] - Optional parameters.\n   * @returns {?Element} The first matching ancestor element, or `null`.\n   */\n  closest = (selector, node, opt = {}) => {\n    if (!node?.nodeType) {\n      const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);\n      return this.#finder.onError(e, opt);\n    } else if (node.nodeType !== ELEMENT_NODE) {\n      const e = new this.#window.TypeError(`Unexpected node ${node.nodeName}`);\n      return this.#finder.onError(e, opt);\n    }\n    const document = node.ownerDocument;\n    if (document === this.#document && document.contentType === \"text/html\" && document.documentElement && node.parentNode) {\n      const cacheKey = `closest_${selector}`;\n      let filterMatches = false;\n      if (this.#cache.has(cacheKey)) {\n        filterMatches = this.#cache.get(cacheKey);\n      } else {\n        filterMatches = filterSelector(selector, TARGET_LINEAL);\n        this.#cache.set(cacheKey, filterMatches);\n      }\n      if (filterMatches) {\n        try {\n          const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;\n          const res2 = this.#nwsapi.closest(selector, n);\n          return res2;\n        } catch (e) {\n        }\n      }\n    }\n    let res;\n    try {\n      if (this.#idlUtils) {\n        node = this.#idlUtils.wrapperForImpl(node);\n      }\n      this.#finder.setup(selector, node, opt);\n      const nodes = this.#finder.find(TARGET_LINEAL);\n      if (nodes.size) {\n        let refNode = node;\n        while (refNode) {\n          if (nodes.has(refNode)) {\n            res = refNode;\n            break;\n          }\n          refNode = refNode.parentNode;\n        }\n      }\n    } catch (e) {\n      this.#finder.onError(e, opt);\n    }\n    return res ?? null;\n  };\n  /**\n   * Returns the first element within the subtree that matches the selector.\n   * @param {string} selector - The CSS selector to match.\n   * @param {Document|DocumentFragment|Element} node - The node to find within.\n   * @param {object} [opt] - Optional parameters.\n   * @returns {?Element} The first matching element, or `null`.\n   */\n  querySelector = (selector, node, opt = {}) => {\n    if (!node?.nodeType) {\n      const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);\n      return this.#finder.onError(e, opt);\n    }\n    let res;\n    try {\n      if (this.#idlUtils) {\n        node = this.#idlUtils.wrapperForImpl(node);\n      }\n      this.#finder.setup(selector, node, opt);\n      const nodes = this.#finder.find(TARGET_FIRST);\n      if (nodes.size) {\n        [res] = [...nodes];\n      }\n    } catch (e) {\n      this.#finder.onError(e, opt);\n    }\n    return res ?? null;\n  };\n  /**\n   * Returns an array of elements within the subtree that match the selector.\n   * Note: This method returns an Array, not a NodeList.\n   * @param {string} selector - The CSS selector to match.\n   * @param {Document|DocumentFragment|Element} node - The node to find within.\n   * @param {object} [opt] - Optional parameters.\n   * @returns {Array<Element>} An array of elements, or an empty array.\n   */\n  querySelectorAll = (selector, node, opt = {}) => {\n    if (!node?.nodeType) {\n      const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);\n      return this.#finder.onError(e, opt);\n    }\n    const document = node.nodeType === DOCUMENT_NODE ? node : node.ownerDocument;\n    if (document === this.#document && document.contentType === \"text/html\" && document.documentElement && (node.nodeType !== DOCUMENT_FRAGMENT_NODE || !node.host)) {\n      const cacheKey = `querySelectorAll_${selector}`;\n      let filterMatches = false;\n      if (this.#cache.has(cacheKey)) {\n        filterMatches = this.#cache.get(cacheKey);\n      } else {\n        filterMatches = filterSelector(selector, TARGET_ALL);\n        this.#cache.set(cacheKey, filterMatches);\n      }\n      if (filterMatches) {\n        try {\n          const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;\n          const res2 = this.#nwsapi.select(selector, n);\n          return res2;\n        } catch (e) {\n        }\n      }\n    }\n    let res;\n    try {\n      if (this.#idlUtils) {\n        node = this.#idlUtils.wrapperForImpl(node);\n      }\n      this.#finder.setup(selector, node, opt);\n      const nodes = this.#finder.find(TARGET_ALL);\n      if (nodes.size) {\n        res = [...nodes];\n      }\n    } catch (e) {\n      this.#finder.onError(e, opt);\n    }\n    return res ?? [];\n  };\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  DOMSelector\n});\n/*!\n * DOM Selector - A CSS selector engine.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/domSelector/blob/main/LICENSE}\n */\n//# sourceMappingURL=index.cjs.map","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\n\nexports.implementation = class StyleSheetList {\n  constructor() {\n    this._list = [];\n  }\n\n  get length() {\n    return this._list.length;\n  }\n\n  item(index) {\n    const result = this._list[index];\n    return result !== undefined ? result : null;\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    return this._list.keys();\n  }\n\n  _add(sheet) {\n    const { _list } = this;\n    if (!_list.includes(sheet)) {\n      _list.push(sheet);\n    }\n  }\n\n  _remove(sheet) {\n    const { _list } = this;\n\n    const index = _list.indexOf(sheet);\n    if (index >= 0) {\n      _list.splice(index, 1);\n    }\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"StyleSheetList\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'StyleSheetList'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"StyleSheetList\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class StyleSheetList {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of StyleSheetList.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'StyleSheetList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'StyleSheetList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of StyleSheetList.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(StyleSheetList.prototype, {\n    item: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"StyleSheetList\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = StyleSheetList;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: StyleSheetList\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/cssom/StyleSheetList-impl.js\");\n","\"use strict\";\nconst { domSymbolTree } = require(\"./internal-constants\");\nconst { CDATA_SECTION_NODE, TEXT_NODE } = require(\"../node-type\");\n\n//\n// https://dom.spec.whatwg.org/#concept-child-text-content\n//\nexports.childTextContent = node => {\n  let result = \"\";\n  const iterator = domSymbolTree.childrenIterator(node);\n  for (const child of iterator) {\n    if (child.nodeType === TEXT_NODE ||\n        // The CDataSection extends Text.\n        child.nodeType === CDATA_SECTION_NODE) {\n      result += child.data;\n    }\n  }\n  return result;\n};\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { serializeURL } = require(\"whatwg-url\");\n\n// https://html.spec.whatwg.org/#history-3\nexports.implementation = class HistoryImpl {\n  constructor(globalObject, args, privateData) {\n    this._window = privateData.window;\n    this._document = privateData.document;\n    this._actAsIfLocationReloadCalled = privateData.actAsIfLocationReloadCalled;\n    this._state = null;\n\n    this._globalObject = globalObject;\n  }\n\n  _guardAgainstInactiveDocuments() {\n    if (!this._window) {\n      throw DOMException.create(this._globalObject, [\n        \"History object is associated with a document that is not fully active.\",\n        \"SecurityError\"\n      ]);\n    }\n  }\n\n  get length() {\n    this._guardAgainstInactiveDocuments();\n\n    return this._window._sessionHistory.length;\n  }\n\n  get state() {\n    this._guardAgainstInactiveDocuments();\n\n    return this._state;\n  }\n\n  go(delta) {\n    this._guardAgainstInactiveDocuments();\n\n    if (delta === 0) {\n      // When the go(delta) method is invoked, if delta is zero, the user agent must act as\n      // if the location.reload() method was called instead.\n      this._actAsIfLocationReloadCalled();\n    } else {\n      // Otherwise, the user agent must traverse the history by a delta whose value is delta\n      this._window._sessionHistory.traverseByDelta(delta);\n    }\n  }\n\n  back() {\n    this.go(-1);\n  }\n\n  forward() {\n    this.go(+1);\n  }\n\n  pushState(data, unused, url) {\n    this._sharedPushAndReplaceState(data, url, \"push\");\n  }\n  replaceState(data, unused, url) {\n    this._sharedPushAndReplaceState(data, url, \"replace\");\n  }\n\n  // https://html.spec.whatwg.org/#shared-history-push/replace-state-steps\n  _sharedPushAndReplaceState(data, url, historyHandling) {\n    this._guardAgainstInactiveDocuments();\n\n    // TODO structured clone data\n\n    let newURL = this._document._URL;\n    if (url !== null && url.length > 0) {\n      newURL = this._document.encodingParseAURL(url);\n\n      if (newURL === null) {\n        throw DOMException.create(this._globalObject, [\n          `Could not parse url argument \"${url}\" to ${historyHandling}State() against base URL ` +\n          `\"${this._document.baseURLSerialized()}\".`,\n          \"SecurityError\"\n        ]);\n      }\n\n      if (!canHaveItsURLRewritten(this._document, newURL)) {\n        throw DOMException.create(this._globalObject, [\n          `${historyHandling}State() cannot update history to the URL ${serializeURL(newURL)}.`,\n          \"SecurityError\"\n        ]);\n      }\n    }\n\n    // What follows is very unlike the spec's URL and history update steps. Maybe if we implement real session\n    // history/navigation, we can fix that.\n\n    if (historyHandling === \"push\") {\n      this._window._sessionHistory.removeAllEntriesAfterCurrentEntry();\n\n      this._window._sessionHistory.clearHistoryTraversalTasks();\n\n      const newEntry = {\n        document: this._document,\n        stateObject: data,\n        url: newURL\n      };\n      this._window._sessionHistory.addEntryAfterCurrentEntry(newEntry);\n      this._window._sessionHistory.updateCurrentEntry(newEntry);\n    } else {\n      const { currentEntry } = this._window._sessionHistory;\n      currentEntry.stateObject = data;\n      currentEntry.url = newURL;\n    }\n\n    // TODO: If the current entry in the session history represents a non-GET request\n    // (e.g. it was the result of a POST submission) then update it to instead represent\n    // a GET request.\n\n    this._document._URL = newURL;\n    this._document._clearBaseURLCache();\n\n    // arguably it's a bit odd that the state and latestEntry do not belong to the SessionHistory\n    // but the spec gives them to \"History\" and \"Document\" respecively.\n    this._state = data; // TODO clone again!! O_o\n    this._document._latestEntry = this._window._sessionHistory.currentEntry;\n  }\n};\n\nfunction canHaveItsURLRewritten(document, targetURL) {\n  const documentURL = document._URL;\n\n  if (targetURL.scheme !== documentURL.scheme || targetURL.username !== documentURL.username ||\n      targetURL.password !== documentURL.password || targetURL.host !== documentURL.host ||\n      targetURL.port !== documentURL.port) {\n    return false;\n  }\n\n  if (targetURL.scheme === \"https\" || targetURL.scheme === \"http\") {\n    return true;\n  }\n\n  if (targetURL.scheme === \"file\" && targetURL.path !== documentURL.path) {\n    return false;\n  }\n\n  if (targetURL.path.join(\"/\") !== documentURL.path.join(\"/\") || targetURL.query !== documentURL.query) {\n    return false;\n  }\n\n  return true;\n}\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"History\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'History'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"History\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class History {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    go() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'go' called on an object that is not a valid instance of History.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'go' on 'History': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].go(...args);\n    }\n\n    back() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'back' called on an object that is not a valid instance of History.\");\n      }\n\n      return esValue[implSymbol].back();\n    }\n\n    forward() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'forward' called on an object that is not a valid instance of History.\");\n      }\n\n      return esValue[implSymbol].forward();\n    }\n\n    pushState(data, title) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'pushState' called on an object that is not a valid instance of History.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'pushState' on 'History': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"any\"](curArg, {\n          context: \"Failed to execute 'pushState' on 'History': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'pushState' on 'History': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'pushState' on 'History': parameter 3\",\n              globals: globalObject\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].pushState(...args);\n    }\n\n    replaceState(data, title) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'replaceState' called on an object that is not a valid instance of History.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'replaceState' on 'History': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"any\"](curArg, {\n          context: \"Failed to execute 'replaceState' on 'History': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'replaceState' on 'History': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'replaceState' on 'History': parameter 3\",\n              globals: globalObject\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].replaceState(...args);\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get length' called on an object that is not a valid instance of History.\");\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n\n    get state() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get state' called on an object that is not a valid instance of History.\");\n      }\n\n      return esValue[implSymbol][\"state\"];\n    }\n  }\n  Object.defineProperties(History.prototype, {\n    go: { enumerable: true },\n    back: { enumerable: true },\n    forward: { enumerable: true },\n    pushState: { enumerable: true },\n    replaceState: { enumerable: true },\n    length: { enumerable: true },\n    state: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"History\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = History;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: History\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/window/History-impl.js\");\n","\"use strict\";\n// Small wrapper around Node.js's native `TextEncoder`/`TextDecoder`to expose functions with names matching the\n// Encoding Standard, so it's more obvious what to use when implementing specs. See also discussion at\n// https://github.com/ExodusOSS/bytes/issues/17.\n//\n// Note that we could also use `@exodus/bytes` instead of Node.js's native `TextEncoder`/`TextDecoder`. This could give\n// benefits on non-Node.js environments. But, on Node.js, `@exodus/bytes` just delegates to the native classes, plus\n// adds some extra type checks that we don't want. Per the discussion above, it fixes some bugs, but they are not\n// relevant for our use cases.\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder(\"utf-8\", { ignoreBOM: false, fatal: false });\nconst decoderWithoutBOM = new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: false });\nconst decoderWithoutBOMOrFail = new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true });\n\n/**\n * Implements the <https://encoding.spec.whatwg.org/#utf-8-decode> algorithm. If there are three preceding BOM bytes,\n * they are discarded, and any lone surrogates become U+FFFD.\n *\n * @param {Uint8Array} bytes - The bytes to decode.\n * @returns {string} - The decoded string.\n */\nexports.utf8Decode = bytes => {\n  return decoder.decode(bytes);\n};\n\n/**\n * Implements the <https://encoding.spec.whatwg.org/#utf-8-decode-without-bom> algorithm. If there are three preceding\n * BOM bytes, they become U+FEFF, and any lone surrogates become U+FFFD.\n *\n * @param {Uint8Array} bytes - The bytes to decode.\n * @returns {string} - The decoded string.\n */\nexports.utf8DecodeWithoutBOM = bytes => {\n  return decoderWithoutBOM.decode(bytes);\n};\n\n/**\n * Implements the <https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail> algorithm. If there are three\n * preceding BOM bytes, they become U+FEFF, and any lone surrogates cause an exception.\n *\n * @param {Uint8Array} bytes - The bytes to decode.\n * @returns {string} - The decoded string.\n */\nexports.utf8DecodeWithoutBOMOrFail = bytes => {\n  return decoderWithoutBOMOrFail.decode(bytes);\n};\n\n/**\n * Implements the <https://encoding.spec.whatwg.org/#utf-8-decode> algorithm, but also bundles in `USVString` conversion\n * (i.e. lone surrogates become 0xEF 0xBF 0xBD).\n *\n * @param {string} string - A string, possibly containing lone surrogates. If the string contains no lone surrogates,\n * then this behaves as the spec algorithm. Otherwise, it behaves as the composition of the spec algorithm and\n * `USVString` conversion.\n * @returns {Uint8Array} - The UTF-8 encoded bytes of the input string.\n */\nexports.utf8Encode = string => {\n  return encoder.encode(string);\n};\n","\"use strict\";\nconst whatwgURL = require(\"whatwg-url\");\nconst { notImplemented } = require(\"../../browser/not-implemented.js\");\nconst reportException = require(\"../helpers/runtime-script-errors.js\");\nconst { utf8Decode } = require(\"../helpers/encoding.js\");\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\n\n// https://html.spec.whatwg.org/#evaluate-a-javascript:-url, kind of\nexports.evaluateJavaScriptURL = (window, urlRecord) => {\n  const urlString = whatwgURL.serializeURL(urlRecord);\n  const encodedScriptSource = urlString.substring(\"javascript:\".length);\n  const scriptSource = utf8Decode(whatwgURL.percentDecodeString(encodedScriptSource));\n  if (window._runScripts === \"dangerously\") {\n    try {\n      return window.eval(scriptSource);\n    } catch (e) {\n      reportException(window, e, urlString);\n    }\n  }\n  return undefined;\n};\n\n// https://html.spec.whatwg.org/#navigating-across-documents\nexports.navigate = (window, newURL, flags) => {\n  // This is NOT a spec-compliant implementation of navigation in any way. It implements a few selective steps that\n  // are nice for jsdom users, regarding hash changes and JavaScript URLs. Full navigation support is being worked on\n  // and will likely require some additional hooks to be implemented.\n  if (!window._document) {\n    return;\n  }\n\n  const document = idlUtils.implForWrapper(window._document);\n  const currentURL = document._URL;\n\n  if (!flags.reloadTriggered && urlEquals(currentURL, newURL, { excludeFragments: true })) {\n    if (newURL.fragment !== currentURL.fragment) {\n      navigateToFragment(window, newURL, flags);\n    }\n    return;\n  }\n\n  // NOT IMPLEMENTED: Prompt to unload the active document of browsingContext.\n\n  // NOT IMPLEMENTED: form submission algorithm\n  // const navigationType = 'other';\n\n  // NOT IMPLEMENTED: if resource is a response...\n  if (newURL.scheme === \"javascript\") {\n    setTimeout(() => {\n      const result = exports.evaluateJavaScriptURL(window, newURL);\n      if (typeof result === \"string\") {\n        notImplemented(window, \"string results from 'javascript:' URLs\");\n      }\n    }, 0);\n    return;\n  }\n  navigateFetch(window);\n};\n\n// https://html.spec.whatwg.org/#scroll-to-fragid\nfunction navigateToFragment(window, newURL, flags) {\n  const document = idlUtils.implForWrapper(window._document);\n\n  window._sessionHistory.clearHistoryTraversalTasks();\n\n  if (!flags.replacement) {\n    // handling replacement=true here deviates from spec, but matches real browser behaviour\n    // see https://github.com/whatwg/html/issues/2796 for spec bug\n    window._sessionHistory.removeAllEntriesAfterCurrentEntry();\n  }\n  const newEntry = { document, url: newURL };\n  window._sessionHistory.addEntryAfterCurrentEntry(newEntry);\n  window._sessionHistory.traverseHistory(newEntry, { nonBlockingEvents: true, replacement: flags.replacement });\n}\n\n// https://html.spec.whatwg.org/#process-a-navigate-fetch\nfunction navigateFetch(window) {\n  // TODO:\n  notImplemented(window, \"navigation to another Document\");\n}\n\n// https://url.spec.whatwg.org/#concept-url-equals\nfunction urlEquals(a, b, flags) {\n  const serializedA = whatwgURL.serializeURL(a, flags.excludeFragments);\n  const serializedB = whatwgURL.serializeURL(b, flags.excludeFragments);\n  return serializedA === serializedB;\n}\n","\"use strict\";\nconst whatwgURL = require(\"whatwg-url\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { navigate } = require(\"./navigation\");\n\n// Not implemented: use of entry settings object's API base URL in href setter, assign, and replace. Instead we just\n// use the document base URL. The difference matters in the case of cross-frame calls.\n\nexports.implementation = class LocationImpl {\n  constructor(globalObject, args, privateData) {\n    this._relevantDocument = privateData.relevantDocument;\n    this.url = null;\n\n    this._globalObject = globalObject;\n  }\n\n  get _url() {\n    return this._relevantDocument._URL;\n  }\n\n  _locationObjectSetterNavigate(url) {\n    // Not implemented: extra steps here to determine replacement flag.\n\n    return this._locationObjectNavigate(url);\n  }\n\n  _locationObjectNavigate(url, { replacement = false } = {}) {\n    // Not implemented: the setup for calling navigate, which doesn't apply to our stub navigate anyway.\n\n    navigate(this._relevantDocument._defaultView, url, { replacement, exceptionsEnabled: true });\n  }\n\n  toString() {\n    return this.href;\n  }\n\n  get href() {\n    return whatwgURL.serializeURL(this._url);\n  }\n  set href(v) {\n    const newURL = whatwgURL.parseURL(v, { baseURL: this._relevantDocument.baseURL() });\n    if (newURL === null) {\n      throw new TypeError(`Could not parse \"${v}\" as a URL`);\n    }\n\n    this._locationObjectSetterNavigate(newURL);\n  }\n\n  get origin() {\n    return whatwgURL.serializeURLOrigin(this._url);\n  }\n\n  get protocol() {\n    return this._url.scheme + \":\";\n  }\n  set protocol(v) {\n    const copyURL = { ...this._url };\n\n    const possibleFailure = whatwgURL.basicURLParse(v + \":\", { url: copyURL, stateOverride: \"scheme start\" });\n    if (possibleFailure === null) {\n      throw new TypeError(`Could not parse the URL after setting the procol to \"${v}\"`);\n    }\n\n    if (copyURL.scheme !== \"http\" && copyURL.scheme !== \"https\") {\n      return;\n    }\n\n    this._locationObjectSetterNavigate(copyURL);\n  }\n\n  get host() {\n    const url = this._url;\n\n    if (url.host === null) {\n      return \"\";\n    }\n    if (url.port === null) {\n      return whatwgURL.serializeHost(url.host);\n    }\n\n    return whatwgURL.serializeHost(url.host) + \":\" + whatwgURL.serializeInteger(url.port);\n  }\n  set host(v) {\n    const copyURL = { ...this._url };\n\n    if (whatwgURL.hasAnOpaquePath(copyURL)) {\n      return;\n    }\n\n    whatwgURL.basicURLParse(v, { url: copyURL, stateOverride: \"host\" });\n\n    this._locationObjectSetterNavigate(copyURL);\n  }\n\n  get hostname() {\n    if (this._url.host === null) {\n      return \"\";\n    }\n\n    return whatwgURL.serializeHost(this._url.host);\n  }\n  set hostname(v) {\n    const copyURL = { ...this._url };\n\n    if (whatwgURL.hasAnOpaquePath(copyURL)) {\n      return;\n    }\n\n    whatwgURL.basicURLParse(v, { url: copyURL, stateOverride: \"hostname\" });\n\n    this._locationObjectSetterNavigate(copyURL);\n  }\n\n  get port() {\n    if (this._url.port === null) {\n      return \"\";\n    }\n\n    return whatwgURL.serializeInteger(this._url.port);\n  }\n  set port(v) {\n    const copyURL = { ...this._url };\n\n    if (whatwgURL.cannotHaveAUsernamePasswordPort(copyURL)) {\n      return;\n    }\n\n    whatwgURL.basicURLParse(v, { url: copyURL, stateOverride: \"port\" });\n\n    this._locationObjectSetterNavigate(copyURL);\n  }\n\n  get pathname() {\n    return whatwgURL.serializePath(this._url);\n  }\n  set pathname(v) {\n    const copyURL = { ...this._url };\n\n    if (whatwgURL.hasAnOpaquePath(copyURL)) {\n      return;\n    }\n\n    copyURL.path = [];\n    whatwgURL.basicURLParse(v, { url: copyURL, stateOverride: \"path start\" });\n\n    this._locationObjectSetterNavigate(copyURL);\n  }\n\n  get search() {\n    if (this._url.query === null || this._url.query === \"\") {\n      return \"\";\n    }\n\n    return \"?\" + this._url.query;\n  }\n  set search(v) {\n    const copyURL = { ...this._url };\n\n    if (v === \"\") {\n      copyURL.query = null;\n    } else {\n      const input = v[0] === \"?\" ? v.substring(1) : v;\n      copyURL.query = \"\";\n      whatwgURL.basicURLParse(input, {\n        url: copyURL,\n        stateOverride: \"query\",\n        encodingOverride: this._relevantDocument.charset\n      });\n    }\n\n    this._locationObjectSetterNavigate(copyURL);\n  }\n\n  get hash() {\n    if (this._url.fragment === null || this._url.fragment === \"\") {\n      return \"\";\n    }\n\n    return \"#\" + this._url.fragment;\n  }\n  set hash(v) {\n    const copyURL = { ...this._url };\n\n    const input = v[0] === \"#\" ? v.substring(1) : v;\n    copyURL.fragment = \"\";\n    whatwgURL.basicURLParse(input, { url: copyURL, stateOverride: \"fragment\" });\n\n    if (copyURL.fragment === this._url.fragment) {\n      return;\n    }\n\n    this._locationObjectSetterNavigate(copyURL);\n  }\n\n  assign(url) {\n    // Should be entry settings object; oh well\n    const parsedURL = this._relevantDocument.encodingParseAURL(url);\n\n    if (parsedURL === null) {\n      throw DOMException.create(this._globalObject, [\n        `Could not resolve the given string \"${url}\" relative to the base URL \"${this._relevantDocument.URL}\"`,\n        \"SyntaxError\"\n      ]);\n    }\n\n    this._locationObjectNavigate(parsedURL);\n  }\n\n  replace(url) {\n    // Should be entry settings object; oh well\n    const parsedURL = this._relevantDocument.encodingParseAURL(url);\n\n    if (parsedURL === null) {\n      throw DOMException.create(this._globalObject, [\n        `Could not resolve the given string \"${url}\" relative to the base URL \"${this._relevantDocument.URL}\"`,\n        \"SyntaxError\"\n      ]);\n    }\n\n    this._locationObjectNavigate(parsedURL, { replacement: true });\n  }\n\n  reload() {\n    const flags = { replace: true, reloadTriggered: true, exceptionsEnabled: true };\n    navigate(this._relevantDocument._defaultView, this._url, flags);\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Location\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Location'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Location\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nfunction getUnforgeables(globalObject) {\n  let unforgeables = unforgeablesMap.get(globalObject);\n  if (unforgeables === undefined) {\n    unforgeables = Object.create(null);\n    utils.define(unforgeables, {\n      assign(url) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'assign' called on an object that is not a valid instance of Location.\");\n        }\n\n        if (arguments.length < 1) {\n          throw new globalObject.TypeError(\n            `Failed to execute 'assign' on 'Location': 1 argument required, but only ${arguments.length} present.`\n          );\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'assign' on 'Location': parameter 1\",\n            globals: globalObject\n          });\n          args.push(curArg);\n        }\n        return esValue[implSymbol].assign(...args);\n      },\n      replace(url) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'replace' called on an object that is not a valid instance of Location.\");\n        }\n\n        if (arguments.length < 1) {\n          throw new globalObject.TypeError(\n            `Failed to execute 'replace' on 'Location': 1 argument required, but only ${arguments.length} present.`\n          );\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'replace' on 'Location': parameter 1\",\n            globals: globalObject\n          });\n          args.push(curArg);\n        }\n        return esValue[implSymbol].replace(...args);\n      },\n      reload() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'reload' called on an object that is not a valid instance of Location.\");\n        }\n\n        return esValue[implSymbol].reload();\n      },\n      get href() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'get href' called on an object that is not a valid instance of Location.\");\n        }\n\n        return esValue[implSymbol][\"href\"];\n      },\n      set href(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'set href' called on an object that is not a valid instance of Location.\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'href' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"href\"] = V;\n      },\n      toString() {\n        const esValue = this;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'toString' called on an object that is not a valid instance of Location.\");\n        }\n\n        return esValue[implSymbol][\"href\"];\n      },\n      get origin() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'get origin' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        return esValue[implSymbol][\"origin\"];\n      },\n      get protocol() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'get protocol' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        return esValue[implSymbol][\"protocol\"];\n      },\n      set protocol(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'set protocol' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'protocol' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"protocol\"] = V;\n      },\n      get host() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'get host' called on an object that is not a valid instance of Location.\");\n        }\n\n        return esValue[implSymbol][\"host\"];\n      },\n      set host(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'set host' called on an object that is not a valid instance of Location.\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'host' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"host\"] = V;\n      },\n      get hostname() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'get hostname' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        return esValue[implSymbol][\"hostname\"];\n      },\n      set hostname(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'set hostname' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'hostname' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"hostname\"] = V;\n      },\n      get port() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'get port' called on an object that is not a valid instance of Location.\");\n        }\n\n        return esValue[implSymbol][\"port\"];\n      },\n      set port(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'set port' called on an object that is not a valid instance of Location.\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'port' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"port\"] = V;\n      },\n      get pathname() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'get pathname' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        return esValue[implSymbol][\"pathname\"];\n      },\n      set pathname(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'set pathname' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'pathname' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"pathname\"] = V;\n      },\n      get search() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'get search' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        return esValue[implSymbol][\"search\"];\n      },\n      set search(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'set search' called on an object that is not a valid instance of Location.\"\n          );\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'search' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"search\"] = V;\n      },\n      get hash() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'get hash' called on an object that is not a valid instance of Location.\");\n        }\n\n        return esValue[implSymbol][\"hash\"];\n      },\n      set hash(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'set hash' called on an object that is not a valid instance of Location.\");\n        }\n\n        V = conversions[\"USVString\"](V, {\n          context: \"Failed to set the 'hash' property on 'Location': The provided value\",\n          globals: globalObject\n        });\n\n        esValue[implSymbol][\"hash\"] = V;\n      }\n    });\n    Object.defineProperties(unforgeables, {\n      assign: { configurable: false, writable: false },\n      replace: { configurable: false, writable: false },\n      reload: { configurable: false, writable: false },\n      href: { configurable: false },\n      toString: { configurable: false, writable: false },\n      origin: { configurable: false },\n      protocol: { configurable: false },\n      host: { configurable: false },\n      hostname: { configurable: false },\n      port: { configurable: false },\n      pathname: { configurable: false },\n      search: { configurable: false },\n      hash: { configurable: false }\n    });\n    unforgeablesMap.set(globalObject, unforgeables);\n  }\n  return unforgeables;\n}\n\nexports._internalSetup = (wrapper, globalObject) => {\n  utils.define(wrapper, getUnforgeables(globalObject));\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst unforgeablesMap = new WeakMap();\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Location {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(Location.prototype, { [Symbol.toStringTag]: { value: \"Location\", configurable: true } });\n  ctorRegistry[interfaceName] = Location;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Location\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/window/Location-impl.js\");\n","\"use strict\";\n\n// An iterable WeakSet implementation inspired by the iterable WeakMap example code in the WeakRefs specification:\n// https://github.com/tc39/proposal-weakrefs#iterable-weakmaps\nmodule.exports = class IterableWeakSet {\n  constructor() {\n    this._refSet = new Set();\n    this._refMap = new WeakMap();\n    this._finalizationRegistry = new FinalizationRegistry(({ ref, set }) => set.delete(ref));\n  }\n\n  add(value) {\n    if (!this._refMap.has(value)) {\n      const ref = new WeakRef(value);\n      this._refMap.set(value, ref);\n      this._refSet.add(ref);\n      this._finalizationRegistry.register(value, { ref, set: this._refSet }, ref);\n    }\n\n    return this;\n  }\n\n  delete(value) {\n    const ref = this._refMap.get(value);\n    if (!ref) {\n      return false;\n    }\n\n    this._refMap.delete(value);\n    this._refSet.delete(ref);\n    this._finalizationRegistry.unregister(ref);\n    return true;\n  }\n\n  has(value) {\n    return this._refMap.has(value);\n  }\n\n  * [Symbol.iterator]() {\n    for (const ref of this._refSet) {\n      const value = ref.deref();\n      if (value === undefined) {\n        continue;\n      }\n      yield value;\n    }\n  }\n};\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst conversions = require(\"webidl-conversions\");\n\nexports.FILTER_ACCEPT = 1; // NodeFilter.FILTER_ACCEPT\nexports.FILTER_REJECT = 2; // NodeFilter.FILTER_REJECT\nexports.FILTER_SKIP = 3; // NodeFilter.FILTER_SKIP\n\nexports.filter = (nodeIteratorOrTreeWalkerImpl, nodeImpl) => {\n  if (nodeIteratorOrTreeWalkerImpl._active) {\n    throw DOMException.create(nodeIteratorOrTreeWalkerImpl._globalObject, [\n      \"Recursive node filtering\",\n      \"InvalidStateError\"\n    ]);\n  }\n\n  const n = nodeImpl.nodeType - 1;\n\n  if (!((1 << n) & nodeIteratorOrTreeWalkerImpl.whatToShow)) {\n    return exports.FILTER_SKIP;\n  }\n\n  // Saving in a variable is important so we don't accidentally call it as a method later.\n  const { filter } = nodeIteratorOrTreeWalkerImpl;\n\n  if (filter === null) {\n    return exports.FILTER_ACCEPT;\n  }\n\n  nodeIteratorOrTreeWalkerImpl._active = true;\n\n  let result;\n\n  // https://github.com/whatwg/dom/issues/494\n  try {\n    result = filter(nodeImpl);\n  } finally {\n    nodeIteratorOrTreeWalkerImpl._active = false;\n  }\n\n  result = conversions[\"unsigned short\"](result);\n\n  return result;\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { filter, FILTER_ACCEPT, FILTER_REJECT, FILTER_SKIP } = require(\"./helpers\");\n\nconst FIRST = false;\nconst LAST = true;\nconst NEXT = false;\nconst PREVIOUS = true;\n\nexports.implementation = class TreeWalkerImpl {\n  constructor(globalObject, args, privateData) {\n    this._active = false;\n    this.root = privateData.root;\n    this.currentNode = this.root;\n    this.whatToShow = privateData.whatToShow;\n    this.filter = privateData.filter;\n\n    this._globalObject = globalObject;\n  }\n\n  get currentNode() {\n    return this._currentNode;\n  }\n\n  set currentNode(node) {\n    if (node === null) {\n      throw DOMException.create(this._globalObject, [\"Cannot set currentNode to null\", \"NotSupportedError\"]);\n    }\n\n    this._currentNode = node;\n  }\n\n  parentNode() {\n    let node = this._currentNode;\n    while (node !== null && node !== this.root) {\n      node = node.parentNode;\n\n      if (node !== null && filter(this, node) === FILTER_ACCEPT) {\n        return (this._currentNode = node);\n      }\n    }\n    return null;\n  }\n\n  firstChild() {\n    return this._traverseChildren(FIRST);\n  }\n\n  lastChild() {\n    return this._traverseChildren(LAST);\n  }\n\n  previousSibling() {\n    return this._traverseSiblings(PREVIOUS);\n  }\n\n  nextSibling() {\n    return this._traverseSiblings(NEXT);\n  }\n\n  previousNode() {\n    let node = this._currentNode;\n\n    while (node !== this.root) {\n      let sibling = node.previousSibling;\n\n      while (sibling !== null) {\n        node = sibling;\n        let result = filter(this, node);\n\n        while (result !== FILTER_REJECT && node.hasChildNodes()) {\n          node = node.lastChild;\n          result = filter(this, node);\n        }\n\n        if (result === FILTER_ACCEPT) {\n          return (this._currentNode = node);\n        }\n\n        sibling = node.previousSibling;\n      }\n\n      if (node === this.root || node.parentNode === null) {\n        return null;\n      }\n\n      node = node.parentNode;\n\n      if (filter(this, node) === FILTER_ACCEPT) {\n        return (this._currentNode = node);\n      }\n    }\n\n    return null;\n  }\n\n  nextNode() {\n    let node = this._currentNode;\n    let result = FILTER_ACCEPT;\n\n    for (;;) {\n      while (result !== FILTER_REJECT && node.hasChildNodes()) {\n        node = node.firstChild;\n        result = filter(this, node);\n        if (result === FILTER_ACCEPT) {\n          return (this._currentNode = node);\n        }\n      }\n\n      do {\n        if (node === this.root) {\n          return null;\n        }\n\n        const sibling = node.nextSibling;\n\n        if (sibling !== null) {\n          node = sibling;\n          break;\n        }\n\n        node = node.parentNode;\n      } while (node !== null);\n\n      if (node === null) {\n        return null;\n      }\n\n      result = filter(this, node);\n\n      if (result === FILTER_ACCEPT) {\n        return (this._currentNode = node);\n      }\n    }\n  }\n\n  _traverseChildren(type) {\n    let node = this._currentNode;\n    node = type === FIRST ? node.firstChild : node.lastChild;\n\n    if (node === null) {\n      return null;\n    }\n\n    main: for (;;) {\n      const result = filter(this, node);\n\n      if (result === FILTER_ACCEPT) {\n        return (this._currentNode = node);\n      }\n\n      if (result === FILTER_SKIP) {\n        const child = type === FIRST ? node.firstChild : node.lastChild;\n\n        if (child !== null) {\n          node = child;\n          continue;\n        }\n      }\n\n      for (;;) {\n        const sibling = type === FIRST ? node.nextSibling : node.previousSibling;\n\n        if (sibling !== null) {\n          node = sibling;\n          continue main;\n        }\n\n        const parent = node.parentNode;\n\n        if (parent === null || parent === this.root || parent === this._currentNode) {\n          return null;\n        }\n\n        node = parent;\n      }\n    }\n  }\n\n  _traverseSiblings(type) {\n    let node = this._currentNode;\n\n    if (node === this.root) {\n      return null;\n    }\n\n    for (;;) {\n      let sibling = type === NEXT ? node.nextSibling : node.previousSibling;\n\n      while (sibling !== null) {\n        node = sibling;\n        const result = filter(this, node);\n\n        if (result === FILTER_ACCEPT) {\n          return (this._currentNode = node);\n        }\n\n        sibling = type === NEXT ? node.firstChild : node.lastChild;\n\n        if (result === FILTER_REJECT || sibling === null) {\n          sibling = type === NEXT ? node.nextSibling : node.previousSibling;\n        }\n      }\n\n      node = node.parentNode;\n\n      if (node === null || node === this.root) {\n        return null;\n      }\n\n      if (filter(this, node) === FILTER_ACCEPT) {\n        return null;\n      }\n    }\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Node = require(\"./Node.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"TreeWalker\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'TreeWalker'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"TreeWalker\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class TreeWalker {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    parentNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'parentNode' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].parentNode());\n    }\n\n    firstChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'firstChild' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].firstChild());\n    }\n\n    lastChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'lastChild' called on an object that is not a valid instance of TreeWalker.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].lastChild());\n    }\n\n    previousSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'previousSibling' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].previousSibling());\n    }\n\n    nextSibling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'nextSibling' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].nextSibling());\n    }\n\n    previousNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'previousNode' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].previousNode());\n    }\n\n    nextNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'nextNode' called on an object that is not a valid instance of TreeWalker.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].nextNode());\n    }\n\n    get root() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get root' called on an object that is not a valid instance of TreeWalker.\");\n      }\n\n      return utils.getSameObject(this, \"root\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"root\"]);\n      });\n    }\n\n    get whatToShow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get whatToShow' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return esValue[implSymbol][\"whatToShow\"];\n    }\n\n    get filter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get filter' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"filter\"]);\n    }\n\n    get currentNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get currentNode' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"currentNode\"]);\n    }\n\n    set currentNode(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set currentNode' called on an object that is not a valid instance of TreeWalker.\"\n        );\n      }\n\n      V = Node.convert(globalObject, V, {\n        context: \"Failed to set the 'currentNode' property on 'TreeWalker': The provided value\"\n      });\n\n      esValue[implSymbol][\"currentNode\"] = V;\n    }\n  }\n  Object.defineProperties(TreeWalker.prototype, {\n    parentNode: { enumerable: true },\n    firstChild: { enumerable: true },\n    lastChild: { enumerable: true },\n    previousSibling: { enumerable: true },\n    nextSibling: { enumerable: true },\n    previousNode: { enumerable: true },\n    nextNode: { enumerable: true },\n    root: { enumerable: true },\n    whatToShow: { enumerable: true },\n    filter: { enumerable: true },\n    currentNode: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"TreeWalker\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = TreeWalker;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: TreeWalker\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/traversal/TreeWalker-impl.js\");\n","\"use strict\";\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { filter, FILTER_ACCEPT } = require(\"./helpers\");\n\nexports.implementation = class NodeIteratorImpl {\n  constructor(globalObject, args, privateData) {\n    this._active = false;\n    this.root = privateData.root;\n    this.whatToShow = privateData.whatToShow;\n    this.filter = privateData.filter;\n\n    this._referenceNode = this.root;\n    this._pointerBeforeReferenceNode = true;\n\n    this._globalObject = globalObject;\n  }\n\n  get referenceNode() {\n    return this._referenceNode;\n  }\n\n  get pointerBeforeReferenceNode() {\n    return this._pointerBeforeReferenceNode;\n  }\n\n  nextNode() {\n    return this._traverse(\"next\");\n  }\n\n  previousNode() {\n    return this._traverse(\"previous\");\n  }\n\n  detach() {\n    // Intentionally do nothing, per spec.\n  }\n\n  // Called by Documents.\n  _preRemovingSteps(toBeRemovedNode) {\n    // Second clause is https://github.com/whatwg/dom/issues/496\n    if (!toBeRemovedNode.contains(this._referenceNode) || toBeRemovedNode === this.root) {\n      return;\n    }\n\n    if (this._pointerBeforeReferenceNode) {\n      let next = null;\n      let candidateForNext = domSymbolTree.following(toBeRemovedNode, { skipChildren: true });\n      while (candidateForNext !== null) {\n        if (this.root.contains(candidateForNext)) {\n          next = candidateForNext;\n          break;\n        }\n        candidateForNext = domSymbolTree.following(candidateForNext, { skipChildren: true });\n      }\n\n      if (next !== null) {\n        this._referenceNode = next;\n        return;\n      }\n\n      this._pointerBeforeReferenceNode = false;\n    }\n\n    const { previousSibling } = toBeRemovedNode;\n    this._referenceNode = previousSibling === null ?\n                          toBeRemovedNode.parentNode :\n                          domSymbolTree.lastInclusiveDescendant(toBeRemovedNode.previousSibling);\n  }\n\n  _traverse(direction) {\n    let node = this._referenceNode;\n    let beforeNode = this._pointerBeforeReferenceNode;\n\n    while (true) {\n      if (direction === \"next\") {\n        if (!beforeNode) {\n          node = domSymbolTree.following(node, { root: this.root });\n\n          if (!node) {\n            return null;\n          }\n        }\n\n        beforeNode = false;\n      } else if (direction === \"previous\") {\n        if (beforeNode) {\n          node = domSymbolTree.preceding(node, { root: this.root });\n\n          if (!node) {\n            return null;\n          }\n        }\n\n        beforeNode = true;\n      }\n\n      const result = filter(this, node);\n      if (result === FILTER_ACCEPT) {\n        break;\n      }\n    }\n\n    this._referenceNode = node;\n    this._pointerBeforeReferenceNode = beforeNode;\n    return node;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"NodeIterator\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'NodeIterator'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"NodeIterator\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class NodeIterator {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    nextNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'nextNode' called on an object that is not a valid instance of NodeIterator.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].nextNode());\n    }\n\n    previousNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'previousNode' called on an object that is not a valid instance of NodeIterator.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].previousNode());\n    }\n\n    detach() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'detach' called on an object that is not a valid instance of NodeIterator.\");\n      }\n\n      return esValue[implSymbol].detach();\n    }\n\n    get root() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get root' called on an object that is not a valid instance of NodeIterator.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"root\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"root\"]);\n      });\n    }\n\n    get referenceNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get referenceNode' called on an object that is not a valid instance of NodeIterator.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"referenceNode\"]);\n    }\n\n    get pointerBeforeReferenceNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pointerBeforeReferenceNode' called on an object that is not a valid instance of NodeIterator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"pointerBeforeReferenceNode\"];\n    }\n\n    get whatToShow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get whatToShow' called on an object that is not a valid instance of NodeIterator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"whatToShow\"];\n    }\n\n    get filter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get filter' called on an object that is not a valid instance of NodeIterator.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"filter\"]);\n    }\n  }\n  Object.defineProperties(NodeIterator.prototype, {\n    nextNode: { enumerable: true },\n    previousNode: { enumerable: true },\n    detach: { enumerable: true },\n    root: { enumerable: true },\n    referenceNode: { enumerable: true },\n    pointerBeforeReferenceNode: { enumerable: true },\n    whatToShow: { enumerable: true },\n    filter: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"NodeIterator\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = NodeIterator;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: NodeIterator\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/traversal/NodeIterator-impl.js\");\n","\"use strict\";\n\n// https://dom.spec.whatwg.org/#abstractrange\nclass AbstractRangeImpl {\n  constructor(globalObject, args, privateData) {\n    const { start, end } = privateData;\n\n    this._start = start;\n    this._end = end;\n\n    this._globalObject = globalObject;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-startcontainer\n  get startContainer() {\n    return this._start.node;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-startoffset\n  get startOffset() {\n    return this._start.offset;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-endcontainer\n  get endContainer() {\n    return this._end.node;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-endoffset\n  get endOffset() {\n    return this._end.offset;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-collapsed\n  get collapsed() {\n    const { _start, _end } = this;\n    return _start.node === _end.node && _start.offset === _end.offset;\n  }\n}\n\nmodule.exports = {\n  implementation: AbstractRangeImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"AbstractRange\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'AbstractRange'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"AbstractRange\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class AbstractRange {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get startContainer() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get startContainer' called on an object that is not a valid instance of AbstractRange.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"startContainer\"]);\n    }\n\n    get startOffset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get startOffset' called on an object that is not a valid instance of AbstractRange.\"\n        );\n      }\n\n      return esValue[implSymbol][\"startOffset\"];\n    }\n\n    get endContainer() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get endContainer' called on an object that is not a valid instance of AbstractRange.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"endContainer\"]);\n    }\n\n    get endOffset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get endOffset' called on an object that is not a valid instance of AbstractRange.\"\n        );\n      }\n\n      return esValue[implSymbol][\"endOffset\"];\n    }\n\n    get collapsed() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get collapsed' called on an object that is not a valid instance of AbstractRange.\"\n        );\n      }\n\n      return esValue[implSymbol][\"collapsed\"];\n    }\n  }\n  Object.defineProperties(AbstractRange.prototype, {\n    startContainer: { enumerable: true },\n    startOffset: { enumerable: true },\n    endContainer: { enumerable: true },\n    endOffset: { enumerable: true },\n    collapsed: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"AbstractRange\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = AbstractRange;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: AbstractRange\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/range/AbstractRange-impl.js\");\n","\"use strict\";\n\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { nodeRoot, isFollowing, isInclusiveAncestor } = require(\"../helpers/node\");\n\n// Returns 0 if equal, +1 for after and -1 for before\n// https://dom.spec.whatwg.org/#concept-range-bp-after\nfunction compareBoundaryPointsPosition(bpA, bpB) {\n  const { node: nodeA, offset: offsetA } = bpA;\n  const { node: nodeB, offset: offsetB } = bpB;\n\n  if (nodeRoot(nodeA) !== nodeRoot(nodeB)) {\n    throw new Error(`Internal Error: Boundary points should have the same root!`);\n  }\n\n  if (nodeA === nodeB) {\n    if (offsetA === offsetB) {\n      return 0;\n    } else if (offsetA < offsetB) {\n      return -1;\n    }\n\n    return 1;\n  }\n\n  if (isFollowing(nodeA, nodeB)) {\n    return compareBoundaryPointsPosition(bpB, bpA) === -1 ? 1 : -1;\n  }\n\n  if (isInclusiveAncestor(nodeA, nodeB)) {\n    let child = nodeB;\n\n    while (domSymbolTree.parent(child) !== nodeA) {\n      child = domSymbolTree.parent(child);\n    }\n\n    if (domSymbolTree.index(child) < offsetA) {\n      return 1;\n    }\n  }\n\n  return -1;\n}\n\nmodule.exports = {\n  compareBoundaryPointsPosition\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst { clone } = require(\"../node\");\nconst NODE_TYPE = require(\"../node-type\");\nconst { parseFragment } = require(\"../../browser/parser/index\");\n\nconst { HTML_NS } = require(\"../helpers/namespaces\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { compareBoundaryPointsPosition } = require(\"./boundary-point\");\nconst { nodeRoot, nodeLength, isInclusiveAncestor } = require(\"../helpers/node\");\nconst { createElement } = require(\"../helpers/create-element\");\n\nconst AbstractRangeImpl = require(\"./AbstractRange-impl\").implementation;\n\nconst Range = require(\"../../../generated/idl/Range\");\nconst DocumentFragment = require(\"../../../generated/idl/DocumentFragment\");\nconst { implForWrapper } = require(\"../../../generated/idl/utils\");\n\nconst RANGE_COMPARISON_TYPE = {\n  START_TO_START: 0,\n  START_TO_END: 1,\n  END_TO_END: 2,\n  END_TO_START: 3\n};\n\nclass RangeImpl extends AbstractRangeImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    // Store a WeakRef to this Range for use in _referencedRanges.\n    // This allows Ranges to be garbage collected when no longer referenced by user code,\n    // preventing accumulation in long-lived nodes like document.body.\n    this._weakRef = new WeakRef(this);\n\n    const defaultBoundaryPoint = {\n      node: implForWrapper(globalObject._document),\n      offset: 0\n    };\n\n    const {\n      start = defaultBoundaryPoint,\n      end = defaultBoundaryPoint\n    } = privateData;\n\n    this._setLiveRangeStart(start.node, start.offset);\n    this._setLiveRangeEnd(end.node, end.offset);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-commonancestorcontainer\n  get commonAncestorContainer() {\n    const { _start, _end } = this;\n\n    for (const container of domSymbolTree.ancestorsIterator(_start.node)) {\n      if (isInclusiveAncestor(container, _end.node)) {\n        return container;\n      }\n    }\n\n    return null;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-setstart\n  setStart(node, offset) {\n    setBoundaryPointStart(this, node, offset);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-setend\n  setEnd(node, offset) {\n    setBoundaryPointEnd(this, node, offset);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-setstartbefore\n  setStartBefore(node) {\n    const parent = domSymbolTree.parent(node);\n\n    if (!parent) {\n      throw DOMException.create(this._globalObject, [\"The given Node has no parent.\", \"InvalidNodeTypeError\"]);\n    }\n\n    setBoundaryPointStart(this, parent, domSymbolTree.index(node));\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-setstartafter\n  setStartAfter(node) {\n    const parent = domSymbolTree.parent(node);\n\n    if (!parent) {\n      throw DOMException.create(this._globalObject, [\"The given Node has no parent.\", \"InvalidNodeTypeError\"]);\n    }\n\n    setBoundaryPointStart(this, parent, domSymbolTree.index(node) + 1);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-setendbefore\n  setEndBefore(node) {\n    const parent = domSymbolTree.parent(node);\n\n    if (!parent) {\n      throw DOMException.create(this._globalObject, [\"The given Node has no parent.\", \"InvalidNodeTypeError\"]);\n    }\n\n    setBoundaryPointEnd(this, parent, domSymbolTree.index(node));\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-setendafter\n  setEndAfter(node) {\n    const parent = domSymbolTree.parent(node);\n\n    if (!parent) {\n      throw DOMException.create(this._globalObject, [\"The given Node has no parent.\", \"InvalidNodeTypeError\"]);\n    }\n\n    setBoundaryPointEnd(this, parent, domSymbolTree.index(node) + 1);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-collapse\n  collapse(toStart) {\n    if (toStart) {\n      this._setLiveRangeEnd(this._start.node, this._start.offset);\n    } else {\n      this._setLiveRangeStart(this._end.node, this._end.offset);\n    }\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-selectnode\n  selectNode(node) {\n    selectNodeWithinRange(node, this);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-selectnodecontents\n  selectNodeContents(node) {\n    if (node.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) {\n      throw DOMException.create(this._globalObject, [\n        \"DocumentType Node can't be used as boundary point.\",\n        \"InvalidNodeTypeError\"\n      ]);\n    }\n\n    const length = nodeLength(node);\n\n    this._setLiveRangeStart(node, 0);\n    this._setLiveRangeEnd(node, length);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-compareboundarypoints\n  compareBoundaryPoints(how, sourceRange) {\n    if (\n      how !== RANGE_COMPARISON_TYPE.START_TO_START &&\n      how !== RANGE_COMPARISON_TYPE.START_TO_END &&\n      how !== RANGE_COMPARISON_TYPE.END_TO_END &&\n      how !== RANGE_COMPARISON_TYPE.END_TO_START\n    ) {\n      const message = \"The comparison method provided must be one of 'START_TO_START', 'START_TO_END', 'END_TO_END', \" +\n                      \"or 'END_TO_START'.\";\n      throw DOMException.create(this._globalObject, [message, \"NotSupportedError\"]);\n    }\n\n    if (this._root !== sourceRange._root) {\n      throw DOMException.create(this._globalObject, [\"The two Ranges are not in the same tree.\", \"WrongDocumentError\"]);\n    }\n\n    let thisPoint, otherPoint;\n    if (how === RANGE_COMPARISON_TYPE.START_TO_START) {\n      thisPoint = this._start;\n      otherPoint = sourceRange._start;\n    } else if (how === RANGE_COMPARISON_TYPE.START_TO_END) {\n      thisPoint = this._end;\n      otherPoint = sourceRange._start;\n    } else if (how === RANGE_COMPARISON_TYPE.END_TO_END) {\n      thisPoint = this._end;\n      otherPoint = sourceRange._end;\n    } else {\n      thisPoint = this._start;\n      otherPoint = sourceRange._end;\n    }\n\n    return compareBoundaryPointsPosition(thisPoint, otherPoint);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-deletecontents\n  deleteContents() {\n    if (this.collapsed) {\n      return;\n    }\n\n    const { _start: originalStart, _end: originalEnd } = this;\n\n    if (\n      originalStart.node === originalEnd.node &&\n      (\n        originalStart.node.nodeType === NODE_TYPE.TEXT_NODE ||\n        originalStart.node.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n        originalStart.node.nodeType === NODE_TYPE.COMMENT_NODE\n      )\n    ) {\n      originalStart.node.replaceData(originalStart.offset, originalEnd.offset - originalStart.offset, \"\");\n      return;\n    }\n\n    const nodesToRemove = [];\n    let currentNode = this._start.node;\n    const endNode = nextNodeDescendant(this._end.node);\n    while (currentNode && currentNode !== endNode) {\n      if (\n        isContained(currentNode, this) &&\n        !isContained(domSymbolTree.parent(currentNode), this)\n      ) {\n        nodesToRemove.push(currentNode);\n      }\n\n      currentNode = domSymbolTree.following(currentNode);\n    }\n\n    let newNode, newOffset;\n    if (isInclusiveAncestor(originalStart.node, originalEnd.node)) {\n      newNode = originalStart.node;\n      newOffset = originalStart.offset;\n    } else {\n      let referenceNode = originalStart.node;\n\n      while (\n        referenceNode &&\n        !isInclusiveAncestor(domSymbolTree.parent(referenceNode), originalEnd.node)\n      ) {\n        referenceNode = domSymbolTree.parent(referenceNode);\n      }\n\n      newNode = domSymbolTree.parent(referenceNode);\n      newOffset = domSymbolTree.index(referenceNode) + 1;\n    }\n\n    if (\n      originalStart.node.nodeType === NODE_TYPE.TEXT_NODE ||\n      originalStart.node.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      originalStart.node.nodeType === NODE_TYPE.COMMENT_NODE\n    ) {\n      originalStart.node.replaceData(originalStart.offset, nodeLength(originalStart.node) - originalStart.offset, \"\");\n    }\n\n    for (const node of nodesToRemove) {\n      const parent = domSymbolTree.parent(node);\n      parent.removeChild(node);\n    }\n\n    if (\n      originalEnd.node.nodeType === NODE_TYPE.TEXT_NODE ||\n      originalEnd.node.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      originalEnd.node.nodeType === NODE_TYPE.COMMENT_NODE\n    ) {\n      originalEnd.node.replaceData(0, originalEnd.offset, \"\");\n    }\n\n    this._setLiveRangeStart(newNode, newOffset);\n    this._setLiveRangeEnd(newNode, newOffset);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-extractcontents\n  extractContents() {\n    return extractRange(this);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-clonecontents\n  cloneContents() {\n    return cloneRange(this);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-insertnode\n  insertNode(node) {\n    insertNodeInRange(node, this);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-surroundcontents\n  surroundContents(newParent) {\n    let node = this.commonAncestorContainer;\n    const endNode = nextNodeDescendant(node);\n    while (node !== endNode) {\n      if (node.nodeType !== NODE_TYPE.TEXT_NODE && isPartiallyContained(node, this)) {\n        throw DOMException.create(this._globalObject, [\n          \"The Range has partially contains a non-Text node.\",\n          \"InvalidStateError\"\n        ]);\n      }\n\n      node = domSymbolTree.following(node);\n    }\n\n    if (\n      newParent.nodeType === NODE_TYPE.DOCUMENT_NODE ||\n      newParent.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE ||\n      newParent.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE\n    ) {\n      throw DOMException.create(this._globalObject, [\"Invalid element type.\", \"InvalidNodeTypeError\"]);\n    }\n\n    const fragment = extractRange(this);\n\n    while (domSymbolTree.firstChild(newParent)) {\n      newParent.removeChild(domSymbolTree.firstChild(newParent));\n    }\n\n    insertNodeInRange(newParent, this);\n\n    newParent.appendChild(fragment);\n\n    selectNodeWithinRange(newParent, this);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-clonerange\n  cloneRange() {\n    const { _start, _end, _globalObject } = this;\n\n    return Range.createImpl(_globalObject, [], {\n      start: { node: _start.node, offset: _start.offset },\n      end: { node: _end.node, offset: _end.offset }\n    });\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-detach\n  detach() {\n    // Do nothing by spec!\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-ispointinrange\n  isPointInRange(node, offset) {\n    if (nodeRoot(node) !== this._root) {\n      return false;\n    }\n\n    validateSetBoundaryPoint(node, offset);\n\n    const bp = { node, offset };\n\n    if (\n      compareBoundaryPointsPosition(bp, this._start) === -1 ||\n      compareBoundaryPointsPosition(bp, this._end) === 1\n    ) {\n      return false;\n    }\n\n    return true;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-comparepoint\n  comparePoint(node, offset) {\n    if (nodeRoot(node) !== this._root) {\n      throw DOMException.create(this._globalObject, [\n        \"The given Node and the Range are not in the same tree.\",\n        \"WrongDocumentError\"\n      ]);\n    }\n\n    validateSetBoundaryPoint(node, offset);\n\n    const bp = { node, offset };\n    if (compareBoundaryPointsPosition(bp, this._start) === -1) {\n      return -1;\n    } else if (compareBoundaryPointsPosition(bp, this._end) === 1) {\n      return 1;\n    }\n\n    return 0;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-intersectsnode\n  intersectsNode(node) {\n    if (nodeRoot(node) !== this._root) {\n      return false;\n    }\n\n    const parent = domSymbolTree.parent(node);\n    if (!parent) {\n      return true;\n    }\n\n    const offset = domSymbolTree.index(node);\n\n    return (\n      compareBoundaryPointsPosition({ node: parent, offset }, this._end) === -1 &&\n      compareBoundaryPointsPosition({ node: parent, offset: offset + 1 }, this._start) === 1\n    );\n  }\n\n  // https://dom.spec.whatwg.org/#dom-range-stringifier\n  toString() {\n    let s = \"\";\n    const { _start, _end } = this;\n\n    if (_start.node === _end.node && _start.node.nodeType === NODE_TYPE.TEXT_NODE) {\n      return _start.node.data.slice(_start.offset, _end.offset);\n    }\n\n    if (_start.node.nodeType === NODE_TYPE.TEXT_NODE) {\n      s += _start.node.data.slice(_start.offset);\n    }\n\n    let currentNode = _start.node;\n    const endNode = nextNodeDescendant(_end.node);\n    while (currentNode && currentNode !== endNode) {\n      if (currentNode.nodeType === NODE_TYPE.TEXT_NODE && isContained(currentNode, this)) {\n        s += currentNode.data;\n      }\n\n      currentNode = domSymbolTree.following(currentNode);\n    }\n\n    if (_end.node.nodeType === NODE_TYPE.TEXT_NODE) {\n      s += _end.node.data.slice(0, _end.offset);\n    }\n\n    return s;\n  }\n\n  // https://w3c.github.io/DOM-Parsing/#dom-range-createcontextualfragment\n  createContextualFragment(fragment) {\n    const { node } = this._start;\n\n    let element;\n    switch (node.nodeType) {\n      case NODE_TYPE.DOCUMENT_NODE:\n      case NODE_TYPE.DOCUMENT_FRAGMENT_NODE:\n        element = null;\n        break;\n\n      case NODE_TYPE.ELEMENT_NODE:\n        element = node;\n        break;\n\n      case NODE_TYPE.TEXT_NODE:\n      case NODE_TYPE.COMMENT_NODE:\n        element = node.parentElement;\n        break;\n\n      default:\n        throw new Error(\"Internal error: Invalid range start node\");\n    }\n\n    if (\n      element === null || (\n        element._ownerDocument._parsingMode === \"html\" &&\n        element._localName === \"html\" &&\n        element._namespaceURI === HTML_NS\n      )\n    ) {\n      element = createElement(node._ownerDocument, \"body\", HTML_NS);\n    }\n\n    return parseFragment(fragment, element);\n  }\n\n  // https://dom.spec.whatwg.org/#concept-range-root\n  get _root() {\n    return nodeRoot(this._start.node);\n  }\n\n  _setLiveRangeStart(node, offset) {\n    if (\n      this._start &&\n      this._start.node !== node &&\n      this._start.node !== this._end.node\n    ) {\n      this._start.node._referencedRanges.delete(this._weakRef);\n    }\n\n    if (!node._referencedRanges.has(this._weakRef)) {\n      node._referencedRanges.add(this._weakRef);\n    }\n\n    this._start = {\n      node,\n      offset\n    };\n  }\n\n  _setLiveRangeEnd(node, offset) {\n    if (\n      this._end &&\n      this._end.node !== node &&\n      this._end.node !== this._start.node\n    ) {\n      this._end.node._referencedRanges.delete(this._weakRef);\n    }\n\n    if (!node._referencedRanges.has(this._weakRef)) {\n      node._referencedRanges.add(this._weakRef);\n    }\n\n    this._end = {\n      node,\n      offset\n    };\n  }\n}\n\n\nfunction nextNodeDescendant(node) {\n  while (node && !domSymbolTree.nextSibling(node)) {\n    node = domSymbolTree.parent(node);\n  }\n\n  if (!node) {\n    return null;\n  }\n\n  return domSymbolTree.nextSibling(node);\n}\n\n// https://dom.spec.whatwg.org/#concept-range-bp-set\nfunction validateSetBoundaryPoint(node, offset) {\n  if (node.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) {\n    throw DOMException.create(node._globalObject, [\n      \"DocumentType Node can't be used as boundary point.\",\n      \"InvalidNodeTypeError\"\n    ]);\n  }\n\n  if (offset > nodeLength(node)) {\n    throw DOMException.create(node._globalObject, [\"Offset out of bound.\", \"IndexSizeError\"]);\n  }\n}\nfunction setBoundaryPointStart(range, node, offset) {\n  validateSetBoundaryPoint(node, offset);\n\n  const bp = { node, offset };\n  if (\n    nodeRoot(node) !== range._root ||\n    compareBoundaryPointsPosition(bp, range._end) === 1\n  ) {\n    range._setLiveRangeEnd(node, offset);\n  }\n\n  range._setLiveRangeStart(node, offset);\n}\nfunction setBoundaryPointEnd(range, node, offset) {\n  validateSetBoundaryPoint(node, offset);\n\n  const bp = { node, offset };\n  if (\n    nodeRoot(node) !== range._root ||\n    compareBoundaryPointsPosition(bp, range._start) === -1\n  ) {\n    range._setLiveRangeStart(node, offset);\n  }\n\n  range._setLiveRangeEnd(node, offset);\n}\n\n// https://dom.spec.whatwg.org/#concept-range-select\nfunction selectNodeWithinRange(node, range) {\n  const parent = domSymbolTree.parent(node);\n\n  if (!parent) {\n    throw DOMException.create(node._globalObject, [\"The given Node has no parent.\", \"InvalidNodeTypeError\"]);\n  }\n\n  const index = domSymbolTree.index(node);\n\n  range._setLiveRangeStart(parent, index);\n  range._setLiveRangeEnd(parent, index + 1);\n}\n\n// https://dom.spec.whatwg.org/#contained\nfunction isContained(node, range) {\n  const { _start, _end } = range;\n  return (\n    compareBoundaryPointsPosition({ node, offset: 0 }, _start) === 1 &&\n    compareBoundaryPointsPosition({ node, offset: nodeLength(node) }, _end) === -1\n  );\n}\n\n// https://dom.spec.whatwg.org/#partially-contained\nfunction isPartiallyContained(node, range) {\n  const { _start, _end } = range;\n  return (\n    (isInclusiveAncestor(node, _start.node) && !isInclusiveAncestor(node, _end.node)) ||\n    (!isInclusiveAncestor(node, _start.node) && isInclusiveAncestor(node, _end.node))\n  );\n}\n\n// https://dom.spec.whatwg.org/#concept-range-insert\nfunction insertNodeInRange(node, range) {\n  const { node: startNode, offset: startOffset } = range._start;\n\n  if (\n    startNode.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n    startNode.nodeType === NODE_TYPE.COMMENT_NODE ||\n    (startNode.nodeType === NODE_TYPE.TEXT_NODE && !domSymbolTree.parent(startNode)) ||\n    node === startNode\n  ) {\n    throw DOMException.create(node._globalObject, [\"Invalid start node.\", \"HierarchyRequestError\"]);\n  }\n\n  let referenceNode = startNode.nodeType === NODE_TYPE.TEXT_NODE ?\n    startNode :\n    domSymbolTree.childrenToArray(startNode)[startOffset] || null;\n  const parent = !referenceNode ?\n    startNode :\n    domSymbolTree.parent(referenceNode);\n\n  parent._preInsertValidity(node, referenceNode);\n\n  if (startNode.nodeType === NODE_TYPE.TEXT_NODE) {\n    referenceNode = startNode.splitText(startOffset);\n  }\n\n  if (node === referenceNode) {\n    referenceNode = domSymbolTree.nextSibling(referenceNode);\n  }\n\n  const nodeParent = domSymbolTree.parent(node);\n  if (nodeParent) {\n    nodeParent.removeChild(node);\n  }\n\n  let newOffset = !referenceNode ? nodeLength(parent) : domSymbolTree.index(referenceNode);\n  newOffset += node.nodeType === NODE_TYPE.DOCUMENT_FRAGMENT_NODE ? nodeLength(node) : 1;\n\n  parent.insertBefore(node, referenceNode);\n\n  if (range.collapsed) {\n    range._setLiveRangeEnd(parent, newOffset);\n  }\n}\n\n// https://dom.spec.whatwg.org/#concept-range-clone\nfunction cloneRange(range) {\n  const { _start: originalStart, _end: originalEnd, _globalObject } = range;\n\n  const fragment = DocumentFragment.createImpl(_globalObject, [], {\n    ownerDocument: originalStart.node._ownerDocument\n  });\n\n  if (range.collapsed) {\n    return fragment;\n  }\n\n  if (\n    originalStart.node === originalEnd.node &&\n    (\n      originalStart.node.nodeType === NODE_TYPE.TEXT_NODE ||\n      originalStart.node.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      originalStart.node.nodeType === NODE_TYPE.COMMENT_NODE\n    )\n  ) {\n    const cloned = clone(originalStart.node);\n    cloned._data = cloned.substringData(originalStart.offset, originalEnd.offset - originalStart.offset);\n\n    fragment.appendChild(cloned);\n\n    return fragment;\n  }\n\n  let commonAncestor = originalStart.node;\n  while (!isInclusiveAncestor(commonAncestor, originalEnd.node)) {\n    commonAncestor = domSymbolTree.parent(commonAncestor);\n  }\n\n  let firstPartialContainedChild = null;\n  if (!isInclusiveAncestor(originalStart.node, originalEnd.node)) {\n    let candidate = domSymbolTree.firstChild(commonAncestor);\n    while (!firstPartialContainedChild) {\n      if (isPartiallyContained(candidate, range)) {\n        firstPartialContainedChild = candidate;\n      }\n\n      candidate = domSymbolTree.nextSibling(candidate);\n    }\n  }\n\n  let lastPartiallyContainedChild = null;\n  if (!isInclusiveAncestor(originalEnd.node, originalStart.node)) {\n    let candidate = domSymbolTree.lastChild(commonAncestor);\n    while (!lastPartiallyContainedChild) {\n      if (isPartiallyContained(candidate, range)) {\n        lastPartiallyContainedChild = candidate;\n      }\n\n      candidate = domSymbolTree.previousSibling(candidate);\n    }\n  }\n\n  const containedChildren = domSymbolTree.childrenToArray(commonAncestor)\n    .filter(node => isContained(node, range));\n\n  const hasDoctypeChildren = containedChildren.some(node => node.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE);\n  if (hasDoctypeChildren) {\n    throw DOMException.create(range._globalObject, [\"Invalid document type element.\", \"HierarchyRequestError\"]);\n  }\n\n  if (\n    firstPartialContainedChild !== null &&\n    (\n      firstPartialContainedChild.nodeType === NODE_TYPE.TEXT_NODE ||\n      firstPartialContainedChild.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      firstPartialContainedChild.nodeType === NODE_TYPE.COMMENT_NODE\n    )\n  ) {\n    const cloned = clone(originalStart.node);\n    cloned._data = cloned.substringData(originalStart.offset, nodeLength(originalStart.node) - originalStart.offset);\n\n    fragment.appendChild(cloned);\n  } else if (firstPartialContainedChild !== null) {\n    const cloned = clone(firstPartialContainedChild);\n    fragment.appendChild(cloned);\n\n    const subrange = Range.createImpl(_globalObject, [], {\n      start: { node: originalStart.node, offset: originalStart.offset },\n      end: { node: firstPartialContainedChild, offset: nodeLength(firstPartialContainedChild) }\n    });\n\n    const subfragment = cloneRange(subrange);\n    cloned.appendChild(subfragment);\n  }\n\n  for (const containedChild of containedChildren) {\n    const cloned = clone(containedChild, undefined, true);\n    fragment.appendChild(cloned);\n  }\n\n  if (\n    lastPartiallyContainedChild !== null &&\n    (\n      lastPartiallyContainedChild.nodeType === NODE_TYPE.TEXT_NODE ||\n      lastPartiallyContainedChild.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      lastPartiallyContainedChild.nodeType === NODE_TYPE.COMMENT_NODE\n    )\n  ) {\n    const cloned = clone(originalEnd.node);\n    cloned._data = cloned.substringData(0, originalEnd.offset);\n\n    fragment.appendChild(cloned);\n  } else if (lastPartiallyContainedChild !== null) {\n    const cloned = clone(lastPartiallyContainedChild);\n    fragment.appendChild(cloned);\n\n    const subrange = Range.createImpl(_globalObject, [], {\n      start: { node: lastPartiallyContainedChild, offset: 0 },\n      end: { node: originalEnd.node, offset: originalEnd.offset }\n    });\n\n    const subfragment = cloneRange(subrange);\n    cloned.appendChild(subfragment);\n  }\n\n  return fragment;\n}\n\n// https://dom.spec.whatwg.org/#concept-range-extract\nfunction extractRange(range) {\n  const { _start: originalStart, _end: originalEnd, _globalObject } = range;\n\n  const fragment = DocumentFragment.createImpl(_globalObject, [], {\n    ownerDocument: originalStart.node._ownerDocument\n  });\n\n  if (range.collapsed) {\n    return fragment;\n  }\n\n  if (\n    originalStart.node === originalEnd.node &&\n    (\n      originalStart.node.nodeType === NODE_TYPE.TEXT_NODE ||\n      originalStart.node.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      originalStart.node.nodeType === NODE_TYPE.COMMENT_NODE\n    )\n  ) {\n    const cloned = clone(originalStart.node);\n    cloned._data = cloned.substringData(originalStart.offset, originalEnd.offset - originalStart.offset);\n\n    fragment.appendChild(cloned);\n    originalStart.node.replaceData(originalStart.offset, originalEnd.offset - originalStart.offset, \"\");\n\n    return fragment;\n  }\n\n  let commonAncestor = originalStart.node;\n  while (!isInclusiveAncestor(commonAncestor, originalEnd.node)) {\n    commonAncestor = domSymbolTree.parent(commonAncestor);\n  }\n\n  let firstPartialContainedChild = null;\n  if (!isInclusiveAncestor(originalStart.node, originalEnd.node)) {\n    let candidate = domSymbolTree.firstChild(commonAncestor);\n    while (!firstPartialContainedChild) {\n      if (isPartiallyContained(candidate, range)) {\n        firstPartialContainedChild = candidate;\n      }\n\n      candidate = domSymbolTree.nextSibling(candidate);\n    }\n  }\n\n  let lastPartiallyContainedChild = null;\n  if (!isInclusiveAncestor(originalEnd.node, originalStart.node)) {\n    let candidate = domSymbolTree.lastChild(commonAncestor);\n    while (!lastPartiallyContainedChild) {\n      if (isPartiallyContained(candidate, range)) {\n        lastPartiallyContainedChild = candidate;\n      }\n\n      candidate = domSymbolTree.previousSibling(candidate);\n    }\n  }\n\n  const containedChildren = domSymbolTree.childrenToArray(commonAncestor)\n    .filter(node => isContained(node, range));\n\n  const hasDoctypeChildren = containedChildren.some(node => node.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE);\n  if (hasDoctypeChildren) {\n    throw DOMException.create(range._globalObject, [\"Invalid document type element.\", \"HierarchyRequestError\"]);\n  }\n\n  let newNode, newOffset;\n  if (isInclusiveAncestor(originalStart.node, originalEnd.node)) {\n    newNode = originalStart.node;\n    newOffset = originalStart.offset;\n  } else {\n    let referenceNode = originalStart.node;\n\n    while (\n      referenceNode &&\n      !isInclusiveAncestor(domSymbolTree.parent(referenceNode), originalEnd.node)\n    ) {\n      referenceNode = domSymbolTree.parent(referenceNode);\n    }\n\n    newNode = domSymbolTree.parent(referenceNode);\n    newOffset = domSymbolTree.index(referenceNode) + 1;\n  }\n\n  if (\n    firstPartialContainedChild !== null &&\n    (\n      firstPartialContainedChild.nodeType === NODE_TYPE.TEXT_NODE ||\n      firstPartialContainedChild.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      firstPartialContainedChild.nodeType === NODE_TYPE.COMMENT_NODE\n    )\n  ) {\n    const cloned = clone(originalStart.node);\n    cloned._data = cloned.substringData(originalStart.offset, nodeLength(originalStart.node) - originalStart.offset);\n\n    fragment.appendChild(cloned);\n\n    originalStart.node.replaceData(originalStart.offset, nodeLength(originalStart.node) - originalStart.offset, \"\");\n  } else if (firstPartialContainedChild !== null) {\n    const cloned = clone(firstPartialContainedChild);\n    fragment.appendChild(cloned);\n\n    const subrange = Range.createImpl(_globalObject, [], {\n      start: { node: originalStart.node, offset: originalStart.offset },\n      end: { node: firstPartialContainedChild, offset: nodeLength(firstPartialContainedChild) }\n    });\n\n    const subfragment = extractRange(subrange);\n    cloned.appendChild(subfragment);\n  }\n\n  for (const containedChild of containedChildren) {\n    fragment.appendChild(containedChild);\n  }\n\n  if (\n    lastPartiallyContainedChild !== null &&\n    (\n      lastPartiallyContainedChild.nodeType === NODE_TYPE.TEXT_NODE ||\n      lastPartiallyContainedChild.nodeType === NODE_TYPE.PROCESSING_INSTRUCTION_NODE ||\n      lastPartiallyContainedChild.nodeType === NODE_TYPE.COMMENT_NODE\n    )\n  ) {\n    const cloned = clone(originalEnd.node);\n    cloned._data = cloned.substringData(0, originalEnd.offset);\n\n    fragment.appendChild(cloned);\n\n    originalEnd.node.replaceData(0, originalEnd.offset, \"\");\n  } else if (lastPartiallyContainedChild !== null) {\n    const cloned = clone(lastPartiallyContainedChild);\n    fragment.appendChild(cloned);\n\n    const subrange = Range.createImpl(_globalObject, [], {\n      start: { node: lastPartiallyContainedChild, offset: 0 },\n      end: { node: originalEnd.node, offset: originalEnd.offset }\n    });\n\n    const subfragment = extractRange(subrange);\n    cloned.appendChild(subfragment);\n  }\n\n  range._setLiveRangeStart(newNode, newOffset);\n  range._setLiveRangeEnd(newNode, newOffset);\n\n  return fragment;\n}\n\nmodule.exports = {\n  implementation: RangeImpl,\n\n  setBoundaryPointStart,\n  setBoundaryPointEnd\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Node = require(\"./Node.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst AbstractRange = require(\"./AbstractRange.js\");\n\nconst interfaceName = \"Range\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Range'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Range\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  AbstractRange._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Range extends globalObject.AbstractRange {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    setStart(node, offset) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setStart' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setStart' on 'Range': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setStart' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setStart' on 'Range': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setStart(...args);\n    }\n\n    setEnd(node, offset) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setEnd' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setEnd' on 'Range': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, { context: \"Failed to execute 'setEnd' on 'Range': parameter 1\" });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setEnd' on 'Range': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setEnd(...args);\n    }\n\n    setStartBefore(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setStartBefore' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setStartBefore' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setStartBefore' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setStartBefore(...args);\n    }\n\n    setStartAfter(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setStartAfter' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setStartAfter' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setStartAfter' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setStartAfter(...args);\n    }\n\n    setEndBefore(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setEndBefore' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setEndBefore' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setEndBefore' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setEndBefore(...args);\n    }\n\n    setEndAfter(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setEndAfter' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setEndAfter' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setEndAfter' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setEndAfter(...args);\n    }\n\n    collapse() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'collapse' called on an object that is not a valid instance of Range.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'collapse' on 'Range': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].collapse(...args);\n    }\n\n    selectNode(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'selectNode' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'selectNode' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'selectNode' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].selectNode(...args);\n    }\n\n    selectNodeContents(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'selectNodeContents' called on an object that is not a valid instance of Range.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'selectNodeContents' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'selectNodeContents' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].selectNodeContents(...args);\n    }\n\n    compareBoundaryPoints(how, sourceRange) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'compareBoundaryPoints' called on an object that is not a valid instance of Range.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'compareBoundaryPoints' on 'Range': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned short\"](curArg, {\n          context: \"Failed to execute 'compareBoundaryPoints' on 'Range': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = exports.convert(globalObject, curArg, {\n          context: \"Failed to execute 'compareBoundaryPoints' on 'Range': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].compareBoundaryPoints(...args);\n    }\n\n    deleteContents() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'deleteContents' called on an object that is not a valid instance of Range.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteContents();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    extractContents() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'extractContents' called on an object that is not a valid instance of Range.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].extractContents());\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    cloneContents() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'cloneContents' called on an object that is not a valid instance of Range.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].cloneContents());\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    insertNode(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'insertNode' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'insertNode' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'insertNode' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].insertNode(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    surroundContents(newParent) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'surroundContents' called on an object that is not a valid instance of Range.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'surroundContents' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'surroundContents' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].surroundContents(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    cloneRange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'cloneRange' called on an object that is not a valid instance of Range.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].cloneRange());\n    }\n\n    detach() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'detach' called on an object that is not a valid instance of Range.\");\n      }\n\n      return esValue[implSymbol].detach();\n    }\n\n    isPointInRange(node, offset) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'isPointInRange' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'isPointInRange' on 'Range': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'isPointInRange' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'isPointInRange' on 'Range': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].isPointInRange(...args);\n    }\n\n    comparePoint(node, offset) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'comparePoint' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'comparePoint' on 'Range': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'comparePoint' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'comparePoint' on 'Range': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].comparePoint(...args);\n    }\n\n    intersectsNode(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'intersectsNode' called on an object that is not a valid instance of Range.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'intersectsNode' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'intersectsNode' on 'Range': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].intersectsNode(...args);\n    }\n\n    toString() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'toString' called on an object that is not a valid instance of Range.\");\n      }\n\n      return esValue[implSymbol].toString();\n    }\n\n    createContextualFragment(fragment) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createContextualFragment' called on an object that is not a valid instance of Range.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createContextualFragment' on 'Range': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createContextualFragment' on 'Range': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].createContextualFragment(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get commonAncestorContainer() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get commonAncestorContainer' called on an object that is not a valid instance of Range.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"commonAncestorContainer\"]);\n    }\n  }\n  Object.defineProperties(Range.prototype, {\n    setStart: { enumerable: true },\n    setEnd: { enumerable: true },\n    setStartBefore: { enumerable: true },\n    setStartAfter: { enumerable: true },\n    setEndBefore: { enumerable: true },\n    setEndAfter: { enumerable: true },\n    collapse: { enumerable: true },\n    selectNode: { enumerable: true },\n    selectNodeContents: { enumerable: true },\n    compareBoundaryPoints: { enumerable: true },\n    deleteContents: { enumerable: true },\n    extractContents: { enumerable: true },\n    cloneContents: { enumerable: true },\n    insertNode: { enumerable: true },\n    surroundContents: { enumerable: true },\n    cloneRange: { enumerable: true },\n    detach: { enumerable: true },\n    isPointInRange: { enumerable: true },\n    comparePoint: { enumerable: true },\n    intersectsNode: { enumerable: true },\n    toString: { enumerable: true },\n    createContextualFragment: { enumerable: true },\n    commonAncestorContainer: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Range\", configurable: true },\n    START_TO_START: { value: 0, enumerable: true },\n    START_TO_END: { value: 1, enumerable: true },\n    END_TO_END: { value: 2, enumerable: true },\n    END_TO_START: { value: 3, enumerable: true }\n  });\n  Object.defineProperties(Range, {\n    START_TO_START: { value: 0, enumerable: true },\n    START_TO_END: { value: 1, enumerable: true },\n    END_TO_END: { value: 2, enumerable: true },\n    END_TO_START: { value: 3, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = Range;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Range\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/range/Range-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst UIEventInit = require(\"./UIEventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  UIEventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"data\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, { context: context + \" has member 'data' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst UIEventImpl = require(\"./UIEvent-impl\").implementation;\nconst CompositionEventInit = require(\"../../../generated/idl/CompositionEventInit\");\n\nclass CompositionEventImpl extends UIEventImpl {\n  initCompositionEvent(type, bubbles, cancelable, view, data) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initUIEvent(type, bubbles, cancelable, view, 0);\n    this.data = data;\n  }\n}\nCompositionEventImpl.defaultInit = CompositionEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: CompositionEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst CompositionEventInit = require(\"./CompositionEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst UIEvent = require(\"./UIEvent.js\");\n\nconst interfaceName = \"CompositionEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'CompositionEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"CompositionEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  UIEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class CompositionEvent extends globalObject.UIEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'CompositionEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'CompositionEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = CompositionEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'CompositionEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    initCompositionEvent(typeArg) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'initCompositionEvent' called on an object that is not a valid instance of CompositionEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initCompositionEvent' on 'CompositionEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initCompositionEvent' on 'CompositionEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initCompositionEvent' on 'CompositionEvent': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initCompositionEvent' on 'CompositionEvent': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = utils.tryImplForWrapper(curArg);\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[4];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'initCompositionEvent' on 'CompositionEvent': parameter 5\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initCompositionEvent(...args);\n    }\n\n    get data() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get data' called on an object that is not a valid instance of CompositionEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"data\"];\n    }\n  }\n  Object.defineProperties(CompositionEvent.prototype, {\n    initCompositionEvent: { enumerable: true },\n    data: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"CompositionEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = CompositionEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: CompositionEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/CompositionEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"detail\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"any\"](value, { context: context + \" has member 'detail' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst CustomEventInit = require(\"../../../generated/idl/CustomEventInit\");\n\nclass CustomEventImpl extends EventImpl {\n  initCustomEvent(type, bubbles, cancelable, detail) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initEvent(type, bubbles, cancelable);\n    this.detail = detail;\n  }\n}\nCustomEventImpl.defaultInit = CustomEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: CustomEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst CustomEventInit = require(\"./CustomEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"CustomEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'CustomEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"CustomEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class CustomEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'CustomEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'CustomEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = CustomEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'CustomEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    initCustomEvent(type) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'initCustomEvent' called on an object that is not a valid instance of CustomEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initCustomEvent' on 'CustomEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initCustomEvent' on 'CustomEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initCustomEvent' on 'CustomEvent': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initCustomEvent' on 'CustomEvent': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          curArg = conversions[\"any\"](curArg, {\n            context: \"Failed to execute 'initCustomEvent' on 'CustomEvent': parameter 4\",\n            globals: globalObject\n          });\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initCustomEvent(...args);\n    }\n\n    get detail() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get detail' called on an object that is not a valid instance of CustomEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"detail\"];\n    }\n  }\n  Object.defineProperties(CustomEvent.prototype, {\n    initCustomEvent: { enumerable: true },\n    detail: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"CustomEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = CustomEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: CustomEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/CustomEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"x\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'x' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"y\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'y' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"z\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'z' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"alpha\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'alpha' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"beta\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'beta' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"gamma\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'gamma' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst DeviceMotionEventAccelerationInit = require(\"./DeviceMotionEventAccelerationInit.js\");\nconst DeviceMotionEventRotationRateInit = require(\"./DeviceMotionEventRotationRateInit.js\");\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"acceleration\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = DeviceMotionEventAccelerationInit.convert(globalObject, value, {\n        context: context + \" has member 'acceleration' that\"\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"accelerationIncludingGravity\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = DeviceMotionEventAccelerationInit.convert(globalObject, value, {\n        context: context + \" has member 'accelerationIncludingGravity' that\"\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"interval\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'interval' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"rotationRate\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = DeviceMotionEventRotationRateInit.convert(globalObject, value, {\n        context: context + \" has member 'rotationRate' that\"\n      });\n\n      ret[key] = value;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nclass DeviceMotionEventAccelerationImpl {}\n\nmodule.exports = {\n  implementation: DeviceMotionEventAccelerationImpl\n};\n","\"use strict\";\n\nclass DeviceMotionEventRotationRateImpl {}\n\nmodule.exports = {\n  implementation: DeviceMotionEventRotationRateImpl\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\nconst { implementation: DeviceMotionEventAccelerationImpl } =\n  require(\"../deviceorientation/DeviceMotionEventAcceleration-impl\");\nconst { implementation: DeviceMotionEventRotationRateImpl } =\n  require(\"../deviceorientation/DeviceMotionEventRotationRate-impl\");\n\nclass DeviceMotionEventImpl extends EventImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    const eventInitDict = args[1];\n\n    this.acceleration = null;\n    if (eventInitDict?.acceleration) {\n      const accelImpl = new DeviceMotionEventAccelerationImpl(globalObject, [], {});\n      accelImpl.x = eventInitDict.acceleration.x;\n      accelImpl.y = eventInitDict.acceleration.y;\n      accelImpl.z = eventInitDict.acceleration.z;\n      this.acceleration = accelImpl;\n    }\n\n    this.accelerationIncludingGravity = null;\n    if (eventInitDict?.accelerationIncludingGravity) {\n      const accelGImpl = new DeviceMotionEventAccelerationImpl(globalObject, [], {});\n      accelGImpl.x = eventInitDict.accelerationIncludingGravity.x;\n      accelGImpl.y = eventInitDict.accelerationIncludingGravity.y;\n      accelGImpl.z = eventInitDict.accelerationIncludingGravity.z;\n      this.accelerationIncludingGravity = accelGImpl;\n    }\n\n    this.rotationRate = null;\n    if (eventInitDict?.rotationRate) {\n      const rotImpl = new DeviceMotionEventRotationRateImpl(globalObject, [], {});\n      rotImpl.alpha = eventInitDict.rotationRate.alpha;\n      rotImpl.beta = eventInitDict.rotationRate.beta;\n      rotImpl.gamma = eventInitDict.rotationRate.gamma;\n      this.rotationRate = rotImpl;\n    }\n\n    this.interval = eventInitDict?.interval ?? 0;\n  }\n}\nDeviceMotionEventImpl.defaultInit = Object.create(null);\n\nmodule.exports = {\n  implementation: DeviceMotionEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst DeviceMotionEventInit = require(\"./DeviceMotionEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"DeviceMotionEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DeviceMotionEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DeviceMotionEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DeviceMotionEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'DeviceMotionEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'DeviceMotionEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = DeviceMotionEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'DeviceMotionEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get acceleration() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get acceleration' called on an object that is not a valid instance of DeviceMotionEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"acceleration\"]);\n    }\n\n    get accelerationIncludingGravity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get accelerationIncludingGravity' called on an object that is not a valid instance of DeviceMotionEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"accelerationIncludingGravity\"]);\n    }\n\n    get rotationRate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rotationRate' called on an object that is not a valid instance of DeviceMotionEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"rotationRate\"]);\n    }\n\n    get interval() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get interval' called on an object that is not a valid instance of DeviceMotionEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"interval\"];\n    }\n  }\n  Object.defineProperties(DeviceMotionEvent.prototype, {\n    acceleration: { enumerable: true },\n    accelerationIncludingGravity: { enumerable: true },\n    rotationRate: { enumerable: true },\n    interval: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DeviceMotionEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = DeviceMotionEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DeviceMotionEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/DeviceMotionEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"absolute\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'absolute' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"alpha\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'alpha' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"beta\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'beta' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"gamma\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"double\"](value, { context: context + \" has member 'gamma' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst EventImpl = require(\"./Event-impl\").implementation;\nconst DeviceOrientationEventInit = require(\"../../../generated/idl/DeviceOrientationEventInit\");\n\nclass DeviceOrientationEventImpl extends EventImpl {}\nDeviceOrientationEventImpl.defaultInit = DeviceOrientationEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: DeviceOrientationEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst DeviceOrientationEventInit = require(\"./DeviceOrientationEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"DeviceOrientationEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DeviceOrientationEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DeviceOrientationEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DeviceOrientationEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'DeviceOrientationEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'DeviceOrientationEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = DeviceOrientationEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'DeviceOrientationEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get alpha() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get alpha' called on an object that is not a valid instance of DeviceOrientationEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"alpha\"];\n    }\n\n    get beta() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get beta' called on an object that is not a valid instance of DeviceOrientationEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"beta\"];\n    }\n\n    get gamma() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get gamma' called on an object that is not a valid instance of DeviceOrientationEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"gamma\"];\n    }\n\n    get absolute() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get absolute' called on an object that is not a valid instance of DeviceOrientationEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"absolute\"];\n    }\n  }\n  Object.defineProperties(DeviceOrientationEvent.prototype, {\n    alpha: { enumerable: true },\n    beta: { enumerable: true },\n    gamma: { enumerable: true },\n    absolute: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DeviceOrientationEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = DeviceOrientationEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DeviceOrientationEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/DeviceOrientationEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"newURL\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"USVString\"](value, {\n        context: context + \" has member 'newURL' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"oldURL\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"USVString\"](value, {\n        context: context + \" has member 'oldURL' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst HashChangeEventInit = require(\"../../../generated/idl/HashChangeEventInit\");\n\nclass HashChangeEventImpl extends EventImpl {\n\n}\nHashChangeEventImpl.defaultInit = HashChangeEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: HashChangeEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HashChangeEventInit = require(\"./HashChangeEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"HashChangeEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HashChangeEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HashChangeEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HashChangeEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'HashChangeEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'HashChangeEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = HashChangeEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'HashChangeEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get oldURL() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oldURL' called on an object that is not a valid instance of HashChangeEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"oldURL\"];\n    }\n\n    get newURL() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get newURL' called on an object that is not a valid instance of HashChangeEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"newURL\"];\n    }\n  }\n  Object.defineProperties(HashChangeEvent.prototype, {\n    oldURL: { enumerable: true },\n    newURL: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HashChangeEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HashChangeEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HashChangeEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/HashChangeEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventModifierInit = require(\"./EventModifierInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventModifierInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"charCode\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'charCode' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"code\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, { context: context + \" has member 'code' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"isComposing\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'isComposing' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"key\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, { context: context + \" has member 'key' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"keyCode\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'keyCode' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"location\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'location' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"repeat\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'repeat' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst { mixin } = require(\"../../utils\");\nconst EventModifierMixinImpl = require(\"./EventModifierMixin-impl\").implementation;\nconst UIEventImpl = require(\"./UIEvent-impl\").implementation;\n\nconst KeyboardEventInit = require(\"../../../generated/idl/KeyboardEventInit\");\n\nclass KeyboardEventImpl extends UIEventImpl {\n  initKeyboardEvent(type, bubbles, cancelable, view, key, location, ctrlKey, altKey, shiftKey, metaKey) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initUIEvent(type, bubbles, cancelable, view, 0);\n    this.key = key;\n    this.location = location;\n    this.ctrlKey = ctrlKey;\n    this.altKey = altKey;\n    this.shiftKey = shiftKey;\n    this.metaKey = metaKey;\n  }\n}\nmixin(KeyboardEventImpl.prototype, EventModifierMixinImpl.prototype);\nKeyboardEventImpl.defaultInit = KeyboardEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: KeyboardEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst KeyboardEventInit = require(\"./KeyboardEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst UIEvent = require(\"./UIEvent.js\");\n\nconst interfaceName = \"KeyboardEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'KeyboardEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"KeyboardEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  UIEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class KeyboardEvent extends globalObject.UIEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'KeyboardEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'KeyboardEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = KeyboardEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'KeyboardEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    getModifierState(keyArg) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getModifierState' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getModifierState' on 'KeyboardEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getModifierState' on 'KeyboardEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getModifierState(...args);\n    }\n\n    initKeyboardEvent(typeArg) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'initKeyboardEvent' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = utils.tryImplForWrapper(curArg);\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[4];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 5\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[5];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unsigned long\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 6\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[6];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 7\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[7];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 8\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[8];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 9\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[9];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initKeyboardEvent' on 'KeyboardEvent': parameter 10\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initKeyboardEvent(...args);\n    }\n\n    get key() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get key' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"key\"];\n    }\n\n    get code() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get code' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"code\"];\n    }\n\n    get location() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get location' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"location\"];\n    }\n\n    get ctrlKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ctrlKey' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"ctrlKey\"];\n    }\n\n    get shiftKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get shiftKey' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"shiftKey\"];\n    }\n\n    get altKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get altKey' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"altKey\"];\n    }\n\n    get metaKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get metaKey' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"metaKey\"];\n    }\n\n    get repeat() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get repeat' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"repeat\"];\n    }\n\n    get isComposing() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get isComposing' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"isComposing\"];\n    }\n\n    get charCode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get charCode' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"charCode\"];\n    }\n\n    get keyCode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get keyCode' called on an object that is not a valid instance of KeyboardEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"keyCode\"];\n    }\n  }\n  Object.defineProperties(KeyboardEvent.prototype, {\n    getModifierState: { enumerable: true },\n    initKeyboardEvent: { enumerable: true },\n    key: { enumerable: true },\n    code: { enumerable: true },\n    location: { enumerable: true },\n    ctrlKey: { enumerable: true },\n    shiftKey: { enumerable: true },\n    altKey: { enumerable: true },\n    metaKey: { enumerable: true },\n    repeat: { enumerable: true },\n    isComposing: { enumerable: true },\n    charCode: { enumerable: true },\n    keyCode: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"KeyboardEvent\", configurable: true },\n    DOM_KEY_LOCATION_STANDARD: { value: 0x00, enumerable: true },\n    DOM_KEY_LOCATION_LEFT: { value: 0x01, enumerable: true },\n    DOM_KEY_LOCATION_RIGHT: { value: 0x02, enumerable: true },\n    DOM_KEY_LOCATION_NUMPAD: { value: 0x03, enumerable: true }\n  });\n  Object.defineProperties(KeyboardEvent, {\n    DOM_KEY_LOCATION_STANDARD: { value: 0x00, enumerable: true },\n    DOM_KEY_LOCATION_LEFT: { value: 0x01, enumerable: true },\n    DOM_KEY_LOCATION_RIGHT: { value: 0x02, enumerable: true },\n    DOM_KEY_LOCATION_NUMPAD: { value: 0x03, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = KeyboardEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: KeyboardEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/KeyboardEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"data\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"any\"](value, { context: context + \" has member 'data' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"lastEventId\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, {\n        context: context + \" has member 'lastEventId' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"origin\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"USVString\"](value, {\n        context: context + \" has member 'origin' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"ports\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (!utils.isObject(value)) {\n        throw new globalObject.TypeError(context + \" has member 'ports' that\" + \" is not an iterable object.\");\n      } else {\n        const V = [];\n        const tmp = value;\n        for (let nextItem of tmp) {\n          nextItem = utils.tryImplForWrapper(nextItem);\n\n          V.push(nextItem);\n        }\n        value = V;\n      }\n\n      ret[key] = value;\n    } else {\n      ret[key] = [];\n    }\n  }\n\n  {\n    const key = \"source\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = utils.tryImplForWrapper(value);\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst MessageEventInit = require(\"../../../generated/idl/MessageEventInit\");\n\nclass MessageEventImpl extends EventImpl {\n  initMessageEvent(type, bubbles, cancelable, data, origin, lastEventId, source, ports) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initEvent(type, bubbles, cancelable);\n    this.data = data;\n    this.origin = origin;\n    this.lastEventId = lastEventId;\n    this.source = source;\n    this.ports = ports;\n  }\n}\nMessageEventImpl.defaultInit = MessageEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: MessageEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst MessageEventInit = require(\"./MessageEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"MessageEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'MessageEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"MessageEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\", \"AudioWorklet\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class MessageEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'MessageEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'MessageEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = MessageEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'MessageEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    initMessageEvent(type) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'initMessageEvent' called on an object that is not a valid instance of MessageEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initMessageEvent' on 'MessageEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initMessageEvent' on 'MessageEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMessageEvent' on 'MessageEvent': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initMessageEvent' on 'MessageEvent': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          curArg = conversions[\"any\"](curArg, {\n            context: \"Failed to execute 'initMessageEvent' on 'MessageEvent': parameter 4\",\n            globals: globalObject\n          });\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[4];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'initMessageEvent' on 'MessageEvent': parameter 5\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[5];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'initMessageEvent' on 'MessageEvent': parameter 6\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[6];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = utils.tryImplForWrapper(curArg);\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[7];\n        if (curArg !== undefined) {\n          if (!utils.isObject(curArg)) {\n            throw new globalObject.TypeError(\n              \"Failed to execute 'initMessageEvent' on 'MessageEvent': parameter 8\" + \" is not an iterable object.\"\n            );\n          } else {\n            const V = [];\n            const tmp = curArg;\n            for (let nextItem of tmp) {\n              nextItem = utils.tryImplForWrapper(nextItem);\n\n              V.push(nextItem);\n            }\n            curArg = V;\n          }\n        } else {\n          curArg = [];\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initMessageEvent(...args);\n    }\n\n    get data() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get data' called on an object that is not a valid instance of MessageEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"data\"];\n    }\n\n    get origin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get origin' called on an object that is not a valid instance of MessageEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"origin\"];\n    }\n\n    get lastEventId() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lastEventId' called on an object that is not a valid instance of MessageEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"lastEventId\"];\n    }\n\n    get source() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get source' called on an object that is not a valid instance of MessageEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"source\"]);\n    }\n\n    get ports() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ports' called on an object that is not a valid instance of MessageEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ports\"]);\n    }\n  }\n  Object.defineProperties(MessageEvent.prototype, {\n    initMessageEvent: { enumerable: true },\n    data: { enumerable: true },\n    origin: { enumerable: true },\n    lastEventId: { enumerable: true },\n    source: { enumerable: true },\n    ports: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"MessageEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = MessageEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: MessageEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/MessageEvent-impl.js\");\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst StorageEvent = require(\"../../../generated/idl/StorageEvent\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { fireAnEvent } = require(\"../helpers/events\");\n\n// https://html.spec.whatwg.org/multipage/webstorage.html#the-storage-interface\nclass StorageImpl {\n  constructor(globalObject, args, privateData) {\n    const { associatedWindow, storageArea, url, type, storageQuota } = privateData;\n\n    this._associatedWindow = associatedWindow;\n    this._items = storageArea;\n    this._url = url;\n    this._type = type;\n    this._quota = storageQuota;\n\n    this._globalObject = globalObject;\n  }\n\n  _dispatchStorageEvent(key, oldValue, newValue) {\n    return this._associatedWindow._currentOriginData.windowsInSameOrigin\n      .filter(target => target !== this._associatedWindow)\n      .forEach(target => fireAnEvent(\"storage\", target, StorageEvent, {\n        key,\n        oldValue,\n        newValue,\n        url: this._url,\n        storageArea: target[\"_\" + this._type]\n      }));\n  }\n\n  get length() {\n    return this._items.size;\n  }\n\n  key(n) {\n    if (n >= this._items.size) {\n      return null;\n    }\n    return [...this._items.keys()][n];\n  }\n\n  getItem(key) {\n    if (this._items.has(key)) {\n      return this._items.get(key);\n    }\n    return null;\n  }\n\n  setItem(key, value) {\n    const oldValue = this._items.get(key) || null;\n\n    if (oldValue === value) {\n      return;\n    }\n\n    // Concatenate all keys and values to measure their length against the quota\n    let itemsTotalLength = key.length + value.length;\n    for (const [curKey, curValue] of this._items) {\n      // If the key already exists, skip it as it will be set to the new value instead\n      if (key !== curKey) {\n        itemsTotalLength += curKey.length + curValue.length;\n      }\n    }\n    if (itemsTotalLength > this._quota) {\n      throw DOMException.create(this._globalObject, [\n        `The ${this._quota}-code unit storage quota has been exceeded.`,\n        \"QuotaExceededError\"\n      ]);\n    }\n\n    setTimeout(this._dispatchStorageEvent.bind(this), 0, key, oldValue, value);\n\n    this._items.set(key, value);\n  }\n\n  removeItem(key) {\n    if (this._items.has(key)) {\n      setTimeout(this._dispatchStorageEvent.bind(this), 0, key, this._items.get(key), null);\n\n      this._items.delete(key);\n    }\n  }\n\n  clear() {\n    if (this._items.size > 0) {\n      setTimeout(this._dispatchStorageEvent.bind(this), 0, null, null, null);\n\n      this._items.clear();\n    }\n  }\n\n  get [idlUtils.supportedPropertyNames]() {\n    return this._items.keys();\n  }\n}\n\nmodule.exports = {\n  implementation: StorageImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Storage\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Storage'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Storage\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Storage {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    key(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'key' called on an object that is not a valid instance of Storage.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'key' on 'Storage': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'key' on 'Storage': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].key(...args);\n    }\n\n    getItem(key) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'getItem' called on an object that is not a valid instance of Storage.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getItem' on 'Storage': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getItem' on 'Storage': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getItem(...args);\n    }\n\n    setItem(key, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'setItem' called on an object that is not a valid instance of Storage.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setItem' on 'Storage': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setItem' on 'Storage': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setItem' on 'Storage': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setItem(...args);\n    }\n\n    removeItem(key) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'removeItem' called on an object that is not a valid instance of Storage.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeItem' on 'Storage': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'removeItem' on 'Storage': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].removeItem(...args);\n    }\n\n    clear() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'clear' called on an object that is not a valid instance of Storage.\");\n      }\n\n      return esValue[implSymbol].clear();\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get length' called on an object that is not a valid instance of Storage.\");\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(Storage.prototype, {\n    key: { enumerable: true },\n    getItem: { enumerable: true },\n    setItem: { enumerable: true },\n    removeItem: { enumerable: true },\n    clear: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Storage\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Storage;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Storage\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n      if (!(key in target)) {\n        keys.add(`${key}`);\n      }\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    const namedValue = target[implSymbol].getItem(P);\n\n    if (namedValue !== null && !(P in target) && !ignoreNamedProps) {\n      return {\n        writable: true,\n        enumerable: true,\n        configurable: true,\n        value: utils.tryWrapperForImpl(namedValue)\n      };\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n\n      if (typeof P === \"string\") {\n        let namedValue = V;\n\n        namedValue = conversions[\"DOMString\"](namedValue, {\n          context: \"Failed to set the '\" + P + \"' property on 'Storage': The provided value\",\n          globals: globalObject\n        });\n\n        target[implSymbol].setItem(P, namedValue);\n\n        return true;\n      }\n    }\n    let ownDesc;\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n    if (!Object.hasOwn(target, P)) {\n      if (desc.get || desc.set) {\n        return false;\n      }\n\n      let namedValue = desc.value;\n\n      namedValue = conversions[\"DOMString\"](namedValue, {\n        context: \"Failed to set the '\" + P + \"' property on 'Storage': The provided value\",\n        globals: globalObject\n      });\n\n      target[implSymbol].setItem(P, namedValue);\n\n      return true;\n    }\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (target[implSymbol].getItem(P) !== null && !(P in target)) {\n      target[implSymbol].removeItem(P);\n      return true;\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/webstorage/Storage-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Storage = require(\"./Storage.js\");\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"key\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"DOMString\"](value, { context: context + \" has member 'key' that\", globals: globalObject });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"newValue\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"DOMString\"](value, {\n          context: context + \" has member 'newValue' that\",\n          globals: globalObject\n        });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"oldValue\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"DOMString\"](value, {\n          context: context + \" has member 'oldValue' that\",\n          globals: globalObject\n        });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"storageArea\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = Storage.convert(globalObject, value, { context: context + \" has member 'storageArea' that\" });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"url\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"USVString\"](value, { context: context + \" has member 'url' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst StorageEventInit = require(\"../../../generated/idl/StorageEventInit\");\n\n// https://html.spec.whatwg.org/multipage/webstorage.html#the-storageevent-interface\nclass StorageEventImpl extends EventImpl {\n  initStorageEvent(type, bubbles, cancelable, key, oldValue, newValue, url, storageArea) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initEvent(type, bubbles, cancelable);\n    this.key = key;\n    this.oldValue = oldValue;\n    this.newValue = newValue;\n    this.url = url;\n    this.storageArea = storageArea;\n  }\n}\nStorageEventImpl.defaultInit = StorageEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: StorageEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst StorageEventInit = require(\"./StorageEventInit.js\");\nconst Storage = require(\"./Storage.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"StorageEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'StorageEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"StorageEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class StorageEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'StorageEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'StorageEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = StorageEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'StorageEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    initStorageEvent(type) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'initStorageEvent' called on an object that is not a valid instance of StorageEvent.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initStorageEvent' on 'StorageEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 4\",\n              globals: globalObject\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[4];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 5\",\n              globals: globalObject\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[5];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 6\",\n              globals: globalObject\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[6];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 7\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[7];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = Storage.convert(globalObject, curArg, {\n              context: \"Failed to execute 'initStorageEvent' on 'StorageEvent': parameter 8\"\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initStorageEvent(...args);\n    }\n\n    get key() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get key' called on an object that is not a valid instance of StorageEvent.\");\n      }\n\n      return esValue[implSymbol][\"key\"];\n    }\n\n    get oldValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oldValue' called on an object that is not a valid instance of StorageEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"oldValue\"];\n    }\n\n    get newValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get newValue' called on an object that is not a valid instance of StorageEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"newValue\"];\n    }\n\n    get url() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get url' called on an object that is not a valid instance of StorageEvent.\");\n      }\n\n      return esValue[implSymbol][\"url\"];\n    }\n\n    get storageArea() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get storageArea' called on an object that is not a valid instance of StorageEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"storageArea\"]);\n    }\n  }\n  Object.defineProperties(StorageEvent.prototype, {\n    initStorageEvent: { enumerable: true },\n    key: { enumerable: true },\n    oldValue: { enumerable: true },\n    newValue: { enumerable: true },\n    url: { enumerable: true },\n    storageArea: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"StorageEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = StorageEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: StorageEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/StorageEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventModifierInit = require(\"./EventModifierInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventModifierInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"changedTouches\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (!utils.isObject(value)) {\n        throw new globalObject.TypeError(context + \" has member 'changedTouches' that\" + \" is not an iterable object.\");\n      } else {\n        const V = [];\n        const tmp = value;\n        for (let nextItem of tmp) {\n          nextItem = utils.tryImplForWrapper(nextItem);\n\n          V.push(nextItem);\n        }\n        value = V;\n      }\n\n      ret[key] = value;\n    } else {\n      ret[key] = [];\n    }\n  }\n\n  {\n    const key = \"targetTouches\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (!utils.isObject(value)) {\n        throw new globalObject.TypeError(context + \" has member 'targetTouches' that\" + \" is not an iterable object.\");\n      } else {\n        const V = [];\n        const tmp = value;\n        for (let nextItem of tmp) {\n          nextItem = utils.tryImplForWrapper(nextItem);\n\n          V.push(nextItem);\n        }\n        value = V;\n      }\n\n      ret[key] = value;\n    } else {\n      ret[key] = [];\n    }\n  }\n\n  {\n    const key = \"touches\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (!utils.isObject(value)) {\n        throw new globalObject.TypeError(context + \" has member 'touches' that\" + \" is not an iterable object.\");\n      } else {\n        const V = [];\n        const tmp = value;\n        for (let nextItem of tmp) {\n          nextItem = utils.tryImplForWrapper(nextItem);\n\n          V.push(nextItem);\n        }\n        value = V;\n      }\n\n      ret[key] = value;\n    } else {\n      ret[key] = [];\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst UIEventImpl = require(\"./UIEvent-impl\").implementation;\n\nconst TouchEventInit = require(\"../../../generated/idl/TouchEventInit\");\n\nclass TouchEventImpl extends UIEventImpl {\n\n}\nTouchEventImpl.defaultInit = TouchEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: TouchEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst TouchEventInit = require(\"./TouchEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst UIEvent = require(\"./UIEvent.js\");\n\nconst interfaceName = \"TouchEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'TouchEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"TouchEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  UIEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class TouchEvent extends globalObject.UIEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'TouchEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'TouchEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = TouchEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'TouchEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get touches() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get touches' called on an object that is not a valid instance of TouchEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"touches\"]);\n    }\n\n    get targetTouches() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get targetTouches' called on an object that is not a valid instance of TouchEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"targetTouches\"]);\n    }\n\n    get changedTouches() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get changedTouches' called on an object that is not a valid instance of TouchEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"changedTouches\"]);\n    }\n\n    get altKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get altKey' called on an object that is not a valid instance of TouchEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"altKey\"];\n    }\n\n    get metaKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get metaKey' called on an object that is not a valid instance of TouchEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"metaKey\"];\n    }\n\n    get ctrlKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ctrlKey' called on an object that is not a valid instance of TouchEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"ctrlKey\"];\n    }\n\n    get shiftKey() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get shiftKey' called on an object that is not a valid instance of TouchEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"shiftKey\"];\n    }\n  }\n  Object.defineProperties(TouchEvent.prototype, {\n    touches: { enumerable: true },\n    targetTouches: { enumerable: true },\n    changedTouches: { enumerable: true },\n    altKey: { enumerable: true },\n    metaKey: { enumerable: true },\n    ctrlKey: { enumerable: true },\n    shiftKey: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"TouchEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = TouchEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: TouchEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/TouchEvent-impl.js\");\n","\"use strict\";\n\n/**\n * Manage all the request and it is able to abort\n * all pending request.\n */\nmodule.exports = class RequestManager {\n  constructor() {\n    this.openedRequests = [];\n  }\n\n  add(req) {\n    this.openedRequests.push(req);\n  }\n\n  remove(req) {\n    const idx = this.openedRequests.indexOf(req);\n    if (idx !== -1) {\n      this.openedRequests.splice(idx, 1);\n    }\n  }\n\n  close() {\n    for (const openedRequest of this.openedRequests) {\n      openedRequest.abort();\n    }\n    this.openedRequests = [];\n  }\n\n  size() {\n    return this.openedRequests.length;\n  }\n};\n","\"use strict\";\n\nclass QueueItem {\n  constructor(onLoad, onError, dependentItem) {\n    this.onLoad = onLoad;\n    this.onError = onError;\n    this.data = null;\n    this.error = null;\n    this.dependentItem = dependentItem;\n  }\n}\n\n/**\n * AsyncResourceQueue is the queue in charge of run the async scripts\n * and notify when they finish.\n */\nmodule.exports = class AsyncResourceQueue {\n  constructor() {\n    this.items = new Set();\n    this.dependentItems = new Set();\n  }\n\n  count() {\n    return this.items.size + this.dependentItems.size;\n  }\n\n  _notify() {\n    if (this._listener) {\n      this._listener();\n    }\n  }\n\n  _check(item) {\n    let promise;\n\n    if (item.onError && item.error) {\n      promise = item.onError(item.error);\n    } else if (item.onLoad && item.data) {\n      promise = item.onLoad(item.data);\n    }\n\n    promise\n      .then(() => {\n        this.items.delete(item);\n        this.dependentItems.delete(item);\n\n        if (this.count() === 0) {\n          this._notify();\n        }\n      });\n  }\n\n  setListener(listener) {\n    this._listener = listener;\n  }\n\n  push(request, onLoad, onError, dependentItem) {\n    const q = this;\n\n    const item = new QueueItem(onLoad, onError, dependentItem);\n\n    q.items.add(item);\n\n    return request\n      .then(data => {\n        item.data = data;\n\n        if (dependentItem && !dependentItem.finished) {\n          q.dependentItems.add(item);\n          return q.items.delete(item);\n        }\n\n        if (onLoad) {\n          return q._check(item);\n        }\n\n        q.items.delete(item);\n\n        if (q.count() === 0) {\n          q._notify();\n        }\n\n        return null;\n      })\n      .catch(err => {\n        item.error = err;\n\n        if (dependentItem && !dependentItem.finished) {\n          q.dependentItems.add(item);\n          return q.items.delete(item);\n        }\n\n        if (onError) {\n          return q._check(item);\n        }\n\n        q.items.delete(item);\n\n        if (q.count() === 0) {\n          q._notify();\n        }\n\n        return null;\n      });\n  }\n\n  notifyItem(syncItem) {\n    for (const item of this.dependentItems) {\n      if (item.dependentItem === syncItem) {\n        this._check(item);\n      }\n    }\n  }\n};\n","\"use strict\";\n\n/**\n * Queue for all the resources to be download except async scripts.\n * Async scripts have their own queue AsyncResourceQueue.\n */\nmodule.exports = class ResourceQueue {\n  constructor({ paused, asyncQueue } = {}) {\n    this.paused = Boolean(paused);\n    this._asyncQueue = asyncQueue;\n  }\n\n  getLastScript() {\n    let head = this.tail;\n\n    while (head) {\n      if (head.isScript) {\n        return head;\n      }\n      head = head.prev;\n    }\n\n    return null;\n  }\n\n  _moreScripts() {\n    let found = false;\n\n    let head = this.tail;\n    while (head && !found) {\n      found = head.isScript;\n      head = head.prev;\n    }\n\n    return found;\n  }\n\n  _notify() {\n    if (this._listener) {\n      this._listener();\n    }\n  }\n\n  setListener(listener) {\n    this._listener = listener;\n  }\n\n  push(request, onLoad, onError, keepLast, element) {\n    const isScript = element ? element.localName === \"script\" : false;\n\n    if (!request) {\n      if (isScript && !this._moreScripts()) {\n        return onLoad();\n      }\n\n      request = Promise.resolve();\n    }\n    const q = this;\n    const item = {\n      isScript,\n      err: null,\n      element,\n      fired: false,\n      data: null,\n      keepLast,\n      prev: q.tail,\n      check() {\n        if (!q.paused && !this.prev && this.fired) {\n          let promise;\n\n          if (this.err && onError) {\n            promise = onError(this.err);\n          }\n\n          if (!this.err && onLoad) {\n            promise = onLoad(this.data);\n          }\n\n          Promise.resolve(promise)\n            .then(() => {\n              if (this.next) {\n                this.next.prev = null;\n                this.next.check();\n              } else { // q.tail===this\n                q.tail = null;\n                q._notify();\n              }\n\n              this.finished = true;\n\n              if (q._asyncQueue) {\n                q._asyncQueue.notifyItem(this);\n              }\n            });\n        }\n      }\n    };\n    if (q.tail) {\n      if (q.tail.keepLast) {\n        // if the tail is the load event in document and we receive a new element to load\n        // we should add this new request before the load event.\n        if (q.tail.prev) {\n          q.tail.prev.next = item;\n        }\n        item.prev = q.tail.prev;\n        q.tail.prev = item;\n        item.next = q.tail;\n      } else {\n        q.tail.next = item;\n        q.tail = item;\n      }\n    } else {\n      q.tail = item;\n    }\n    return request\n      .then(data => {\n        item.fired = 1;\n        item.data = data;\n        item.check();\n      })\n      .catch(err => {\n        item.fired = true;\n        item.err = err;\n        item.check();\n      });\n  }\n\n  resume() {\n    if (!this.paused) {\n      return;\n    }\n    this.paused = false;\n\n    let head = this.tail;\n    while (head && head.prev) {\n      head = head.prev;\n    }\n    if (head) {\n      head.check();\n    }\n  }\n};\n","\"use strict\";\n\nexports.stripLeadingAndTrailingASCIIWhitespace = string => {\n  return string.replace(/^[ \\t\\n\\f\\r]+/u, \"\").replace(/[ \\t\\n\\f\\r]+$/u, \"\");\n};\n\nexports.isomorphicDecode = input => {\n  return Array.from(input, byte => String.fromCodePoint(byte)).join(\"\");\n};\n\nexports.forgivingBase64Decode = data => {\n  let asString;\n  try {\n    asString = atob(data);\n  } catch {\n    return null;\n  }\n\n  return Uint8Array.from(asString, c => c.codePointAt(0));\n};\n","\"use strict\";\nconst { MIMEType } = require(\"whatwg-mimetype\");\nconst { parseURL, serializeURL, percentDecodeString } = require(\"whatwg-url\");\nconst { stripLeadingAndTrailingASCIIWhitespace, isomorphicDecode, forgivingBase64Decode } = require(\"./utils.js\");\n\nmodule.exports = stringInput => {\n  const urlRecord = parseURL(stringInput);\n\n  if (urlRecord === null) {\n    return null;\n  }\n\n  return module.exports.fromURLRecord(urlRecord);\n};\n\nmodule.exports.fromURLRecord = urlRecord => {\n  if (urlRecord.scheme !== \"data\") {\n    return null;\n  }\n\n  const input = serializeURL(urlRecord, true).substring(\"data:\".length);\n\n  let position = 0;\n\n  let mimeType = \"\";\n  while (position < input.length && input[position] !== \",\") {\n    mimeType += input[position];\n    ++position;\n  }\n  mimeType = stripLeadingAndTrailingASCIIWhitespace(mimeType);\n\n  if (position === input.length) {\n    return null;\n  }\n\n  ++position;\n\n  const encodedBody = input.substring(position);\n\n  let body = percentDecodeString(encodedBody);\n\n  // Can't use /i regexp flag because it isn't restricted to ASCII.\n  const mimeTypeBase64MatchResult = /(.*); *[Bb][Aa][Ss][Ee]64$/u.exec(mimeType);\n  if (mimeTypeBase64MatchResult) {\n    const stringBody = isomorphicDecode(body);\n    body = forgivingBase64Decode(stringBody);\n\n    if (body === null) {\n      return null;\n    }\n    mimeType = mimeTypeBase64MatchResult[1];\n  }\n\n  if (mimeType.startsWith(\";\")) {\n    mimeType = `text/plain${mimeType}`;\n  }\n\n  let mimeTypeRecord;\n  try {\n    mimeTypeRecord = new MIMEType(mimeType);\n  } catch {\n    mimeTypeRecord = new MIMEType(\"text/plain;charset=US-ASCII\");\n  }\n\n  return {\n    mimeType: mimeTypeRecord,\n    body\n  };\n};\n","\"use strict\";\n\n/**\n * Sends a response to an undici handler by streaming data from a Node.js Readable stream.\n *\n * ## Why this exists\n *\n * undici's new handler API (onRequestStart, onResponseStart, onResponseData, onResponseEnd, onResponseError)\n * requires a \"controller\" object with pause/resume/abort methods. When responses flow through undici's\n * normal network stack, undici provides this controller. But when we generate responses ourselves\n * (e.g., for file: URLs, data: URLs, or synthetic responses from interceptors), we need to provide\n * our own controller.\n *\n * This helper creates a controller backed by a Node.js Readable stream, giving callers proper\n * pause/resume and abort support. It follows the pattern from undici/lib/interceptor/cache.js.\n *\n * ## Usage\n *\n * ```javascript\n * const stream = fs.createReadStream(filePath);\n * // or: const stream = Readable.from(buffer);\n * // or: const stream = Readable.fromWeb(response.body);\n *\n * sendStreamResponse(handler, stream, {\n *   status: 200,\n *   statusText: \"OK\",\n *   headers: { \"content-type\": \"text/plain\" },\n *   context: { history: [\"file:///path/to/file\"] }\n * });\n * ```\n *\n * The function handles all stream events and translates them to handler callbacks.\n * If the stream is destroyed (e.g., via controller.abort()), pending operations are cancelled.\n *\n * @param {object} handler - undici handler with new API methods (onRequestStart, onResponseStart, etc.)\n * @param {Readable} stream - Node.js Readable stream containing the response body\n * @param {object} options - Response metadata\n * @param {number} options.status - HTTP status code\n * @param {string} [options.statusText] - HTTP status text (default: \"\")\n * @param {object} [options.headers] - Response headers as {name: value} object (default: {})\n * @param {object} [options.context] - Context object passed to onRequestStart (default: {})\n */\nfunction sendStreamResponse(handler, stream, { status, statusText = \"\", headers = {}, context = {} }) {\n  const controller = {\n    resume() {\n      stream.resume();\n    },\n    pause() {\n      stream.pause();\n    },\n    get paused() {\n      return stream.isPaused();\n    },\n    get aborted() {\n      return stream.errored !== null;\n    },\n    get reason() {\n      return stream.errored;\n    },\n    abort(reason) {\n      stream.destroy(reason);\n    }\n  };\n\n  stream\n    .on(\"error\", err => {\n      if (!stream.readableEnded) {\n        handler.onResponseError?.(controller, err);\n      }\n    })\n    .on(\"close\", () => {\n      if (!stream.errored) {\n        handler.onResponseEnd?.(controller, {});\n      }\n    })\n    .on(\"data\", chunk => {\n      handler.onResponseData?.(controller, chunk);\n    });\n\n  handler.onRequestStart?.(controller, context);\n\n  if (stream.destroyed) {\n    return;\n  }\n\n  handler.onResponseStart?.(controller, status, headers, statusText);\n}\n\nmodule.exports = { sendStreamResponse };\n","","\"use strict\";\nconst fs = require(\"fs\");\nconst { Readable } = require(\"stream\");\nconst { fileURLToPath } = require(\"url\");\nconst { parseURL, serializeURL, serializeURLOrigin, serializePath } = require(\"whatwg-url\");\nconst dataURLFromRecord = require(\"data-urls\").fromURLRecord;\nconst { Dispatcher } = require(\"undici\");\nconst WrapHandler = require(\"undici/lib/handler/wrap-handler.js\");\nconst UnwrapHandler = require(\"undici/lib/handler/unwrap-handler.js\");\nconst { toBase64 } = require(\"@exodus/bytes/base64.js\");\nconst { utf8Encode } = require(\"../../living/helpers/encoding\");\nconst { sendStreamResponse } = require(\"./stream-handler\");\n\nconst packageVersion = require(\"../../../../package.json\").version;\n\nconst DEFAULT_USER_AGENT = `Mozilla/5.0 (${process.platform || \"unknown OS\"}) AppleWebKit/537.36 ` +\n                           `(KHTML, like Gecko) jsdom/${packageVersion}`;\nconst MAX_REDIRECTS = 20;\n\n/**\n * JSDOMDispatcher - Full undici Dispatcher implementation for jsdom.\n *\n * Handles:\n * - data: URLs (decode and return)\n * - file: URLs (read from filesystem)\n * - HTTP(S) and web sockets: follows redirects manually, capturing cookies at each hop\n *\n * Callers should provide the expected opaque fields when possible, to ensure that various parts of the jsdom pipeline\n * have enough information. See the `dispatch()` JSDoc for details.\n */\nclass JSDOMDispatcher extends Dispatcher {\n  #baseDispatcher;\n  #cookieJar;\n  #userAgent;\n  #userInterceptors;\n\n  constructor({ baseDispatcher, cookieJar, userAgent, userInterceptors = [] }) {\n    super();\n    this.#baseDispatcher = baseDispatcher;\n    this.#cookieJar = cookieJar;\n    this.#userAgent = userAgent || DEFAULT_USER_AGENT;\n    this.#userInterceptors = userInterceptors;\n  }\n\n  /**\n   * Dispatch a request through the jsdom resource loading pipeline.\n   *\n   * Vaguely corresponds to:\n   * - https://fetch.spec.whatwg.org/#concept-fetch: in theory, all jsdom fetches should go through here, like all web\n   *   platform fetches go through #concept-fetch.\n   * - https://fetch.spec.whatwg.org/#concept-scheme-fetch: the code is more like skipping straight to scheme fetch.\n   *\n   * @param {object} opts - undici dispatch options\n   * @param {object} [opts.opaque] - jsdom-specific request context (may be undefined for WebSocket upgrades)\n   * @param {Element|null} opts.opaque.element - DOM element that triggered the request\n   * @param {string} opts.opaque.url - Full request URL (since we cannot reconstruct it from `opts.origin + opts.path`\n   * for `file:` URLs). If given, `opts.origin`, `opts.path`, and `opts.query` are ignored.\n   * @param {string} [opts.opaque.origin] - Request origin for CORS (used by XHR)\n   * @param {boolean} [opts.opaque.corsMode] - Enable CORS validation during redirects (used by XHR)\n   * @param {boolean} [opts.opaque.withCredentials] - Include cookies cross-origin (used by XHR)\n   * @param {Object} [opts.opaque.auth] - Auth credentials {user, pass} for 401 Basic auth handling\n   * @param {Object} [opts.opaque.preflight] - If present, do CORS preflight before main request\n   * @param {string[]} [opts.opaque.preflight.unsafeHeaders] - Non-simple headers that need to be allowed\n   * @param {object} handler - undici handler\n   */\n  dispatch(opts, handler) {\n    // Wrap handler to normalize OLD API (onConnect/onHeaders/onData/onComplete/onError) to NEW API\n    // (onRequestStart/onResponseStart/onResponseData/onResponseEnd/onResponseError). This is necessary because undici's\n    // internals call the old API a lot, despite it being undocumented:\n    // * https://github.com/nodejs/undici/issues/4771\n    // * https://github.com/nodejs/undici/issues/4780\n    const wrappedHandler = WrapHandler.wrap(handler);\n\n    // Get URL from opaque if present (required for file: URLs since they have origin \"null\"),\n    // otherwise reconstruct from opts.origin + opts.path (works for http/https/ws/wss)\n    const urlString = opts.opaque?.url || (opts.origin + opts.path);\n    const urlRecord = parseURL(urlString);\n\n    if (urlRecord === null) {\n      wrappedHandler.onResponseError?.(null, new TypeError(`Invalid URL: ${urlString}`));\n      return false;\n    }\n\n    if (urlRecord.scheme === \"data\") {\n      return this.#dispatchDataURL(urlRecord, wrappedHandler);\n    }\n\n    if (urlRecord.scheme === \"file\") {\n      return this.#dispatchFileURL(urlRecord, wrappedHandler);\n    }\n\n    // HTTP(S) - handles redirects, CORS, preflight, and WebSocket upgrades.\n    // #dispatchHTTP is async but we can't await it here (dispatch() must be sync per the undici Dispatcher API).\n    // Catch rejections so that errors (e.g. from the undici dispatch chain throwing) are forwarded to the handler\n    // instead of becoming unhandled rejections that silently prevent the response promise from ever resolving.\n    this.#dispatchHTTP(urlRecord, wrappedHandler, opts).catch(err => {\n      wrappedHandler.onResponseError?.(null, err);\n    });\n    return true;\n  }\n\n  /**\n   * Handle `data:` URLs by decoding them and returning the body.\n   *\n   * Corresponds fairly directly to https://fetch.spec.whatwg.org/#concept-scheme-fetch's \"data\" scheme case.\n   */\n  #dispatchDataURL(urlRecord, handler) {\n    const dataURL = dataURLFromRecord(urlRecord);\n    if (dataURL === null) {\n      const error = new TypeError(\"Invalid data: URL\");\n      handler.onResponseError?.(null, error);\n      return false;\n    }\n\n    const stream = Readable.from([dataURL.body]);\n\n    sendStreamResponse(handler, stream, {\n      status: 200,\n      statusText: \"OK\",\n      headers: { \"content-type\": dataURL.mimeType.toString() },\n      context: { finalURL: urlRecord }\n    });\n\n    return true;\n  }\n\n  /**\n   * Handle `file:` URLs by reading from the filesystem.\n   *\n   * Corresponds fairly directly to https://fetch.spec.whatwg.org/#concept-scheme-fetch's \"file\" scheme case.\n   */\n  #dispatchFileURL(urlRecord, handler) {\n    const filePath = fileURLToPath(serializeURL(urlRecord));\n    const stream = fs.createReadStream(filePath);\n\n    sendStreamResponse(handler, stream, {\n      status: 200,\n      statusText: \"OK\",\n      context: { finalURL: urlRecord }\n    });\n\n    return true;\n  }\n\n  /**\n   * High-level HTTP(S) fetch with redirect handling, CORS validation, and preflight.\n   *\n   * Corresponds roughly to https://fetch.spec.whatwg.org/#concept-http-fetch, although some parts of\n   * https://fetch.spec.whatwg.org/#concept-fetch also live here.\n   */\n  async #dispatchHTTP(urlRecord, handler, opts) {\n    const { corsMode, origin, withCredentials, auth, preflight } = opts.opaque || {};\n    const requestFragment = urlRecord.fragment;\n    let currentURL = urlRecord;\n    let currentMethod = opts.method || \"GET\";\n    let currentBody = opts.body ?? null;\n    const currentHeaders = { ...this.#normalizeHeadersToObject(opts.headers) };\n    let effectiveOrigin = origin; // CORS tracking - may become \"null\" after cross-origin redirects\n    let receivedAuthChallenge = false;\n    const ctx = { finalURL: null };\n\n    // Create a proxy controller that forwards to the current underlying controller.\n    // This provides a stable reference across redirect hops.\n    let currentController;\n    let onRequestStartCalled = false;\n    const proxyController = {\n      abort(reason) {\n        currentController.abort(reason);\n      },\n      pause() {\n        currentController.pause();\n      },\n      resume() {\n        currentController.resume();\n      },\n      get paused() {\n        return currentController.paused;\n      },\n      get aborted() {\n        return currentController.aborted;\n      },\n      get reason() {\n        return currentController.reason;\n      }\n    };\n\n    // Callback for #doSingleRequest to invoke when a controller becomes available\n    function onControllerReady(controller) {\n      currentController = controller;\n      if (!onRequestStartCalled) {\n        onRequestStartCalled = true;\n        handler.onRequestStart?.(proxyController, ctx);\n      }\n    }\n\n    // Handle CORS preflight if needed\n    if (preflight) {\n      const preflightHeaders = {\n        Origin: origin\n      };\n      preflightHeaders[\"Access-Control-Request-Method\"] = currentMethod;\n      if (preflight.unsafeHeaders?.length > 0) {\n        preflightHeaders[\"Access-Control-Request-Headers\"] = preflight.unsafeHeaders.join(\", \");\n      }\n\n      const preflightResult = await this.#doSingleRequest(\n        currentURL,\n        \"OPTIONS\",\n        preflightHeaders,\n        null,\n        { ...opts.opaque, origin, withCredentials },\n        undefined, // no upgrade for preflight\n        opts,\n        onControllerReady\n      );\n\n      if (preflightResult.error) {\n        handler.onResponseError?.(null, preflightResult.error);\n        return;\n      }\n\n      // Validate preflight response status\n      if (preflightResult.status < 200 || preflightResult.status > 299) {\n        handler.onResponseError?.(null, new Error(\n          \"Response for preflight has invalid HTTP status code \" + preflightResult.status\n        ));\n        return;\n      }\n\n      // CORS validation on preflight response\n      const acao = preflightResult.headers[\"access-control-allow-origin\"];\n      if (acao !== \"*\" && acao !== origin) {\n        handler.onResponseError?.(null, new Error(\"Cross origin \" + origin + \" forbidden\"));\n        return;\n      }\n      if (withCredentials) {\n        const acac = preflightResult.headers[\"access-control-allow-credentials\"];\n        if (acac !== \"true\") {\n          handler.onResponseError?.(null, new Error(\"Credentials forbidden\"));\n          return;\n        }\n      }\n\n      // Validate allowed headers\n      const acahStr = preflightResult.headers[\"access-control-allow-headers\"];\n      const acah = new Set(acahStr ? acahStr.toLowerCase().split(/,\\s*/) : []);\n      if (!acah.has(\"*\")) {\n        for (const unsafeHeader of preflight.unsafeHeaders || []) {\n          if (!acah.has(unsafeHeader.toLowerCase())) {\n            handler.onResponseError?.(null, new Error(\"Header \" + unsafeHeader + \" forbidden\"));\n            return;\n          }\n        }\n      }\n    }\n\n    // Redirect loop\n    for (let redirectCount = 0; redirectCount <= MAX_REDIRECTS; redirectCount++) {\n      ctx.finalURL = currentURL;\n      const currentOrigin = serializeURLOrigin(currentURL);\n\n      // Clone headers for this request\n      const requestHeaders = { ...currentHeaders };\n\n      // Add auth header if needed\n      if (receivedAuthChallenge && auth) {\n        const authString = `${auth.user || \"\"}:${auth.pass || \"\"}`;\n        requestHeaders.Authorization = \"Basic \" + toBase64(utf8Encode(authString));\n      }\n\n      const result = await this.#doSingleRequest(\n        currentURL,\n        currentMethod,\n        requestHeaders,\n        currentBody,\n        { ...opts.opaque, origin, withCredentials },\n        opts.upgrade,\n        opts,\n        onControllerReady\n      );\n\n      // WebSocket upgrade\n      if (result.upgraded) {\n        handler.onRequestUpgrade?.(proxyController, result.statusCode, result.headers, result.socket);\n        return;\n      }\n\n      if (result.error) {\n        handler.onResponseError?.(null, result.error);\n        return;\n      }\n\n      // Handle 401 auth challenge\n      if (result.status === 401 && auth && !receivedAuthChallenge) {\n        const wwwAuth = result.headers[\"www-authenticate\"] || \"\";\n        if (/^Basic /i.test(wwwAuth)) {\n          receivedAuthChallenge = true;\n          continue;\n        }\n      }\n\n      // Handle redirect\n      const { location } = result.headers;\n      if (result.status >= 300 && result.status < 400 && location) {\n        const targetURL = parseURL(location, { baseURL: currentURL });\n        if (!targetURL) {\n          handler.onResponseError?.(null, new TypeError(\"Invalid redirect URL\"));\n          return;\n        }\n\n        // Per fetch spec: if location's fragment is null, inherit from request\n        if (targetURL.fragment === null) {\n          targetURL.fragment = requestFragment;\n        }\n\n        // Per fetch spec: if locationURL's scheme is not HTTP(S), return a network error\n        if (targetURL.scheme !== \"http\" && targetURL.scheme !== \"https\") {\n          handler.onResponseError?.(null, new Error(\"Cannot redirect to non-HTTP(S) URL\"));\n          return;\n        }\n\n        // Method change per fetch spec \"HTTP-redirect fetch\"\n        // 301/302 + POST → GET, 303 + non-GET/HEAD → GET\n        if (((result.status === 301 || result.status === 302) && currentMethod === \"POST\") ||\n            (result.status === 303 && ![\"GET\", \"HEAD\"].includes(currentMethod))) {\n          currentMethod = \"GET\";\n          currentBody = null;\n          this.#deleteRequestHeader(currentHeaders, \"content-encoding\");\n          this.#deleteRequestHeader(currentHeaders, \"content-language\");\n          this.#deleteRequestHeader(currentHeaders, \"content-location\");\n          this.#deleteRequestHeader(currentHeaders, \"content-type\");\n        }\n\n        const targetOrigin = serializeURLOrigin(targetURL);\n\n        // Authorization header removal on cross-origin redirect\n        if (currentOrigin !== targetOrigin) {\n          this.#deleteRequestHeader(currentHeaders, \"authorization\");\n        }\n\n        // CORS handling for cross-origin redirects (only if origin is set, indicating XHR/fetch)\n        const targetIsCrossOrigin = origin !== undefined && origin !== targetOrigin;\n        if (corsMode || targetIsCrossOrigin) {\n          // CORS validation on redirect response (if source was cross-origin)\n          if (origin !== currentOrigin) {\n            const acao = result.headers[\"access-control-allow-origin\"];\n            if (acao !== \"*\" && acao !== origin) {\n              handler.onResponseError?.(null, new Error(\"Cross origin \" + origin + \" forbidden\"));\n              return;\n            }\n            if (withCredentials) {\n              const acac = result.headers[\"access-control-allow-credentials\"];\n              if (acac !== \"true\") {\n                handler.onResponseError?.(null, new Error(\"Credentials forbidden\"));\n                return;\n              }\n            }\n            // Userinfo check - forbid redirects to URLs with username/password\n            if (targetURL.username || targetURL.password) {\n              handler.onResponseError?.(null, new Error(\"Userinfo forbidden in cors redirect\"));\n              return;\n            }\n            // Update effective origin - becomes \"null\" after cross-origin→cross-origin redirect\n            if (currentOrigin !== targetOrigin) {\n              effectiveOrigin = \"null\";\n            }\n          }\n\n          // Add Origin header for cross-origin target or if effective origin became \"null\"\n          if (targetIsCrossOrigin || effectiveOrigin === \"null\") {\n            currentHeaders.Origin = effectiveOrigin;\n          }\n        }\n\n        currentURL = targetURL;\n        continue;\n      }\n\n      // Final response - CORS validation (if destination is cross-origin or effective origin is \"null\")\n      if (origin !== undefined && (origin !== currentOrigin || effectiveOrigin === \"null\")) {\n        const acao = result.headers[\"access-control-allow-origin\"];\n        if (acao !== \"*\" && acao !== effectiveOrigin) {\n          handler.onResponseError?.(null, new Error(\"Cross origin \" + effectiveOrigin + \" forbidden\"));\n          return;\n        }\n        if (withCredentials) {\n          const acac = result.headers[\"access-control-allow-credentials\"];\n          if (acac !== \"true\") {\n            handler.onResponseError?.(null, new Error(\"Credentials forbidden\"));\n            return;\n          }\n        }\n      }\n\n      // Stream response to handler\n      handler.onResponseStart?.(proxyController, result.status, result.headers, result.statusText);\n\n      // Forward body chunks to handler\n      result.forwardBodyTo(handler);\n      return;\n    }\n\n    handler.onResponseError?.(null, new Error(`Too many redirects (max ${MAX_REDIRECTS})`));\n  }\n\n  /**\n   * Perform a single HTTP request (no redirects).\n   * Handles cookies based on cross-origin/credentials settings.\n   * Returns response metadata immediately, with a forwardBodyTo() method to stream the body later.\n   *\n   * For WebSocket upgrades, returns { upgraded: true, controller, statusCode, headers, socket }.\n   *\n   * Mostly corresponds to https://fetch.spec.whatwg.org/#concept-http-network-fetch.\n   *\n   * @param {object} url - URL record to request\n   * @param {string} method - HTTP method\n   * @param {object} headers - Request headers\n   * @param {*} body - Request body\n   * @param {object} opaque - jsdom opaque options\n   * @param {string} upgrade - Upgrade protocol (e.g., \"websocket\")\n   * @param {object} originalOpts - Original dispatch options to preserve extra undici options\n   * @param {function} onControllerReady - Callback invoked when controller is available\n   */\n  async #doSingleRequest(url, method, headers, body, opaque, upgrade, originalOpts, onControllerReady) {\n    const { origin: requestOrigin, withCredentials } = opaque || {};\n\n    // Build headers with defaults\n    const requestHeaders = { ...headers };\n    this.#setDefaultHeaders(requestHeaders);\n\n    if (body === null && (method === \"POST\" || method === \"PUT\")) {\n      requestHeaders[\"Content-Length\"] = \"0\";\n    } else if (body !== null && body.byteLength !== undefined) {\n      // The `body.byteLength !== undefined` check is equivalent to the spec case where httpRequest's body's length is\n      // null, because body is a stream.\n      requestHeaders[\"Content-Length\"] = String(body.byteLength);\n    }\n\n    // Determine if this is cross-origin (for cookie handling)\n    const urlOrigin = serializeURLOrigin(url);\n    const crossOrigin = requestOrigin !== undefined && requestOrigin !== urlOrigin;\n\n    // Only handle cookies for same-origin requests, or cross-origin with credentials\n    // Don't send cookies for preflight requests\n    const isPreflight = method === \"OPTIONS\" &&\n      this.#hasRequestHeader(headers, \"Access-Control-Request-Method\");\n    const shouldHandleCookies = (!crossOrigin || withCredentials) && !isPreflight;\n\n    const urlSerialized = serializeURL(url);\n\n    if (shouldHandleCookies) {\n      const cookieString = this.#cookieJar.getCookieStringSync(urlSerialized);\n      if (cookieString) {\n        requestHeaders.Cookie = cookieString;\n      }\n    }\n\n    // Spread original opts to preserve extra undici options (e.g., idempotent, bodyTimeout),\n    // then override with our specific values.\n    // If opaque.url was provided, derive origin/path from it and null out query.\n    // Otherwise, pass through origin/path/query unchanged.\n    const hasOpaqueURL = opaque?.url !== undefined;\n    const dispatchOpts = {\n      ...originalOpts,\n      origin: hasOpaqueURL ? urlOrigin : originalOpts.origin,\n      path: hasOpaqueURL ? serializePathForUndici(url) : originalOpts.path,\n      query: hasOpaqueURL ? null : originalOpts.query,\n      method,\n      headers: requestHeaders,\n      body,\n      upgrade,\n      opaque: { ...opaque, url: urlSerialized }\n    };\n\n    const innerDispatch = this.#buildDispatchChain();\n\n    return new Promise(resolve => {\n      let responseHeaders, streamError;\n      let bodyHandler = null;\n      let pendingChunks = [];\n      let ended = false;\n      let responseStarted = false;\n\n      innerDispatch(dispatchOpts, {\n        onRequestStart: controller => {\n          onControllerReady(controller);\n        },\n        onRequestUpgrade: (controller, statusCode, headersObj, socket) => {\n          if (controller.aborted) {\n            resolve({ error: controller.reason });\n            return;\n          }\n          if (shouldHandleCookies) {\n            this.#storeCookiesFromHeaders(headersObj, urlSerialized);\n          }\n          resolve({ upgraded: true, controller, statusCode, headers: headersObj, socket });\n        },\n        onResponseStart: (controller, statusCode, headersObj, statusText) => {\n          if (controller.aborted) {\n            resolve({ error: controller.reason });\n            return;\n          }\n\n          responseHeaders = headersObj;\n          responseStarted = true;\n\n          // Create a mechanism to forward body to handler later\n          function forwardBodyTo(fwdHandler) {\n            bodyHandler = fwdHandler;\n            // Forward any chunks that arrived before forwardBodyTo was called\n            for (const chunk of pendingChunks) {\n              fwdHandler.onResponseData?.(controller, chunk);\n            }\n            pendingChunks = null;\n            if (streamError) {\n              fwdHandler.onResponseError?.(controller, streamError);\n            } else if (ended) {\n              fwdHandler.onResponseEnd?.(controller, {});\n            }\n          }\n\n          resolve({\n            status: statusCode,\n            statusText: statusText || \"\",\n            headers: responseHeaders,\n            url,\n            forwardBodyTo\n          });\n        },\n        onResponseData: (controller, chunk) => {\n          if (controller.aborted) {\n            return;\n          }\n          if (bodyHandler) {\n            bodyHandler.onResponseData?.(controller, chunk);\n          } else {\n            pendingChunks.push(chunk);\n          }\n        },\n        onResponseEnd: (controller, trailers) => {\n          if (controller.aborted) {\n            if (bodyHandler) {\n              bodyHandler.onResponseError?.(controller, controller.reason);\n            } else {\n              streamError = controller.reason;\n            }\n            return;\n          }\n          if (shouldHandleCookies) {\n            this.#storeCookiesFromHeaders(responseHeaders, urlSerialized);\n          }\n          if (bodyHandler) {\n            bodyHandler.onResponseEnd?.(controller, trailers);\n          } else {\n            ended = true;\n          }\n        },\n        onResponseError: (controller, err) => {\n          if (responseStarted) {\n            // Error occurred mid-stream - forward to body handler\n            if (bodyHandler) {\n              bodyHandler.onResponseError?.(controller, err);\n            } else {\n              streamError = err;\n            }\n          } else {\n            resolve({ error: err });\n          }\n        }\n      });\n    });\n  }\n\n  /**\n   * Build the dispatch chain with user interceptors applied.\n   */\n  #buildDispatchChain() {\n    // Convert handlers to old-style before passing to the base dispatcher. When Node's built-in fetch() has run,\n    // it registers a v6 undici Agent as the global dispatcher via the shared Symbol.for('undici.globalDispatcher.1').\n    // Our v7 code passes new-style handlers, which v6 rejects. Old-style handlers are accepted by both v6 and v7.\n    // See https://github.com/jsdom/jsdom/issues/4047\n    let innerDispatch = (opts, h) => {\n      return this.#baseDispatcher.dispatch(opts, UnwrapHandler.unwrap(h));\n    };\n\n    // Apply user interceptors from innermost to outermost\n    for (let i = this.#userInterceptors.length - 1; i >= 0; i--) {\n      const interceptor = this.#userInterceptors[i];\n      const nextDispatch = innerDispatch;\n      innerDispatch = (opts, h) => interceptor(nextDispatch)(opts, h);\n    }\n\n    return innerDispatch;\n  }\n\n  /**\n   * Normalize headers to an object format.\n   * Callers pass either HeaderList (iterable) or plain objects.\n   */\n  #normalizeHeadersToObject(headers) {\n    if (!headers) {\n      return {};\n    }\n\n    // HeaderList has Symbol.iterator; plain objects don't\n    if (typeof headers[Symbol.iterator] === \"function\") {\n      const obj = {};\n      for (const [name, value] of headers) {\n        obj[name] = value;\n      }\n      return obj;\n    }\n\n    return { ...headers };\n  }\n\n  /**\n   * Check if a request header exists (case-insensitive).\n   * Request headers may have user-controlled casing.\n   */\n  #hasRequestHeader(requestHeaders, name) {\n    const lowerName = name.toLowerCase();\n    return Object.keys(requestHeaders).some(key => key.toLowerCase() === lowerName);\n  }\n\n  /**\n   * Delete a request header (case-insensitive).\n   * Request headers may have user-controlled casing. Mutates the object in place.\n   */\n  #deleteRequestHeader(requestHeaders, name) {\n    const lowerName = name.toLowerCase();\n    for (const key of Object.keys(requestHeaders)) {\n      if (key.toLowerCase() === lowerName) {\n        delete requestHeaders[key];\n      }\n    }\n  }\n\n  /**\n   * Set default request headers if not already present.\n   * Mutates the headers object in place.\n   */\n  #setDefaultHeaders(requestHeaders) {\n    if (!this.#hasRequestHeader(requestHeaders, \"User-Agent\")) {\n      requestHeaders[\"User-Agent\"] = this.#userAgent;\n    }\n    if (!this.#hasRequestHeader(requestHeaders, \"Accept-Language\")) {\n      requestHeaders[\"Accept-Language\"] = \"en\";\n    }\n    if (!this.#hasRequestHeader(requestHeaders, \"Accept\")) {\n      requestHeaders.Accept = \"*/*\";\n    }\n    if (!this.#hasRequestHeader(requestHeaders, \"Accept-Encoding\")) {\n      requestHeaders[\"Accept-Encoding\"] = \"gzip, deflate\";\n    }\n  }\n\n  /**\n   * Extract and store cookies from response headers.\n   */\n  #storeCookiesFromHeaders(headers, url) {\n    if (!headers[\"set-cookie\"]) {\n      return;\n    }\n    const cookies = Array.isArray(headers[\"set-cookie\"]) ?\n      headers[\"set-cookie\"] :\n      [headers[\"set-cookie\"]];\n    for (const cookie of cookies) {\n      this.#cookieJar.setCookieSync(cookie, url, { ignoreError: true });\n    }\n  }\n\n  // Dispatcher API methods - forward close/destroy to base dispatcher\n\n  close(...args) {\n    return this.#baseDispatcher.close(...args);\n  }\n\n  destroy(...args) {\n    return this.#baseDispatcher.destroy(...args);\n  }\n\n  /**\n   * Create a new JSDOMDispatcher with additional interceptors.\n   * The new interceptors are added as the outermost (first to see requests, last to see responses).\n   */\n  compose(...additionalInterceptors) {\n    return new JSDOMDispatcher({\n      baseDispatcher: this.#baseDispatcher,\n      cookieJar: this.#cookieJar,\n      userAgent: this.#userAgent,\n      userInterceptors: [...additionalInterceptors, ...this.#userInterceptors]\n    });\n  }\n\n  get closed() {\n    return this.#baseDispatcher.closed;\n  }\n\n  get destroyed() {\n    return this.#baseDispatcher.destroyed;\n  }\n}\n\n/**\n * High-level GET fetch that collects the full response body. Used for subresources and `JSDOM.fromURL()`.\n *\n * @param {Dispatcher} dispatcher - The undici dispatcher to use\n * @param {object} opts - Request options\n * @param {string} opts.url - The URL to fetch\n * @param {object} [opts.headers] - Request headers (include Referer if needed)\n * @param {AbortSignal} [opts.signal] - Abort signal\n * @param {Element} [opts.element] - The element initiating the request (default: null)\n * @returns {Promise<{status: number, headers: object, body: Uint8Array, url: string, ok: boolean}>}\n */\nasync function fetchCollected(dispatcher, { url, headers, signal, element = null }) {\n  const urlRecord = parseURL(url);\n  if (!urlRecord) {\n    throw new TypeError(`Invalid URL: ${url}`);\n  }\n\n  const response = await dispatcher.request({\n    origin: serializeURLOrigin(urlRecord),\n    path: serializePathForUndici(urlRecord),\n    method: \"GET\",\n    headers,\n    signal,\n    opaque: { element, url }\n  });\n\n  const body = await response.body.bytes();\n\n  // Get final URL from context (set by dispatcher after handling redirects)\n  const finalURL = serializeURL(response.context.finalURL);\n\n  return {\n    status: response.statusCode,\n    headers: response.headers,\n    body,\n    url: finalURL,\n    ok: response.statusCode >= 200 && response.statusCode < 300\n  };\n}\n\n/**\n * Serialize a URL record's path and query for undici's `path` option.\n */\nfunction serializePathForUndici(urlRecord) {\n  return serializePath(urlRecord) + (urlRecord.query ? \"?\" + urlRecord.query : \"\");\n}\n\nmodule.exports = {\n  JSDOMDispatcher,\n  DEFAULT_USER_AGENT,\n  fetchCollected\n};\n","\"use strict\";\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { fireAnEvent } = require(\"../../living/helpers/events\");\nconst { fetchCollected } = require(\"./jsdom-dispatcher\");\n\nmodule.exports = class PerDocumentResourceLoader {\n  constructor(document) {\n    this._document = document;\n    this._defaultEncoding = document._encoding;\n    const defaultView = document._defaultView;\n    this._dispatcher = defaultView ? defaultView._dispatcher : null;\n    this._loadSubresources = defaultView ? defaultView._loadSubresources : false;\n    this._requestManager = document._requestManager;\n    this._queue = document._queue;\n    this._deferQueue = document._deferQueue;\n    this._asyncQueue = document._asyncQueue;\n  }\n\n  fetch(url, { element, onLoad, onError }) {\n    if (!this._loadSubresources) {\n      return null;\n    }\n\n    const abortController = new AbortController();\n\n    // Add it to the request manager. The request manager is very old code, but it works with the contract of \"has an\n    // `abort()` method\". One day this whole subsystem will be refactored to use `AbortController`s natively, but for\n    // now this just happens to work.\n    //\n    // Note that we add the controller now, before calling `fetchCollected()`, so that if any interceptors or other code\n    // calls `window.close()`, the abort controller is already registered and will see the abort.\n    this._requestManager.add(abortController);\n\n    const fetchPromise = fetchCollected(this._dispatcher, {\n      url,\n      headers: { Referer: this._document.URL },\n      signal: abortController.signal,\n      element: idlUtils.wrapperForImpl(element)\n    });\n\n    const onErrorWrapped = cause => {\n      this._requestManager.remove(abortController);\n\n      // If the request was aborted, don't fire error events\n      if (cause && cause.name === \"AbortError\") {\n        return Promise.resolve();\n      }\n\n      if (onError) {\n        onError(cause);\n      }\n\n      fireAnEvent(\"error\", element);\n\n      const jsomError = new Error(`Could not load ${element.localName}: \"${url}\"`, { cause });\n      jsomError.type = \"resource-loading\";\n      jsomError.url = url;\n\n      this._document._defaultView._virtualConsole.emit(\"jsdomError\", jsomError);\n\n      return Promise.resolve();\n    };\n\n    const onLoadWrapped = response => {\n      this._requestManager.remove(abortController);\n\n      // Extract data and create a response-like object for compatibility\n      const { body: data, status, headers, url: responseURL } = response;\n      const responseObj = {\n        ok: status >= 200 && status < 300,\n        status,\n        headers: {\n          get(name) {\n            return headers[name.toLowerCase()] ?? null;\n          }\n        },\n        url: responseURL\n      };\n\n      try {\n        const result = onLoad ? onLoad(data, responseObj) : undefined;\n\n        return Promise.resolve(result)\n          .then(() => {\n            fireAnEvent(\"load\", element);\n\n            return Promise.resolve();\n          })\n          .catch(err => {\n            return onErrorWrapped(err);\n          });\n      } catch (err) {\n        return onErrorWrapped(err);\n      }\n    };\n\n    // Create a wrapper object that can be used by the queue system\n    const request = {\n      then: (onFulfilled, onRejected) => fetchPromise.then(onFulfilled, onRejected),\n      catch: onRejected => fetchPromise.catch(onRejected)\n    };\n\n    if (element.localName === \"script\" && element.hasAttributeNS(null, \"async\")) {\n      this._asyncQueue.push(request, onLoadWrapped, onErrorWrapped, this._queue.getLastScript());\n    } else if (\n      element.localName === \"script\" &&\n        element.hasAttributeNS(null, \"defer\") &&\n        this._document.readyState !== \"interactive\") {\n      this._deferQueue.push(request, onLoadWrapped, onErrorWrapped, false, element);\n    } else {\n      this._queue.push(request, onLoadWrapped, onErrorWrapped, false, element);\n    }\n\n    return request;\n  }\n};\n","\"use strict\";\n\nconst NODE_TYPE = require(\"../node-type\");\nconst { domSymbolTree } = require(\"./internal-constants\");\n\n// For use in implementing getElementById(). Notably it ensures that when you get the result, you will always get the\n// first in tree order, not the most- or least-recently-inserted. Somewhat modeled after\n// https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/dom/tree_ordered_map.h.\n\nmodule.exports = class ByIdCache {\n  constructor(root) {\n    this._root = root;\n\n    // Keys are IDs (strings).\n    // Values are `{ element, count }` tuples, where `element` can be `null` indicating we need to recompute.\n    // `count` tracks the count of times `add()` was called for this ID. We need to track it because it lets us\n    // determine what to do when calling `delete()`: a count of 0 means we can remove the entry, whereas any other\n    // count means we need to set `element` to `null` for future recomputation.\n    this._map = new Map();\n  }\n\n  add(id, element) {\n    const value = this._map.get(id);\n    if (!value) {\n      this._map.set(id, { element, count: 1 });\n    } else {\n      value.element = null;\n      ++value.count;\n    }\n  }\n\n  delete(id, element) {\n    const value = this._map.get(id);\n    if (!value) {\n      return;\n    }\n\n    --value.count;\n    if (value.count === 0) {\n      this._map.delete(id);\n    } else if (value.element === element) {\n      value.element = null;\n    }\n  }\n\n  get(id) {\n    const value = this._map.get(id);\n    if (!value) {\n      return null;\n    }\n\n    if (value.element) {\n      return value.element;\n    }\n\n    for (const descendant of domSymbolTree.treeIterator(this._root)) {\n      if (descendant.nodeType === NODE_TYPE.ELEMENT_NODE && descendant.getAttributeNS(null, \"id\") === id) {\n        value.element = descendant;\n        return descendant;\n      }\n    }\n\n    // If we didn't find any elements for this key, we can remove it.\n    this._map.delete(id);\n    return null;\n  }\n};\n","\"use strict\";\n\nconst { CookieJar } = require(\"tough-cookie\");\nconst { DOMSelector } = require(\"@asamuzakjp/dom-selector\");\n\nconst NodeImpl = require(\"./Node-impl\").implementation;\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst NODE_TYPE = require(\"../node-type\");\nconst { mixin, memoizeQuery } = require(\"../../utils\");\nconst { firstChildWithLocalName, firstChildWithLocalNames, firstDescendantWithLocalName } =\n  require(\"../helpers/traversal\");\nconst whatwgURL = require(\"whatwg-url\");\nconst StyleSheetList = require(\"../../../generated/idl/StyleSheetList.js\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst eventAccessors = require(\"../helpers/create-event-accessor\");\nconst { asciiLowercase, stripAndCollapseASCIIWhitespace } = require(\"../helpers/strings\");\nconst { childTextContent } = require(\"../helpers/text\");\nconst { HTML_NS, SVG_NS } = require(\"../helpers/namespaces\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { parseIntoDocument } = require(\"../../browser/parser\");\nconst History = require(\"../../../generated/idl/History\");\nconst Location = require(\"../../../generated/idl/Location\");\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst NodeList = require(\"../../../generated/idl/NodeList\");\nconst validateName = require(\"../helpers/validate-names\").name;\nconst { validateAndExtract } = require(\"../helpers/validate-names\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst { shadowIncludingInclusiveDescendantsIterator } = require(\"../helpers/shadow-dom\");\nconst { enqueueCECallbackReaction } = require(\"../helpers/custom-elements\");\nconst { createElement, internalCreateElementNSSteps } = require(\"../helpers/create-element\");\nconst IterableWeakSet = require(\"../helpers/iterable-weak-set\");\n\nconst DocumentOrShadowRootImpl = require(\"./DocumentOrShadowRoot-impl\").implementation;\nconst GlobalEventHandlersImpl = require(\"./GlobalEventHandlers-impl\").implementation;\nconst NonElementParentNodeImpl = require(\"./NonElementParentNode-impl\").implementation;\nconst ParentNodeImpl = require(\"./ParentNode-impl\").implementation;\n\nconst { clone, listOfElementsWithQualifiedName, listOfElementsWithNamespaceAndLocalName,\n  listOfElementsWithClassNames } = require(\"../node\");\nconst generatedAttr = require(\"../../../generated/idl/Attr\");\nconst Comment = require(\"../../../generated/idl/Comment\");\nconst ProcessingInstruction = require(\"../../../generated/idl/ProcessingInstruction\");\nconst CDATASection = require(\"../../../generated/idl/CDATASection\");\nconst Text = require(\"../../../generated/idl/Text\");\nconst DocumentFragment = require(\"../../../generated/idl/DocumentFragment\");\nconst DOMImplementation = require(\"../../../generated/idl/DOMImplementation\");\nconst TreeWalker = require(\"../../../generated/idl/TreeWalker\");\nconst NodeIterator = require(\"../../../generated/idl/NodeIterator\");\nconst ShadowRoot = require(\"../../../generated/idl/ShadowRoot\");\nconst Range = require(\"../../../generated/idl/Range\");\nconst documents = require(\"../documents.js\");\n\nconst BeforeUnloadEvent = require(\"../../../generated/idl/BeforeUnloadEvent\");\nconst CompositionEvent = require(\"../../../generated/idl/CompositionEvent\");\nconst CustomEvent = require(\"../../../generated/idl/CustomEvent\");\nconst DeviceMotionEvent = require(\"../../../generated/idl/DeviceMotionEvent\");\nconst DeviceOrientationEvent = require(\"../../../generated/idl/DeviceOrientationEvent\");\nconst Event = require(\"../../../generated/idl/Event\");\nconst FocusEvent = require(\"../../../generated/idl/FocusEvent\");\nconst HashChangeEvent = require(\"../../../generated/idl/HashChangeEvent\");\nconst KeyboardEvent = require(\"../../../generated/idl/KeyboardEvent\");\nconst MessageEvent = require(\"../../../generated/idl/MessageEvent\");\nconst MouseEvent = require(\"../../../generated/idl/MouseEvent\");\nconst StorageEvent = require(\"../../../generated/idl/StorageEvent\");\nconst TouchEvent = require(\"../../../generated/idl/TouchEvent\");\nconst UIEvent = require(\"../../../generated/idl/UIEvent\");\n\nconst RequestManager = require(\"../../browser/resources/request-manager\");\nconst AsyncResourceQueue = require(\"../../browser/resources/async-resource-queue\");\nconst ResourceQueue = require(\"../../browser/resources/resource-queue\");\nconst PerDocumentResourceLoader = require(\"../../browser/resources/per-document-resource-loader\");\nconst ByIdCache = require(\"../helpers/by-id-cache\");\n\nfunction clearChildNodes(node) {\n  for (let child = domSymbolTree.firstChild(node); child; child = domSymbolTree.firstChild(node)) {\n    node.removeChild(child);\n  }\n}\n\nfunction pad(number) {\n  if (number < 10) {\n    return \"0\" + number;\n  }\n  return number;\n}\n\nfunction toLastModifiedString(date) {\n  return pad(date.getMonth() + 1) +\n    \"/\" + pad(date.getDate()) +\n    \"/\" + date.getFullYear() +\n    \" \" + pad(date.getHours()) +\n    \":\" + pad(date.getMinutes()) +\n    \":\" + pad(date.getSeconds());\n}\n\nconst eventInterfaceTable = {\n  beforeunloadevent: BeforeUnloadEvent,\n  compositionevent: CompositionEvent,\n  customevent: CustomEvent,\n  devicemotionevent: DeviceMotionEvent,\n  deviceorientationevent: DeviceOrientationEvent,\n  event: Event,\n  events: Event,\n  focusevent: FocusEvent,\n  hashchangeevent: HashChangeEvent,\n  htmlevents: Event,\n  keyboardevent: KeyboardEvent,\n  messageevent: MessageEvent,\n  mouseevent: MouseEvent,\n  mouseevents: MouseEvent,\n  storageevent: StorageEvent,\n  svgevents: Event,\n  touchevent: TouchEvent,\n  uievent: UIEvent,\n  uievents: UIEvent\n};\n\nclass DocumentImpl extends NodeImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._initGlobalEvents();\n\n    this._ownerDocument = this;\n    this.nodeType = NODE_TYPE.DOCUMENT_NODE;\n    if (!privateData.options) {\n      privateData.options = {};\n    }\n    if (!privateData.options.parsingMode) {\n      privateData.options.parsingMode = \"xml\";\n    }\n    if (!privateData.options.encoding) {\n      privateData.options.encoding = \"UTF-8\";\n    }\n    if (!privateData.options.contentType) {\n      privateData.options.contentType = privateData.options.parsingMode === \"xml\" ? \"application/xml\" : \"text/html\";\n    }\n\n    this._parsingMode = privateData.options.parsingMode;\n\n    this._implementation = DOMImplementation.createImpl(this._globalObject, [], {\n      ownerDocument: this\n    });\n\n    this._defaultView = privateData.options.defaultView || null;\n    this._global = privateData.options.global;\n    this._byIdCache = new ByIdCache(this);\n    this._attached = true;\n    this._currentScript = null;\n    this._pageShowingFlag = false;\n    this._cookieJar = privateData.options.cookieJar;\n    this._parseOptions = privateData.options.parseOptions || {};\n    this._scriptingDisabled = privateData.options.scriptingDisabled;\n    if (this._cookieJar === undefined) {\n      this._cookieJar = new CookieJar(null, { looseMode: true });\n    }\n\n    if (this._scriptingDisabled) {\n      this._parseOptions.scriptingEnabled = false;\n    }\n\n    this.contentType = privateData.options.contentType;\n    this._encoding = privateData.options.encoding;\n\n    const urlOption = privateData.options.url === undefined ? \"about:blank\" : privateData.options.url;\n    const parsed = whatwgURL.parseURL(urlOption);\n    if (parsed === null) {\n      throw new TypeError(`Could not parse \"${urlOption}\" as a URL`);\n    }\n\n    this._URL = parsed;\n    this._origin = urlOption === \"about:blank\" && privateData.options.parentOrigin ?\n      privateData.options.parentOrigin :\n      whatwgURL.serializeURLOrigin(this._URL);\n\n    this._location = Location.createImpl(this._globalObject, [], { relevantDocument: this });\n    this._history = History.createImpl(this._globalObject, [], {\n      window: this._defaultView,\n      document: this,\n      actAsIfLocationReloadCalled: () => this._location.reload()\n    });\n\n    this._workingNodeIterators = new IterableWeakSet();\n\n    this._referrer = privateData.options.referrer || \"\";\n    this._lastModified = toLastModifiedString(privateData.options.lastModified || new Date());\n    this._asyncQueue = new AsyncResourceQueue();\n    this._queue = new ResourceQueue({ asyncQueue: this._asyncQueue, paused: false });\n    this._deferQueue = new ResourceQueue({ paused: true });\n    this._requestManager = new RequestManager();\n    this._currentDocumentReadiness = privateData.options.readyState || \"loading\";\n\n    this._lastFocusedElement = null;\n\n    this._resourceLoader = new PerDocumentResourceLoader(this);\n\n    // Each Document in a browsing context can also have a latest entry. This is the entry for that Document\n    // to which the browsing context's session history was most recently traversed. When a Document is created,\n    // it initially has no latest entry.\n    this._latestEntry = null;\n\n    // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#throw-on-dynamic-markup-insertion-counter\n    this._throwOnDynamicMarkupInsertionCounter = 0;\n\n    // Create DOMSelector instance\n    this._domSelector = new DOMSelector(this._globalObject, this._ownerDocument, {\n      domSymbolTree,\n      idlUtils\n    });\n\n    // Cache of computed element styles\n    this._styleCache = new WeakMap();\n\n    // Cache of document base URL\n    this._baseURLCache = null;\n    this._baseURLSerializedCache = null;\n  }\n\n  _clearBaseURLCache() {\n    this._baseURLCache = null;\n    this._baseURLSerializedCache = null;\n  }\n\n  // https://html.spec.whatwg.org/multipage/infrastructure.html#document-base-url\n  baseURL() {\n    if (this._baseURLCache) {\n      return this._baseURLCache;\n    }\n\n    const firstBase = this.querySelector(\"base[href]\");\n\n    this._baseURLCache = firstBase === null ?\n      this._fallbackBaseURL() :\n      this._frozenBaseURL(firstBase, this._fallbackBaseURL());\n    return this._baseURLCache;\n  }\n\n  baseURLSerialized() {\n    if (this._baseURLSerializedCache) {\n      return this._baseURLSerializedCache;\n    }\n\n    const result = whatwgURL.serializeURL(this.baseURL());\n    this._baseURLSerializedCache = result;\n    return result;\n  }\n\n  // https://html.spec.whatwg.org/#encoding-parsing-a-url\n  encodingParseAURL(url) {\n    return whatwgURL.parseURL(url, { baseURL: this.baseURL(), encoding: this._encoding });\n  }\n\n  // https://html.spec.whatwg.org/#frozen-base-url\n  _frozenBaseURL(baseElement, fallbackBaseURL) {\n    // The spec is eager (setting the frozen base URL when things change); we are lazy (getting it when we need to).\n    //\n    // There is a slight difference, which is when history.pushState() is involved. The frozen base URL does not get\n    // updated in response to history.pushState() per spec, but since we're lazy, it will get updated.\n    //\n    // The test in to-port-to-wpts/history.js checks for the current jsdom behavior (which is incorrect).\n    // We could make it pass by not invalidating the base URL cache, actually. But that would just make the fallback\n    // base URL case use the stale base URL.\n    //\n    // TODO: implement, with tests for all code paths, the spec's behavior.\n\n    const baseHrefAttribute = baseElement.getAttributeNS(null, \"href\");\n    const result = whatwgURL.parseURL(baseHrefAttribute, { baseURL: fallbackBaseURL });\n    return result === null ? fallbackBaseURL : result;\n  }\n\n  // https://html.spec.whatwg.org/#fallback-base-url\n  _fallbackBaseURL() {\n    if (this.URL === \"about:blank\" && this._defaultView &&\n      this._defaultView._parent !== this._defaultView) {\n      const parentDocument = idlUtils.implForWrapper(this._defaultView._parent._document);\n      return parentDocument.baseURL();\n    }\n\n    return this._URL;\n  }\n\n  _getTheParent(event) {\n    if (event.type === \"load\" || !this._defaultView) {\n      return null;\n    }\n\n    return idlUtils.implForWrapper(this._defaultView);\n  }\n\n  get compatMode() {\n    return this._parsingMode === \"xml\" || this.doctype ? \"CSS1Compat\" : \"BackCompat\";\n  }\n  get charset() {\n    return this._encoding;\n  }\n  get characterSet() {\n    return this._encoding;\n  }\n  get inputEncoding() {\n    return this._encoding;\n  }\n  get doctype() {\n    for (const childNode of domSymbolTree.childrenIterator(this)) {\n      if (childNode.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) {\n        return childNode;\n      }\n    }\n    return null;\n  }\n  get URL() {\n    return whatwgURL.serializeURL(this._URL);\n  }\n  get documentURI() {\n    return whatwgURL.serializeURL(this._URL);\n  }\n  get location() {\n    return this._defaultView ? this._location : null;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-document-documentelement\n  get documentElement() {\n    for (const childNode of domSymbolTree.childrenIterator(this)) {\n      if (childNode.nodeType === NODE_TYPE.ELEMENT_NODE) {\n        return childNode;\n      }\n    }\n\n    return null;\n  }\n\n  get implementation() {\n    return this._implementation;\n  }\n  set implementation(implementation) {\n    this._implementation = implementation;\n  }\n\n  get defaultView() {\n    return this._defaultView;\n  }\n\n  get currentScript() {\n    return this._currentScript;\n  }\n\n  get readyState() {\n    return this._currentDocumentReadiness;\n  }\n\n  set readyState(state) {\n    this._currentDocumentReadiness = state;\n    fireAnEvent(\"readystatechange\", this);\n  }\n\n  hasFocus() {\n    return Boolean(this._lastFocusedElement);\n  }\n\n  _descendantRemoved(parent, child) {\n    if (child.tagName === \"STYLE\") {\n      this.styleSheets._remove(child.sheet);\n    }\n\n    super._descendantRemoved(parent, child);\n  }\n\n  write(...args) {\n    let text = \"\";\n    for (let i = 0; i < args.length; ++i) {\n      text += args[i];\n    }\n\n    if (this._parsingMode === \"xml\") {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot use document.write on XML documents\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    if (this._throwOnDynamicMarkupInsertionCounter > 0) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot use document.write while a custom element upgrades\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    if (this._writeAfterElement) {\n      // If called from an script element directly (during the first tick),\n      // the new elements are inserted right after that element.\n      const tempDiv = this.createElement(\"div\");\n      tempDiv.innerHTML = text;\n\n      let child = tempDiv.firstChild;\n      let previous = this._writeAfterElement;\n      const parent = this._writeAfterElement.parentNode;\n\n      while (child) {\n        const node = child;\n        child = child.nextSibling;\n\n        node._isMovingDueToDocumentWrite = true; // hack for script execution\n        parent.insertBefore(node, previous.nextSibling);\n        node._isMovingDueToDocumentWrite = false;\n\n        previous = node;\n      }\n    } else if (this.readyState === \"loading\") {\n      // During page loading, document.write appends to the current element\n      // Find the last child that has been added to the document.\n      if (this.lastChild) {\n        let node = this;\n        while (node.lastChild && node.lastChild.nodeType === NODE_TYPE.ELEMENT_NODE) {\n          node = node.lastChild;\n        }\n        node.innerHTML = text;\n      } else {\n        clearChildNodes(this);\n        parseIntoDocument(text, this);\n      }\n    } else if (text) {\n      clearChildNodes(this);\n      parseIntoDocument(text, this);\n    }\n  }\n\n  writeln(...args) {\n    this.write(...args, \"\\n\");\n  }\n\n  // This is implemented separately for Document (which has a _byIdCache) and DocumentFragment (which does not).\n  getElementById(id) {\n    return this._byIdCache.get(id);\n  }\n\n  get referrer() {\n    return this._referrer || \"\";\n  }\n  get lastModified() {\n    return this._lastModified;\n  }\n  get images() {\n    return this.getElementsByTagName(\"IMG\");\n  }\n  get embeds() {\n    return this.getElementsByTagName(\"EMBED\");\n  }\n  get plugins() {\n    return this.embeds;\n  }\n  get links() {\n    return HTMLCollection.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => domSymbolTree.treeToArray(this, {\n        filter: node => (node._localName === \"a\" || node._localName === \"area\") &&\n                        node.hasAttributeNS(null, \"href\") &&\n                        node._namespaceURI === HTML_NS\n      })\n    });\n  }\n  get forms() {\n    return this.getElementsByTagName(\"FORM\");\n  }\n  get scripts() {\n    return this.getElementsByTagName(\"SCRIPT\");\n  }\n  get anchors() {\n    return HTMLCollection.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => domSymbolTree.treeToArray(this, {\n        filter: node => node._localName === \"a\" &&\n                        node.hasAttributeNS(null, \"name\") &&\n                        node._namespaceURI === HTML_NS\n      })\n    });\n  }\n\n  // The applets attribute must return an\n  // HTMLCollection rooted at the Document node,\n  // whose filter matches nothing.\n  // (It exists for historical reasons.)\n  get applets() {\n    return HTMLCollection.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => []\n    });\n  }\n\n  open() {\n    let child = domSymbolTree.firstChild(this);\n    while (child) {\n      this.removeChild(child);\n      child = domSymbolTree.firstChild(this);\n    }\n    this._modified();\n    return this;\n  }\n  close(noQueue) {\n    // In some cases like when creating an empty iframe, I want to emit the\n    // events right away to avoid problems if later I asign the property src.\n    if (noQueue) {\n      this.readyState = \"complete\";\n\n      fireAnEvent(\"DOMContentLoaded\", this, undefined, { bubbles: true });\n      fireAnEvent(\"load\", this);\n\n      return;\n    }\n    this._queue.resume();\n\n    const dummyPromise = Promise.resolve();\n\n    const onDOMContentLoad = () => {\n      const doc = this;\n      function dispatchEvent() {\n        // https://html.spec.whatwg.org/#the-end\n        doc.readyState = \"interactive\";\n        fireAnEvent(\"DOMContentLoaded\", doc, undefined, { bubbles: true });\n      }\n\n      return new Promise(resolve => {\n        if (!this._deferQueue.tail) {\n          dispatchEvent();\n          resolve();\n          return;\n        }\n\n        this._deferQueue.setListener(() => {\n          dispatchEvent();\n          resolve();\n        });\n\n        this._deferQueue.resume();\n      });\n    };\n\n    const onLoad = () => {\n      const doc = this;\n      function dispatchEvent() {\n        doc.readyState = \"complete\";\n        fireAnEvent(\"load\", doc);\n      }\n\n      return new Promise(resolve => {\n        if (this._asyncQueue.count() === 0) {\n          dispatchEvent();\n          resolve();\n          return;\n        }\n\n        this._asyncQueue.setListener(() => {\n          dispatchEvent();\n          resolve();\n        });\n      });\n    };\n\n    this._queue.push(dummyPromise, onDOMContentLoad, null);\n    // Set the readyState to 'complete' once all resources are loaded.\n    // As a side-effect the document's load-event will be dispatched.\n    this._queue.push(dummyPromise, onLoad, null, true);\n  }\n\n  getElementsByName(elementName) {\n    return NodeList.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => domSymbolTree.treeToArray(this, {\n        filter: node => node.getAttributeNS && node.getAttributeNS(null, \"name\") === elementName\n      })\n    });\n  }\n\n  get title() {\n    const { documentElement } = this;\n    let value = \"\";\n\n    if (documentElement && documentElement._localName === \"svg\") {\n      const svgTitleElement = firstChildWithLocalName(documentElement, \"title\", SVG_NS);\n\n      if (svgTitleElement) {\n        value = childTextContent(svgTitleElement);\n      }\n    } else {\n      const titleElement = firstDescendantWithLocalName(this, \"title\");\n\n      if (titleElement) {\n        value = childTextContent(titleElement);\n      }\n    }\n\n    value = stripAndCollapseASCIIWhitespace(value);\n\n    return value;\n  }\n\n  set title(value) {\n    const { documentElement } = this;\n    let element;\n\n    if (documentElement && documentElement._localName === \"svg\") {\n      element = firstChildWithLocalName(documentElement, \"title\", SVG_NS);\n\n      if (!element) {\n        element = this.createElementNS(SVG_NS, \"title\");\n\n        this._insert(element, documentElement.firstChild);\n      }\n\n      element.textContent = value;\n    } else if (documentElement && documentElement._namespaceURI === HTML_NS) {\n      const titleElement = firstDescendantWithLocalName(this, \"title\");\n      const headElement = this.head;\n\n      if (titleElement === null && headElement === null) {\n        return;\n      }\n\n      if (titleElement !== null) {\n        element = titleElement;\n      } else {\n        element = this.createElement(\"title\");\n        headElement._append(element);\n      }\n\n      element.textContent = value;\n    }\n  }\n\n  get dir() {\n    return this.documentElement ? this.documentElement.dir : \"\";\n  }\n  set dir(value) {\n    if (this.documentElement) {\n      this.documentElement.dir = value;\n    }\n  }\n\n  get head() {\n    return this.documentElement ? firstChildWithLocalName(this.documentElement, \"head\") : null;\n  }\n\n  get body() {\n    const { documentElement } = this;\n    if (!documentElement || documentElement._localName !== \"html\" ||\n        documentElement._namespaceURI !== HTML_NS) {\n      return null;\n    }\n\n    return firstChildWithLocalNames(this.documentElement, new Set([\"body\", \"frameset\"]));\n  }\n\n  set body(value) {\n    if (value === null ||\n        value._namespaceURI !== HTML_NS ||\n        (value._localName !== \"body\" && value._localName !== \"frameset\")) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot set the body to null or a non-body/frameset element\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    const bodyElement = this.body;\n    if (value === bodyElement) {\n      return;\n    }\n\n    if (bodyElement !== null) {\n      bodyElement.parentNode._replace(value, bodyElement);\n      return;\n    }\n\n    const { documentElement } = this;\n    if (documentElement === null) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot set the body when there is no document element\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    documentElement._append(value);\n  }\n\n  _runPreRemovingSteps(oldNode) {\n    // https://html.spec.whatwg.org/#focus-fixup-rule\n    if (oldNode === this.activeElement) {\n      this._lastFocusedElement = this.body;\n    }\n    for (const activeNodeIterator of this._workingNodeIterators) {\n      activeNodeIterator._preRemovingSteps(oldNode);\n    }\n  }\n\n  createEvent(type) {\n    const typeLower = type.toLowerCase();\n    const eventWrapper = eventInterfaceTable[typeLower] || null;\n\n    if (!eventWrapper) {\n      throw DOMException.create(this._globalObject, [\n        \"The provided event type (\\\"\" + type + \"\\\") is invalid\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    const impl = eventWrapper.createImpl(this._globalObject, [\"\"]);\n    impl._initializedFlag = false;\n    return impl;\n  }\n\n  createRange() {\n    return Range.createImpl(this._globalObject, [], {\n      start: { node: this, offset: 0 },\n      end: { node: this, offset: 0 }\n    });\n  }\n\n  createProcessingInstruction(target, data) {\n    validateName(this._globalObject, target);\n\n    if (data.includes(\"?>\")) {\n      throw DOMException.create(this._globalObject, [\n        \"Processing instruction data cannot contain the string \\\"?>\\\"\",\n        \"InvalidCharacterError\"\n      ]);\n    }\n\n    return ProcessingInstruction.createImpl(this._globalObject, [], {\n      ownerDocument: this,\n      target,\n      data\n    });\n  }\n\n  // https://dom.spec.whatwg.org/#dom-document-createcdatasection\n  createCDATASection(data) {\n    if (this._parsingMode === \"html\") {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot create CDATA sections in HTML documents\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    if (data.includes(\"]]>\")) {\n      throw DOMException.create(this._globalObject, [\n        \"CDATA section data cannot contain the string \\\"]]>\\\"\",\n        \"InvalidCharacterError\"\n      ]);\n    }\n\n    return CDATASection.createImpl(this._globalObject, [], {\n      ownerDocument: this,\n      data\n    });\n  }\n\n  createTextNode(data) {\n    return Text.createImpl(this._globalObject, [], {\n      ownerDocument: this,\n      data\n    });\n  }\n\n  createComment(data) {\n    return Comment.createImpl(this._globalObject, [], {\n      ownerDocument: this,\n      data\n    });\n  }\n\n  // https://dom.spec.whatwg.org/#dom-document-createelement\n  createElement(localName, options) {\n    validateName(this._globalObject, localName);\n\n    if (this._parsingMode === \"html\") {\n      localName = asciiLowercase(localName);\n    }\n\n    let isValue = null;\n    if (options && options.is !== undefined) {\n      isValue = options.is;\n    }\n\n    const namespace = this._parsingMode === \"html\" || this.contentType === \"application/xhtml+xml\" ? HTML_NS : null;\n\n    return createElement(this, localName, namespace, null, isValue, true);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-document-createelementns\n  createElementNS(namespace, qualifiedName, options) {\n    return internalCreateElementNSSteps(this, namespace, qualifiedName, options);\n  }\n\n  createDocumentFragment() {\n    return DocumentFragment.createImpl(this._globalObject, [], { ownerDocument: this });\n  }\n\n  createAttribute(localName) {\n    validateName(this._globalObject, localName);\n\n    if (this._parsingMode === \"html\") {\n      localName = asciiLowercase(localName);\n    }\n\n    return this._createAttribute({ localName });\n  }\n\n  createAttributeNS(namespace, name) {\n    if (namespace === undefined) {\n      namespace = null;\n    }\n    namespace = namespace !== null ? String(namespace) : namespace;\n\n    const extracted = validateAndExtract(this._globalObject, namespace, name);\n    return this._createAttribute({\n      namespace: extracted.namespace,\n      namespacePrefix: extracted.prefix,\n      localName: extracted.localName\n    });\n  }\n\n  // Using this helper function rather than directly calling generatedAttr.createImpl may be preferred in some files,\n  // to avoid introducing a potentially cyclic dependency on generated/Attr.js.\n  _createAttribute({\n    localName,\n    value,\n    namespace,\n    namespacePrefix\n  }) {\n    return generatedAttr.createImpl(this._globalObject, [], {\n      localName,\n      value,\n      namespace,\n      namespacePrefix,\n      ownerDocument: this\n    });\n  }\n\n  createTreeWalker(root, whatToShow, filter) {\n    return TreeWalker.createImpl(this._globalObject, [], { root, whatToShow, filter });\n  }\n\n  createNodeIterator(root, whatToShow, filter) {\n    const nodeIterator = NodeIterator.createImpl(this._globalObject, [], { root, whatToShow, filter });\n    this._workingNodeIterators.add(nodeIterator);\n    return nodeIterator;\n  }\n\n  importNode(node, deep) {\n    if (node.nodeType === NODE_TYPE.DOCUMENT_NODE) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot import a document node\",\n        \"NotSupportedError\"\n      ]);\n    } else if (ShadowRoot.isImpl(node)) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot adopt a shadow root\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    return clone(node, this, deep);\n  }\n\n  // https://dom.spec.whatwg.org/#dom-document-adoptnode\n  adoptNode(node) {\n    if (node.nodeType === NODE_TYPE.DOCUMENT_NODE) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot adopt a document node\",\n        \"NotSupportedError\"\n      ]);\n    } else if (ShadowRoot.isImpl(node)) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot adopt a shadow root\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    this._adoptNode(node);\n\n    return node;\n  }\n\n  // https://dom.spec.whatwg.org/#concept-node-adopt\n  _adoptNode(node) {\n    const newDocument = this;\n    const oldDocument = node._ownerDocument;\n\n    const parent = domSymbolTree.parent(node);\n    if (parent) {\n      parent._remove(node);\n    }\n\n    if (oldDocument !== newDocument) {\n      for (const inclusiveDescendant of shadowIncludingInclusiveDescendantsIterator(node)) {\n        inclusiveDescendant._ownerDocument = newDocument;\n      }\n\n      for (const inclusiveDescendant of shadowIncludingInclusiveDescendantsIterator(node)) {\n        if (inclusiveDescendant._ceState === \"custom\") {\n          enqueueCECallbackReaction(inclusiveDescendant, \"adoptedCallback\", [\n            idlUtils.wrapperForImpl(oldDocument),\n            idlUtils.wrapperForImpl(newDocument)\n          ]);\n        }\n      }\n\n      for (const inclusiveDescendant of shadowIncludingInclusiveDescendantsIterator(node)) {\n        if (inclusiveDescendant._adoptingSteps) {\n          inclusiveDescendant._adoptingSteps(oldDocument);\n        }\n      }\n    }\n  }\n\n  get cookie() {\n    return this._cookieJar.getCookieStringSync(this.URL, { http: false });\n  }\n  set cookie(cookieStr) {\n    cookieStr = String(cookieStr);\n    this._cookieJar.setCookieSync(cookieStr, this.URL, {\n      http: false,\n      ignoreError: true\n    });\n  }\n\n  // The clear(), captureEvents(), and releaseEvents() methods must do nothing\n  clear() {}\n\n  captureEvents() {}\n\n  releaseEvents() {}\n\n  get styleSheets() {\n    if (!this._styleSheets) {\n      this._styleSheets = StyleSheetList.createImpl(this._globalObject);\n    }\n\n    // TODO: each style and link element should register its sheet on creation\n    // and remove it on removal.\n    return this._styleSheets;\n  }\n\n  get hidden() {\n    if (this._defaultView && this._defaultView._pretendToBeVisual) {\n      return false;\n    }\n\n    return true;\n  }\n\n  get visibilityState() {\n    if (this._defaultView && this._defaultView._pretendToBeVisual) {\n      return \"visible\";\n    }\n\n    return \"prerender\";\n  }\n\n  // https://w3c.github.io/selection-api/#extensions-to-document-interface\n  getSelection() {\n    return this._defaultView ? this._defaultView._selection : null;\n  }\n\n  // Needed to ensure that the resulting document has the correct prototype chain:\n  // https://dom.spec.whatwg.org/#concept-node-clone says \"that implements the same interfaces as node\".\n  _cloneDocument() {\n    const copy = documents.createImpl(\n      this._globalObject,\n      {\n        contentType: this.contentType,\n        encoding: this._encoding,\n        parsingMode: this._parsingMode\n      }\n    );\n\n    copy._URL = this._URL;\n    copy._origin = this._origin;\n    return copy;\n  }\n}\n\neventAccessors.createEventAccessor(DocumentImpl.prototype, \"readystatechange\");\nmixin(DocumentImpl.prototype, DocumentOrShadowRootImpl.prototype);\nmixin(DocumentImpl.prototype, GlobalEventHandlersImpl.prototype);\nmixin(DocumentImpl.prototype, NonElementParentNodeImpl.prototype);\nmixin(DocumentImpl.prototype, ParentNodeImpl.prototype);\n\nDocumentImpl.prototype.getElementsByTagName = memoizeQuery(function (qualifiedName) {\n  return listOfElementsWithQualifiedName(qualifiedName, this);\n});\n\nDocumentImpl.prototype.getElementsByTagNameNS = memoizeQuery(function (namespace, localName) {\n  return listOfElementsWithNamespaceAndLocalName(namespace, localName, this);\n});\n\nDocumentImpl.prototype.getElementsByClassName = memoizeQuery(function getElementsByClassName(classNames) {\n  return listOfElementsWithClassNames(classNames, this);\n});\n\nmodule.exports = {\n  implementation: DocumentImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ElementCreationOptions = require(\"./ElementCreationOptions.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst Node = require(\"./Node.js\");\nconst NodeFilter = require(\"./NodeFilter.js\");\nconst HTMLElement = require(\"./HTMLElement.js\");\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst OnErrorEventHandlerNonNull = require(\"./OnErrorEventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Document\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Document'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Document\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nfunction getUnforgeables(globalObject) {\n  let unforgeables = unforgeablesMap.get(globalObject);\n  if (unforgeables === undefined) {\n    unforgeables = Object.create(null);\n    utils.define(unforgeables, {\n      get location() {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'get location' called on an object that is not a valid instance of Document.\"\n          );\n        }\n\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"location\"]);\n      },\n      set location(V) {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'set location' called on an object that is not a valid instance of Document.\"\n          );\n        }\n\n        const Q = esValue[\"location\"];\n        if (!utils.isObject(Q)) {\n          throw new globalObject.TypeError(\"Property 'location' is not an object\");\n        }\n        Reflect.set(Q, \"href\", V);\n      }\n    });\n    Object.defineProperties(unforgeables, {\n      location: { configurable: false }\n    });\n    unforgeablesMap.set(globalObject, unforgeables);\n  }\n  return unforgeables;\n}\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Node._internalSetup(wrapper, globalObject);\n\n  utils.define(wrapper, getUnforgeables(globalObject));\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst unforgeablesMap = new WeakMap();\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Document extends globalObject.Node {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    getElementsByTagName(qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementsByTagName' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementsByTagName' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementsByTagName' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementsByTagName(...args));\n    }\n\n    getElementsByTagNameNS(namespace, localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementsByTagNameNS' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementsByTagNameNS' on 'Document': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'getElementsByTagNameNS' on 'Document': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementsByTagNameNS' on 'Document': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementsByTagNameNS(...args));\n    }\n\n    getElementsByClassName(classNames) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementsByClassName' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementsByClassName' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementsByClassName' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementsByClassName(...args));\n    }\n\n    createElement(localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createElement' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createElement' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createElement' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = ElementCreationOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'createElement' on 'Document': parameter 2\"\n            });\n          } else if (utils.isObject(curArg)) {\n            curArg = ElementCreationOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'createElement' on 'Document': parameter 2\" + \" dictionary\"\n            });\n          } else {\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'createElement' on 'Document': parameter 2\",\n              globals: globalObject\n            });\n          }\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].createElement(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    createElementNS(namespace, qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createElementNS' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createElementNS' on 'Document': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'createElementNS' on 'Document': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createElementNS' on 'Document': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = ElementCreationOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'createElementNS' on 'Document': parameter 3\"\n            });\n          } else if (utils.isObject(curArg)) {\n            curArg = ElementCreationOptions.convert(globalObject, curArg, {\n              context: \"Failed to execute 'createElementNS' on 'Document': parameter 3\" + \" dictionary\"\n            });\n          } else {\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'createElementNS' on 'Document': parameter 3\",\n              globals: globalObject\n            });\n          }\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].createElementNS(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    createDocumentFragment() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createDocumentFragment' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createDocumentFragment());\n    }\n\n    createTextNode(data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createTextNode' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createTextNode' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createTextNode' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createTextNode(...args));\n    }\n\n    createCDATASection(data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createCDATASection' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createCDATASection' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createCDATASection' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createCDATASection(...args));\n    }\n\n    createComment(data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createComment' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createComment' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createComment' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createComment(...args));\n    }\n\n    createProcessingInstruction(target, data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createProcessingInstruction' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createProcessingInstruction' on 'Document': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createProcessingInstruction' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createProcessingInstruction' on 'Document': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createProcessingInstruction(...args));\n    }\n\n    importNode(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'importNode' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'importNode' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'importNode' on 'Document': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'importNode' on 'Document': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].importNode(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    adoptNode(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'adoptNode' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'adoptNode' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'adoptNode' on 'Document': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].adoptNode(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    createAttribute(localName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createAttribute' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createAttribute' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createAttribute' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createAttribute(...args));\n    }\n\n    createAttributeNS(namespace, qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createAttributeNS' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createAttributeNS' on 'Document': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'createAttributeNS' on 'Document': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createAttributeNS' on 'Document': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createAttributeNS(...args));\n    }\n\n    createEvent(interface_) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'createEvent' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createEvent' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createEvent' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createEvent(...args));\n    }\n\n    createRange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'createRange' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createRange());\n    }\n\n    createNodeIterator(root) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createNodeIterator' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createNodeIterator' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'createNodeIterator' on 'Document': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unsigned long\"](curArg, {\n            context: \"Failed to execute 'createNodeIterator' on 'Document': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0xffffffff;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = NodeFilter.convert(globalObject, curArg, {\n              context: \"Failed to execute 'createNodeIterator' on 'Document': parameter 3\"\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createNodeIterator(...args));\n    }\n\n    createTreeWalker(root) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createTreeWalker' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createTreeWalker' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'createTreeWalker' on 'Document': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unsigned long\"](curArg, {\n            context: \"Failed to execute 'createTreeWalker' on 'Document': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0xffffffff;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = NodeFilter.convert(globalObject, curArg, {\n              context: \"Failed to execute 'createTreeWalker' on 'Document': parameter 3\"\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createTreeWalker(...args));\n    }\n\n    getElementsByName(elementName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementsByName' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementsByName' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementsByName' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementsByName(...args));\n    }\n\n    open() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'open' called on an object that is not a valid instance of Document.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'open' on 'Document': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"text/html\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'open' on 'Document': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol].open(...args));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    close() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'close' called on an object that is not a valid instance of Document.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].close();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    write() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'write' called on an object that is not a valid instance of Document.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'write' on 'Document': parameter \" + (i + 1),\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].write(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    writeln() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'writeln' called on an object that is not a valid instance of Document.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'writeln' on 'Document': parameter \" + (i + 1),\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].writeln(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    hasFocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'hasFocus' called on an object that is not a valid instance of Document.\");\n      }\n\n      return esValue[implSymbol].hasFocus();\n    }\n\n    clear() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'clear' called on an object that is not a valid instance of Document.\");\n      }\n\n      return esValue[implSymbol].clear();\n    }\n\n    captureEvents() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'captureEvents' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol].captureEvents();\n    }\n\n    releaseEvents() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'releaseEvents' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol].releaseEvents();\n    }\n\n    getSelection() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getSelection' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getSelection());\n    }\n\n    getElementById(elementId) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementById' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementById' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementById' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementById(...args));\n    }\n\n    prepend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'prepend' called on an object that is not a valid instance of Document.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'prepend' on 'Document': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].prepend(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    append() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'append' called on an object that is not a valid instance of Document.\");\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'append' on 'Document': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].append(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    replaceChildren() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'replaceChildren' called on an object that is not a valid instance of Document.\"\n        );\n      }\n      const args = [];\n      for (let i = 0; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        if (Node.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'replaceChildren' on 'Document': parameter \" + (i + 1),\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].replaceChildren(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    querySelector(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'querySelector' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'querySelector' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'querySelector' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].querySelector(...args));\n    }\n\n    querySelectorAll(selectors) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'querySelectorAll' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'querySelectorAll' on 'Document': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'querySelectorAll' on 'Document': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].querySelectorAll(...args));\n    }\n\n    get implementation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get implementation' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"implementation\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"implementation\"]);\n      });\n    }\n\n    get URL() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get URL' called on an object that is not a valid instance of Document.\");\n      }\n\n      return esValue[implSymbol][\"URL\"];\n    }\n\n    get documentURI() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get documentURI' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"documentURI\"];\n    }\n\n    get compatMode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get compatMode' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"compatMode\"];\n    }\n\n    get characterSet() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get characterSet' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"characterSet\"];\n    }\n\n    get charset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get charset' called on an object that is not a valid instance of Document.\");\n      }\n\n      return esValue[implSymbol][\"charset\"];\n    }\n\n    get inputEncoding() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get inputEncoding' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"inputEncoding\"];\n    }\n\n    get contentType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get contentType' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"contentType\"];\n    }\n\n    get doctype() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get doctype' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"doctype\"]);\n    }\n\n    get documentElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get documentElement' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"documentElement\"]);\n    }\n\n    get referrer() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get referrer' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"referrer\"];\n    }\n\n    get cookie() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get cookie' called on an object that is not a valid instance of Document.\");\n      }\n\n      return esValue[implSymbol][\"cookie\"];\n    }\n\n    set cookie(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set cookie' called on an object that is not a valid instance of Document.\");\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'cookie' property on 'Document': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"cookie\"] = V;\n    }\n\n    get lastModified() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lastModified' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"lastModified\"];\n    }\n\n    get readyState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readyState' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"readyState\"]);\n    }\n\n    get title() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get title' called on an object that is not a valid instance of Document.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"title\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set title(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set title' called on an object that is not a valid instance of Document.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'title' property on 'Document': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"title\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get dir() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get dir' called on an object that is not a valid instance of Document.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"dir\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set dir(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set dir' called on an object that is not a valid instance of Document.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'dir' property on 'Document': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"dir\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get body() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get body' called on an object that is not a valid instance of Document.\");\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"body\"]);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set body(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set body' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = HTMLElement.convert(globalObject, V, {\n          context: \"Failed to set the 'body' property on 'Document': The provided value\"\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"body\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get head() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get head' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"head\"]);\n    }\n\n    get images() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get images' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"images\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"images\"]);\n      });\n    }\n\n    get embeds() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get embeds' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"embeds\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"embeds\"]);\n      });\n    }\n\n    get plugins() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get plugins' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"plugins\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"plugins\"]);\n      });\n    }\n\n    get links() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get links' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"links\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"links\"]);\n      });\n    }\n\n    get forms() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get forms' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"forms\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"forms\"]);\n      });\n    }\n\n    get scripts() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get scripts' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"scripts\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"scripts\"]);\n      });\n    }\n\n    get currentScript() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get currentScript' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"currentScript\"]);\n    }\n\n    get defaultView() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultView' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"defaultView\"]);\n    }\n\n    get onreadystatechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onreadystatechange\"]);\n    }\n\n    set onreadystatechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onreadystatechange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onreadystatechange\"] = V;\n    }\n\n    get anchors() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get anchors' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"anchors\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"anchors\"]);\n      });\n    }\n\n    get applets() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get applets' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.getSameObject(this, \"applets\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"applets\"]);\n      });\n    }\n\n    get styleSheets() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get styleSheets' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"styleSheets\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"styleSheets\"]);\n      });\n    }\n\n    get hidden() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get hidden' called on an object that is not a valid instance of Document.\");\n      }\n\n      return esValue[implSymbol][\"hidden\"];\n    }\n\n    get visibilityState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get visibilityState' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"visibilityState\"]);\n    }\n\n    get onvisibilitychange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onvisibilitychange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onvisibilitychange\"]);\n    }\n\n    set onvisibilitychange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onvisibilitychange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onvisibilitychange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onvisibilitychange\"] = V;\n    }\n\n    get onabort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onabort' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onabort\"]);\n    }\n\n    set onabort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onabort' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onabort' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onabort\"] = V;\n    }\n\n    get onauxclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onauxclick' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onauxclick\"]);\n    }\n\n    set onauxclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onauxclick' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onauxclick' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onauxclick\"] = V;\n    }\n\n    get onbeforeinput() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeinput' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeinput\"]);\n    }\n\n    set onbeforeinput(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeinput' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeinput' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeinput\"] = V;\n    }\n\n    get onbeforematch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforematch' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforematch\"]);\n    }\n\n    set onbeforematch(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforematch' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforematch' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforematch\"] = V;\n    }\n\n    get onbeforetoggle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforetoggle' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforetoggle\"]);\n    }\n\n    set onbeforetoggle(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforetoggle' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforetoggle' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforetoggle\"] = V;\n    }\n\n    get onblur() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onblur' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onblur\"]);\n    }\n\n    set onblur(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onblur' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onblur' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onblur\"] = V;\n    }\n\n    get oncancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncancel' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncancel\"]);\n    }\n\n    set oncancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncancel' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncancel' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncancel\"] = V;\n    }\n\n    get oncanplay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncanplay' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncanplay\"]);\n    }\n\n    set oncanplay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncanplay' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncanplay' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncanplay\"] = V;\n    }\n\n    get oncanplaythrough() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncanplaythrough' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncanplaythrough\"]);\n    }\n\n    set oncanplaythrough(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncanplaythrough' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncanplaythrough' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncanplaythrough\"] = V;\n    }\n\n    get onchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onchange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onchange\"]);\n    }\n\n    set onchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onchange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onchange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onchange\"] = V;\n    }\n\n    get onclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onclick' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onclick\"]);\n    }\n\n    set onclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onclick' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onclick' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onclick\"] = V;\n    }\n\n    get onclose() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onclose' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onclose\"]);\n    }\n\n    set onclose(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onclose' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onclose' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onclose\"] = V;\n    }\n\n    get oncontextlost() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextlost' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextlost\"]);\n    }\n\n    set oncontextlost(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextlost' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextlost' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextlost\"] = V;\n    }\n\n    get oncontextmenu() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextmenu' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextmenu\"]);\n    }\n\n    set oncontextmenu(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextmenu' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextmenu' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextmenu\"] = V;\n    }\n\n    get oncontextrestored() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextrestored' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextrestored\"]);\n    }\n\n    set oncontextrestored(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextrestored' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextrestored' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextrestored\"] = V;\n    }\n\n    get oncopy() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get oncopy' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncopy\"]);\n    }\n\n    set oncopy(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set oncopy' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncopy' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncopy\"] = V;\n    }\n\n    get oncuechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncuechange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncuechange\"]);\n    }\n\n    set oncuechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncuechange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncuechange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncuechange\"] = V;\n    }\n\n    get oncut() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get oncut' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncut\"]);\n    }\n\n    set oncut(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set oncut' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncut' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncut\"] = V;\n    }\n\n    get ondblclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondblclick' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondblclick\"]);\n    }\n\n    set ondblclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondblclick' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondblclick' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondblclick\"] = V;\n    }\n\n    get ondrag() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get ondrag' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondrag\"]);\n    }\n\n    set ondrag(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set ondrag' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondrag' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondrag\"] = V;\n    }\n\n    get ondragend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragend\"]);\n    }\n\n    set ondragend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragend' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragend\"] = V;\n    }\n\n    get ondragenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragenter' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragenter\"]);\n    }\n\n    set ondragenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragenter' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragenter' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragenter\"] = V;\n    }\n\n    get ondragleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragleave' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragleave\"]);\n    }\n\n    set ondragleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragleave' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragleave' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragleave\"] = V;\n    }\n\n    get ondragover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragover' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragover\"]);\n    }\n\n    set ondragover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragover' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragover' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragover\"] = V;\n    }\n\n    get ondragstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragstart\"]);\n    }\n\n    set ondragstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragstart' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragstart\"] = V;\n    }\n\n    get ondrop() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get ondrop' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondrop\"]);\n    }\n\n    set ondrop(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set ondrop' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondrop' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondrop\"] = V;\n    }\n\n    get ondurationchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondurationchange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondurationchange\"]);\n    }\n\n    set ondurationchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondurationchange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondurationchange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondurationchange\"] = V;\n    }\n\n    get onemptied() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onemptied' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onemptied\"]);\n    }\n\n    set onemptied(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onemptied' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onemptied' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onemptied\"] = V;\n    }\n\n    get onended() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onended' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onended\"]);\n    }\n\n    set onended(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onended' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onended' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onended\"] = V;\n    }\n\n    get onerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onerror' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onerror\"]);\n    }\n\n    set onerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onerror' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = OnErrorEventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onerror' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onerror\"] = V;\n    }\n\n    get onfocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onfocus' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onfocus\"]);\n    }\n\n    set onfocus(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onfocus' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onfocus' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onfocus\"] = V;\n    }\n\n    get onformdata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onformdata' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onformdata\"]);\n    }\n\n    set onformdata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onformdata' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onformdata' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onformdata\"] = V;\n    }\n\n    get oninput() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get oninput' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oninput\"]);\n    }\n\n    set oninput(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set oninput' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oninput' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oninput\"] = V;\n    }\n\n    get oninvalid() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oninvalid' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oninvalid\"]);\n    }\n\n    set oninvalid(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oninvalid' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oninvalid' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oninvalid\"] = V;\n    }\n\n    get onkeydown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeydown' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeydown\"]);\n    }\n\n    set onkeydown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeydown' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeydown' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeydown\"] = V;\n    }\n\n    get onkeypress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeypress' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeypress\"]);\n    }\n\n    set onkeypress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeypress' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeypress' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeypress\"] = V;\n    }\n\n    get onkeyup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onkeyup' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeyup\"]);\n    }\n\n    set onkeyup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onkeyup' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeyup' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeyup\"] = V;\n    }\n\n    get onload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onload' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onload\"]);\n    }\n\n    set onload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onload' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onload' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onload\"] = V;\n    }\n\n    get onloadeddata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadeddata' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadeddata\"]);\n    }\n\n    set onloadeddata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadeddata' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadeddata' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadeddata\"] = V;\n    }\n\n    get onloadedmetadata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadedmetadata' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadedmetadata\"]);\n    }\n\n    set onloadedmetadata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadedmetadata' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadedmetadata' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadedmetadata\"] = V;\n    }\n\n    get onloadstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadstart\"]);\n    }\n\n    set onloadstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadstart' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadstart\"] = V;\n    }\n\n    get onmousedown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmousedown' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmousedown\"]);\n    }\n\n    set onmousedown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmousedown' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmousedown' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmousedown\"] = V;\n    }\n\n    get onmouseenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseenter\"]);\n    }\n\n    set onmouseenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseenter' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseenter\"] = V;\n    }\n\n    get onmouseleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseleave\"]);\n    }\n\n    set onmouseleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseleave' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseleave\"] = V;\n    }\n\n    get onmousemove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmousemove' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmousemove\"]);\n    }\n\n    set onmousemove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmousemove' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmousemove' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmousemove\"] = V;\n    }\n\n    get onmouseout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseout' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseout\"]);\n    }\n\n    set onmouseout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseout' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseout' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseout\"] = V;\n    }\n\n    get onmouseover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseover' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseover\"]);\n    }\n\n    set onmouseover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseover' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseover' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseover\"] = V;\n    }\n\n    get onmouseup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseup' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseup\"]);\n    }\n\n    set onmouseup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseup' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseup' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseup\"] = V;\n    }\n\n    get onpaste() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onpaste' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpaste\"]);\n    }\n\n    set onpaste(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onpaste' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpaste' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpaste\"] = V;\n    }\n\n    get onpause() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onpause' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpause\"]);\n    }\n\n    set onpause(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onpause' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpause' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpause\"] = V;\n    }\n\n    get onplay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onplay' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onplay\"]);\n    }\n\n    set onplay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onplay' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onplay' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onplay\"] = V;\n    }\n\n    get onplaying() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onplaying' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onplaying\"]);\n    }\n\n    set onplaying(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onplaying' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onplaying' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onplaying\"] = V;\n    }\n\n    get onprogress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onprogress' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onprogress\"]);\n    }\n\n    set onprogress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onprogress' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onprogress' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onprogress\"] = V;\n    }\n\n    get onratechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onratechange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onratechange\"]);\n    }\n\n    set onratechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onratechange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onratechange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onratechange\"] = V;\n    }\n\n    get onreset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onreset' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onreset\"]);\n    }\n\n    set onreset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onreset' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onreset' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onreset\"] = V;\n    }\n\n    get onresize() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onresize' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onresize\"]);\n    }\n\n    set onresize(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onresize' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onresize' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onresize\"] = V;\n    }\n\n    get onscroll() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onscroll' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onscroll\"]);\n    }\n\n    set onscroll(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onscroll' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onscroll' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onscroll\"] = V;\n    }\n\n    get onscrollend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onscrollend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onscrollend\"]);\n    }\n\n    set onscrollend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onscrollend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onscrollend' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onscrollend\"] = V;\n    }\n\n    get onsecuritypolicyviolation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsecuritypolicyviolation' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsecuritypolicyviolation\"]);\n    }\n\n    set onsecuritypolicyviolation(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsecuritypolicyviolation' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsecuritypolicyviolation' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsecuritypolicyviolation\"] = V;\n    }\n\n    get onseeked() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onseeked' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onseeked\"]);\n    }\n\n    set onseeked(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onseeked' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onseeked' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onseeked\"] = V;\n    }\n\n    get onseeking() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onseeking' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onseeking\"]);\n    }\n\n    set onseeking(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onseeking' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onseeking' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onseeking\"] = V;\n    }\n\n    get onselect() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onselect' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onselect\"]);\n    }\n\n    set onselect(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onselect' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onselect' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onselect\"] = V;\n    }\n\n    get onslotchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onslotchange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onslotchange\"]);\n    }\n\n    set onslotchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onslotchange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onslotchange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onslotchange\"] = V;\n    }\n\n    get onstalled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onstalled' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onstalled\"]);\n    }\n\n    set onstalled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onstalled' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onstalled' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onstalled\"] = V;\n    }\n\n    get onsubmit() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsubmit' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsubmit\"]);\n    }\n\n    set onsubmit(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsubmit' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsubmit' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsubmit\"] = V;\n    }\n\n    get onsuspend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsuspend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsuspend\"]);\n    }\n\n    set onsuspend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsuspend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsuspend' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsuspend\"] = V;\n    }\n\n    get ontimeupdate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontimeupdate' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontimeupdate\"]);\n    }\n\n    set ontimeupdate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontimeupdate' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontimeupdate' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontimeupdate\"] = V;\n    }\n\n    get ontoggle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontoggle' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontoggle\"]);\n    }\n\n    set ontoggle(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontoggle' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontoggle' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontoggle\"] = V;\n    }\n\n    get onvolumechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onvolumechange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onvolumechange\"]);\n    }\n\n    set onvolumechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onvolumechange' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onvolumechange' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onvolumechange\"] = V;\n    }\n\n    get onwaiting() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwaiting' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwaiting\"]);\n    }\n\n    set onwaiting(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwaiting' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwaiting' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwaiting\"] = V;\n    }\n\n    get onwebkitanimationend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationend\"]);\n    }\n\n    set onwebkitanimationend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationend' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationend\"] = V;\n    }\n\n    get onwebkitanimationiteration() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationiteration' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationiteration\"]);\n    }\n\n    set onwebkitanimationiteration(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationiteration' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationiteration' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationiteration\"] = V;\n    }\n\n    get onwebkitanimationstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationstart\"]);\n    }\n\n    set onwebkitanimationstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationstart' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationstart\"] = V;\n    }\n\n    get onwebkittransitionend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkittransitionend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkittransitionend\"]);\n    }\n\n    set onwebkittransitionend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkittransitionend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkittransitionend' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkittransitionend\"] = V;\n    }\n\n    get onwheel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onwheel' called on an object that is not a valid instance of Document.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwheel\"]);\n    }\n\n    set onwheel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onwheel' called on an object that is not a valid instance of Document.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwheel' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwheel\"] = V;\n    }\n\n    get ontouchstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchstart\"]);\n    }\n\n    set ontouchstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchstart' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchstart' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchstart\"] = V;\n    }\n\n    get ontouchend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchend\"]);\n    }\n\n    set ontouchend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchend' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchend' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchend\"] = V;\n    }\n\n    get ontouchmove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchmove' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchmove\"]);\n    }\n\n    set ontouchmove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchmove' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchmove' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchmove\"] = V;\n    }\n\n    get ontouchcancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchcancel' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchcancel\"]);\n    }\n\n    set ontouchcancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchcancel' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchcancel' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchcancel\"] = V;\n    }\n\n    get onpointerover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerover' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerover\"]);\n    }\n\n    set onpointerover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerover' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerover' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerover\"] = V;\n    }\n\n    get onpointerenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerenter' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerenter\"]);\n    }\n\n    set onpointerenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerenter' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerenter' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerenter\"] = V;\n    }\n\n    get onpointerdown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerdown' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerdown\"]);\n    }\n\n    set onpointerdown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerdown' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerdown' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerdown\"] = V;\n    }\n\n    get onpointermove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointermove' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointermove\"]);\n    }\n\n    set onpointermove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointermove' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointermove' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointermove\"] = V;\n    }\n\n    get onpointerrawupdate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerrawupdate' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerrawupdate\"]);\n    }\n\n    set onpointerrawupdate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerrawupdate' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerrawupdate' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerrawupdate\"] = V;\n    }\n\n    get onpointerup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerup' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerup\"]);\n    }\n\n    set onpointerup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerup' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerup' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerup\"] = V;\n    }\n\n    get onpointercancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointercancel' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointercancel\"]);\n    }\n\n    set onpointercancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointercancel' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointercancel' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointercancel\"] = V;\n    }\n\n    get onpointerout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerout' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerout\"]);\n    }\n\n    set onpointerout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerout' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerout' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerout\"] = V;\n    }\n\n    get onpointerleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerleave' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerleave\"]);\n    }\n\n    set onpointerleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerleave' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerleave' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerleave\"] = V;\n    }\n\n    get ongotpointercapture() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ongotpointercapture' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ongotpointercapture\"]);\n    }\n\n    set ongotpointercapture(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ongotpointercapture' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ongotpointercapture' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ongotpointercapture\"] = V;\n    }\n\n    get onlostpointercapture() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onlostpointercapture' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onlostpointercapture\"]);\n    }\n\n    set onlostpointercapture(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onlostpointercapture' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onlostpointercapture' property on 'Document': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onlostpointercapture\"] = V;\n    }\n\n    get activeElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get activeElement' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"activeElement\"]);\n    }\n\n    get children() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get children' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"children\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"children\"]);\n      });\n    }\n\n    get firstElementChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get firstElementChild' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"firstElementChild\"]);\n    }\n\n    get lastElementChild() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lastElementChild' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"lastElementChild\"]);\n    }\n\n    get childElementCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get childElementCount' called on an object that is not a valid instance of Document.\"\n        );\n      }\n\n      return esValue[implSymbol][\"childElementCount\"];\n    }\n  }\n  Object.defineProperties(Document.prototype, {\n    getElementsByTagName: { enumerable: true },\n    getElementsByTagNameNS: { enumerable: true },\n    getElementsByClassName: { enumerable: true },\n    createElement: { enumerable: true },\n    createElementNS: { enumerable: true },\n    createDocumentFragment: { enumerable: true },\n    createTextNode: { enumerable: true },\n    createCDATASection: { enumerable: true },\n    createComment: { enumerable: true },\n    createProcessingInstruction: { enumerable: true },\n    importNode: { enumerable: true },\n    adoptNode: { enumerable: true },\n    createAttribute: { enumerable: true },\n    createAttributeNS: { enumerable: true },\n    createEvent: { enumerable: true },\n    createRange: { enumerable: true },\n    createNodeIterator: { enumerable: true },\n    createTreeWalker: { enumerable: true },\n    getElementsByName: { enumerable: true },\n    open: { enumerable: true },\n    close: { enumerable: true },\n    write: { enumerable: true },\n    writeln: { enumerable: true },\n    hasFocus: { enumerable: true },\n    clear: { enumerable: true },\n    captureEvents: { enumerable: true },\n    releaseEvents: { enumerable: true },\n    getSelection: { enumerable: true },\n    getElementById: { enumerable: true },\n    prepend: { enumerable: true },\n    append: { enumerable: true },\n    replaceChildren: { enumerable: true },\n    querySelector: { enumerable: true },\n    querySelectorAll: { enumerable: true },\n    implementation: { enumerable: true },\n    URL: { enumerable: true },\n    documentURI: { enumerable: true },\n    compatMode: { enumerable: true },\n    characterSet: { enumerable: true },\n    charset: { enumerable: true },\n    inputEncoding: { enumerable: true },\n    contentType: { enumerable: true },\n    doctype: { enumerable: true },\n    documentElement: { enumerable: true },\n    referrer: { enumerable: true },\n    cookie: { enumerable: true },\n    lastModified: { enumerable: true },\n    readyState: { enumerable: true },\n    title: { enumerable: true },\n    dir: { enumerable: true },\n    body: { enumerable: true },\n    head: { enumerable: true },\n    images: { enumerable: true },\n    embeds: { enumerable: true },\n    plugins: { enumerable: true },\n    links: { enumerable: true },\n    forms: { enumerable: true },\n    scripts: { enumerable: true },\n    currentScript: { enumerable: true },\n    defaultView: { enumerable: true },\n    onreadystatechange: { enumerable: true },\n    anchors: { enumerable: true },\n    applets: { enumerable: true },\n    styleSheets: { enumerable: true },\n    hidden: { enumerable: true },\n    visibilityState: { enumerable: true },\n    onvisibilitychange: { enumerable: true },\n    onabort: { enumerable: true },\n    onauxclick: { enumerable: true },\n    onbeforeinput: { enumerable: true },\n    onbeforematch: { enumerable: true },\n    onbeforetoggle: { enumerable: true },\n    onblur: { enumerable: true },\n    oncancel: { enumerable: true },\n    oncanplay: { enumerable: true },\n    oncanplaythrough: { enumerable: true },\n    onchange: { enumerable: true },\n    onclick: { enumerable: true },\n    onclose: { enumerable: true },\n    oncontextlost: { enumerable: true },\n    oncontextmenu: { enumerable: true },\n    oncontextrestored: { enumerable: true },\n    oncopy: { enumerable: true },\n    oncuechange: { enumerable: true },\n    oncut: { enumerable: true },\n    ondblclick: { enumerable: true },\n    ondrag: { enumerable: true },\n    ondragend: { enumerable: true },\n    ondragenter: { enumerable: true },\n    ondragleave: { enumerable: true },\n    ondragover: { enumerable: true },\n    ondragstart: { enumerable: true },\n    ondrop: { enumerable: true },\n    ondurationchange: { enumerable: true },\n    onemptied: { enumerable: true },\n    onended: { enumerable: true },\n    onerror: { enumerable: true },\n    onfocus: { enumerable: true },\n    onformdata: { enumerable: true },\n    oninput: { enumerable: true },\n    oninvalid: { enumerable: true },\n    onkeydown: { enumerable: true },\n    onkeypress: { enumerable: true },\n    onkeyup: { enumerable: true },\n    onload: { enumerable: true },\n    onloadeddata: { enumerable: true },\n    onloadedmetadata: { enumerable: true },\n    onloadstart: { enumerable: true },\n    onmousedown: { enumerable: true },\n    onmouseenter: { enumerable: true },\n    onmouseleave: { enumerable: true },\n    onmousemove: { enumerable: true },\n    onmouseout: { enumerable: true },\n    onmouseover: { enumerable: true },\n    onmouseup: { enumerable: true },\n    onpaste: { enumerable: true },\n    onpause: { enumerable: true },\n    onplay: { enumerable: true },\n    onplaying: { enumerable: true },\n    onprogress: { enumerable: true },\n    onratechange: { enumerable: true },\n    onreset: { enumerable: true },\n    onresize: { enumerable: true },\n    onscroll: { enumerable: true },\n    onscrollend: { enumerable: true },\n    onsecuritypolicyviolation: { enumerable: true },\n    onseeked: { enumerable: true },\n    onseeking: { enumerable: true },\n    onselect: { enumerable: true },\n    onslotchange: { enumerable: true },\n    onstalled: { enumerable: true },\n    onsubmit: { enumerable: true },\n    onsuspend: { enumerable: true },\n    ontimeupdate: { enumerable: true },\n    ontoggle: { enumerable: true },\n    onvolumechange: { enumerable: true },\n    onwaiting: { enumerable: true },\n    onwebkitanimationend: { enumerable: true },\n    onwebkitanimationiteration: { enumerable: true },\n    onwebkitanimationstart: { enumerable: true },\n    onwebkittransitionend: { enumerable: true },\n    onwheel: { enumerable: true },\n    ontouchstart: { enumerable: true },\n    ontouchend: { enumerable: true },\n    ontouchmove: { enumerable: true },\n    ontouchcancel: { enumerable: true },\n    onpointerover: { enumerable: true },\n    onpointerenter: { enumerable: true },\n    onpointerdown: { enumerable: true },\n    onpointermove: { enumerable: true },\n    onpointerrawupdate: { enumerable: true },\n    onpointerup: { enumerable: true },\n    onpointercancel: { enumerable: true },\n    onpointerout: { enumerable: true },\n    onpointerleave: { enumerable: true },\n    ongotpointercapture: { enumerable: true },\n    onlostpointercapture: { enumerable: true },\n    activeElement: { enumerable: true },\n    children: { enumerable: true },\n    firstElementChild: { enumerable: true },\n    lastElementChild: { enumerable: true },\n    childElementCount: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Document\", configurable: true },\n    [Symbol.unscopables]: {\n      value: { prepend: true, append: true, replaceChildren: true, __proto__: null },\n      configurable: true\n    }\n  });\n  ctorRegistry[interfaceName] = Document;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Document\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/Document-impl.js\");\n","\"use strict\";\nconst DocumentImpl = require(\"./Document-impl\").implementation;\n\nexports.implementation = class XMLDocumentImpl extends DocumentImpl {};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Document = require(\"./Document.js\");\n\nconst interfaceName = \"XMLDocument\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'XMLDocument'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"XMLDocument\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Document._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class XMLDocument extends globalObject.Document {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(XMLDocument.prototype, {\n    [Symbol.toStringTag]: { value: \"XMLDocument\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = XMLDocument;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: XMLDocument\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/XMLDocument-impl.js\");\n","\"use strict\";\nconst XMLDocument = require(\"../../generated/idl/XMLDocument.js\");\nconst Document = require(\"../../generated/idl/Document.js\");\nconst { wrapperForImpl } = require(\"../../generated/idl/utils.js\");\n\nexports.createImpl = (globalObject, options, { alwaysUseDocumentClass = false } = {}) => {\n  if (options.parsingMode === \"xml\" && !alwaysUseDocumentClass) {\n    return XMLDocument.createImpl(globalObject, [], { options });\n  }\n  return Document.createImpl(globalObject, [], { options });\n};\n\nexports.createWrapper = (...args) => {\n  return wrapperForImpl(exports.createImpl(...args));\n};\n","\"use strict\";\n\nconst validateNames = require(\"../helpers/validate-names\");\nconst { HTML_NS, SVG_NS } = require(\"../helpers/namespaces\");\nconst { createElement, internalCreateElementNSSteps } = require(\"../helpers/create-element\");\nconst DocumentType = require(\"../../../generated/idl/DocumentType\");\nconst documents = require(\"../documents.js\");\n\nclass DOMImplementationImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n    this._ownerDocument = privateData.ownerDocument;\n  }\n\n  hasFeature() {\n    return true;\n  }\n\n  createDocumentType(qualifiedName, publicId, systemId) {\n    validateNames.qname(this._globalObject, qualifiedName);\n\n    return DocumentType.createImpl(this._globalObject, [], {\n      ownerDocument: this._ownerDocument,\n      name: qualifiedName,\n      publicId,\n      systemId\n    });\n  }\n\n  // https://dom.spec.whatwg.org/#dom-domimplementation-createdocument\n  createDocument(namespace, qualifiedName, doctype) {\n    let contentType = \"application/xml\";\n\n    if (namespace === HTML_NS) {\n      contentType = \"application/xhtml+xml\";\n    } else if (namespace === SVG_NS) {\n      contentType = \"image/svg+xml\";\n    }\n\n    const document = documents.createImpl(this._globalObject, {\n      contentType,\n      parsingMode: \"xml\",\n      encoding: \"UTF-8\"\n    });\n\n    let element = null;\n    if (qualifiedName !== \"\") {\n      element = internalCreateElementNSSteps(document, namespace, qualifiedName, {});\n    }\n\n    if (doctype !== null) {\n      document.appendChild(doctype);\n    }\n\n    if (element !== null) {\n      document.appendChild(element);\n    }\n\n    document._origin = this._ownerDocument._origin;\n\n    return document;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument\n  createHTMLDocument(title) {\n    // Let doc be a new document that is an HTML document.\n    // Set doc's content type to \"text/html\".\n    const document = documents.createImpl(this._globalObject, {\n      parsingMode: \"html\",\n      encoding: \"UTF-8\"\n    });\n\n    // Create a doctype, with \"html\" as its name and with its node document set\n    // to doc. Append the newly created node to doc.\n    const doctype = DocumentType.createImpl(this._globalObject, [], {\n      ownerDocument: document,\n      name: \"html\",\n      publicId: \"\",\n      systemId: \"\"\n    });\n\n    document.appendChild(doctype);\n\n    // Create an html element in the HTML namespace, and append it to doc.\n    const htmlElement = createElement(document, \"html\", HTML_NS);\n    document.appendChild(htmlElement);\n\n    // Create a head element in the HTML namespace, and append it to the html\n    // element created in the previous step.\n    const headElement = createElement(document, \"head\", HTML_NS);\n    htmlElement.appendChild(headElement);\n\n    // If the title argument is not omitted:\n    if (title !== undefined) {\n      // Create a title element in the HTML namespace, and append it to the head\n      // element created in the previous step.\n      const titleElement = createElement(document, \"title\", HTML_NS);\n      headElement.appendChild(titleElement);\n\n      // Create a Text node, set its data to title (which could be the empty\n      // string), and append it to the title element created in the previous step.\n      titleElement.appendChild(document.createTextNode(title));\n    }\n\n    // Create a body element in the HTML namespace, and append it to the html\n    // element created in the earlier step.\n    const bodyElement = createElement(document, \"body\", HTML_NS);\n    htmlElement.appendChild(bodyElement);\n\n    // doc's origin is an alias to the origin of the context object's associated\n    // document, and doc's effective script origin is an alias to the effective\n    // script origin of the context object's associated document.\n\n    return document;\n  }\n}\n\nmodule.exports = {\n  implementation: DOMImplementationImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst DocumentType = require(\"./DocumentType.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DOMImplementation\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DOMImplementation'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DOMImplementation\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DOMImplementation {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    createDocumentType(qualifiedName, publicId, systemId) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createDocumentType' called on an object that is not a valid instance of DOMImplementation.\"\n        );\n      }\n\n      if (arguments.length < 3) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createDocumentType' on 'DOMImplementation': 3 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createDocumentType' on 'DOMImplementation': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createDocumentType' on 'DOMImplementation': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createDocumentType' on 'DOMImplementation': parameter 3\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createDocumentType(...args));\n    }\n\n    createDocument(namespace, qualifiedName) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createDocument' called on an object that is not a valid instance of DOMImplementation.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'createDocument' on 'DOMImplementation': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'createDocument' on 'DOMImplementation': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'createDocument' on 'DOMImplementation': parameter 2\",\n          globals: globalObject,\n          treatNullAsEmptyString: true\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = DocumentType.convert(globalObject, curArg, {\n              context: \"Failed to execute 'createDocument' on 'DOMImplementation': parameter 3\"\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createDocument(...args));\n    }\n\n    createHTMLDocument() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createHTMLDocument' called on an object that is not a valid instance of DOMImplementation.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'createHTMLDocument' on 'DOMImplementation': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].createHTMLDocument(...args));\n    }\n\n    hasFeature() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'hasFeature' called on an object that is not a valid instance of DOMImplementation.\"\n        );\n      }\n\n      return esValue[implSymbol].hasFeature();\n    }\n  }\n  Object.defineProperties(DOMImplementation.prototype, {\n    createDocumentType: { enumerable: true },\n    createDocument: { enumerable: true },\n    createHTMLDocument: { enumerable: true },\n    hasFeature: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DOMImplementation\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = DOMImplementation;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DOMImplementation\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/DOMImplementation-impl.js\");\n","\"use strict\";\n\nconst NodeListImpl = require(\"./NodeList-impl\").implementation;\n\nclass RadioNodeListImpl extends NodeListImpl {\n  // https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#dom-radionodelist-value\n  // Note in general the spec says to manipulate/consult checkedness, but we use `checked` instead\n  // because the spec isn't very good here: https://github.com/whatwg/html/issues/7612.\n\n  get value() {\n    this._update();\n\n    const element = this._list.find(e => e._localName === \"input\" && e.type === \"radio\" && e.checked);\n    if (element === undefined) {\n      return \"\";\n    }\n\n    if (!element.hasAttributeNS(null, \"value\")) {\n      return \"on\";\n    }\n\n    return element.getAttributeNS(null, \"value\");\n  }\n\n  set value(value) {\n    let element;\n    if (value === \"on\") {\n      element = this._list.find(\n        e => e._localName === \"input\" &&\n             e.type === \"radio\" &&\n             (!e.hasAttributeNS(null, \"value\") || e.getAttributeNS(null, \"value\") === value)\n      );\n    } else {\n      element = this._list.find(\n        e => e._localName === \"input\" &&\n             e.type === \"radio\" &&\n             (e.hasAttributeNS(null, \"value\") && e.getAttributeNS(null, \"value\") === value)\n      );\n    }\n\n    if (element) {\n      element.checked = true;\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: RadioNodeListImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst NodeList = require(\"./NodeList.js\");\n\nconst interfaceName = \"RadioNodeList\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'RadioNodeList'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"RadioNodeList\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  NodeList._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class RadioNodeList extends globalObject.NodeList {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of RadioNodeList.\"\n        );\n      }\n\n      return esValue[implSymbol][\"value\"];\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of RadioNodeList.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'RadioNodeList': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"value\"] = V;\n    }\n  }\n  Object.defineProperties(RadioNodeList.prototype, {\n    value: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"RadioNodeList\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = RadioNodeList;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: RadioNodeList\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/RadioNodeList-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst NODE_TYPE = require(\"../node-type\");\nconst { stripAndCollapseASCIIWhitespace } = require(\"../helpers/strings\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { HTML_NS, SVG_NS } = require(\"../helpers/namespaces\");\nconst { closest } = require(\"../helpers/traversal\");\nconst { formOwner } = require(\"../helpers/form-controls\");\n\nclass HTMLOptionElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    // whenever selectedness is set to true, make sure all\n    // other options set selectedness to false\n    this._selectedness = false;\n    this._dirtyness = false;\n  }\n\n  _removeOtherSelectedness() {\n    // Remove the selectedness flag from all other options in this select\n    const select = this._selectNode;\n\n    if (select && !select.hasAttributeNS(null, \"multiple\")) {\n      for (const option of select.options) {\n        if (option !== this) {\n          option._selectedness = false;\n        }\n      }\n    }\n  }\n\n  _askForAReset() {\n    const select = this._selectNode;\n    if (select) {\n      select._askedForAReset();\n    }\n  }\n\n  _attrModified(name, value, oldValue) {\n    if (!this._dirtyness && name === \"selected\") {\n      this._selectedness = this.hasAttributeNS(null, \"selected\");\n      if (this._selectedness) {\n        this._removeOtherSelectedness();\n      }\n      this._askForAReset();\n    }\n    super._attrModified(name, value, oldValue);\n  }\n\n  get _selectNode() {\n    let select = domSymbolTree.parent(this);\n    if (!select) {\n      return null;\n    }\n\n    if (select._localName !== \"select\") {\n      select = domSymbolTree.parent(select);\n      if (!select || select._localName !== \"select\") {\n        return null;\n      }\n    }\n    return select;\n  }\n\n  get form() {\n    return formOwner(this);\n  }\n\n  get text() {\n    return stripAndCollapseASCIIWhitespace(childTextContentExcludingDescendantsOfScript(this));\n  }\n  set text(value) {\n    this.textContent = value;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-value\n  _getValue() {\n    if (this.hasAttributeNS(null, \"value\")) {\n      return this.getAttributeNS(null, \"value\");\n    }\n\n    return this.text;\n  }\n\n  get value() {\n    return this._getValue();\n  }\n  set value(value) {\n    this.setAttributeNS(null, \"value\", value);\n  }\n\n  get index() {\n    const select = closest(this, \"select\");\n    if (select === null) {\n      return 0;\n    }\n\n    return select.options.indexOf(this);\n  }\n\n  get selected() {\n    return this._selectedness;\n  }\n  set selected(s) {\n    this._dirtyness = true;\n    this._selectedness = Boolean(s);\n    if (this._selectedness) {\n      this._removeOtherSelectedness();\n    }\n    this._askForAReset();\n    this._modified();\n  }\n\n  get label() {\n    if (this.hasAttributeNS(null, \"label\")) {\n      return this.getAttributeNS(null, \"label\");\n    }\n\n    return this.text;\n  }\n  set label(value) {\n    this.setAttributeNS(null, \"label\", value);\n  }\n}\n\nfunction childTextContentExcludingDescendantsOfScript(root) {\n  let text = \"\";\n  for (const child of domSymbolTree.childrenIterator(root)) {\n    if (child._localName === \"script\" && (child._namespaceURI === HTML_NS || child._namespaceURI === SVG_NS)) {\n      continue;\n    }\n\n    if (child.nodeType === NODE_TYPE.TEXT_NODE || child.nodeType === NODE_TYPE.CDATA_SECTION_NODE) {\n      text += child.nodeValue;\n    } else {\n      text += childTextContentExcludingDescendantsOfScript(child);\n    }\n  }\n  return text;\n}\n\nmodule.exports = {\n  implementation: HTMLOptionElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLOptionElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLOptionElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLOptionElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLOptionElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get disabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get disabled' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"disabled\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set disabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set disabled' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'disabled' property on 'HTMLOptionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"disabled\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"disabled\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get label() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get label' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"label\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set label(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set label' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'label' property on 'HTMLOptionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"label\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get defaultSelected() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultSelected' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"selected\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set defaultSelected(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defaultSelected' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'defaultSelected' property on 'HTMLOptionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"selected\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"selected\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get selected() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selected' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selected\"];\n    }\n\n    set selected(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selected' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'selected' property on 'HTMLOptionElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"selected\"] = V;\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLOptionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get text() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get text' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"text\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set text(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set text' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'text' property on 'HTMLOptionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"text\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get index() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get index' called on an object that is not a valid instance of HTMLOptionElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"index\"];\n    }\n  }\n  Object.defineProperties(HTMLOptionElement.prototype, {\n    disabled: { enumerable: true },\n    form: { enumerable: true },\n    label: { enumerable: true },\n    defaultSelected: { enumerable: true },\n    selected: { enumerable: true },\n    value: { enumerable: true },\n    text: { enumerable: true },\n    index: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLOptionElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLOptionElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLOptionElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLOptionElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLOptGroupElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLOptGroupElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLOptGroupElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLOptGroupElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLOptGroupElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLOptGroupElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get disabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get disabled' called on an object that is not a valid instance of HTMLOptGroupElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"disabled\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set disabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set disabled' called on an object that is not a valid instance of HTMLOptGroupElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'disabled' property on 'HTMLOptGroupElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"disabled\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"disabled\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get label() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get label' called on an object that is not a valid instance of HTMLOptGroupElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"label\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set label(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set label' called on an object that is not a valid instance of HTMLOptGroupElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'label' property on 'HTMLOptGroupElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"label\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLOptGroupElement.prototype, {\n    disabled: { enumerable: true },\n    label: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLOptGroupElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLOptGroupElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLOptGroupElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLOptGroupElement-impl.js\");\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_CONTAINED_BY } = require(\"../node-document-position\");\nconst Element = require(\"../../../generated/idl/Element\");\nconst Node = require(\"../../../generated/idl/Node\");\nconst HTMLCollectionImpl = require(\"./HTMLCollection-impl\").implementation;\n\nexports.implementation = class HTMLOptionsCollectionImpl extends HTMLCollectionImpl {\n  // inherits supported property indices\n  get length() {\n    this._update();\n    return this._list.length;\n  }\n  set length(value) {\n    this._update();\n    if (value > this._list.length) {\n      const doc = this._element._ownerDocument;\n      for (let i = this._list.length; i < value; i++) {\n        const el = doc.createElement(\"option\");\n        this._element.appendChild(el);\n      }\n    } else if (value < this._list.length) {\n      for (let i = this._list.length - 1; i >= value; i--) {\n        const el = this._list[i];\n        this._element.removeChild(el);\n      }\n    }\n  }\n\n  get [idlUtils.supportedPropertyNames]() {\n    this._update();\n    const result = new Set();\n    for (const element of this._list) {\n      result.add(element.getAttributeNS(null, \"id\"));\n      result.add(element.getAttributeNS(null, \"name\"));\n    }\n    return result;\n  }\n  [idlUtils.indexedSetNew](index, value) {\n    if (value === null) {\n      this.remove(index);\n      return;\n    }\n    this._update();\n    const { length } = this._list;\n    const n = index - length;\n    if (n > 0) {\n      const doc = this._element._ownerDocument;\n      const frag = doc.createDocumentFragment();\n      // Spec says n - 1, but n seems to be the right number here.\n      for (let i = 0; i < n; i++) {\n        const el = doc.createElement(\"option\");\n        frag.appendChild(el);\n      }\n      this._element._append(frag);\n    }\n    if (n >= 0) {\n      this._element._append(value);\n    } else {\n      this._element._replace(value, this._list[index]);\n    }\n  }\n  [idlUtils.indexedSetExisting](index, value) {\n    return this[idlUtils.indexedSetNew](index, value);\n  }\n  add(element, before) {\n    if (this._element.compareDocumentPosition(element) & DOCUMENT_POSITION_CONTAINS) {\n      throw DOMException.create(this._globalObject, [\n        \"The operation would yield an incorrect node tree.\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n    if (Element.isImpl(before) && !(this._element.compareDocumentPosition(before) & DOCUMENT_POSITION_CONTAINED_BY)) {\n      throw DOMException.create(this._globalObject, [\"The object can not be found here.\", \"NotFoundError\"]);\n    }\n    if (element === before) {\n      return;\n    }\n\n    let reference = null;\n    if (Node.isImpl(before)) {\n      reference = before;\n    } else if (typeof before === \"number\") {\n      this._update();\n      reference = this._list[before] || null;\n    }\n\n    const parent = reference !== null ? reference.parentNode : this._element;\n    parent._preInsert(element, reference);\n  }\n  remove(index) {\n    this._update();\n    if (this._list.length === 0) {\n      return;\n    }\n    if (index < 0 || index >= this._list.length) {\n      return;\n    }\n    const element = this._list[index];\n    element.parentNode._remove(element);\n  }\n  get selectedIndex() {\n    return this._element.selectedIndex;\n  }\n  set selectedIndex(value) {\n    this._element.selectedIndex = value;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLOptionElement = require(\"./HTMLOptionElement.js\");\nconst HTMLOptGroupElement = require(\"./HTMLOptGroupElement.js\");\nconst HTMLElement = require(\"./HTMLElement.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLCollection = require(\"./HTMLCollection.js\");\n\nconst interfaceName = \"HTMLOptionsCollection\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLOptionsCollection'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLOptionsCollection\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLCollection._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLOptionsCollection extends globalObject.HTMLCollection {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    add(element) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'add' called on an object that is not a valid instance of HTMLOptionsCollection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'add' on 'HTMLOptionsCollection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (HTMLOptionElement.is(curArg) || HTMLOptGroupElement.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          throw new globalObject.TypeError(\n            \"Failed to execute 'add' on 'HTMLOptionsCollection': parameter 1\" + \" is not of any supported type.\"\n          );\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            if (HTMLElement.is(curArg)) {\n              curArg = utils.implForWrapper(curArg);\n            } else if (typeof curArg === \"number\") {\n              curArg = conversions[\"long\"](curArg, {\n                context: \"Failed to execute 'add' on 'HTMLOptionsCollection': parameter 2\",\n                globals: globalObject\n              });\n            } else {\n              curArg = conversions[\"long\"](curArg, {\n                context: \"Failed to execute 'add' on 'HTMLOptionsCollection': parameter 2\",\n                globals: globalObject\n              });\n            }\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].add(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    remove(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'remove' called on an object that is not a valid instance of HTMLOptionsCollection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'remove' on 'HTMLOptionsCollection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"long\"](curArg, {\n          context: \"Failed to execute 'remove' on 'HTMLOptionsCollection': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].remove(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of HTMLOptionsCollection.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"length\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set length(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set length' called on an object that is not a valid instance of HTMLOptionsCollection.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'length' property on 'HTMLOptionsCollection': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"length\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get selectedIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectedIndex' called on an object that is not a valid instance of HTMLOptionsCollection.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectedIndex\"];\n    }\n\n    set selectedIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectedIndex' called on an object that is not a valid instance of HTMLOptionsCollection.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'selectedIndex' property on 'HTMLOptionsCollection': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"selectedIndex\"] = V;\n    }\n  }\n  Object.defineProperties(HTMLOptionsCollection.prototype, {\n    add: { enumerable: true },\n    remove: { enumerable: true },\n    length: { enumerable: true },\n    selectedIndex: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLOptionsCollection\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLOptionsCollection;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLOptionsCollection\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n      if (!(key in target)) {\n        keys.add(`${key}`);\n      }\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: true,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    const namedValue = target[implSymbol].namedItem(P);\n\n    if (namedValue !== null && !(P in target) && !ignoreNamedProps) {\n      return {\n        writable: false,\n        enumerable: true,\n        configurable: true,\n        value: utils.tryWrapperForImpl(namedValue)\n      };\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n\n      if (utils.isArrayIndexPropName(P)) {\n        const index = P >>> 0;\n        let indexedValue = V;\n\n        if (indexedValue === null || indexedValue === undefined) {\n          indexedValue = null;\n        } else {\n          indexedValue = HTMLOptionElement.convert(globalObject, indexedValue, {\n            context: \"Failed to set the \" + index + \" property on 'HTMLOptionsCollection': The provided value\"\n          });\n        }\n\n        ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n        try {\n          const creating = !(target[implSymbol].item(index) !== null);\n          if (creating) {\n            target[implSymbol][utils.indexedSetNew](index, indexedValue);\n          } else {\n            target[implSymbol][utils.indexedSetExisting](index, indexedValue);\n          }\n        } finally {\n          ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n        }\n\n        return true;\n      }\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: true,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      if (desc.get || desc.set) {\n        return false;\n      }\n\n      const index = P >>> 0;\n      let indexedValue = desc.value;\n\n      if (indexedValue === null || indexedValue === undefined) {\n        indexedValue = null;\n      } else {\n        indexedValue = HTMLOptionElement.convert(globalObject, indexedValue, {\n          context: \"Failed to set the \" + index + \" property on 'HTMLOptionsCollection': The provided value\"\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const creating = !(target[implSymbol].item(index) !== null);\n        if (creating) {\n          target[implSymbol][utils.indexedSetNew](index, indexedValue);\n        } else {\n          target[implSymbol][utils.indexedSetExisting](index, indexedValue);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n\n      return true;\n    }\n    if (!Object.hasOwn(target, P)) {\n      const creating = !(target[implSymbol].namedItem(P) !== null);\n      if (!creating) {\n        return false;\n      }\n    }\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    if (target[implSymbol].namedItem(P) !== null && !(P in target)) {\n      return false;\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLOptionsCollection-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLHeadElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLHeadElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLHeadElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLHeadElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLHeadElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLHeadElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n  }\n  Object.defineProperties(HTMLHeadElement.prototype, {\n    [Symbol.toStringTag]: { value: \"HTMLHeadElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLHeadElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLHeadElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLHeadElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { childTextContent } = require(\"../helpers/text\");\n\nclass HTMLTitleElementImpl extends HTMLElementImpl {\n  get text() {\n    return childTextContent(this);\n  }\n\n  set text(value) {\n    this.textContent = value;\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLTitleElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTitleElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTitleElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTitleElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTitleElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get text() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get text' called on an object that is not a valid instance of HTMLTitleElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"text\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set text(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set text' called on an object that is not a valid instance of HTMLTitleElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'text' property on 'HTMLTitleElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"text\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTitleElement.prototype, {\n    text: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTitleElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTitleElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTitleElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTitleElement-impl.js\");\n","\"use strict\";\nconst whatwgURL = require(\"whatwg-url\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLBaseElementImpl extends HTMLElementImpl {\n  get href() {\n    const document = this._ownerDocument;\n\n    const url = this.hasAttributeNS(null, \"href\") ? this.getAttributeNS(null, \"href\") : \"\";\n    const parsed = whatwgURL.parseURL(url, { baseURL: document._fallbackBaseURL() });\n\n    if (parsed === null) {\n      return url;\n    }\n\n    return whatwgURL.serializeURL(parsed);\n  }\n\n  set href(value) {\n    this.setAttributeNS(null, \"href\", value);\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    if (name === \"href\") {\n      this._ownerDocument._clearBaseURLCache();\n    }\n  }\n\n  _attach() {\n    super._attach();\n    this._ownerDocument._clearBaseURLCache();\n  }\n\n  _detach() {\n    super._detach();\n    this._ownerDocument._clearBaseURLCache();\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLBaseElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLBaseElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLBaseElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLBaseElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLBaseElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get href() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get href' called on an object that is not a valid instance of HTMLBaseElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"href\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set href(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set href' called on an object that is not a valid instance of HTMLBaseElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'href' property on 'HTMLBaseElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"href\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get target' called on an object that is not a valid instance of HTMLBaseElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"target\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set target(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set target' called on an object that is not a valid instance of HTMLBaseElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'target' property on 'HTMLBaseElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"target\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLBaseElement.prototype, {\n    href: { enumerable: true },\n    target: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLBaseElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLBaseElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLBaseElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLBaseElement-impl.js\");\n","\"use strict\";\nconst cssom = require(\"@acemir/cssom\");\nconst { legacyHookDecode } = require(\"@exodus/bytes/encoding.js\");\nconst whatwgURL = require(\"whatwg-url\");\nconst { invalidateStyleCache } = require(\"./style-rules\");\n\n// TODO: this should really implement https://html.spec.whatwg.org/multipage/links.html#link-type-stylesheet\n// It (and the things it calls) is nowhere close right now.\nexports.fetchStylesheet = (elementImpl, urlString, importRule) => {\n  const document = elementImpl._ownerDocument;\n  let defaultEncodingLabel = document._encoding;\n  const resourceLoader = document._resourceLoader;\n\n  if (elementImpl.localName === \"link\" && elementImpl.hasAttributeNS(null, \"charset\")) {\n    defaultEncodingLabel = elementImpl.getAttributeNS(null, \"charset\");\n  }\n\n  function onStylesheetLoad(data, response) {\n    if (!response.ok) {\n      throw new Error(\"Status code: \" + response.status);\n    }\n\n    // if the element was detached before the load could finish, don't process the data\n    if (!elementImpl._attached) {\n      return;\n    }\n\n    const css = legacyHookDecode(data, defaultEncodingLabel);\n\n    // TODO: MIME type checking?\n    if (!importRule && elementImpl.sheet) {\n      exports.removeStylesheet(elementImpl.sheet, elementImpl);\n    }\n\n    if (importRule) {\n      // According to the spec, we don't add the stylesheet to the document's\n      // stylesheet list when it's loaded via an @import rule.\n      exports.createStylesheet(css, elementImpl, urlString, {\n        ownerRule: importRule,\n        styleSheet: importRule.styleSheet\n      });\n    } else {\n      const createdSheet = exports.createStylesheet(css, elementImpl, urlString, {\n        ownerNode: elementImpl\n      });\n      exports.addStylesheet(createdSheet, elementImpl);\n    }\n  }\n\n  resourceLoader.fetch(urlString, {\n    element: elementImpl,\n    onLoad: onStylesheetLoad\n  });\n};\n\n// https://drafts.csswg.org/cssom/#remove-a-css-style-sheet\nexports.removeStylesheet = (sheet, elementImpl) => {\n  const { styleSheets } = elementImpl._ownerDocument;\n  styleSheets._remove(sheet);\n\n  // Remove the association explicitly; in the spec it's implicit so this step doesn't exist.\n  elementImpl.sheet = null;\n\n  invalidateStyleCache(elementImpl);\n\n  // TODO: \"Set the CSS style sheet’s parent CSS style sheet, owner node and owner CSS rule to null.\"\n  // Probably when we have a real CSSOM implementation.\n};\n\n// https://drafts.csswg.org/cssom/#create-a-css-style-sheet kinda:\n// - Parsing failures are now handled gracefully\n// - Like the browser's behaviour, when css.parse() passes trough some invalid CSS\n//   it will try it's best to ignore the invalid parts without blocking the parsing operations\n//   returning a stylesheet with the valid parts only.\n// - css.parse() now receives a funcion that we can use to handle the error as it's second argument\n// - The import rules stuff seems out of place, and probably should affect the load event...\nexports.createStylesheet = (sheetText, elementImpl, baseURLString, parserOptions) => {\n  const sheet = cssom.parse(sheetText, {\n    globalObject: elementImpl._globalObject,\n    ...parserOptions\n  }, err => {\n    if (elementImpl._ownerDocument._defaultView) {\n      const error = new Error(\"Could not parse CSS stylesheet\", { cause: err });\n      error.sheetText = sheetText;\n      error.type = \"css-parsing\";\n\n      elementImpl._ownerDocument._defaultView._virtualConsole.emit(\"jsdomError\", error);\n    }\n  });\n\n  scanForImportRules(elementImpl, sheet.cssRules, baseURLString);\n\n  return sheet;\n};\n\n// https://drafts.csswg.org/cssom/#add-a-css-style-sheet\nexports.addStylesheet = (sheet, elementImpl) => {\n  elementImpl._ownerDocument.styleSheets._add(sheet);\n\n  // Set the association explicitly; in the spec it's implicit.\n  elementImpl.sheet = sheet;\n\n  invalidateStyleCache(elementImpl);\n\n  // TODO: title and disabled stuff\n};\n\n// Tracking in https://github.com/jsdom/jsdom/issues/2124\nfunction scanForImportRules(elementImpl, cssRules, baseURLString) {\n  if (!cssRules) {\n    return;\n  }\n\n  for (let i = 0; i < cssRules.length; ++i) {\n    if (cssRules[i].cssRules) {\n      // @media rule: keep searching inside it.\n      scanForImportRules(elementImpl, cssRules[i].cssRules, baseURLString);\n    } else if (cssRules[i].href) {\n      // @import rule: fetch the resource and evaluate it.\n      // See http://dev.w3.org/csswg/cssom/#css-import-rule\n      //     If loading of the style sheet fails its cssRules list is simply\n      //     empty. I.e. an @import rule always has an associated style sheet.\n\n      // Use whatwgURL.URL instead of whatwgURL.parseURL so that we get an error we can use as the cause if the URL\n      // doesn't parse.\n      let parsed;\n      try {\n        parsed = new whatwgURL.URL(cssRules[i].href, baseURLString);\n      } catch (cause) {\n        const window = elementImpl._ownerDocument._defaultView;\n        if (window) {\n          // Synthetic cause to ensure that all resource loading errors have causes.\n          const error = new Error(\n            `Could not parse CSS @import URL \"${cssRules[i].href}\" relative to base URL \"${baseURLString}\"`,\n            { cause }\n          );\n          error.type = \"resource-loading\";\n          error.url = cssRules[i].href;\n          window._virtualConsole.emit(\"jsdomError\", error);\n        }\n      }\n\n      if (parsed) {\n        exports.fetchStylesheet(elementImpl, parsed.href, cssRules[i]);\n      }\n    }\n  }\n}\n","\"use strict\";\nconst DOMTokenList = require(\"../../../generated/idl/DOMTokenList\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { fetchStylesheet, removeStylesheet } = require(\"../helpers/stylesheets\");\nconst whatwgURL = require(\"whatwg-url\");\n\n// Important reading: \"appropriate times to obtain the resource\" in\n// https://html.spec.whatwg.org/multipage/semantics.html#link-type-stylesheet\n\nclass HTMLLinkElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this.sheet = null;\n  }\n\n  get relList() {\n    if (this._relList === undefined) {\n      this._relList = DOMTokenList.createImpl(this._globalObject, [], {\n        element: this,\n        attributeLocalName: \"rel\",\n        supportedTokens: new Set([\"stylesheet\"])\n      });\n    }\n    return this._relList;\n  }\n\n  _attach() {\n    super._attach();\n    maybeFetchAndProcess(this);\n  }\n\n  _detach() {\n    super._detach();\n    if (this.sheet) {\n      removeStylesheet(this.sheet, this);\n    }\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    if (name === \"href\") { // TODO crossorigin=\"\" or type=\"\"\n      maybeFetchAndProcess(this);\n    }\n\n    if (name === \"rel\" && this._relList !== undefined) {\n      this._relList.attrModified();\n    }\n  }\n\n  get _accept() {\n    return \"text/css,*/*;q=0.1\";\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLLinkElementImpl\n};\n\n// https://html.spec.whatwg.org/multipage/links.html#link-type-stylesheet\nfunction maybeFetchAndProcess(el) {\n  if (!isExternalResourceLink(el)) {\n    return;\n  }\n\n  // Browsing-context connected\n  if (!el.isConnected || !el._ownerDocument._defaultView) {\n    return;\n  }\n\n  fetchAndProcess(el);\n}\n\n// https://html.spec.whatwg.org/multipage/semantics.html#default-fetch-and-process-the-linked-resource\n// TODO: refactor into general link-fetching like the spec.\nfunction fetchAndProcess(el) {\n  const href = el.getAttributeNS(null, \"href\");\n\n  if (href === null || href === \"\") {\n    return;\n  }\n\n  const url = el._ownerDocument.encodingParseAURL(href);\n  if (url === null) {\n    return;\n  }\n\n  // TODO handle crossorigin=\"\", nonce, integrity=\"\", referrerpolicy=\"\"\n\n  const serialized = whatwgURL.serializeURL(url);\n\n  fetchStylesheet(el, serialized);\n}\n\nfunction isExternalResourceLink(el) {\n  // for our purposes, only stylesheets can be external resource links\n  const wrapper = idlUtils.wrapperForImpl(el);\n  if (!/(?:[ \\t\\n\\r\\f]|^)stylesheet(?:[ \\t\\n\\r\\f]|$)/i.test(wrapper.rel)) {\n    // rel is a space-separated list of tokens, and the original rel types\n    // are case-insensitive.\n    return false;\n  }\n\n  return el.hasAttributeNS(null, \"href\");\n}\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLLinkElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLLinkElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLLinkElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLLinkElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get href() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get href' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"href\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._hrefURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._hrefURLCache;\n        }\n\n        this._hrefURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._hrefURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._hrefURLCache;\n        }\n        this._hrefURLCache = conversions.USVString(value);\n        return this._hrefURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set href(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set href' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'href' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"href\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get crossOrigin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get crossOrigin' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"crossorigin\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set crossOrigin(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set crossOrigin' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'crossOrigin' property on 'HTMLLinkElement': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"crossorigin\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"crossorigin\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rel' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rel\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rel' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'rel' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rel\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get relList() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get relList' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"relList\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"relList\"]);\n      });\n    }\n\n    set relList(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set relList' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      const Q = esValue[\"relList\"];\n      if (!utils.isObject(Q)) {\n        throw new globalObject.TypeError(\"Property 'relList' is not an object\");\n      }\n      Reflect.set(Q, \"value\", V);\n    }\n\n    get media() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get media' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"media\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set media(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set media' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'media' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"media\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hreflang() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hreflang' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"hreflang\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hreflang(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hreflang' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'hreflang' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"hreflang\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get charset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get charset' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"charset\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set charset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set charset' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'charset' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"charset\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rev() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rev' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rev\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rev(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rev' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'rev' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rev\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get target' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"target\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set target(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set target' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'target' property on 'HTMLLinkElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"target\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get sheet() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get sheet' called on an object that is not a valid instance of HTMLLinkElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"sheet\"]);\n    }\n  }\n  Object.defineProperties(HTMLLinkElement.prototype, {\n    href: { enumerable: true },\n    crossOrigin: { enumerable: true },\n    rel: { enumerable: true },\n    relList: { enumerable: true },\n    media: { enumerable: true },\n    hreflang: { enumerable: true },\n    type: { enumerable: true },\n    charset: { enumerable: true },\n    rev: { enumerable: true },\n    target: { enumerable: true },\n    sheet: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLLinkElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLLinkElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLLinkElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLLinkElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLMetaElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLMetaElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLMetaElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLMetaElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLMetaElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLMetaElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLMetaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get httpEquiv() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get httpEquiv' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"http-equiv\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set httpEquiv(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set httpEquiv' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'httpEquiv' property on 'HTMLMetaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"http-equiv\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get content() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get content' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"content\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set content(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set content' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'content' property on 'HTMLMetaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"content\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get scheme() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scheme' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"scheme\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set scheme(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scheme' called on an object that is not a valid instance of HTMLMetaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'scheme' property on 'HTMLMetaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"scheme\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLMetaElement.prototype, {\n    name: { enumerable: true },\n    httpEquiv: { enumerable: true },\n    content: { enumerable: true },\n    scheme: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLMetaElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLMetaElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLMetaElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLMetaElement-impl.js\");\n","\"use strict\";\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { addStylesheet, removeStylesheet, createStylesheet } = require(\"../helpers/stylesheets\");\nconst { childTextContent } = require(\"../helpers/text\");\nconst { asciiCaseInsensitiveMatch } = require(\"../helpers/strings\");\n\nclass HTMLStyleElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this.sheet = null;\n    this._isOnStackOfOpenElements = false;\n  }\n\n  _attach() {\n    super._attach();\n    if (!this._isOnStackOfOpenElements) {\n      this._updateAStyleBlock();\n    }\n  }\n\n  _detach() {\n    super._detach();\n    if (!this._isOnStackOfOpenElements) {\n      this._updateAStyleBlock();\n    }\n  }\n\n  _childTextContentChangeSteps() {\n    super._childTextContentChangeSteps();\n\n    // This guard is not required by the spec, but should be unobservable (since you can't run script during the middle\n    // of parsing a <style> element) and saves a bunch of unnecessary work.\n    if (!this._isOnStackOfOpenElements) {\n      this._updateAStyleBlock();\n    }\n  }\n\n  _poppedOffStackOfOpenElements() {\n    this._isOnStackOfOpenElements = false;\n    this._updateAStyleBlock();\n  }\n\n  _pushedOnStackOfOpenElements() {\n    this._isOnStackOfOpenElements = true;\n  }\n\n  _updateAStyleBlock() {\n    if (this.sheet) {\n      removeStylesheet(this.sheet, this);\n    }\n\n    // Browsing-context connected, per https://github.com/whatwg/html/issues/4547\n    if (!this.isConnected || !this._ownerDocument._defaultView) {\n      return;\n    }\n\n    const type = this.getAttributeNS(null, \"type\");\n    if (type !== null && type !== \"\" && !asciiCaseInsensitiveMatch(type, \"text/css\")) {\n      return;\n    }\n\n    // Not implemented: CSP\n\n    const content = childTextContent(this);\n    // Not implemented: a bunch of other state, e.g. title/media attributes\n    const createdSheet = createStylesheet(content, this, this._ownerDocument.baseURLSerialized(), {\n      ownerNode: this\n    });\n    addStylesheet(createdSheet, this);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLStyleElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLStyleElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLStyleElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLStyleElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLStyleElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get media() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get media' called on an object that is not a valid instance of HTMLStyleElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"media\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set media(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set media' called on an object that is not a valid instance of HTMLStyleElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'media' property on 'HTMLStyleElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"media\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLStyleElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLStyleElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLStyleElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get sheet() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get sheet' called on an object that is not a valid instance of HTMLStyleElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"sheet\"]);\n    }\n  }\n  Object.defineProperties(HTMLStyleElement.prototype, {\n    media: { enumerable: true },\n    type: { enumerable: true },\n    sheet: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLStyleElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLStyleElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLStyleElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLStyleElement-impl.js\");\n","\"use strict\";\n\nconst { createEventAccessor } = require(\"../helpers/create-event-accessor\");\nconst { windowEventHandlersEvents } = require(\"../../../generated/event-sets\");\n\nclass WindowEventHandlersImpl {}\n\nfor (const event of windowEventHandlersEvents) {\n  createEventAccessor(WindowEventHandlersImpl.prototype, event);\n}\n\nmodule.exports = {\n  implementation: WindowEventHandlersImpl\n};\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst WindowEventHandlersImpl = require(\"./WindowEventHandlers-impl\").implementation;\n\nclass HTMLBodyElementImpl extends HTMLElementImpl {}\n\nmixin(HTMLBodyElementImpl.prototype, WindowEventHandlersImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLBodyElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst OnBeforeUnloadEventHandlerNonNull = require(\"./OnBeforeUnloadEventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLBodyElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLBodyElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLBodyElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLBodyElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get text() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get text' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"text\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set text(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set text' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'text' property on 'HTMLBodyElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"text\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get link() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get link' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"link\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set link(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set link' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'link' property on 'HTMLBodyElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"link\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vLink() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vLink' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"vlink\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vLink(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vLink' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'vLink' property on 'HTMLBodyElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"vlink\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get aLink() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get aLink' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"alink\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set aLink(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set aLink' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'aLink' property on 'HTMLBodyElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"alink\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get bgColor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get bgColor' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"bgcolor\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set bgColor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set bgColor' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'bgColor' property on 'HTMLBodyElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"bgcolor\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get background() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get background' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"background\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set background(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set background' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'background' property on 'HTMLBodyElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"background\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get onafterprint() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onafterprint' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onafterprint\"]);\n    }\n\n    set onafterprint(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onafterprint' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onafterprint' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onafterprint\"] = V;\n    }\n\n    get onbeforeprint() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeprint' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeprint\"]);\n    }\n\n    set onbeforeprint(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeprint' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeprint' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeprint\"] = V;\n    }\n\n    get onbeforeunload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeunload' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeunload\"]);\n    }\n\n    set onbeforeunload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeunload' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = OnBeforeUnloadEventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeunload' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeunload\"] = V;\n    }\n\n    get onhashchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onhashchange' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onhashchange\"]);\n    }\n\n    set onhashchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onhashchange' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onhashchange' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onhashchange\"] = V;\n    }\n\n    get onlanguagechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onlanguagechange' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onlanguagechange\"]);\n    }\n\n    set onlanguagechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onlanguagechange' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onlanguagechange' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onlanguagechange\"] = V;\n    }\n\n    get onmessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmessage' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmessage\"]);\n    }\n\n    set onmessage(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmessage' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmessage' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmessage\"] = V;\n    }\n\n    get onmessageerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmessageerror' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmessageerror\"]);\n    }\n\n    set onmessageerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmessageerror' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmessageerror' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmessageerror\"] = V;\n    }\n\n    get onoffline() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onoffline' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onoffline\"]);\n    }\n\n    set onoffline(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onoffline' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onoffline' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onoffline\"] = V;\n    }\n\n    get ononline() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ononline' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ononline\"]);\n    }\n\n    set ononline(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ononline' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ononline' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ononline\"] = V;\n    }\n\n    get onpagehide() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpagehide' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpagehide\"]);\n    }\n\n    set onpagehide(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpagehide' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpagehide' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpagehide\"] = V;\n    }\n\n    get onpageshow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpageshow' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpageshow\"]);\n    }\n\n    set onpageshow(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpageshow' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpageshow' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpageshow\"] = V;\n    }\n\n    get onpopstate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpopstate' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpopstate\"]);\n    }\n\n    set onpopstate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpopstate' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpopstate' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpopstate\"] = V;\n    }\n\n    get onrejectionhandled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onrejectionhandled' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onrejectionhandled\"]);\n    }\n\n    set onrejectionhandled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onrejectionhandled' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onrejectionhandled' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onrejectionhandled\"] = V;\n    }\n\n    get onstorage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onstorage' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onstorage\"]);\n    }\n\n    set onstorage(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onstorage' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onstorage' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onstorage\"] = V;\n    }\n\n    get onunhandledrejection() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onunhandledrejection' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onunhandledrejection\"]);\n    }\n\n    set onunhandledrejection(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onunhandledrejection' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onunhandledrejection' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onunhandledrejection\"] = V;\n    }\n\n    get onunload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onunload' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onunload\"]);\n    }\n\n    set onunload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onunload' called on an object that is not a valid instance of HTMLBodyElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onunload' property on 'HTMLBodyElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onunload\"] = V;\n    }\n  }\n  Object.defineProperties(HTMLBodyElement.prototype, {\n    text: { enumerable: true },\n    link: { enumerable: true },\n    vLink: { enumerable: true },\n    aLink: { enumerable: true },\n    bgColor: { enumerable: true },\n    background: { enumerable: true },\n    onafterprint: { enumerable: true },\n    onbeforeprint: { enumerable: true },\n    onbeforeunload: { enumerable: true },\n    onhashchange: { enumerable: true },\n    onlanguagechange: { enumerable: true },\n    onmessage: { enumerable: true },\n    onmessageerror: { enumerable: true },\n    onoffline: { enumerable: true },\n    ononline: { enumerable: true },\n    onpagehide: { enumerable: true },\n    onpageshow: { enumerable: true },\n    onpopstate: { enumerable: true },\n    onrejectionhandled: { enumerable: true },\n    onstorage: { enumerable: true },\n    onunhandledrejection: { enumerable: true },\n    onunload: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLBodyElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLBodyElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLBodyElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLBodyElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLHeadingElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLHeadingElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLHeadingElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLHeadingElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLHeadingElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLHeadingElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLHeadingElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLHeadingElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLHeadingElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLHeadingElement.prototype, {\n    align: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLHeadingElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLHeadingElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLHeadingElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLHeadingElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLParagraphElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLParagraphElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLParagraphElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLParagraphElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLParagraphElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLParagraphElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLParagraphElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLParagraphElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLParagraphElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLParagraphElement.prototype, {\n    align: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLParagraphElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLParagraphElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLParagraphElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLParagraphElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLHRElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLHRElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLHRElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLHRElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLHRElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLHRElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLHRElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get color() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get color' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"color\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set color(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set color' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'color' property on 'HTMLHRElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"color\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get noShade() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get noShade' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"noshade\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set noShade(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set noShade' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'noShade' property on 'HTMLHRElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"noshade\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"noshade\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get size() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get size' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"size\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set size(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set size' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'size' property on 'HTMLHRElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"size\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLHRElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLHRElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLHRElement.prototype, {\n    align: { enumerable: true },\n    color: { enumerable: true },\n    noShade: { enumerable: true },\n    size: { enumerable: true },\n    width: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLHRElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLHRElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLHRElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLHRElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLPreElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLPreElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst parseInteger_jsdom_living_helpers_strings = require(\"../../jsdom/living/helpers/strings.js\").parseInteger;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLPreElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLPreElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLPreElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLPreElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLPreElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        if (value !== null) {\n          value = parseInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && conversions.long(value) === value) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLPreElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLPreElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", String(V));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLPreElement.prototype, {\n    width: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLPreElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLPreElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLPreElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLPreElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLUListElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLUListElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLUListElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLUListElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLUListElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLUListElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get compact() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get compact' called on an object that is not a valid instance of HTMLUListElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"compact\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set compact(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set compact' called on an object that is not a valid instance of HTMLUListElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'compact' property on 'HTMLUListElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"compact\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"compact\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLUListElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLUListElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLUListElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLUListElement.prototype, {\n    compact: { enumerable: true },\n    type: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLUListElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLUListElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLUListElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLUListElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLOListElementImpl extends HTMLElementImpl {\n  get start() {\n    const value = parseInt(this.getAttributeNS(null, \"start\"));\n\n    if (!isNaN(value)) {\n      return value;\n    }\n\n    return 1;\n  }\n  set start(value) {\n    this.setAttributeNS(null, \"start\", value);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLOListElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLOListElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLOListElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLOListElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLOListElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get reversed() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get reversed' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"reversed\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set reversed(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set reversed' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'reversed' property on 'HTMLOListElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"reversed\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"reversed\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get start() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get start' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"start\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set start(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set start' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'start' property on 'HTMLOListElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"start\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLOListElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get compact() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get compact' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"compact\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set compact(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set compact' called on an object that is not a valid instance of HTMLOListElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'compact' property on 'HTMLOListElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"compact\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"compact\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLOListElement.prototype, {\n    reversed: { enumerable: true },\n    start: { enumerable: true },\n    type: { enumerable: true },\n    compact: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLOListElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLOListElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLOListElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLOListElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLLIElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLLIElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst parseInteger_jsdom_living_helpers_strings = require(\"../../jsdom/living/helpers/strings.js\").parseInteger;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLLIElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLLIElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLLIElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLLIElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLLIElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"value\");\n        if (value !== null) {\n          value = parseInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && conversions.long(value) === value) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLLIElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLLIElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"value\", String(V));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLLIElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLLIElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLLIElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLLIElement.prototype, {\n    value: { enumerable: true },\n    type: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLLIElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLLIElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLLIElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLLIElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLMenuElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLMenuElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLMenuElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLMenuElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLMenuElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLMenuElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get compact() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get compact' called on an object that is not a valid instance of HTMLMenuElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"compact\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set compact(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set compact' called on an object that is not a valid instance of HTMLMenuElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'compact' property on 'HTMLMenuElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"compact\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"compact\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLMenuElement.prototype, {\n    compact: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLMenuElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLMenuElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLMenuElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLMenuElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLDListElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLDListElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLDListElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLDListElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLDListElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLDListElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get compact() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get compact' called on an object that is not a valid instance of HTMLDListElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"compact\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set compact(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set compact' called on an object that is not a valid instance of HTMLDListElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'compact' property on 'HTMLDListElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"compact\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"compact\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLDListElement.prototype, {\n    compact: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLDListElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLDListElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLDListElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLDListElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLDivElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLDivElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLDivElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLDivElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLDivElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLDivElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLDivElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLDivElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLDivElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLDivElement.prototype, {\n    align: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLDivElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLDivElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLDivElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLDivElement-impl.js\");\n","\"use strict\";\nconst whatwgURL = require(\"whatwg-url\");\nconst { asciiCaseInsensitiveMatch } = require(\"../helpers/strings\");\nconst { navigate } = require(\"../window/navigation\");\n\nexports.implementation = class HTMLHyperlinkElementUtilsImpl {\n  _htmlHyperlinkElementUtilsSetup() {\n    this.url = null;\n  }\n\n  // https://html.spec.whatwg.org/multipage/links.html#cannot-navigate\n  _cannotNavigate() {\n    // TODO: Correctly check if the document is fully active\n    return this._localName !== \"a\" && !this.isConnected;\n  }\n\n  // https://html.spec.whatwg.org/multipage/semantics.html#get-an-element's-target\n  _getAnElementsTarget() {\n    if (this.hasAttributeNS(null, \"target\")) {\n      return this.getAttributeNS(null, \"target\");\n    }\n\n    const baseEl = this._ownerDocument.querySelector(\"base[target]\");\n\n    if (baseEl) {\n      return baseEl.getAttributeNS(null, \"target\");\n    }\n\n    return \"\";\n  }\n\n  // https://html.spec.whatwg.org/multipage/browsers.html#the-rules-for-choosing-a-browsing-context-given-a-browsing-context-name\n  _chooseABrowsingContext(name, current) {\n    let chosen = null;\n\n    if (name === \"\" || asciiCaseInsensitiveMatch(name, \"_self\")) {\n      chosen = current;\n    } else if (asciiCaseInsensitiveMatch(name, \"_parent\")) {\n      chosen = current.parent;\n    } else if (asciiCaseInsensitiveMatch(name, \"_top\")) {\n      chosen = current.top;\n    } else if (!asciiCaseInsensitiveMatch(name, \"_blank\")) {\n      // https://github.com/whatwg/html/issues/1440\n    }\n\n    // TODO: Create new browsing context, handle noopener\n\n    return chosen;\n  }\n\n  // https://html.spec.whatwg.org/multipage/links.html#following-hyperlinks-2\n  _followAHyperlink() {\n    if (this._cannotNavigate()) {\n      return;\n    }\n\n    const source = this._ownerDocument._defaultView;\n    let targetAttributeValue = \"\";\n\n    if (this._localName === \"a\" || this._localName === \"area\") {\n      targetAttributeValue = this._getAnElementsTarget();\n    }\n\n    const noopener = this.relList.contains(\"noreferrer\") || this.relList.contains(\"noopener\");\n\n    const target = this._chooseABrowsingContext(targetAttributeValue, source, noopener);\n\n    if (target === null) {\n      return;\n    }\n\n    const url = this._ownerDocument.encodingParseAURL(this.href);\n\n    if (url === null) {\n      return;\n    }\n\n    // TODO: Handle hyperlink suffix and referrerpolicy\n    setTimeout(() => {\n      navigate(target, url, {});\n    }, 0);\n  }\n\n  toString() {\n    return this.href;\n  }\n\n  get href() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null) {\n      const href = this.getAttributeNS(null, \"href\");\n      return href === null ? \"\" : href;\n    }\n\n    return whatwgURL.serializeURL(url);\n  }\n\n  set href(v) {\n    this.setAttributeNS(null, \"href\", v);\n  }\n\n  get origin() {\n    reinitializeURL(this);\n\n    if (this.url === null) {\n      return \"\";\n    }\n\n    return whatwgURL.serializeURLOrigin(this.url);\n  }\n\n  get protocol() {\n    reinitializeURL(this);\n\n    if (this.url === null) {\n      return \":\";\n    }\n\n    return this.url.scheme + \":\";\n  }\n\n  set protocol(v) {\n    reinitializeURL(this);\n\n    if (this.url === null) {\n      return;\n    }\n\n    whatwgURL.basicURLParse(v + \":\", { url: this.url, stateOverride: \"scheme start\" });\n    updateHref(this);\n  }\n\n  get username() {\n    reinitializeURL(this);\n\n    if (this.url === null) {\n      return \"\";\n    }\n\n    return this.url.username;\n  }\n\n  set username(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || whatwgURL.cannotHaveAUsernamePasswordPort(url)) {\n      return;\n    }\n\n    whatwgURL.setTheUsername(url, v);\n    updateHref(this);\n  }\n\n  get password() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null) {\n      return \"\";\n    }\n\n    return url.password;\n  }\n\n  set password(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || whatwgURL.cannotHaveAUsernamePasswordPort(url)) {\n      return;\n    }\n\n    whatwgURL.setThePassword(url, v);\n    updateHref(this);\n  }\n\n  get host() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || url.host === null) {\n      return \"\";\n    }\n\n    if (url.port === null) {\n      return whatwgURL.serializeHost(url.host);\n    }\n\n    return whatwgURL.serializeHost(url.host) + \":\" + whatwgURL.serializeInteger(url.port);\n  }\n\n  set host(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || whatwgURL.hasAnOpaquePath(url)) {\n      return;\n    }\n\n    whatwgURL.basicURLParse(v, { url, stateOverride: \"host\" });\n    updateHref(this);\n  }\n\n  get hostname() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || url.host === null) {\n      return \"\";\n    }\n\n    return whatwgURL.serializeHost(url.host);\n  }\n\n  set hostname(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || whatwgURL.hasAnOpaquePath(url)) {\n      return;\n    }\n\n    whatwgURL.basicURLParse(v, { url, stateOverride: \"hostname\" });\n    updateHref(this);\n  }\n\n  get port() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || url.port === null) {\n      return \"\";\n    }\n\n    return whatwgURL.serializeInteger(url.port);\n  }\n\n  set port(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || whatwgURL.cannotHaveAUsernamePasswordPort(url)) {\n      return;\n    }\n\n    if (v === \"\") {\n      url.port = null;\n    } else {\n      whatwgURL.basicURLParse(v, { url, stateOverride: \"port\" });\n    }\n    updateHref(this);\n  }\n\n  get pathname() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null) {\n      return \"\";\n    }\n\n    return whatwgURL.serializePath(url);\n  }\n\n  set pathname(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || whatwgURL.hasAnOpaquePath(url)) {\n      return;\n    }\n\n    url.path = [];\n    whatwgURL.basicURLParse(v, { url, stateOverride: \"path start\" });\n    updateHref(this);\n  }\n\n  get search() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || url.query === null || url.query === \"\") {\n      return \"\";\n    }\n\n    return \"?\" + url.query;\n  }\n\n  set search(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null) {\n      return;\n    }\n\n    if (v === \"\") {\n      url.query = null;\n    } else {\n      const input = v[0] === \"?\" ? v.substring(1) : v;\n      url.query = \"\";\n      whatwgURL.basicURLParse(input, {\n        url,\n        stateOverride: \"query\",\n        encodingOverride: this._ownerDocument.charset\n      });\n    }\n    updateHref(this);\n  }\n\n  get hash() {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null || url.fragment === null || url.fragment === \"\") {\n      return \"\";\n    }\n\n    return \"#\" + url.fragment;\n  }\n\n  set hash(v) {\n    reinitializeURL(this);\n    const { url } = this;\n\n    if (url === null) {\n      return;\n    }\n\n    if (v === \"\") {\n      url.fragment = null;\n    } else {\n      const input = v[0] === \"#\" ? v.substring(1) : v;\n      url.fragment = \"\";\n      whatwgURL.basicURLParse(input, { url, stateOverride: \"fragment\" });\n    }\n    updateHref(this);\n  }\n};\n\nfunction reinitializeURL(hheu) {\n  if (hheu.url !== null && hheu.url.scheme === \"blob\" && whatwgURL.hasAnOpaquePath(hheu.url)) {\n    return;\n  }\n\n  setTheURL(hheu);\n}\n\nfunction setTheURL(hheu) {\n  hheu.url = null;\n\n  const href = hheu.getAttributeNS(null, \"href\");\n  if (href === null) {\n    return;\n  }\n\n  const parsed = hheu._ownerDocument.encodingParseAURL(href);\n  if (parsed !== null) {\n    hheu.url = parsed;\n  }\n}\n\nfunction updateHref(hheu) {\n  hheu.setAttributeNS(null, \"href\", whatwgURL.serializeURL(hheu.url));\n}\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst DOMTokenList = require(\"../../../generated/idl/DOMTokenList\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst HTMLHyperlinkElementUtilsImpl = require(\"./HTMLHyperlinkElementUtils-impl\").implementation;\n\nclass HTMLAnchorElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._htmlHyperlinkElementUtilsSetup();\n\n    this._hasActivationBehavior = true;\n  }\n\n  _activationBehavior() {\n    this._followAHyperlink();\n  }\n\n  get relList() {\n    if (this._relList === undefined) {\n      this._relList = DOMTokenList.createImpl(this._globalObject, [], {\n        element: this,\n        attributeLocalName: \"rel\"\n      });\n    }\n    return this._relList;\n  }\n\n  get text() {\n    return this.textContent;\n  }\n  set text(v) {\n    this.textContent = v;\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    if (name === \"rel\" && this._relList !== undefined) {\n      this._relList.attrModified();\n    }\n  }\n}\n\nmixin(HTMLAnchorElementImpl.prototype, HTMLHyperlinkElementUtilsImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLAnchorElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLAnchorElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLAnchorElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLAnchorElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLAnchorElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get target' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"target\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set target(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set target' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'target' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"target\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get download() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get download' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"download\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set download(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set download' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'download' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"download\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rel' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rel\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rel' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'rel' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rel\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get relList() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get relList' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"relList\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"relList\"]);\n      });\n    }\n\n    set relList(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set relList' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      const Q = esValue[\"relList\"];\n      if (!utils.isObject(Q)) {\n        throw new globalObject.TypeError(\"Property 'relList' is not an object\");\n      }\n      Reflect.set(Q, \"value\", V);\n    }\n\n    get hreflang() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hreflang' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"hreflang\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hreflang(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hreflang' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'hreflang' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"hreflang\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get text() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get text' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"text\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set text(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set text' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'text' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"text\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get coords() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get coords' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"coords\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set coords(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set coords' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'coords' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"coords\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get charset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get charset' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"charset\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set charset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set charset' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'charset' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"charset\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rev() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rev' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rev\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rev(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rev' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'rev' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rev\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get shape() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get shape' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"shape\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set shape(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set shape' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'shape' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"shape\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get href() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get href' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"href\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set href(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set href' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'href' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"href\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    toString() {\n      const esValue = this;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toString' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"href\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get origin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get origin' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"origin\"];\n    }\n\n    get protocol() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get protocol' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"protocol\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set protocol(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set protocol' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'protocol' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"protocol\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get username() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get username' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"username\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set username(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set username' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'username' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"username\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get password() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get password' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"password\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set password(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set password' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'password' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"password\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get host() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get host' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"host\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set host(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set host' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'host' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"host\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hostname() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hostname' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"hostname\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hostname(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hostname' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'hostname' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"hostname\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get port() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get port' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"port\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set port(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set port' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'port' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"port\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get pathname() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pathname' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"pathname\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set pathname(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set pathname' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'pathname' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"pathname\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get search() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get search' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"search\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set search(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set search' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'search' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"search\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hash() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hash' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"hash\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hash(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hash' called on an object that is not a valid instance of HTMLAnchorElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'hash' property on 'HTMLAnchorElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"hash\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLAnchorElement.prototype, {\n    target: { enumerable: true },\n    download: { enumerable: true },\n    rel: { enumerable: true },\n    relList: { enumerable: true },\n    hreflang: { enumerable: true },\n    type: { enumerable: true },\n    text: { enumerable: true },\n    coords: { enumerable: true },\n    charset: { enumerable: true },\n    name: { enumerable: true },\n    rev: { enumerable: true },\n    shape: { enumerable: true },\n    href: { enumerable: true },\n    toString: { enumerable: true },\n    origin: { enumerable: true },\n    protocol: { enumerable: true },\n    username: { enumerable: true },\n    password: { enumerable: true },\n    host: { enumerable: true },\n    hostname: { enumerable: true },\n    port: { enumerable: true },\n    pathname: { enumerable: true },\n    search: { enumerable: true },\n    hash: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLAnchorElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLAnchorElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLAnchorElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLAnchorElement-impl.js\");\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst DOMTokenList = require(\"../../../generated/idl/DOMTokenList\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst HTMLHyperlinkElementUtilsImpl = require(\"./HTMLHyperlinkElementUtils-impl\").implementation;\n\nclass HTMLAreaElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._htmlHyperlinkElementUtilsSetup();\n\n    this._hasActivationBehavior = true;\n  }\n\n  _activationBehavior() {\n    this._followAHyperlink();\n  }\n\n  get relList() {\n    if (this._relList === undefined) {\n      this._relList = DOMTokenList.createImpl(this._globalObject, [], {\n        element: this,\n        attributeLocalName: \"rel\"\n      });\n    }\n    return this._relList;\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    if (name === \"rel\" && this._relList !== undefined) {\n      this._relList.attrModified();\n    }\n  }\n}\n\nmixin(HTMLAreaElementImpl.prototype, HTMLHyperlinkElementUtilsImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLAreaElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLAreaElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLAreaElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLAreaElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLAreaElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get alt() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get alt' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"alt\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set alt(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set alt' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'alt' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"alt\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get coords() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get coords' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"coords\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set coords(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set coords' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'coords' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"coords\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get shape() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get shape' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"shape\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set shape(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set shape' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'shape' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"shape\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get target' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"target\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set target(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set target' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'target' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"target\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rel' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rel\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rel' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'rel' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rel\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get relList() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get relList' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"relList\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"relList\"]);\n      });\n    }\n\n    set relList(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set relList' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      const Q = esValue[\"relList\"];\n      if (!utils.isObject(Q)) {\n        throw new globalObject.TypeError(\"Property 'relList' is not an object\");\n      }\n      Reflect.set(Q, \"value\", V);\n    }\n\n    get noHref() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get noHref' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"nohref\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set noHref(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set noHref' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'noHref' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"nohref\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"nohref\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get href() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get href' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"href\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set href(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set href' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'href' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"href\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    toString() {\n      const esValue = this;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toString' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"href\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get origin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get origin' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"origin\"];\n    }\n\n    get protocol() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get protocol' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"protocol\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set protocol(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set protocol' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'protocol' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"protocol\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get username() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get username' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"username\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set username(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set username' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'username' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"username\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get password() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get password' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"password\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set password(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set password' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'password' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"password\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get host() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get host' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"host\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set host(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set host' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'host' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"host\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hostname() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hostname' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"hostname\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hostname(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hostname' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'hostname' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"hostname\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get port() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get port' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"port\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set port(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set port' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'port' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"port\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get pathname() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pathname' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"pathname\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set pathname(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set pathname' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'pathname' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"pathname\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get search() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get search' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"search\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set search(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set search' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'search' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"search\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hash() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hash' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"hash\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hash(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hash' called on an object that is not a valid instance of HTMLAreaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'hash' property on 'HTMLAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"hash\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLAreaElement.prototype, {\n    alt: { enumerable: true },\n    coords: { enumerable: true },\n    shape: { enumerable: true },\n    target: { enumerable: true },\n    rel: { enumerable: true },\n    relList: { enumerable: true },\n    noHref: { enumerable: true },\n    href: { enumerable: true },\n    toString: { enumerable: true },\n    origin: { enumerable: true },\n    protocol: { enumerable: true },\n    username: { enumerable: true },\n    password: { enumerable: true },\n    host: { enumerable: true },\n    hostname: { enumerable: true },\n    port: { enumerable: true },\n    pathname: { enumerable: true },\n    search: { enumerable: true },\n    hash: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLAreaElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLAreaElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLAreaElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLAreaElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLBRElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLBRElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLBRElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLBRElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLBRElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLBRElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get clear() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get clear' called on an object that is not a valid instance of HTMLBRElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"clear\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set clear(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set clear' called on an object that is not a valid instance of HTMLBRElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'clear' property on 'HTMLBRElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"clear\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLBRElement.prototype, {\n    clear: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLBRElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLBRElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLBRElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLBRElement-impl.js\");\n","\"use strict\";\n\nexports.implementation = class ValidityStateImpl {\n  constructor(globalObject, args, privateData) {\n    const { element, state = {} } = privateData;\n\n    this._element = element;\n    this._state = state;\n  }\n\n  get badInput() {\n    return this._failsConstraint(\"badInput\");\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-a-custom-error\n  get customError() {\n    return this._element._customValidityErrorMessage !== \"\";\n  }\n\n  get patternMismatch() {\n    return this._failsConstraint(\"patternMismatch\");\n  }\n\n  get rangeOverflow() {\n    return this._failsConstraint(\"rangeOverflow\");\n  }\n\n  get rangeUnderflow() {\n    return this._failsConstraint(\"rangeUnderflow\");\n  }\n\n  get stepMismatch() {\n    return this._failsConstraint(\"stepMismatch\");\n  }\n\n  get tooLong() {\n    return this._failsConstraint(\"tooLong\");\n  }\n\n  get tooShort() {\n    return this._failsConstraint(\"tooShort\");\n  }\n\n  get typeMismatch() {\n    return this._failsConstraint(\"typeMismatch\");\n  }\n\n  get valueMissing() {\n    return this._failsConstraint(\"valueMissing\");\n  }\n\n  _failsConstraint(method) {\n    const validationMethod = this._state[method];\n    if (validationMethod) {\n      return validationMethod();\n    }\n\n    return false;\n  }\n\n  get valid() {\n    return !(this.badInput || this.valueMissing || this.customError ||\n            this.patternMismatch || this.rangeOverflow || this.rangeUnderflow ||\n            this.stepMismatch || this.tooLong || this.tooShort || this.typeMismatch);\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"ValidityState\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'ValidityState'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"ValidityState\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class ValidityState {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get valueMissing() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get valueMissing' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"valueMissing\"];\n    }\n\n    get typeMismatch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get typeMismatch' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"typeMismatch\"];\n    }\n\n    get patternMismatch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get patternMismatch' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"patternMismatch\"];\n    }\n\n    get tooLong() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tooLong' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"tooLong\"];\n    }\n\n    get tooShort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tooShort' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"tooShort\"];\n    }\n\n    get rangeUnderflow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rangeUnderflow' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"rangeUnderflow\"];\n    }\n\n    get rangeOverflow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rangeOverflow' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"rangeOverflow\"];\n    }\n\n    get stepMismatch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get stepMismatch' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"stepMismatch\"];\n    }\n\n    get badInput() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get badInput' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"badInput\"];\n    }\n\n    get customError() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get customError' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"customError\"];\n    }\n\n    get valid() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get valid' called on an object that is not a valid instance of ValidityState.\"\n        );\n      }\n\n      return esValue[implSymbol][\"valid\"];\n    }\n  }\n  Object.defineProperties(ValidityState.prototype, {\n    valueMissing: { enumerable: true },\n    typeMismatch: { enumerable: true },\n    patternMismatch: { enumerable: true },\n    tooLong: { enumerable: true },\n    tooShort: { enumerable: true },\n    rangeUnderflow: { enumerable: true },\n    rangeOverflow: { enumerable: true },\n    stepMismatch: { enumerable: true },\n    badInput: { enumerable: true },\n    customError: { enumerable: true },\n    valid: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"ValidityState\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = ValidityState;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: ValidityState\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/constraint-validation/ValidityState-impl.js\");\n","\"use strict\";\n\nconst ValidityState = require(\"../../../generated/idl/ValidityState\");\nconst { isDisabled } = require(\"../helpers/form-controls\");\nconst { closest } = require(\"../helpers/traversal\");\nconst { fireAnEvent } = require(\"../helpers/events\");\n\nexports.implementation = class DefaultConstraintValidationImpl {\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#dom-cva-willvalidate\n  get willValidate() {\n    return this._isCandidateForConstraintValidation();\n  }\n\n  get validity() {\n    if (!this._validity) {\n      this._validity = ValidityState.createImpl(this._globalObject, [], {\n        element: this\n      });\n    }\n    return this._validity;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#dom-cva-checkvalidity\n  checkValidity() {\n    if (!this._isCandidateForConstraintValidation()) {\n      return true;\n    }\n    if (this._satisfiesConstraints()) {\n      return true;\n    }\n    fireAnEvent(\"invalid\", this, undefined, { cancelable: true });\n    return false;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#dom-cva-setcustomvalidity\n  setCustomValidity(message) {\n    this._customValidityErrorMessage = message;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#dom-cva-reportvalidity\n  // Since jsdom has no user interaction, it's the same as #checkValidity\n  reportValidity() {\n    return this.checkValidity();\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#dom-cva-validationmessage\n  get validationMessage() {\n    const { validity } = this;\n    if (!this._isCandidateForConstraintValidation() || this._satisfiesConstraints()) {\n      return \"\";\n    }\n    const isSufferingFromCustomError = validity.customError;\n    if (isSufferingFromCustomError) {\n      return this._customValidityErrorMessage;\n    }\n    return \"Constraints not satisfied\";\n  }\n\n  _isCandidateForConstraintValidation() {\n    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n    return !isDisabled(this) &&\n      // If an element has a datalist element ancestor,\n      // it is barred from constraint validation.\n      closest(this, \"datalist\") === null &&\n      !this._barredFromConstraintValidationSpecialization();\n  }\n\n  _isBarredFromConstraintValidation() {\n    return !this._isCandidateForConstraintValidation();\n  }\n\n  _satisfiesConstraints() {\n    return this.validity.valid;\n  }\n};\n","\"use strict\";\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst DefaultConstraintValidationImpl =\n  require(\"../constraint-validation/DefaultConstraintValidation-impl\").implementation;\nconst { mixin } = require(\"../../utils\");\nconst { isDisabled, formOwner, getLabelsForLabelable } = require(\"../helpers/form-controls\");\nconst { asciiLowercase } = require(\"../helpers/strings\");\n\nclass HTMLButtonElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._customValidityErrorMessage = \"\";\n    this._labels = null;\n\n    this._hasActivationBehavior = true;\n  }\n\n  _activationBehavior() {\n    const { form } = this;\n    if (form && !isDisabled(this)) {\n      if (this.type === \"submit\") {\n        form._doRequestSubmit(this);\n      }\n      if (this.type === \"reset\") {\n        form._doReset();\n      }\n    }\n  }\n\n  _getValue() {\n    const valueAttr = this.getAttributeNS(null, \"value\");\n    return valueAttr === null ? \"\" : valueAttr;\n  }\n\n  get labels() {\n    return getLabelsForLabelable(this);\n  }\n\n  get form() {\n    return formOwner(this);\n  }\n\n  get type() {\n    const typeAttr = asciiLowercase(this.getAttributeNS(null, \"type\") || \"\");\n    switch (typeAttr) {\n      case \"submit\":\n      case \"reset\":\n      case \"button\":\n        return typeAttr;\n      default:\n        return \"submit\";\n    }\n  }\n\n  set type(v) {\n    v = asciiLowercase(String(v));\n    switch (v) {\n      case \"submit\":\n      case \"reset\":\n      case \"button\":\n        this.setAttributeNS(null, \"type\", v);\n        break;\n      default:\n        this.setAttributeNS(null, \"type\", \"submit\");\n        break;\n    }\n  }\n\n  _barredFromConstraintValidationSpecialization() {\n    return this.type === \"reset\" || this.type === \"button\";\n  }\n}\n\nmixin(HTMLButtonElementImpl.prototype, DefaultConstraintValidationImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLButtonElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLButtonElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLButtonElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLButtonElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLButtonElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    setCustomValidity(error) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setCustomValidity' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setCustomValidity' on 'HTMLButtonElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setCustomValidity' on 'HTMLButtonElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setCustomValidity(...args);\n    }\n\n    get autofocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get autofocus' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"autofocus\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set autofocus(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set autofocus' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'autofocus' property on 'HTMLButtonElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"autofocus\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"autofocus\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get disabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get disabled' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"disabled\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set disabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set disabled' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'disabled' property on 'HTMLButtonElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"disabled\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"disabled\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get formNoValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get formNoValidate' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"formnovalidate\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set formNoValidate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set formNoValidate' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'formNoValidate' property on 'HTMLButtonElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"formnovalidate\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"formnovalidate\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get formTarget() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get formTarget' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"formtarget\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set formTarget(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set formTarget' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'formTarget' property on 'HTMLButtonElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"formtarget\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLButtonElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"type\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLButtonElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"type\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"value\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLButtonElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"value\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get willValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get willValidate' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"willValidate\"];\n    }\n\n    get validity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validity' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"validity\"]);\n    }\n\n    get validationMessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validationMessage' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"validationMessage\"];\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of HTMLButtonElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n  }\n  Object.defineProperties(HTMLButtonElement.prototype, {\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    setCustomValidity: { enumerable: true },\n    autofocus: { enumerable: true },\n    disabled: { enumerable: true },\n    form: { enumerable: true },\n    formNoValidate: { enumerable: true },\n    formTarget: { enumerable: true },\n    name: { enumerable: true },\n    type: { enumerable: true },\n    value: { enumerable: true },\n    willValidate: { enumerable: true },\n    validity: { enumerable: true },\n    validationMessage: { enumerable: true },\n    labels: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLButtonElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLButtonElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLButtonElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLButtonElement-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (typeof value !== \"function\") {\n    throw new globalObject.TypeError(context + \" is not a function\");\n  }\n\n  function invokeTheCallbackFunction(blob) {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    blob = utils.tryWrapperForImpl(blob);\n\n    callResult = Reflect.apply(value, thisArg, [blob]);\n  }\n\n  invokeTheCallbackFunction.construct = blob => {\n    blob = utils.tryWrapperForImpl(blob);\n\n    let callResult = Reflect.construct(value, [blob]);\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { notImplementedMethod } = require(\"../../browser/not-implemented\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { Canvas } = require(\"../../utils\");\n\nclass HTMLCanvasElementImpl extends HTMLElementImpl {\n  _attrModified(name, value, oldValue) {\n    if (this._canvas && (name === \"width\" || name === \"height\")) {\n      this._canvas[name] = parseInt(value);\n    }\n\n    super._attrModified(name, value, oldValue);\n  }\n\n  _getCanvas() {\n    if (Canvas && !this._canvas) {\n      this._canvas = Canvas.createCanvas(this.width, this.height);\n    }\n    return this._canvas;\n  }\n\n  getContext(contextId) {\n    const canvas = this._getCanvas();\n    if (canvas) {\n      if (!this._context) {\n        this._context = canvas.getContext(contextId) || null;\n        if (this._context) {\n          // Override the native canvas reference with our wrapper. This is the\n          // reason why we need to locally cache _context, since each call to\n          // canvas.getContext(contextId) would replace this reference again.\n          // Perhaps in the longer term, a better solution would be to create a\n          // full wrapper for the Context object as well.\n          this._context.canvas = idlUtils.wrapperForImpl(this);\n          wrapNodeCanvasMethod(this._context, \"createPattern\");\n          wrapNodeCanvasMethod(this._context, \"drawImage\");\n        }\n      }\n      return this._context;\n    }\n\n    notImplementedMethod(\n      this._ownerDocument._defaultView,\n      \"HTMLCanvasElement\",\n      \"getContext\",\n      \"without installing the canvas npm package\"\n    );\n    return null;\n  }\n\n  toDataURL(...args) {\n    const canvas = this._getCanvas();\n    if (canvas) {\n      return canvas.toDataURL(...args);\n    }\n\n    notImplementedMethod(\n      this._ownerDocument._defaultView,\n      \"HTMLCanvasElement\",\n      \"toDataURL\",\n      \"without installing the canvas npm package\"\n    );\n    return null;\n  }\n\n  toBlob(callback, type, qualityArgument) {\n    const window = this._ownerDocument._defaultView;\n    const canvas = this._getCanvas();\n    if (canvas) {\n      const options = {};\n      switch (type) {\n        case \"image/jpg\":\n        case \"image/jpeg\":\n          type = \"image/jpeg\";\n          options.quality = qualityArgument;\n          break;\n        default:\n          type = \"image/png\";\n      }\n      canvas.toBuffer((err, buff) => {\n        if (err) {\n          throw err;\n        }\n        callback(new window.Blob([buff], { type }));\n      }, type, options);\n    } else {\n      notImplementedMethod(\n        this._ownerDocument._defaultView,\n        \"HTMLCanvasElement\",\n        \"toBlob\",\n        \"without installing the canvas npm package\"\n      );\n    }\n  }\n\n  get width() {\n    const parsed = parseInt(this.getAttributeNS(null, \"width\"));\n    return isNaN(parsed) || parsed < 0 || parsed > 2147483647 ? 300 : parsed;\n  }\n\n  set width(v) {\n    v = v > 2147483647 ? 300 : v;\n    this.setAttributeNS(null, \"width\", String(v));\n  }\n\n  get height() {\n    const parsed = parseInt(this.getAttributeNS(null, \"height\"));\n    return isNaN(parsed) || parsed < 0 || parsed > 2147483647 ? 150 : parsed;\n  }\n\n  set height(v) {\n    v = v > 2147483647 ? 150 : v;\n    this.setAttributeNS(null, \"height\", String(v));\n  }\n}\n\n// We need to wrap the methods that receive an image or canvas object\n// (luckily, always as the first argument), so that these objects can be\n// unwrapped an the expected types passed.\nfunction wrapNodeCanvasMethod(ctx, name) {\n  const prev = ctx[name];\n  ctx[name] = function (image, ...rest) {\n    const impl = idlUtils.implForWrapper(image);\n    if (impl) {\n      if (impl instanceof HTMLCanvasElementImpl && !impl._canvas) {\n        impl._getCanvas();\n      }\n      image = impl._image || impl._canvas;\n    }\n    return prev.call(ctx, image, ...rest);\n  };\n}\n\nmodule.exports = {\n  implementation: HTMLCanvasElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst BlobCallback = require(\"./BlobCallback.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLCanvasElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLCanvasElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLCanvasElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLCanvasElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    getContext(contextId) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getContext' called on an object that is not a valid instance of HTMLCanvasElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getContext' on 'HTMLCanvasElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getContext' on 'HTMLCanvasElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      for (let i = 1; i < arguments.length; i++) {\n        let curArg = arguments[i];\n        curArg = conversions[\"any\"](curArg, {\n          context: \"Failed to execute 'getContext' on 'HTMLCanvasElement': parameter \" + (i + 1),\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getContext(...args));\n    }\n\n    toDataURL() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toDataURL' called on an object that is not a valid instance of HTMLCanvasElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'toDataURL' on 'HTMLCanvasElement': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"any\"](curArg, {\n            context: \"Failed to execute 'toDataURL' on 'HTMLCanvasElement': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].toDataURL(...args);\n    }\n\n    toBlob(callback) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toBlob' called on an object that is not a valid instance of HTMLCanvasElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'toBlob' on 'HTMLCanvasElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = BlobCallback.convert(globalObject, curArg, {\n          context: \"Failed to execute 'toBlob' on 'HTMLCanvasElement': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'toBlob' on 'HTMLCanvasElement': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"any\"](curArg, {\n            context: \"Failed to execute 'toBlob' on 'HTMLCanvasElement': parameter 3\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].toBlob(...args);\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLCanvasElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"width\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLCanvasElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLCanvasElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"width\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLCanvasElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"height\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLCanvasElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLCanvasElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"height\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLCanvasElement.prototype, {\n    getContext: { enumerable: true },\n    toDataURL: { enumerable: true },\n    toBlob: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLCanvasElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLCanvasElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLCanvasElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLCanvasElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLDataElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLDataElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLDataElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLDataElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLDataElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLDataElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLDataElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"value\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLDataElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLDataElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"value\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLDataElement.prototype, {\n    value: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLDataElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLDataElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLDataElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLDataElement-impl.js\");\n","\"use strict\";\n\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nconst { descendantsByLocalName } = require(\"../helpers/traversal\");\n\nclass HTMLDataListElementImpl extends HTMLElementImpl {\n  // https://html.spec.whatwg.org/multipage/form-elements.html#dom-datalist-options\n  get options() {\n    return HTMLCollection.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => descendantsByLocalName(this, \"option\")\n    });\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLDataListElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLDataListElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLDataListElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLDataListElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLDataListElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get options() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get options' called on an object that is not a valid instance of HTMLDataListElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"options\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"options\"]);\n      });\n    }\n  }\n  Object.defineProperties(HTMLDataListElement.prototype, {\n    options: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLDataListElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLDataListElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLDataListElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLDataListElement-impl.js\");\n","\"use strict\";\n\nconst { fireAnEvent } = require(\"../helpers/events\");\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLDetailsElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._taskQueue = null;\n  }\n\n  _dispatchToggleEvent() {\n    this._taskQueue = null;\n\n    fireAnEvent(\"toggle\", this);\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    if (name === \"open\" && this._taskQueue === null) {\n      // Check that the attribute is added or removed, not merely changed\n      if ((value !== oldValue && value !== null && oldValue === null) ||\n          (value === null && oldValue !== null)) {\n        this._taskQueue = setTimeout(this._dispatchToggleEvent.bind(this), 0);\n      }\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLDetailsElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLDetailsElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLDetailsElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLDetailsElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLDetailsElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get open() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get open' called on an object that is not a valid instance of HTMLDetailsElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"open\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set open(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set open' called on an object that is not a valid instance of HTMLDetailsElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'open' property on 'HTMLDetailsElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"open\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"open\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLDetailsElement.prototype, {\n    open: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLDetailsElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLDetailsElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLDetailsElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLDetailsElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLDialogElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLDialogElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLDialogElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLDialogElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLDialogElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLDialogElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get open() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get open' called on an object that is not a valid instance of HTMLDialogElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"open\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set open(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set open' called on an object that is not a valid instance of HTMLDialogElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'open' property on 'HTMLDialogElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"open\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"open\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLDialogElement.prototype, {\n    open: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLDialogElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLDialogElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLDialogElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLDialogElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLDirectoryElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLDirectoryElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLDirectoryElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLDirectoryElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLDirectoryElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLDirectoryElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get compact() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get compact' called on an object that is not a valid instance of HTMLDirectoryElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"compact\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set compact(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set compact' called on an object that is not a valid instance of HTMLDirectoryElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'compact' property on 'HTMLDirectoryElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"compact\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"compact\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLDirectoryElement.prototype, {\n    compact: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLDirectoryElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLDirectoryElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLDirectoryElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLDirectoryElement-impl.js\");\n","\"use strict\";\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst DefaultConstraintValidationImpl =\n  require(\"../constraint-validation/DefaultConstraintValidation-impl\").implementation;\nconst { formOwner } = require(\"../helpers/form-controls\");\nconst { mixin } = require(\"../../utils\");\nconst { descendantsByLocalNames } = require(\"../helpers/traversal\");\n\nconst listedElements = new Set([\"button\", \"fieldset\", \"input\", \"object\", \"output\", \"select\", \"textarea\"]);\n\nclass HTMLFieldSetElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._customValidityErrorMessage = \"\";\n  }\n\n  get elements() {\n    return HTMLCollection.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => descendantsByLocalNames(this, listedElements)\n    });\n  }\n\n  get form() {\n    return formOwner(this);\n  }\n\n  get type() {\n    return \"fieldset\";\n  }\n\n  _barredFromConstraintValidationSpecialization() {\n    return true;\n  }\n}\n\nmixin(HTMLFieldSetElementImpl.prototype, DefaultConstraintValidationImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLFieldSetElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLFieldSetElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLFieldSetElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLFieldSetElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLFieldSetElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    setCustomValidity(error) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setCustomValidity' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setCustomValidity' on 'HTMLFieldSetElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setCustomValidity' on 'HTMLFieldSetElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setCustomValidity(...args);\n    }\n\n    get disabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get disabled' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"disabled\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set disabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set disabled' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'disabled' property on 'HTMLFieldSetElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"disabled\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"disabled\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLFieldSetElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n\n    get elements() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get elements' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"elements\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"elements\"]);\n      });\n    }\n\n    get willValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get willValidate' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"willValidate\"];\n    }\n\n    get validity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validity' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"validity\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"validity\"]);\n      });\n    }\n\n    get validationMessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validationMessage' called on an object that is not a valid instance of HTMLFieldSetElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"validationMessage\"];\n    }\n  }\n  Object.defineProperties(HTMLFieldSetElement.prototype, {\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    setCustomValidity: { enumerable: true },\n    disabled: { enumerable: true },\n    form: { enumerable: true },\n    name: { enumerable: true },\n    type: { enumerable: true },\n    elements: { enumerable: true },\n    willValidate: { enumerable: true },\n    validity: { enumerable: true },\n    validationMessage: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLFieldSetElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLFieldSetElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLFieldSetElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLFieldSetElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLFontElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLFontElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLFontElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLFontElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLFontElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLFontElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get color() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get color' called on an object that is not a valid instance of HTMLFontElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"color\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set color(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set color' called on an object that is not a valid instance of HTMLFontElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'color' property on 'HTMLFontElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"color\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get face() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get face' called on an object that is not a valid instance of HTMLFontElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"face\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set face(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set face' called on an object that is not a valid instance of HTMLFontElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'face' property on 'HTMLFontElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"face\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get size() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get size' called on an object that is not a valid instance of HTMLFontElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"size\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set size(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set size' called on an object that is not a valid instance of HTMLFontElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'size' property on 'HTMLFontElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"size\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLFontElement.prototype, {\n    color: { enumerable: true },\n    face: { enumerable: true },\n    size: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLFontElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLFontElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLFontElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLFontElement-impl.js\");\n","\"use strict\";\n\nconst HTMLCollectionImpl = require(\"./HTMLCollection-impl\").implementation;\nconst RadioNodeList = require(\"../../../generated/idl/RadioNodeList\");\n\nexports.implementation = class HTMLFormControlsCollectionImpl extends HTMLCollectionImpl {\n  namedItem(name) {\n    if (name === \"\") {\n      return null;\n    }\n\n    this._update();\n\n    const nodeList = RadioNodeList.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => this._list.filter(\n        e => e.getAttributeNS(null, \"id\") === name || e.getAttributeNS(null, \"name\") === name\n      )\n    });\n\n    switch (nodeList.length) {\n      case 0: {\n        return null;\n      }\n      case 1: {\n        return nodeList.item(0);\n      }\n      default: {\n        return nodeList;\n      }\n    }\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLCollection = require(\"./HTMLCollection.js\");\n\nconst interfaceName = \"HTMLFormControlsCollection\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLFormControlsCollection'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLFormControlsCollection\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLCollection._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLFormControlsCollection extends globalObject.HTMLCollection {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    namedItem(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'namedItem' called on an object that is not a valid instance of HTMLFormControlsCollection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'namedItem' on 'HTMLFormControlsCollection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'namedItem' on 'HTMLFormControlsCollection': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].namedItem(...args));\n    }\n  }\n  Object.defineProperties(HTMLFormControlsCollection.prototype, {\n    namedItem: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLFormControlsCollection\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLFormControlsCollection;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLFormControlsCollection\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of target[implSymbol][utils.supportedPropertyNames]) {\n      if (!(key in target)) {\n        keys.add(`${key}`);\n      }\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    const namedValue = target[implSymbol].namedItem(P);\n\n    if (namedValue !== null && !(P in target) && !ignoreNamedProps) {\n      return {\n        writable: false,\n        enumerable: true,\n        configurable: true,\n        value: utils.tryWrapperForImpl(namedValue)\n      };\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n    if (!Object.hasOwn(target, P)) {\n      const creating = !(target[implSymbol].namedItem(P) !== null);\n      if (!creating) {\n        return false;\n      }\n    }\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    if (target[implSymbol].namedItem(P) !== null && !(P in target)) {\n      return false;\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLFormControlsCollection-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLElement = require(\"./HTMLElement.js\");\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"submitter\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = HTMLElement.convert(globalObject, value, { context: context + \" has member 'submitter' that\" });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst SubmitEventInit = require(\"../../../generated/idl/SubmitEventInit\");\n\n// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-submitevent-interface\nclass SubmitEventImpl extends EventImpl {}\nSubmitEventImpl.defaultInit = SubmitEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: SubmitEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst SubmitEventInit = require(\"./SubmitEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"SubmitEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SubmitEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SubmitEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SubmitEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'SubmitEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'SubmitEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = SubmitEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'SubmitEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get submitter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get submitter' called on an object that is not a valid instance of SubmitEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"submitter\"]);\n    }\n  }\n  Object.defineProperties(SubmitEvent.prototype, {\n    submitter: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SubmitEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SubmitEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SubmitEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/SubmitEvent-impl.js\");\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { serializeURL } = require(\"whatwg-url\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst { formOwner, isListed, isSubmittable, isSubmitButton } = require(\"../helpers/form-controls\");\nconst HTMLFormControlsCollection = require(\"../../../generated/idl/HTMLFormControlsCollection\");\nconst { notImplementedMethod } = require(\"../../browser/not-implemented\");\nconst SubmitEvent = require(\"../../../generated/idl/SubmitEvent\");\n\nconst encTypes = new Set([\n  \"application/x-www-form-urlencoded\",\n  \"multipart/form-data\",\n  \"text/plain\"\n]);\n\nconst methods = new Set([\n  \"get\",\n  \"post\",\n  \"dialog\"\n]);\n\nconst constraintValidationPositiveResult = Symbol(\"positive\");\nconst constraintValidationNegativeResult = Symbol(\"negative\");\n\nclass HTMLFormElementImpl extends HTMLElementImpl {\n  _descendantAdded(parent, child) {\n    const form = this;\n    for (const el of domSymbolTree.treeIterator(child)) {\n      if (typeof el._changedFormOwner === \"function\") {\n        el._changedFormOwner(form);\n      }\n    }\n\n    super._descendantAdded(parent, child);\n  }\n\n  _descendantRemoved(parent, child) {\n    for (const el of domSymbolTree.treeIterator(child)) {\n      if (typeof el._changedFormOwner === \"function\") {\n        el._changedFormOwner(null);\n      }\n    }\n\n    super._descendantRemoved(parent, child);\n  }\n\n  _getSubmittableElementNodes() {\n    return domSymbolTree.treeToArray(this.getRootNode({}), {\n      filter: node => {\n        if (!isSubmittable(node)) {\n          return false;\n        }\n\n        return formOwner(node) === this;\n      }\n    });\n  }\n\n  _getElementNodes() {\n    return domSymbolTree.treeToArray(this.getRootNode({}), {\n      filter: node => {\n        if (!isListed(node) || (node._localName === \"input\" && node.type === \"image\")) {\n          return false;\n        }\n\n        return formOwner(node) === this;\n      }\n    });\n  }\n\n  // https://html.spec.whatwg.org/multipage/forms.html#dom-form-elements\n  get elements() {\n    return HTMLFormControlsCollection.createImpl(this._globalObject, [], {\n      element: this.getRootNode({}),\n      query: () => this._getElementNodes()\n    });\n  }\n\n  [idlUtils.indexedGet](index) {\n    return this._getElementNodes()[index] || null;\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    return Object.keys(this._getElementNodes());\n  }\n\n  get length() {\n    return this.elements.length;\n  }\n\n  _doRequestSubmit(submitter) {\n    if (!this.isConnected) {\n      return;\n    }\n\n    this.requestSubmit(submitter);\n  }\n\n  submit() {\n    notImplementedMethod(this._ownerDocument._defaultView, \"HTMLFormElement\", \"submit\");\n  }\n\n  requestSubmit(submitter = null) {\n    if (submitter !== null) {\n      if (!isSubmitButton(submitter)) {\n        throw new TypeError(\"The specified element is not a submit button\");\n      }\n      if (submitter.form !== this) {\n        throw DOMException.create(this._globalObject, [\n          \"The specified element is not owned by this form element\",\n          \"NotFoundError\"\n        ]);\n      }\n    }\n\n    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-submission-algorithm\n    // Step 6.3: if form doesn't have the 'novalidate' attribute, validate it and abort submission if form is invalid\n    if (!this.hasAttributeNS(null, \"novalidate\") && !this.reportValidity()) {\n      return;\n    }\n\n    if (!fireAnEvent(\"submit\", this, SubmitEvent, { bubbles: true, cancelable: true, submitter })) {\n      return;\n    }\n\n    notImplementedMethod(this._ownerDocument._defaultView, \"HTMLFormElement\", \"requestSubmit\");\n  }\n\n  _doReset() {\n    if (!this.isConnected) {\n      return;\n    }\n\n    this.reset();\n  }\n\n  reset() {\n    if (!fireAnEvent(\"reset\", this, undefined, { bubbles: true, cancelable: true })) {\n      return;\n    }\n\n    for (const el of this.elements) {\n      if (typeof el._formReset === \"function\") {\n        el._formReset();\n      }\n    }\n  }\n\n  get method() {\n    let method = this.getAttributeNS(null, \"method\");\n    if (method) {\n      method = method.toLowerCase();\n    }\n\n    if (methods.has(method)) {\n      return method;\n    }\n    return \"get\";\n  }\n\n  set method(V) {\n    this.setAttributeNS(null, \"method\", V);\n  }\n\n  get enctype() {\n    let type = this.getAttributeNS(null, \"enctype\");\n    if (type) {\n      type = type.toLowerCase();\n    }\n\n    if (encTypes.has(type)) {\n      return type;\n    }\n    return \"application/x-www-form-urlencoded\";\n  }\n\n  set enctype(V) {\n    this.setAttributeNS(null, \"enctype\", V);\n  }\n\n  get action() {\n    const attributeValue = this.getAttributeNS(null, \"action\");\n    if (attributeValue === null || attributeValue === \"\") {\n      return this._ownerDocument.URL;\n    }\n    const urlRecord = this._ownerDocument.encodingParseAURL(attributeValue);\n    if (urlRecord === null) {\n      return attributeValue;\n    }\n    return serializeURL(urlRecord);\n  }\n\n  set action(V) {\n    this.setAttributeNS(null, \"action\", V);\n  }\n\n  // If the checkValidity() method is invoked, the user agent must statically validate the\n  // constraints of the form element, and return true if the constraint validation returned\n  // a positive result, and false if it returned a negative result.\n  checkValidity() {\n    return this._staticallyValidateConstraints().result === constraintValidationPositiveResult;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#interactively-validate-the-constraints\n  reportValidity() {\n    return this.checkValidity();\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#statically-validate-the-constraints\n  _staticallyValidateConstraints() {\n    const controls = [];\n    for (const el of this.elements) {\n      if (el.form === this && isSubmittable(el)) {\n        controls.push(el);\n      }\n    }\n\n    const invalidControls = [];\n\n    for (const control of controls) {\n      if (control._isCandidateForConstraintValidation() && !control._satisfiesConstraints()) {\n        invalidControls.push(control);\n      }\n    }\n\n    if (invalidControls.length === 0) {\n      return { result: constraintValidationPositiveResult };\n    }\n\n    const unhandledInvalidControls = [];\n    for (const invalidControl of invalidControls) {\n      const notCancelled = fireAnEvent(\"invalid\", invalidControl, undefined, { cancelable: true });\n      if (notCancelled) {\n        unhandledInvalidControls.push(invalidControl);\n      }\n    }\n\n    return { result: constraintValidationNegativeResult, unhandledInvalidControls };\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLFormElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst HTMLElement = require(\"./HTMLElement.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"HTMLFormElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLFormElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLFormElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLFormElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    submit() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'submit' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      return esValue[implSymbol].submit();\n    }\n\n    requestSubmit() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'requestSubmit' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = HTMLElement.convert(globalObject, curArg, {\n            context: \"Failed to execute 'requestSubmit' on 'HTMLFormElement': parameter 1\"\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].requestSubmit(...args);\n    }\n\n    reset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reset' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].reset();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    get acceptCharset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get acceptCharset' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"accept-charset\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set acceptCharset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set acceptCharset' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'acceptCharset' property on 'HTMLFormElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"accept-charset\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get action() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get action' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"action\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set action(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set action' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'action' property on 'HTMLFormElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"action\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get enctype() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get enctype' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"enctype\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set enctype(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set enctype' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'enctype' property on 'HTMLFormElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"enctype\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get method() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get method' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"method\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set method(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set method' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'method' property on 'HTMLFormElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"method\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLFormElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get noValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get noValidate' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"novalidate\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set noValidate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set noValidate' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'noValidate' property on 'HTMLFormElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"novalidate\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"novalidate\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get target() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get target' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"target\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set target(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set target' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'target' property on 'HTMLFormElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"target\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get elements() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get elements' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"elements\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"elements\"]);\n      });\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of HTMLFormElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(HTMLFormElement.prototype, {\n    submit: { enumerable: true },\n    requestSubmit: { enumerable: true },\n    reset: { enumerable: true },\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    acceptCharset: { enumerable: true },\n    action: { enumerable: true },\n    enctype: { enumerable: true },\n    method: { enumerable: true },\n    name: { enumerable: true },\n    noValidate: { enumerable: true },\n    target: { enumerable: true },\n    elements: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLFormElement\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLFormElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLFormElement\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol][utils.indexedGet](index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol][utils.indexedGet](index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol][utils.indexedGet](index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLFormElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLHtmlElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLHtmlElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLHtmlElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLHtmlElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLHtmlElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLHtmlElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get version() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get version' called on an object that is not a valid instance of HTMLHtmlElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"version\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set version(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set version' called on an object that is not a valid instance of HTMLHtmlElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'version' property on 'HTMLHtmlElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"version\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLHtmlElement.prototype, {\n    version: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLHtmlElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLHtmlElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLHtmlElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLHtmlElement-impl.js\");\n","\"use strict\";\nconst conversions = require(\"webidl-conversions\");\nconst { serializeURL } = require(\"whatwg-url\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { Canvas } = require(\"../../utils\");\n\nclass HTMLImageElementImpl extends HTMLElementImpl {\n  constructor(...args) {\n    super(...args);\n    this._currentRequestState = \"unavailable\";\n  }\n\n  _attrModified(name, value, oldVal) {\n    // TODO: handle crossorigin\n    if (name === \"src\" || ((name === \"srcset\" || name === \"width\" || name === \"sizes\") && value !== oldVal)) {\n      this._updateTheImageData();\n    }\n\n    super._attrModified(name, value, oldVal);\n  }\n\n  get _accept() {\n    return \"image/png,image/*;q=0.8,*/*;q=0.5\";\n  }\n\n  get height() {\n    // Just like on browsers, if no width / height is defined, we fall back on the\n    // dimensions of the internal image data.\n    return this.hasAttributeNS(null, \"height\") ?\n           conversions[\"unsigned long\"](this.getAttributeNS(null, \"height\")) :\n           this.naturalHeight;\n  }\n\n  set height(V) {\n    this.setAttributeNS(null, \"height\", String(V));\n  }\n\n  get width() {\n    return this.hasAttributeNS(null, \"width\") ?\n           conversions[\"unsigned long\"](this.getAttributeNS(null, \"width\")) :\n           this.naturalWidth;\n  }\n\n  set width(V) {\n    this.setAttributeNS(null, \"width\", String(V));\n  }\n\n  get naturalHeight() {\n    return this._image ? this._image.naturalHeight : 0;\n  }\n\n  get naturalWidth() {\n    return this._image ? this._image.naturalWidth : 0;\n  }\n\n  get complete() {\n    const srcAttributeValue = this.getAttributeNS(null, \"src\");\n    return srcAttributeValue === null ||\n      srcAttributeValue === \"\" ||\n      this._currentRequestState === \"broken\" ||\n      this._currentRequestState === \"completely available\";\n  }\n\n  get currentSrc() {\n    return this._currentSrc || \"\";\n  }\n\n  // https://html.spec.whatwg.org/multipage/images.html#updating-the-image-data\n  _updateTheImageData() {\n    const document = this._ownerDocument;\n\n    if (!document._defaultView) {\n      return;\n    }\n\n    if (!Canvas) {\n      return;\n    }\n\n    if (!this._image) {\n      this._image = new Canvas.Image();\n    }\n    this._currentSrc = null;\n    this._currentRequestState = \"unavailable\";\n    const srcAttributeValue = this.getAttributeNS(null, \"src\");\n    let urlString = null;\n    if (srcAttributeValue !== null && srcAttributeValue !== \"\") {\n      const urlRecord = this._ownerDocument.encodingParseAURL(srcAttributeValue);\n      if (urlRecord === null) {\n        return;\n      }\n      urlString = serializeURL(urlRecord);\n    }\n    if (urlString !== null) {\n      const resourceLoader = document._resourceLoader;\n\n      const onLoadImage = data => {\n        let error = null;\n        this._image.onerror = err => {\n          error = err;\n        };\n\n        // eslint-disable-next-line no-restricted-globals -- The canvas package expects a Node.js `Buffer`.\n        this._image.src = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n        if (error) {\n          throw new Error(error);\n        }\n        this._currentSrc = srcAttributeValue;\n        this._currentRequestState = \"completely available\";\n      };\n\n      resourceLoader.fetch(urlString, {\n        element: this,\n        onLoad: onLoadImage,\n        onError: () => {\n          this._currentRequestState = \"broken\";\n        }\n      });\n    } else {\n      this._image.src = \"\";\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLImageElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLImageElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLImageElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLImageElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLImageElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get alt() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get alt' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"alt\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set alt(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set alt' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'alt' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"alt\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get srcset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get srcset' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"srcset\");\n        return value === null ? \"\" : conversions.USVString(value);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set srcset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set srcset' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'srcset' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"srcset\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get sizes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get sizes' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"sizes\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set sizes(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set sizes' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'sizes' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"sizes\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get crossOrigin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get crossOrigin' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"crossorigin\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set crossOrigin(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set crossOrigin' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'crossOrigin' property on 'HTMLImageElement': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"crossorigin\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"crossorigin\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get useMap() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get useMap' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"usemap\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set useMap(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set useMap' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'useMap' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"usemap\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get isMap() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get isMap' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"ismap\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set isMap(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set isMap' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'isMap' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"ismap\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"ismap\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"width\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"width\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"height\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"height\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get naturalWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get naturalWidth' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"naturalWidth\"];\n    }\n\n    get naturalHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get naturalHeight' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"naturalHeight\"];\n    }\n\n    get complete() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get complete' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"complete\"];\n    }\n\n    get currentSrc() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get currentSrc' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"currentSrc\"];\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get lowsrc() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lowsrc' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"lowsrc\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._lowsrcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._lowsrcURLCache;\n        }\n\n        this._lowsrcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._lowsrcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._lowsrcURLCache;\n        }\n        this._lowsrcURLCache = conversions.USVString(value);\n        return this._lowsrcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set lowsrc(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set lowsrc' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'lowsrc' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"lowsrc\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hspace() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hspace' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"hspace\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hspace(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hspace' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'hspace' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"hspace\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vspace() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vspace' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"vspace\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vspace(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vspace' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'vspace' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"vspace\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get longDesc() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get longDesc' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"longdesc\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._longdescURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._longdescURLCache;\n        }\n\n        this._longdescURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._longdescURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._longdescURLCache;\n        }\n        this._longdescURLCache = conversions.USVString(value);\n        return this._longdescURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set longDesc(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set longDesc' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'longDesc' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"longdesc\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get border() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get border' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"border\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set border(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set border' called on an object that is not a valid instance of HTMLImageElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'border' property on 'HTMLImageElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"border\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLImageElement.prototype, {\n    alt: { enumerable: true },\n    src: { enumerable: true },\n    srcset: { enumerable: true },\n    sizes: { enumerable: true },\n    crossOrigin: { enumerable: true },\n    useMap: { enumerable: true },\n    isMap: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    naturalWidth: { enumerable: true },\n    naturalHeight: { enumerable: true },\n    complete: { enumerable: true },\n    currentSrc: { enumerable: true },\n    name: { enumerable: true },\n    lowsrc: { enumerable: true },\n    align: { enumerable: true },\n    hspace: { enumerable: true },\n    vspace: { enumerable: true },\n    longDesc: { enumerable: true },\n    border: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLImageElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLImageElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLImageElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLImageElement-impl.js\");\n","\"use strict\";\n\nconst enumerationValues = new Set([\"select\", \"start\", \"end\", \"preserve\"]);\nexports.enumerationValues = enumerationValues;\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  const string = `${value}`;\n  if (!enumerationValues.has(string)) {\n    throw new globalObject.TypeError(`${context} '${string}' is not a valid enumeration value for SelectionMode`);\n  }\n  return string;\n};\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\n\nexports.implementation = class FileListImpl extends Array {\n  constructor() {\n    super(0);\n  }\n  item(index) {\n    return this[index] || null;\n  }\n  get [idlUtils.supportedPropertyIndices]() {\n    return this.keys();\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"FileList\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'FileList'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"FileList\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class FileList {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of FileList.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'FileList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'FileList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get length' called on an object that is not a valid instance of FileList.\");\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(FileList.prototype, {\n    item: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"FileList\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = FileList;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: FileList\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/file-api/FileList-impl.js\");\n",";(function (globalScope) {\r\n  'use strict';\r\n\r\n\r\n  /*!\r\n   *  decimal.js v10.6.0\r\n   *  An arbitrary-precision Decimal type for JavaScript.\r\n   *  https://github.com/MikeMcl/decimal.js\r\n   *  Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n   *  MIT Licence\r\n   */\r\n\r\n\r\n  // -----------------------------------  EDITABLE DEFAULTS  ------------------------------------ //\r\n\r\n\r\n    // The maximum exponent magnitude.\r\n    // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\n  var EXP_LIMIT = 9e15,                      // 0 to 9e15\r\n\r\n    // The limit on the value of `precision`, and on the value of the first argument to\r\n    // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n    MAX_DIGITS = 1e9,                        // 0 to 1e9\r\n\r\n    // Base conversion alphabet.\r\n    NUMERALS = '0123456789abcdef',\r\n\r\n    // The natural logarithm of 10 (1025 digits).\r\n    LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n    // Pi (1025 digits).\r\n    PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n    // The initial configuration properties of the Decimal constructor.\r\n    DEFAULTS = {\r\n\r\n      // These values must be integers within the stated ranges (inclusive).\r\n      // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n      // The maximum number of significant digits of the result of a calculation or base conversion.\r\n      // E.g. `Decimal.config({ precision: 20 });`\r\n      precision: 20,                         // 1 to MAX_DIGITS\r\n\r\n      // The rounding mode used when rounding to `precision`.\r\n      //\r\n      // ROUND_UP         0 Away from zero.\r\n      // ROUND_DOWN       1 Towards zero.\r\n      // ROUND_CEIL       2 Towards +Infinity.\r\n      // ROUND_FLOOR      3 Towards -Infinity.\r\n      // ROUND_HALF_UP    4 Towards nearest neighbour. If equidistant, up.\r\n      // ROUND_HALF_DOWN  5 Towards nearest neighbour. If equidistant, down.\r\n      // ROUND_HALF_EVEN  6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n      // ROUND_HALF_CEIL  7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n      // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n      //\r\n      // E.g.\r\n      // `Decimal.rounding = 4;`\r\n      // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n      rounding: 4,                           // 0 to 8\r\n\r\n      // The modulo mode used when calculating the modulus: a mod n.\r\n      // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n      // The remainder (r) is calculated as: r = a - n * q.\r\n      //\r\n      // UP         0 The remainder is positive if the dividend is negative, else is negative.\r\n      // DOWN       1 The remainder has the same sign as the dividend (JavaScript %).\r\n      // FLOOR      3 The remainder has the same sign as the divisor (Python %).\r\n      // HALF_EVEN  6 The IEEE 754 remainder function.\r\n      // EUCLID     9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n      //\r\n      // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n      // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n      // be used, but they may not give useful results.\r\n      modulo: 1,                             // 0 to 9\r\n\r\n      // The exponent value at and beneath which `toString` returns exponential notation.\r\n      // JavaScript numbers: -7\r\n      toExpNeg: -7,                          // 0 to -EXP_LIMIT\r\n\r\n      // The exponent value at and above which `toString` returns exponential notation.\r\n      // JavaScript numbers: 21\r\n      toExpPos:  21,                         // 0 to EXP_LIMIT\r\n\r\n      // The minimum exponent value, beneath which underflow to zero occurs.\r\n      // JavaScript numbers: -324  (5e-324)\r\n      minE: -EXP_LIMIT,                      // -1 to -EXP_LIMIT\r\n\r\n      // The maximum exponent value, above which overflow to Infinity occurs.\r\n      // JavaScript numbers: 308  (1.7976931348623157e+308)\r\n      maxE: EXP_LIMIT,                       // 1 to EXP_LIMIT\r\n\r\n      // Whether to use cryptographically-secure random number generation, if available.\r\n      crypto: false                          // true/false\r\n    },\r\n\r\n\r\n  // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n    Decimal, inexact, noConflict, quadrant,\r\n    external = true,\r\n\r\n    decimalError = '[DecimalError] ',\r\n    invalidArgument = decimalError + 'Invalid argument: ',\r\n    precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n    cryptoUnavailable = decimalError + 'crypto unavailable',\r\n    tag = '[object Decimal]',\r\n\r\n    mathfloor = Math.floor,\r\n    mathpow = Math.pow,\r\n\r\n    isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n    isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n    isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n    isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n    BASE = 1e7,\r\n    LOG_BASE = 7,\r\n    MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n    LN10_PRECISION = LN10.length - 1,\r\n    PI_PRECISION = PI.length - 1,\r\n\r\n    // Decimal.prototype object\r\n    P = { toStringTag: tag };\r\n\r\n\r\n  // Decimal prototype methods\r\n\r\n\r\n  /*\r\n   *  absoluteValue             abs\r\n   *  ceil\r\n   *  clampedTo                 clamp\r\n   *  comparedTo                cmp\r\n   *  cosine                    cos\r\n   *  cubeRoot                  cbrt\r\n   *  decimalPlaces             dp\r\n   *  dividedBy                 div\r\n   *  dividedToIntegerBy        divToInt\r\n   *  equals                    eq\r\n   *  floor\r\n   *  greaterThan               gt\r\n   *  greaterThanOrEqualTo      gte\r\n   *  hyperbolicCosine          cosh\r\n   *  hyperbolicSine            sinh\r\n   *  hyperbolicTangent         tanh\r\n   *  inverseCosine             acos\r\n   *  inverseHyperbolicCosine   acosh\r\n   *  inverseHyperbolicSine     asinh\r\n   *  inverseHyperbolicTangent  atanh\r\n   *  inverseSine               asin\r\n   *  inverseTangent            atan\r\n   *  isFinite\r\n   *  isInteger                 isInt\r\n   *  isNaN\r\n   *  isNegative                isNeg\r\n   *  isPositive                isPos\r\n   *  isZero\r\n   *  lessThan                  lt\r\n   *  lessThanOrEqualTo         lte\r\n   *  logarithm                 log\r\n   *  [maximum]                 [max]\r\n   *  [minimum]                 [min]\r\n   *  minus                     sub\r\n   *  modulo                    mod\r\n   *  naturalExponential        exp\r\n   *  naturalLogarithm          ln\r\n   *  negated                   neg\r\n   *  plus                      add\r\n   *  precision                 sd\r\n   *  round\r\n   *  sine                      sin\r\n   *  squareRoot                sqrt\r\n   *  tangent                   tan\r\n   *  times                     mul\r\n   *  toBinary\r\n   *  toDecimalPlaces           toDP\r\n   *  toExponential\r\n   *  toFixed\r\n   *  toFraction\r\n   *  toHexadecimal             toHex\r\n   *  toNearest\r\n   *  toNumber\r\n   *  toOctal\r\n   *  toPower                   pow\r\n   *  toPrecision\r\n   *  toSignificantDigits       toSD\r\n   *  toString\r\n   *  truncated                 trunc\r\n   *  valueOf                   toJSON\r\n   */\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the absolute value of this Decimal.\r\n   *\r\n   */\r\n  P.absoluteValue = P.abs = function () {\r\n    var x = new this.constructor(this);\r\n    if (x.s < 0) x.s = 1;\r\n    return finalise(x);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n   * direction of positive Infinity.\r\n   *\r\n   */\r\n  P.ceil = function () {\r\n    return finalise(new this.constructor(this), this.e + 1, 2);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n   * delineated by `min` and `max`.\r\n   *\r\n   * min {number|string|bigint|Decimal}\r\n   * max {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  P.clampedTo = P.clamp = function (min, max) {\r\n    var k,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n    min = new Ctor(min);\r\n    max = new Ctor(max);\r\n    if (!min.s || !max.s) return new Ctor(NaN);\r\n    if (min.gt(max)) throw Error(invalidArgument + max);\r\n    k = x.cmp(min);\r\n    return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return\r\n   *   1    if the value of this Decimal is greater than the value of `y`,\r\n   *  -1    if the value of this Decimal is less than the value of `y`,\r\n   *   0    if they have the same value,\r\n   *   NaN  if the value of either Decimal is NaN.\r\n   *\r\n   */\r\n  P.comparedTo = P.cmp = function (y) {\r\n    var i, j, xdL, ydL,\r\n      x = this,\r\n      xd = x.d,\r\n      yd = (y = new x.constructor(y)).d,\r\n      xs = x.s,\r\n      ys = y.s;\r\n\r\n    // Either NaN or ±Infinity?\r\n    if (!xd || !yd) {\r\n      return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n    }\r\n\r\n    // Either zero?\r\n    if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n    // Signs differ?\r\n    if (xs !== ys) return xs;\r\n\r\n    // Compare exponents.\r\n    if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n    xdL = xd.length;\r\n    ydL = yd.length;\r\n\r\n    // Compare digit by digit.\r\n    for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n      if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n    }\r\n\r\n    // Compare lengths.\r\n    return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-1, 1]\r\n   *\r\n   * cos(0)         = 1\r\n   * cos(-0)        = 1\r\n   * cos(Infinity)  = NaN\r\n   * cos(-Infinity) = NaN\r\n   * cos(NaN)       = NaN\r\n   *\r\n   */\r\n  P.cosine = P.cos = function () {\r\n    var pr, rm,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.d) return new Ctor(NaN);\r\n\r\n    // cos(0) = cos(-0) = 1\r\n    if (!x.d[0]) return new Ctor(1);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n    Ctor.rounding = 1;\r\n\r\n    x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n  };\r\n\r\n\r\n  /*\r\n   *\r\n   * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n   * `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   *  cbrt(0)  =  0\r\n   *  cbrt(-0) = -0\r\n   *  cbrt(1)  =  1\r\n   *  cbrt(-1) = -1\r\n   *  cbrt(N)  =  N\r\n   *  cbrt(-I) = -I\r\n   *  cbrt(I)  =  I\r\n   *\r\n   * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n   *\r\n   */\r\n  P.cubeRoot = P.cbrt = function () {\r\n    var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n    external = false;\r\n\r\n    // Initial estimate.\r\n    s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n     // Math.cbrt underflow/overflow?\r\n     // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n    if (!s || Math.abs(s) == 1 / 0) {\r\n      n = digitsToString(x.d);\r\n      e = x.e;\r\n\r\n      // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n      if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n      s = mathpow(n, 1 / 3);\r\n\r\n      // Rarely, e may be one less than the result exponent value.\r\n      e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n      if (s == 1 / 0) {\r\n        n = '5e' + e;\r\n      } else {\r\n        n = s.toExponential();\r\n        n = n.slice(0, n.indexOf('e') + 1) + e;\r\n      }\r\n\r\n      r = new Ctor(n);\r\n      r.s = x.s;\r\n    } else {\r\n      r = new Ctor(s.toString());\r\n    }\r\n\r\n    sd = (e = Ctor.precision) + 3;\r\n\r\n    // Halley's method.\r\n    // TODO? Compare Newton's method.\r\n    for (;;) {\r\n      t = r;\r\n      t3 = t.times(t).times(t);\r\n      t3plusx = t3.plus(x);\r\n      r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n      // TODO? Replace with for-loop and checkRoundingDigits.\r\n      if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n        n = n.slice(sd - 3, sd + 1);\r\n\r\n        // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n        // , i.e. approaching a rounding boundary, continue the iteration.\r\n        if (n == '9999' || !rep && n == '4999') {\r\n\r\n          // On the first iteration only, check to see if rounding up gives the exact result as the\r\n          // nines may infinitely repeat.\r\n          if (!rep) {\r\n            finalise(t, e + 1, 0);\r\n\r\n            if (t.times(t).times(t).eq(x)) {\r\n              r = t;\r\n              break;\r\n            }\r\n          }\r\n\r\n          sd += 4;\r\n          rep = 1;\r\n        } else {\r\n\r\n          // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n          // If not, then there are further digits and m will be truthy.\r\n          if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n            // Truncate to the first rounding digit.\r\n            finalise(r, e + 1, 1);\r\n            m = !r.times(r).times(r).eq(x);\r\n          }\r\n\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    external = true;\r\n\r\n    return finalise(r, e, Ctor.rounding, m);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the number of decimal places of the value of this Decimal.\r\n   *\r\n   */\r\n  P.decimalPlaces = P.dp = function () {\r\n    var w,\r\n      d = this.d,\r\n      n = NaN;\r\n\r\n    if (d) {\r\n      w = d.length - 1;\r\n      n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n      // Subtract the number of trailing zeros of the last word.\r\n      w = d[w];\r\n      if (w) for (; w % 10 == 0; w /= 10) n--;\r\n      if (n < 0) n = 0;\r\n    }\r\n\r\n    return n;\r\n  };\r\n\r\n\r\n  /*\r\n   *  n / 0 = I\r\n   *  n / N = N\r\n   *  n / I = 0\r\n   *  0 / n = 0\r\n   *  0 / 0 = N\r\n   *  0 / N = N\r\n   *  0 / I = 0\r\n   *  N / n = N\r\n   *  N / 0 = N\r\n   *  N / N = N\r\n   *  N / I = N\r\n   *  I / n = I\r\n   *  I / 0 = I\r\n   *  I / N = N\r\n   *  I / I = N\r\n   *\r\n   * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n   * `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.dividedBy = P.div = function (y) {\r\n    return divide(this, new this.constructor(y));\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n   * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.dividedToIntegerBy = P.divToInt = function (y) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n    return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.equals = P.eq = function (y) {\r\n    return this.cmp(y) === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n   * direction of negative Infinity.\r\n   *\r\n   */\r\n  P.floor = function () {\r\n    return finalise(new this.constructor(this), this.e + 1, 3);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n   * false.\r\n   *\r\n   */\r\n  P.greaterThan = P.gt = function (y) {\r\n    return this.cmp(y) > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n   * otherwise return false.\r\n   *\r\n   */\r\n  P.greaterThanOrEqualTo = P.gte = function (y) {\r\n    var k = this.cmp(y);\r\n    return k == 1 || k === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n   * Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [1, Infinity]\r\n   *\r\n   * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n   *\r\n   * cosh(0)         = 1\r\n   * cosh(-0)        = 1\r\n   * cosh(Infinity)  = Infinity\r\n   * cosh(-Infinity) = Infinity\r\n   * cosh(NaN)       = NaN\r\n   *\r\n   *  x        time taken (ms)   result\r\n   * 1000      9                 9.8503555700852349694e+433\r\n   * 10000     25                4.4034091128314607936e+4342\r\n   * 100000    171               1.4033316802130615897e+43429\r\n   * 1000000   3817              1.5166076984010437725e+434294\r\n   * 10000000  abandoned after 2 minute wait\r\n   *\r\n   * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n   *\r\n   */\r\n  P.hyperbolicCosine = P.cosh = function () {\r\n    var k, n, pr, rm, len,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      one = new Ctor(1);\r\n\r\n    if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n    if (x.isZero()) return one;\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n    Ctor.rounding = 1;\r\n    len = x.d.length;\r\n\r\n    // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n    // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n    // Estimate the optimum number of times to use the argument reduction.\r\n    // TODO? Estimation reused from cosine() and may not be optimal here.\r\n    if (len < 32) {\r\n      k = Math.ceil(len / 3);\r\n      n = (1 / tinyPow(4, k)).toString();\r\n    } else {\r\n      k = 16;\r\n      n = '2.3283064365386962890625e-10';\r\n    }\r\n\r\n    x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n    // Reverse argument reduction\r\n    var cosh2_x,\r\n      i = k,\r\n      d8 = new Ctor(8);\r\n    for (; i--;) {\r\n      cosh2_x = x.times(x);\r\n      x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n    }\r\n\r\n    return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n   * Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-Infinity, Infinity]\r\n   *\r\n   * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n   *\r\n   * sinh(0)         = 0\r\n   * sinh(-0)        = -0\r\n   * sinh(Infinity)  = Infinity\r\n   * sinh(-Infinity) = -Infinity\r\n   * sinh(NaN)       = NaN\r\n   *\r\n   * x        time taken (ms)\r\n   * 10       2 ms\r\n   * 100      5 ms\r\n   * 1000     14 ms\r\n   * 10000    82 ms\r\n   * 100000   886 ms            1.4033316802130615897e+43429\r\n   * 200000   2613 ms\r\n   * 300000   5407 ms\r\n   * 400000   8824 ms\r\n   * 500000   13026 ms          8.7080643612718084129e+217146\r\n   * 1000000  48543 ms\r\n   *\r\n   * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n   *\r\n   */\r\n  P.hyperbolicSine = P.sinh = function () {\r\n    var k, pr, rm, len,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n    Ctor.rounding = 1;\r\n    len = x.d.length;\r\n\r\n    if (len < 3) {\r\n      x = taylorSeries(Ctor, 2, x, x, true);\r\n    } else {\r\n\r\n      // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n      // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n      // 3 multiplications and 1 addition\r\n\r\n      // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n      // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n      // 4 multiplications and 2 additions\r\n\r\n      // Estimate the optimum number of times to use the argument reduction.\r\n      k = 1.4 * Math.sqrt(len);\r\n      k = k > 16 ? 16 : k | 0;\r\n\r\n      x = x.times(1 / tinyPow(5, k));\r\n      x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n      // Reverse argument reduction\r\n      var sinh2_x,\r\n        d5 = new Ctor(5),\r\n        d16 = new Ctor(16),\r\n        d20 = new Ctor(20);\r\n      for (; k--;) {\r\n        sinh2_x = x.times(x);\r\n        x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n      }\r\n    }\r\n\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return finalise(x, pr, rm, true);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n   * Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-1, 1]\r\n   *\r\n   * tanh(x) = sinh(x) / cosh(x)\r\n   *\r\n   * tanh(0)         = 0\r\n   * tanh(-0)        = -0\r\n   * tanh(Infinity)  = 1\r\n   * tanh(-Infinity) = -1\r\n   * tanh(NaN)       = NaN\r\n   *\r\n   */\r\n  P.hyperbolicTangent = P.tanh = function () {\r\n    var pr, rm,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.isFinite()) return new Ctor(x.s);\r\n    if (x.isZero()) return new Ctor(x);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + 7;\r\n    Ctor.rounding = 1;\r\n\r\n    return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n   * this Decimal.\r\n   *\r\n   * Domain: [-1, 1]\r\n   * Range: [0, pi]\r\n   *\r\n   * acos(x) = pi/2 - asin(x)\r\n   *\r\n   * acos(0)       = pi/2\r\n   * acos(-0)      = pi/2\r\n   * acos(1)       = 0\r\n   * acos(-1)      = pi\r\n   * acos(1/2)     = pi/3\r\n   * acos(-1/2)    = 2*pi/3\r\n   * acos(|x| > 1) = NaN\r\n   * acos(NaN)     = NaN\r\n   *\r\n   */\r\n  P.inverseCosine = P.acos = function () {\r\n    var x = this,\r\n      Ctor = x.constructor,\r\n      k = x.abs().cmp(1),\r\n      pr = Ctor.precision,\r\n      rm = Ctor.rounding;\r\n\r\n    if (k !== -1) {\r\n      return k === 0\r\n        // |x| is 1\r\n        ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n        // |x| > 1 or x is NaN\r\n        : new Ctor(NaN);\r\n    }\r\n\r\n    if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n    // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n    Ctor.precision = pr + 6;\r\n    Ctor.rounding = 1;\r\n\r\n    // See https://github.com/MikeMcl/decimal.js/pull/217\r\n    x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();\r\n\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return x.times(2);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n   * value of this Decimal.\r\n   *\r\n   * Domain: [1, Infinity]\r\n   * Range: [0, Infinity]\r\n   *\r\n   * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n   *\r\n   * acosh(x < 1)     = NaN\r\n   * acosh(NaN)       = NaN\r\n   * acosh(Infinity)  = Infinity\r\n   * acosh(-Infinity) = NaN\r\n   * acosh(0)         = NaN\r\n   * acosh(-0)        = NaN\r\n   * acosh(1)         = 0\r\n   * acosh(-1)        = NaN\r\n   *\r\n   */\r\n  P.inverseHyperbolicCosine = P.acosh = function () {\r\n    var pr, rm,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n    if (!x.isFinite()) return new Ctor(x);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n    Ctor.rounding = 1;\r\n    external = false;\r\n\r\n    x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n    external = true;\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return x.ln();\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n   * of this Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-Infinity, Infinity]\r\n   *\r\n   * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n   *\r\n   * asinh(NaN)       = NaN\r\n   * asinh(Infinity)  = Infinity\r\n   * asinh(-Infinity) = -Infinity\r\n   * asinh(0)         = 0\r\n   * asinh(-0)        = -0\r\n   *\r\n   */\r\n  P.inverseHyperbolicSine = P.asinh = function () {\r\n    var pr, rm,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n    Ctor.rounding = 1;\r\n    external = false;\r\n\r\n    x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n    external = true;\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return x.ln();\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n   * value of this Decimal.\r\n   *\r\n   * Domain: [-1, 1]\r\n   * Range: [-Infinity, Infinity]\r\n   *\r\n   * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n   *\r\n   * atanh(|x| > 1)   = NaN\r\n   * atanh(NaN)       = NaN\r\n   * atanh(Infinity)  = NaN\r\n   * atanh(-Infinity) = NaN\r\n   * atanh(0)         = 0\r\n   * atanh(-0)        = -0\r\n   * atanh(1)         = Infinity\r\n   * atanh(-1)        = -Infinity\r\n   *\r\n   */\r\n  P.inverseHyperbolicTangent = P.atanh = function () {\r\n    var pr, rm, wpr, xsd,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.isFinite()) return new Ctor(NaN);\r\n    if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    xsd = x.sd();\r\n\r\n    if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n    Ctor.precision = wpr = xsd - x.e;\r\n\r\n    x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n    Ctor.precision = pr + 4;\r\n    Ctor.rounding = 1;\r\n\r\n    x = x.ln();\r\n\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return x.times(0.5);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n   * Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-pi/2, pi/2]\r\n   *\r\n   * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n   *\r\n   * asin(0)       = 0\r\n   * asin(-0)      = -0\r\n   * asin(1/2)     = pi/6\r\n   * asin(-1/2)    = -pi/6\r\n   * asin(1)       = pi/2\r\n   * asin(-1)      = -pi/2\r\n   * asin(|x| > 1) = NaN\r\n   * asin(NaN)     = NaN\r\n   *\r\n   * TODO? Compare performance of Taylor series.\r\n   *\r\n   */\r\n  P.inverseSine = P.asin = function () {\r\n    var halfPi, k,\r\n      pr, rm,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (x.isZero()) return new Ctor(x);\r\n\r\n    k = x.abs().cmp(1);\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n\r\n    if (k !== -1) {\r\n\r\n      // |x| is 1\r\n      if (k === 0) {\r\n        halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n        halfPi.s = x.s;\r\n        return halfPi;\r\n      }\r\n\r\n      // |x| > 1 or x is NaN\r\n      return new Ctor(NaN);\r\n    }\r\n\r\n    // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n    Ctor.precision = pr + 6;\r\n    Ctor.rounding = 1;\r\n\r\n    x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return x.times(2);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n   * of this Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-pi/2, pi/2]\r\n   *\r\n   * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n   *\r\n   * atan(0)         = 0\r\n   * atan(-0)        = -0\r\n   * atan(1)         = pi/4\r\n   * atan(-1)        = -pi/4\r\n   * atan(Infinity)  = pi/2\r\n   * atan(-Infinity) = -pi/2\r\n   * atan(NaN)       = NaN\r\n   *\r\n   */\r\n  P.inverseTangent = P.atan = function () {\r\n    var i, j, k, n, px, t, r, wpr, x2,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision,\r\n      rm = Ctor.rounding;\r\n\r\n    if (!x.isFinite()) {\r\n      if (!x.s) return new Ctor(NaN);\r\n      if (pr + 4 <= PI_PRECISION) {\r\n        r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n        r.s = x.s;\r\n        return r;\r\n      }\r\n    } else if (x.isZero()) {\r\n      return new Ctor(x);\r\n    } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n      r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n      r.s = x.s;\r\n      return r;\r\n    }\r\n\r\n    Ctor.precision = wpr = pr + 10;\r\n    Ctor.rounding = 1;\r\n\r\n    // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n    // Argument reduction\r\n    // Ensure |x| < 0.42\r\n    // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n    k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n    for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n    external = false;\r\n\r\n    j = Math.ceil(wpr / LOG_BASE);\r\n    n = 1;\r\n    x2 = x.times(x);\r\n    r = new Ctor(x);\r\n    px = x;\r\n\r\n    // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n    for (; i !== -1;) {\r\n      px = px.times(x2);\r\n      t = r.minus(px.div(n += 2));\r\n\r\n      px = px.times(x2);\r\n      r = t.plus(px.div(n += 2));\r\n\r\n      if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n    }\r\n\r\n    if (k) r = r.times(2 << (k - 1));\r\n\r\n    external = true;\r\n\r\n    return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n   *\r\n   */\r\n  P.isFinite = function () {\r\n    return !!this.d;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is an integer, otherwise return false.\r\n   *\r\n   */\r\n  P.isInteger = P.isInt = function () {\r\n    return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is NaN, otherwise return false.\r\n   *\r\n   */\r\n  P.isNaN = function () {\r\n    return !this.s;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is negative, otherwise return false.\r\n   *\r\n   */\r\n  P.isNegative = P.isNeg = function () {\r\n    return this.s < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is positive, otherwise return false.\r\n   *\r\n   */\r\n  P.isPositive = P.isPos = function () {\r\n    return this.s > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n   *\r\n   */\r\n  P.isZero = function () {\r\n    return !!this.d && this.d[0] === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.lessThan = P.lt = function (y) {\r\n    return this.cmp(y) < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.lessThanOrEqualTo = P.lte = function (y) {\r\n    return this.cmp(y) < 1;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * If no base is specified, return log[10](arg).\r\n   *\r\n   * log[base](arg) = ln(arg) / ln(base)\r\n   *\r\n   * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n   * otherwise:\r\n   *\r\n   * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n   * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n   * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n   *\r\n   * log[-b](a)       = NaN\r\n   * log[0](a)        = NaN\r\n   * log[1](a)        = NaN\r\n   * log[NaN](a)      = NaN\r\n   * log[Infinity](a) = NaN\r\n   * log[b](0)        = -Infinity\r\n   * log[b](-0)       = -Infinity\r\n   * log[b](-a)       = NaN\r\n   * log[b](1)        = 0\r\n   * log[b](Infinity) = Infinity\r\n   * log[b](NaN)      = NaN\r\n   *\r\n   * [base] {number|string|bigint|Decimal} The base of the logarithm.\r\n   *\r\n   */\r\n  P.logarithm = P.log = function (base) {\r\n    var isBase10, d, denominator, k, inf, num, sd, r,\r\n      arg = this,\r\n      Ctor = arg.constructor,\r\n      pr = Ctor.precision,\r\n      rm = Ctor.rounding,\r\n      guard = 5;\r\n\r\n    // Default base is 10.\r\n    if (base == null) {\r\n      base = new Ctor(10);\r\n      isBase10 = true;\r\n    } else {\r\n      base = new Ctor(base);\r\n      d = base.d;\r\n\r\n      // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n      if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n      isBase10 = base.eq(10);\r\n    }\r\n\r\n    d = arg.d;\r\n\r\n    // Is arg negative, non-finite, 0 or 1?\r\n    if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n      return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n    }\r\n\r\n    // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n    // integer power of 10.\r\n    if (isBase10) {\r\n      if (d.length > 1) {\r\n        inf = true;\r\n      } else {\r\n        for (k = d[0]; k % 10 === 0;) k /= 10;\r\n        inf = k !== 1;\r\n      }\r\n    }\r\n\r\n    external = false;\r\n    sd = pr + guard;\r\n    num = naturalLogarithm(arg, sd);\r\n    denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n    // The result will have 5 rounding digits.\r\n    r = divide(num, denominator, sd, 1);\r\n\r\n    // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n    // calculate 10 further digits.\r\n    //\r\n    // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n    // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n    // further digits, the last 14 are nines, round up and assume the result is exact.\r\n    // Also assume the result is exact if the last 14 are zero.\r\n    //\r\n    // Example of a result that will be incorrectly rounded:\r\n    // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n    // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n    // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n    // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n    // place is still 2.6.\r\n    if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n      do {\r\n        sd += 10;\r\n        num = naturalLogarithm(arg, sd);\r\n        denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n        r = divide(num, denominator, sd, 1);\r\n\r\n        if (!inf) {\r\n\r\n          // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n          if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n            r = finalise(r, pr + 1, 0);\r\n          }\r\n\r\n          break;\r\n        }\r\n      } while (checkRoundingDigits(r.d, k += 10, rm));\r\n    }\r\n\r\n    external = true;\r\n\r\n    return finalise(r, pr, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n   *\r\n   * arguments {number|string|bigint|Decimal}\r\n   *\r\n  P.max = function () {\r\n    Array.prototype.push.call(arguments, this);\r\n    return maxOrMin(this.constructor, arguments, -1);\r\n  };\r\n   */\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n   *\r\n   * arguments {number|string|bigint|Decimal}\r\n   *\r\n  P.min = function () {\r\n    Array.prototype.push.call(arguments, this);\r\n    return maxOrMin(this.constructor, arguments, 1);\r\n  };\r\n   */\r\n\r\n\r\n  /*\r\n   *  n - 0 = n\r\n   *  n - N = N\r\n   *  n - I = -I\r\n   *  0 - n = -n\r\n   *  0 - 0 = 0\r\n   *  0 - N = N\r\n   *  0 - I = -I\r\n   *  N - n = N\r\n   *  N - 0 = N\r\n   *  N - N = N\r\n   *  N - I = N\r\n   *  I - n = I\r\n   *  I - 0 = I\r\n   *  I - N = N\r\n   *  I - I = N\r\n   *\r\n   * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.minus = P.sub = function (y) {\r\n    var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    y = new Ctor(y);\r\n\r\n    // If either is not finite...\r\n    if (!x.d || !y.d) {\r\n\r\n      // Return NaN if either is NaN.\r\n      if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n      // Return y negated if x is finite and y is ±Infinity.\r\n      else if (x.d) y.s = -y.s;\r\n\r\n      // Return x if y is finite and x is ±Infinity.\r\n      // Return x if both are ±Infinity with different signs.\r\n      // Return NaN if both are ±Infinity with the same sign.\r\n      else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n      return y;\r\n    }\r\n\r\n    // If signs differ...\r\n    if (x.s != y.s) {\r\n      y.s = -y.s;\r\n      return x.plus(y);\r\n    }\r\n\r\n    xd = x.d;\r\n    yd = y.d;\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n\r\n    // If either is zero...\r\n    if (!xd[0] || !yd[0]) {\r\n\r\n      // Return y negated if x is zero and y is non-zero.\r\n      if (yd[0]) y.s = -y.s;\r\n\r\n      // Return x if y is zero and x is non-zero.\r\n      else if (xd[0]) y = new Ctor(x);\r\n\r\n      // Return zero if both are zero.\r\n      // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n      else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n      return external ? finalise(y, pr, rm) : y;\r\n    }\r\n\r\n    // x and y are finite, non-zero numbers with the same sign.\r\n\r\n    // Calculate base 1e7 exponents.\r\n    e = mathfloor(y.e / LOG_BASE);\r\n    xe = mathfloor(x.e / LOG_BASE);\r\n\r\n    xd = xd.slice();\r\n    k = xe - e;\r\n\r\n    // If base 1e7 exponents differ...\r\n    if (k) {\r\n      xLTy = k < 0;\r\n\r\n      if (xLTy) {\r\n        d = xd;\r\n        k = -k;\r\n        len = yd.length;\r\n      } else {\r\n        d = yd;\r\n        e = xe;\r\n        len = xd.length;\r\n      }\r\n\r\n      // Numbers with massively different exponents would result in a very high number of\r\n      // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n      // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n      i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n      if (k > i) {\r\n        k = i;\r\n        d.length = 1;\r\n      }\r\n\r\n      // Prepend zeros to equalise exponents.\r\n      d.reverse();\r\n      for (i = k; i--;) d.push(0);\r\n      d.reverse();\r\n\r\n    // Base 1e7 exponents equal.\r\n    } else {\r\n\r\n      // Check digits to determine which is the bigger number.\r\n\r\n      i = xd.length;\r\n      len = yd.length;\r\n      xLTy = i < len;\r\n      if (xLTy) len = i;\r\n\r\n      for (i = 0; i < len; i++) {\r\n        if (xd[i] != yd[i]) {\r\n          xLTy = xd[i] < yd[i];\r\n          break;\r\n        }\r\n      }\r\n\r\n      k = 0;\r\n    }\r\n\r\n    if (xLTy) {\r\n      d = xd;\r\n      xd = yd;\r\n      yd = d;\r\n      y.s = -y.s;\r\n    }\r\n\r\n    len = xd.length;\r\n\r\n    // Append zeros to `xd` if shorter.\r\n    // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n    for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n    // Subtract yd from xd.\r\n    for (i = yd.length; i > k;) {\r\n\r\n      if (xd[--i] < yd[i]) {\r\n        for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n        --xd[j];\r\n        xd[i] += BASE;\r\n      }\r\n\r\n      xd[i] -= yd[i];\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (; xd[--len] === 0;) xd.pop();\r\n\r\n    // Remove leading zeros and adjust exponent accordingly.\r\n    for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n    // Zero?\r\n    if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n    y.d = xd;\r\n    y.e = getBase10Exponent(xd, e);\r\n\r\n    return external ? finalise(y, pr, rm) : y;\r\n  };\r\n\r\n\r\n  /*\r\n   *   n % 0 =  N\r\n   *   n % N =  N\r\n   *   n % I =  n\r\n   *   0 % n =  0\r\n   *  -0 % n = -0\r\n   *   0 % 0 =  N\r\n   *   0 % N =  N\r\n   *   0 % I =  0\r\n   *   N % n =  N\r\n   *   N % 0 =  N\r\n   *   N % N =  N\r\n   *   N % I =  N\r\n   *   I % n =  N\r\n   *   I % 0 =  N\r\n   *   I % N =  N\r\n   *   I % I =  N\r\n   *\r\n   * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n   * `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * The result depends on the modulo mode.\r\n   *\r\n   */\r\n  P.modulo = P.mod = function (y) {\r\n    var q,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    y = new Ctor(y);\r\n\r\n    // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n    if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n    // Return x if y is ±Infinity or x is ±0.\r\n    if (!y.d || x.d && !x.d[0]) {\r\n      return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n    }\r\n\r\n    // Prevent rounding of intermediate calculations.\r\n    external = false;\r\n\r\n    if (Ctor.modulo == 9) {\r\n\r\n      // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n      // result = x - q * y    where  0 <= result < abs(y)\r\n      q = divide(x, y.abs(), 0, 3, 1);\r\n      q.s *= y.s;\r\n    } else {\r\n      q = divide(x, y, 0, Ctor.modulo, 1);\r\n    }\r\n\r\n    q = q.times(y);\r\n\r\n    external = true;\r\n\r\n    return x.minus(q);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n   * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.naturalExponential = P.exp = function () {\r\n    return naturalExponential(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n   * rounded to `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.naturalLogarithm = P.ln = function () {\r\n    return naturalLogarithm(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n   * -1.\r\n   *\r\n   */\r\n  P.negated = P.neg = function () {\r\n    var x = new this.constructor(this);\r\n    x.s = -x.s;\r\n    return finalise(x);\r\n  };\r\n\r\n\r\n  /*\r\n   *  n + 0 = n\r\n   *  n + N = N\r\n   *  n + I = I\r\n   *  0 + n = n\r\n   *  0 + 0 = 0\r\n   *  0 + N = N\r\n   *  0 + I = I\r\n   *  N + n = N\r\n   *  N + 0 = N\r\n   *  N + N = N\r\n   *  N + I = N\r\n   *  I + n = I\r\n   *  I + 0 = I\r\n   *  I + N = N\r\n   *  I + I = I\r\n   *\r\n   * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.plus = P.add = function (y) {\r\n    var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    y = new Ctor(y);\r\n\r\n    // If either is not finite...\r\n    if (!x.d || !y.d) {\r\n\r\n      // Return NaN if either is NaN.\r\n      if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n      // Return x if y is finite and x is ±Infinity.\r\n      // Return x if both are ±Infinity with the same sign.\r\n      // Return NaN if both are ±Infinity with different signs.\r\n      // Return y if x is finite and y is ±Infinity.\r\n      else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n      return y;\r\n    }\r\n\r\n     // If signs differ...\r\n    if (x.s != y.s) {\r\n      y.s = -y.s;\r\n      return x.minus(y);\r\n    }\r\n\r\n    xd = x.d;\r\n    yd = y.d;\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n\r\n    // If either is zero...\r\n    if (!xd[0] || !yd[0]) {\r\n\r\n      // Return x if y is zero.\r\n      // Return y if y is non-zero.\r\n      if (!yd[0]) y = new Ctor(x);\r\n\r\n      return external ? finalise(y, pr, rm) : y;\r\n    }\r\n\r\n    // x and y are finite, non-zero numbers with the same sign.\r\n\r\n    // Calculate base 1e7 exponents.\r\n    k = mathfloor(x.e / LOG_BASE);\r\n    e = mathfloor(y.e / LOG_BASE);\r\n\r\n    xd = xd.slice();\r\n    i = k - e;\r\n\r\n    // If base 1e7 exponents differ...\r\n    if (i) {\r\n\r\n      if (i < 0) {\r\n        d = xd;\r\n        i = -i;\r\n        len = yd.length;\r\n      } else {\r\n        d = yd;\r\n        e = k;\r\n        len = xd.length;\r\n      }\r\n\r\n      // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n      k = Math.ceil(pr / LOG_BASE);\r\n      len = k > len ? k + 1 : len + 1;\r\n\r\n      if (i > len) {\r\n        i = len;\r\n        d.length = 1;\r\n      }\r\n\r\n      // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n      d.reverse();\r\n      for (; i--;) d.push(0);\r\n      d.reverse();\r\n    }\r\n\r\n    len = xd.length;\r\n    i = yd.length;\r\n\r\n    // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n    if (len - i < 0) {\r\n      i = len;\r\n      d = yd;\r\n      yd = xd;\r\n      xd = d;\r\n    }\r\n\r\n    // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n    for (carry = 0; i;) {\r\n      carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n      xd[i] %= BASE;\r\n    }\r\n\r\n    if (carry) {\r\n      xd.unshift(carry);\r\n      ++e;\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n    for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n    y.d = xd;\r\n    y.e = getBase10Exponent(xd, e);\r\n\r\n    return external ? finalise(y, pr, rm) : y;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the number of significant digits of the value of this Decimal.\r\n   *\r\n   * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n   *\r\n   */\r\n  P.precision = P.sd = function (z) {\r\n    var k,\r\n      x = this;\r\n\r\n    if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n    if (x.d) {\r\n      k = getPrecision(x.d);\r\n      if (z && x.e + 1 > k) k = x.e + 1;\r\n    } else {\r\n      k = NaN;\r\n    }\r\n\r\n    return k;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n   * rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.round = function () {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-1, 1]\r\n   *\r\n   * sin(x) = x - x^3/3! + x^5/5! - ...\r\n   *\r\n   * sin(0)         = 0\r\n   * sin(-0)        = -0\r\n   * sin(Infinity)  = NaN\r\n   * sin(-Infinity) = NaN\r\n   * sin(NaN)       = NaN\r\n   *\r\n   */\r\n  P.sine = P.sin = function () {\r\n    var pr, rm,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.isFinite()) return new Ctor(NaN);\r\n    if (x.isZero()) return new Ctor(x);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n    Ctor.rounding = 1;\r\n\r\n    x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   *  sqrt(-n) =  N\r\n   *  sqrt(N)  =  N\r\n   *  sqrt(-I) =  N\r\n   *  sqrt(I)  =  I\r\n   *  sqrt(0)  =  0\r\n   *  sqrt(-0) = -0\r\n   *\r\n   */\r\n  P.squareRoot = P.sqrt = function () {\r\n    var m, n, sd, r, rep, t,\r\n      x = this,\r\n      d = x.d,\r\n      e = x.e,\r\n      s = x.s,\r\n      Ctor = x.constructor;\r\n\r\n    // Negative/NaN/Infinity/zero?\r\n    if (s !== 1 || !d || !d[0]) {\r\n      return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n    }\r\n\r\n    external = false;\r\n\r\n    // Initial estimate.\r\n    s = Math.sqrt(+x);\r\n\r\n    // Math.sqrt underflow/overflow?\r\n    // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n    if (s == 0 || s == 1 / 0) {\r\n      n = digitsToString(d);\r\n\r\n      if ((n.length + e) % 2 == 0) n += '0';\r\n      s = Math.sqrt(n);\r\n      e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n      if (s == 1 / 0) {\r\n        n = '5e' + e;\r\n      } else {\r\n        n = s.toExponential();\r\n        n = n.slice(0, n.indexOf('e') + 1) + e;\r\n      }\r\n\r\n      r = new Ctor(n);\r\n    } else {\r\n      r = new Ctor(s.toString());\r\n    }\r\n\r\n    sd = (e = Ctor.precision) + 3;\r\n\r\n    // Newton-Raphson iteration.\r\n    for (;;) {\r\n      t = r;\r\n      r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n      // TODO? Replace with for-loop and checkRoundingDigits.\r\n      if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n        n = n.slice(sd - 3, sd + 1);\r\n\r\n        // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n        // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n        if (n == '9999' || !rep && n == '4999') {\r\n\r\n          // On the first iteration only, check to see if rounding up gives the exact result as the\r\n          // nines may infinitely repeat.\r\n          if (!rep) {\r\n            finalise(t, e + 1, 0);\r\n\r\n            if (t.times(t).eq(x)) {\r\n              r = t;\r\n              break;\r\n            }\r\n          }\r\n\r\n          sd += 4;\r\n          rep = 1;\r\n        } else {\r\n\r\n          // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n          // If not, then there are further digits and m will be truthy.\r\n          if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n            // Truncate to the first rounding digit.\r\n            finalise(r, e + 1, 1);\r\n            m = !r.times(r).eq(x);\r\n          }\r\n\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    external = true;\r\n\r\n    return finalise(r, e, Ctor.rounding, m);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-Infinity, Infinity]\r\n   *\r\n   * tan(0)         = 0\r\n   * tan(-0)        = -0\r\n   * tan(Infinity)  = NaN\r\n   * tan(-Infinity) = NaN\r\n   * tan(NaN)       = NaN\r\n   *\r\n   */\r\n  P.tangent = P.tan = function () {\r\n    var pr, rm,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (!x.isFinite()) return new Ctor(NaN);\r\n    if (x.isZero()) return new Ctor(x);\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n    Ctor.precision = pr + 10;\r\n    Ctor.rounding = 1;\r\n\r\n    x = x.sin();\r\n    x.s = 1;\r\n    x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n    Ctor.precision = pr;\r\n    Ctor.rounding = rm;\r\n\r\n    return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n  };\r\n\r\n\r\n  /*\r\n   *  n * 0 = 0\r\n   *  n * N = N\r\n   *  n * I = I\r\n   *  0 * n = 0\r\n   *  0 * 0 = 0\r\n   *  0 * N = N\r\n   *  0 * I = N\r\n   *  N * n = N\r\n   *  N * 0 = N\r\n   *  N * N = N\r\n   *  N * I = N\r\n   *  I * n = I\r\n   *  I * 0 = N\r\n   *  I * N = N\r\n   *  I * I = I\r\n   *\r\n   * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.times = P.mul = function (y) {\r\n    var carry, e, i, k, r, rL, t, xdL, ydL,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      xd = x.d,\r\n      yd = (y = new Ctor(y)).d;\r\n\r\n    y.s *= x.s;\r\n\r\n     // If either is NaN, ±Infinity or ±0...\r\n    if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n      return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n        // Return NaN if either is NaN.\r\n        // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n        ? NaN\r\n\r\n        // Return ±Infinity if either is ±Infinity.\r\n        // Return ±0 if either is ±0.\r\n        : !xd || !yd ? y.s / 0 : y.s * 0);\r\n    }\r\n\r\n    e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n    xdL = xd.length;\r\n    ydL = yd.length;\r\n\r\n    // Ensure xd points to the longer array.\r\n    if (xdL < ydL) {\r\n      r = xd;\r\n      xd = yd;\r\n      yd = r;\r\n      rL = xdL;\r\n      xdL = ydL;\r\n      ydL = rL;\r\n    }\r\n\r\n    // Initialise the result array with zeros.\r\n    r = [];\r\n    rL = xdL + ydL;\r\n    for (i = rL; i--;) r.push(0);\r\n\r\n    // Multiply!\r\n    for (i = ydL; --i >= 0;) {\r\n      carry = 0;\r\n      for (k = xdL + i; k > i;) {\r\n        t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n        r[k--] = t % BASE | 0;\r\n        carry = t / BASE | 0;\r\n      }\r\n\r\n      r[k] = (r[k] + carry) % BASE | 0;\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (; !r[--rL];) r.pop();\r\n\r\n    if (carry) ++e;\r\n    else r.shift();\r\n\r\n    y.d = r;\r\n    y.e = getBase10Exponent(r, e);\r\n\r\n    return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n   * digits using rounding mode `rm`.\r\n   *\r\n   * If the optional `sd` argument is present then return binary exponential notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toBinary = function (sd, rm) {\r\n    return toStringBinary(this, 2, sd, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n   * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n   *\r\n   * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    x = new Ctor(x);\r\n    if (dp === void 0) return x;\r\n\r\n    checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n    if (rm === void 0) rm = Ctor.rounding;\r\n    else checkInt32(rm, 0, 8);\r\n\r\n    return finalise(x, dp + x.e + 1, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in exponential notation rounded to\r\n   * `dp` fixed decimal places using rounding mode `rounding`.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toExponential = function (dp, rm) {\r\n    var str,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (dp === void 0) {\r\n      str = finiteToString(x, true);\r\n    } else {\r\n      checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n\r\n      x = finalise(new Ctor(x), dp + 1, rm);\r\n      str = finiteToString(x, true, dp + 1);\r\n    }\r\n\r\n    return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n   * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n   * omitted.\r\n   *\r\n   * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n   * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n   * (-0).toFixed(3) is '0.000'.\r\n   * (-0.5).toFixed(0) is '-0'.\r\n   *\r\n   */\r\n  P.toFixed = function (dp, rm) {\r\n    var str, y,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (dp === void 0) {\r\n      str = finiteToString(x);\r\n    } else {\r\n      checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n\r\n      y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n      str = finiteToString(y, false, dp + y.e + 1);\r\n    }\r\n\r\n    // To determine whether to add the minus sign look at the value before it was rounded,\r\n    // i.e. look at `x` rather than `y`.\r\n    return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n   * numerator and an integer denominator.\r\n   *\r\n   * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n   * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n   * value necessary to represent the number exactly.\r\n   *\r\n   * [maxD] {number|string|bigint|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n   *\r\n   */\r\n  P.toFraction = function (maxD) {\r\n    var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n      x = this,\r\n      xd = x.d,\r\n      Ctor = x.constructor;\r\n\r\n    if (!xd) return new Ctor(x);\r\n\r\n    n1 = d0 = new Ctor(1);\r\n    d1 = n0 = new Ctor(0);\r\n\r\n    d = new Ctor(d1);\r\n    e = d.e = getPrecision(xd) - x.e - 1;\r\n    k = e % LOG_BASE;\r\n    d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n    if (maxD == null) {\r\n\r\n      // d is 10**e, the minimum max-denominator needed.\r\n      maxD = e > 0 ? d : n1;\r\n    } else {\r\n      n = new Ctor(maxD);\r\n      if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n      maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n    }\r\n\r\n    external = false;\r\n    n = new Ctor(digitsToString(xd));\r\n    pr = Ctor.precision;\r\n    Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n    for (;;)  {\r\n      q = divide(n, d, 0, 1, 1);\r\n      d2 = d0.plus(q.times(d1));\r\n      if (d2.cmp(maxD) == 1) break;\r\n      d0 = d1;\r\n      d1 = d2;\r\n      d2 = n1;\r\n      n1 = n0.plus(q.times(d2));\r\n      n0 = d2;\r\n      d2 = d;\r\n      d = n.minus(q.times(d2));\r\n      n = d2;\r\n    }\r\n\r\n    d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n    n0 = n0.plus(d2.times(n1));\r\n    d0 = d0.plus(d2.times(d1));\r\n    n0.s = n1.s = x.s;\r\n\r\n    // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n    r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n        ? [n1, d1] : [n0, d0];\r\n\r\n    Ctor.precision = pr;\r\n    external = true;\r\n\r\n    return r;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n   * digits using rounding mode `rm`.\r\n   *\r\n   * If the optional `sd` argument is present then return binary exponential notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toHexadecimal = P.toHex = function (sd, rm) {\r\n    return toStringBinary(this, 16, sd, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n   * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n   *\r\n   * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n   * or `y` is NaN, in which case the return value will be also be NaN.\r\n   *\r\n   * The return value is not affected by the value of `precision`.\r\n   *\r\n   * y {number|string|bigint|Decimal} The magnitude to round to a multiple of.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * 'toNearest() rounding mode not an integer: {rm}'\r\n   * 'toNearest() rounding mode out of range: {rm}'\r\n   *\r\n   */\r\n  P.toNearest = function (y, rm) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    x = new Ctor(x);\r\n\r\n    if (y == null) {\r\n\r\n      // If x is not finite, return x.\r\n      if (!x.d) return x;\r\n\r\n      y = new Ctor(1);\r\n      rm = Ctor.rounding;\r\n    } else {\r\n      y = new Ctor(y);\r\n      if (rm === void 0) {\r\n        rm = Ctor.rounding;\r\n      } else {\r\n        checkInt32(rm, 0, 8);\r\n      }\r\n\r\n      // If x is not finite, return x if y is not NaN, else NaN.\r\n      if (!x.d) return y.s ? x : y;\r\n\r\n      // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n      if (!y.d) {\r\n        if (y.s) y.s = x.s;\r\n        return y;\r\n      }\r\n    }\r\n\r\n    // If y is not zero, calculate the nearest multiple of y to x.\r\n    if (y.d[0]) {\r\n      external = false;\r\n      x = divide(x, y, 0, rm, 1).times(y);\r\n      external = true;\r\n      finalise(x);\r\n\r\n    // If y is zero, return zero with the sign of x.\r\n    } else {\r\n      y.s = x.s;\r\n      x = y;\r\n    }\r\n\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the value of this Decimal converted to a number primitive.\r\n   * Zero keeps its sign.\r\n   *\r\n   */\r\n  P.toNumber = function () {\r\n    return +this;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n   * digits using rounding mode `rm`.\r\n   *\r\n   * If the optional `sd` argument is present then return binary exponential notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toOctal = function (sd, rm) {\r\n    return toStringBinary(this, 8, sd, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n   * to `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * ECMAScript compliant.\r\n   *\r\n   *   pow(x, NaN)                           = NaN\r\n   *   pow(x, ±0)                            = 1\r\n\r\n   *   pow(NaN, non-zero)                    = NaN\r\n   *   pow(abs(x) > 1, +Infinity)            = +Infinity\r\n   *   pow(abs(x) > 1, -Infinity)            = +0\r\n   *   pow(abs(x) == 1, ±Infinity)           = NaN\r\n   *   pow(abs(x) < 1, +Infinity)            = +0\r\n   *   pow(abs(x) < 1, -Infinity)            = +Infinity\r\n   *   pow(+Infinity, y > 0)                 = +Infinity\r\n   *   pow(+Infinity, y < 0)                 = +0\r\n   *   pow(-Infinity, odd integer > 0)       = -Infinity\r\n   *   pow(-Infinity, even integer > 0)      = +Infinity\r\n   *   pow(-Infinity, odd integer < 0)       = -0\r\n   *   pow(-Infinity, even integer < 0)      = +0\r\n   *   pow(+0, y > 0)                        = +0\r\n   *   pow(+0, y < 0)                        = +Infinity\r\n   *   pow(-0, odd integer > 0)              = -0\r\n   *   pow(-0, even integer > 0)             = +0\r\n   *   pow(-0, odd integer < 0)              = -Infinity\r\n   *   pow(-0, even integer < 0)             = +Infinity\r\n   *   pow(finite x < 0, finite non-integer) = NaN\r\n   *\r\n   * For non-integer or very large exponents pow(x, y) is calculated using\r\n   *\r\n   *   x^y = exp(y*ln(x))\r\n   *\r\n   * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n   * probability of an incorrectly rounded result\r\n   * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n   * i.e. 1 in 250,000,000,000,000\r\n   *\r\n   * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n   *\r\n   * y {number|string|bigint|Decimal} The power to which to raise this Decimal.\r\n   *\r\n   */\r\n  P.toPower = P.pow = function (y) {\r\n    var e, k, pr, r, rm, s,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      yn = +(y = new Ctor(y));\r\n\r\n    // Either ±Infinity, NaN or ±0?\r\n    if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n    x = new Ctor(x);\r\n\r\n    if (x.eq(1)) return x;\r\n\r\n    pr = Ctor.precision;\r\n    rm = Ctor.rounding;\r\n\r\n    if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n    // y exponent\r\n    e = mathfloor(y.e / LOG_BASE);\r\n\r\n    // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n    if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n      r = intPow(Ctor, x, k, pr);\r\n      return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n    }\r\n\r\n    s = x.s;\r\n\r\n    // if x is negative\r\n    if (s < 0) {\r\n\r\n      // if y is not an integer\r\n      if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n      // Result is positive if x is negative and the last digit of integer y is even.\r\n      if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n      // if x.eq(-1)\r\n      if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n        x.s = s;\r\n        return x;\r\n      }\r\n    }\r\n\r\n    // Estimate result exponent.\r\n    // x^y = 10^e,  where e = y * log10(x)\r\n    // log10(x) = log10(x_significand) + x_exponent\r\n    // log10(x_significand) = ln(x_significand) / ln(10)\r\n    k = mathpow(+x, yn);\r\n    e = k == 0 || !isFinite(k)\r\n      ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n      : new Ctor(k + '').e;\r\n\r\n    // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n    // Overflow/underflow?\r\n    if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n    external = false;\r\n    Ctor.rounding = x.s = 1;\r\n\r\n    // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n    // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n    // new Decimal(2.32456).pow('2087987436534566.46411')\r\n    // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n    k = Math.min(12, (e + '').length);\r\n\r\n    // r = x^y = exp(y*ln(x))\r\n    r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n    // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n    if (r.d) {\r\n\r\n      // Truncate to the required precision plus five rounding digits.\r\n      r = finalise(r, pr + 5, 1);\r\n\r\n      // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n      // the result.\r\n      if (checkRoundingDigits(r.d, pr, rm)) {\r\n        e = pr + 10;\r\n\r\n        // Truncate to the increased precision plus five rounding digits.\r\n        r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n        // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n        if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n          r = finalise(r, pr + 1, 0);\r\n        }\r\n      }\r\n    }\r\n\r\n    r.s = s;\r\n    external = true;\r\n    Ctor.rounding = rm;\r\n\r\n    return finalise(r, pr, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n   * using rounding mode `rounding`.\r\n   *\r\n   * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n   * the integer part of the value in normal notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toPrecision = function (sd, rm) {\r\n    var str,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (sd === void 0) {\r\n      str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n    } else {\r\n      checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n\r\n      x = finalise(new Ctor(x), sd, rm);\r\n      str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n    }\r\n\r\n    return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n   * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n   * omitted.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * 'toSD() digits out of range: {sd}'\r\n   * 'toSD() digits not an integer: {sd}'\r\n   * 'toSD() rounding mode not an integer: {rm}'\r\n   * 'toSD() rounding mode out of range: {rm}'\r\n   *\r\n   */\r\n  P.toSignificantDigits = P.toSD = function (sd, rm) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (sd === void 0) {\r\n      sd = Ctor.precision;\r\n      rm = Ctor.rounding;\r\n    } else {\r\n      checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n    }\r\n\r\n    return finalise(new Ctor(x), sd, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal.\r\n   *\r\n   * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n   * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n   *\r\n   */\r\n  P.toString = function () {\r\n    var x = this,\r\n      Ctor = x.constructor,\r\n      str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n    return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n   *\r\n   */\r\n  P.truncated = P.trunc = function () {\r\n    return finalise(new this.constructor(this), this.e + 1, 1);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal.\r\n   * Unlike `toString`, negative zero will include the minus sign.\r\n   *\r\n   */\r\n  P.valueOf = P.toJSON = function () {\r\n    var x = this,\r\n      Ctor = x.constructor,\r\n      str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n    return x.isNeg() ? '-' + str : str;\r\n  };\r\n\r\n\r\n  // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n  /*\r\n   *  digitsToString           P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n   *                           finiteToString, naturalExponential, naturalLogarithm\r\n   *  checkInt32               P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n   *                           P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n   *  checkRoundingDigits      P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n   *  convertBase              toStringBinary, parseOther\r\n   *  cos                      P.cos\r\n   *  divide                   P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n   *                           P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n   *                           P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n   *                           taylorSeries, atan2, parseOther\r\n   *  finalise                 P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n   *                           P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n   *                           P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n   *                           P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n   *                           P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n   *                           P.truncated, divide, getLn10, getPi, naturalExponential,\r\n   *                           naturalLogarithm, ceil, floor, round, trunc\r\n   *  finiteToString           P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n   *                           toStringBinary\r\n   *  getBase10Exponent        P.minus, P.plus, P.times, parseOther\r\n   *  getLn10                  P.logarithm, naturalLogarithm\r\n   *  getPi                    P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n   *  getPrecision             P.precision, P.toFraction\r\n   *  getZeroString            digitsToString, finiteToString\r\n   *  intPow                   P.toPower, parseOther\r\n   *  isOdd                    toLessThanHalfPi\r\n   *  maxOrMin                 max, min\r\n   *  naturalExponential       P.naturalExponential, P.toPower\r\n   *  naturalLogarithm         P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n   *                           P.toPower, naturalExponential\r\n   *  nonFiniteToString        finiteToString, toStringBinary\r\n   *  parseDecimal             Decimal\r\n   *  parseOther               Decimal\r\n   *  sin                      P.sin\r\n   *  taylorSeries             P.cosh, P.sinh, cos, sin\r\n   *  toLessThanHalfPi         P.cos, P.sin\r\n   *  toStringBinary           P.toBinary, P.toHexadecimal, P.toOctal\r\n   *  truncate                 intPow\r\n   *\r\n   *  Throws:                  P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n   *                           naturalLogarithm, config, parseOther, random, Decimal\r\n   */\r\n\r\n\r\n  function digitsToString(d) {\r\n    var i, k, ws,\r\n      indexOfLastWord = d.length - 1,\r\n      str = '',\r\n      w = d[0];\r\n\r\n    if (indexOfLastWord > 0) {\r\n      str += w;\r\n      for (i = 1; i < indexOfLastWord; i++) {\r\n        ws = d[i] + '';\r\n        k = LOG_BASE - ws.length;\r\n        if (k) str += getZeroString(k);\r\n        str += ws;\r\n      }\r\n\r\n      w = d[i];\r\n      ws = w + '';\r\n      k = LOG_BASE - ws.length;\r\n      if (k) str += getZeroString(k);\r\n    } else if (w === 0) {\r\n      return '0';\r\n    }\r\n\r\n    // Remove trailing zeros of last w.\r\n    for (; w % 10 === 0;) w /= 10;\r\n\r\n    return str + w;\r\n  }\r\n\r\n\r\n  function checkInt32(i, min, max) {\r\n    if (i !== ~~i || i < min || i > max) {\r\n      throw Error(invalidArgument + i);\r\n    }\r\n  }\r\n\r\n\r\n  /*\r\n   * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n   * `repeating == null` if caller is `log` or `pow`,\r\n   * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n   */\r\n  function checkRoundingDigits(d, i, rm, repeating) {\r\n    var di, k, r, rd;\r\n\r\n    // Get the length of the first word of the array d.\r\n    for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n    // Is the rounding digit in the first word of d?\r\n    if (--i < 0) {\r\n      i += LOG_BASE;\r\n      di = 0;\r\n    } else {\r\n      di = Math.ceil((i + 1) / LOG_BASE);\r\n      i %= LOG_BASE;\r\n    }\r\n\r\n    // i is the index (0 - 6) of the rounding digit.\r\n    // E.g. if within the word 3487563 the first rounding digit is 5,\r\n    // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n    k = mathpow(10, LOG_BASE - i);\r\n    rd = d[di] % k | 0;\r\n\r\n    if (repeating == null) {\r\n      if (i < 3) {\r\n        if (i == 0) rd = rd / 100 | 0;\r\n        else if (i == 1) rd = rd / 10 | 0;\r\n        r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n      } else {\r\n        r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n          (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n            (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n      }\r\n    } else {\r\n      if (i < 4) {\r\n        if (i == 0) rd = rd / 1000 | 0;\r\n        else if (i == 1) rd = rd / 100 | 0;\r\n        else if (i == 2) rd = rd / 10 | 0;\r\n        r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n      } else {\r\n        r = ((repeating || rm < 4) && rd + 1 == k ||\r\n        (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n          (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n      }\r\n    }\r\n\r\n    return r;\r\n  }\r\n\r\n\r\n  // Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n  // Eg. convertBase('255', 10, 16) returns [15, 15].\r\n  // Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\n  function convertBase(str, baseIn, baseOut) {\r\n    var j,\r\n      arr = [0],\r\n      arrL,\r\n      i = 0,\r\n      strL = str.length;\r\n\r\n    for (; i < strL;) {\r\n      for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n      arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n      for (j = 0; j < arr.length; j++) {\r\n        if (arr[j] > baseOut - 1) {\r\n          if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n          arr[j + 1] += arr[j] / baseOut | 0;\r\n          arr[j] %= baseOut;\r\n        }\r\n      }\r\n    }\r\n\r\n    return arr.reverse();\r\n  }\r\n\r\n\r\n  /*\r\n   * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n   * |x| < pi/2\r\n   *\r\n   */\r\n  function cosine(Ctor, x) {\r\n    var k, len, y;\r\n\r\n    if (x.isZero()) return x;\r\n\r\n    // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n    // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n    // Estimate the optimum number of times to use the argument reduction.\r\n    len = x.d.length;\r\n    if (len < 32) {\r\n      k = Math.ceil(len / 3);\r\n      y = (1 / tinyPow(4, k)).toString();\r\n    } else {\r\n      k = 16;\r\n      y = '2.3283064365386962890625e-10';\r\n    }\r\n\r\n    Ctor.precision += k;\r\n\r\n    x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n    // Reverse argument reduction\r\n    for (var i = k; i--;) {\r\n      var cos2x = x.times(x);\r\n      x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n    }\r\n\r\n    Ctor.precision -= k;\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * Perform division in the specified base.\r\n   */\r\n  var divide = (function () {\r\n\r\n    // Assumes non-zero x and k, and hence non-zero result.\r\n    function multiplyInteger(x, k, base) {\r\n      var temp,\r\n        carry = 0,\r\n        i = x.length;\r\n\r\n      for (x = x.slice(); i--;) {\r\n        temp = x[i] * k + carry;\r\n        x[i] = temp % base | 0;\r\n        carry = temp / base | 0;\r\n      }\r\n\r\n      if (carry) x.unshift(carry);\r\n\r\n      return x;\r\n    }\r\n\r\n    function compare(a, b, aL, bL) {\r\n      var i, r;\r\n\r\n      if (aL != bL) {\r\n        r = aL > bL ? 1 : -1;\r\n      } else {\r\n        for (i = r = 0; i < aL; i++) {\r\n          if (a[i] != b[i]) {\r\n            r = a[i] > b[i] ? 1 : -1;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n\r\n      return r;\r\n    }\r\n\r\n    function subtract(a, b, aL, base) {\r\n      var i = 0;\r\n\r\n      // Subtract b from a.\r\n      for (; aL--;) {\r\n        a[aL] -= i;\r\n        i = a[aL] < b[aL] ? 1 : 0;\r\n        a[aL] = i * base + a[aL] - b[aL];\r\n      }\r\n\r\n      // Remove leading zeros.\r\n      for (; !a[0] && a.length > 1;) a.shift();\r\n    }\r\n\r\n    return function (x, y, pr, rm, dp, base) {\r\n      var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n        yL, yz,\r\n        Ctor = x.constructor,\r\n        sign = x.s == y.s ? 1 : -1,\r\n        xd = x.d,\r\n        yd = y.d;\r\n\r\n      // Either NaN, Infinity or 0?\r\n      if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n        return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n          !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n          // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n          xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n      }\r\n\r\n      if (base) {\r\n        logBase = 1;\r\n        e = x.e - y.e;\r\n      } else {\r\n        base = BASE;\r\n        logBase = LOG_BASE;\r\n        e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n      }\r\n\r\n      yL = yd.length;\r\n      xL = xd.length;\r\n      q = new Ctor(sign);\r\n      qd = q.d = [];\r\n\r\n      // Result exponent may be one less than e.\r\n      // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n      for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n      if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n      if (pr == null) {\r\n        sd = pr = Ctor.precision;\r\n        rm = Ctor.rounding;\r\n      } else if (dp) {\r\n        sd = pr + (x.e - y.e) + 1;\r\n      } else {\r\n        sd = pr;\r\n      }\r\n\r\n      if (sd < 0) {\r\n        qd.push(1);\r\n        more = true;\r\n      } else {\r\n\r\n        // Convert precision in number of base 10 digits to base 1e7 digits.\r\n        sd = sd / logBase + 2 | 0;\r\n        i = 0;\r\n\r\n        // divisor < 1e7\r\n        if (yL == 1) {\r\n          k = 0;\r\n          yd = yd[0];\r\n          sd++;\r\n\r\n          // k is the carry.\r\n          for (; (i < xL || k) && sd--; i++) {\r\n            t = k * base + (xd[i] || 0);\r\n            qd[i] = t / yd | 0;\r\n            k = t % yd | 0;\r\n          }\r\n\r\n          more = k || i < xL;\r\n\r\n        // divisor >= 1e7\r\n        } else {\r\n\r\n          // Normalise xd and yd so highest order digit of yd is >= base/2\r\n          k = base / (yd[0] + 1) | 0;\r\n\r\n          if (k > 1) {\r\n            yd = multiplyInteger(yd, k, base);\r\n            xd = multiplyInteger(xd, k, base);\r\n            yL = yd.length;\r\n            xL = xd.length;\r\n          }\r\n\r\n          xi = yL;\r\n          rem = xd.slice(0, yL);\r\n          remL = rem.length;\r\n\r\n          // Add zeros to make remainder as long as divisor.\r\n          for (; remL < yL;) rem[remL++] = 0;\r\n\r\n          yz = yd.slice();\r\n          yz.unshift(0);\r\n          yd0 = yd[0];\r\n\r\n          if (yd[1] >= base / 2) ++yd0;\r\n\r\n          do {\r\n            k = 0;\r\n\r\n            // Compare divisor and remainder.\r\n            cmp = compare(yd, rem, yL, remL);\r\n\r\n            // If divisor < remainder.\r\n            if (cmp < 0) {\r\n\r\n              // Calculate trial digit, k.\r\n              rem0 = rem[0];\r\n              if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n              // k will be how many times the divisor goes into the current remainder.\r\n              k = rem0 / yd0 | 0;\r\n\r\n              //  Algorithm:\r\n              //  1. product = divisor * trial digit (k)\r\n              //  2. if product > remainder: product -= divisor, k--\r\n              //  3. remainder -= product\r\n              //  4. if product was < remainder at 2:\r\n              //    5. compare new remainder and divisor\r\n              //    6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n              if (k > 1) {\r\n                if (k >= base) k = base - 1;\r\n\r\n                // product = divisor * trial digit.\r\n                prod = multiplyInteger(yd, k, base);\r\n                prodL = prod.length;\r\n                remL = rem.length;\r\n\r\n                // Compare product and remainder.\r\n                cmp = compare(prod, rem, prodL, remL);\r\n\r\n                // product > remainder.\r\n                if (cmp == 1) {\r\n                  k--;\r\n\r\n                  // Subtract divisor from product.\r\n                  subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n                }\r\n              } else {\r\n\r\n                // cmp is -1.\r\n                // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n                // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n                if (k == 0) cmp = k = 1;\r\n                prod = yd.slice();\r\n              }\r\n\r\n              prodL = prod.length;\r\n              if (prodL < remL) prod.unshift(0);\r\n\r\n              // Subtract product from remainder.\r\n              subtract(rem, prod, remL, base);\r\n\r\n              // If product was < previous remainder.\r\n              if (cmp == -1) {\r\n                remL = rem.length;\r\n\r\n                // Compare divisor and new remainder.\r\n                cmp = compare(yd, rem, yL, remL);\r\n\r\n                // If divisor < new remainder, subtract divisor from remainder.\r\n                if (cmp < 1) {\r\n                  k++;\r\n\r\n                  // Subtract divisor from remainder.\r\n                  subtract(rem, yL < remL ? yz : yd, remL, base);\r\n                }\r\n              }\r\n\r\n              remL = rem.length;\r\n            } else if (cmp === 0) {\r\n              k++;\r\n              rem = [0];\r\n            }    // if cmp === 1, k will be 0\r\n\r\n            // Add the next digit, k, to the result array.\r\n            qd[i++] = k;\r\n\r\n            // Update the remainder.\r\n            if (cmp && rem[0]) {\r\n              rem[remL++] = xd[xi] || 0;\r\n            } else {\r\n              rem = [xd[xi]];\r\n              remL = 1;\r\n            }\r\n\r\n          } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n          more = rem[0] !== void 0;\r\n        }\r\n\r\n        // Leading zero?\r\n        if (!qd[0]) qd.shift();\r\n      }\r\n\r\n      // logBase is 1 when divide is being used for base conversion.\r\n      if (logBase == 1) {\r\n        q.e = e;\r\n        inexact = more;\r\n      } else {\r\n\r\n        // To calculate q.e, first get the number of digits of qd[0].\r\n        for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n        q.e = i + e * logBase - 1;\r\n\r\n        finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n      }\r\n\r\n      return q;\r\n    };\r\n  })();\r\n\r\n\r\n  /*\r\n   * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n   * Check for over/under-flow.\r\n   */\r\n   function finalise(x, sd, rm, isTruncated) {\r\n    var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n      Ctor = x.constructor;\r\n\r\n    // Don't round if sd is null or undefined.\r\n    out: if (sd != null) {\r\n      xd = x.d;\r\n\r\n      // Infinity/NaN.\r\n      if (!xd) return x;\r\n\r\n      // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n      // w: the word of xd containing rd, a base 1e7 number.\r\n      // xdi: the index of w within xd.\r\n      // digits: the number of digits of w.\r\n      // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n      // they had leading zeros)\r\n      // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n      // Get the length of the first word of the digits array xd.\r\n      for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n      i = sd - digits;\r\n\r\n      // Is the rounding digit in the first word of xd?\r\n      if (i < 0) {\r\n        i += LOG_BASE;\r\n        j = sd;\r\n        w = xd[xdi = 0];\r\n\r\n        // Get the rounding digit at index j of w.\r\n        rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n      } else {\r\n        xdi = Math.ceil((i + 1) / LOG_BASE);\r\n        k = xd.length;\r\n        if (xdi >= k) {\r\n          if (isTruncated) {\r\n\r\n            // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n            for (; k++ <= xdi;) xd.push(0);\r\n            w = rd = 0;\r\n            digits = 1;\r\n            i %= LOG_BASE;\r\n            j = i - LOG_BASE + 1;\r\n          } else {\r\n            break out;\r\n          }\r\n        } else {\r\n          w = k = xd[xdi];\r\n\r\n          // Get the number of digits of w.\r\n          for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n          // Get the index of rd within w.\r\n          i %= LOG_BASE;\r\n\r\n          // Get the index of rd within w, adjusted for leading zeros.\r\n          // The number of leading zeros of w is given by LOG_BASE - digits.\r\n          j = i - LOG_BASE + digits;\r\n\r\n          // Get the rounding digit at index j of w.\r\n          rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n        }\r\n      }\r\n\r\n      // Are there any non-zero digits after the rounding digit?\r\n      isTruncated = isTruncated || sd < 0 ||\r\n        xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n      // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n      // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n      // will give 714.\r\n\r\n      roundUp = rm < 4\r\n        ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n        : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n          // Check whether the digit to the left of the rounding digit is odd.\r\n          ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n            rm == (x.s < 0 ? 8 : 7));\r\n\r\n      if (sd < 1 || !xd[0]) {\r\n        xd.length = 0;\r\n        if (roundUp) {\r\n\r\n          // Convert sd to decimal places.\r\n          sd -= x.e + 1;\r\n\r\n          // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n          xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n          x.e = -sd || 0;\r\n        } else {\r\n\r\n          // Zero.\r\n          xd[0] = x.e = 0;\r\n        }\r\n\r\n        return x;\r\n      }\r\n\r\n      // Remove excess digits.\r\n      if (i == 0) {\r\n        xd.length = xdi;\r\n        k = 1;\r\n        xdi--;\r\n      } else {\r\n        xd.length = xdi + 1;\r\n        k = mathpow(10, LOG_BASE - i);\r\n\r\n        // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n        // j > 0 means i > number of leading zeros of w.\r\n        xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n      }\r\n\r\n      if (roundUp) {\r\n        for (;;) {\r\n\r\n          // Is the digit to be rounded up in the first word of xd?\r\n          if (xdi == 0) {\r\n\r\n            // i will be the length of xd[0] before k is added.\r\n            for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n            j = xd[0] += k;\r\n            for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n            // if i != k the length has increased.\r\n            if (i != k) {\r\n              x.e++;\r\n              if (xd[0] == BASE) xd[0] = 1;\r\n            }\r\n\r\n            break;\r\n          } else {\r\n            xd[xdi] += k;\r\n            if (xd[xdi] != BASE) break;\r\n            xd[xdi--] = 0;\r\n            k = 1;\r\n          }\r\n        }\r\n      }\r\n\r\n      // Remove trailing zeros.\r\n      for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n    }\r\n\r\n    if (external) {\r\n\r\n      // Overflow?\r\n      if (x.e > Ctor.maxE) {\r\n\r\n        // Infinity.\r\n        x.d = null;\r\n        x.e = NaN;\r\n\r\n      // Underflow?\r\n      } else if (x.e < Ctor.minE) {\r\n\r\n        // Zero.\r\n        x.e = 0;\r\n        x.d = [0];\r\n        // Ctor.underflow = true;\r\n      } // else Ctor.underflow = false;\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  function finiteToString(x, isExp, sd) {\r\n    if (!x.isFinite()) return nonFiniteToString(x);\r\n    var k,\r\n      e = x.e,\r\n      str = digitsToString(x.d),\r\n      len = str.length;\r\n\r\n    if (isExp) {\r\n      if (sd && (k = sd - len) > 0) {\r\n        str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n      } else if (len > 1) {\r\n        str = str.charAt(0) + '.' + str.slice(1);\r\n      }\r\n\r\n      str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n    } else if (e < 0) {\r\n      str = '0.' + getZeroString(-e - 1) + str;\r\n      if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n    } else if (e >= len) {\r\n      str += getZeroString(e + 1 - len);\r\n      if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n    } else {\r\n      if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n      if (sd && (k = sd - len) > 0) {\r\n        if (e + 1 === len) str += '.';\r\n        str += getZeroString(k);\r\n      }\r\n    }\r\n\r\n    return str;\r\n  }\r\n\r\n\r\n  // Calculate the base 10 exponent from the base 1e7 exponent.\r\n  function getBase10Exponent(digits, e) {\r\n    var w = digits[0];\r\n\r\n    // Add the number of digits of the first word of the digits array.\r\n    for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n    return e;\r\n  }\r\n\r\n\r\n  function getLn10(Ctor, sd, pr) {\r\n    if (sd > LN10_PRECISION) {\r\n\r\n      // Reset global state in case the exception is caught.\r\n      external = true;\r\n      if (pr) Ctor.precision = pr;\r\n      throw Error(precisionLimitExceeded);\r\n    }\r\n    return finalise(new Ctor(LN10), sd, 1, true);\r\n  }\r\n\r\n\r\n  function getPi(Ctor, sd, rm) {\r\n    if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n    return finalise(new Ctor(PI), sd, rm, true);\r\n  }\r\n\r\n\r\n  function getPrecision(digits) {\r\n    var w = digits.length - 1,\r\n      len = w * LOG_BASE + 1;\r\n\r\n    w = digits[w];\r\n\r\n    // If non-zero...\r\n    if (w) {\r\n\r\n      // Subtract the number of trailing zeros of the last word.\r\n      for (; w % 10 == 0; w /= 10) len--;\r\n\r\n      // Add the number of digits of the first word.\r\n      for (w = digits[0]; w >= 10; w /= 10) len++;\r\n    }\r\n\r\n    return len;\r\n  }\r\n\r\n\r\n  function getZeroString(k) {\r\n    var zs = '';\r\n    for (; k--;) zs += '0';\r\n    return zs;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n   * integer of type number.\r\n   *\r\n   * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n   *\r\n   */\r\n  function intPow(Ctor, x, n, pr) {\r\n    var isTruncated,\r\n      r = new Ctor(1),\r\n\r\n      // Max n of 9007199254740991 takes 53 loop iterations.\r\n      // Maximum digits array length; leaves [28, 34] guard digits.\r\n      k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n    external = false;\r\n\r\n    for (;;) {\r\n      if (n % 2) {\r\n        r = r.times(x);\r\n        if (truncate(r.d, k)) isTruncated = true;\r\n      }\r\n\r\n      n = mathfloor(n / 2);\r\n      if (n === 0) {\r\n\r\n        // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n        n = r.d.length - 1;\r\n        if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n        break;\r\n      }\r\n\r\n      x = x.times(x);\r\n      truncate(x.d, k);\r\n    }\r\n\r\n    external = true;\r\n\r\n    return r;\r\n  }\r\n\r\n\r\n  function isOdd(n) {\r\n    return n.d[n.d.length - 1] & 1;\r\n  }\r\n\r\n\r\n  /*\r\n   * Handle `max` (`n` is -1) and `min` (`n` is 1).\r\n   */\r\n  function maxOrMin(Ctor, args, n) {\r\n    var k, y,\r\n      x = new Ctor(args[0]),\r\n      i = 0;\r\n\r\n    for (; ++i < args.length;) {\r\n      y = new Ctor(args[i]);\r\n\r\n      // NaN?\r\n      if (!y.s) {\r\n        x = y;\r\n        break;\r\n      }\r\n\r\n      k = x.cmp(y);\r\n\r\n      if (k === n || k === 0 && x.s === n) {\r\n        x = y;\r\n      }\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n   * digits.\r\n   *\r\n   * Taylor/Maclaurin series.\r\n   *\r\n   * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n   *\r\n   * Argument reduction:\r\n   *   Repeat x = x / 32, k += 5, until |x| < 0.1\r\n   *   exp(x) = exp(x / 2^k)^(2^k)\r\n   *\r\n   * Previously, the argument was initially reduced by\r\n   * exp(x) = exp(r) * 10^k  where r = x - k * ln10, k = floor(x / ln10)\r\n   * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n   * found to be slower than just dividing repeatedly by 32 as above.\r\n   *\r\n   * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n   * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n   * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n   *\r\n   *  exp(Infinity)  = Infinity\r\n   *  exp(-Infinity) = 0\r\n   *  exp(NaN)       = NaN\r\n   *  exp(±0)        = 1\r\n   *\r\n   *  exp(x) is non-terminating for any finite, non-zero x.\r\n   *\r\n   *  The result will always be correctly rounded.\r\n   *\r\n   */\r\n  function naturalExponential(x, sd) {\r\n    var denominator, guard, j, pow, sum, t, wpr,\r\n      rep = 0,\r\n      i = 0,\r\n      k = 0,\r\n      Ctor = x.constructor,\r\n      rm = Ctor.rounding,\r\n      pr = Ctor.precision;\r\n\r\n    // 0/NaN/Infinity?\r\n    if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n      return new Ctor(x.d\r\n        ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n        : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n    }\r\n\r\n    if (sd == null) {\r\n      external = false;\r\n      wpr = pr;\r\n    } else {\r\n      wpr = sd;\r\n    }\r\n\r\n    t = new Ctor(0.03125);\r\n\r\n    // while abs(x) >= 0.1\r\n    while (x.e > -2) {\r\n\r\n      // x = x / 2^5\r\n      x = x.times(t);\r\n      k += 5;\r\n    }\r\n\r\n    // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n    // necessary to ensure the first 4 rounding digits are correct.\r\n    guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n    wpr += guard;\r\n    denominator = pow = sum = new Ctor(1);\r\n    Ctor.precision = wpr;\r\n\r\n    for (;;) {\r\n      pow = finalise(pow.times(x), wpr, 1);\r\n      denominator = denominator.times(++i);\r\n      t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n        j = k;\r\n        while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n        // Check to see if the first 4 rounding digits are [49]999.\r\n        // If so, repeat the summation with a higher precision, otherwise\r\n        // e.g. with precision: 18, rounding: 1\r\n        // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n        // `wpr - guard` is the index of first rounding digit.\r\n        if (sd == null) {\r\n\r\n          if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n            Ctor.precision = wpr += 10;\r\n            denominator = pow = t = new Ctor(1);\r\n            i = 0;\r\n            rep++;\r\n          } else {\r\n            return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n          }\r\n        } else {\r\n          Ctor.precision = pr;\r\n          return sum;\r\n        }\r\n      }\r\n\r\n      sum = t;\r\n    }\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n   * digits.\r\n   *\r\n   *  ln(-n)        = NaN\r\n   *  ln(0)         = -Infinity\r\n   *  ln(-0)        = -Infinity\r\n   *  ln(1)         = 0\r\n   *  ln(Infinity)  = Infinity\r\n   *  ln(-Infinity) = NaN\r\n   *  ln(NaN)       = NaN\r\n   *\r\n   *  ln(n) (n != 1) is non-terminating.\r\n   *\r\n   */\r\n  function naturalLogarithm(y, sd) {\r\n    var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n      n = 1,\r\n      guard = 10,\r\n      x = y,\r\n      xd = x.d,\r\n      Ctor = x.constructor,\r\n      rm = Ctor.rounding,\r\n      pr = Ctor.precision;\r\n\r\n    // Is x negative or Infinity, NaN, 0 or 1?\r\n    if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n      return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n    }\r\n\r\n    if (sd == null) {\r\n      external = false;\r\n      wpr = pr;\r\n    } else {\r\n      wpr = sd;\r\n    }\r\n\r\n    Ctor.precision = wpr += guard;\r\n    c = digitsToString(xd);\r\n    c0 = c.charAt(0);\r\n\r\n    if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n      // Argument reduction.\r\n      // The series converges faster the closer the argument is to 1, so using\r\n      // ln(a^b) = b * ln(a),   ln(a) = ln(a^b) / b\r\n      // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n      // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n      // later be divided by this number, then separate out the power of 10 using\r\n      // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n      // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n      //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n      // max n is 6 (gives 0.7 - 1.3)\r\n      while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n        x = x.times(y);\r\n        c = digitsToString(x.d);\r\n        c0 = c.charAt(0);\r\n        n++;\r\n      }\r\n\r\n      e = x.e;\r\n\r\n      if (c0 > 1) {\r\n        x = new Ctor('0.' + c);\r\n        e++;\r\n      } else {\r\n        x = new Ctor(c0 + '.' + c.slice(1));\r\n      }\r\n    } else {\r\n\r\n      // The argument reduction method above may result in overflow if the argument y is a massive\r\n      // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n      // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n      t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n      x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n      Ctor.precision = pr;\r\n\r\n      return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n    }\r\n\r\n    // x1 is x reduced to a value near 1.\r\n    x1 = x;\r\n\r\n    // Taylor series.\r\n    // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n    // where x = (y - 1)/(y + 1)    (|x| < 1)\r\n    sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n    x2 = finalise(x.times(x), wpr, 1);\r\n    denominator = 3;\r\n\r\n    for (;;) {\r\n      numerator = finalise(numerator.times(x2), wpr, 1);\r\n      t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n        sum = sum.times(2);\r\n\r\n        // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n        // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n        if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n        sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n        // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n        // been repeated previously) and the first 4 rounding digits 9999?\r\n        // If so, restart the summation with a higher precision, otherwise\r\n        // e.g. with precision: 12, rounding: 1\r\n        // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n        // `wpr - guard` is the index of first rounding digit.\r\n        if (sd == null) {\r\n          if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n            Ctor.precision = wpr += guard;\r\n            t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n            x2 = finalise(x.times(x), wpr, 1);\r\n            denominator = rep = 1;\r\n          } else {\r\n            return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n          }\r\n        } else {\r\n          Ctor.precision = pr;\r\n          return sum;\r\n        }\r\n      }\r\n\r\n      sum = t;\r\n      denominator += 2;\r\n    }\r\n  }\r\n\r\n\r\n  // ±Infinity, NaN.\r\n  function nonFiniteToString(x) {\r\n    // Unsigned.\r\n    return String(x.s * x.s / 0);\r\n  }\r\n\r\n\r\n  /*\r\n   * Parse the value of a new Decimal `x` from string `str`.\r\n   */\r\n  function parseDecimal(x, str) {\r\n    var e, i, len;\r\n\r\n    // TODO BigInt str: no need to check for decimal point, exponential form or leading zeros.\r\n\r\n    // Decimal point?\r\n    if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n    // Exponential form?\r\n    if ((i = str.search(/e/i)) > 0) {\r\n\r\n      // Determine exponent.\r\n      if (e < 0) e = i;\r\n      e += +str.slice(i + 1);\r\n      str = str.substring(0, i);\r\n    } else if (e < 0) {\r\n\r\n      // Integer.\r\n      e = str.length;\r\n    }\r\n\r\n    // Determine leading zeros.\r\n    for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n    // Determine trailing zeros.\r\n    for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n    str = str.slice(i, len);\r\n\r\n    if (str) {\r\n      len -= i;\r\n      x.e = e = e - i - 1;\r\n      x.d = [];\r\n\r\n      // Transform base\r\n\r\n      // e is the base 10 exponent.\r\n      // i is where to slice str to get the first word of the digits array.\r\n      i = (e + 1) % LOG_BASE;\r\n      if (e < 0) i += LOG_BASE;\r\n\r\n      if (i < len) {\r\n        if (i) x.d.push(+str.slice(0, i));\r\n        for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n        str = str.slice(i);\r\n        i = LOG_BASE - str.length;\r\n      } else {\r\n        i -= len;\r\n      }\r\n\r\n      for (; i--;) str += '0';\r\n      x.d.push(+str);\r\n\r\n      if (external) {\r\n\r\n        // Overflow?\r\n        if (x.e > x.constructor.maxE) {\r\n\r\n          // Infinity.\r\n          x.d = null;\r\n          x.e = NaN;\r\n\r\n        // Underflow?\r\n        } else if (x.e < x.constructor.minE) {\r\n\r\n          // Zero.\r\n          x.e = 0;\r\n          x.d = [0];\r\n          // x.constructor.underflow = true;\r\n        } // else x.constructor.underflow = false;\r\n      }\r\n    } else {\r\n\r\n      // Zero.\r\n      x.e = 0;\r\n      x.d = [0];\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n   */\r\n  function parseOther(x, str) {\r\n    var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n    if (str.indexOf('_') > -1) {\r\n      str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n      if (isDecimal.test(str)) return parseDecimal(x, str);\r\n    } else if (str === 'Infinity' || str === 'NaN') {\r\n      if (!+str) x.s = NaN;\r\n      x.e = NaN;\r\n      x.d = null;\r\n      return x;\r\n    }\r\n\r\n    if (isHex.test(str))  {\r\n      base = 16;\r\n      str = str.toLowerCase();\r\n    } else if (isBinary.test(str))  {\r\n      base = 2;\r\n    } else if (isOctal.test(str))  {\r\n      base = 8;\r\n    } else {\r\n      throw Error(invalidArgument + str);\r\n    }\r\n\r\n    // Is there a binary exponent part?\r\n    i = str.search(/p/i);\r\n\r\n    if (i > 0) {\r\n      p = +str.slice(i + 1);\r\n      str = str.substring(2, i);\r\n    } else {\r\n      str = str.slice(2);\r\n    }\r\n\r\n    // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n    // fraction part will be restored.\r\n    i = str.indexOf('.');\r\n    isFloat = i >= 0;\r\n    Ctor = x.constructor;\r\n\r\n    if (isFloat) {\r\n      str = str.replace('.', '');\r\n      len = str.length;\r\n      i = len - i;\r\n\r\n      // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n      divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n    }\r\n\r\n    xd = convertBase(str, base, BASE);\r\n    xe = xd.length - 1;\r\n\r\n    // Remove trailing zeros.\r\n    for (i = xe; xd[i] === 0; --i) xd.pop();\r\n    if (i < 0) return new Ctor(x.s * 0);\r\n    x.e = getBase10Exponent(xd, xe);\r\n    x.d = xd;\r\n    external = false;\r\n\r\n    // At what precision to perform the division to ensure exact conversion?\r\n    // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n    // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n    // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n    // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n    // Therefore using 4 * the number of digits of str will always be enough.\r\n    if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n    // Multiply by the binary exponent part if present.\r\n    if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n    external = true;\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * sin(x) = x - x^3/3! + x^5/5! - ...\r\n   * |x| < pi/2\r\n   *\r\n   */\r\n  function sine(Ctor, x) {\r\n    var k,\r\n      len = x.d.length;\r\n\r\n    if (len < 3) {\r\n      return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n    }\r\n\r\n    // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n    // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n    // and  sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n    // Estimate the optimum number of times to use the argument reduction.\r\n    k = 1.4 * Math.sqrt(len);\r\n    k = k > 16 ? 16 : k | 0;\r\n\r\n    x = x.times(1 / tinyPow(5, k));\r\n    x = taylorSeries(Ctor, 2, x, x);\r\n\r\n    // Reverse argument reduction\r\n    var sin2_x,\r\n      d5 = new Ctor(5),\r\n      d16 = new Ctor(16),\r\n      d20 = new Ctor(20);\r\n    for (; k--;) {\r\n      sin2_x = x.times(x);\r\n      x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\n  function taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n    var j, t, u, x2,\r\n      i = 1,\r\n      pr = Ctor.precision,\r\n      k = Math.ceil(pr / LOG_BASE);\r\n\r\n    external = false;\r\n    x2 = x.times(x);\r\n    u = new Ctor(y);\r\n\r\n    for (;;) {\r\n      t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n      u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n      y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n      t = u.plus(y);\r\n\r\n      if (t.d[k] !== void 0) {\r\n        for (j = k; t.d[j] === u.d[j] && j--;);\r\n        if (j == -1) break;\r\n      }\r\n\r\n      j = u;\r\n      u = y;\r\n      y = t;\r\n      t = j;\r\n      i++;\r\n    }\r\n\r\n    external = true;\r\n    t.d.length = k + 1;\r\n\r\n    return t;\r\n  }\r\n\r\n\r\n  // Exponent e must be positive and non-zero.\r\n  function tinyPow(b, e) {\r\n    var n = b;\r\n    while (--e) n *= b;\r\n    return n;\r\n  }\r\n\r\n\r\n  // Return the absolute value of `x` reduced to less than or equal to half pi.\r\n  function toLessThanHalfPi(Ctor, x) {\r\n    var t,\r\n      isNeg = x.s < 0,\r\n      pi = getPi(Ctor, Ctor.precision, 1),\r\n      halfPi = pi.times(0.5);\r\n\r\n    x = x.abs();\r\n\r\n    if (x.lte(halfPi)) {\r\n      quadrant = isNeg ? 4 : 1;\r\n      return x;\r\n    }\r\n\r\n    t = x.divToInt(pi);\r\n\r\n    if (t.isZero()) {\r\n      quadrant = isNeg ? 3 : 2;\r\n    } else {\r\n      x = x.minus(t.times(pi));\r\n\r\n      // 0 <= x < pi\r\n      if (x.lte(halfPi)) {\r\n        quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n        return x;\r\n      }\r\n\r\n      quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n    }\r\n\r\n    return x.minus(pi).abs();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return the value of Decimal `x` as a string in base `baseOut`.\r\n   *\r\n   * If the optional `sd` argument is present include a binary exponent suffix.\r\n   */\r\n  function toStringBinary(x, baseOut, sd, rm) {\r\n    var base, e, i, k, len, roundUp, str, xd, y,\r\n      Ctor = x.constructor,\r\n      isExp = sd !== void 0;\r\n\r\n    if (isExp) {\r\n      checkInt32(sd, 1, MAX_DIGITS);\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n    } else {\r\n      sd = Ctor.precision;\r\n      rm = Ctor.rounding;\r\n    }\r\n\r\n    if (!x.isFinite()) {\r\n      str = nonFiniteToString(x);\r\n    } else {\r\n      str = finiteToString(x);\r\n      i = str.indexOf('.');\r\n\r\n      // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n      // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n      // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n      // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n      if (isExp) {\r\n        base = 2;\r\n        if (baseOut == 16) {\r\n          sd = sd * 4 - 3;\r\n        } else if (baseOut == 8) {\r\n          sd = sd * 3 - 2;\r\n        }\r\n      } else {\r\n        base = baseOut;\r\n      }\r\n\r\n      // Convert the number as an integer then divide the result by its base raised to a power such\r\n      // that the fraction part will be restored.\r\n\r\n      // Non-integer.\r\n      if (i >= 0) {\r\n        str = str.replace('.', '');\r\n        y = new Ctor(1);\r\n        y.e = str.length - i;\r\n        y.d = convertBase(finiteToString(y), 10, base);\r\n        y.e = y.d.length;\r\n      }\r\n\r\n      xd = convertBase(str, 10, base);\r\n      e = len = xd.length;\r\n\r\n      // Remove trailing zeros.\r\n      for (; xd[--len] == 0;) xd.pop();\r\n\r\n      if (!xd[0]) {\r\n        str = isExp ? '0p+0' : '0';\r\n      } else {\r\n        if (i < 0) {\r\n          e--;\r\n        } else {\r\n          x = new Ctor(x);\r\n          x.d = xd;\r\n          x.e = e;\r\n          x = divide(x, y, sd, rm, 0, base);\r\n          xd = x.d;\r\n          e = x.e;\r\n          roundUp = inexact;\r\n        }\r\n\r\n        // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n        i = xd[sd];\r\n        k = base / 2;\r\n        roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n        roundUp = rm < 4\r\n          ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n          : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n            rm === (x.s < 0 ? 8 : 7));\r\n\r\n        xd.length = sd;\r\n\r\n        if (roundUp) {\r\n\r\n          // Rounding up may mean the previous digit has to be rounded up and so on.\r\n          for (; ++xd[--sd] > base - 1;) {\r\n            xd[sd] = 0;\r\n            if (!sd) {\r\n              ++e;\r\n              xd.unshift(1);\r\n            }\r\n          }\r\n        }\r\n\r\n        // Determine trailing zeros.\r\n        for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n        // E.g. [4, 11, 15] becomes 4bf.\r\n        for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n        // Add binary exponent suffix?\r\n        if (isExp) {\r\n          if (len > 1) {\r\n            if (baseOut == 16 || baseOut == 8) {\r\n              i = baseOut == 16 ? 4 : 3;\r\n              for (--len; len % i; len++) str += '0';\r\n              xd = convertBase(str, base, baseOut);\r\n              for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n              // xd[0] will always be be 1\r\n              for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n            } else {\r\n              str = str.charAt(0) + '.' + str.slice(1);\r\n            }\r\n          }\r\n\r\n          str =  str + (e < 0 ? 'p' : 'p+') + e;\r\n        } else if (e < 0) {\r\n          for (; ++e;) str = '0' + str;\r\n          str = '0.' + str;\r\n        } else {\r\n          if (++e > len) for (e -= len; e-- ;) str += '0';\r\n          else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n        }\r\n      }\r\n\r\n      str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n    }\r\n\r\n    return x.s < 0 ? '-' + str : str;\r\n  }\r\n\r\n\r\n  // Does not strip trailing zeros.\r\n  function truncate(arr, len) {\r\n    if (arr.length > len) {\r\n      arr.length = len;\r\n      return true;\r\n    }\r\n  }\r\n\r\n\r\n  // Decimal methods\r\n\r\n\r\n  /*\r\n   *  abs\r\n   *  acos\r\n   *  acosh\r\n   *  add\r\n   *  asin\r\n   *  asinh\r\n   *  atan\r\n   *  atanh\r\n   *  atan2\r\n   *  cbrt\r\n   *  ceil\r\n   *  clamp\r\n   *  clone\r\n   *  config\r\n   *  cos\r\n   *  cosh\r\n   *  div\r\n   *  exp\r\n   *  floor\r\n   *  hypot\r\n   *  ln\r\n   *  log\r\n   *  log2\r\n   *  log10\r\n   *  max\r\n   *  min\r\n   *  mod\r\n   *  mul\r\n   *  pow\r\n   *  random\r\n   *  round\r\n   *  set\r\n   *  sign\r\n   *  sin\r\n   *  sinh\r\n   *  sqrt\r\n   *  sub\r\n   *  sum\r\n   *  tan\r\n   *  tanh\r\n   *  trunc\r\n   */\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the absolute value of `x`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function abs(x) {\r\n    return new this(x).abs();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function acos(x) {\r\n    return new this(x).acos();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n   * `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function acosh(x) {\r\n    return new this(x).acosh();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   * y {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function add(x, y) {\r\n    return new this(x).plus(y);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function asin(x) {\r\n    return new this(x).asin();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n   * `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function asinh(x) {\r\n    return new this(x).asinh();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function atan(x) {\r\n    return new this(x).atan();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n   * `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function atanh(x) {\r\n    return new this(x).atanh();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n   * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * Domain: [-Infinity, Infinity]\r\n   * Range: [-pi, pi]\r\n   *\r\n   * y {number|string|bigint|Decimal} The y-coordinate.\r\n   * x {number|string|bigint|Decimal} The x-coordinate.\r\n   *\r\n   * atan2(±0, -0)               = ±pi\r\n   * atan2(±0, +0)               = ±0\r\n   * atan2(±0, -x)               = ±pi for x > 0\r\n   * atan2(±0, x)                = ±0 for x > 0\r\n   * atan2(-y, ±0)               = -pi/2 for y > 0\r\n   * atan2(y, ±0)                = pi/2 for y > 0\r\n   * atan2(±y, -Infinity)        = ±pi for finite y > 0\r\n   * atan2(±y, +Infinity)        = ±0 for finite y > 0\r\n   * atan2(±Infinity, x)         = ±pi/2 for finite x\r\n   * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n   * atan2(±Infinity, +Infinity) = ±pi/4\r\n   * atan2(NaN, x) = NaN\r\n   * atan2(y, NaN) = NaN\r\n   *\r\n   */\r\n  function atan2(y, x) {\r\n    y = new this(y);\r\n    x = new this(x);\r\n    var r,\r\n      pr = this.precision,\r\n      rm = this.rounding,\r\n      wpr = pr + 4;\r\n\r\n    // Either NaN\r\n    if (!y.s || !x.s) {\r\n      r = new this(NaN);\r\n\r\n    // Both ±Infinity\r\n    } else if (!y.d && !x.d) {\r\n      r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n      r.s = y.s;\r\n\r\n    // x is ±Infinity or y is ±0\r\n    } else if (!x.d || y.isZero()) {\r\n      r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n      r.s = y.s;\r\n\r\n    // y is ±Infinity or x is ±0\r\n    } else if (!y.d || x.isZero()) {\r\n      r = getPi(this, wpr, 1).times(0.5);\r\n      r.s = y.s;\r\n\r\n    // Both non-zero and finite\r\n    } else if (x.s < 0) {\r\n      this.precision = wpr;\r\n      this.rounding = 1;\r\n      r = this.atan(divide(y, x, wpr, 1));\r\n      x = getPi(this, wpr, 1);\r\n      this.precision = pr;\r\n      this.rounding = rm;\r\n      r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n    } else {\r\n      r = this.atan(divide(y, x, wpr, 1));\r\n    }\r\n\r\n    return r;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function cbrt(x) {\r\n    return new this(x).cbrt();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function ceil(x) {\r\n    return finalise(x = new this(x), x.e + 1, 2);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   * min {number|string|bigint|Decimal}\r\n   * max {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function clamp(x, min, max) {\r\n    return new this(x).clamp(min, max);\r\n  }\r\n\r\n\r\n  /*\r\n   * Configure global settings for a Decimal constructor.\r\n   *\r\n   * `obj` is an object with one or more of the following properties,\r\n   *\r\n   *   precision  {number}\r\n   *   rounding   {number}\r\n   *   toExpNeg   {number}\r\n   *   toExpPos   {number}\r\n   *   maxE       {number}\r\n   *   minE       {number}\r\n   *   modulo     {number}\r\n   *   crypto     {boolean|number}\r\n   *   defaults   {true}\r\n   *\r\n   * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n   *\r\n   */\r\n  function config(obj) {\r\n    if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n    var i, p, v,\r\n      useDefaults = obj.defaults === true,\r\n      ps = [\r\n        'precision', 1, MAX_DIGITS,\r\n        'rounding', 0, 8,\r\n        'toExpNeg', -EXP_LIMIT, 0,\r\n        'toExpPos', 0, EXP_LIMIT,\r\n        'maxE', 0, EXP_LIMIT,\r\n        'minE', -EXP_LIMIT, 0,\r\n        'modulo', 0, 9\r\n      ];\r\n\r\n    for (i = 0; i < ps.length; i += 3) {\r\n      if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n      if ((v = obj[p]) !== void 0) {\r\n        if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n        else throw Error(invalidArgument + p + ': ' + v);\r\n      }\r\n    }\r\n\r\n    if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n    if ((v = obj[p]) !== void 0) {\r\n      if (v === true || v === false || v === 0 || v === 1) {\r\n        if (v) {\r\n          if (typeof crypto != 'undefined' && crypto &&\r\n            (crypto.getRandomValues || crypto.randomBytes)) {\r\n            this[p] = true;\r\n          } else {\r\n            throw Error(cryptoUnavailable);\r\n          }\r\n        } else {\r\n          this[p] = false;\r\n        }\r\n      } else {\r\n        throw Error(invalidArgument + p + ': ' + v);\r\n      }\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function cos(x) {\r\n    return new this(x).cos();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function cosh(x) {\r\n    return new this(x).cosh();\r\n  }\r\n\r\n\r\n  /*\r\n   * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n   * constructor.\r\n   *\r\n   */\r\n  function clone(obj) {\r\n    var i, p, ps;\r\n\r\n    /*\r\n     * The Decimal constructor and exported function.\r\n     * Return a new Decimal instance.\r\n     *\r\n     * v {number|string|bigint|Decimal} A numeric value.\r\n     *\r\n     */\r\n    function Decimal(v) {\r\n      var e, i, t,\r\n        x = this;\r\n\r\n      // Decimal called without new.\r\n      if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n      // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n      // which points to Object.\r\n      x.constructor = Decimal;\r\n\r\n      if (isDecimalInstance(v)) {\r\n        x.s = v.s;\r\n\r\n        if (external) {\r\n          if (!v.d || v.e > Decimal.maxE) {\r\n\r\n            // Infinity.\r\n            x.e = NaN;\r\n            x.d = null;\r\n          } else if (v.e < Decimal.minE) {\r\n\r\n            // Zero.\r\n            x.e = 0;\r\n            x.d = [0];\r\n          } else {\r\n            x.e = v.e;\r\n            x.d = v.d.slice();\r\n          }\r\n        } else {\r\n          x.e = v.e;\r\n          x.d = v.d ? v.d.slice() : v.d;\r\n        }\r\n\r\n        return;\r\n      }\r\n\r\n      t = typeof v;\r\n\r\n      if (t === 'number') {\r\n        if (v === 0) {\r\n          x.s = 1 / v < 0 ? -1 : 1;\r\n          x.e = 0;\r\n          x.d = [0];\r\n          return;\r\n        }\r\n\r\n        if (v < 0) {\r\n          v = -v;\r\n          x.s = -1;\r\n        } else {\r\n          x.s = 1;\r\n        }\r\n\r\n        // Fast path for small integers.\r\n        if (v === ~~v && v < 1e7) {\r\n          for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n          if (external) {\r\n            if (e > Decimal.maxE) {\r\n              x.e = NaN;\r\n              x.d = null;\r\n            } else if (e < Decimal.minE) {\r\n              x.e = 0;\r\n              x.d = [0];\r\n            } else {\r\n              x.e = e;\r\n              x.d = [v];\r\n            }\r\n          } else {\r\n            x.e = e;\r\n            x.d = [v];\r\n          }\r\n\r\n          return;\r\n        }\r\n\r\n        // Infinity or NaN?\r\n        if (v * 0 !== 0) {\r\n          if (!v) x.s = NaN;\r\n          x.e = NaN;\r\n          x.d = null;\r\n          return;\r\n        }\r\n\r\n        return parseDecimal(x, v.toString());\r\n      }\r\n\r\n      if (t === 'string') {\r\n        if ((i = v.charCodeAt(0)) === 45) {  // minus sign\r\n          v = v.slice(1);\r\n          x.s = -1;\r\n        } else {\r\n          if (i === 43) v = v.slice(1);  // plus sign\r\n          x.s = 1;\r\n        }\r\n\r\n        return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n      }\r\n\r\n      if (t === 'bigint') {\r\n        if (v < 0) {\r\n          v = -v;\r\n          x.s = -1;\r\n        } else {\r\n          x.s = 1;\r\n        }\r\n\r\n        return parseDecimal(x, v.toString());\r\n      }\r\n\r\n      throw Error(invalidArgument + v);\r\n    }\r\n\r\n    Decimal.prototype = P;\r\n\r\n    Decimal.ROUND_UP = 0;\r\n    Decimal.ROUND_DOWN = 1;\r\n    Decimal.ROUND_CEIL = 2;\r\n    Decimal.ROUND_FLOOR = 3;\r\n    Decimal.ROUND_HALF_UP = 4;\r\n    Decimal.ROUND_HALF_DOWN = 5;\r\n    Decimal.ROUND_HALF_EVEN = 6;\r\n    Decimal.ROUND_HALF_CEIL = 7;\r\n    Decimal.ROUND_HALF_FLOOR = 8;\r\n    Decimal.EUCLID = 9;\r\n\r\n    Decimal.config = Decimal.set = config;\r\n    Decimal.clone = clone;\r\n    Decimal.isDecimal = isDecimalInstance;\r\n\r\n    Decimal.abs = abs;\r\n    Decimal.acos = acos;\r\n    Decimal.acosh = acosh;        // ES6\r\n    Decimal.add = add;\r\n    Decimal.asin = asin;\r\n    Decimal.asinh = asinh;        // ES6\r\n    Decimal.atan = atan;\r\n    Decimal.atanh = atanh;        // ES6\r\n    Decimal.atan2 = atan2;\r\n    Decimal.cbrt = cbrt;          // ES6\r\n    Decimal.ceil = ceil;\r\n    Decimal.clamp = clamp;\r\n    Decimal.cos = cos;\r\n    Decimal.cosh = cosh;          // ES6\r\n    Decimal.div = div;\r\n    Decimal.exp = exp;\r\n    Decimal.floor = floor;\r\n    Decimal.hypot = hypot;        // ES6\r\n    Decimal.ln = ln;\r\n    Decimal.log = log;\r\n    Decimal.log10 = log10;        // ES6\r\n    Decimal.log2 = log2;          // ES6\r\n    Decimal.max = max;\r\n    Decimal.min = min;\r\n    Decimal.mod = mod;\r\n    Decimal.mul = mul;\r\n    Decimal.pow = pow;\r\n    Decimal.random = random;\r\n    Decimal.round = round;\r\n    Decimal.sign = sign;          // ES6\r\n    Decimal.sin = sin;\r\n    Decimal.sinh = sinh;          // ES6\r\n    Decimal.sqrt = sqrt;\r\n    Decimal.sub = sub;\r\n    Decimal.sum = sum;\r\n    Decimal.tan = tan;\r\n    Decimal.tanh = tanh;          // ES6\r\n    Decimal.trunc = trunc;        // ES6\r\n\r\n    if (obj === void 0) obj = {};\r\n    if (obj) {\r\n      if (obj.defaults !== true) {\r\n        ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n        for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n      }\r\n    }\r\n\r\n    Decimal.config(obj);\r\n\r\n    return Decimal;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   * y {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function div(x, y) {\r\n    return new this(x).div(y);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} The power to which to raise the base of the natural log.\r\n   *\r\n   */\r\n  function exp(x) {\r\n    return new this(x).exp();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function floor(x) {\r\n    return finalise(x = new this(x), x.e + 1, 3);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n   * rounded to `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n   *\r\n   * arguments {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function hypot() {\r\n    var i, n,\r\n      t = new this(0);\r\n\r\n    external = false;\r\n\r\n    for (i = 0; i < arguments.length;) {\r\n      n = new this(arguments[i++]);\r\n      if (!n.d) {\r\n        if (n.s) {\r\n          external = true;\r\n          return new this(1 / 0);\r\n        }\r\n        t = n;\r\n      } else if (t.d) {\r\n        t = t.plus(n.times(n));\r\n      }\r\n    }\r\n\r\n    external = true;\r\n\r\n    return t.sqrt();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n   * otherwise return false.\r\n   *\r\n   */\r\n  function isDecimalInstance(obj) {\r\n    return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function ln(x) {\r\n    return new this(x).ln();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n   * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n   *\r\n   * log[y](x)\r\n   *\r\n   * x {number|string|bigint|Decimal} The argument of the logarithm.\r\n   * y {number|string|bigint|Decimal} The base of the logarithm.\r\n   *\r\n   */\r\n  function log(x, y) {\r\n    return new this(x).log(y);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function log2(x) {\r\n    return new this(x).log(2);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function log10(x) {\r\n    return new this(x).log(10);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the maximum of the arguments.\r\n   *\r\n   * arguments {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function max() {\r\n    return maxOrMin(this, arguments, -1);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the minimum of the arguments.\r\n   *\r\n   * arguments {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function min() {\r\n    return maxOrMin(this, arguments, 1);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n   * using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   * y {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function mod(x, y) {\r\n    return new this(x).mod(y);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   * y {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function mul(x, y) {\r\n    return new this(x).mul(y);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} The base.\r\n   * y {number|string|bigint|Decimal} The exponent.\r\n   *\r\n   */\r\n  function pow(x, y) {\r\n    return new this(x).pow(y);\r\n  }\r\n\r\n\r\n  /*\r\n   * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n   * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n   * are produced).\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n   *\r\n   */\r\n  function random(sd) {\r\n    var d, e, k, n,\r\n      i = 0,\r\n      r = new this(1),\r\n      rd = [];\r\n\r\n    if (sd === void 0) sd = this.precision;\r\n    else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n    k = Math.ceil(sd / LOG_BASE);\r\n\r\n    if (!this.crypto) {\r\n      for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n    // Browsers supporting crypto.getRandomValues.\r\n    } else if (crypto.getRandomValues) {\r\n      d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n      for (; i < k;) {\r\n        n = d[i];\r\n\r\n        // 0 <= n < 4294967296\r\n        // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n        if (n >= 4.29e9) {\r\n          d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n        } else {\r\n\r\n          // 0 <= n <= 4289999999\r\n          // 0 <= (n % 1e7) <= 9999999\r\n          rd[i++] = n % 1e7;\r\n        }\r\n      }\r\n\r\n    // Node.js supporting crypto.randomBytes.\r\n    } else if (crypto.randomBytes) {\r\n\r\n      // buffer\r\n      d = crypto.randomBytes(k *= 4);\r\n\r\n      for (; i < k;) {\r\n\r\n        // 0 <= n < 2147483648\r\n        n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n        // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n        if (n >= 2.14e9) {\r\n          crypto.randomBytes(4).copy(d, i);\r\n        } else {\r\n\r\n          // 0 <= n <= 2139999999\r\n          // 0 <= (n % 1e7) <= 9999999\r\n          rd.push(n % 1e7);\r\n          i += 4;\r\n        }\r\n      }\r\n\r\n      i = k / 4;\r\n    } else {\r\n      throw Error(cryptoUnavailable);\r\n    }\r\n\r\n    k = rd[--i];\r\n    sd %= LOG_BASE;\r\n\r\n    // Convert trailing digits to zeros according to sd.\r\n    if (k && sd) {\r\n      n = mathpow(10, LOG_BASE - sd);\r\n      rd[i] = (k / n | 0) * n;\r\n    }\r\n\r\n    // Remove trailing words which are zero.\r\n    for (; rd[i] === 0; i--) rd.pop();\r\n\r\n    // Zero?\r\n    if (i < 0) {\r\n      e = 0;\r\n      rd = [0];\r\n    } else {\r\n      e = -1;\r\n\r\n      // Remove leading words which are zero and adjust exponent accordingly.\r\n      for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n      // Count the digits of the first word of rd to determine leading zeros.\r\n      for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n      // Adjust the exponent for leading zeros of the first word of rd.\r\n      if (k < LOG_BASE) e -= LOG_BASE - k;\r\n    }\r\n\r\n    r.e = e;\r\n    r.d = rd;\r\n\r\n    return r;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n   *\r\n   * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function round(x) {\r\n    return finalise(x = new this(x), x.e + 1, this.rounding);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return\r\n   *   1    if x > 0,\r\n   *  -1    if x < 0,\r\n   *   0    if x is 0,\r\n   *  -0    if x is -0,\r\n   *   NaN  otherwise\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function sign(x) {\r\n    x = new this(x);\r\n    return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n   * using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function sin(x) {\r\n    return new this(x).sin();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function sinh(x) {\r\n    return new this(x).sinh();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function sqrt(x) {\r\n    return new this(x).sqrt();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n   * using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   * y {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function sub(x, y) {\r\n    return new this(x).sub(y);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * Only the result is rounded, not the intermediate calculations.\r\n   *\r\n   * arguments {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function sum() {\r\n    var i = 0,\r\n      args = arguments,\r\n      x = new this(args[i]);\r\n\r\n    external = false;\r\n    for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n    external = true;\r\n\r\n    return finalise(x, this.precision, this.rounding);\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n   * digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function tan(x) {\r\n    return new this(x).tan();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n   * significant digits using rounding mode `rounding`.\r\n   *\r\n   * x {number|string|bigint|Decimal} A value in radians.\r\n   *\r\n   */\r\n  function tanh(x) {\r\n    return new this(x).tanh();\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is `x` truncated to an integer.\r\n   *\r\n   * x {number|string|bigint|Decimal}\r\n   *\r\n   */\r\n  function trunc(x) {\r\n    return finalise(x = new this(x), x.e + 1, 1);\r\n  }\r\n\r\n\r\n  // Create and configure initial Decimal constructor.\r\n  Decimal = clone(DEFAULTS);\r\n  Decimal.prototype.constructor = Decimal;\r\n  Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n  // Create the internal constants from their string values.\r\n  LN10 = new Decimal(LN10);\r\n  PI = new Decimal(PI);\r\n\r\n\r\n  // Export.\r\n\r\n\r\n  // AMD.\r\n  if (typeof define == 'function' && define.amd) {\r\n    define(function () {\r\n      return Decimal;\r\n    });\r\n\r\n  // Node and other environments that support module.exports.\r\n  } else if (typeof module != 'undefined' && module.exports) {\r\n    if (typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol') {\r\n      P[Symbol['for']('nodejs.util.inspect.custom')] = P.toString;\r\n      P[Symbol.toStringTag] = 'Decimal';\r\n    }\r\n\r\n    module.exports = Decimal;\r\n\r\n  // Browser.\r\n  } else {\r\n    if (!globalScope) {\r\n      globalScope = typeof self != 'undefined' && self && self.self == self ? self : window;\r\n    }\r\n\r\n    noConflict = globalScope.Decimal;\r\n    Decimal.noConflict = function () {\r\n      globalScope.Decimal = noConflict;\r\n      return Decimal;\r\n    };\r\n\r\n    globalScope.Decimal = Decimal;\r\n  }\r\n})(this);\r\n","\"use strict\";\nconst { parseFloatingPointNumber } = require(\"./strings\");\nconst {\n  parseDateString,\n  parseLocalDateAndTimeString,\n  parseMonthString,\n  parseTimeString,\n  parseWeekString,\n\n  serializeDate,\n  serializeMonth,\n  serializeNormalizedDateAndTime,\n  serializeTime,\n  serializeWeek,\n  parseDateAsWeek\n} = require(\"./dates-and-times\");\n\n// Necessary because Date.UTC() treats year within [0, 99] as [1900, 1999].\nfunction getUTCMs(year, month = 1, day = 1, hour = 0, minute = 0, second = 0, millisecond = 0) {\n  if (year > 99 || year < 0) {\n    return Date.UTC(year, month - 1, day, hour, minute, second, millisecond);\n  }\n  const d = new Date(0);\n  d.setUTCFullYear(year);\n  d.setUTCMonth(month - 1);\n  d.setUTCDate(day);\n  d.setUTCHours(hour);\n  d.setUTCMinutes(minute);\n  d.setUTCSeconds(second, millisecond);\n  return d.valueOf();\n}\n\nconst dayOfWeekRelMondayLUT = [-1, 0, 1, 2, 3, -3, -2];\n\nexports.convertStringToNumberByType = {\n  // https://html.spec.whatwg.org/multipage/input.html#date-state-(type=date):concept-input-value-string-number\n  date(input) {\n    const date = parseDateString(input);\n    if (date === null) {\n      return null;\n    }\n    return getUTCMs(date.year, date.month, date.day);\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#month-state-(type=month):concept-input-value-string-number\n  month(input) {\n    const date = parseMonthString(input);\n    if (date === null) {\n      return null;\n    }\n    return (date.year - 1970) * 12 + (date.month - 1);\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#week-state-(type=week):concept-input-value-string-number\n  week(input) {\n    const date = parseWeekString(input);\n    if (date === null) {\n      return null;\n    }\n    const dateObj = new Date(getUTCMs(date.year));\n    // An HTML week starts on Monday, while 0 represents Sunday. Account for such.\n    const dayOfWeekRelMonday = dayOfWeekRelMondayLUT[dateObj.getUTCDay()];\n    return dateObj.setUTCDate(1 + 7 * (date.week - 1) - dayOfWeekRelMonday);\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#time-state-(type=time):concept-input-value-string-number\n  time(input) {\n    const time = parseTimeString(input);\n    if (time === null) {\n      return null;\n    }\n    return ((time.hour * 60 + time.minute) * 60 + time.second) * 1000 + time.millisecond;\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#local-date-and-time-state-(type=datetime-local):concept-input-value-string-number\n  \"datetime-local\"(input) {\n    const dateAndTime = parseLocalDateAndTimeString(input);\n    if (dateAndTime === null) {\n      return null;\n    }\n    const { date: { year, month, day }, time: { hour, minute, second, millisecond } } = dateAndTime;\n    // Doesn't quite matter whether or not UTC is used, since the offset from 1970-01-01 local time is returned.\n    return getUTCMs(year, month, day, hour, minute, second, millisecond);\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number):concept-input-value-string-number\n  number: parseFloatingPointNumber,\n  // https://html.spec.whatwg.org/multipage/input.html#range-state-(type=range):concept-input-value-string-number\n  range: parseFloatingPointNumber\n};\n\nexports.convertStringToDateByType = {\n  date(input) {\n    const parsedInput = exports.convertStringToNumberByType.date(input);\n    return parsedInput === null ? null : new Date(parsedInput);\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#month-state-(type=month):concept-input-value-string-number\n  month(input) {\n    const parsedMonthString = parseMonthString(input);\n    if (parsedMonthString === null) {\n      return null;\n    }\n\n    const date = new Date(0);\n    date.setUTCFullYear(parsedMonthString.year);\n    date.setUTCMonth(parsedMonthString.month - 1);\n    return date;\n  },\n  week(input) {\n    const parsedInput = exports.convertStringToNumberByType.week(input);\n    return parsedInput === null ? null : new Date(parsedInput);\n  },\n  time(input) {\n    const parsedInput = exports.convertStringToNumberByType.time(input);\n    return parsedInput === null ? null : new Date(parsedInput);\n  },\n  \"datetime-local\"(input) {\n    const parsedInput = exports.convertStringToNumberByType[\"datetime-local\"](input);\n    return parsedInput === null ? null : new Date(parsedInput);\n  }\n};\n\nexports.serializeDateByType = {\n  date(input) {\n    return serializeDate({\n      year: input.getUTCFullYear(),\n      month: input.getUTCMonth() + 1,\n      day: input.getUTCDate()\n    });\n  },\n  month(input) {\n    return serializeMonth({\n      year: input.getUTCFullYear(),\n      month: input.getUTCMonth() + 1\n    });\n  },\n  week(input) {\n    return serializeWeek(parseDateAsWeek(input));\n  },\n  time(input) {\n    return serializeTime({\n      hour: input.getUTCHours(),\n      minute: input.getUTCMinutes(),\n      second: input.getUTCSeconds(),\n      millisecond: input.getUTCMilliseconds()\n    });\n  },\n  \"datetime-local\"(input) {\n    return serializeNormalizedDateAndTime({\n      date: {\n        year: input.getUTCFullYear(),\n        month: input.getUTCMonth() + 1,\n        day: input.getUTCDate()\n      },\n      time: {\n        hour: input.getUTCHours(),\n        minute: input.getUTCMinutes(),\n        second: input.getUTCSeconds(),\n        millisecond: input.getUTCMilliseconds()\n      }\n    });\n  }\n};\n\nexports.convertNumberToStringByType = {\n  // https://html.spec.whatwg.org/multipage/input.html#date-state-(type=date):concept-input-value-string-number\n  date(input) {\n    return exports.serializeDateByType.date(new Date(input));\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#month-state-(type=month):concept-input-value-string-date\n  month(input) {\n    const year = 1970 + Math.floor(input / 12);\n    const month = input % 12;\n    const date = new Date(0);\n    date.setUTCFullYear(year);\n    date.setUTCMonth(month);\n\n    return exports.serializeDateByType.month(date);\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#week-state-(type=week):concept-input-value-string-date\n  week(input) {\n    return exports.serializeDateByType.week(new Date(input));\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#time-state-(type=time):concept-input-value-string-date\n  time(input) {\n    return exports.serializeDateByType.time(new Date(input));\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#local-date-and-time-state-(type=datetime-local):concept-input-value-number-string\n  \"datetime-local\"(input) {\n    return exports.serializeDateByType[\"datetime-local\"](new Date(input));\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number):concept-input-value-number-string\n  number(input) {\n    return input.toString();\n  },\n  // https://html.spec.whatwg.org/multipage/input.html#range-state-(type=range):concept-input-value-number-string\n  range(input) {\n    return input.toString();\n  }\n};\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst FileList = require(\"../../../generated/idl/FileList\");\nconst Decimal = require(\"decimal.js\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst DefaultConstraintValidationImpl =\n  require(\"../constraint-validation/DefaultConstraintValidation-impl\").implementation;\nconst ValidityState = require(\"../../../generated/idl/ValidityState\");\nconst { mixin } = require(\"../../utils\");\nconst { domSymbolTree, cloningSteps } = require(\"../helpers/internal-constants\");\nconst { getLabelsForLabelable, formOwner } = require(\"../helpers/form-controls\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst {\n  isDisabled,\n  isValidEmailAddress,\n  isValidAbsoluteURL,\n  sanitizeValueByType\n} = require(\"../helpers/form-controls\");\nconst {\n  asciiCaseInsensitiveMatch,\n  asciiLowercase,\n  parseFloatingPointNumber,\n  splitOnCommas\n} = require(\"../helpers/strings\");\nconst { isDate } = require(\"../helpers/dates-and-times\");\nconst {\n  convertStringToNumberByType,\n  convertStringToDateByType,\n  serializeDateByType,\n  convertNumberToStringByType\n} = require(\"../helpers/number-and-date-inputs\");\n\nconst filesSymbol = Symbol(\"files\");\n\n// https://html.spec.whatwg.org/multipage/input.html#attr-input-type\nconst inputAllowedTypes = new Set([\n  \"hidden\", \"text\", \"search\", \"tel\", \"url\", \"email\", \"password\", \"date\",\n  \"month\", \"week\", \"time\", \"datetime-local\", \"number\", \"range\", \"color\", \"checkbox\", \"radio\",\n  \"file\", \"submit\", \"image\", \"reset\", \"button\"\n]);\n\n// https://html.spec.whatwg.org/multipage/input.html#concept-input-apply\n\nconst variableLengthSelectionAllowedTypes = new Set([\"text\", \"search\", \"url\", \"tel\", \"password\"]);\nconst numericTypes = new Set([\"date\", \"month\", \"week\", \"time\", \"datetime-local\", \"number\", \"range\"]);\n\nconst applicableTypesForIDLMember = {\n  valueAsDate: new Set([\"date\", \"month\", \"week\", \"time\"]),\n  valueAsNumber: numericTypes,\n\n  select: new Set([\n    \"text\", \"search\", \"url\", \"tel\", \"email\", \"password\", \"date\", \"month\", \"week\",\n    \"time\", \"datetime-local\", \"number\", \"color\", \"file\"\n  ]),\n  selectionStart: variableLengthSelectionAllowedTypes,\n  selectionEnd: variableLengthSelectionAllowedTypes,\n  selectionDirection: variableLengthSelectionAllowedTypes,\n  setRangeText: variableLengthSelectionAllowedTypes,\n  setSelectionRange: variableLengthSelectionAllowedTypes,\n  stepDown: numericTypes,\n  stepUp: numericTypes\n};\n\nconst lengthPatternSizeTypes = new Set([\"text\", \"search\", \"url\", \"tel\", \"email\", \"password\"]);\nconst readonlyTypes =\n  new Set([...lengthPatternSizeTypes, \"date\", \"month\", \"week\", \"time\", \"datetime-local\", \"number\"]);\n\nconst applicableTypesForContentAttribute = {\n  list: new Set([\"text\", \"search\", \"url\", \"tel\", \"email\", ...numericTypes, \"color\"]),\n  max: numericTypes,\n  maxlength: lengthPatternSizeTypes,\n  min: numericTypes,\n  minlength: lengthPatternSizeTypes,\n  multiple: new Set([\"email\", \"file\"]),\n  pattern: lengthPatternSizeTypes,\n  readonly: readonlyTypes,\n  required: new Set([...readonlyTypes, \"checkbox\", \"radio\", \"file\"]),\n  step: numericTypes\n};\n\nconst valueAttributeDefaultMode = new Set([\"hidden\", \"submit\", \"image\", \"reset\", \"button\"]);\nconst valueAttributeDefaultOnMode = new Set([\"checkbox\", \"radio\"]);\n\nfunction valueAttributeMode(type) {\n  if (valueAttributeDefaultMode.has(type)) {\n    return \"default\";\n  }\n  if (valueAttributeDefaultOnMode.has(type)) {\n    return \"default/on\";\n  }\n  if (type === \"file\") {\n    return \"filename\";\n  }\n  return \"value\";\n}\n\nfunction getTypeFromAttribute(typeAttribute) {\n  if (typeof typeAttribute !== \"string\") {\n    return \"text\";\n  }\n  const type = asciiLowercase(typeAttribute);\n  return inputAllowedTypes.has(type) ? type : \"text\";\n}\n\nclass HTMLInputElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._selectionStart = this._selectionEnd = 0;\n    this._selectionDirection = \"none\";\n    this._value = \"\";\n    this._dirtyValue = false;\n    this._checkedness = false;\n    this._dirtyCheckedness = false;\n\n    this._preCheckedRadioState = null;\n    this._legacyActivationBehaviorPreviousIndeterminateState = false;\n\n    this.indeterminate = false;\n\n    this._customValidityErrorMessage = \"\";\n\n    this._labels = null;\n\n    this._hasActivationBehavior = true;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#concept-input-value-string-number\n  get _convertStringToNumber() {\n    return convertStringToNumberByType[this.type];\n  }\n\n  get _convertNumberToString() {\n    return convertNumberToStringByType[this.type];\n  }\n\n  get _convertDateToString() {\n    return serializeDateByType[this.type];\n  }\n\n  get _convertStringToDate() {\n    return convertStringToDateByType[this.type];\n  }\n\n  _isStepAligned(v) {\n    return new Decimal(v).minus(this._stepBase)\n      .modulo(this._allowedValueStep)\n      .isZero();\n  }\n\n  // Returns a Decimal.\n  _stepAlign(v, roundUp) {\n    const allowedValueStep = this._allowedValueStep;\n    const stepBase = this._stepBase;\n\n    return new Decimal(v).minus(stepBase)\n      .toNearest(allowedValueStep, roundUp ? Decimal.ROUND_UP : Decimal.ROUND_DOWN)\n      .add(stepBase);\n  }\n\n  // For <input>, https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#concept-fe-value\n  // is a simple value that is gotten and set, not computed.\n  _getValue() {\n    return this._value;\n  }\n\n  _legacyPreActivationBehavior() {\n    if (this.type === \"checkbox\") {\n      this.checked = !this.checked;\n      this._legacyActivationBehaviorPreviousIndeterminateState = this.indeterminate;\n      this.indeterminate = false;\n    } else if (this.type === \"radio\") {\n      this._preCheckedRadioState = this.checked;\n      this.checked = true;\n    }\n  }\n\n  _legacyCanceledActivationBehavior() {\n    if (this.type === \"checkbox\") {\n      this.checked = !this.checked;\n      this.indeterminate = this._legacyActivationBehaviorPreviousIndeterminateState;\n    } else if (this.type === \"radio\") {\n      if (this._preCheckedRadioState !== null) {\n        this.checked = this._preCheckedRadioState;\n        this._preCheckedRadioState = null;\n      }\n    }\n  }\n\n  _activationBehavior(event) {\n    if (!this._mutable && this.type !== \"checkbox\" && this.type !== \"radio\") {\n      return;\n    }\n\n    const { form } = this;\n\n    if (this.type === \"checkbox\" || (this.type === \"radio\" && !this._preCheckedRadioState)) {\n      if (this.isConnected) {\n        fireAnEvent(\"input\", this, undefined, { bubbles: true });\n        fireAnEvent(\"change\", this, undefined, { bubbles: true });\n      }\n    } else if (form && this.type === \"image\") {\n      // https://html.spec.whatwg.org/multipage/input.html#image-button-state-(type=image):input-activation-behavior\n\n      // TODO: if/when layout is implemented, record the selected coordinate at the start of dispatch and use it here,\n      // rather than relying on these getters that just mirror pageX/Y outside of dispatch\n      this._selectedCoordinate = { x: event.offsetX, y: event.offsetY };\n      form._doRequestSubmit(this);\n    } else if (form && this.type === \"submit\") {\n      form._doRequestSubmit(this);\n    } else if (form && this.type === \"reset\") {\n      form._doReset();\n    }\n  }\n\n  _attrModified(name, value, oldVal) {\n    const wrapper = idlUtils.wrapperForImpl(this);\n    if (!this._dirtyValue && name === \"value\") {\n      this._value = sanitizeValueByType(this, wrapper.defaultValue);\n    }\n    if (!this._dirtyCheckedness && name === \"checked\") {\n      this._checkedness = wrapper.defaultChecked;\n      if (this._checkedness) {\n        this._removeOtherRadioCheckedness();\n      }\n    }\n\n    if (name === \"name\" || name === \"type\") {\n      if (this._checkedness) {\n        this._removeOtherRadioCheckedness();\n      }\n    }\n\n    if (name === \"type\") {\n      const prevType = getTypeFromAttribute(oldVal);\n      const curType = getTypeFromAttribute(value);\n      // When an input element's type attribute changes state…\n      if (prevType !== curType) {\n        const prevValueMode = valueAttributeMode(prevType);\n        const curValueMode = valueAttributeMode(curType);\n        if (prevValueMode === \"value\" && this._value !== \"\" &&\n            (curValueMode === \"default\" || curValueMode === \"default/on\")) {\n          this.setAttributeNS(null, \"value\", this._value);\n        } else if (prevValueMode !== \"value\" && curValueMode === \"value\") {\n          this._value = this.getAttributeNS(null, \"value\") || \"\";\n          this._dirtyValue = false;\n        } else if (prevValueMode !== \"filename\" && curValueMode === \"filename\") {\n          this._value = \"\";\n        }\n\n        this._signalATypeChange();\n\n        this._value = sanitizeValueByType(this, this._value);\n\n        const previouslySelectable = this._idlMemberApplies(\"setRangeText\", prevType);\n        const nowSelectable = this._idlMemberApplies(\"setRangeText\", curType);\n        if (!previouslySelectable && nowSelectable) {\n          this._selectionStart = 0;\n          this._selectionEnd = 0;\n          this._selectionDirection = \"none\";\n        }\n      }\n    }\n\n    super._attrModified(name, value, oldVal);\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#signal-a-type-change\n  _signalATypeChange() {\n    if (this._checkedness) {\n      this._removeOtherRadioCheckedness();\n    }\n  }\n\n  _formReset() {\n    const wrapper = idlUtils.wrapperForImpl(this);\n    this._value = sanitizeValueByType(this, wrapper.defaultValue);\n    this._dirtyValue = false;\n    this._checkedness = wrapper.defaultChecked;\n    this._dirtyCheckedness = false;\n    if (this._checkedness) {\n      this._removeOtherRadioCheckedness();\n    }\n  }\n\n  _changedFormOwner() {\n    if (this._checkedness) {\n      this._removeOtherRadioCheckedness();\n    }\n  }\n\n  get _otherRadioGroupElements() {\n    const wrapper = idlUtils.wrapperForImpl(this);\n    const root = this._radioButtonGroupRoot;\n    if (!root) {\n      return [];\n    }\n\n    const result = [];\n\n    const descendants = domSymbolTree.treeIterator(root);\n    for (const candidate of descendants) {\n      if (candidate._radioButtonGroupRoot !== root) {\n        continue;\n      }\n\n      const candidateWrapper = idlUtils.wrapperForImpl(candidate);\n      if (!candidateWrapper.name || candidateWrapper.name !== wrapper.name) {\n        continue;\n      }\n\n      if (candidate !== this) {\n        result.push(candidate);\n      }\n    }\n    return result;\n  }\n\n  _removeOtherRadioCheckedness() {\n    for (const radioGroupElement of this._otherRadioGroupElements) {\n      radioGroupElement._checkedness = false;\n    }\n  }\n\n  get _radioButtonGroupRoot() {\n    const wrapper = idlUtils.wrapperForImpl(this);\n    if (this.type !== \"radio\" || !wrapper.name) {\n      return null;\n    }\n\n    let e = domSymbolTree.parent(this);\n    while (e) {\n      // root node of this home sub tree\n      // or the form element we belong to\n      if (!domSymbolTree.parent(e) || e._localName === \"form\") {\n        return e;\n      }\n      e = domSymbolTree.parent(e);\n    }\n    return null;\n  }\n\n  _someInRadioGroup(name) {\n    if (this[name]) {\n      return true;\n    }\n    return this._otherRadioGroupElements.some(radioGroupElement => radioGroupElement[name]);\n  }\n\n  get _mutable() {\n    return !isDisabled(this) && !this._hasAttributeAndApplies(\"readonly\");\n  }\n\n  get labels() {\n    return getLabelsForLabelable(this);\n  }\n\n  get form() {\n    return formOwner(this);\n  }\n\n  get checked() {\n    return this._checkedness;\n  }\n\n  set checked(checked) {\n    this._checkedness = Boolean(checked);\n    this._dirtyCheckedness = true;\n    if (this._checkedness) {\n      this._removeOtherRadioCheckedness();\n    }\n  }\n\n  get value() {\n    switch (valueAttributeMode(this.type)) {\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-value\n      case \"value\":\n        return this._getValue();\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-default\n      case \"default\": {\n        const attr = this.getAttributeNS(null, \"value\");\n        return attr !== null ? attr : \"\";\n      }\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-default-on\n      case \"default/on\": {\n        const attr = this.getAttributeNS(null, \"value\");\n        return attr !== null ? attr : \"on\";\n      }\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-filename\n      case \"filename\":\n        return this.files.length ? \"C:\\\\fakepath\\\\\" + this.files[0].name : \"\";\n      default:\n        throw new Error(\"jsdom internal error: unknown value attribute mode\");\n    }\n  }\n\n  set value(val) {\n    switch (valueAttributeMode(this.type)) {\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-value\n      case \"value\": {\n        const oldValue = this._value;\n        this._value = sanitizeValueByType(this, val);\n        this._dirtyValue = true;\n\n        if (oldValue !== this._value) {\n          this._selectionStart = this._selectionEnd = this._getValueLength();\n          this._selectionDirection = \"none\";\n        }\n        break;\n      }\n\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-default\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-default-on\n      case \"default\":\n      case \"default/on\":\n        this.setAttributeNS(null, \"value\", val);\n        break;\n\n      // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-filename\n      case \"filename\":\n        if (val === \"\") {\n          this.files.length = 0;\n        } else {\n          throw DOMException.create(this._globalObject, [\n            \"This input element accepts a filename, which may only be programmatically set to the empty string.\",\n            \"InvalidStateError\"\n          ]);\n        }\n        break;\n\n      default:\n        throw new Error(\"jsdom internal error: unknown value attribute mode\");\n    }\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#dom-input-valueasdate\n  get valueAsDate() {\n    if (!this._idlMemberApplies(\"valueAsDate\")) {\n      return null;\n    }\n\n    const window = this._ownerDocument._defaultView;\n    const convertedValue = this._convertStringToDate(this._value);\n\n    if (convertedValue instanceof Date) {\n      return new window.Date(convertedValue.getTime());\n    }\n\n    return null;\n  }\n\n  set valueAsDate(v) {\n    if (!this._idlMemberApplies(\"valueAsDate\")) {\n      throw DOMException.create(this._globalObject, [\n        \"Failed to set the 'valueAsDate' property on 'HTMLInputElement': This input element does not support Date \" +\n        \"values.\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    if (v !== null && !isDate(v)) {\n      throw new TypeError(\"Failed to set the 'valueAsDate' property on 'HTMLInputElement': The provided value is \" +\n        \"not a Date.\");\n    }\n\n    if (v === null || isNaN(v)) {\n      this._value = \"\";\n      return;\n    }\n\n    this._value = this._convertDateToString(v);\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#dom-input-valueasnumber\n  get valueAsNumber() {\n    if (!this._idlMemberApplies(\"valueAsNumber\")) {\n      return NaN;\n    }\n\n    const parsedValue = this._convertStringToNumber(this._value);\n    return parsedValue !== null ? parsedValue : NaN;\n  }\n\n  set valueAsNumber(v) {\n    if (!isFinite(v) && !isNaN(v)) {\n      throw new TypeError(\"Failed to set infinite value as Number\");\n    }\n\n    if (!this._idlMemberApplies(\"valueAsNumber\")) {\n      throw DOMException.create(this._globalObject, [\n        \"Failed to set the 'valueAsNumber' property on 'HTMLInputElement': This input element does not support \" +\n        \"Number values.\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    if (isNaN(v)) {\n      this._value = \"\";\n    } else {\n      this._value = this._convertNumberToString(v);\n    }\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#dom-input-stepup\n  _stepUpdate(n, isUp) {\n    const methodName = isUp ? \"stepUp\" : \"stepDown\";\n    if (!this._idlMemberApplies(methodName)) {\n      throw DOMException.create(this._globalObject, [\n        `Failed to invoke '${methodName}' method on 'HTMLInputElement': ` +\n        \"This input element does not support Number values.\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    const allowedValueStep = this._allowedValueStep;\n    if (allowedValueStep === null) {\n      throw DOMException.create(this._globalObject, [\n        `Failed to invoke '${methodName}' method on 'HTMLInputElement': ` +\n        \"This input element does not support value step.\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    const min = this._minimum;\n    const max = this._maximum;\n\n    if (min !== null && max !== null) {\n      if (min > max) {\n        return;\n      }\n\n      const candidateStepValue = this._stepAlign(Decimal.add(min, allowedValueStep), /* roundUp = */ false);\n      if (candidateStepValue.lt(min) || candidateStepValue.gt(max)) {\n        return;\n      }\n    }\n\n    let value = 0;\n    try {\n      value = this.valueAsNumber;\n      if (isNaN(value)) { // Empty value is parsed as NaN.\n        value = 0;\n      }\n    } catch {\n      // Step 5. Default value is 0.\n    }\n    value = new Decimal(value);\n\n    const valueBeforeStepping = value;\n\n    if (!this._isStepAligned(value)) {\n      value = this._stepAlign(value, /* roundUp = */ isUp);\n    } else {\n      let delta = Decimal.mul(n, allowedValueStep);\n      if (!isUp) {\n        delta = delta.neg();\n      }\n      value = value.add(delta);\n    }\n\n    if (min !== null && value.lt(min)) {\n      value = this._stepAlign(min, /* roundUp = */ true);\n    }\n\n    if (max !== null && value.gt(max)) {\n      value = this._stepAlign(max, /* roundUp = */ false);\n    }\n\n    if (isUp ? value.lt(valueBeforeStepping) : value.gt(valueBeforeStepping)) {\n      return;\n    }\n\n    this._value = this._convertNumberToString(value.toNumber());\n  }\n\n  stepDown(n = 1) {\n    return this._stepUpdate(n, false);\n  }\n\n  stepUp(n = 1) {\n    return this._stepUpdate(n, true);\n  }\n\n  get files() {\n    if (this.type === \"file\") {\n      this[filesSymbol] ||= FileList.createImpl(this._globalObject);\n    } else {\n      this[filesSymbol] = null;\n    }\n    return this[filesSymbol];\n  }\n\n  set files(value) {\n    if (this.type === \"file\" && value !== null) {\n      this[filesSymbol] = value;\n    }\n  }\n\n  get type() {\n    const typeAttribute = this.getAttributeNS(null, \"type\");\n    return getTypeFromAttribute(typeAttribute);\n  }\n\n  set type(type) {\n    this.setAttributeNS(null, \"type\", type);\n  }\n\n  _dispatchSelectEvent() {\n    setTimeout(() => fireAnEvent(\"select\", this, undefined, { bubbles: true, cancelable: false }), 0);\n  }\n\n  _getValueLength() {\n    return typeof this.value === \"string\" ? this.value.length : 0;\n  }\n\n  select() {\n    if (!this._idlMemberApplies(\"select\")) {\n      return;\n    }\n\n    this._selectionStart = 0;\n    this._selectionEnd = this._getValueLength();\n    this._selectionDirection = \"none\";\n    this._dispatchSelectEvent();\n  }\n\n  get selectionStart() {\n    if (!this._idlMemberApplies(\"selectionStart\")) {\n      return null;\n    }\n\n    return this._selectionStart;\n  }\n\n  set selectionStart(start) {\n    if (!this._idlMemberApplies(\"selectionStart\")) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    this.setSelectionRange(start, Math.max(start, this._selectionEnd), this._selectionDirection);\n  }\n\n  get selectionEnd() {\n    if (!this._idlMemberApplies(\"selectionEnd\")) {\n      return null;\n    }\n\n    return this._selectionEnd;\n  }\n\n  set selectionEnd(end) {\n    if (!this._idlMemberApplies(\"selectionEnd\")) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    this.setSelectionRange(this._selectionStart, end, this._selectionDirection);\n  }\n\n  get selectionDirection() {\n    if (!this._idlMemberApplies(\"selectionDirection\")) {\n      return null;\n    }\n\n    return this._selectionDirection;\n  }\n\n  set selectionDirection(dir) {\n    if (!this._idlMemberApplies(\"selectionDirection\")) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    this.setSelectionRange(this._selectionStart, this._selectionEnd, dir);\n  }\n\n  setSelectionRange(start, end, dir) {\n    if (!this._idlMemberApplies(\"setSelectionRange\")) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    this._selectionEnd = Math.min(end, this._getValueLength());\n    this._selectionStart = Math.min(start, this._selectionEnd);\n    this._selectionDirection = dir === \"forward\" || dir === \"backward\" ? dir : \"none\";\n    this._dispatchSelectEvent();\n  }\n\n  setRangeText(repl, start, end, selectionMode = \"preserve\") {\n    if (!this._idlMemberApplies(\"setRangeText\")) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    if (arguments.length < 2) {\n      start = this._selectionStart;\n      end = this._selectionEnd;\n    } else if (start > end) {\n      throw DOMException.create(this._globalObject, [\"The index is not in the allowed range.\", \"IndexSizeError\"]);\n    }\n\n    start = Math.min(start, this._getValueLength());\n    end = Math.min(end, this._getValueLength());\n\n    const val = this.value;\n    let selStart = this._selectionStart;\n    let selEnd = this._selectionEnd;\n\n    this.value = val.slice(0, start) + repl + val.slice(end);\n\n    const newEnd = start + repl.length;\n\n    if (selectionMode === \"select\") {\n      this.setSelectionRange(start, newEnd);\n    } else if (selectionMode === \"start\") {\n      this.setSelectionRange(start, start);\n    } else if (selectionMode === \"end\") {\n      this.setSelectionRange(newEnd, newEnd);\n    } else { // preserve\n      const delta = repl.length - (end - start);\n\n      if (selStart > end) {\n        selStart += delta;\n      } else if (selStart > start) {\n        selStart = start;\n      }\n\n      if (selEnd > end) {\n        selEnd += delta;\n      } else if (selEnd > start) {\n        selEnd = newEnd;\n      }\n\n      this.setSelectionRange(selStart, selEnd);\n    }\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#the-list-attribute\n  get list() {\n    const id = this._getAttributeIfApplies(\"list\");\n    if (!id) {\n      return null;\n    }\n\n    const el = this.getRootNode({}).getElementById(id);\n\n    if (el && el.localName === \"datalist\") {\n      return el;\n    }\n\n    return null;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#the-min-and-max-attributes\n  get _minimum() {\n    let min = this._defaultMinimum;\n    const attr = this._getAttributeIfApplies(\"min\");\n    if (attr !== null && this._convertStringToNumber !== undefined) {\n      const parsed = this._convertStringToNumber(attr);\n      if (parsed !== null) {\n        min = parsed;\n      }\n    }\n    return min;\n  }\n\n  get _maximum() {\n    let max = this._defaultMaximum;\n    const attr = this._getAttributeIfApplies(\"max\");\n    if (attr !== null && this._convertStringToNumber !== undefined) {\n      const parsed = this._convertStringToNumber(attr);\n      if (parsed !== null) {\n        max = parsed;\n      }\n    }\n    return max;\n  }\n\n  get _defaultMinimum() {\n    if (this.type === \"range\") {\n      return 0;\n    }\n    return null;\n  }\n\n  get _defaultMaximum() {\n    if (this.type === \"range\") {\n      return 100;\n    }\n    return null;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#concept-input-step\n  get _allowedValueStep() {\n    if (!this._contentAttributeApplies(\"step\")) {\n      return null;\n    }\n    const attr = this.getAttributeNS(null, \"step\");\n    if (attr === null) {\n      return this._defaultStep * this._stepScaleFactor;\n    }\n    if (asciiCaseInsensitiveMatch(attr, \"any\")) {\n      return null;\n    }\n    const parsedStep = parseFloatingPointNumber(attr);\n    if (parsedStep === null || parsedStep <= 0) {\n      return this._defaultStep * this._stepScaleFactor;\n    }\n    return parsedStep * this._stepScaleFactor;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#concept-input-step-scale\n  get _stepScaleFactor() {\n    const dayInMilliseconds = 24 * 60 * 60 * 1000;\n    switch (this.type) {\n      case \"week\":\n        return 7 * dayInMilliseconds;\n      case \"date\":\n        return dayInMilliseconds;\n      case \"datetime-local\":\n      case \"datetime\":\n      case \"time\":\n        return 1000;\n    }\n    return 1;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#concept-input-step-default\n  get _defaultStep() {\n    if (this.type === \"datetime-local\" || this.type === \"datetime\" || this.type === \"time\") {\n      return 60;\n    }\n    return 1;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#concept-input-min-zero\n  get _stepBase() {\n    if (this._hasAttributeAndApplies(\"min\")) {\n      const min = this._convertStringToNumber(this.getAttributeNS(null, \"min\"));\n      if (min !== null) {\n        return min;\n      }\n    }\n    if (this.hasAttributeNS(null, \"value\")) {\n      const value = this._convertStringToNumber(this.getAttributeNS(null, \"value\"));\n      if (value !== null) {\n        return value;\n      }\n    }\n    if (this._defaultStepBase !== null) {\n      return this._defaultStepBase;\n    }\n    return 0;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#concept-input-step-default-base\n  get _defaultStepBase() {\n    if (this.type === \"week\") {\n      // The start of week 1970-W01\n      return -259200000;\n    }\n    return null;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#common-input-element-attributes\n  // When an attribute doesn't apply to an input element, user agents must ignore the attribute.\n  _contentAttributeApplies(attribute) {\n    return applicableTypesForContentAttribute[attribute].has(this.type);\n  }\n\n  _hasAttributeAndApplies(attribute) {\n    return this._contentAttributeApplies(attribute) && this.hasAttributeNS(null, attribute);\n  }\n\n  _getAttributeIfApplies(attribute) {\n    if (this._contentAttributeApplies(attribute)) {\n      return this.getAttributeNS(null, attribute);\n    }\n    return null;\n  }\n\n  _idlMemberApplies(member, type = this.type) {\n    return applicableTypesForIDLMember[member].has(type);\n  }\n\n  _barredFromConstraintValidationSpecialization() {\n    // https://html.spec.whatwg.org/multipage/input.html#hidden-state-(type=hidden)\n    // https://html.spec.whatwg.org/multipage/input.html#reset-button-state-(type=reset)\n    // https://html.spec.whatwg.org/multipage/input.html#button-state-(type=button)\n    const willNotValidateTypes = new Set([\"hidden\", \"reset\", \"button\"]);\n    // https://html.spec.whatwg.org/multipage/input.html#attr-input-readonly\n    const readOnly = this._hasAttributeAndApplies(\"readonly\");\n\n    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-disabled\n    return willNotValidateTypes.has(this.type) || readOnly;\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#concept-input-required\n  get _required() {\n    return this._hasAttributeAndApplies(\"required\");\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#has-a-periodic-domain\n  get _hasAPeriodicDomain() {\n    return this.type === \"time\";\n  }\n\n  // https://html.spec.whatwg.org/multipage/input.html#has-a-reversed-range\n  get _hasAReversedRange() {\n    return this._hasAPeriodicDomain && this._maximum < this._minimum;\n  }\n\n  get validity() {\n    if (!this._validity) {\n      // Constraint validation: When an element has a reversed range, and the result of applying\n      // the algorithm to convert a string to a number to the string given by the element's value\n      // is a number, and the number obtained from that algorithm is more than the maximum and less\n      // than the minimum, the element is simultaneously suffering from an underflow and suffering\n      // from an overflow.\n      const reversedRangeSufferingOverUnderflow = () => {\n        const parsedValue = this._convertStringToNumber(this._value);\n        return parsedValue !== null && parsedValue > this._maximum && parsedValue < this._minimum;\n      };\n\n      const state = {\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-being-missing\n        valueMissing: () => {\n          // https://html.spec.whatwg.org/multipage/input.html#the-required-attribute\n          // Constraint validation: If the element is required, and its value IDL attribute applies\n          // and is in the mode value, and the element is mutable, and the element's value is the\n          // empty string, then the element is suffering from being missing.\n          //\n          // Note: As of today, the value IDL attribute always applies.\n          if (this._required && valueAttributeMode(this.type) === \"value\" && this._mutable && this._value === \"\") {\n            return true;\n          }\n\n          switch (this.type) {\n            // https://html.spec.whatwg.org/multipage/input.html#checkbox-state-(type=checkbox)\n            // Constraint validation: If the element is required and its checkedness is\n            // false, then the element is suffering from being missing.\n            case \"checkbox\":\n              if (this._required && !this._checkedness) {\n                return true;\n              }\n              break;\n\n            // https://html.spec.whatwg.org/multipage/input.html#radio-button-state-(type=radio)\n            // Constraint validation: If an element in the radio button group is required,\n            // and all of the input elements in the radio button group have a checkedness\n            // that is false, then the element is suffering from being missing.\n            case \"radio\":\n              if (this._someInRadioGroup(\"_required\") && !this._someInRadioGroup(\"checked\")) {\n                return true;\n              }\n              break;\n\n            // https://html.spec.whatwg.org/multipage/input.html#file-upload-state-(type=file)\n            // Constraint validation: If the element is required and the list of selected files is\n            // empty, then the element is suffering from being missing.\n            case \"file\":\n              if (this._required && this.files.length === 0) {\n                return true;\n              }\n              break;\n          }\n\n          return false;\n        },\n\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-being-too-long\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-maxlength\n        // jsdom has no way at the moment to emulate a user interaction, so tooLong/tooShort have\n        // to be set to false.\n        tooLong: () => false,\n\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-being-too-short\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-minlength\n        tooShort: () => false,\n\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-an-overflow\n        rangeOverflow: () => {\n          // https://html.spec.whatwg.org/multipage/input.html#the-min-and-max-attributes\n          if (this._hasAReversedRange) {\n            return reversedRangeSufferingOverUnderflow();\n          }\n          // Constraint validation: When the element has a maximum and does not have a reversed\n          // range, and the result of applying the algorithm to convert a string to a number to the\n          // string given by the element's value is a number, and the number obtained from that\n          // algorithm is more than the maximum, the element is suffering from an overflow.\n          if (this._maximum !== null) {\n            const parsedValue = this._convertStringToNumber(this._value);\n            if (parsedValue !== null && parsedValue > this._maximum) {\n              return true;\n            }\n          }\n          return false;\n        },\n\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-an-underflow\n        rangeUnderflow: () => {\n          // https://html.spec.whatwg.org/multipage/input.html#the-min-and-max-attributes\n          if (this._hasAReversedRange) {\n            return reversedRangeSufferingOverUnderflow();\n          }\n          // Constraint validation: When the element has a minimum and does not have a reversed\n          // range, and the result of applying the algorithm to convert a string to a number to the\n          // string given by the element's value is a number, and the number obtained from that\n          // algorithm is less than the minimum, the element is suffering from an underflow.\n          if (this._minimum !== null) {\n            const parsedValue = this._convertStringToNumber(this._value);\n            if (parsedValue !== null && parsedValue < this._minimum) {\n              return true;\n            }\n          }\n          return false;\n        },\n\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-a-pattern-mismatch\n        patternMismatch: () => {\n          // https://html.spec.whatwg.org/multipage/input.html#the-pattern-attribute\n          if (this._value === \"\" || !this._hasAttributeAndApplies(\"pattern\")) {\n            return false;\n          }\n          let regExp;\n          try {\n            const pattern = this.getAttributeNS(null, \"pattern\");\n            // The pattern attribute should be matched against the entire value, not just any\n            // subset, so add ^ and $ anchors. But also check the validity of the regex itself\n            // first.\n            new RegExp(pattern, \"v\"); // eslint-disable-line no-new\n            regExp = new RegExp(\"^(?:\" + pattern + \")$\", \"v\");\n          } catch {\n            return false;\n          }\n          if (this._hasAttributeAndApplies(\"multiple\")) {\n            return !splitOnCommas(this._value).every(value => regExp.test(value));\n          }\n          return !regExp.test(this._value);\n        },\n\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-a-step-mismatch\n        // https://html.spec.whatwg.org/multipage/input.html#attr-input-step\n        stepMismatch: () => {\n          const allowedValueStep = this._allowedValueStep;\n          if (allowedValueStep === null) {\n            return false;\n          }\n          const number = this._convertStringToNumber(this._value);\n          return number !== null && !this._isStepAligned(number);\n        },\n\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#suffering-from-a-type-mismatch\n        typeMismatch: () => {\n          switch (this.type) {\n            // https://html.spec.whatwg.org/multipage/input.html#url-state-(type=url)\n            // Constraint validation: While the value of the element is neither the empty string\n            // nor a valid absolute URL, the element is suffering from a type mismatch.\n            case \"url\":\n              if (this._value !== \"\" && !isValidAbsoluteURL(this._value)) {\n                return true;\n              }\n              break;\n\n            // https://html.spec.whatwg.org/multipage/input.html#e-mail-state-(type=email)\n            // Constraint validation [multiple=false]: While the value of the element is neither the empty\n            // string nor a single valid e - mail address, the element is suffering from a type mismatch.\n            // Constraint validation [multiple=true]: While the value of the element is not a valid e-mail address list,\n            // the element is suffering from a type mismatch.\n            case \"email\":\n              if (this._value !== \"\" && !isValidEmailAddress(this._getValue(), this.hasAttributeNS(null, \"multiple\"))) {\n                return true;\n              }\n              break;\n          }\n          return false;\n        }\n      };\n\n      this._validity = ValidityState.createImpl(this._globalObject, [], {\n        element: this,\n        state\n      });\n    }\n    return this._validity;\n  }\n\n  [cloningSteps](copy, node) {\n    copy._value = node._value;\n    copy._checkedness = node._checkedness;\n    copy._dirtyValue = node._dirtyValue;\n    copy._dirtyCheckedness = node._dirtyCheckedness;\n  }\n}\n\nmixin(HTMLInputElementImpl.prototype, DefaultConstraintValidationImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLInputElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst SelectionMode = require(\"./SelectionMode.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst FileList = require(\"./FileList.js\");\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst create_DOMException = require(\"./DOMException.js\").create;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLInputElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLInputElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLInputElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLInputElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    stepUp() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'stepUp' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'stepUp' on 'HTMLInputElement': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 1;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].stepUp(...args);\n    }\n\n    stepDown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'stepDown' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'stepDown' on 'HTMLInputElement': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 1;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].stepDown(...args);\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    setCustomValidity(error) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setCustomValidity' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setCustomValidity' on 'HTMLInputElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setCustomValidity' on 'HTMLInputElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setCustomValidity(...args);\n    }\n\n    select() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'select' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol].select();\n    }\n\n    setRangeText(replacement) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setRangeText' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setRangeText' on 'HTMLInputElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      switch (arguments.length) {\n        case 1:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          break;\n        case 2:\n          throw new globalObject.TypeError(\n            `Failed to execute 'setRangeText' on 'HTMLInputElement': only ${arguments.length} arguments present.`\n          );\n          break;\n        case 3:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 3\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          break;\n        default:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 3\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[3];\n            if (curArg !== undefined) {\n              curArg = SelectionMode.convert(globalObject, curArg, {\n                context: \"Failed to execute 'setRangeText' on 'HTMLInputElement': parameter 4\"\n              });\n            } else {\n              curArg = \"preserve\";\n            }\n            args.push(curArg);\n          }\n      }\n      return esValue[implSymbol].setRangeText(...args);\n    }\n\n    setSelectionRange(start, end) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setSelectionRange' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setSelectionRange' on 'HTMLInputElement': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setSelectionRange' on 'HTMLInputElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setSelectionRange' on 'HTMLInputElement': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'setSelectionRange' on 'HTMLInputElement': parameter 3\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setSelectionRange(...args);\n    }\n\n    get accept() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get accept' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"accept\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set accept(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set accept' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'accept' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"accept\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get alt() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get alt' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"alt\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set alt(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set alt' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'alt' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"alt\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get autocomplete() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get autocomplete' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"autocomplete\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set autocomplete(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set autocomplete' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'autocomplete' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"autocomplete\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get autofocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get autofocus' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"autofocus\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set autofocus(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set autofocus' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'autofocus' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"autofocus\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"autofocus\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get defaultChecked() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultChecked' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"checked\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set defaultChecked(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defaultChecked' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'defaultChecked' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"checked\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"checked\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get checked() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get checked' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"checked\"];\n    }\n\n    set checked(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set checked' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'checked' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"checked\"] = V;\n    }\n\n    get dirName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get dirName' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"dirname\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set dirName(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set dirName' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'dirName' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"dirname\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get disabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get disabled' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"disabled\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set disabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set disabled' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'disabled' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"disabled\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"disabled\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get files() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get files' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"files\"]);\n    }\n\n    set files(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set files' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = FileList.convert(globalObject, V, {\n          context: \"Failed to set the 'files' property on 'HTMLInputElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"files\"] = V;\n    }\n\n    get formNoValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get formNoValidate' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"formnovalidate\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set formNoValidate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set formNoValidate' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'formNoValidate' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"formnovalidate\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"formnovalidate\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get formTarget() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get formTarget' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"formtarget\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set formTarget(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set formTarget' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'formTarget' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"formtarget\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get indeterminate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get indeterminate' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"indeterminate\"];\n    }\n\n    set indeterminate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set indeterminate' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'indeterminate' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"indeterminate\"] = V;\n    }\n\n    get inputMode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get inputMode' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"inputmode\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set inputMode(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set inputMode' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'inputMode' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"inputmode\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get list() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get list' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"list\"]);\n    }\n\n    get max() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get max' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"max\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set max(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set max' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'max' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"max\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get maxLength() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get maxLength' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"maxlength\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && conversions.long(value) === value) {\n            return value;\n          }\n        }\n        return -1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set maxLength(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set maxLength' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'maxLength' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V < 0) {\n          throw create_DOMException(globalObject, [\n            `The negative value ${V} cannot be set for the maxLength property.`,\n            \"IndexSizeError\"\n          ]);\n        }\n\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"maxlength\", String(V));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get min() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get min' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"min\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set min(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set min' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'min' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"min\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get minLength() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get minLength' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"minlength\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && conversions.long(value) === value) {\n            return value;\n          }\n        }\n        return -1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set minLength(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set minLength' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'minLength' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V < 0) {\n          throw create_DOMException(globalObject, [\n            `The negative value ${V} cannot be set for the minLength property.`,\n            \"IndexSizeError\"\n          ]);\n        }\n\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"minlength\", String(V));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get multiple() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get multiple' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"multiple\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set multiple(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set multiple' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'multiple' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"multiple\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"multiple\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get pattern() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pattern' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"pattern\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set pattern(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set pattern' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'pattern' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"pattern\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get placeholder() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get placeholder' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"placeholder\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set placeholder(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set placeholder' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'placeholder' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"placeholder\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get readOnly() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readOnly' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"readonly\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set readOnly(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set readOnly' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'readOnly' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"readonly\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"readonly\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get required() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get required' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"required\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set required(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set required' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'required' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"required\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"required\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get size() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get size' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"size\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 1 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 20;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set size(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set size' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'size' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === 0) {\n          throw create_DOMException(globalObject, [\n            `The value ${V} cannot be set for the size property.`,\n            \"IndexSizeError\"\n          ]);\n        }\n\n        const newValue = V <= 2147483647 && V >= 1 ? V : 20;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"size\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get step() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get step' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"step\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set step(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set step' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'step' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"step\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"type\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"type\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get defaultValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultValue' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"value\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set defaultValue(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defaultValue' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'defaultValue' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"value\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get valueAsDate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get valueAsDate' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"valueAsDate\"];\n    }\n\n    set valueAsDate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set valueAsDate' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"object\"](V, {\n          context: \"Failed to set the 'valueAsDate' property on 'HTMLInputElement': The provided value\",\n          globals: globalObject\n        });\n      }\n      esValue[implSymbol][\"valueAsDate\"] = V;\n    }\n\n    get valueAsNumber() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get valueAsNumber' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"valueAsNumber\"];\n    }\n\n    set valueAsNumber(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set valueAsNumber' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"unrestricted double\"](V, {\n        context: \"Failed to set the 'valueAsNumber' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"valueAsNumber\"] = V;\n    }\n\n    get willValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get willValidate' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"willValidate\"];\n    }\n\n    get validity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validity' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"validity\"]);\n    }\n\n    get validationMessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validationMessage' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"validationMessage\"];\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n\n    get selectionStart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectionStart' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectionStart\"];\n    }\n\n    set selectionStart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectionStart' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"unsigned long\"](V, {\n          context: \"Failed to set the 'selectionStart' property on 'HTMLInputElement': The provided value\",\n          globals: globalObject\n        });\n      }\n      esValue[implSymbol][\"selectionStart\"] = V;\n    }\n\n    get selectionEnd() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectionEnd' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectionEnd\"];\n    }\n\n    set selectionEnd(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectionEnd' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"unsigned long\"](V, {\n          context: \"Failed to set the 'selectionEnd' property on 'HTMLInputElement': The provided value\",\n          globals: globalObject\n        });\n      }\n      esValue[implSymbol][\"selectionEnd\"] = V;\n    }\n\n    get selectionDirection() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectionDirection' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectionDirection\"];\n    }\n\n    set selectionDirection(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectionDirection' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'selectionDirection' property on 'HTMLInputElement': The provided value\",\n          globals: globalObject\n        });\n      }\n      esValue[implSymbol][\"selectionDirection\"] = V;\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get useMap() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get useMap' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"usemap\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set useMap(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set useMap' called on an object that is not a valid instance of HTMLInputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'useMap' property on 'HTMLInputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"usemap\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLInputElement.prototype, {\n    stepUp: { enumerable: true },\n    stepDown: { enumerable: true },\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    setCustomValidity: { enumerable: true },\n    select: { enumerable: true },\n    setRangeText: { enumerable: true },\n    setSelectionRange: { enumerable: true },\n    accept: { enumerable: true },\n    alt: { enumerable: true },\n    autocomplete: { enumerable: true },\n    autofocus: { enumerable: true },\n    defaultChecked: { enumerable: true },\n    checked: { enumerable: true },\n    dirName: { enumerable: true },\n    disabled: { enumerable: true },\n    form: { enumerable: true },\n    files: { enumerable: true },\n    formNoValidate: { enumerable: true },\n    formTarget: { enumerable: true },\n    indeterminate: { enumerable: true },\n    inputMode: { enumerable: true },\n    list: { enumerable: true },\n    max: { enumerable: true },\n    maxLength: { enumerable: true },\n    min: { enumerable: true },\n    minLength: { enumerable: true },\n    multiple: { enumerable: true },\n    name: { enumerable: true },\n    pattern: { enumerable: true },\n    placeholder: { enumerable: true },\n    readOnly: { enumerable: true },\n    required: { enumerable: true },\n    size: { enumerable: true },\n    src: { enumerable: true },\n    step: { enumerable: true },\n    type: { enumerable: true },\n    defaultValue: { enumerable: true },\n    value: { enumerable: true },\n    valueAsDate: { enumerable: true },\n    valueAsNumber: { enumerable: true },\n    willValidate: { enumerable: true },\n    validity: { enumerable: true },\n    validationMessage: { enumerable: true },\n    labels: { enumerable: true },\n    selectionStart: { enumerable: true },\n    selectionEnd: { enumerable: true },\n    selectionDirection: { enumerable: true },\n    align: { enumerable: true },\n    useMap: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLInputElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLInputElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLInputElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLInputElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst MouseEvent = require(\"../../../generated/idl/MouseEvent\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst NODE_TYPE = require(\"../node-type\");\nconst { isLabelable, isDisabled, isInteractiveContent } = require(\"../helpers/form-controls\");\nconst { isInclusiveAncestor } = require(\"../helpers/node\");\nconst { fireAnEvent } = require(\"../helpers/events\");\n\nfunction sendClickToAssociatedNode(node) {\n  fireAnEvent(\"click\", node, MouseEvent, {\n    bubbles: true,\n    cancelable: true,\n    view: node.ownerDocument ? node.ownerDocument.defaultView : null,\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    button: 0,\n    detail: 1,\n    relatedTarget: null\n  });\n}\n\nclass HTMLLabelElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._hasActivationBehavior = true;\n  }\n\n  get control() {\n    if (this.hasAttributeNS(null, \"for\")) {\n      const forValue = this.getAttributeNS(null, \"for\");\n      if (forValue === \"\") {\n        return null;\n      }\n      const root = this.getRootNode({});\n      for (const descendant of domSymbolTree.treeIterator(root)) {\n        if (descendant.nodeType === NODE_TYPE.ELEMENT_NODE &&\n          descendant.getAttributeNS(null, \"id\") === forValue) {\n          return isLabelable(descendant) ? descendant : null;\n        }\n      }\n      return null;\n    }\n    for (const descendant of domSymbolTree.treeIterator(this)) {\n      if (isLabelable(descendant)) {\n        return descendant;\n      }\n    }\n    return null;\n  }\n\n  get form() {\n    const node = this.control;\n    if (node) {\n      return node.form;\n    }\n    return null;\n  }\n\n  _activationBehavior(event) {\n    // Check if the event's target is an inclusive descendant of any interactive content descendant of this <label>.\n    // If so, do nothing.\n    if (event.target && event.target !== this && isInclusiveAncestor(this, event.target)) {\n      for (const ancestor of domSymbolTree.ancestorsIterator(event.target)) {\n        if (ancestor === this) {\n          break;\n        }\n        if (isInteractiveContent(ancestor)) {\n          return;\n        }\n      }\n    }\n\n    const node = this.control;\n    if (node && !isDisabled(node)) {\n      // Check if the control is an inclusive ancestor of the event's target (and has already received this event).\n      // If so, do nothing.\n      // See https://github.com/whatwg/html/issues/5415.\n      if (event.target && isInclusiveAncestor(node, event.target)) {\n        return;\n      }\n\n      sendClickToAssociatedNode(node);\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLLabelElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLLabelElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLLabelElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLLabelElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLLabelElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLLabelElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get htmlFor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get htmlFor' called on an object that is not a valid instance of HTMLLabelElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"for\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set htmlFor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set htmlFor' called on an object that is not a valid instance of HTMLLabelElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'htmlFor' property on 'HTMLLabelElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"for\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get control() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get control' called on an object that is not a valid instance of HTMLLabelElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"control\"]);\n    }\n  }\n  Object.defineProperties(HTMLLabelElement.prototype, {\n    form: { enumerable: true },\n    htmlFor: { enumerable: true },\n    control: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLLabelElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLLabelElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLLabelElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLLabelElement-impl.js\");\n","\"use strict\";\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { formOwner } = require(\"../helpers/form-controls\");\nconst { HTML_NS } = require(\"../helpers/namespaces\");\n\nclass HTMLLegendElementImpl extends HTMLElementImpl {\n  get form() {\n    const parent = this.parentNode;\n    if (parent && parent._localName === \"fieldset\" && parent.namespaceURI === HTML_NS) {\n      return formOwner(parent);\n    }\n    return null;\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLLegendElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLLegendElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLLegendElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLLegendElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLLegendElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLLegendElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLLegendElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLLegendElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLLegendElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLLegendElement.prototype, {\n    form: { enumerable: true },\n    align: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLLegendElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLLegendElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLLegendElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLLegendElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLMapElementImpl extends HTMLElementImpl {\n  get areas() {\n    return this.getElementsByTagName(\"AREA\");\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLMapElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLMapElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLMapElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLMapElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLMapElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLMapElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLMapElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLMapElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get areas() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get areas' called on an object that is not a valid instance of HTMLMapElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"areas\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"areas\"]);\n      });\n    }\n  }\n  Object.defineProperties(HTMLMapElement.prototype, {\n    name: { enumerable: true },\n    areas: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLMapElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLMapElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLMapElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLMapElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLMarqueeElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLMarqueeElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLMarqueeElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLMarqueeElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLMarqueeElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLMarqueeElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get behavior() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get behavior' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"behavior\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set behavior(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set behavior' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'behavior' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"behavior\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get bgColor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get bgColor' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"bgcolor\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set bgColor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set bgColor' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'bgColor' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"bgcolor\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get direction() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get direction' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"direction\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set direction(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set direction' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'direction' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"direction\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"height\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"height\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hspace() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hspace' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"hspace\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hspace(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hspace' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'hspace' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"hspace\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get scrollAmount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrollAmount' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"scrollamount\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set scrollAmount(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scrollAmount' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'scrollAmount' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"scrollamount\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get scrollDelay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrollDelay' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"scrolldelay\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set scrollDelay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scrollDelay' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'scrollDelay' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"scrolldelay\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get trueSpeed() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get trueSpeed' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"truespeed\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set trueSpeed(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set trueSpeed' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'trueSpeed' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"truespeed\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"truespeed\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vspace() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vspace' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"vspace\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vspace(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vspace' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'vspace' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"vspace\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLMarqueeElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLMarqueeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLMarqueeElement.prototype, {\n    behavior: { enumerable: true },\n    bgColor: { enumerable: true },\n    direction: { enumerable: true },\n    height: { enumerable: true },\n    hspace: { enumerable: true },\n    scrollAmount: { enumerable: true },\n    scrollDelay: { enumerable: true },\n    trueSpeed: { enumerable: true },\n    vspace: { enumerable: true },\n    width: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLMarqueeElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLMarqueeElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLMarqueeElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLMarqueeElement-impl.js\");\n","\"use strict\";\n\nconst enumerationValues = new Set([\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"]);\nexports.enumerationValues = enumerationValues;\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  const string = `${value}`;\n  if (!enumerationValues.has(string)) {\n    throw new globalObject.TypeError(`${context} '${string}' is not a valid enumeration value for TextTrackKind`);\n  }\n  return string;\n};\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { notImplementedMethod } = require(\"../../browser/not-implemented\");\nconst { fireAnEvent } = require(\"../helpers/events\");\n\nfunction getTimeRangeDummy() {\n  return {\n    length: 0,\n    start() {\n      return 0;\n    },\n    end() {\n      return 0;\n    }\n  };\n}\n\nclass HTMLMediaElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._muted = false;\n    this._volume = 1.0;\n    this.readyState = 0;\n    this.networkState = 0;\n    this.currentTime = 0;\n    this.currentSrc = \"\";\n    this.buffered = getTimeRangeDummy();\n    this.seeking = false;\n    this.duration = NaN;\n    this.paused = true;\n    this.played = getTimeRangeDummy();\n    this.seekable = getTimeRangeDummy();\n    this.ended = false;\n    this.audioTracks = [];\n    this.videoTracks = [];\n    this.textTracks = [];\n  }\n\n  get defaultPlaybackRate() {\n    if (this._defaultPlaybackRate === undefined) {\n      return 1.0;\n    }\n    return this._defaultPlaybackRate;\n  }\n\n  set defaultPlaybackRate(v) {\n    if (v === 0.0) {\n      throw DOMException.create(this._globalObject, [\"The operation is not supported.\", \"NotSupportedError\"]);\n    }\n    if (this._defaultPlaybackRate !== v) {\n      this._defaultPlaybackRate = v;\n      this._dispatchRateChange();\n    }\n  }\n\n  get playbackRate() {\n    if (this._playbackRate === undefined) {\n      return 1.0;\n    }\n    return this._playbackRate;\n  }\n\n  set playbackRate(v) {\n    if (v !== this._playbackRate) {\n      this._playbackRate = v;\n      this._dispatchRateChange();\n    }\n  }\n\n  get muted() {\n    return this._muted;\n  }\n\n  set muted(v) {\n    if (v !== this._muted) {\n      this._muted = v;\n      this._dispatchVolumeChange();\n    }\n  }\n\n  get defaultMuted() {\n    return this.getAttributeNS(null, \"muted\") !== null;\n  }\n\n  set defaultMuted(v) {\n    if (v) {\n      this.setAttributeNS(null, \"muted\", v);\n    } else {\n      this.removeAttributeNS(null, \"muted\");\n    }\n  }\n\n  get volume() {\n    return this._volume;\n  }\n\n  set volume(v) {\n    if (v < 0 || v > 1) {\n      throw DOMException.create(this._globalObject, [\"The index is not in the allowed range.\", \"IndexSizeError\"]);\n    }\n    if (this._volume !== v) {\n      this._volume = v;\n      this._dispatchVolumeChange();\n    }\n  }\n\n  // Not (yet) implemented according to spec\n  // Should return sane default values\n  load() {\n    notImplementedMethod(this._ownerDocument._defaultView, \"HTMLMediaElement\", \"load\");\n  }\n  canPlayType() {\n    return \"\";\n  }\n  play() {\n    notImplementedMethod(this._ownerDocument._defaultView, \"HTMLMediaElement\", \"play\");\n  }\n  pause() {\n    notImplementedMethod(this._ownerDocument._defaultView, \"HTMLMediaElement\", \"pause\");\n  }\n  addTextTrack() {\n    notImplementedMethod(this._ownerDocument._defaultView, \"HTMLMediaElement\", \"addTextTrack\");\n  }\n\n  _dispatchRateChange() {\n    fireAnEvent(\"ratechange\", this);\n  }\n\n  _dispatchVolumeChange() {\n    fireAnEvent(\"volumechange\", this);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLMediaElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst TextTrackKind = require(\"./TextTrackKind.js\");\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLMediaElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLMediaElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLMediaElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLMediaElement extends globalObject.HTMLElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    load() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'load' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol].load();\n    }\n\n    canPlayType(type) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'canPlayType' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'canPlayType' on 'HTMLMediaElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'canPlayType' on 'HTMLMediaElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].canPlayType(...args));\n    }\n\n    play() {\n      try {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'play' called on an object that is not a valid instance of HTMLMediaElement.\"\n          );\n        }\n\n        return utils.tryWrapperForImpl(esValue[implSymbol].play());\n      } catch (e) {\n        return globalObject.Promise.reject(e);\n      }\n    }\n\n    pause() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'pause' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol].pause();\n    }\n\n    addTextTrack(kind) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'addTextTrack' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'addTextTrack' on 'HTMLMediaElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = TextTrackKind.convert(globalObject, curArg, {\n          context: \"Failed to execute 'addTextTrack' on 'HTMLMediaElement': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'addTextTrack' on 'HTMLMediaElement': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'addTextTrack' on 'HTMLMediaElement': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].addTextTrack(...args));\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get currentSrc() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get currentSrc' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"currentSrc\"];\n    }\n\n    get crossOrigin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get crossOrigin' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"crossorigin\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set crossOrigin(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set crossOrigin' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'crossOrigin' property on 'HTMLMediaElement': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"crossorigin\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"crossorigin\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get networkState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get networkState' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"networkState\"];\n    }\n\n    get preload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get preload' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"preload\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set preload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set preload' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'preload' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"preload\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get buffered() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get buffered' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"buffered\"]);\n    }\n\n    get readyState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readyState' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"readyState\"];\n    }\n\n    get seeking() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get seeking' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"seeking\"];\n    }\n\n    get currentTime() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get currentTime' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"currentTime\"];\n    }\n\n    set currentTime(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set currentTime' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'currentTime' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"currentTime\"] = V;\n    }\n\n    get duration() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get duration' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"duration\"];\n    }\n\n    get paused() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get paused' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"paused\"];\n    }\n\n    get defaultPlaybackRate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultPlaybackRate' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"defaultPlaybackRate\"];\n    }\n\n    set defaultPlaybackRate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defaultPlaybackRate' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'defaultPlaybackRate' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"defaultPlaybackRate\"] = V;\n    }\n\n    get playbackRate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get playbackRate' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"playbackRate\"];\n    }\n\n    set playbackRate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set playbackRate' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'playbackRate' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"playbackRate\"] = V;\n    }\n\n    get played() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get played' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"played\"]);\n    }\n\n    get seekable() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get seekable' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"seekable\"]);\n    }\n\n    get ended() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ended' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"ended\"];\n    }\n\n    get autoplay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get autoplay' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"autoplay\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set autoplay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set autoplay' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'autoplay' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"autoplay\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"autoplay\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get loop() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get loop' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"loop\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set loop(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set loop' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'loop' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"loop\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"loop\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get controls() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get controls' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"controls\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set controls(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set controls' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'controls' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"controls\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"controls\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get volume() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get volume' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"volume\"];\n    }\n\n    set volume(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set volume' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'volume' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"volume\"] = V;\n    }\n\n    get muted() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get muted' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"muted\"];\n    }\n\n    set muted(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set muted' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'muted' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"muted\"] = V;\n    }\n\n    get defaultMuted() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultMuted' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"muted\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set defaultMuted(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defaultMuted' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'defaultMuted' property on 'HTMLMediaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"muted\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"muted\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get audioTracks() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get audioTracks' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"audioTracks\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"audioTracks\"]);\n      });\n    }\n\n    get videoTracks() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get videoTracks' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"videoTracks\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"videoTracks\"]);\n      });\n    }\n\n    get textTracks() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get textTracks' called on an object that is not a valid instance of HTMLMediaElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"textTracks\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"textTracks\"]);\n      });\n    }\n  }\n  Object.defineProperties(HTMLMediaElement.prototype, {\n    load: { enumerable: true },\n    canPlayType: { enumerable: true },\n    play: { enumerable: true },\n    pause: { enumerable: true },\n    addTextTrack: { enumerable: true },\n    src: { enumerable: true },\n    currentSrc: { enumerable: true },\n    crossOrigin: { enumerable: true },\n    networkState: { enumerable: true },\n    preload: { enumerable: true },\n    buffered: { enumerable: true },\n    readyState: { enumerable: true },\n    seeking: { enumerable: true },\n    currentTime: { enumerable: true },\n    duration: { enumerable: true },\n    paused: { enumerable: true },\n    defaultPlaybackRate: { enumerable: true },\n    playbackRate: { enumerable: true },\n    played: { enumerable: true },\n    seekable: { enumerable: true },\n    ended: { enumerable: true },\n    autoplay: { enumerable: true },\n    loop: { enumerable: true },\n    controls: { enumerable: true },\n    volume: { enumerable: true },\n    muted: { enumerable: true },\n    defaultMuted: { enumerable: true },\n    audioTracks: { enumerable: true },\n    videoTracks: { enumerable: true },\n    textTracks: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLMediaElement\", configurable: true },\n    NETWORK_EMPTY: { value: 0, enumerable: true },\n    NETWORK_IDLE: { value: 1, enumerable: true },\n    NETWORK_LOADING: { value: 2, enumerable: true },\n    NETWORK_NO_SOURCE: { value: 3, enumerable: true },\n    HAVE_NOTHING: { value: 0, enumerable: true },\n    HAVE_METADATA: { value: 1, enumerable: true },\n    HAVE_CURRENT_DATA: { value: 2, enumerable: true },\n    HAVE_FUTURE_DATA: { value: 3, enumerable: true },\n    HAVE_ENOUGH_DATA: { value: 4, enumerable: true }\n  });\n  Object.defineProperties(HTMLMediaElement, {\n    NETWORK_EMPTY: { value: 0, enumerable: true },\n    NETWORK_IDLE: { value: 1, enumerable: true },\n    NETWORK_LOADING: { value: 2, enumerable: true },\n    NETWORK_NO_SOURCE: { value: 3, enumerable: true },\n    HAVE_NOTHING: { value: 0, enumerable: true },\n    HAVE_METADATA: { value: 1, enumerable: true },\n    HAVE_CURRENT_DATA: { value: 2, enumerable: true },\n    HAVE_FUTURE_DATA: { value: 3, enumerable: true },\n    HAVE_ENOUGH_DATA: { value: 4, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLMediaElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLMediaElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLMediaElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { parseFloatingPointNumber } = require(\"../helpers/strings\");\nconst { getLabelsForLabelable } = require(\"../helpers/form-controls\");\n\nclass HTMLMeterElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._labels = null;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-meter-minimum\n  get _minimumValue() {\n    const min = this.getAttributeNS(null, \"min\");\n    if (min !== null) {\n      const parsed = parseFloatingPointNumber(min);\n      if (parsed !== null) {\n        return parsed;\n      }\n    }\n    return 0;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-meter-maximum\n  get _maximumValue() {\n    let candidate = 1.0;\n\n    const max = this.getAttributeNS(null, \"max\");\n    if (max !== null) {\n      const parsed = parseFloatingPointNumber(max);\n      if (parsed !== null) {\n        candidate = parsed;\n      }\n    }\n\n    const minimumValue = this._minimumValue;\n    return candidate >= minimumValue ? candidate : minimumValue;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-meter-actual\n  get _actualValue() {\n    let candidate = 0;\n\n    const value = this.getAttributeNS(null, \"value\");\n    if (value !== null) {\n      const parsed = parseFloatingPointNumber(value);\n      if (parsed !== null) {\n        candidate = parsed;\n      }\n    }\n\n    const minimumValue = this._minimumValue;\n    if (candidate < minimumValue) {\n      return minimumValue;\n    }\n\n    const maximumValue = this._maximumValue;\n    return candidate > maximumValue ? maximumValue : candidate;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-meter-low\n  get _lowBoundary() {\n    const minimumValue = this._minimumValue;\n    let candidate = minimumValue;\n\n    const low = this.getAttributeNS(null, \"low\");\n    if (low !== null) {\n      const parsed = parseFloatingPointNumber(low);\n      if (parsed !== null) {\n        candidate = parsed;\n      }\n    }\n\n    if (candidate < minimumValue) {\n      return minimumValue;\n    }\n\n    const maximumValue = this._maximumValue;\n    return candidate > maximumValue ? maximumValue : candidate;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-meter-high\n  get _highBoundary() {\n    const maximumValue = this._maximumValue;\n    let candidate = maximumValue;\n\n    const high = this.getAttributeNS(null, \"high\");\n    if (high !== null) {\n      const parsed = parseFloatingPointNumber(high);\n      if (parsed !== null) {\n        candidate = parsed;\n      }\n    }\n\n    const lowBoundary = this._lowBoundary;\n    if (candidate < lowBoundary) {\n      return lowBoundary;\n    }\n\n    return candidate > maximumValue ? maximumValue : candidate;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-meter-optimum\n  get _optimumPoint() {\n    const minimumValue = this._minimumValue;\n    const maximumValue = this._maximumValue;\n    let candidate = (minimumValue + maximumValue) / 2;\n\n    const optimum = this.getAttributeNS(null, \"optimum\");\n    if (optimum !== null) {\n      const parsed = parseFloatingPointNumber(optimum);\n      if (parsed !== null) {\n        candidate = parsed;\n      }\n    }\n\n    if (candidate < minimumValue) {\n      return minimumValue;\n    }\n\n    return candidate > maximumValue ? maximumValue : candidate;\n  }\n\n  get labels() {\n    return getLabelsForLabelable(this);\n  }\n\n  get value() {\n    return this._actualValue;\n  }\n\n  set value(val) {\n    this.setAttributeNS(null, \"value\", String(val));\n  }\n\n  get min() {\n    return this._minimumValue;\n  }\n\n  set min(val) {\n    this.setAttributeNS(null, \"min\", String(val));\n  }\n\n  get max() {\n    return this._maximumValue;\n  }\n\n  set max(val) {\n    this.setAttributeNS(null, \"max\", String(val));\n  }\n\n  get low() {\n    return this._lowBoundary;\n  }\n\n  set low(val) {\n    this.setAttributeNS(null, \"low\", String(val));\n  }\n\n  get high() {\n    return this._highBoundary;\n  }\n\n  set high(val) {\n    this.setAttributeNS(null, \"high\", String(val));\n  }\n\n  get optimum() {\n    return this._optimumPoint;\n  }\n\n  set optimum(val) {\n    this.setAttributeNS(null, \"optimum\", String(val));\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLMeterElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLMeterElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLMeterElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLMeterElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLMeterElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLMeterElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get min() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get min' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"min\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set min(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set min' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'min' property on 'HTMLMeterElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"min\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get max() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get max' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"max\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set max(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set max' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'max' property on 'HTMLMeterElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"max\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get low() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get low' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"low\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set low(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set low' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'low' property on 'HTMLMeterElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"low\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get high() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get high' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"high\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set high(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set high' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'high' property on 'HTMLMeterElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"high\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get optimum() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get optimum' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"optimum\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set optimum(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set optimum' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'optimum' property on 'HTMLMeterElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"optimum\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of HTMLMeterElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n  }\n  Object.defineProperties(HTMLMeterElement.prototype, {\n    value: { enumerable: true },\n    min: { enumerable: true },\n    max: { enumerable: true },\n    low: { enumerable: true },\n    high: { enumerable: true },\n    optimum: { enumerable: true },\n    labels: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLMeterElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLMeterElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLMeterElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLMeterElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLModElementImpl extends HTMLElementImpl {}\n\nmodule.exports = {\n  implementation: HTMLModElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLModElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLModElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLModElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLModElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get cite() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cite' called on an object that is not a valid instance of HTMLModElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"cite\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._citeURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._citeURLCache;\n        }\n\n        this._citeURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._citeURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._citeURLCache;\n        }\n        this._citeURLCache = conversions.USVString(value);\n        return this._citeURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set cite(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set cite' called on an object that is not a valid instance of HTMLModElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'cite' property on 'HTMLModElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"cite\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get dateTime() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get dateTime' called on an object that is not a valid instance of HTMLModElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"datetime\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set dateTime(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set dateTime' called on an object that is not a valid instance of HTMLModElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'dateTime' property on 'HTMLModElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"datetime\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLModElement.prototype, {\n    cite: { enumerable: true },\n    dateTime: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLModElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLModElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLModElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLModElement-impl.js\");\n","\"use strict\";\n\nconst DOMTokenList = require(\"../../../generated/idl/DOMTokenList\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst DefaultConstraintValidationImpl =\n  require(\"../constraint-validation/DefaultConstraintValidation-impl\").implementation;\nconst { mixin } = require(\"../../utils\");\nconst { getLabelsForLabelable, formOwner } = require(\"../helpers/form-controls\");\n\nclass HTMLOutputElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._labels = null;\n    this._defaultValueOverride = null;\n\n    this._customValidityErrorMessage = \"\";\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    if (name === \"for\" && this._htmlFor !== undefined) {\n      this._htmlFor.attrModified();\n    }\n  }\n\n  _barredFromConstraintValidationSpecialization() {\n    return true;\n  }\n\n  _formReset() {\n    this.textContent = this.defaultValue;\n    this._defaultValueOverride = null;\n  }\n\n  get htmlFor() {\n    if (this._htmlFor === undefined) {\n      this._htmlFor = DOMTokenList.createImpl(this._globalObject, [], {\n        element: this,\n        attributeLocalName: \"for\"\n      });\n    }\n    return this._htmlFor;\n  }\n\n  get type() {\n    return \"output\";\n  }\n\n  get labels() {\n    return getLabelsForLabelable(this);\n  }\n\n  get form() {\n    return formOwner(this);\n  }\n\n  get value() {\n    return this.textContent;\n  }\n\n  set value(val) {\n    this._defaultValueOverride = this.defaultValue;\n    this.textContent = val;\n  }\n\n  get defaultValue() {\n    if (this._defaultValueOverride !== null) {\n      return this._defaultValueOverride;\n    }\n    return this.textContent;\n  }\n\n  set defaultValue(val) {\n    if (this._defaultValueOverride === null) {\n      this.textContent = val;\n      return;\n    }\n\n    this._defaultValueOverride = val;\n  }\n}\n\nmixin(HTMLOutputElementImpl.prototype, DefaultConstraintValidationImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLOutputElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLOutputElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLOutputElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLOutputElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLOutputElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    setCustomValidity(error) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setCustomValidity' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setCustomValidity' on 'HTMLOutputElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setCustomValidity' on 'HTMLOutputElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setCustomValidity(...args);\n    }\n\n    get htmlFor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get htmlFor' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"htmlFor\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"htmlFor\"]);\n      });\n    }\n\n    set htmlFor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set htmlFor' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      const Q = esValue[\"htmlFor\"];\n      if (!utils.isObject(Q)) {\n        throw new globalObject.TypeError(\"Property 'htmlFor' is not an object\");\n      }\n      Reflect.set(Q, \"value\", V);\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLOutputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n\n    get defaultValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultValue' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"defaultValue\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set defaultValue(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defaultValue' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'defaultValue' property on 'HTMLOutputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"defaultValue\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLOutputElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get willValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get willValidate' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"willValidate\"];\n    }\n\n    get validity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validity' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"validity\"]);\n    }\n\n    get validationMessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validationMessage' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"validationMessage\"];\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of HTMLOutputElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n  }\n  Object.defineProperties(HTMLOutputElement.prototype, {\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    setCustomValidity: { enumerable: true },\n    htmlFor: { enumerable: true },\n    form: { enumerable: true },\n    name: { enumerable: true },\n    type: { enumerable: true },\n    defaultValue: { enumerable: true },\n    value: { enumerable: true },\n    willValidate: { enumerable: true },\n    validity: { enumerable: true },\n    validationMessage: { enumerable: true },\n    labels: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLOutputElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLOutputElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLOutputElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLOutputElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLPictureElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLPictureElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLPictureElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLPictureElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLPictureElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLPictureElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n  }\n  Object.defineProperties(HTMLPictureElement.prototype, {\n    [Symbol.toStringTag]: { value: \"HTMLPictureElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLPictureElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLPictureElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLPictureElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { getLabelsForLabelable } = require(\"../helpers/form-controls\");\nconst { parseFloatingPointNumber } = require(\"../helpers/strings\");\n\nclass HTMLProgressElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._labels = null;\n  }\n\n  get _isDeterminate() {\n    return this.hasAttributeNS(null, \"value\");\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-progress-value\n  get _value() {\n    const valueAttr = this.getAttributeNS(null, \"value\");\n    if (valueAttr !== null) {\n      const parsedValue = parseFloatingPointNumber(valueAttr);\n      if (parsedValue !== null && parsedValue > 0) {\n        return parsedValue;\n      }\n    }\n    return 0;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-progress-current-value\n  get _currentValue() {\n    const value = this._value;\n    return value > this._maximumValue ? this._maximumValue : value;\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#concept-progress-maximum\n  get _maximumValue() {\n    const maxAttr = this.getAttributeNS(null, \"max\");\n    if (maxAttr !== null) {\n      const parsedMax = parseFloatingPointNumber(maxAttr);\n      if (parsedMax !== null && parsedMax > 0) {\n        return parsedMax;\n      }\n    }\n    return 1.0;\n  }\n\n  get value() {\n    if (this._isDeterminate) {\n      return this._currentValue;\n    }\n    return 0;\n  }\n  set value(value) {\n    this.setAttributeNS(null, \"value\", value);\n  }\n\n  get position() {\n    if (!this._isDeterminate) {\n      return -1;\n    }\n\n    return this._currentValue / this._maximumValue;\n  }\n\n  get labels() {\n    return getLabelsForLabelable(this);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLProgressElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst parseFloatingPointNumber_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseFloatingPointNumber;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLProgressElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLProgressElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLProgressElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLProgressElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLProgressElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLProgressElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLProgressElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get max() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get max' called on an object that is not a valid instance of HTMLProgressElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"max\");\n        if (value !== null) {\n          value = parseFloatingPointNumber_jsdom_living_helpers_strings(value);\n          if (value !== null && value > 0) {\n            return value;\n          }\n        }\n        return 1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set max(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set max' called on an object that is not a valid instance of HTMLProgressElement.\"\n        );\n      }\n\n      V = conversions[\"double\"](V, {\n        context: \"Failed to set the 'max' property on 'HTMLProgressElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V > 0) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"max\", String(V));\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get position() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get position' called on an object that is not a valid instance of HTMLProgressElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"position\"];\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of HTMLProgressElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n  }\n  Object.defineProperties(HTMLProgressElement.prototype, {\n    value: { enumerable: true },\n    max: { enumerable: true },\n    position: { enumerable: true },\n    labels: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLProgressElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLProgressElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLProgressElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLProgressElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLQuoteElementImpl extends HTMLElementImpl {}\n\nmodule.exports = {\n  implementation: HTMLQuoteElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLQuoteElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLQuoteElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLQuoteElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLQuoteElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get cite() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cite' called on an object that is not a valid instance of HTMLQuoteElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"cite\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._citeURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._citeURLCache;\n        }\n\n        this._citeURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._citeURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._citeURLCache;\n        }\n        this._citeURLCache = conversions.USVString(value);\n        return this._citeURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set cite(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set cite' called on an object that is not a valid instance of HTMLQuoteElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'cite' property on 'HTMLQuoteElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"cite\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLQuoteElement.prototype, {\n    cite: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLQuoteElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLQuoteElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLQuoteElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLQuoteElement-impl.js\");\n","\"use strict\";\nconst vm = require(\"vm\");\nconst { getBOMEncoding, labelToName, legacyHookDecode } = require(\"@exodus/bytes/encoding.js\");\nconst { MIMEType } = require(\"whatwg-mimetype\");\nconst { serializeURL } = require(\"whatwg-url\");\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst reportException = require(\"../helpers/runtime-script-errors\");\nconst { domSymbolTree, cloningSteps } = require(\"../helpers/internal-constants\");\nconst { asciiLowercase } = require(\"../helpers/strings\");\nconst { childTextContent } = require(\"../helpers/text\");\nconst nodeTypes = require(\"../node-type\");\n\nconst jsMIMETypes = new Set([\n  \"application/ecmascript\",\n  \"application/javascript\",\n  \"application/x-ecmascript\",\n  \"application/x-javascript\",\n  \"text/ecmascript\",\n  \"text/javascript\",\n  \"text/javascript1.0\",\n  \"text/javascript1.1\",\n  \"text/javascript1.2\",\n  \"text/javascript1.3\",\n  \"text/javascript1.4\",\n  \"text/javascript1.5\",\n  \"text/jscript\",\n  \"text/livescript\",\n  \"text/x-ecmascript\",\n  \"text/x-javascript\"\n]);\n\nclass HTMLScriptElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._alreadyStarted = false;\n    this._parserInserted = false; // set by the parser\n  }\n\n  _attach() {\n    super._attach();\n\n\n    // In our current terribly-hacky document.write() implementation, we parse in a div them move elements into the main\n    // document. Thus _eval() will bail early when it gets in _poppedOffStackOfOpenElements(), since we're not attached\n    // then. Instead, we'll let it eval here.\n    if (!this._parserInserted || this._isMovingDueToDocumentWrite) {\n      this._eval();\n    }\n  }\n\n  _canRunScript() {\n    const document = this._ownerDocument;\n    // Equivalent to the spec's \"scripting is disabled\" check.\n    if (!document._defaultView || document._defaultView._runScripts !== \"dangerously\" || document._scriptingDisabled) {\n      return false;\n    }\n\n    return true;\n  }\n\n  _fetchExternalScript() {\n    const document = this._ownerDocument;\n    const resourceLoader = document._resourceLoader;\n    const defaultEncoding = labelToName(this.getAttributeNS(null, \"charset\")) || document._encoding;\n\n    if (!this._canRunScript()) {\n      return;\n    }\n\n    const src = this.getAttributeNS(null, \"src\");\n    const url = this._ownerDocument.encodingParseAURL(src);\n    if (url === null) {\n      return;\n    }\n    const urlString = serializeURL(url);\n\n    const onLoadExternalScript = (data, response) => {\n      if (!response.ok) {\n        throw new Error(\"Status code: \" + response.status);\n      }\n\n      const contentType = MIMEType.parse(response.headers.get(\"content-type\")) || new MIMEType(\"text/plain\");\n\n      const encoding = labelToName(getBOMEncoding(data)) ||\n        labelToName(contentType.parameters.get(\"charset\")) ||\n        defaultEncoding;\n      const script = legacyHookDecode(data, encoding);\n\n      this._innerEval(script, urlString);\n    };\n\n    resourceLoader.fetch(urlString, {\n      element: this,\n      onLoad: onLoadExternalScript\n    });\n  }\n\n  _fetchInternalScript() {\n    const document = this._ownerDocument;\n\n    if (!this._canRunScript()) {\n      return;\n    }\n\n    document._queue.push(null, () => {\n      this._innerEval(this.text, document.URL);\n    }, null, false, this);\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    if (this._attached && !this._startedEval && name === \"src\" && oldValue === null && value !== null) {\n      this._fetchExternalScript();\n    }\n  }\n\n  _poppedOffStackOfOpenElements() {\n    // This seems to roughly correspond to\n    // https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-incdata:prepare-a-script, although we certainly\n    // don't implement the full semantics.\n    this._eval();\n  }\n\n  // Vaguely similar to https://html.spec.whatwg.org/multipage/scripting.html#prepare-a-script, but we have a long way\n  // to go before it's aligned.\n  _eval() {\n    if (this._alreadyStarted) {\n      return;\n    }\n\n    // TODO: this text check doesn't seem completely the same as the spec, which e.g. will try to execute scripts with\n    // child element nodes. Spec bug? https://github.com/whatwg/html/issues/3419\n    if (!this.hasAttributeNS(null, \"src\") && this.text.length === 0) {\n      return;\n    }\n\n    if (!this._attached) {\n      return;\n    }\n\n    const scriptBlocksTypeString = this._getTypeString();\n    const type = getType(scriptBlocksTypeString);\n\n    if (type !== \"classic\") {\n      // TODO: implement modules, and then change the check to `type === null`.\n      return;\n    }\n\n    this._alreadyStarted = true;\n\n    // TODO: implement nomodule here, **but only after we support modules**.\n\n    // At this point we completely depart from the spec.\n\n    if (this.hasAttributeNS(null, \"src\")) {\n      this._fetchExternalScript();\n    } else {\n      this._fetchInternalScript();\n    }\n  }\n\n  _innerEval(text, filename) {\n    this._ownerDocument._writeAfterElement = this;\n    processJavaScript(this, text, filename);\n    delete this._ownerDocument._writeAfterElement;\n  }\n\n  _getTypeString() {\n    const typeAttr = this.getAttributeNS(null, \"type\");\n    const langAttr = this.getAttributeNS(null, \"language\");\n\n    if (typeAttr === \"\") {\n      return \"text/javascript\";\n    }\n\n    if (typeAttr === null && langAttr === \"\") {\n      return \"text/javascript\";\n    }\n\n    if (typeAttr === null && langAttr === null) {\n      return \"text/javascript\";\n    }\n\n    if (typeAttr !== null) {\n      return typeAttr.trim();\n    }\n\n    if (langAttr !== null) {\n      return \"text/\" + langAttr;\n    }\n\n    return null;\n  }\n\n  get text() {\n    return childTextContent(this);\n  }\n\n  set text(text) {\n    this.textContent = text;\n  }\n\n  // https://html.spec.whatwg.org/multipage/scripting.html#script-processing-model\n  [cloningSteps](copy, node) {\n    copy._alreadyStarted = node._alreadyStarted;\n  }\n}\n\nfunction processJavaScript(element, code, filename) {\n  const document = element.ownerDocument;\n  const window = document && document._global;\n\n  if (window) {\n    document._currentScript = element;\n\n    let lineOffset = 0;\n    if (!element.hasAttributeNS(null, \"src\")) {\n      for (const child of domSymbolTree.childrenIterator(element)) {\n        if (child.nodeType === nodeTypes.TEXT_NODE) {\n          if (child.sourceCodeLocation) {\n            lineOffset = child.sourceCodeLocation.startLine - 1;\n          }\n          break;\n        }\n      }\n    }\n\n    try {\n      vm.runInContext(code, window, { filename, lineOffset, displayErrors: false });\n    } catch (e) {\n      reportException(window, e, filename);\n    } finally {\n      document._currentScript = null;\n    }\n  }\n}\n\nfunction getType(typeString) {\n  const lowercased = asciiLowercase(typeString);\n  // Cannot use whatwg-mimetype parsing because that strips whitespace. The spec demands a strict string comparison.\n  // That is, the type=\"\" attribute is not really related to MIME types at all.\n  if (jsMIMETypes.has(lowercased)) {\n    return \"classic\";\n  }\n  if (lowercased === \"module\") {\n    return \"module\";\n  }\n  return null;\n}\n\nmodule.exports = {\n  implementation: HTMLScriptElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLScriptElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLScriptElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLScriptElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLScriptElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLScriptElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLScriptElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get defer() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defer' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"defer\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set defer(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defer' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'defer' property on 'HTMLScriptElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"defer\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"defer\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get crossOrigin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get crossOrigin' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"crossorigin\");\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set crossOrigin(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set crossOrigin' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = conversions[\"DOMString\"](V, {\n          context: \"Failed to set the 'crossOrigin' property on 'HTMLScriptElement': The provided value\",\n          globals: globalObject\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V === null) {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"crossorigin\");\n        } else {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"crossorigin\", V);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get text() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get text' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"text\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set text(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set text' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'text' property on 'HTMLScriptElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"text\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get charset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get charset' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"charset\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set charset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set charset' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'charset' property on 'HTMLScriptElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"charset\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get event() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get event' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"event\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set event(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set event' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'event' property on 'HTMLScriptElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"event\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get htmlFor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get htmlFor' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"for\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set htmlFor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set htmlFor' called on an object that is not a valid instance of HTMLScriptElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'htmlFor' property on 'HTMLScriptElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"for\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLScriptElement.prototype, {\n    src: { enumerable: true },\n    type: { enumerable: true },\n    defer: { enumerable: true },\n    crossOrigin: { enumerable: true },\n    text: { enumerable: true },\n    charset: { enumerable: true },\n    event: { enumerable: true },\n    htmlFor: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLScriptElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLScriptElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLScriptElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLScriptElement-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\n\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst ValidityState = require(\"../../../generated/idl/ValidityState\");\nconst DefaultConstraintValidationImpl =\n  require(\"../constraint-validation/DefaultConstraintValidation-impl\").implementation;\nconst { mixin } = require(\"../../utils\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst NODE_TYPE = require(\"../node-type\");\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst HTMLOptionsCollection = require(\"../../../generated/idl/HTMLOptionsCollection\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { getLabelsForLabelable, formOwner, isDisabled } = require(\"../helpers/form-controls\");\nconst { parseNonNegativeInteger } = require(\"../helpers/strings\");\n\nclass HTMLSelectElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._options = HTMLOptionsCollection.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => {\n        // Customized domSymbolTree.treeToArray() clone.\n        const array = [];\n        for (const child of domSymbolTree.childrenIterator(this)) {\n          if (child._localName === \"option\") {\n            array.push(child);\n          } else if (child._localName === \"optgroup\") {\n            for (const childOfGroup of domSymbolTree.childrenIterator(child)) {\n              if (childOfGroup._localName === \"option\") {\n                array.push(childOfGroup);\n              }\n            }\n          }\n        }\n        return array;\n      }\n    });\n    this._selectedOptions = null; // lazy\n\n    this._customValidityErrorMessage = \"\";\n\n    this._labels = null;\n  }\n\n  _formReset() {\n    for (const option of this.options) {\n      option._selectedness = option.hasAttributeNS(null, \"selected\");\n      option._dirtyness = false;\n    }\n    this._askedForAReset();\n  }\n\n  _askedForAReset() {\n    if (this.hasAttributeNS(null, \"multiple\")) {\n      return;\n    }\n\n    const selected = this.options.filter(opt => opt._selectedness);\n\n    const size = this._displaySize;\n    if (size === 1 && !selected.length) {\n      // select the first option that is not disabled\n      for (const option of this.options) {\n        let disabled = option.hasAttributeNS(null, \"disabled\");\n        const parentNode = domSymbolTree.parent(option);\n        if (parentNode &&\n          parentNode._localName === \"optgroup\" &&\n          parentNode.hasAttributeNS(null, \"disabled\")) {\n          disabled = true;\n        }\n\n        if (!disabled) {\n          // (do not set dirty)\n          option._selectedness = true;\n          break;\n        }\n      }\n    } else if (selected.length >= 2) {\n      // select the last selected option\n      selected.forEach((option, index) => {\n        option._selectedness = index === selected.length - 1;\n      });\n    }\n  }\n\n  _descendantAdded(parent, child) {\n    if (child.nodeType === NODE_TYPE.ELEMENT_NODE) {\n      this._askedForAReset();\n    }\n\n    super._descendantAdded(parent, child);\n  }\n\n  _descendantRemoved(parent, child) {\n    if (child.nodeType === NODE_TYPE.ELEMENT_NODE) {\n      this._askedForAReset();\n    }\n\n    super._descendantRemoved(parent, child);\n  }\n\n  _attrModified(name, value, oldValue) {\n    if (name === \"multiple\" || name === \"size\") {\n      this._askedForAReset();\n    }\n    super._attrModified(name, value, oldValue);\n  }\n\n  get _displaySize() {\n    if (this.hasAttributeNS(null, \"size\")) {\n      const size = parseNonNegativeInteger(this.getAttributeNS(null, \"size\"));\n      if (size !== null) {\n        return size;\n      }\n    }\n    return this.hasAttributeNS(null, \"multiple\") ? 4 : 1;\n  }\n\n  get _mutable() {\n    return !isDisabled(this);\n  }\n\n  get options() {\n    return this._options;\n  }\n\n  get selectedOptions() {\n    return HTMLCollection.createImpl(this._globalObject, [], {\n      element: this,\n      query: () => domSymbolTree.treeToArray(this, {\n        filter: node => node._localName === \"option\" && node._selectedness === true\n      })\n    });\n  }\n\n  get selectedIndex() {\n    for (let i = 0; i < this.options.length; i++) {\n      if (this.options.item(i)._selectedness) {\n        return i;\n      }\n    }\n    return -1;\n  }\n\n  set selectedIndex(index) {\n    for (let i = 0; i < this.options.length; i++) {\n      this.options.item(i)._selectedness = false;\n    }\n\n    const selectedOption = this.options.item(index);\n    if (selectedOption) {\n      selectedOption._selectedness = true;\n      selectedOption._dirtyness = true;\n    }\n  }\n\n  get labels() {\n    return getLabelsForLabelable(this);\n  }\n\n  get value() {\n    for (const option of this.options) {\n      if (option._selectedness) {\n        return option.value;\n      }\n    }\n\n    return \"\";\n  }\n\n  set value(val) {\n    for (const option of this.options) {\n      if (option.value === val) {\n        option._selectedness = true;\n        option._dirtyness = true;\n      } else {\n        option._selectedness = false;\n      }\n\n      option._modified();\n    }\n  }\n\n  get form() {\n    return formOwner(this);\n  }\n\n  get type() {\n    return this.hasAttributeNS(null, \"multiple\") ? \"select-multiple\" : \"select-one\";\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    return this.options[idlUtils.supportedPropertyIndices];\n  }\n\n  get length() {\n    return this.options.length;\n  }\n\n  set length(value) {\n    this.options.length = value;\n  }\n\n  item(index) {\n    return this.options.item(index);\n  }\n\n  namedItem(name) {\n    return this.options.namedItem(name);\n  }\n\n  [idlUtils.indexedSetNew](index, value) {\n    return this.options[idlUtils.indexedSetNew](index, value);\n  }\n\n  [idlUtils.indexedSetExisting](index, value) {\n    return this.options[idlUtils.indexedSetExisting](index, value);\n  }\n\n  add(opt, before) {\n    this.options.add(opt, before);\n  }\n\n  remove(index) {\n    if (arguments.length > 0) {\n      index = conversions.long(index, {\n        context: \"Failed to execute 'remove' on 'HTMLSelectElement': parameter 1\"\n      });\n      this.options.remove(index);\n    } else {\n      super.remove();\n    }\n  }\n\n  _barredFromConstraintValidationSpecialization() {\n    return this.hasAttributeNS(null, \"readonly\");\n  }\n\n  // Constraint validation: If the element has its required attribute specified,\n  // and either none of the option elements in the select element's list of options\n  // have their selectedness set to true, or the only option element in the select\n  // element's list of options with its selectedness set to true is the placeholder\n  // label option, then the element is suffering from being missing.\n  get validity() {\n    if (!this._validity) {\n      const state = {\n        valueMissing: () => {\n          if (!this.hasAttributeNS(null, \"required\")) {\n            return false;\n          }\n          const selectedOptionIndex = this.selectedIndex;\n          return selectedOptionIndex < 0 || (selectedOptionIndex === 0 && this._hasPlaceholderOption);\n        }\n      };\n\n      this._validity = ValidityState.createImpl(this._globalObject, [], {\n        element: this,\n        state\n      });\n    }\n    return this._validity;\n  }\n\n  // If a select element has a required attribute specified, does not have a multiple attribute\n  // specified, and has a display size of 1; and if the value of the first option element in the\n  // select element's list of options (if any) is the empty string, and that option element's parent\n  // node is the select element(and not an optgroup element), then that option is the select\n  // element's placeholder label option.\n  // https://html.spec.whatwg.org/multipage/form-elements.html#placeholder-label-option\n  get _hasPlaceholderOption() {\n    return this.hasAttributeNS(null, \"required\") && !this.hasAttributeNS(null, \"multiple\") &&\n      this._displaySize === 1 && this.options.length > 0 && this.options.item(0).value === \"\" &&\n      this.options.item(0).parentNode._localName !== \"optgroup\";\n  }\n}\n\nmixin(HTMLSelectElementImpl.prototype, DefaultConstraintValidationImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLSelectElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst HTMLOptionElement = require(\"./HTMLOptionElement.js\");\nconst HTMLOptGroupElement = require(\"./HTMLOptGroupElement.js\");\nconst HTMLElement = require(\"./HTMLElement.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"HTMLSelectElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLSelectElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLSelectElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLSelectElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'item' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'HTMLSelectElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'HTMLSelectElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].item(...args));\n    }\n\n    namedItem(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'namedItem' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'namedItem' on 'HTMLSelectElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'namedItem' on 'HTMLSelectElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].namedItem(...args));\n    }\n\n    add(element) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'add' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'add' on 'HTMLSelectElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (HTMLOptionElement.is(curArg) || HTMLOptGroupElement.is(curArg)) {\n          curArg = utils.implForWrapper(curArg);\n        } else {\n          throw new globalObject.TypeError(\n            \"Failed to execute 'add' on 'HTMLSelectElement': parameter 1\" + \" is not of any supported type.\"\n          );\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            if (HTMLElement.is(curArg)) {\n              curArg = utils.implForWrapper(curArg);\n            } else if (typeof curArg === \"number\") {\n              curArg = conversions[\"long\"](curArg, {\n                context: \"Failed to execute 'add' on 'HTMLSelectElement': parameter 2\",\n                globals: globalObject\n              });\n            } else {\n              curArg = conversions[\"long\"](curArg, {\n                context: \"Failed to execute 'add' on 'HTMLSelectElement': parameter 2\",\n                globals: globalObject\n              });\n            }\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].add(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    remove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'remove' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n      const args = [];\n      switch (arguments.length) {\n        case 0:\n          break;\n        default: {\n          let curArg = arguments[0];\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'remove' on 'HTMLSelectElement': parameter 1\",\n            globals: globalObject\n          });\n          args.push(curArg);\n        }\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].remove(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    setCustomValidity(error) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setCustomValidity' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setCustomValidity' on 'HTMLSelectElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setCustomValidity' on 'HTMLSelectElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setCustomValidity(...args);\n    }\n\n    get autofocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get autofocus' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"autofocus\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set autofocus(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set autofocus' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'autofocus' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"autofocus\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"autofocus\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get disabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get disabled' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"disabled\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set disabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set disabled' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'disabled' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"disabled\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"disabled\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get multiple() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get multiple' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"multiple\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set multiple(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set multiple' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'multiple' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"multiple\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"multiple\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get required() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get required' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"required\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set required(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set required' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'required' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"required\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"required\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get size() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get size' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"size\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set size(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set size' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'size' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"size\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n\n    get options() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get options' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"options\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"options\"]);\n      });\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"length\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set length(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set length' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'length' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"length\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get selectedOptions() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectedOptions' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"selectedOptions\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"selectedOptions\"]);\n      });\n    }\n\n    get selectedIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectedIndex' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectedIndex\"];\n    }\n\n    set selectedIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectedIndex' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'selectedIndex' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"selectedIndex\"] = V;\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"value\"];\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLSelectElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"value\"] = V;\n    }\n\n    get willValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get willValidate' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"willValidate\"];\n    }\n\n    get validity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validity' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"validity\"]);\n    }\n\n    get validationMessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validationMessage' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"validationMessage\"];\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of HTMLSelectElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n  }\n  Object.defineProperties(HTMLSelectElement.prototype, {\n    item: { enumerable: true },\n    namedItem: { enumerable: true },\n    add: { enumerable: true },\n    remove: { enumerable: true },\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    setCustomValidity: { enumerable: true },\n    autofocus: { enumerable: true },\n    disabled: { enumerable: true },\n    form: { enumerable: true },\n    multiple: { enumerable: true },\n    name: { enumerable: true },\n    required: { enumerable: true },\n    size: { enumerable: true },\n    type: { enumerable: true },\n    options: { enumerable: true },\n    length: { enumerable: true },\n    selectedOptions: { enumerable: true },\n    selectedIndex: { enumerable: true },\n    value: { enumerable: true },\n    willValidate: { enumerable: true },\n    validity: { enumerable: true },\n    validationMessage: { enumerable: true },\n    labels: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLSelectElement\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLSelectElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLSelectElement\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: true,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n\n      if (utils.isArrayIndexPropName(P)) {\n        const index = P >>> 0;\n        let indexedValue = V;\n\n        if (indexedValue === null || indexedValue === undefined) {\n          indexedValue = null;\n        } else {\n          indexedValue = HTMLOptionElement.convert(globalObject, indexedValue, {\n            context: \"Failed to set the \" + index + \" property on 'HTMLSelectElement': The provided value\"\n          });\n        }\n\n        ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n        try {\n          const creating = !(target[implSymbol].item(index) !== null);\n          if (creating) {\n            target[implSymbol][utils.indexedSetNew](index, indexedValue);\n          } else {\n            target[implSymbol][utils.indexedSetExisting](index, indexedValue);\n          }\n        } finally {\n          ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n        }\n\n        return true;\n      }\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: true,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      if (desc.get || desc.set) {\n        return false;\n      }\n\n      const index = P >>> 0;\n      let indexedValue = desc.value;\n\n      if (indexedValue === null || indexedValue === undefined) {\n        indexedValue = null;\n      } else {\n        indexedValue = HTMLOptionElement.convert(globalObject, indexedValue, {\n          context: \"Failed to set the \" + index + \" property on 'HTMLSelectElement': The provided value\"\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const creating = !(target[implSymbol].item(index) !== null);\n        if (creating) {\n          target[implSymbol][utils.indexedSetNew](index, indexedValue);\n        } else {\n          target[implSymbol][utils.indexedSetExisting](index, indexedValue);\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n\n      return true;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLSelectElement-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"flatten\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'flatten' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst HTMLElement = require(\"../../../generated/idl/HTMLElement\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nconst { nodeRoot } = require(\"../helpers/node\");\nconst { assignSlotableForTree, findFlattenedSlotables } = require(\"../helpers/shadow-dom\");\n\nclass HTMLSlotElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._assignedNodes = [];\n  }\n\n  // https://dom.spec.whatwg.org/#slot-name\n  get name() {\n    return this.getAttributeNS(null, \"name\") || \"\";\n  }\n\n  _attrModified(name, value, oldValue) {\n    super._attrModified(name, value, oldValue);\n\n    // https://dom.spec.whatwg.org/#slot-name\n    if (name === \"name\") {\n      if (value === oldValue) {\n        return;\n      }\n\n      if (value === null && oldValue === \"\") {\n        return;\n      }\n\n      if (value === \"\" && oldValue === null) {\n        return;\n      }\n\n      assignSlotableForTree(nodeRoot(this));\n    }\n  }\n\n  // https://html.spec.whatwg.org/#dom-slot-assignednodes\n  assignedNodes(options) {\n    if (!options || !options.flatten) {\n      return this._assignedNodes.map(idlUtils.wrapperForImpl);\n    }\n\n    return findFlattenedSlotables(this).map(idlUtils.wrapperForImpl);\n  }\n\n  // https://html.spec.whatwg.org/#dom-slot-assignedelements\n  assignedElements(options) {\n    return this.assignedNodes(options).filter(HTMLElement.is);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLSlotElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst AssignedNodesOptions = require(\"./AssignedNodesOptions.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLSlotElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLSlotElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLSlotElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLSlotElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    assignedNodes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'assignedNodes' called on an object that is not a valid instance of HTMLSlotElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = AssignedNodesOptions.convert(globalObject, curArg, {\n          context: \"Failed to execute 'assignedNodes' on 'HTMLSlotElement': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].assignedNodes(...args));\n    }\n\n    assignedElements() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'assignedElements' called on an object that is not a valid instance of HTMLSlotElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = AssignedNodesOptions.convert(globalObject, curArg, {\n          context: \"Failed to execute 'assignedElements' on 'HTMLSlotElement': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].assignedElements(...args));\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLSlotElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLSlotElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLSlotElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLSlotElement.prototype, {\n    assignedNodes: { enumerable: true },\n    assignedElements: { enumerable: true },\n    name: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLSlotElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLSlotElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLSlotElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLSlotElement-impl.js\");\n","\"use strict\";\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLSourceElementImpl extends HTMLElementImpl {}\n\nmodule.exports = {\n  implementation: HTMLSourceElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLSourceElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLSourceElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLSourceElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLSourceElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLSourceElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLSourceElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get srcset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get srcset' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"srcset\");\n        return value === null ? \"\" : conversions.USVString(value);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set srcset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set srcset' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'srcset' property on 'HTMLSourceElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"srcset\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get sizes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get sizes' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"sizes\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set sizes(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set sizes' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'sizes' property on 'HTMLSourceElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"sizes\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get media() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get media' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"media\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set media(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set media' called on an object that is not a valid instance of HTMLSourceElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'media' property on 'HTMLSourceElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"media\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLSourceElement.prototype, {\n    src: { enumerable: true },\n    type: { enumerable: true },\n    srcset: { enumerable: true },\n    sizes: { enumerable: true },\n    media: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLSourceElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLSourceElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLSourceElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLSourceElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLSpanElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLSpanElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLSpanElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLSpanElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLSpanElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLSpanElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n  }\n  Object.defineProperties(HTMLSpanElement.prototype, {\n    [Symbol.toStringTag]: { value: \"HTMLSpanElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLSpanElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLSpanElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLSpanElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLTableCaptionElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLTableCaptionElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTableCaptionElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTableCaptionElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTableCaptionElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTableCaptionElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLTableCaptionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLTableCaptionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLTableCaptionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTableCaptionElement.prototype, {\n    align: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTableCaptionElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTableCaptionElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTableCaptionElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTableCaptionElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nconst { asciiLowercase, parseNonNegativeInteger } = require(\"../helpers/strings\");\nconst { closest } = require(\"../helpers/traversal\");\n\nfunction reflectedAttributeClampedToRange(attrValue, min, max, defaultValue = 0) {\n  if (attrValue === null) {\n    return defaultValue;\n  }\n  const parsed = parseNonNegativeInteger(attrValue);\n  if (parsed === null) {\n    return defaultValue;\n  }\n  if (parsed < min) {\n    return min;\n  }\n  if (parsed > max) {\n    return max;\n  }\n  return parsed;\n}\n\nclass HTMLTableCellElementImpl extends HTMLElementImpl {\n  get colSpan() {\n    return reflectedAttributeClampedToRange(this.getAttributeNS(null, \"colspan\"), 1, 1000, 1);\n  }\n\n  set colSpan(V) {\n    this.setAttributeNS(null, \"colspan\", String(V));\n  }\n\n  get rowSpan() {\n    return reflectedAttributeClampedToRange(this.getAttributeNS(null, \"rowspan\"), 0, 65534, 1);\n  }\n\n  set rowSpan(V) {\n    this.setAttributeNS(null, \"rowspan\", String(V));\n  }\n\n  get cellIndex() {\n    const tr = closest(this, \"tr\");\n    if (tr === null) {\n      return -1;\n    }\n\n    return tr.cells.indexOf(this);\n  }\n\n  get scope() {\n    let value = this.getAttributeNS(null, \"scope\");\n    if (value === null) {\n      return \"\";\n    }\n\n    // Enumerated attribute is matched ASCII-case-insensitively.\n    value = asciiLowercase(value);\n    if (value === \"row\" || value === \"col\" || value === \"rowgroup\" || value === \"colgroup\") {\n      return value;\n    }\n\n    return \"\";\n  }\n\n  set scope(V) {\n    this.setAttributeNS(null, \"scope\", V);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLTableCellElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTableCellElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTableCellElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTableCellElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTableCellElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get colSpan() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get colSpan' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"colspan\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null) {\n            if (value < 1) {\n              return 1;\n            } else if (value >= 1 && value <= 1000) {\n              return value;\n            } else {\n              return 1000;\n            }\n          }\n        }\n        return 1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set colSpan(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set colSpan' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'colSpan' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 1;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"colspan\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rowSpan() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rowSpan' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rowspan\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null) {\n            if (value < 0) {\n              return 0;\n            } else if (value >= 0 && value <= 65534) {\n              return value;\n            } else {\n              return 65534;\n            }\n          }\n        }\n        return 1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rowSpan(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rowSpan' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'rowSpan' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 1;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rowspan\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get headers() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get headers' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"headers\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set headers(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set headers' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'headers' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"headers\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get cellIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cellIndex' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"cellIndex\"];\n    }\n\n    get scope() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scope' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"scope\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set scope(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scope' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'scope' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"scope\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get abbr() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get abbr' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"abbr\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set abbr(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set abbr' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'abbr' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"abbr\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get axis() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get axis' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"axis\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set axis(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set axis' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'axis' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"axis\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"height\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"height\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ch' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"char\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ch(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ch' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'ch' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"char\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get chOff() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get chOff' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"charoff\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set chOff(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set chOff' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'chOff' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"charoff\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get noWrap() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get noWrap' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"nowrap\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set noWrap(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set noWrap' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'noWrap' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"nowrap\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"nowrap\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vAlign() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vAlign' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"valign\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vAlign(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vAlign' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'vAlign' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"valign\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get bgColor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get bgColor' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"bgcolor\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set bgColor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set bgColor' called on an object that is not a valid instance of HTMLTableCellElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'bgColor' property on 'HTMLTableCellElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"bgcolor\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTableCellElement.prototype, {\n    colSpan: { enumerable: true },\n    rowSpan: { enumerable: true },\n    headers: { enumerable: true },\n    cellIndex: { enumerable: true },\n    scope: { enumerable: true },\n    abbr: { enumerable: true },\n    align: { enumerable: true },\n    axis: { enumerable: true },\n    height: { enumerable: true },\n    width: { enumerable: true },\n    ch: { enumerable: true },\n    chOff: { enumerable: true },\n    noWrap: { enumerable: true },\n    vAlign: { enumerable: true },\n    bgColor: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTableCellElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTableCellElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTableCellElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTableCellElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLTableColElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLTableColElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTableColElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTableColElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTableColElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTableColElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get span() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get span' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"span\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null) {\n            if (value < 1) {\n              return 1;\n            } else if (value >= 1 && value <= 1000) {\n              return value;\n            } else {\n              return 1000;\n            }\n          }\n        }\n        return 1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set span(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set span' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'span' property on 'HTMLTableColElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 1;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"span\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLTableColElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ch' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"char\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ch(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ch' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'ch' property on 'HTMLTableColElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"char\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get chOff() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get chOff' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"charoff\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set chOff(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set chOff' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'chOff' property on 'HTMLTableColElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"charoff\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vAlign() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vAlign' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"valign\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vAlign(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vAlign' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'vAlign' property on 'HTMLTableColElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"valign\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLTableColElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLTableColElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTableColElement.prototype, {\n    span: { enumerable: true },\n    align: { enumerable: true },\n    ch: { enumerable: true },\n    chOff: { enumerable: true },\n    vAlign: { enumerable: true },\n    width: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTableColElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTableColElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTableColElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTableColElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { childrenByLocalName } = require(\"../helpers/traversal\");\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nclass HTMLTableSectionElementImpl extends HTMLElementImpl {\n  get rows() {\n    if (!this._rows) {\n      this._rows = HTMLCollection.createImpl(this._globalObject, [], {\n        element: this,\n        query: () => childrenByLocalName(this, \"tr\")\n      });\n    }\n    return this._rows;\n  }\n\n  insertRow(index) {\n    if (index < -1 || index > this.rows.length) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot insert a row at an index that is less than -1 or greater than the number of existing rows\",\n        \"IndexSizeError\"\n      ]);\n    }\n\n    const tr = this._ownerDocument.createElement(\"tr\");\n\n    if (index === -1 || index === this.rows.length) {\n      this._append(tr);\n    } else {\n      const beforeTR = this.rows.item(index);\n      this._insert(tr, beforeTR);\n    }\n\n    return tr;\n  }\n\n  deleteRow(index) {\n    if (index < -1 || index >= this.rows.length) {\n      throw DOMException.create(this._globalObject, [\n        `Cannot delete a row at index ${index}, where no row exists`,\n        \"IndexSizeError\"\n      ]);\n    }\n\n    if (index === -1) {\n      if (this.rows.length > 0) {\n        const tr = this.rows.item(this.rows.length - 1);\n        this._remove(tr);\n      }\n    } else {\n      const tr = this.rows.item(index);\n      this._remove(tr);\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLTableSectionElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTableSectionElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTableSectionElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTableSectionElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTableSectionElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    insertRow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertRow' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'insertRow' on 'HTMLTableSectionElement': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = -1;\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].insertRow(...args));\n    }\n\n    deleteRow(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteRow' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'deleteRow' on 'HTMLTableSectionElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"long\"](curArg, {\n          context: \"Failed to execute 'deleteRow' on 'HTMLTableSectionElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteRow(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rows() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rows' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"rows\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"rows\"]);\n      });\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLTableSectionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ch' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"char\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ch(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ch' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'ch' property on 'HTMLTableSectionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"char\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get chOff() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get chOff' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"charoff\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set chOff(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set chOff' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'chOff' property on 'HTMLTableSectionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"charoff\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vAlign() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vAlign' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"valign\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vAlign(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vAlign' called on an object that is not a valid instance of HTMLTableSectionElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'vAlign' property on 'HTMLTableSectionElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"valign\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTableSectionElement.prototype, {\n    insertRow: { enumerable: true },\n    deleteRow: { enumerable: true },\n    rows: { enumerable: true },\n    align: { enumerable: true },\n    ch: { enumerable: true },\n    chOff: { enumerable: true },\n    vAlign: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTableSectionElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTableSectionElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTableSectionElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTableSectionElement-impl.js\");\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { HTML_NS } = require(\"../helpers/namespaces\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { firstChildWithLocalName, childrenByLocalName } = require(\"../helpers/traversal\");\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst NODE_TYPE = require(\"../node-type\");\n\nfunction tHeadInsertionPoint(table) {\n  const iterator = domSymbolTree.childrenIterator(table);\n  for (const child of iterator) {\n    if (child.nodeType !== NODE_TYPE.ELEMENT_NODE) {\n      continue;\n    }\n\n    if (child._namespaceURI !== HTML_NS || (child._localName !== \"caption\" && child._localName !== \"colgroup\")) {\n      return child;\n    }\n  }\n\n  return null;\n}\n\nclass HTMLTableElementImpl extends HTMLElementImpl {\n  get caption() {\n    return firstChildWithLocalName(this, \"caption\");\n  }\n\n  set caption(value) {\n    const currentCaption = this.caption;\n    if (currentCaption !== null) {\n      this.removeChild(currentCaption);\n    }\n\n    if (value !== null) {\n      const insertionPoint = this.firstChild;\n      this.insertBefore(value, insertionPoint);\n    }\n  }\n\n  get tHead() {\n    return firstChildWithLocalName(this, \"thead\");\n  }\n\n  set tHead(value) {\n    if (value !== null && value._localName !== \"thead\") {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot set a non-thead element as a table header\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    const currentHead = this.tHead;\n    if (currentHead !== null) {\n      this.removeChild(currentHead);\n    }\n\n    if (value !== null) {\n      const insertionPoint = tHeadInsertionPoint(this);\n      this.insertBefore(value, insertionPoint);\n    }\n  }\n\n  get tFoot() {\n    return firstChildWithLocalName(this, \"tfoot\");\n  }\n\n  set tFoot(value) {\n    if (value !== null && value._localName !== \"tfoot\") {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot set a non-tfoot element as a table footer\",\n        \"HierarchyRequestError\"\n      ]);\n    }\n\n    const currentFoot = this.tFoot;\n    if (currentFoot !== null) {\n      this.removeChild(currentFoot);\n    }\n\n    if (value !== null) {\n      this.appendChild(value);\n    }\n  }\n\n  get rows() {\n    if (!this._rows) {\n      this._rows = HTMLCollection.createImpl(this._globalObject, [], {\n        element: this,\n        query: () => {\n          const headerRows = [];\n          const bodyRows = [];\n          const footerRows = [];\n\n          const iterator = domSymbolTree.childrenIterator(this);\n          for (const child of iterator) {\n            if (child.nodeType !== NODE_TYPE.ELEMENT_NODE || child._namespaceURI !== HTML_NS) {\n              continue;\n            }\n\n            if (child._localName === \"thead\") {\n              headerRows.push(...childrenByLocalName(child, \"tr\"));\n            } else if (child._localName === \"tbody\") {\n              bodyRows.push(...childrenByLocalName(child, \"tr\"));\n            } else if (child._localName === \"tfoot\") {\n              footerRows.push(...childrenByLocalName(child, \"tr\"));\n            } else if (child._localName === \"tr\") {\n              bodyRows.push(child);\n            }\n          }\n\n          return [...headerRows, ...bodyRows, ...footerRows];\n        }\n      });\n    }\n    return this._rows;\n  }\n\n  get tBodies() {\n    if (!this._tBodies) {\n      this._tBodies = HTMLCollection.createImpl(this._globalObject, [], {\n        element: this,\n        query: () => childrenByLocalName(this, \"tbody\")\n      });\n    }\n    return this._tBodies;\n  }\n\n  createTBody() {\n    const el = this._ownerDocument.createElement(\"TBODY\");\n\n    const tbodies = childrenByLocalName(this, \"tbody\");\n    const insertionPoint = tbodies[tbodies.length - 1];\n\n    if (insertionPoint) {\n      this.insertBefore(el, insertionPoint.nextSibling);\n    } else {\n      this.appendChild(el);\n    }\n    return el;\n  }\n\n  createTHead() {\n    let el = this.tHead;\n    if (!el) {\n      el = this.tHead = this._ownerDocument.createElement(\"THEAD\");\n    }\n    return el;\n  }\n\n  deleteTHead() {\n    this.tHead = null;\n  }\n\n  createTFoot() {\n    let el = this.tFoot;\n    if (!el) {\n      el = this.tFoot = this._ownerDocument.createElement(\"TFOOT\");\n    }\n    return el;\n  }\n\n  deleteTFoot() {\n    this.tFoot = null;\n  }\n\n  createCaption() {\n    let el = this.caption;\n    if (!el) {\n      el = this.caption = this._ownerDocument.createElement(\"CAPTION\");\n    }\n    return el;\n  }\n\n  deleteCaption() {\n    const c = this.caption;\n    if (c) {\n      c.parentNode.removeChild(c);\n    }\n  }\n\n  insertRow(index) {\n    if (index < -1 || index > this.rows.length) {\n      throw DOMException.create(this._globalObject, [\n        \"Cannot insert a row at an index that is less than -1 or greater than the number of existing rows\",\n        \"IndexSizeError\"\n      ]);\n    }\n\n    const tr = this._ownerDocument.createElement(\"tr\");\n\n    if (this.rows.length === 0 && this.tBodies.length === 0) {\n      const tBody = this._ownerDocument.createElement(\"tbody\");\n      tBody.appendChild(tr);\n      this.appendChild(tBody);\n    } else if (this.rows.length === 0) {\n      const tBody = this.tBodies.item(this.tBodies.length - 1);\n      tBody.appendChild(tr);\n    } else if (index === -1 || index === this.rows.length) {\n      const tSection = this.rows.item(this.rows.length - 1).parentNode;\n      tSection.appendChild(tr);\n    } else {\n      const beforeTR = this.rows.item(index);\n      const tSection = beforeTR.parentNode;\n      tSection.insertBefore(tr, beforeTR);\n    }\n\n    return tr;\n  }\n\n  deleteRow(index) {\n    const rowLength = this.rows.length;\n    if (index < -1 || index >= rowLength) {\n      throw DOMException.create(this._globalObject, [\n        `Cannot delete a row at index ${index}, where no row exists`,\n        \"IndexSizeError\"\n      ]);\n    }\n\n    if (index === -1) {\n      if (rowLength === 0) {\n        return;\n      }\n\n      index = rowLength - 1;\n    }\n\n    const tr = this.rows.item(index);\n    tr.parentNode.removeChild(tr);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLTableElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst HTMLTableCaptionElement = require(\"./HTMLTableCaptionElement.js\");\nconst HTMLTableSectionElement = require(\"./HTMLTableSectionElement.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTableElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTableElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTableElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTableElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    createCaption() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createCaption' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createCaption());\n    }\n\n    deleteCaption() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteCaption' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteCaption();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    createTHead() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createTHead' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createTHead());\n    }\n\n    deleteTHead() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteTHead' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteTHead();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    createTFoot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createTFoot' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createTFoot());\n    }\n\n    deleteTFoot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteTFoot' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteTFoot();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    createTBody() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createTBody' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createTBody());\n    }\n\n    insertRow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertRow' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'insertRow' on 'HTMLTableElement': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = -1;\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].insertRow(...args));\n    }\n\n    deleteRow(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteRow' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'deleteRow' on 'HTMLTableElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"long\"](curArg, {\n          context: \"Failed to execute 'deleteRow' on 'HTMLTableElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteRow(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get caption() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get caption' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"caption\"]);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set caption(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set caption' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = HTMLTableCaptionElement.convert(globalObject, V, {\n          context: \"Failed to set the 'caption' property on 'HTMLTableElement': The provided value\"\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"caption\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get tHead() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tHead' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"tHead\"]);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set tHead(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set tHead' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = HTMLTableSectionElement.convert(globalObject, V, {\n          context: \"Failed to set the 'tHead' property on 'HTMLTableElement': The provided value\"\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"tHead\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get tFoot() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tFoot' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"tFoot\"]);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set tFoot(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set tFoot' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      if (V === null || V === undefined) {\n        V = null;\n      } else {\n        V = HTMLTableSectionElement.convert(globalObject, V, {\n          context: \"Failed to set the 'tFoot' property on 'HTMLTableElement': The provided value\"\n        });\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"tFoot\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get tBodies() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tBodies' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"tBodies\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"tBodies\"]);\n      });\n    }\n\n    get rows() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rows' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"rows\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"rows\"]);\n      });\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get border() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get border' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"border\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set border(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set border' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'border' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"border\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get frame() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get frame' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"frame\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set frame(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set frame' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'frame' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"frame\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rules() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rules' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rules\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rules(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rules' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'rules' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rules\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get summary() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get summary' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"summary\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set summary(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set summary' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'summary' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"summary\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get bgColor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get bgColor' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"bgcolor\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set bgColor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set bgColor' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'bgColor' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"bgcolor\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get cellPadding() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cellPadding' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"cellpadding\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set cellPadding(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set cellPadding' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'cellPadding' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"cellpadding\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get cellSpacing() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cellSpacing' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"cellspacing\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set cellSpacing(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set cellSpacing' called on an object that is not a valid instance of HTMLTableElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'cellSpacing' property on 'HTMLTableElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"cellspacing\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTableElement.prototype, {\n    createCaption: { enumerable: true },\n    deleteCaption: { enumerable: true },\n    createTHead: { enumerable: true },\n    deleteTHead: { enumerable: true },\n    createTFoot: { enumerable: true },\n    deleteTFoot: { enumerable: true },\n    createTBody: { enumerable: true },\n    insertRow: { enumerable: true },\n    deleteRow: { enumerable: true },\n    caption: { enumerable: true },\n    tHead: { enumerable: true },\n    tFoot: { enumerable: true },\n    tBodies: { enumerable: true },\n    rows: { enumerable: true },\n    align: { enumerable: true },\n    border: { enumerable: true },\n    frame: { enumerable: true },\n    rules: { enumerable: true },\n    summary: { enumerable: true },\n    width: { enumerable: true },\n    bgColor: { enumerable: true },\n    cellPadding: { enumerable: true },\n    cellSpacing: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTableElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTableElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTableElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTableElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLTimeElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLTimeElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTimeElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTimeElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTimeElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTimeElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get dateTime() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get dateTime' called on an object that is not a valid instance of HTMLTimeElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"datetime\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set dateTime(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set dateTime' called on an object that is not a valid instance of HTMLTimeElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'dateTime' property on 'HTMLTimeElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"datetime\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTimeElement.prototype, {\n    dateTime: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTimeElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTimeElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTimeElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTimeElement-impl.js\");\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst HTMLCollection = require(\"../../../generated/idl/HTMLCollection\");\nconst { HTML_NS } = require(\"../helpers/namespaces\");\nconst { childrenByLocalNames } = require(\"../helpers/traversal\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\n\nconst cellLocalNames = new Set([\"td\", \"th\"]);\n\nclass HTMLTableRowElementImpl extends HTMLElementImpl {\n  get cells() {\n    if (!this._cells) {\n      this._cells = HTMLCollection.createImpl(this._globalObject, [], {\n        element: this,\n        query: () => childrenByLocalNames(this, cellLocalNames)\n      });\n    }\n    return this._cells;\n  }\n\n  get rowIndex() {\n    const parent = this.parentElement;\n    if (parent === null || parent.namespaceURI !== HTML_NS) {\n      return -1;\n    }\n\n    let tableElement = parent;\n    if (parent.localName === \"thead\" || parent.localName === \"tbody\" || parent.localName === \"tfoot\") {\n      tableElement = parent.parentElement;\n    }\n    if (tableElement === null || tableElement.namespaceURI !== HTML_NS || tableElement.localName !== \"table\") {\n      return -1;\n    }\n\n    return tableElement.rows.indexOf(this);\n  }\n\n  get sectionRowIndex() {\n    const parent = domSymbolTree.parent(this);\n    if (parent === null) {\n      return -1;\n    }\n\n    const { rows } = parent;\n    if (!rows) {\n      return -1;\n    }\n\n    return rows.indexOf(this);\n  }\n\n  insertCell(index) {\n    const td = this._ownerDocument.createElement(\"TD\");\n    const { cells } = this;\n    if (index < -1 || index > cells.length) {\n      throw DOMException.create(this._globalObject, [\"The index is not in the allowed range.\", \"IndexSizeError\"]);\n    }\n    if (index === -1 || index === cells.length) {\n      this._append(td);\n    } else {\n      const ref = cells.item(index);\n      this._insert(td, ref);\n    }\n    return td;\n  }\n\n  deleteCell(index) {\n    const { cells } = this;\n    if (index < -1 || index >= cells.length) {\n      throw DOMException.create(this._globalObject, [\"The index is not in the allowed range.\", \"IndexSizeError\"]);\n    }\n    if (index === -1) {\n      if (cells.length === 0) {\n        return;\n      }\n\n      index = cells.length - 1;\n    }\n    const td = cells.item(index);\n    this._remove(td);\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLTableRowElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTableRowElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTableRowElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTableRowElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTableRowElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    insertCell() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertCell' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long\"](curArg, {\n            context: \"Failed to execute 'insertCell' on 'HTMLTableRowElement': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = -1;\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].insertCell(...args));\n    }\n\n    deleteCell(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteCell' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'deleteCell' on 'HTMLTableRowElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"long\"](curArg, {\n          context: \"Failed to execute 'deleteCell' on 'HTMLTableRowElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteCell(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rowIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rowIndex' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"rowIndex\"];\n    }\n\n    get sectionRowIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get sectionRowIndex' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"sectionRowIndex\"];\n    }\n\n    get cells() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cells' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"cells\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"cells\"]);\n      });\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLTableRowElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get ch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ch' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"char\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set ch(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ch' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'ch' property on 'HTMLTableRowElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"char\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get chOff() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get chOff' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"charoff\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set chOff(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set chOff' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'chOff' property on 'HTMLTableRowElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"charoff\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vAlign() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vAlign' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"valign\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vAlign(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vAlign' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'vAlign' property on 'HTMLTableRowElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"valign\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get bgColor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get bgColor' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"bgcolor\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set bgColor(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set bgColor' called on an object that is not a valid instance of HTMLTableRowElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'bgColor' property on 'HTMLTableRowElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"bgcolor\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLTableRowElement.prototype, {\n    insertCell: { enumerable: true },\n    deleteCell: { enumerable: true },\n    rowIndex: { enumerable: true },\n    sectionRowIndex: { enumerable: true },\n    cells: { enumerable: true },\n    align: { enumerable: true },\n    ch: { enumerable: true },\n    chOff: { enumerable: true },\n    vAlign: { enumerable: true },\n    bgColor: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTableRowElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTableRowElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTableRowElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTableRowElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nconst Document = require(\"../../../generated/idl/Document\");\nconst DocumentFragment = require(\"../../../generated/idl/DocumentFragment\");\n\nconst { cloningSteps, domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { clone } = require(\"../node\");\n\nclass HTMLTemplateElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    const doc = this._appropriateTemplateContentsOwnerDocument(this._ownerDocument);\n    this._templateContents = DocumentFragment.createImpl(this._globalObject, [], {\n      ownerDocument: doc,\n      host: this\n    });\n  }\n\n  // https://html.spec.whatwg.org/multipage/scripting.html#appropriate-template-contents-owner-document\n  _appropriateTemplateContentsOwnerDocument(doc) {\n    if (!doc._isInertTemplateDocument) {\n      if (doc._associatedInertTemplateDocument === undefined) {\n        const newDoc = Document.createImpl(this._globalObject, [], {\n          options: {\n            parsingMode: doc._parsingMode,\n            encoding: doc._encoding\n          }\n        });\n        newDoc._isInertTemplateDocument = true;\n\n        doc._associatedInertTemplateDocument = newDoc;\n      }\n\n      doc = doc._associatedInertTemplateDocument;\n    }\n\n    return doc;\n  }\n\n  // https://html.spec.whatwg.org/multipage/scripting.html#template-adopting-steps\n  _adoptingSteps() {\n    const doc = this._appropriateTemplateContentsOwnerDocument(this._ownerDocument);\n    doc._adoptNode(this._templateContents);\n  }\n\n  get content() {\n    return this._templateContents;\n  }\n\n  [cloningSteps](copy, node, document, cloneChildren) {\n    if (!cloneChildren) {\n      return;\n    }\n\n    for (const child of domSymbolTree.childrenIterator(node._templateContents)) {\n      const childCopy = clone(child, copy._templateContents._ownerDocument, true);\n      copy._templateContents.appendChild(childCopy);\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLTemplateElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTemplateElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTemplateElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTemplateElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTemplateElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get content() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get content' called on an object that is not a valid instance of HTMLTemplateElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"content\"]);\n    }\n  }\n  Object.defineProperties(HTMLTemplateElement.prototype, {\n    content: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTemplateElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTemplateElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTemplateElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTemplateElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nconst DefaultConstraintValidationImpl =\n  require(\"../constraint-validation/DefaultConstraintValidation-impl\").implementation;\nconst ValidityState = require(\"../../../generated/idl/ValidityState\");\nconst { mixin } = require(\"../../utils\");\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst { cloningSteps } = require(\"../helpers/internal-constants\");\nconst { isDisabled, getLabelsForLabelable, formOwner } = require(\"../helpers/form-controls\");\nconst { childTextContent } = require(\"../helpers/text\");\nconst { fireAnEvent } = require(\"../helpers/events\");\n\nclass HTMLTextAreaElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this._selectionStart = this._selectionEnd = 0;\n    this._selectionDirection = \"none\";\n    this._rawValue = \"\";\n    this._dirtyValue = false;\n\n    this._customValidityErrorMessage = \"\";\n\n    this._labels = null;\n  }\n\n  _formReset() {\n    this._rawValue = childTextContent(this);\n    this._dirtyValue = false;\n  }\n\n  _getAPIValue() {\n    return this._rawValue.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#textarea-wrapping-transformation\n  _getValue() {\n    const apiValue = this._getAPIValue();\n    const wrap = this.getAttributeNS(null, \"wrap\");\n    return wrap === \"hard\" ?\n      textareaWrappingTransformation(apiValue, this.getAttributeNS(null, \"cols\") ?? 20) :\n      apiValue;\n  }\n\n  _childTextContentChangeSteps() {\n    super._childTextContentChangeSteps();\n\n    if (this._dirtyValue === false) {\n      this._rawValue = childTextContent(this);\n    }\n  }\n\n  get labels() {\n    return getLabelsForLabelable(this);\n  }\n\n  get form() {\n    return formOwner(this);\n  }\n\n  get defaultValue() {\n    return childTextContent(this);\n  }\n\n  set defaultValue(val) {\n    this.textContent = val;\n  }\n\n  get value() {\n    return this._getAPIValue();\n  }\n\n  set value(val) {\n    // https://html.spec.whatwg.org/multipage/form-elements.html#dom-textarea-value\n    const oldAPIValue = this._getAPIValue();\n    this._rawValue = val;\n    this._dirtyValue = true;\n\n    if (oldAPIValue !== this._getAPIValue()) {\n      this._selectionStart = this._selectionEnd = this._getValueLength();\n      this._selectionDirection = \"none\";\n    }\n  }\n\n  get textLength() {\n    return this.value.length; // code unit length (16 bit)\n  }\n\n  get type() {\n    return \"textarea\";\n  }\n\n  _dispatchSelectEvent() {\n    setTimeout(() => fireAnEvent(\"select\", this, undefined, { bubbles: true, cancelable: false }), 0);\n  }\n\n  _getValueLength() {\n    return typeof this.value === \"string\" ? this.value.length : 0;\n  }\n\n  select() {\n    this._selectionStart = 0;\n    this._selectionEnd = this._getValueLength();\n    this._selectionDirection = \"none\";\n    this._dispatchSelectEvent();\n  }\n\n  get selectionStart() {\n    return this._selectionStart;\n  }\n\n  set selectionStart(start) {\n    this.setSelectionRange(start, Math.max(start, this._selectionEnd), this._selectionDirection);\n  }\n\n  get selectionEnd() {\n    return this._selectionEnd;\n  }\n\n  set selectionEnd(end) {\n    this.setSelectionRange(this._selectionStart, end, this._selectionDirection);\n  }\n\n  get selectionDirection() {\n    return this._selectionDirection;\n  }\n\n  set selectionDirection(dir) {\n    this.setSelectionRange(this._selectionStart, this._selectionEnd, dir);\n  }\n\n  setSelectionRange(start, end, dir) {\n    this._selectionEnd = Math.min(end, this._getValueLength());\n    this._selectionStart = Math.min(start, this._selectionEnd);\n    this._selectionDirection = dir === \"forward\" || dir === \"backward\" ? dir : \"none\";\n    this._dispatchSelectEvent();\n  }\n\n  setRangeText(repl, start, end, selectionMode = \"preserve\") {\n    if (arguments.length < 2) {\n      start = this._selectionStart;\n      end = this._selectionEnd;\n    } else if (start > end) {\n      throw DOMException.create(this._globalObject, [\"The index is not in the allowed range.\", \"IndexSizeError\"]);\n    }\n\n    start = Math.min(start, this._getValueLength());\n    end = Math.min(end, this._getValueLength());\n\n    const val = this.value;\n    let selStart = this._selectionStart;\n    let selEnd = this._selectionEnd;\n\n    this.value = val.slice(0, start) + repl + val.slice(end);\n\n    const newEnd = start + repl.length;\n\n    if (selectionMode === \"select\") {\n      this.setSelectionRange(start, newEnd);\n    } else if (selectionMode === \"start\") {\n      this.setSelectionRange(start, start);\n    } else if (selectionMode === \"end\") {\n      this.setSelectionRange(newEnd, newEnd);\n    } else { // preserve\n      const delta = repl.length - (end - start);\n\n      if (selStart > end) {\n        selStart += delta;\n      } else if (selStart > start) {\n        selStart = start;\n      }\n\n      if (selEnd > end) {\n        selEnd += delta;\n      } else if (selEnd > start) {\n        selEnd = newEnd;\n      }\n\n      this.setSelectionRange(selStart, selEnd);\n    }\n  }\n\n  _barredFromConstraintValidationSpecialization() {\n    return this.hasAttributeNS(null, \"readonly\");\n  }\n\n  get _mutable() {\n    return !isDisabled(this) && !this.hasAttributeNS(null, \"readonly\");\n  }\n\n  // https://html.spec.whatwg.org/multipage/form-elements.html#attr-textarea-required\n  get validity() {\n    if (!this._validity) {\n      const state = {\n        valueMissing: () => this.hasAttributeNS(null, \"required\") && this._mutable && this.value === \"\"\n      };\n\n      this._validity = ValidityState.createImpl(this._globalObject, [], {\n        element: this,\n        state\n      });\n    }\n    return this._validity;\n  }\n\n  [cloningSteps](copy, node) {\n    copy._dirtyValue = node._dirtyValue;\n    copy._rawValue = node._rawValue;\n  }\n}\n\nmixin(HTMLTextAreaElementImpl.prototype, DefaultConstraintValidationImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLTextAreaElementImpl\n};\n\nfunction textareaWrappingTransformation(text, cols) {\n  let lineStart = 0;\n  let lineEnd = text.indexOf(\"\\n\");\n  if (lineEnd === -1) {\n    lineEnd = text.length;\n  }\n\n  while (lineStart < text.length) {\n    const lineLength = lineEnd - lineStart;\n    if (lineLength > cols) {\n      // split the line\n      lineEnd = lineStart + cols;\n      text = text.slice(0, lineEnd) + \"\\n\" + text.slice(lineEnd);\n    }\n    // move to next line\n    lineStart = lineEnd + 1; // step over the newline\n    lineEnd = text.indexOf(\"\\n\", lineStart);\n    if (lineEnd === -1) {\n      lineEnd = text.length;\n    }\n  }\n\n  return text;\n}\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst SelectionMode = require(\"./SelectionMode.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst create_DOMException = require(\"./DOMException.js\").create;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTextAreaElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTextAreaElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTextAreaElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTextAreaElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    setCustomValidity(error) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setCustomValidity' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setCustomValidity' on 'HTMLTextAreaElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setCustomValidity' on 'HTMLTextAreaElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setCustomValidity(...args);\n    }\n\n    select() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'select' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol].select();\n    }\n\n    setRangeText(replacement) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setRangeText' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setRangeText' on 'HTMLTextAreaElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      switch (arguments.length) {\n        case 1:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          break;\n        case 2:\n          throw new globalObject.TypeError(\n            `Failed to execute 'setRangeText' on 'HTMLTextAreaElement': only ${arguments.length} arguments present.`\n          );\n          break;\n        case 3:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 3\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          break;\n        default:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            curArg = conversions[\"unsigned long\"](curArg, {\n              context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 3\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[3];\n            if (curArg !== undefined) {\n              curArg = SelectionMode.convert(globalObject, curArg, {\n                context: \"Failed to execute 'setRangeText' on 'HTMLTextAreaElement': parameter 4\"\n              });\n            } else {\n              curArg = \"preserve\";\n            }\n            args.push(curArg);\n          }\n      }\n      return esValue[implSymbol].setRangeText(...args);\n    }\n\n    setSelectionRange(start, end) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setSelectionRange' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setSelectionRange' on 'HTMLTextAreaElement': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setSelectionRange' on 'HTMLTextAreaElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setSelectionRange' on 'HTMLTextAreaElement': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'setSelectionRange' on 'HTMLTextAreaElement': parameter 3\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setSelectionRange(...args);\n    }\n\n    get autocomplete() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get autocomplete' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"autocomplete\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set autocomplete(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set autocomplete' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'autocomplete' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"autocomplete\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get autofocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get autofocus' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"autofocus\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set autofocus(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set autofocus' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'autofocus' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"autofocus\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"autofocus\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get cols() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cols' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"cols\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 1 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 20;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set cols(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set cols' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'cols' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 1 ? V : 20;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"cols\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get dirName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get dirName' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"dirname\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set dirName(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set dirName' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'dirName' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"dirname\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get disabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get disabled' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"disabled\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set disabled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set disabled' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'disabled' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"disabled\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"disabled\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get inputMode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get inputMode' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"inputmode\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set inputMode(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set inputMode' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'inputMode' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"inputmode\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get maxLength() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get maxLength' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"maxlength\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && conversions.long(value) === value) {\n            return value;\n          }\n        }\n        return -1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set maxLength(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set maxLength' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'maxLength' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V < 0) {\n          throw create_DOMException(globalObject, [\n            `The negative value ${V} cannot be set for the maxLength property.`,\n            \"IndexSizeError\"\n          ]);\n        }\n\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"maxlength\", String(V));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get minLength() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get minLength' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"minlength\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && conversions.long(value) === value) {\n            return value;\n          }\n        }\n        return -1;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set minLength(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set minLength' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'minLength' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V < 0) {\n          throw create_DOMException(globalObject, [\n            `The negative value ${V} cannot be set for the minLength property.`,\n            \"IndexSizeError\"\n          ]);\n        }\n\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"minlength\", String(V));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get placeholder() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get placeholder' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"placeholder\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set placeholder(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set placeholder' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'placeholder' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"placeholder\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get readOnly() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readOnly' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"readonly\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set readOnly(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set readOnly' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'readOnly' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"readonly\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"readonly\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get required() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get required' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"required\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set required(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set required' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'required' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"required\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"required\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rows() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rows' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rows\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 1 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 2;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rows(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rows' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'rows' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 1 ? V : 2;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rows\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get wrap() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get wrap' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"wrap\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set wrap(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set wrap' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'wrap' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"wrap\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n\n    get defaultValue() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get defaultValue' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"defaultValue\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set defaultValue(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set defaultValue' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'defaultValue' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"defaultValue\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"value\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"value\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get textLength() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get textLength' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"textLength\"];\n    }\n\n    get willValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get willValidate' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"willValidate\"];\n    }\n\n    get validity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validity' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"validity\"]);\n    }\n\n    get validationMessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validationMessage' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"validationMessage\"];\n    }\n\n    get labels() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get labels' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"labels\"]);\n    }\n\n    get selectionStart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectionStart' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectionStart\"];\n    }\n\n    set selectionStart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectionStart' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'selectionStart' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"selectionStart\"] = V;\n    }\n\n    get selectionEnd() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectionEnd' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectionEnd\"];\n    }\n\n    set selectionEnd(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectionEnd' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'selectionEnd' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"selectionEnd\"] = V;\n    }\n\n    get selectionDirection() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get selectionDirection' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"selectionDirection\"];\n    }\n\n    set selectionDirection(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set selectionDirection' called on an object that is not a valid instance of HTMLTextAreaElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'selectionDirection' property on 'HTMLTextAreaElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"selectionDirection\"] = V;\n    }\n  }\n  Object.defineProperties(HTMLTextAreaElement.prototype, {\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    setCustomValidity: { enumerable: true },\n    select: { enumerable: true },\n    setRangeText: { enumerable: true },\n    setSelectionRange: { enumerable: true },\n    autocomplete: { enumerable: true },\n    autofocus: { enumerable: true },\n    cols: { enumerable: true },\n    dirName: { enumerable: true },\n    disabled: { enumerable: true },\n    form: { enumerable: true },\n    inputMode: { enumerable: true },\n    maxLength: { enumerable: true },\n    minLength: { enumerable: true },\n    name: { enumerable: true },\n    placeholder: { enumerable: true },\n    readOnly: { enumerable: true },\n    required: { enumerable: true },\n    rows: { enumerable: true },\n    wrap: { enumerable: true },\n    type: { enumerable: true },\n    defaultValue: { enumerable: true },\n    value: { enumerable: true },\n    textLength: { enumerable: true },\n    willValidate: { enumerable: true },\n    validity: { enumerable: true },\n    validationMessage: { enumerable: true },\n    labels: { enumerable: true },\n    selectionStart: { enumerable: true },\n    selectionEnd: { enumerable: true },\n    selectionDirection: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTextAreaElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTextAreaElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTextAreaElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTextAreaElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLUnknownElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLUnknownElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLUnknownElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLUnknownElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLUnknownElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLUnknownElement extends globalObject.HTMLElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(HTMLUnknownElement.prototype, {\n    [Symbol.toStringTag]: { value: \"HTMLUnknownElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLUnknownElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLUnknownElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLUnknownElement-impl.js\");\n","\"use strict\";\n\nconst { legacyHookDecode } = require(\"@exodus/bytes/encoding.js\");\nconst { parseURL, serializeURL } = require(\"whatwg-url\");\nconst sniffHTMLEncoding = require(\"html-encoding-sniffer\");\nconst { computedMIMEType } = require(\"whatwg-mimetype\");\n\nconst window = require(\"../../browser/Window\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst { evaluateJavaScriptURL } = require(\"../window/navigation\");\nconst { parseIntoDocument } = require(\"../../browser/parser\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst { getAttributeValue } = require(\"../attributes\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\n\nfunction fireLoadEvent(document, frame, attaching) {\n  if (attaching) {\n    fireAnEvent(\"load\", frame);\n\n    return;\n  }\n\n  const dummyPromise = Promise.resolve();\n\n  function onLoad() {\n    fireAnEvent(\"load\", frame);\n  }\n\n  document._queue.push(dummyPromise, onLoad);\n}\n\nfunction fetchFrame(serializedURL, frame, document, contentDoc) {\n  const resourceLoader = document._resourceLoader;\n\n  function onFrameLoaded(data, response) {\n    const contentType = computedMIMEType(data, {\n      contentTypeHeader: response.headers.get(\"content-type\")\n    });\n    const xml = contentType.isXML();\n    const transportLayerEncodingLabel = contentType.parameters.get(\"charset\");\n\n    if (xml) {\n      contentDoc._parsingMode = \"xml\";\n    }\n    contentDoc.contentType = contentType.essence;\n\n    contentDoc._encoding = sniffHTMLEncoding(data, {\n      xml,\n      transportLayerEncodingLabel,\n      // half-assed implementation of\n      // https://html.spec.whatwg.org/multipage/parsing.html#determining-the-character-encoding step 6\n      defaultEncoding: xml ? \"UTF-8\" : document._encoding\n    });\n\n    const html = legacyHookDecode(data, contentDoc._encoding);\n\n    try {\n      parseIntoDocument(html, contentDoc);\n    } catch (error) {\n      const { DOMException } = contentDoc._globalObject;\n\n      if (\n        error.constructor.name === \"DOMException\" &&\n        error.code === DOMException.SYNTAX_ERR &&\n        contentDoc._parsingMode === \"xml\"\n      ) {\n        // As defined (https://html.spec.whatwg.org/#read-xml) parsing error in XML document may be reported inline by\n        // mutating the document.\n        const element = contentDoc.createElementNS(\"http://www.mozilla.org/newlayout/xml/parsererror.xml\", \"parsererror\");\n        element.textContent = error.message;\n\n        while (contentDoc.childNodes.length > 0) {\n          contentDoc.removeChild(contentDoc.lastChild);\n        }\n        contentDoc.appendChild(element);\n      } else {\n        throw error;\n      }\n    }\n\n    contentDoc.close();\n\n    return new Promise((resolve, reject) => {\n      contentDoc.addEventListener(\"load\", resolve);\n      contentDoc.addEventListener(\"error\", reject);\n    });\n  }\n\n  resourceLoader.fetch(serializedURL, {\n    element: frame,\n    onLoad: onFrameLoaded\n  });\n}\n\nfunction canDispatchEvents(frame, attaching) {\n  if (!attaching) {\n    return false;\n  }\n\n  return Object.keys(frame._eventListeners).length === 0;\n}\n\nfunction loadFrame(frame, attaching) {\n  if (frame._contentDocument) {\n    if (frame._contentDocument._defaultView) {\n      // close calls delete on its document.\n      frame._contentDocument._defaultView.close();\n    } else {\n      delete frame._contentDocument;\n    }\n  }\n\n  const parentDoc = frame._ownerDocument;\n\n  // https://html.spec.whatwg.org/#process-the-iframe-attributes\n  let url;\n  const srcAttribute = getAttributeValue(frame, \"src\");\n  if (srcAttribute === \"\") {\n    url = parseURL(\"about:blank\");\n  } else {\n    url = parseURL(srcAttribute, { baseURL: parentDoc.baseURL() || undefined }) || parseURL(\"about:blank\");\n  }\n  const serializedURL = serializeURL(url);\n\n  const wnd = window.createWindow({\n    parsingMode: \"html\",\n    url: url.scheme === \"javascript\" ? parentDoc.URL : serializedURL,\n    parentOrigin: parentDoc._origin,\n    dispatcher: parentDoc._defaultView._dispatcher,\n    loadSubresources: parentDoc._defaultView._loadSubresources,\n    userAgent: parentDoc._defaultView._userAgent,\n    referrer: parentDoc.URL,\n    cookieJar: parentDoc._cookieJar,\n    pool: parentDoc._pool,\n    encoding: parentDoc._encoding,\n    runScripts: parentDoc._defaultView._runScripts,\n    commonForOrigin: parentDoc._defaultView._commonForOrigin,\n    pretendToBeVisual: parentDoc._defaultView._pretendToBeVisual\n  });\n\n  const contentDoc = frame._contentDocument = idlUtils.implForWrapper(wnd._document);\n  const parent = parentDoc._defaultView;\n  const contentWindow = contentDoc._defaultView;\n  contentWindow._parent = parent;\n  contentWindow._top = parent.top;\n  contentWindow._frameElement = frame;\n  contentWindow._virtualConsole = parent._virtualConsole;\n\n  if (parentDoc._origin === contentDoc._origin) {\n    contentWindow._currentOriginData.windowsInSameOrigin.push(contentWindow);\n  }\n\n  const noQueue = canDispatchEvents(frame, attaching);\n\n  // Handle about:blank with a simulated load of an empty document.\n  if (serializedURL === \"about:blank\") {\n    // Cannot be done inside the enqueued callback; the documentElement etc. need to be immediately available.\n    parseIntoDocument(\"<html><head></head><body></body></html>\", contentDoc);\n    contentDoc.close(noQueue);\n\n    if (noQueue) {\n      fireLoadEvent(parentDoc, frame, noQueue);\n    } else {\n      contentDoc.addEventListener(\"load\", () => {\n        fireLoadEvent(parentDoc, frame);\n      });\n    }\n  } else if (url.scheme === \"javascript\") {\n    // Cannot be done inside the enqueued callback; the documentElement etc. need to be immediately available.\n    parseIntoDocument(\"<html><head></head><body></body></html>\", contentDoc);\n    contentDoc.close(noQueue);\n    const result = evaluateJavaScriptURL(contentWindow, url);\n    if (typeof result === \"string\") {\n      contentDoc.body.textContent = result;\n    }\n    if (noQueue) {\n      fireLoadEvent(parentDoc, frame, noQueue);\n    } else {\n      contentDoc.addEventListener(\"load\", () => {\n        fireLoadEvent(parentDoc, frame);\n      });\n    }\n  } else {\n    fetchFrame(serializedURL, frame, parentDoc, contentDoc);\n  }\n}\n\nfunction refreshAccessors(document) {\n  const { _defaultView } = document;\n\n  if (!_defaultView) {\n    return;\n  }\n\n  const frames = document.querySelectorAll(\"iframe,frame\");\n\n  // delete accessors for all frames\n  for (let i = 0; i < _defaultView._length; ++i) {\n    delete _defaultView[i];\n  }\n\n  _defaultView._length = frames.length;\n  for (let i = 0; i < frames.length; ++i) {\n    const frame = frames.item(i);\n    Object.defineProperty(_defaultView, i, {\n      configurable: true,\n      enumerable: true,\n      get() {\n        return frame.contentWindow;\n      }\n    });\n  }\n}\n\nclass HTMLFrameElementImpl extends HTMLElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._contentDocument = null;\n  }\n  _attrModified(name, value, oldVal) {\n    super._attrModified(name, value, oldVal);\n    if (name === \"src\") {\n      // iframe should never load in a document without a Window\n      // (e.g. implementation.createHTMLDocument)\n      if (this._attached && this._ownerDocument._defaultView) {\n        loadFrame(this);\n      }\n    }\n  }\n\n  _detach() {\n    super._detach();\n\n    if (this.contentWindow) {\n      // TODO: this is not really correct behavior, because jsdom's window.close() is very aggressive and is meant for\n      // killing off the whole jsdom, not just moving the Window to a no-browsing-context state.\n      //\n      // If we revise this in the future, be sure to also invalidate the base URL cache.\n\n      this.contentWindow.close();\n    }\n\n    refreshAccessors(this._ownerDocument);\n  }\n\n  _attach() {\n    super._attach();\n\n    if (this._ownerDocument._defaultView) {\n      loadFrame(this, true);\n    }\n    refreshAccessors(this._ownerDocument);\n  }\n\n  get contentDocument() {\n    return this._contentDocument;\n  }\n\n  get contentWindow() {\n    return this.contentDocument ? this.contentDocument._defaultView : null;\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLFrameElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLFrameElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLFrameElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLFrameElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLFrameElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get scrolling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrolling' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"scrolling\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set scrolling(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scrolling' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'scrolling' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"scrolling\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get frameBorder() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get frameBorder' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"frameborder\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set frameBorder(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set frameBorder' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'frameBorder' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"frameborder\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get longDesc() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get longDesc' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"longdesc\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._longdescURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._longdescURLCache;\n        }\n\n        this._longdescURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._longdescURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._longdescURLCache;\n        }\n        this._longdescURLCache = conversions.USVString(value);\n        return this._longdescURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set longDesc(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set longDesc' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'longDesc' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"longdesc\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get noResize() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get noResize' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"noresize\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set noResize(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set noResize' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'noResize' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"noresize\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"noresize\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get contentDocument() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get contentDocument' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"contentDocument\"]);\n    }\n\n    get contentWindow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get contentWindow' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"contentWindow\"]);\n    }\n\n    get marginHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get marginHeight' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"marginheight\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set marginHeight(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set marginHeight' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'marginHeight' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"marginheight\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get marginWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get marginWidth' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"marginwidth\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set marginWidth(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set marginWidth' called on an object that is not a valid instance of HTMLFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'marginWidth' property on 'HTMLFrameElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"marginwidth\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLFrameElement.prototype, {\n    name: { enumerable: true },\n    scrolling: { enumerable: true },\n    src: { enumerable: true },\n    frameBorder: { enumerable: true },\n    longDesc: { enumerable: true },\n    noResize: { enumerable: true },\n    contentDocument: { enumerable: true },\n    contentWindow: { enumerable: true },\n    marginHeight: { enumerable: true },\n    marginWidth: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLFrameElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLFrameElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLFrameElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLFrameElement-impl.js\");\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst WindowEventHandlersImpl = require(\"./WindowEventHandlers-impl\").implementation;\n\nclass HTMLFrameSetElementImpl extends HTMLElementImpl {}\n\nmixin(HTMLFrameSetElementImpl.prototype, WindowEventHandlersImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLFrameSetElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst OnBeforeUnloadEventHandlerNonNull = require(\"./OnBeforeUnloadEventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLFrameSetElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLFrameSetElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLFrameSetElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLFrameSetElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get cols() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cols' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"cols\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set cols(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set cols' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'cols' property on 'HTMLFrameSetElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"cols\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get rows() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rows' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"rows\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set rows(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set rows' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'rows' property on 'HTMLFrameSetElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"rows\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get onafterprint() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onafterprint' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onafterprint\"]);\n    }\n\n    set onafterprint(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onafterprint' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onafterprint' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onafterprint\"] = V;\n    }\n\n    get onbeforeprint() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeprint' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeprint\"]);\n    }\n\n    set onbeforeprint(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeprint' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeprint' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeprint\"] = V;\n    }\n\n    get onbeforeunload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeunload' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeunload\"]);\n    }\n\n    set onbeforeunload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeunload' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = OnBeforeUnloadEventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeunload' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeunload\"] = V;\n    }\n\n    get onhashchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onhashchange' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onhashchange\"]);\n    }\n\n    set onhashchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onhashchange' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onhashchange' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onhashchange\"] = V;\n    }\n\n    get onlanguagechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onlanguagechange' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onlanguagechange\"]);\n    }\n\n    set onlanguagechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onlanguagechange' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onlanguagechange' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onlanguagechange\"] = V;\n    }\n\n    get onmessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmessage' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmessage\"]);\n    }\n\n    set onmessage(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmessage' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmessage' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmessage\"] = V;\n    }\n\n    get onmessageerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmessageerror' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmessageerror\"]);\n    }\n\n    set onmessageerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmessageerror' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmessageerror' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmessageerror\"] = V;\n    }\n\n    get onoffline() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onoffline' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onoffline\"]);\n    }\n\n    set onoffline(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onoffline' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onoffline' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onoffline\"] = V;\n    }\n\n    get ononline() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ononline' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ononline\"]);\n    }\n\n    set ononline(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ononline' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ononline' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ononline\"] = V;\n    }\n\n    get onpagehide() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpagehide' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpagehide\"]);\n    }\n\n    set onpagehide(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpagehide' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpagehide' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpagehide\"] = V;\n    }\n\n    get onpageshow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpageshow' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpageshow\"]);\n    }\n\n    set onpageshow(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpageshow' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpageshow' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpageshow\"] = V;\n    }\n\n    get onpopstate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpopstate' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpopstate\"]);\n    }\n\n    set onpopstate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpopstate' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpopstate' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpopstate\"] = V;\n    }\n\n    get onrejectionhandled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onrejectionhandled' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onrejectionhandled\"]);\n    }\n\n    set onrejectionhandled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onrejectionhandled' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onrejectionhandled' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onrejectionhandled\"] = V;\n    }\n\n    get onstorage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onstorage' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onstorage\"]);\n    }\n\n    set onstorage(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onstorage' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onstorage' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onstorage\"] = V;\n    }\n\n    get onunhandledrejection() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onunhandledrejection' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onunhandledrejection\"]);\n    }\n\n    set onunhandledrejection(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onunhandledrejection' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onunhandledrejection' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onunhandledrejection\"] = V;\n    }\n\n    get onunload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onunload' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onunload\"]);\n    }\n\n    set onunload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onunload' called on an object that is not a valid instance of HTMLFrameSetElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onunload' property on 'HTMLFrameSetElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onunload\"] = V;\n    }\n  }\n  Object.defineProperties(HTMLFrameSetElement.prototype, {\n    cols: { enumerable: true },\n    rows: { enumerable: true },\n    onafterprint: { enumerable: true },\n    onbeforeprint: { enumerable: true },\n    onbeforeunload: { enumerable: true },\n    onhashchange: { enumerable: true },\n    onlanguagechange: { enumerable: true },\n    onmessage: { enumerable: true },\n    onmessageerror: { enumerable: true },\n    onoffline: { enumerable: true },\n    ononline: { enumerable: true },\n    onpagehide: { enumerable: true },\n    onpageshow: { enumerable: true },\n    onpopstate: { enumerable: true },\n    onrejectionhandled: { enumerable: true },\n    onstorage: { enumerable: true },\n    onunhandledrejection: { enumerable: true },\n    onunload: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLFrameSetElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLFrameSetElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLFrameSetElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLFrameSetElement-impl.js\");\n","\"use strict\";\n\nconst HTMLFrameElementImpl = require(\"./HTMLFrameElement-impl\").implementation;\n\nclass HTMLIFrameElementImpl extends HTMLFrameElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLIFrameElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLIFrameElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLIFrameElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLIFrameElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLIFrameElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    getSVGDocument() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getSVGDocument' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getSVGDocument());\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get srcdoc() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get srcdoc' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"srcdoc\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set srcdoc(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set srcdoc' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'srcdoc' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"srcdoc\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get allowFullscreen() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get allowFullscreen' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"allowfullscreen\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set allowFullscreen(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set allowFullscreen' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'allowFullscreen' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"allowfullscreen\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"allowfullscreen\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"height\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"height\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get contentDocument() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get contentDocument' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"contentDocument\"]);\n    }\n\n    get contentWindow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get contentWindow' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"contentWindow\"]);\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get scrolling() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get scrolling' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"scrolling\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set scrolling(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set scrolling' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'scrolling' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"scrolling\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get frameBorder() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get frameBorder' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"frameborder\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set frameBorder(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set frameBorder' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'frameBorder' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"frameborder\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get longDesc() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get longDesc' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"longdesc\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._longdescURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._longdescURLCache;\n        }\n\n        this._longdescURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._longdescURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._longdescURLCache;\n        }\n        this._longdescURLCache = conversions.USVString(value);\n        return this._longdescURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set longDesc(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set longDesc' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'longDesc' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"longdesc\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get marginHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get marginHeight' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"marginheight\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set marginHeight(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set marginHeight' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'marginHeight' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"marginheight\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get marginWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get marginWidth' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"marginwidth\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set marginWidth(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set marginWidth' called on an object that is not a valid instance of HTMLIFrameElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'marginWidth' property on 'HTMLIFrameElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"marginwidth\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLIFrameElement.prototype, {\n    getSVGDocument: { enumerable: true },\n    src: { enumerable: true },\n    srcdoc: { enumerable: true },\n    name: { enumerable: true },\n    allowFullscreen: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    contentDocument: { enumerable: true },\n    contentWindow: { enumerable: true },\n    align: { enumerable: true },\n    scrolling: { enumerable: true },\n    frameBorder: { enumerable: true },\n    longDesc: { enumerable: true },\n    marginHeight: { enumerable: true },\n    marginWidth: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLIFrameElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLIFrameElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLIFrameElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLIFrameElement-impl.js\");\n","\"use strict\";\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLEmbedElementImpl extends HTMLElementImpl {}\n\nmodule.exports = {\n  implementation: HTMLEmbedElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLEmbedElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLEmbedElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLEmbedElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLEmbedElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLEmbedElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLEmbedElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLEmbedElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"height\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLEmbedElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"height\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLEmbedElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLEmbedElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLEmbedElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLEmbedElement.prototype, {\n    src: { enumerable: true },\n    type: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    align: { enumerable: true },\n    name: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLEmbedElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLEmbedElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLEmbedElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLEmbedElement-impl.js\");\n","\"use strict\";\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\nconst DefaultConstraintValidationImpl =\n  require(\"../constraint-validation/DefaultConstraintValidation-impl\").implementation;\nconst { mixin } = require(\"../../utils\");\nconst { formOwner } = require(\"../helpers/form-controls\");\n\nclass HTMLObjectElementImpl extends HTMLElementImpl {\n  get form() {\n    return formOwner(this);\n  }\n\n  get contentDocument() {\n    return null;\n  }\n\n  _barredFromConstraintValidationSpecialization() {\n    return true;\n  }\n}\n\nmixin(HTMLObjectElementImpl.prototype, DefaultConstraintValidationImpl.prototype);\n\nmodule.exports = {\n  implementation: HTMLObjectElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLObjectElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLObjectElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLObjectElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLObjectElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    checkValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'checkValidity' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      return esValue[implSymbol].checkValidity();\n    }\n\n    reportValidity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'reportValidity' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      return esValue[implSymbol].reportValidity();\n    }\n\n    setCustomValidity(error) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setCustomValidity' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setCustomValidity' on 'HTMLObjectElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'setCustomValidity' on 'HTMLObjectElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setCustomValidity(...args);\n    }\n\n    get data() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get data' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"data\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._dataURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._dataURLCache;\n        }\n\n        this._dataURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._dataURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._dataURLCache;\n        }\n        this._dataURLCache = conversions.USVString(value);\n        return this._dataURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set data(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set data' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'data' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"data\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get useMap() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get useMap' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"usemap\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set useMap(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set useMap' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'useMap' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"usemap\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get form() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get form' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"form\"]);\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"height\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"height\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get contentDocument() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get contentDocument' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"contentDocument\"]);\n    }\n\n    get willValidate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get willValidate' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"willValidate\"];\n    }\n\n    get validity() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validity' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"validity\"]);\n    }\n\n    get validationMessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get validationMessage' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"validationMessage\"];\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"align\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'align' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"align\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get archive() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get archive' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"archive\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set archive(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set archive' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'archive' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"archive\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get code() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get code' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"code\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set code(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set code' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'code' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"code\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get declare() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get declare' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"declare\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set declare(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set declare' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'declare' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"declare\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"declare\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get hspace() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hspace' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"hspace\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set hspace(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set hspace' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'hspace' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"hspace\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get standby() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get standby' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"standby\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set standby(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set standby' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'standby' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"standby\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get vspace() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vspace' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"vspace\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set vspace(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set vspace' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'vspace' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"vspace\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get codeBase() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get codeBase' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"codebase\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._codebaseURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._codebaseURLCache;\n        }\n\n        this._codebaseURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._codebaseURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._codebaseURLCache;\n        }\n        this._codebaseURLCache = conversions.USVString(value);\n        return this._codebaseURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set codeBase(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set codeBase' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'codeBase' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"codebase\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get codeType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get codeType' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"codetype\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set codeType(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set codeType' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'codeType' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"codetype\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get border() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get border' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"border\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set border(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set border' called on an object that is not a valid instance of HTMLObjectElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'border' property on 'HTMLObjectElement': The provided value\",\n        globals: globalObject,\n        treatNullAsEmptyString: true\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"border\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLObjectElement.prototype, {\n    checkValidity: { enumerable: true },\n    reportValidity: { enumerable: true },\n    setCustomValidity: { enumerable: true },\n    data: { enumerable: true },\n    type: { enumerable: true },\n    name: { enumerable: true },\n    useMap: { enumerable: true },\n    form: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    contentDocument: { enumerable: true },\n    willValidate: { enumerable: true },\n    validity: { enumerable: true },\n    validationMessage: { enumerable: true },\n    align: { enumerable: true },\n    archive: { enumerable: true },\n    code: { enumerable: true },\n    declare: { enumerable: true },\n    hspace: { enumerable: true },\n    standby: { enumerable: true },\n    vspace: { enumerable: true },\n    codeBase: { enumerable: true },\n    codeType: { enumerable: true },\n    border: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLObjectElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLObjectElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLObjectElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLObjectElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLParamElementImpl extends HTMLElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLParamElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLParamElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLParamElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLParamElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLParamElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get name' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"name\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set name(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set name' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'name' property on 'HTMLParamElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"name\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get value' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"value\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set value' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'value' property on 'HTMLParamElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"value\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get type' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"type\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set type(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set type' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'type' property on 'HTMLParamElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"type\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get valueType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get valueType' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"valuetype\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set valueType(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set valueType' called on an object that is not a valid instance of HTMLParamElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'valueType' property on 'HTMLParamElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"valuetype\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLParamElement.prototype, {\n    name: { enumerable: true },\n    value: { enumerable: true },\n    type: { enumerable: true },\n    valueType: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLParamElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLParamElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLParamElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLParamElement-impl.js\");\n","\"use strict\";\n\nconst HTMLMediaElementImpl = require(\"./HTMLMediaElement-impl\").implementation;\n\nclass HTMLVideoElementImpl extends HTMLMediaElementImpl {\n  get videoWidth() {\n    return 0;\n  }\n\n  get videoHeight() {\n    return 0;\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLVideoElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst parseNonNegativeInteger_jsdom_living_helpers_strings =\n  require(\"../../jsdom/living/helpers/strings.js\").parseNonNegativeInteger;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLMediaElement = require(\"./HTMLMediaElement.js\");\n\nconst interfaceName = \"HTMLVideoElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLVideoElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLVideoElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLMediaElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLVideoElement extends globalObject.HTMLMediaElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"width\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set width' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'width' property on 'HTMLVideoElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"width\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        let value = esValue[implSymbol]._reflectGetTheContentAttribute(\"height\");\n        if (value !== null) {\n          value = parseNonNegativeInteger_jsdom_living_helpers_strings(value);\n          if (value !== null && value >= 0 && value <= 2147483647) {\n            return value;\n          }\n        }\n        return 0;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set height' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'height' property on 'HTMLVideoElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const newValue = V <= 2147483647 && V >= 0 ? V : 0;\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"height\", String(newValue));\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get videoWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get videoWidth' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"videoWidth\"];\n    }\n\n    get videoHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get videoHeight' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"videoHeight\"];\n    }\n\n    get poster() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get poster' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"poster\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._posterURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._posterURLCache;\n        }\n\n        this._posterURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._posterURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._posterURLCache;\n        }\n        this._posterURLCache = conversions.USVString(value);\n        return this._posterURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set poster(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set poster' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'poster' property on 'HTMLVideoElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"poster\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get playsInline() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get playsInline' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"playsinline\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set playsInline(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set playsInline' called on an object that is not a valid instance of HTMLVideoElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'playsInline' property on 'HTMLVideoElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"playsinline\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"playsinline\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(HTMLVideoElement.prototype, {\n    width: { enumerable: true },\n    height: { enumerable: true },\n    videoWidth: { enumerable: true },\n    videoHeight: { enumerable: true },\n    poster: { enumerable: true },\n    playsInline: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLVideoElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLVideoElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLVideoElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLVideoElement-impl.js\");\n","\"use strict\";\n\nconst HTMLMediaElementImpl = require(\"./HTMLMediaElement-impl\").implementation;\n\nclass HTMLAudioElementImpl extends HTMLMediaElementImpl { }\n\nmodule.exports = {\n  implementation: HTMLAudioElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLMediaElement = require(\"./HTMLMediaElement.js\");\n\nconst interfaceName = \"HTMLAudioElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLAudioElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLAudioElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLMediaElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLAudioElement extends globalObject.HTMLMediaElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n  }\n  Object.defineProperties(HTMLAudioElement.prototype, {\n    [Symbol.toStringTag]: { value: \"HTMLAudioElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLAudioElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLAudioElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLAudioElement-impl.js\");\n","\"use strict\";\n\nconst HTMLElementImpl = require(\"./HTMLElement-impl\").implementation;\n\nclass HTMLTrackElementImpl extends HTMLElementImpl {\n  get readyState() {\n    return 0;\n  }\n}\n\nmodule.exports = {\n  implementation: HTMLTrackElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLConstructor_jsdom_living_helpers_html_constructor =\n  require(\"../../jsdom/living/helpers/html-constructor.js\").HTMLConstructor;\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst serializeURLwhatwg_url = require(\"whatwg-url\").serializeURL;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst HTMLElement = require(\"./HTMLElement.js\");\n\nconst interfaceName = \"HTMLTrackElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'HTMLTrackElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"HTMLTrackElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  HTMLElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class HTMLTrackElement extends globalObject.HTMLElement {\n    constructor() {\n      return HTMLConstructor_jsdom_living_helpers_html_constructor(globalObject, interfaceName, new.target);\n    }\n\n    get kind() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get kind' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"kind\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set kind(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set kind' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'kind' property on 'HTMLTrackElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"kind\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get src() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get src' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const impl = esValue[implSymbol];\n        const value = impl._reflectGetTheContentAttribute(\"src\");\n        if (value === null) {\n          return \"\";\n        }\n\n        const document = impl._ownerDocument;\n        if (this._srcURLCacheKey === value && this._baseURLCache === document._baseURLCache) {\n          return this._srcURLCache;\n        }\n\n        this._srcURLCacheKey = value;\n        this._baseURLCache = document._baseURLCache;\n\n        const urlRecord = document.encodingParseAURL(value);\n        if (urlRecord !== null) {\n          this._srcURLCache = serializeURLwhatwg_url(urlRecord);\n          return this._srcURLCache;\n        }\n        this._srcURLCache = conversions.USVString(value);\n        return this._srcURLCache;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set src(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set src' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      V = conversions[\"USVString\"](V, {\n        context: \"Failed to set the 'src' property on 'HTMLTrackElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"src\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get srclang() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get srclang' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"srclang\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set srclang(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set srclang' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'srclang' property on 'HTMLTrackElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"srclang\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get label() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get label' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"label\");\n        return value === null ? \"\" : value;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set label(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set label' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'label' property on 'HTMLTrackElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol]._reflectSetTheContentAttribute(\"label\", V);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get default() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get default' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol]._reflectGetTheContentAttribute(\"default\") !== null;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set default(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set default' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'default' property on 'HTMLTrackElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        if (V) {\n          esValue[implSymbol]._reflectSetTheContentAttribute(\"default\", \"\");\n        } else {\n          esValue[implSymbol]._reflectDeleteTheContentAttribute(\"default\");\n        }\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get readyState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readyState' called on an object that is not a valid instance of HTMLTrackElement.\"\n        );\n      }\n\n      return esValue[implSymbol][\"readyState\"];\n    }\n  }\n  Object.defineProperties(HTMLTrackElement.prototype, {\n    kind: { enumerable: true },\n    src: { enumerable: true },\n    srclang: { enumerable: true },\n    label: { enumerable: true },\n    default: { enumerable: true },\n    readyState: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"HTMLTrackElement\", configurable: true },\n    NONE: { value: 0, enumerable: true },\n    LOADING: { value: 1, enumerable: true },\n    LOADED: { value: 2, enumerable: true },\n    ERROR: { value: 3, enumerable: true }\n  });\n  Object.defineProperties(HTMLTrackElement, {\n    NONE: { value: 0, enumerable: true },\n    LOADING: { value: 1, enumerable: true },\n    LOADED: { value: 2, enumerable: true },\n    ERROR: { value: 3, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = HTMLTrackElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: HTMLTrackElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/HTMLTrackElement-impl.js\");\n","\"use strict\";\n\nclass SVGAnimatedStringImpl {\n  constructor(globalObject, args, privateData) {\n    this._element = privateData.element;\n    this._attribute = privateData.attribute;\n\n    // These three can be undefined.\n    this._attributeDeprecated = privateData.attributeDeprecated;\n    this._attributeDeprecatedNamespace = privateData.attributeDeprecatedNamespace;\n    this._initialValue = privateData.initialValue;\n  }\n\n  get baseVal() {\n    if (!this._element.hasAttributeNS(null, this._attribute)) {\n      if (this._attributeDeprecated !== undefined &&\n          this._element.hasAttributeNS(this._attributeDeprecatedNamespace, this._attributeDeprecated)) {\n        return this._element.getAttributeNS(this._attributeDeprecatedNamespace, this._attributeDeprecated);\n      } else if (this._initialValue !== undefined) {\n        return this._initialValue;\n      }\n      return \"\";\n    }\n    return this._element.getAttributeNS(null, this._attribute);\n  }\n\n  set baseVal(base) {\n    if (!this._element.hasAttributeNS(null, this._attribute) &&\n        this._attributeDeprecated !== undefined &&\n        this._element.hasAttributeNS(null, this._attributeDeprecated)) {\n      this._element.setAttributeNS(null, this._attributeDeprecated, base);\n    } else {\n      this._element.setAttributeNS(null, this._attribute, base);\n    }\n  }\n\n  get animVal() {\n    return this.baseVal;\n  }\n}\n\nexports.implementation = SVGAnimatedStringImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"SVGAnimatedString\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGAnimatedString'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGAnimatedString\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGAnimatedString {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get baseVal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get baseVal' called on an object that is not a valid instance of SVGAnimatedString.\"\n        );\n      }\n\n      return esValue[implSymbol][\"baseVal\"];\n    }\n\n    set baseVal(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set baseVal' called on an object that is not a valid instance of SVGAnimatedString.\"\n        );\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'baseVal' property on 'SVGAnimatedString': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"baseVal\"] = V;\n    }\n\n    get animVal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get animVal' called on an object that is not a valid instance of SVGAnimatedString.\"\n        );\n      }\n\n      return esValue[implSymbol][\"animVal\"];\n    }\n  }\n  Object.defineProperties(SVGAnimatedString.prototype, {\n    baseVal: { enumerable: true },\n    animVal: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGAnimatedString\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGAnimatedString;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGAnimatedString\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/svg/SVGAnimatedString-impl.js\");\n","\"use strict\";\n\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { SVG_NS } = require(\"../helpers/namespaces\");\nconst { mixin } = require(\"../../utils\");\nconst ElementImpl = require(\"./Element-impl\").implementation;\nconst ElementCSSInlineStyleImpl = require(\"./ElementCSSInlineStyle-impl\").implementation;\nconst GlobalEventHandlersImpl = require(\"./GlobalEventHandlers-impl\").implementation;\nconst HTMLOrSVGElementImpl = require(\"./HTMLOrSVGElement-impl\").implementation;\n\nclass SVGElementImpl extends ElementImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n    this._initHTMLOrSVGElement();\n    this._initElementCSSInlineStyle();\n    this._initGlobalEvents();\n  }\n\n  // Keep in sync with HTMLElement. https://github.com/jsdom/jsdom/issues/2599\n  _attrModified(name, value, oldValue) {\n    if (name === \"style\" && value !== oldValue && !this._settingCssText) {\n      this._settingCssText = true;\n      this._style.cssText = value;\n      this._settingCssText = false;\n    } else if (name.startsWith(\"on\")) {\n      this._globalEventChanged(name.substring(2));\n    }\n\n    super._attrModified(name, value, oldValue);\n  }\n\n  get ownerSVGElement() {\n    let e = domSymbolTree.parent(this);\n    while (e && e.namespaceURI === SVG_NS) {\n      if (e.localName === \"svg\") {\n        return e;\n      }\n      e = domSymbolTree.parent(e);\n    }\n\n    return null;\n  }\n\n  get viewportElement() {\n    // Get the nearest ancestor that establishes the viewport.\n    // https://svgwg.org/svg2-draft/coords.html#EstablishingANewSVGViewport\n    let e = domSymbolTree.parent(this);\n    while (e && e.namespaceURI === SVG_NS) {\n      if (e.localName === \"svg\" || e.localName === \"symbol\") {\n        return e;\n      }\n      e = domSymbolTree.parent(e);\n    }\n    return null;\n  }\n}\n\nSVGElementImpl.attributeRegistry = new Map();\n\nmixin(SVGElementImpl.prototype, ElementCSSInlineStyleImpl.prototype);\nmixin(SVGElementImpl.prototype, GlobalEventHandlersImpl.prototype);\nmixin(SVGElementImpl.prototype, HTMLOrSVGElementImpl.prototype);\n\nexports.implementation = SVGElementImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst create_SVGAnimatedString = require(\"./SVGAnimatedString.js\").create;\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst OnErrorEventHandlerNonNull = require(\"./OnErrorEventHandlerNonNull.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Element = require(\"./Element.js\");\n\nconst interfaceName = \"SVGElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Element._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGElement extends globalObject.Element {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    focus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'focus' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      return esValue[implSymbol].focus();\n    }\n\n    blur() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'blur' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      return esValue[implSymbol].blur();\n    }\n\n    get className() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get className' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"className\", () => {\n        return create_SVGAnimatedString(globalObject, [], {\n          element: esValue[implSymbol],\n          attribute: \"class\"\n        });\n      });\n    }\n\n    get ownerSVGElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ownerSVGElement' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ownerSVGElement\"]);\n    }\n\n    get viewportElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get viewportElement' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"viewportElement\"]);\n    }\n\n    get style() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get style' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      return utils.getSameObject(this, \"style\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"style\"]);\n      });\n    }\n\n    set style(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set style' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      const Q = esValue[\"style\"];\n      if (!utils.isObject(Q)) {\n        throw new globalObject.TypeError(\"Property 'style' is not an object\");\n      }\n      Reflect.set(Q, \"cssText\", V);\n    }\n\n    get onabort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onabort' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onabort\"]);\n    }\n\n    set onabort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onabort' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onabort' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onabort\"] = V;\n    }\n\n    get onauxclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onauxclick' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onauxclick\"]);\n    }\n\n    set onauxclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onauxclick' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onauxclick' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onauxclick\"] = V;\n    }\n\n    get onbeforeinput() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeinput' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeinput\"]);\n    }\n\n    set onbeforeinput(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeinput' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeinput' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeinput\"] = V;\n    }\n\n    get onbeforematch() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforematch' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforematch\"]);\n    }\n\n    set onbeforematch(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforematch' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforematch' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforematch\"] = V;\n    }\n\n    get onbeforetoggle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforetoggle' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforetoggle\"]);\n    }\n\n    set onbeforetoggle(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforetoggle' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforetoggle' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforetoggle\"] = V;\n    }\n\n    get onblur() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onblur' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onblur\"]);\n    }\n\n    set onblur(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onblur' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onblur' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onblur\"] = V;\n    }\n\n    get oncancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncancel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncancel\"]);\n    }\n\n    set oncancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncancel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncancel' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncancel\"] = V;\n    }\n\n    get oncanplay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncanplay' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncanplay\"]);\n    }\n\n    set oncanplay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncanplay' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncanplay' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncanplay\"] = V;\n    }\n\n    get oncanplaythrough() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncanplaythrough' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncanplaythrough\"]);\n    }\n\n    set oncanplaythrough(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncanplaythrough' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncanplaythrough' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncanplaythrough\"] = V;\n    }\n\n    get onchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onchange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onchange\"]);\n    }\n\n    set onchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onchange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onchange' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onchange\"] = V;\n    }\n\n    get onclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onclick' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onclick\"]);\n    }\n\n    set onclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onclick' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onclick' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onclick\"] = V;\n    }\n\n    get onclose() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onclose' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onclose\"]);\n    }\n\n    set onclose(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onclose' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onclose' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onclose\"] = V;\n    }\n\n    get oncontextlost() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextlost' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextlost\"]);\n    }\n\n    set oncontextlost(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextlost' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextlost' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextlost\"] = V;\n    }\n\n    get oncontextmenu() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextmenu' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextmenu\"]);\n    }\n\n    set oncontextmenu(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextmenu' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextmenu' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextmenu\"] = V;\n    }\n\n    get oncontextrestored() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncontextrestored' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncontextrestored\"]);\n    }\n\n    set oncontextrestored(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncontextrestored' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncontextrestored' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncontextrestored\"] = V;\n    }\n\n    get oncopy() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncopy' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncopy\"]);\n    }\n\n    set oncopy(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncopy' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncopy' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncopy\"] = V;\n    }\n\n    get oncuechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oncuechange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncuechange\"]);\n    }\n\n    set oncuechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oncuechange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncuechange' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncuechange\"] = V;\n    }\n\n    get oncut() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get oncut' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oncut\"]);\n    }\n\n    set oncut(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set oncut' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oncut' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oncut\"] = V;\n    }\n\n    get ondblclick() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondblclick' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondblclick\"]);\n    }\n\n    set ondblclick(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondblclick' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondblclick' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondblclick\"] = V;\n    }\n\n    get ondrag() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondrag' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondrag\"]);\n    }\n\n    set ondrag(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondrag' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondrag' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondrag\"] = V;\n    }\n\n    get ondragend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragend\"]);\n    }\n\n    set ondragend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragend' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragend\"] = V;\n    }\n\n    get ondragenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragenter' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragenter\"]);\n    }\n\n    set ondragenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragenter' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragenter' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragenter\"] = V;\n    }\n\n    get ondragleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragleave' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragleave\"]);\n    }\n\n    set ondragleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragleave' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragleave' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragleave\"] = V;\n    }\n\n    get ondragover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragover' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragover\"]);\n    }\n\n    set ondragover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragover' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragover' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragover\"] = V;\n    }\n\n    get ondragstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondragstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondragstart\"]);\n    }\n\n    set ondragstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondragstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondragstart' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondragstart\"] = V;\n    }\n\n    get ondrop() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondrop' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondrop\"]);\n    }\n\n    set ondrop(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondrop' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondrop' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondrop\"] = V;\n    }\n\n    get ondurationchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ondurationchange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ondurationchange\"]);\n    }\n\n    set ondurationchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ondurationchange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ondurationchange' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ondurationchange\"] = V;\n    }\n\n    get onemptied() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onemptied' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onemptied\"]);\n    }\n\n    set onemptied(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onemptied' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onemptied' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onemptied\"] = V;\n    }\n\n    get onended() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onended' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onended\"]);\n    }\n\n    set onended(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onended' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onended' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onended\"] = V;\n    }\n\n    get onerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onerror' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onerror\"]);\n    }\n\n    set onerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onerror' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = OnErrorEventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onerror' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onerror\"] = V;\n    }\n\n    get onfocus() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onfocus' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onfocus\"]);\n    }\n\n    set onfocus(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onfocus' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onfocus' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onfocus\"] = V;\n    }\n\n    get onformdata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onformdata' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onformdata\"]);\n    }\n\n    set onformdata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onformdata' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onformdata' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onformdata\"] = V;\n    }\n\n    get oninput() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oninput' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oninput\"]);\n    }\n\n    set oninput(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oninput' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oninput' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oninput\"] = V;\n    }\n\n    get oninvalid() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get oninvalid' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"oninvalid\"]);\n    }\n\n    set oninvalid(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set oninvalid' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'oninvalid' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"oninvalid\"] = V;\n    }\n\n    get onkeydown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeydown' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeydown\"]);\n    }\n\n    set onkeydown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeydown' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeydown' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeydown\"] = V;\n    }\n\n    get onkeypress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeypress' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeypress\"]);\n    }\n\n    set onkeypress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeypress' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeypress' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeypress\"] = V;\n    }\n\n    get onkeyup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onkeyup' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onkeyup\"]);\n    }\n\n    set onkeyup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onkeyup' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onkeyup' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onkeyup\"] = V;\n    }\n\n    get onload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onload' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onload\"]);\n    }\n\n    set onload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onload' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onload' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onload\"] = V;\n    }\n\n    get onloadeddata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadeddata' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadeddata\"]);\n    }\n\n    set onloadeddata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadeddata' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadeddata' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadeddata\"] = V;\n    }\n\n    get onloadedmetadata() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadedmetadata' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadedmetadata\"]);\n    }\n\n    set onloadedmetadata(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadedmetadata' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadedmetadata' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadedmetadata\"] = V;\n    }\n\n    get onloadstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadstart\"]);\n    }\n\n    set onloadstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadstart' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadstart\"] = V;\n    }\n\n    get onmousedown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmousedown' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmousedown\"]);\n    }\n\n    set onmousedown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmousedown' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmousedown' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmousedown\"] = V;\n    }\n\n    get onmouseenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseenter\"]);\n    }\n\n    set onmouseenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseenter' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseenter\"] = V;\n    }\n\n    get onmouseleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseleave\"]);\n    }\n\n    set onmouseleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        return;\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseleave' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseleave\"] = V;\n    }\n\n    get onmousemove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmousemove' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmousemove\"]);\n    }\n\n    set onmousemove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmousemove' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmousemove' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmousemove\"] = V;\n    }\n\n    get onmouseout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseout' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseout\"]);\n    }\n\n    set onmouseout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseout' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseout' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseout\"] = V;\n    }\n\n    get onmouseover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseover' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseover\"]);\n    }\n\n    set onmouseover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseover' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseover' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseover\"] = V;\n    }\n\n    get onmouseup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmouseup' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmouseup\"]);\n    }\n\n    set onmouseup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmouseup' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmouseup' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmouseup\"] = V;\n    }\n\n    get onpaste() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpaste' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpaste\"]);\n    }\n\n    set onpaste(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpaste' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpaste' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpaste\"] = V;\n    }\n\n    get onpause() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpause' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpause\"]);\n    }\n\n    set onpause(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpause' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpause' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpause\"] = V;\n    }\n\n    get onplay() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onplay' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onplay\"]);\n    }\n\n    set onplay(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onplay' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onplay' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onplay\"] = V;\n    }\n\n    get onplaying() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onplaying' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onplaying\"]);\n    }\n\n    set onplaying(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onplaying' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onplaying' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onplaying\"] = V;\n    }\n\n    get onprogress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onprogress' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onprogress\"]);\n    }\n\n    set onprogress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onprogress' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onprogress' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onprogress\"] = V;\n    }\n\n    get onratechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onratechange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onratechange\"]);\n    }\n\n    set onratechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onratechange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onratechange' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onratechange\"] = V;\n    }\n\n    get onreset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onreset' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onreset\"]);\n    }\n\n    set onreset(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onreset' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onreset' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onreset\"] = V;\n    }\n\n    get onresize() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onresize' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onresize\"]);\n    }\n\n    set onresize(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onresize' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onresize' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onresize\"] = V;\n    }\n\n    get onscroll() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onscroll' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onscroll\"]);\n    }\n\n    set onscroll(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onscroll' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onscroll' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onscroll\"] = V;\n    }\n\n    get onscrollend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onscrollend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onscrollend\"]);\n    }\n\n    set onscrollend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onscrollend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onscrollend' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onscrollend\"] = V;\n    }\n\n    get onsecuritypolicyviolation() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsecuritypolicyviolation' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsecuritypolicyviolation\"]);\n    }\n\n    set onsecuritypolicyviolation(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsecuritypolicyviolation' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsecuritypolicyviolation' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsecuritypolicyviolation\"] = V;\n    }\n\n    get onseeked() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onseeked' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onseeked\"]);\n    }\n\n    set onseeked(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onseeked' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onseeked' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onseeked\"] = V;\n    }\n\n    get onseeking() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onseeking' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onseeking\"]);\n    }\n\n    set onseeking(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onseeking' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onseeking' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onseeking\"] = V;\n    }\n\n    get onselect() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onselect' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onselect\"]);\n    }\n\n    set onselect(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onselect' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onselect' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onselect\"] = V;\n    }\n\n    get onslotchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onslotchange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onslotchange\"]);\n    }\n\n    set onslotchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onslotchange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onslotchange' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onslotchange\"] = V;\n    }\n\n    get onstalled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onstalled' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onstalled\"]);\n    }\n\n    set onstalled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onstalled' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onstalled' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onstalled\"] = V;\n    }\n\n    get onsubmit() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsubmit' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsubmit\"]);\n    }\n\n    set onsubmit(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsubmit' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsubmit' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsubmit\"] = V;\n    }\n\n    get onsuspend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onsuspend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onsuspend\"]);\n    }\n\n    set onsuspend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onsuspend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onsuspend' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onsuspend\"] = V;\n    }\n\n    get ontimeupdate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontimeupdate' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontimeupdate\"]);\n    }\n\n    set ontimeupdate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontimeupdate' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontimeupdate' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontimeupdate\"] = V;\n    }\n\n    get ontoggle() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontoggle' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontoggle\"]);\n    }\n\n    set ontoggle(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontoggle' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontoggle' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontoggle\"] = V;\n    }\n\n    get onvolumechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onvolumechange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onvolumechange\"]);\n    }\n\n    set onvolumechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onvolumechange' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onvolumechange' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onvolumechange\"] = V;\n    }\n\n    get onwaiting() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwaiting' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwaiting\"]);\n    }\n\n    set onwaiting(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwaiting' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwaiting' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwaiting\"] = V;\n    }\n\n    get onwebkitanimationend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationend\"]);\n    }\n\n    set onwebkitanimationend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationend' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationend\"] = V;\n    }\n\n    get onwebkitanimationiteration() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationiteration' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationiteration\"]);\n    }\n\n    set onwebkitanimationiteration(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationiteration' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationiteration' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationiteration\"] = V;\n    }\n\n    get onwebkitanimationstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkitanimationstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkitanimationstart\"]);\n    }\n\n    set onwebkitanimationstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkitanimationstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkitanimationstart' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkitanimationstart\"] = V;\n    }\n\n    get onwebkittransitionend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwebkittransitionend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwebkittransitionend\"]);\n    }\n\n    set onwebkittransitionend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwebkittransitionend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwebkittransitionend' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwebkittransitionend\"] = V;\n    }\n\n    get onwheel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onwheel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onwheel\"]);\n    }\n\n    set onwheel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onwheel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onwheel' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onwheel\"] = V;\n    }\n\n    get ontouchstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchstart\"]);\n    }\n\n    set ontouchstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchstart' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchstart' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchstart\"] = V;\n    }\n\n    get ontouchend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchend\"]);\n    }\n\n    set ontouchend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchend' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchend' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchend\"] = V;\n    }\n\n    get ontouchmove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchmove' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchmove\"]);\n    }\n\n    set ontouchmove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchmove' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchmove' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchmove\"] = V;\n    }\n\n    get ontouchcancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontouchcancel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontouchcancel\"]);\n    }\n\n    set ontouchcancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontouchcancel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontouchcancel' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontouchcancel\"] = V;\n    }\n\n    get onpointerover() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerover' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerover\"]);\n    }\n\n    set onpointerover(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerover' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerover' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerover\"] = V;\n    }\n\n    get onpointerenter() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerenter' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerenter\"]);\n    }\n\n    set onpointerenter(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerenter' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerenter' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerenter\"] = V;\n    }\n\n    get onpointerdown() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerdown' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerdown\"]);\n    }\n\n    set onpointerdown(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerdown' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerdown' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerdown\"] = V;\n    }\n\n    get onpointermove() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointermove' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointermove\"]);\n    }\n\n    set onpointermove(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointermove' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointermove' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointermove\"] = V;\n    }\n\n    get onpointerrawupdate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerrawupdate' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerrawupdate\"]);\n    }\n\n    set onpointerrawupdate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerrawupdate' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerrawupdate' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerrawupdate\"] = V;\n    }\n\n    get onpointerup() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerup' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerup\"]);\n    }\n\n    set onpointerup(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerup' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerup' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerup\"] = V;\n    }\n\n    get onpointercancel() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointercancel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointercancel\"]);\n    }\n\n    set onpointercancel(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointercancel' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointercancel' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointercancel\"] = V;\n    }\n\n    get onpointerout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerout' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerout\"]);\n    }\n\n    set onpointerout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerout' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerout' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerout\"] = V;\n    }\n\n    get onpointerleave() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpointerleave' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpointerleave\"]);\n    }\n\n    set onpointerleave(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpointerleave' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpointerleave' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpointerleave\"] = V;\n    }\n\n    get ongotpointercapture() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ongotpointercapture' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ongotpointercapture\"]);\n    }\n\n    set ongotpointercapture(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ongotpointercapture' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ongotpointercapture' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ongotpointercapture\"] = V;\n    }\n\n    get onlostpointercapture() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onlostpointercapture' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onlostpointercapture\"]);\n    }\n\n    set onlostpointercapture(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onlostpointercapture' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onlostpointercapture' property on 'SVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onlostpointercapture\"] = V;\n    }\n\n    get dataset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get dataset' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"dataset\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"dataset\"]);\n      });\n    }\n\n    get nonce() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get nonce' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      const value = esValue[implSymbol]._reflectGetTheContentAttribute(\"nonce\");\n      return value === null ? \"\" : value;\n    }\n\n    set nonce(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set nonce' called on an object that is not a valid instance of SVGElement.\");\n      }\n\n      V = conversions[\"DOMString\"](V, {\n        context: \"Failed to set the 'nonce' property on 'SVGElement': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol]._reflectSetTheContentAttribute(\"nonce\", V);\n    }\n\n    get tabIndex() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get tabIndex' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol][\"tabIndex\"];\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    set tabIndex(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set tabIndex' called on an object that is not a valid instance of SVGElement.\"\n        );\n      }\n\n      V = conversions[\"long\"](V, {\n        context: \"Failed to set the 'tabIndex' property on 'SVGElement': The provided value\",\n        globals: globalObject\n      });\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        esValue[implSymbol][\"tabIndex\"] = V;\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(SVGElement.prototype, {\n    focus: { enumerable: true },\n    blur: { enumerable: true },\n    className: { enumerable: true },\n    ownerSVGElement: { enumerable: true },\n    viewportElement: { enumerable: true },\n    style: { enumerable: true },\n    onabort: { enumerable: true },\n    onauxclick: { enumerable: true },\n    onbeforeinput: { enumerable: true },\n    onbeforematch: { enumerable: true },\n    onbeforetoggle: { enumerable: true },\n    onblur: { enumerable: true },\n    oncancel: { enumerable: true },\n    oncanplay: { enumerable: true },\n    oncanplaythrough: { enumerable: true },\n    onchange: { enumerable: true },\n    onclick: { enumerable: true },\n    onclose: { enumerable: true },\n    oncontextlost: { enumerable: true },\n    oncontextmenu: { enumerable: true },\n    oncontextrestored: { enumerable: true },\n    oncopy: { enumerable: true },\n    oncuechange: { enumerable: true },\n    oncut: { enumerable: true },\n    ondblclick: { enumerable: true },\n    ondrag: { enumerable: true },\n    ondragend: { enumerable: true },\n    ondragenter: { enumerable: true },\n    ondragleave: { enumerable: true },\n    ondragover: { enumerable: true },\n    ondragstart: { enumerable: true },\n    ondrop: { enumerable: true },\n    ondurationchange: { enumerable: true },\n    onemptied: { enumerable: true },\n    onended: { enumerable: true },\n    onerror: { enumerable: true },\n    onfocus: { enumerable: true },\n    onformdata: { enumerable: true },\n    oninput: { enumerable: true },\n    oninvalid: { enumerable: true },\n    onkeydown: { enumerable: true },\n    onkeypress: { enumerable: true },\n    onkeyup: { enumerable: true },\n    onload: { enumerable: true },\n    onloadeddata: { enumerable: true },\n    onloadedmetadata: { enumerable: true },\n    onloadstart: { enumerable: true },\n    onmousedown: { enumerable: true },\n    onmouseenter: { enumerable: true },\n    onmouseleave: { enumerable: true },\n    onmousemove: { enumerable: true },\n    onmouseout: { enumerable: true },\n    onmouseover: { enumerable: true },\n    onmouseup: { enumerable: true },\n    onpaste: { enumerable: true },\n    onpause: { enumerable: true },\n    onplay: { enumerable: true },\n    onplaying: { enumerable: true },\n    onprogress: { enumerable: true },\n    onratechange: { enumerable: true },\n    onreset: { enumerable: true },\n    onresize: { enumerable: true },\n    onscroll: { enumerable: true },\n    onscrollend: { enumerable: true },\n    onsecuritypolicyviolation: { enumerable: true },\n    onseeked: { enumerable: true },\n    onseeking: { enumerable: true },\n    onselect: { enumerable: true },\n    onslotchange: { enumerable: true },\n    onstalled: { enumerable: true },\n    onsubmit: { enumerable: true },\n    onsuspend: { enumerable: true },\n    ontimeupdate: { enumerable: true },\n    ontoggle: { enumerable: true },\n    onvolumechange: { enumerable: true },\n    onwaiting: { enumerable: true },\n    onwebkitanimationend: { enumerable: true },\n    onwebkitanimationiteration: { enumerable: true },\n    onwebkitanimationstart: { enumerable: true },\n    onwebkittransitionend: { enumerable: true },\n    onwheel: { enumerable: true },\n    ontouchstart: { enumerable: true },\n    ontouchend: { enumerable: true },\n    ontouchmove: { enumerable: true },\n    ontouchcancel: { enumerable: true },\n    onpointerover: { enumerable: true },\n    onpointerenter: { enumerable: true },\n    onpointerdown: { enumerable: true },\n    onpointermove: { enumerable: true },\n    onpointerrawupdate: { enumerable: true },\n    onpointerup: { enumerable: true },\n    onpointercancel: { enumerable: true },\n    onpointerout: { enumerable: true },\n    onpointerleave: { enumerable: true },\n    ongotpointercapture: { enumerable: true },\n    onlostpointercapture: { enumerable: true },\n    dataset: { enumerable: true },\n    nonce: { enumerable: true },\n    tabIndex: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGElement-impl.js\");\n","\"use strict\";\n\n// https://svgwg.org/svg2-draft/types.html#TermDetach\nfunction detach(value) {\n  if (typeof value === \"string\") {\n    return;\n  }\n\n  throw new TypeError(`jsdom internal error: detaching object of wrong type ${value}`);\n}\nexports.detach = detach;\n\n// https://svgwg.org/svg2-draft/types.html#TermAttach\n// listObject corresponds to the parameter taken by the algorithm in the spec, but is currently unused because only\n// DOMString type is supported by jsdom (and this function) right now.\n// eslint-disable-next-line no-unused-vars\nfunction attach(value, listObject) {\n  if (typeof value === \"string\") {\n    return;\n  }\n\n  throw new TypeError(`jsdom internal error: attaching object of wrong type ${value}`);\n}\nexports.attach = attach;\n\n// https://svgwg.org/svg2-draft/types.html#TermReserialize for DOMString.\nfunction reserializeSpaceSeparatedTokens(elements) {\n  return elements.join(\" \");\n}\nexports.reserializeSpaceSeparatedTokens = reserializeSpaceSeparatedTokens;\n\n// Used for systemLanguage attribute, whose value is a set of comma-separated tokens:\n// https://svgwg.org/svg2-draft/struct.html#SystemLanguageAttribute\n// SVG 2 spec (https://svgwg.org/svg2-draft/types.html#TermReserialize) says any SVGStringList should reserialize the\n// same way, as space-separated tokens, but doing so for systemLanguage is illogical and contradicts the Firefox\n// behavior.\n// I cannot find a description of reserialization of SVGStringList in the SVG 1.1 spec.\nfunction reserializeCommaSeparatedTokens(elements) {\n  return elements.join(\", \");\n}\nexports.reserializeCommaSeparatedTokens = reserializeCommaSeparatedTokens;\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { attach, detach } = require(\"../helpers/svg/basic-types\");\n\n// https://svgwg.org/svg2-draft/types.html#ListInterfaces\n\n// Child classes must implement _reserialize()\nclass List {\n  _initList({\n    element,\n    attribute,\n    readOnly = false\n  }) {\n    this._element = element;\n    this._attribute = attribute;\n    this._attributeRegistryEntry = element.constructor.attributeRegistry.get(attribute);\n    this._readOnly = readOnly;\n    this._list = [];\n    this._version = -1;\n  }\n\n  get _needsResync() {\n    return this._version < this._element._version;\n  }\n\n  _synchronize() {\n    if (!this._needsResync) {\n      return;\n    }\n    let value = [];\n    if (this._element.hasAttributeNS(null, this._attribute)) {\n      value = this._attributeRegistryEntry.getValue(this._element.getAttributeNS(null, this._attribute));\n    }\n    if (value.length === 0 && this._attributeRegistryEntry.initialValue !== undefined) {\n      value = this._attributeRegistryEntry.getValue(this._attributeRegistryEntry.initialValue);\n    }\n    // TODO: support non-DOMString lists.\n    this._list = value;\n    this._version = this._element._version;\n  }\n\n  _reserialize() {\n    const elements = this._list;\n    this._element.setAttributeNS(null, this._attribute, this._attributeRegistryEntry.serialize(elements));\n    // Prevent ping-ponging back and forth between _reserialize() and _synchronize().\n    this._version = this._element._version;\n  }\n\n  [idlUtils.supportsPropertyIndex](index) {\n    this._synchronize();\n    return index >= 0 && index < this.length;\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    this._synchronize();\n    return this._list.keys();\n  }\n\n  get length() {\n    this._synchronize();\n    return this._list.length;\n  }\n\n  get numberOfItems() {\n    this._synchronize();\n    return this._list.length;\n  }\n\n  clear() {\n    this._synchronize();\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only list\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    for (const item of this._list) {\n      detach(item);\n    }\n    this._list.length = 0;\n    this._reserialize();\n  }\n\n  initialize(newItem) {\n    this._synchronize();\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only list\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    for (const item of this._list) {\n      detach(item);\n    }\n    this._list.length = 0;\n    // TODO: clone non-DOMString list elements.\n    attach(newItem, this);\n    this._list.push(newItem);\n    this._reserialize();\n  }\n\n  getItem(index) {\n    this._synchronize();\n    if (index >= this._list.length) {\n      throw DOMException.create(this._globalObject, [\n        `The index provided (${index}) is greater than or equal to the maximum bound (${this._list.length}).`,\n        \"IndexSizeError\"\n      ]);\n    }\n    return this._list[index];\n  }\n\n  insertItemBefore(newItem, index) {\n    this._synchronize();\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only list\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    // TODO: clone non-DOMString list elements.\n    if (index > this._list.length) {\n      index = this._list.length;\n    }\n    this._list.splice(index, 0, newItem);\n    attach(newItem, this);\n    this._reserialize();\n    return newItem;\n  }\n\n  replaceItem(newItem, index) {\n    this._synchronize();\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only list\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    if (index >= this._list.length) {\n      throw DOMException.create(this._globalObject, [\n        `The index provided (${index}) is greater than or equal to the maximum bound (${this._list.length}).`,\n        \"IndexSizeError\"\n      ]);\n    }\n    // TODO: clone non-DOMString list elements.\n    detach(this._list[index]);\n    this._list[index] = newItem;\n    attach(newItem, this);\n    this._reserialize();\n    return newItem;\n  }\n\n  removeItem(index) {\n    this._synchronize();\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only list\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    if (index >= this._list.length) {\n      throw DOMException.create(this._globalObject, [\n        `The index provided (${index}) is greater than or equal to the maximum bound (${this._list.length}).`,\n        \"IndexSizeError\"\n      ]);\n    }\n    const item = this._list[index];\n    detach(item);\n    this._list.splice(index, 1);\n    this._reserialize();\n    return item;\n  }\n\n  appendItem(newItem) {\n    this._synchronize();\n    // TODO: clone non-DOMString list elements.\n    this._list.push(newItem);\n    attach(newItem, this);\n    this._reserialize();\n    return newItem;\n  }\n\n  [idlUtils.indexedSetNew](index, value) {\n    // Note: this will always throw a IndexSizeError.\n    this.replaceItem(value, index);\n  }\n\n  [idlUtils.indexedSetExisting](index, value) {\n    this.replaceItem(value, index);\n  }\n}\n\nmodule.exports = List;\n","\"use strict\";\n\nconst { mixin } = require(\"../../utils\");\nconst SVGListBase = require(\"./SVGListBase\");\n\nclass SVGStringListImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n\n    this._initList(privateData);\n  }\n}\n\nmixin(SVGStringListImpl.prototype, SVGListBase.prototype);\n\nexports.implementation = SVGStringListImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"SVGStringList\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGStringList'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGStringList\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGStringList {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    clear() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'clear' called on an object that is not a valid instance of SVGStringList.\");\n      }\n\n      return esValue[implSymbol].clear();\n    }\n\n    initialize(newItem) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'initialize' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'initialize' on 'SVGStringList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'initialize' on 'SVGStringList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].initialize(...args);\n    }\n\n    getItem(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getItem' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getItem' on 'SVGStringList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'getItem' on 'SVGStringList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getItem(...args);\n    }\n\n    insertItemBefore(newItem, index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'insertItemBefore' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'insertItemBefore' on 'SVGStringList': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'insertItemBefore' on 'SVGStringList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'insertItemBefore' on 'SVGStringList': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].insertItemBefore(...args);\n    }\n\n    replaceItem(newItem, index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'replaceItem' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'replaceItem' on 'SVGStringList': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'replaceItem' on 'SVGStringList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'replaceItem' on 'SVGStringList': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].replaceItem(...args);\n    }\n\n    removeItem(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeItem' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeItem' on 'SVGStringList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'removeItem' on 'SVGStringList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].removeItem(...args);\n    }\n\n    appendItem(newItem) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'appendItem' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'appendItem' on 'SVGStringList': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'appendItem' on 'SVGStringList': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].appendItem(...args);\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n\n    get numberOfItems() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get numberOfItems' called on an object that is not a valid instance of SVGStringList.\"\n        );\n      }\n\n      return esValue[implSymbol][\"numberOfItems\"];\n    }\n  }\n  Object.defineProperties(SVGStringList.prototype, {\n    clear: { enumerable: true },\n    initialize: { enumerable: true },\n    getItem: { enumerable: true },\n    insertItemBefore: { enumerable: true },\n    replaceItem: { enumerable: true },\n    removeItem: { enumerable: true },\n    appendItem: { enumerable: true },\n    length: { enumerable: true },\n    numberOfItems: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGStringList\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = SVGStringList;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGStringList\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n\n      if (target[implSymbol][utils.supportsPropertyIndex](index)) {\n        const indexedValue = target[implSymbol].getItem(index);\n        return {\n          writable: true,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n\n      if (utils.isArrayIndexPropName(P)) {\n        const index = P >>> 0;\n        let indexedValue = V;\n\n        indexedValue = conversions[\"DOMString\"](indexedValue, {\n          context: \"Failed to set the \" + index + \" property on 'SVGStringList': The provided value\",\n          globals: globalObject\n        });\n\n        const creating = !target[implSymbol][utils.supportsPropertyIndex](index);\n        if (creating) {\n          target[implSymbol][utils.indexedSetNew](index, indexedValue);\n        } else {\n          target[implSymbol][utils.indexedSetExisting](index, indexedValue);\n        }\n\n        return true;\n      }\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n\n      if (target[implSymbol][utils.supportsPropertyIndex](index)) {\n        const indexedValue = target[implSymbol].getItem(index);\n        ownDesc = {\n          writable: true,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      if (desc.get || desc.set) {\n        return false;\n      }\n\n      const index = P >>> 0;\n      let indexedValue = desc.value;\n\n      indexedValue = conversions[\"DOMString\"](indexedValue, {\n        context: \"Failed to set the \" + index + \" property on 'SVGStringList': The provided value\",\n        globals: globalObject\n      });\n\n      const creating = !target[implSymbol][utils.supportsPropertyIndex](index);\n      if (creating) {\n        target[implSymbol][utils.indexedSetNew](index, indexedValue);\n      } else {\n        target[implSymbol][utils.indexedSetExisting](index, indexedValue);\n      }\n\n      return true;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !target[implSymbol][utils.supportsPropertyIndex](index);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/svg/SVGStringList-impl.js\");\n","\"use strict\";\n\nconst { splitOnASCIIWhitespace, splitOnCommas } = require(\"../helpers/strings\");\nconst { reserializeCommaSeparatedTokens, reserializeSpaceSeparatedTokens } = require(\"../helpers/svg/basic-types\");\nconst SVGStringList = require(\"../../../generated/idl/SVGStringList\");\n\nclass SVGTestsImpl {\n  get requiredExtensions() {\n    return SVGStringList.createImpl(this._globalObject, [], {\n      element: this,\n      attribute: \"requiredExtensions\"\n    });\n  }\n\n  get systemLanguage() {\n    return SVGStringList.createImpl(this._globalObject, [], {\n      element: this,\n      attribute: \"systemLanguage\"\n    });\n  }\n}\n\nSVGTestsImpl.attributeRegistry = new Map([\n  // https://svgwg.org/svg2-draft/struct.html#RequiredExtensionsAttribute\n  [\n    \"requiredExtensions\", {\n      getValue: splitOnASCIIWhitespace,\n      serialize: reserializeSpaceSeparatedTokens,\n      initialValue: undefined\n    }\n  ],\n  // https://svgwg.org/svg2-draft/struct.html#SystemLanguageAttribute\n  [\n    \"systemLanguage\", {\n      getValue: splitOnCommas,\n      serialize: reserializeCommaSeparatedTokens,\n      initialValue: undefined\n    }\n  ]\n]);\n\nexports.implementation = SVGTestsImpl;\n","\"use strict\";\n\nconst { mixin } = require(\"../../utils\");\nconst SVGElementImpl = require(\"./SVGElement-impl\").implementation;\nconst SVGTestsImpl = require(\"./SVGTests-impl\").implementation;\n\nclass SVGGraphicsElementImpl extends SVGElementImpl {}\n\nSVGGraphicsElementImpl.attributeRegistry = new Map([\n  ...SVGElementImpl.attributeRegistry,\n  ...SVGTestsImpl.attributeRegistry\n]);\n\nmixin(SVGGraphicsElementImpl.prototype, SVGTestsImpl.prototype);\n\nexports.implementation = SVGGraphicsElementImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGElement = require(\"./SVGElement.js\");\n\nconst interfaceName = \"SVGGraphicsElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGGraphicsElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGGraphicsElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGGraphicsElement extends globalObject.SVGElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get requiredExtensions() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get requiredExtensions' called on an object that is not a valid instance of SVGGraphicsElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"requiredExtensions\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"requiredExtensions\"]);\n      });\n    }\n\n    get systemLanguage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get systemLanguage' called on an object that is not a valid instance of SVGGraphicsElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"systemLanguage\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"systemLanguage\"]);\n      });\n    }\n  }\n  Object.defineProperties(SVGGraphicsElement.prototype, {\n    requiredExtensions: { enumerable: true },\n    systemLanguage: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGGraphicsElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGGraphicsElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGGraphicsElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGGraphicsElement-impl.js\");\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nclass SVGRectImplRecord {\n  constructor() {\n    this.x = 0;\n    this.y = 0;\n    this.width = 0;\n    this.height = 0;\n  }\n}\n\nclass SVGRectImplReflection {\n  constructor(privateData) {\n    this._reflectedElement = privateData.reflectedElement;\n    this._reflectedAttribute = privateData.reflectedAttribute;\n    this._parser = privateData.parser;\n  }\n\n  // https://svgwg.org/svg2-draft/types.html#TermReserialize\n  _reserialize({ x, y, width, height }) {\n    this._reflectedElement.setAttributeNS(null, this._reflectedAttribute, `${x} ${y} ${width} ${height}`);\n  }\n\n  get x() {\n    const attr = this._reflectedElement.getAttributeNS(null, this._reflectedAttribute);\n    return this._parser(attr).x;\n  }\n\n  set x(newX) {\n    const { y, width, height } = this;\n    this._reserialize({\n      x: newX,\n      y,\n      width,\n      height\n    });\n  }\n\n  get y() {\n    const attr = this._reflectedElement.getAttributeNS(null, this._reflectedAttribute);\n    return this._parser(attr).y;\n  }\n\n  set y(newY) {\n    const { x, width, height } = this;\n    this._reserialize({\n      x,\n      y: newY,\n      width,\n      height\n    });\n  }\n\n  get width() {\n    const attr = this._reflectedElement.getAttributeNS(null, this._reflectedAttribute);\n    return this._parser(attr).width;\n  }\n\n  set width(newWidth) {\n    const { x, y, height } = this;\n    this._reserialize({\n      x,\n      y,\n      width: newWidth,\n      height\n    });\n  }\n\n  get height() {\n    const attr = this._reflectedElement.getAttributeNS(null, this._reflectedAttribute);\n    return this._parser(attr).height;\n  }\n\n  set height(newHeight) {\n    const { x, y, width } = this;\n    this._reserialize({\n      x,\n      y,\n      width,\n      height: newHeight\n    });\n  }\n}\n\nclass SVGRectImpl {\n  constructor(globalObject, args, { readOnly = false, ...privateData } = {}) {\n    this._globalObject = globalObject;\n\n    this._readOnly = readOnly;\n    if (privateData.reflectedElement) {\n      this._impl = new SVGRectImplReflection(privateData);\n    } else {\n      this._impl = new SVGRectImplRecord();\n    }\n  }\n\n  get x() {\n    return this._impl.x;\n  }\n\n  set x(newX) {\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\"This SVGRect is read-only\", \"NO_MODIFICATION_ALLOWED_ERR\"]);\n    }\n    this._impl.x = newX;\n  }\n\n  get y() {\n    return this._impl.y;\n  }\n\n  set y(newY) {\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\"This SVGRect is read-only\", \"NO_MODIFICATION_ALLOWED_ERR\"]);\n    }\n    this._impl.y = newY;\n  }\n\n  get width() {\n    return this._impl.width;\n  }\n\n  set width(newWidth) {\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\"This SVGRect is read-only\", \"NO_MODIFICATION_ALLOWED_ERR\"]);\n    }\n    this._impl.width = newWidth;\n  }\n\n  get height() {\n    return this._impl.height;\n  }\n\n  set height(newHeight) {\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\"This SVGRect is read-only\", \"NO_MODIFICATION_ALLOWED_ERR\"]);\n    }\n    this._impl.height = newHeight;\n  }\n}\n\nexports.implementation = SVGRectImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"SVGRect\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGRect'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGRect\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGRect {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get x() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get x' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      return esValue[implSymbol][\"x\"];\n    }\n\n    set x(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set x' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      V = conversions[\"float\"](V, {\n        context: \"Failed to set the 'x' property on 'SVGRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"x\"] = V;\n    }\n\n    get y() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get y' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      return esValue[implSymbol][\"y\"];\n    }\n\n    set y(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set y' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      V = conversions[\"float\"](V, {\n        context: \"Failed to set the 'y' property on 'SVGRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"y\"] = V;\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get width' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      return esValue[implSymbol][\"width\"];\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set width' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      V = conversions[\"float\"](V, {\n        context: \"Failed to set the 'width' property on 'SVGRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"width\"] = V;\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get height' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      return esValue[implSymbol][\"height\"];\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set height' called on an object that is not a valid instance of SVGRect.\");\n      }\n\n      V = conversions[\"float\"](V, {\n        context: \"Failed to set the 'height' property on 'SVGRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"height\"] = V;\n    }\n  }\n  Object.defineProperties(SVGRect.prototype, {\n    x: { enumerable: true },\n    y: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGRect\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGRect;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGRect\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/svg/SVGRect-impl.js\");\n","\"use strict\";\n\nconst SVGRect = require(\"../../../generated/idl/SVGRect\");\n\n// https://drafts.csswg.org/css-syntax/#number-token-diagram\nconst numberRe = /^[+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?/;\n\n// https://svgwg.org/svg2-draft/coords.html#ViewBoxAttribute\nfunction parseViewBox(str) {\n  // Use a do-while \"loop\" as JavaScript `goto end`.\n  // eslint-disable-next-line no-unreachable-loop\n  do {\n    // When the attribute does not exist.\n    if (typeof str !== \"string\") {\n      break;\n    }\n\n    let i = 0;\n    skipSpace();\n    const xStr = matchNumber();\n    if (!xStr) {\n      break;\n    }\n    if (!skipDelimiter()) {\n      break;\n    }\n    const yStr = matchNumber();\n    if (!yStr) {\n      break;\n    }\n    if (!skipDelimiter()) {\n      break;\n    }\n    const widthStr = matchNumber();\n    if (!widthStr) {\n      break;\n    }\n    if (!skipDelimiter()) {\n      break;\n    }\n    const heightStr = matchNumber();\n    if (!heightStr) {\n      break;\n    }\n    // Test for trailing junk.\n    skipSpace();\n    if (i < str.length) {\n      break;\n    }\n\n    // A negative value for <width> or <height> is an error and invalidates the 'viewBox' attribute.\n    const width = Number(widthStr);\n    if (width < 0) {\n      break;\n    }\n    const height = Number(heightStr);\n    if (height < 0) {\n      break;\n    }\n\n    return {\n      x: Number(xStr),\n      y: Number(yStr),\n      width,\n      height\n    };\n\n    function skipSpace() {\n      while (i < str.length && str[i] === \" \") {\n        i += 1;\n      }\n    }\n\n    function matchNumber() {\n      const numMatch = numberRe.exec(str.slice(i));\n      if (!numMatch) {\n        return undefined;\n      }\n      i += numMatch[0].length;\n      return numMatch[0];\n    }\n\n    function skipDelimiter() {\n      const start = i;\n      skipSpace();\n      if (i < str.length && str[i] === \",\") {\n        i += 1;\n      }\n      skipSpace();\n      return i > start;\n    }\n  } while (false);\n\n  return { x: 0, y: 0, width: 0, height: 0 };\n}\n\nclass SVGAnimatedRectImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n    this._element = privateData.element;\n    this._attribute = privateData.attribute;\n  }\n\n  get baseVal() {\n    return SVGRect.createImpl(this._globalObject, [], {\n      reflectedElement: this._element,\n      reflectedAttribute: this._attribute,\n      parser: parseViewBox\n    });\n  }\n\n  get animVal() {\n    return SVGRect.createImpl(this._globalObject, [], {\n      reflectedElement: this._element,\n      reflectedAttribute: this._attribute,\n      parser: parseViewBox,\n      readOnly: true\n    });\n  }\n}\n\nexports.implementation = SVGAnimatedRectImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"SVGAnimatedRect\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGAnimatedRect'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGAnimatedRect\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGAnimatedRect {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get baseVal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get baseVal' called on an object that is not a valid instance of SVGAnimatedRect.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"baseVal\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"baseVal\"]);\n      });\n    }\n\n    get animVal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get animVal' called on an object that is not a valid instance of SVGAnimatedRect.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"animVal\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"animVal\"]);\n      });\n    }\n  }\n  Object.defineProperties(SVGAnimatedRect.prototype, {\n    baseVal: { enumerable: true },\n    animVal: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGAnimatedRect\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGAnimatedRect;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGAnimatedRect\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/svg/SVGAnimatedRect-impl.js\");\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst alignmentStringsByIndex = [\n  \"unknown\", \"none\",\n  \"xMinYMin\", \"xMidYMin\", \"xMaxYMin\",\n  \"xMinYMid\", \"xMidYMid\", \"xMaxYMid\",\n  \"xMinYMax\", \"xMidYMax\", \"xMaxYMax\"\n];\nconst alignmentIndicesByString = {\n  __proto__: null,\n  unknown: 0,\n  none: 1,\n  xMinYMin: 2,\n  xMidYMin: 3,\n  xMaxYMin: 4,\n  xMinYMid: 5,\n  xMidYMid: 6,\n  xMaxYMid: 7,\n  xMinYMax: 8,\n  xMidYMax: 9,\n  xMaxYMax: 10\n};\n\nconst meetOrSliceStringsByIndex = [\"unknown\", \"meet\", \"slice\"];\nconst meetOrSliceIndicesByString = {\n  __proto__: null,\n  unknown: 0,\n  meet: 1,\n  slice: 2\n};\n\n// https://svgwg.org/svg2-draft/coords.html#PreserveAspectRatioAttribute\nconst preserveAspectRatioRegExp = /^(none|x(?:Min|Mid|Max)Y(?:Min|Mid|Max))(?: +(meet|slice))?$/;\n\nclass SVGPreserveAspectRatioImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n    this._element = privateData.element;\n    this._readOnly = Boolean(privateData.readOnly);\n  }\n\n  _parse() {\n    const attrValue = this._element.getAttributeNS(null, \"preserveAspectRatio\");\n    if (attrValue) {\n      const value = preserveAspectRatioRegExp.exec(attrValue);\n      if (value) {\n        return {\n          align: value[1],\n          meetOrSlice: value[2] || \"meet\"\n        };\n      }\n    }\n    return {\n      align: \"xMidYMid\",\n      meetOrSlice: \"meet\"\n    };\n  }\n\n  get align() {\n    const { align } = this._parse();\n    return alignmentIndicesByString[align];\n  }\n\n  set align(value) {\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only SVGPreserveAspectRatio\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    const string = alignmentStringsByIndex[value];\n    if (string === \"unknown\" || string === undefined) {\n      throw new TypeError(\"Invalid alignment\");\n    }\n    this._element.setAttributeNS(null, \"preserveAspectRatio\", `${string} ${this._parse().meetOrSlice}`);\n  }\n\n  get meetOrSlice() {\n    const { meetOrSlice } = this._parse();\n    return meetOrSliceIndicesByString[meetOrSlice];\n  }\n\n  set meetOrSlice(value) {\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only SVGPreserveAspectRatio\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    const string = meetOrSliceStringsByIndex[value];\n    if (string === \"unknown\" || string === undefined) {\n      throw new TypeError(\"Invalid meet-or-slice value\");\n    }\n    this._element.setAttributeNS(null, \"preserveAspectRatio\", `${this._parse().align} ${string}`);\n  }\n}\n\nexports.implementation = SVGPreserveAspectRatioImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"SVGPreserveAspectRatio\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGPreserveAspectRatio'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGPreserveAspectRatio\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGPreserveAspectRatio {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get align() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get align' called on an object that is not a valid instance of SVGPreserveAspectRatio.\"\n        );\n      }\n\n      return esValue[implSymbol][\"align\"];\n    }\n\n    set align(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set align' called on an object that is not a valid instance of SVGPreserveAspectRatio.\"\n        );\n      }\n\n      V = conversions[\"unsigned short\"](V, {\n        context: \"Failed to set the 'align' property on 'SVGPreserveAspectRatio': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"align\"] = V;\n    }\n\n    get meetOrSlice() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get meetOrSlice' called on an object that is not a valid instance of SVGPreserveAspectRatio.\"\n        );\n      }\n\n      return esValue[implSymbol][\"meetOrSlice\"];\n    }\n\n    set meetOrSlice(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set meetOrSlice' called on an object that is not a valid instance of SVGPreserveAspectRatio.\"\n        );\n      }\n\n      V = conversions[\"unsigned short\"](V, {\n        context: \"Failed to set the 'meetOrSlice' property on 'SVGPreserveAspectRatio': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"meetOrSlice\"] = V;\n    }\n  }\n  Object.defineProperties(SVGPreserveAspectRatio.prototype, {\n    align: { enumerable: true },\n    meetOrSlice: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGPreserveAspectRatio\", configurable: true },\n    SVG_PRESERVEASPECTRATIO_UNKNOWN: { value: 0, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_NONE: { value: 1, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMINYMIN: { value: 2, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMIDYMIN: { value: 3, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMAXYMIN: { value: 4, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMINYMID: { value: 5, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMIDYMID: { value: 6, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMAXYMID: { value: 7, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMINYMAX: { value: 8, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMIDYMAX: { value: 9, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMAXYMAX: { value: 10, enumerable: true },\n    SVG_MEETORSLICE_UNKNOWN: { value: 0, enumerable: true },\n    SVG_MEETORSLICE_MEET: { value: 1, enumerable: true },\n    SVG_MEETORSLICE_SLICE: { value: 2, enumerable: true }\n  });\n  Object.defineProperties(SVGPreserveAspectRatio, {\n    SVG_PRESERVEASPECTRATIO_UNKNOWN: { value: 0, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_NONE: { value: 1, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMINYMIN: { value: 2, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMIDYMIN: { value: 3, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMAXYMIN: { value: 4, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMINYMID: { value: 5, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMIDYMID: { value: 6, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMAXYMID: { value: 7, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMINYMAX: { value: 8, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMIDYMAX: { value: 9, enumerable: true },\n    SVG_PRESERVEASPECTRATIO_XMAXYMAX: { value: 10, enumerable: true },\n    SVG_MEETORSLICE_UNKNOWN: { value: 0, enumerable: true },\n    SVG_MEETORSLICE_MEET: { value: 1, enumerable: true },\n    SVG_MEETORSLICE_SLICE: { value: 2, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = SVGPreserveAspectRatio;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGPreserveAspectRatio\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/svg/SVGPreserveAspectRatio-impl.js\");\n","\"use strict\";\n\nconst SVGPreserveAspectRatio = require(\"../../../generated/idl/SVGPreserveAspectRatio\");\n\nclass SVGAnimatedPreserveAspectRatioImpl {\n  constructor(globalObject, args, privateData) {\n    this._globalObject = globalObject;\n    this._element = privateData.element;\n  }\n\n  get baseVal() {\n    return SVGPreserveAspectRatio.createImpl(this._globalObject, [], {\n      element: this._element\n    });\n  }\n\n  get animVal() {\n    return SVGPreserveAspectRatio.createImpl(this._globalObject, [], {\n      element: this._element\n    });\n  }\n}\n\nexports.implementation = SVGAnimatedPreserveAspectRatioImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"SVGAnimatedPreserveAspectRatio\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGAnimatedPreserveAspectRatio'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGAnimatedPreserveAspectRatio\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGAnimatedPreserveAspectRatio {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get baseVal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get baseVal' called on an object that is not a valid instance of SVGAnimatedPreserveAspectRatio.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"baseVal\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"baseVal\"]);\n      });\n    }\n\n    get animVal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get animVal' called on an object that is not a valid instance of SVGAnimatedPreserveAspectRatio.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"animVal\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"animVal\"]);\n      });\n    }\n  }\n  Object.defineProperties(SVGAnimatedPreserveAspectRatio.prototype, {\n    baseVal: { enumerable: true },\n    animVal: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGAnimatedPreserveAspectRatio\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGAnimatedPreserveAspectRatio;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGAnimatedPreserveAspectRatio\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/svg/SVGAnimatedPreserveAspectRatio-impl.js\");\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nclass SVGNumberImpl {\n  constructor(globalObject, args, privateData) {\n    // Delegate to parent List object for (almost) everything related to reflection.\n    this._parentList = privateData.parentList;\n    this._value = 0;\n  }\n\n  get _readOnly() {\n    if (this._parentList !== undefined) {\n      return this._parentList._readOnly;\n    }\n    return false;\n  }\n\n  _synchronize() {\n    if (this._parentList !== undefined) {\n      this._parentList._synchronize();\n    }\n  }\n\n  _reserialize() {\n    if (this._parentList !== undefined) {\n      this._parentList._reserialize();\n    }\n  }\n\n  get value() {\n    this._synchronize();\n    return this._value;\n  }\n\n  set value(value) {\n    if (this._readOnly) {\n      throw DOMException.create(this._globalObject, [\n        \"Attempting to modify a read-only SVGNumber\",\n        \"NoModificationAllowedError\"\n      ]);\n    }\n    this._value = value;\n    this._reserialize();\n  }\n}\n\nexports.implementation = SVGNumberImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"SVGNumber\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGNumber'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGNumber\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGNumber {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get value() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get value' called on an object that is not a valid instance of SVGNumber.\");\n      }\n\n      return esValue[implSymbol][\"value\"];\n    }\n\n    set value(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set value' called on an object that is not a valid instance of SVGNumber.\");\n      }\n\n      V = conversions[\"float\"](V, {\n        context: \"Failed to set the 'value' property on 'SVGNumber': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"value\"] = V;\n    }\n  }\n  Object.defineProperties(SVGNumber.prototype, {\n    value: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGNumber\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGNumber;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGNumber\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/svg/SVGNumber-impl.js\");\n","\"use strict\";\n\nconst SVGNumber = require(\"../../../generated/idl/SVGNumber\");\nconst SVGRect = require(\"../../../generated/idl/SVGRect\");\nconst SVGGraphicsElementImpl = require(\"./SVGGraphicsElement-impl\").implementation;\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { ELEMENT_NODE } = require(\"../node-type\");\n\nclass SVGSVGElementImpl extends SVGGraphicsElementImpl {\n  createSVGNumber() {\n    return SVGNumber.createImpl(this._globalObject, [], {});\n  }\n\n  createSVGRect() {\n    return SVGRect.createImpl(this._globalObject, [], {});\n  }\n\n  // Unlike `Document`'s `getElementById()`, this searches within this element's subtree, so the document-level\n  // `ByIdCache` can't be used (it might return an element outside this subtree). A per-`<svg>` cache isn't worthwhile\n  // since `SVGSVGElement`'s `getElementById()` is rarely called and `<svg>` subtrees are typically small.\n  getElementById(elementId) {\n    for (const node of domSymbolTree.treeIterator(this)) {\n      if (node.nodeType === ELEMENT_NODE && node.getAttributeNS(null, \"id\") === elementId) {\n        return node;\n      }\n    }\n    return null;\n  }\n\n  suspendRedraw() {\n    return 1;\n  }\n  unsuspendRedraw() {}\n  unsuspendRedrawAll() {}\n  forceRedraw() {}\n}\n\nmodule.exports = {\n  implementation: SVGSVGElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst create_SVGAnimatedRect = require(\"./SVGAnimatedRect.js\").create;\nconst create_SVGAnimatedPreserveAspectRatio = require(\"./SVGAnimatedPreserveAspectRatio.js\").create;\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst OnBeforeUnloadEventHandlerNonNull = require(\"./OnBeforeUnloadEventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGGraphicsElement = require(\"./SVGGraphicsElement.js\");\n\nconst interfaceName = \"SVGSVGElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGSVGElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGSVGElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGGraphicsElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGSVGElement extends globalObject.SVGGraphicsElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    createSVGNumber() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createSVGNumber' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createSVGNumber());\n    }\n\n    createSVGRect() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'createSVGRect' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].createSVGRect());\n    }\n\n    getElementById(elementId) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getElementById' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getElementById' on 'SVGSVGElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'getElementById' on 'SVGSVGElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getElementById(...args));\n    }\n\n    suspendRedraw(maxWaitMilliseconds) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'suspendRedraw' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'suspendRedraw' on 'SVGSVGElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'suspendRedraw' on 'SVGSVGElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].suspendRedraw(...args);\n    }\n\n    unsuspendRedraw(suspendHandleID) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'unsuspendRedraw' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'unsuspendRedraw' on 'SVGSVGElement': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'unsuspendRedraw' on 'SVGSVGElement': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].unsuspendRedraw(...args);\n    }\n\n    unsuspendRedrawAll() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'unsuspendRedrawAll' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return esValue[implSymbol].unsuspendRedrawAll();\n    }\n\n    forceRedraw() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'forceRedraw' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return esValue[implSymbol].forceRedraw();\n    }\n\n    get viewBox() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get viewBox' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"viewBox\", () => {\n        return create_SVGAnimatedRect(globalObject, [], {\n          element: esValue[implSymbol],\n          attribute: \"viewBox\"\n        });\n      });\n    }\n\n    get preserveAspectRatio() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get preserveAspectRatio' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"preserveAspectRatio\", () => {\n        return create_SVGAnimatedPreserveAspectRatio(globalObject, [], {\n          element: esValue[implSymbol]\n        });\n      });\n    }\n\n    get onafterprint() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onafterprint' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onafterprint\"]);\n    }\n\n    set onafterprint(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onafterprint' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onafterprint' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onafterprint\"] = V;\n    }\n\n    get onbeforeprint() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeprint' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeprint\"]);\n    }\n\n    set onbeforeprint(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeprint' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeprint' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeprint\"] = V;\n    }\n\n    get onbeforeunload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onbeforeunload' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onbeforeunload\"]);\n    }\n\n    set onbeforeunload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onbeforeunload' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = OnBeforeUnloadEventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onbeforeunload' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onbeforeunload\"] = V;\n    }\n\n    get onhashchange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onhashchange' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onhashchange\"]);\n    }\n\n    set onhashchange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onhashchange' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onhashchange' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onhashchange\"] = V;\n    }\n\n    get onlanguagechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onlanguagechange' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onlanguagechange\"]);\n    }\n\n    set onlanguagechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onlanguagechange' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onlanguagechange' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onlanguagechange\"] = V;\n    }\n\n    get onmessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmessage' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmessage\"]);\n    }\n\n    set onmessage(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmessage' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmessage' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmessage\"] = V;\n    }\n\n    get onmessageerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmessageerror' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmessageerror\"]);\n    }\n\n    set onmessageerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmessageerror' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmessageerror' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmessageerror\"] = V;\n    }\n\n    get onoffline() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onoffline' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onoffline\"]);\n    }\n\n    set onoffline(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onoffline' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onoffline' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onoffline\"] = V;\n    }\n\n    get ononline() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ononline' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ononline\"]);\n    }\n\n    set ononline(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ononline' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ononline' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ononline\"] = V;\n    }\n\n    get onpagehide() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpagehide' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpagehide\"]);\n    }\n\n    set onpagehide(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpagehide' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpagehide' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpagehide\"] = V;\n    }\n\n    get onpageshow() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpageshow' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpageshow\"]);\n    }\n\n    set onpageshow(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpageshow' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpageshow' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpageshow\"] = V;\n    }\n\n    get onpopstate() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onpopstate' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onpopstate\"]);\n    }\n\n    set onpopstate(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onpopstate' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onpopstate' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onpopstate\"] = V;\n    }\n\n    get onrejectionhandled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onrejectionhandled' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onrejectionhandled\"]);\n    }\n\n    set onrejectionhandled(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onrejectionhandled' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onrejectionhandled' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onrejectionhandled\"] = V;\n    }\n\n    get onstorage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onstorage' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onstorage\"]);\n    }\n\n    set onstorage(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onstorage' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onstorage' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onstorage\"] = V;\n    }\n\n    get onunhandledrejection() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onunhandledrejection' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onunhandledrejection\"]);\n    }\n\n    set onunhandledrejection(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onunhandledrejection' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onunhandledrejection' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onunhandledrejection\"] = V;\n    }\n\n    get onunload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onunload' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onunload\"]);\n    }\n\n    set onunload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onunload' called on an object that is not a valid instance of SVGSVGElement.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onunload' property on 'SVGSVGElement': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onunload\"] = V;\n    }\n  }\n  Object.defineProperties(SVGSVGElement.prototype, {\n    createSVGNumber: { enumerable: true },\n    createSVGRect: { enumerable: true },\n    getElementById: { enumerable: true },\n    suspendRedraw: { enumerable: true },\n    unsuspendRedraw: { enumerable: true },\n    unsuspendRedrawAll: { enumerable: true },\n    forceRedraw: { enumerable: true },\n    viewBox: { enumerable: true },\n    preserveAspectRatio: { enumerable: true },\n    onafterprint: { enumerable: true },\n    onbeforeprint: { enumerable: true },\n    onbeforeunload: { enumerable: true },\n    onhashchange: { enumerable: true },\n    onlanguagechange: { enumerable: true },\n    onmessage: { enumerable: true },\n    onmessageerror: { enumerable: true },\n    onoffline: { enumerable: true },\n    ononline: { enumerable: true },\n    onpagehide: { enumerable: true },\n    onpageshow: { enumerable: true },\n    onpopstate: { enumerable: true },\n    onrejectionhandled: { enumerable: true },\n    onstorage: { enumerable: true },\n    onunhandledrejection: { enumerable: true },\n    onunload: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGSVGElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGSVGElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGSVGElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGSVGElement-impl.js\");\n","\"use strict\";\n\nconst SVGGraphicsElementImpl = require(\"./SVGGraphicsElement-impl\").implementation;\n\nclass SVGGElementImpl extends SVGGraphicsElementImpl {}\n\nmodule.exports = {\n  implementation: SVGGElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGGraphicsElement = require(\"./SVGGraphicsElement.js\");\n\nconst interfaceName = \"SVGGElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGGElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGGElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGGraphicsElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGGElement extends globalObject.SVGGraphicsElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(SVGGElement.prototype, {\n    [Symbol.toStringTag]: { value: \"SVGGElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGGElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGGElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGGElement-impl.js\");\n","\"use strict\";\n\nconst SVGGraphicsElementImpl = require(\"./SVGGraphicsElement-impl\").implementation;\n\nclass SVGDefsElementImpl extends SVGGraphicsElementImpl {}\n\nmodule.exports = {\n  implementation: SVGDefsElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGGraphicsElement = require(\"./SVGGraphicsElement.js\");\n\nconst interfaceName = \"SVGDefsElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGDefsElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGDefsElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGGraphicsElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGDefsElement extends globalObject.SVGGraphicsElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(SVGDefsElement.prototype, {\n    [Symbol.toStringTag]: { value: \"SVGDefsElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGDefsElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGDefsElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGDefsElement-impl.js\");\n","\"use strict\";\n\nconst SVGElementImpl = require(\"./SVGElement-impl\").implementation;\n\nclass SVGDescElementImpl extends SVGElementImpl {}\n\nmodule.exports = {\n  implementation: SVGDescElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGElement = require(\"./SVGElement.js\");\n\nconst interfaceName = \"SVGDescElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGDescElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGDescElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGDescElement extends globalObject.SVGElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(SVGDescElement.prototype, {\n    [Symbol.toStringTag]: { value: \"SVGDescElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGDescElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGDescElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGDescElement-impl.js\");\n","\"use strict\";\n\nconst SVGElementImpl = require(\"./SVGElement-impl\").implementation;\n\nclass SVGMetadataElementImpl extends SVGElementImpl {}\n\nmodule.exports = {\n  implementation: SVGMetadataElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGElement = require(\"./SVGElement.js\");\n\nconst interfaceName = \"SVGMetadataElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGMetadataElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGMetadataElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGMetadataElement extends globalObject.SVGElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(SVGMetadataElement.prototype, {\n    [Symbol.toStringTag]: { value: \"SVGMetadataElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGMetadataElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGMetadataElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGMetadataElement-impl.js\");\n","\"use strict\";\n\nconst SVGElementImpl = require(\"./SVGElement-impl\").implementation;\n\nclass SVGTitleElementImpl extends SVGElementImpl { }\n\nmodule.exports = {\n  implementation: SVGTitleElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGElement = require(\"./SVGElement.js\");\n\nconst interfaceName = \"SVGTitleElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGTitleElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGTitleElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGTitleElement extends globalObject.SVGElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(SVGTitleElement.prototype, {\n    [Symbol.toStringTag]: { value: \"SVGTitleElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGTitleElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGTitleElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGTitleElement-impl.js\");\n","\"use strict\";\n\nconst SVGGraphicsElementImpl = require(\"./SVGGraphicsElement-impl\").implementation;\n\nclass SVGSymbolElementImpl extends SVGGraphicsElementImpl {}\n\nmodule.exports = {\n  implementation: SVGSymbolElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst create_SVGAnimatedRect = require(\"./SVGAnimatedRect.js\").create;\nconst create_SVGAnimatedPreserveAspectRatio = require(\"./SVGAnimatedPreserveAspectRatio.js\").create;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGGraphicsElement = require(\"./SVGGraphicsElement.js\");\n\nconst interfaceName = \"SVGSymbolElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGSymbolElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGSymbolElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGGraphicsElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGSymbolElement extends globalObject.SVGGraphicsElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get viewBox() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get viewBox' called on an object that is not a valid instance of SVGSymbolElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"viewBox\", () => {\n        return create_SVGAnimatedRect(globalObject, [], {\n          element: esValue[implSymbol],\n          attribute: \"viewBox\"\n        });\n      });\n    }\n\n    get preserveAspectRatio() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get preserveAspectRatio' called on an object that is not a valid instance of SVGSymbolElement.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"preserveAspectRatio\", () => {\n        return create_SVGAnimatedPreserveAspectRatio(globalObject, [], {\n          element: esValue[implSymbol]\n        });\n      });\n    }\n  }\n  Object.defineProperties(SVGSymbolElement.prototype, {\n    viewBox: { enumerable: true },\n    preserveAspectRatio: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"SVGSymbolElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGSymbolElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGSymbolElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGSymbolElement-impl.js\");\n","\"use strict\";\n\nconst SVGGraphicsElementImpl = require(\"./SVGGraphicsElement-impl\").implementation;\n\nclass SVGSwitchElementImpl extends SVGGraphicsElementImpl {}\n\nmodule.exports = {\n  implementation: SVGSwitchElementImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst SVGGraphicsElement = require(\"./SVGGraphicsElement.js\");\n\nconst interfaceName = \"SVGSwitchElement\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'SVGSwitchElement'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"SVGSwitchElement\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  SVGGraphicsElement._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class SVGSwitchElement extends globalObject.SVGGraphicsElement {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(SVGSwitchElement.prototype, {\n    [Symbol.toStringTag]: { value: \"SVGSwitchElement\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = SVGSwitchElement;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: SVGSwitchElement\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/nodes/SVGSwitchElement-impl.js\");\n","\"use strict\";\n\nconst enumerationValues = new Set([\"transparent\", \"native\"]);\nexports.enumerationValues = enumerationValues;\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  const string = `${value}`;\n  if (!enumerationValues.has(string)) {\n    throw new globalObject.TypeError(`${context} '${string}' is not a valid enumeration value for EndingType`);\n  }\n  return string;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EndingType = require(\"./EndingType.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"endings\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = EndingType.convert(globalObject, value, { context: context + \" has member 'endings' that\" });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"transparent\";\n    }\n  }\n\n  {\n    const key = \"type\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, { context: context + \" has member 'type' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\n/**\n * Concatenate the given typed arrays into a single `Uint8Array`.\n *\n * @param {Array<TypedArray>} arrays - An array of typed arrays. They can be of any type (but not `DataView` or\n * `ArrayBuffer`).\n * @returns {Uint8Array} - A new `Uint8Array` containing a copy of the concatenated data.\n * @see {@link https://github.com/tc39/proposal-typedarray-concat}\n */\nexports.concatTypedArrays = arrays => {\n  const totalLength = arrays.reduce((sum, arr) => sum + arr.byteLength, 0);\n  const result = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const arr of arrays) {\n    const toSet = arr instanceof Uint8Array ? arr : new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n    result.set(toSet, offset);\n    offset += arr.byteLength;\n  }\n  return result;\n};\n\n/**\n * Create a copy of the data in a given `ArrayBuffer`, in a new `ArrayBuffer` created in the target realm.\n *\n * Used when we have some internal data, usually in the Node.js realm, and we need to copy it to the target realm.\n * Compared to {@link copyToArrayBufferInTargetRealmDestructively}, use this when we need to keep the original data\n * around, such as when exposing the data from inside the `Blob` implementation to the user.\n *\n * @param {ArrayBuffer} arrayBuffer - The `ArrayBuffer` to copy the data from.\n * @param {object} newRealm - The target realm's global object, which has `ArrayBuffer` and `Uint8Array` constructor\n * properties.\n * @returns {ArrayBuffer} - A new `ArrayBuffer` containing a copy of the data, using the `ArrayBuffer` constructor from\n * `newRealm`.\n */\nexports.copyToArrayBufferInTargetRealm = (arrayBuffer, newRealm) => {\n  const newAB = new newRealm.ArrayBuffer(arrayBuffer.byteLength);\n  const view = new newRealm.Uint8Array(newAB);\n  view.set(new newRealm.Uint8Array(arrayBuffer));\n  return newAB;\n};\n\n/**\n * Create a copy of the data in a given `ArrayBuffer`, in a new `ArrayBuffer` created in the target realm. The original\n * `ArrayBuffer` is transferred in the process, so its data is no longer usable.\n *\n * Used when we have some internal data, usually in the Node.js realm, and we need to copy it to the target realm.\n * Compared to {@link copyToArrayBufferInTargetRealm}, use this when we don't need to keep the original data around,\n * such as when copying data from the Node.js network or `WebSocket` stack to the jsdom user.\n *\n * @param {ArrayBuffer} arrayBuffer - The `ArrayBuffer` to extract the data from. After calling this function,\n * `arrayBuffer` is no longer usable.\n * @param {object} newRealm - The target realm's global object, which has an `ArrayBuffer` constructor property.\n * @returns {ArrayBuffer} - A new `ArrayBuffer` containing the original data data, using the `ArrayBuffer` constructor\n * from `newRealm`.\n */\nexports.copyToArrayBufferInTargetRealmDestructively = (arrayBuffer, newRealm) => {\n  if (!newRealm.ArrayBuffer.prototype.transfer) {\n    return exports.copyToArrayBufferInTargetRealm(arrayBuffer, newRealm);\n  }\n\n  return newRealm.ArrayBuffer.prototype.transfer.call(arrayBuffer);\n};\n","\"use strict\";\nconst { utf8Encode, utf8Decode } = require(\"../helpers/encoding\");\nconst Blob = require(\"../../../generated/idl/Blob\");\nconst { isArrayBuffer } = require(\"../../../generated/idl/utils\");\nconst { concatTypedArrays, copyToArrayBufferInTargetRealm } = require(\"../helpers/binary-data\");\n\nfunction convertLineEndingsToNative(s) {\n  // jsdom always pretends to be *nix, for consistency.\n  // See also https://github.com/jsdom/jsdom/issues/2396.\n  return s.replace(/\\r\\n|\\r|\\n/g, \"\\n\");\n}\n\nexports.implementation = class BlobImpl {\n  constructor(globalObject, [parts, properties], { fastPathArrayBufferToWrap } = {}) {\n    this._globalObject = globalObject;\n\n    this.type = properties.type;\n    if (/[^\\u0020-\\u007E]/.test(this.type)) {\n      this.type = \"\";\n    } else {\n      this.type = this.type.toLowerCase();\n    }\n\n    // A word about `this._bytes`:\n    //\n    // It is a `Uint8Array`. The realm of that `Uint8Array`, and/or the realm of its underlying `ArrayBuffer`, may be\n    // arbitrary. In particular, they likely do *not* match `this._globalObject`. The underlying `ArrayBuffer` may have\n    // been acquired from some other part of the system, e.g., the `ws` library, or aliased to another `BlobImpl`'s\n    // `_bytes`.\n    //\n    // This is fine, and indeed desirable, for efficiency. The key is that `Blob` is conceptually immutable, so users\n    // will never mutate the underlying `ArrayBuffer`. And, we never expose `this._bytes` or the underlying\n    // `ArrayBuffer` directly to the user: we always use something like `copyToArrayBufferInTargetRealm()` to ensure the\n    // result is in the realm appropriate for the user's request, and that if the user mutates the exposed bytes, this\n    // doesn't impact `this._bytes`.\n\n    // Used internally in jsdom when we receive an `ArrayBuffer` from elsewhere in the system and know we don't need to\n    // copy it because the user doesn't have any references to it. It's OK if `fastPathArrayBufferToWrap` is in the\n    // wrong realm even, because it never directly escapes the `BlobImpl` without a copy.\n    if (fastPathArrayBufferToWrap) {\n      this._bytes = new Uint8Array(fastPathArrayBufferToWrap);\n      return;\n    }\n\n    const chunks = [];\n    if (parts !== undefined) {\n      for (const part of parts) {\n        let chunk;\n        if (isArrayBuffer(part)) {\n          // Create a wrapper. The copying will happen in `concatTypedArrays()`.\n          chunk = new Uint8Array(part);\n        } else if (ArrayBuffer.isView(part)) {\n          // Use the part as-is. The copying will happen in `concatTypedArrays()`.\n          chunk = part;\n        } else if (Blob.isImpl(part)) {\n          // Use the existing `Uint8Array` as-is. The copying will happen in `concatTypedArrays()`.\n          chunk = part._bytes;\n        } else {\n          let s = part;\n          if (properties.endings === \"native\") {\n            s = convertLineEndingsToNative(s);\n          }\n          chunk = utf8Encode(s);\n        }\n        chunks.push(chunk);\n      }\n    }\n    this._bytes = concatTypedArrays(chunks);\n  }\n\n  get size() {\n    return this._bytes.length;\n  }\n\n  arrayBuffer() {\n    const ab = copyToArrayBufferInTargetRealm(this._bytes.buffer, this._globalObject);\n    return this._globalObject.Promise.resolve(ab);\n  }\n\n  bytes() {\n    const ab = copyToArrayBufferInTargetRealm(this._bytes.buffer, this._globalObject);\n    return this._globalObject.Promise.resolve(new this._globalObject.Uint8Array(ab));\n  }\n\n  text() {\n    return this._globalObject.Promise.resolve(utf8Decode(this._bytes));\n  }\n\n  slice(start, end, contentType) {\n    const { size } = this;\n\n    let relativeStart, relativeEnd, relativeContentType;\n\n    if (start === undefined) {\n      relativeStart = 0;\n    } else if (start < 0) {\n      relativeStart = Math.max(size + start, 0);\n    } else {\n      relativeStart = Math.min(start, size);\n    }\n    if (end === undefined) {\n      relativeEnd = size;\n    } else if (end < 0) {\n      relativeEnd = Math.max(size + end, 0);\n    } else {\n      relativeEnd = Math.min(end, size);\n    }\n\n    if (contentType === undefined) {\n      relativeContentType = \"\";\n    } else {\n      // sanitization (lower case and invalid char check) is done in the\n      // constructor\n      relativeContentType = contentType;\n    }\n\n    const span = Math.max(relativeEnd - relativeStart, 0);\n\n    const slicedBuffer = this._bytes.slice(relativeStart, relativeStart + span);\n\n    const blob = Blob.createImpl(this._globalObject, [[], { type: relativeContentType }], {});\n    blob._bytes = slicedBuffer;\n    return blob;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst BlobPropertyBag = require(\"./BlobPropertyBag.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Blob\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Blob'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Blob\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Blob {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          if (!utils.isObject(curArg)) {\n            throw new globalObject.TypeError(\"Failed to construct 'Blob': parameter 1\" + \" is not an iterable object.\");\n          } else {\n            const V = [];\n            const tmp = curArg;\n            for (let nextItem of tmp) {\n              if (exports.is(nextItem)) {\n                nextItem = utils.implForWrapper(nextItem);\n              } else if (utils.isArrayBuffer(nextItem)) {\n                nextItem = conversions[\"ArrayBuffer\"](nextItem, {\n                  context: \"Failed to construct 'Blob': parameter 1\" + \"'s element\",\n                  globals: globalObject\n                });\n              } else if (ArrayBuffer.isView(nextItem)) {\n                nextItem = conversions[\"ArrayBufferView\"](nextItem, {\n                  context: \"Failed to construct 'Blob': parameter 1\" + \"'s element\",\n                  globals: globalObject\n                });\n              } else {\n                nextItem = conversions[\"USVString\"](nextItem, {\n                  context: \"Failed to construct 'Blob': parameter 1\" + \"'s element\",\n                  globals: globalObject\n                });\n              }\n              V.push(nextItem);\n            }\n            curArg = V;\n          }\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = BlobPropertyBag.convert(globalObject, curArg, { context: \"Failed to construct 'Blob': parameter 2\" });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    slice() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'slice' called on an object that is not a valid instance of Blob.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long long\"](curArg, {\n            context: \"Failed to execute 'slice' on 'Blob': parameter 1\",\n            globals: globalObject,\n            clamp: true\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"long long\"](curArg, {\n            context: \"Failed to execute 'slice' on 'Blob': parameter 2\",\n            globals: globalObject,\n            clamp: true\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'slice' on 'Blob': parameter 3\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].slice(...args));\n    }\n\n    text() {\n      try {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'text' called on an object that is not a valid instance of Blob.\");\n        }\n\n        return utils.tryWrapperForImpl(esValue[implSymbol].text());\n      } catch (e) {\n        return globalObject.Promise.reject(e);\n      }\n    }\n\n    arrayBuffer() {\n      try {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'arrayBuffer' called on an object that is not a valid instance of Blob.\");\n        }\n\n        return utils.tryWrapperForImpl(esValue[implSymbol].arrayBuffer());\n      } catch (e) {\n        return globalObject.Promise.reject(e);\n      }\n    }\n\n    bytes() {\n      try {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\"'bytes' called on an object that is not a valid instance of Blob.\");\n        }\n\n        return utils.tryWrapperForImpl(esValue[implSymbol].bytes());\n      } catch (e) {\n        return globalObject.Promise.reject(e);\n      }\n    }\n\n    get size() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get size' called on an object that is not a valid instance of Blob.\");\n      }\n\n      return esValue[implSymbol][\"size\"];\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get type' called on an object that is not a valid instance of Blob.\");\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n  }\n  Object.defineProperties(Blob.prototype, {\n    slice: { enumerable: true },\n    text: { enumerable: true },\n    arrayBuffer: { enumerable: true },\n    bytes: { enumerable: true },\n    size: { enumerable: true },\n    type: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Blob\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Blob;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Blob\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/file-api/Blob-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Blob = require(\"./Blob.js\");\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"data\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = Blob.convert(globalObject, value, { context: context + \" has member 'data' that\" });\n\n      ret[key] = value;\n    } else {\n      throw new globalObject.TypeError(\"data is required in 'BlobEventInit'\");\n    }\n  }\n\n  {\n    const key = \"timecode\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'timecode' that\", globals: globalObject });\n\n      ret[key] = value;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nclass BlobEventImpl extends EventImpl {}\n\n// Cannot use the usual pattern since `data` is required.\nBlobEventImpl.defaultInit = {\n  __proto__: null,\n  timecode: 0\n};\n\nmodule.exports = {\n  implementation: BlobEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst BlobEventInit = require(\"./BlobEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"BlobEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'BlobEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"BlobEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class BlobEvent extends globalObject.Event {\n    constructor(type, eventInitDict) {\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'BlobEvent': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'BlobEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = BlobEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'BlobEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get data() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get data' called on an object that is not a valid instance of BlobEvent.\");\n      }\n\n      return utils.getSameObject(this, \"data\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"data\"]);\n      });\n    }\n\n    get timecode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get timecode' called on an object that is not a valid instance of BlobEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"timecode\"]);\n    }\n  }\n  Object.defineProperties(BlobEvent.prototype, {\n    data: { enumerable: true },\n    timecode: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"BlobEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = BlobEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: BlobEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/BlobEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"code\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned short\"](value, {\n        context: context + \" has member 'code' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"reason\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"USVString\"](value, {\n        context: context + \" has member 'reason' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"wasClean\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'wasClean' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst CloseEventInit = require(\"../../../generated/idl/CloseEventInit\");\n\nclass CloseEventImpl extends EventImpl {}\nCloseEventImpl.defaultInit = CloseEventInit.convert(undefined, undefined);\n\nexports.implementation = CloseEventImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst CloseEventInit = require(\"./CloseEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"CloseEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'CloseEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"CloseEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class CloseEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'CloseEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'CloseEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = CloseEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'CloseEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get wasClean() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get wasClean' called on an object that is not a valid instance of CloseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"wasClean\"];\n    }\n\n    get code() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get code' called on an object that is not a valid instance of CloseEvent.\");\n      }\n\n      return esValue[implSymbol][\"code\"];\n    }\n\n    get reason() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get reason' called on an object that is not a valid instance of CloseEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"reason\"];\n    }\n  }\n  Object.defineProperties(CloseEvent.prototype, {\n    wasClean: { enumerable: true },\n    code: { enumerable: true },\n    reason: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"CloseEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = CloseEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: CloseEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/CloseEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"persisted\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'persisted' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst PageTransitionEventInit = require(\"../../../generated/idl/PageTransitionEventInit\");\n\n// https://html.spec.whatwg.org/multipage/browsing-the-web.html#pagetransitionevent\nclass PageTransitionEventImpl extends EventImpl {\n  initPageTransitionEvent(type, bubbles, cancelable, persisted) {\n    if (this._dispatchFlag) {\n      return;\n    }\n\n    this.initEvent(type, bubbles, cancelable);\n    this.persisted = persisted;\n  }\n}\nPageTransitionEventImpl.defaultInit = PageTransitionEventInit.convert(undefined, undefined);\n\nexports.implementation = PageTransitionEventImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst PageTransitionEventInit = require(\"./PageTransitionEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"PageTransitionEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'PageTransitionEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"PageTransitionEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class PageTransitionEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'PageTransitionEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'PageTransitionEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = PageTransitionEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'PageTransitionEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get persisted() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get persisted' called on an object that is not a valid instance of PageTransitionEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"persisted\"];\n    }\n  }\n  Object.defineProperties(PageTransitionEvent.prototype, {\n    persisted: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"PageTransitionEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = PageTransitionEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: PageTransitionEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/PageTransitionEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"state\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"any\"](value, { context: context + \" has member 'state' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst EventImpl = require(\"./Event-impl.js\").implementation;\n\nconst PopStateEventInit = require(\"../../../generated/idl/PopStateEventInit\");\n\nclass PopStateEventImpl extends EventImpl {}\nPopStateEventImpl.defaultInit = PopStateEventInit.convert(undefined, undefined);\n\nexports.implementation = PopStateEventImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst PopStateEventInit = require(\"./PopStateEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"PopStateEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'PopStateEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"PopStateEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class PopStateEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'PopStateEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'PopStateEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = PopStateEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'PopStateEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get state() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get state' called on an object that is not a valid instance of PopStateEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"state\"];\n    }\n  }\n  Object.defineProperties(PopStateEvent.prototype, {\n    state: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"PopStateEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = PopStateEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: PopStateEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/PopStateEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"promise\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"object\"](value, { context: context + \" has member 'promise' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      throw new globalObject.TypeError(\"promise is required in 'PromiseRejectionEventInit'\");\n    }\n  }\n\n  {\n    const key = \"reason\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"any\"](value, { context: context + \" has member 'reason' that\", globals: globalObject });\n\n      ret[key] = value;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nclass PromiseRejectionEventImpl extends EventImpl {}\n\n// Cannot use the usual pattern because `promise` is required.\nPromiseRejectionEventImpl.defaultInit = {\n  __proto__: null,\n  reason: undefined\n};\n\nmodule.exports = {\n  implementation: PromiseRejectionEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst PromiseRejectionEventInit = require(\"./PromiseRejectionEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"PromiseRejectionEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'PromiseRejectionEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"PromiseRejectionEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class PromiseRejectionEvent extends globalObject.Event {\n    constructor(type, eventInitDict) {\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'PromiseRejectionEvent': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'PromiseRejectionEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = PromiseRejectionEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'PromiseRejectionEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get promise() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get promise' called on an object that is not a valid instance of PromiseRejectionEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"promise\"];\n    }\n\n    get reason() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get reason' called on an object that is not a valid instance of PromiseRejectionEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"reason\"];\n    }\n  }\n  Object.defineProperties(PromiseRejectionEvent.prototype, {\n    promise: { enumerable: true },\n    reason: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"PromiseRejectionEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = PromiseRejectionEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: PromiseRejectionEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/PromiseRejectionEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"lengthComputable\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'lengthComputable' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"loaded\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long long\"](value, {\n        context: context + \" has member 'loaded' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"total\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long long\"](value, {\n        context: context + \" has member 'total' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst EventImpl = require(\"./Event-impl\").implementation;\n\nconst ProgressEventInit = require(\"../../../generated/idl/ProgressEventInit\");\n\nclass ProgressEventImpl extends EventImpl {\n\n}\nProgressEventImpl.defaultInit = ProgressEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: ProgressEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst ProgressEventInit = require(\"./ProgressEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"ProgressEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'ProgressEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"ProgressEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"DedicatedWorker\", \"SharedWorker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class ProgressEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'ProgressEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'ProgressEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = ProgressEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'ProgressEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get lengthComputable() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lengthComputable' called on an object that is not a valid instance of ProgressEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"lengthComputable\"];\n    }\n\n    get loaded() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get loaded' called on an object that is not a valid instance of ProgressEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"loaded\"];\n    }\n\n    get total() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get total' called on an object that is not a valid instance of ProgressEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"total\"];\n    }\n  }\n  Object.defineProperties(ProgressEvent.prototype, {\n    lengthComputable: { enumerable: true },\n    loaded: { enumerable: true },\n    total: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"ProgressEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = ProgressEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: ProgressEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/ProgressEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventInit = require(\"./EventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  EventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"elapsedTime\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, {\n        context: context + \" has member 'elapsedTime' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n\n  {\n    const key = \"propertyName\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, {\n        context: context + \" has member 'propertyName' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"pseudoElement\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, {\n        context: context + \" has member 'pseudoElement' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst EventImpl = require(\"./Event-impl\").implementation;\nconst TransitionEventInit = require(\"../../../generated/idl/TransitionEventInit\");\n\nclass TransitionEventImpl extends EventImpl {}\nTransitionEventImpl.defaultInit = TransitionEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: TransitionEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst TransitionEventInit = require(\"./TransitionEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst Event = require(\"./Event.js\");\n\nconst interfaceName = \"TransitionEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'TransitionEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"TransitionEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Event._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class TransitionEvent extends globalObject.Event {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'TransitionEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'TransitionEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = TransitionEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'TransitionEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get propertyName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get propertyName' called on an object that is not a valid instance of TransitionEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"propertyName\"]);\n    }\n\n    get elapsedTime() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get elapsedTime' called on an object that is not a valid instance of TransitionEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"elapsedTime\"];\n    }\n\n    get pseudoElement() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pseudoElement' called on an object that is not a valid instance of TransitionEvent.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"pseudoElement\"]);\n    }\n  }\n  Object.defineProperties(TransitionEvent.prototype, {\n    propertyName: { enumerable: true },\n    elapsedTime: { enumerable: true },\n    pseudoElement: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"TransitionEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = TransitionEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: TransitionEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/TransitionEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst UIEventInit = require(\"./UIEventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  UIEventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"data\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (value === null || value === undefined) {\n        value = null;\n      } else {\n        value = conversions[\"DOMString\"](value, {\n          context: context + \" has member 'data' that\",\n          globals: globalObject\n        });\n      }\n      ret[key] = value;\n    } else {\n      ret[key] = null;\n    }\n  }\n\n  {\n    const key = \"inputType\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, {\n        context: context + \" has member 'inputType' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = \"\";\n    }\n  }\n\n  {\n    const key = \"isComposing\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'isComposing' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst UIEventImpl = require(\"./UIEvent-impl\").implementation;\nconst InputEventInit = require(\"../../../generated/idl/InputEventInit\");\n\n// https://w3c.github.io/uievents/#interface-inputevent\nclass InputEventImpl extends UIEventImpl { }\nInputEventImpl.defaultInit = InputEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: InputEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst InputEventInit = require(\"./InputEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst UIEvent = require(\"./UIEvent.js\");\n\nconst interfaceName = \"InputEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'InputEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"InputEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  UIEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class InputEvent extends globalObject.UIEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'InputEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'InputEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = InputEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'InputEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get data() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get data' called on an object that is not a valid instance of InputEvent.\");\n      }\n\n      return esValue[implSymbol][\"data\"];\n    }\n\n    get isComposing() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get isComposing' called on an object that is not a valid instance of InputEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"isComposing\"];\n    }\n\n    get inputType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get inputType' called on an object that is not a valid instance of InputEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"inputType\"];\n    }\n  }\n  Object.defineProperties(InputEvent.prototype, {\n    data: { enumerable: true },\n    isComposing: { enumerable: true },\n    inputType: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"InputEvent\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = InputEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: InputEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/InputEvent-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst MouseEventInit = require(\"./MouseEventInit.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  MouseEventInit._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"deltaMode\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'deltaMode' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"deltaX\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'deltaX' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n\n  {\n    const key = \"deltaY\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'deltaY' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n\n  {\n    const key = \"deltaZ\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"double\"](value, { context: context + \" has member 'deltaZ' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0.0;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst MouseEventImpl = require(\"./MouseEvent-impl\").implementation;\n\nconst WheelEventInit = require(\"../../../generated/idl/WheelEventInit\");\n\nclass WheelEventImpl extends MouseEventImpl {}\nWheelEventImpl.defaultInit = WheelEventInit.convert(undefined, undefined);\n\nmodule.exports = {\n  implementation: WheelEventImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst WheelEventInit = require(\"./WheelEventInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst MouseEvent = require(\"./MouseEvent.js\");\n\nconst interfaceName = \"WheelEvent\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'WheelEvent'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"WheelEvent\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  MouseEvent._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class WheelEvent extends globalObject.MouseEvent {\n    constructor(type) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'WheelEvent': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to construct 'WheelEvent': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = WheelEventInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'WheelEvent': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get deltaX() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get deltaX' called on an object that is not a valid instance of WheelEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"deltaX\"];\n    }\n\n    get deltaY() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get deltaY' called on an object that is not a valid instance of WheelEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"deltaY\"];\n    }\n\n    get deltaZ() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get deltaZ' called on an object that is not a valid instance of WheelEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"deltaZ\"];\n    }\n\n    get deltaMode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get deltaMode' called on an object that is not a valid instance of WheelEvent.\"\n        );\n      }\n\n      return esValue[implSymbol][\"deltaMode\"];\n    }\n  }\n  Object.defineProperties(WheelEvent.prototype, {\n    deltaX: { enumerable: true },\n    deltaY: { enumerable: true },\n    deltaZ: { enumerable: true },\n    deltaMode: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"WheelEvent\", configurable: true },\n    DOM_DELTA_PIXEL: { value: 0x00, enumerable: true },\n    DOM_DELTA_LINE: { value: 0x01, enumerable: true },\n    DOM_DELTA_PAGE: { value: 0x02, enumerable: true }\n  });\n  Object.defineProperties(WheelEvent, {\n    DOM_DELTA_PIXEL: { value: 0x00, enumerable: true },\n    DOM_DELTA_LINE: { value: 0x01, enumerable: true },\n    DOM_DELTA_PAGE: { value: 0x02, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = WheelEvent;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: WheelEvent\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/events/WheelEvent-impl.js\");\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/window-object.html#browser-interface-elements\nclass BarPropImpl {}\n\n// Since many BarProps do not apply to modern browsers,\n// returning true in all cases seems to be common practice.\nBarPropImpl.prototype.visible = true;\n\nexports.implementation = BarPropImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"BarProp\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'BarProp'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"BarProp\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class BarProp {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get visible() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get visible' called on an object that is not a valid instance of BarProp.\");\n      }\n\n      return esValue[implSymbol][\"visible\"];\n    }\n  }\n  Object.defineProperties(BarProp.prototype, {\n    visible: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"BarProp\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = BarProp;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: BarProp\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/window/BarProp-impl.js\");\n","\"use strict\";\n\n// https://html.spec.whatwg.org/multipage/obsolete.html#dom-external\nexports.implementation = class ExternalImpl {\n  // The AddSearchProvider() and IsSearchProviderInstalled() methods must do nothing\n  AddSearchProvider() {}\n\n  IsSearchProviderInstalled() {}\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"External\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'External'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"External\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class External {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    AddSearchProvider() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'AddSearchProvider' called on an object that is not a valid instance of External.\"\n        );\n      }\n\n      return esValue[implSymbol].AddSearchProvider();\n    }\n\n    IsSearchProviderInstalled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'IsSearchProviderInstalled' called on an object that is not a valid instance of External.\"\n        );\n      }\n\n      return esValue[implSymbol].IsSearchProviderInstalled();\n    }\n  }\n  Object.defineProperties(External.prototype, {\n    AddSearchProvider: { enumerable: true },\n    IsSearchProviderInstalled: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"External\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = External;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: External\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/window/External-impl.js\");\n","\"use strict\";\n\n// https://drafts.csswg.org/cssom-view-1/#the-screen-interface\nclass ScreenImpl {}\n\nScreenImpl.prototype.availWidth = 0;\nScreenImpl.prototype.availHeight = 0;\nScreenImpl.prototype.width = 0;\nScreenImpl.prototype.height = 0;\nScreenImpl.prototype.colorDepth = 24;\nScreenImpl.prototype.pixelDepth = 24;\n\nexports.implementation = ScreenImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Screen\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Screen'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Screen\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Screen {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get availWidth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get availWidth' called on an object that is not a valid instance of Screen.\"\n        );\n      }\n\n      return esValue[implSymbol][\"availWidth\"];\n    }\n\n    get availHeight() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get availHeight' called on an object that is not a valid instance of Screen.\"\n        );\n      }\n\n      return esValue[implSymbol][\"availHeight\"];\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get width' called on an object that is not a valid instance of Screen.\");\n      }\n\n      return esValue[implSymbol][\"width\"];\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get height' called on an object that is not a valid instance of Screen.\");\n      }\n\n      return esValue[implSymbol][\"height\"];\n    }\n\n    get colorDepth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get colorDepth' called on an object that is not a valid instance of Screen.\"\n        );\n      }\n\n      return esValue[implSymbol][\"colorDepth\"];\n    }\n\n    get pixelDepth() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get pixelDepth' called on an object that is not a valid instance of Screen.\"\n        );\n      }\n\n      return esValue[implSymbol][\"pixelDepth\"];\n    }\n  }\n  Object.defineProperties(Screen.prototype, {\n    availWidth: { enumerable: true },\n    availHeight: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    colorDepth: { enumerable: true },\n    pixelDepth: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Screen\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Screen;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Screen\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/window/Screen-impl.js\");\n","\"use strict\";\n\nconst EventTargetImpl = require(\"../events/EventTarget-impl\").implementation;\n\nclass PerformanceImpl extends EventTargetImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this.timeOrigin = privateData.timeOrigin;\n    this._nowAtTimeOrigin = privateData.nowAtTimeOrigin;\n  }\n\n  now() {\n    return performance.now() - this._nowAtTimeOrigin;\n  }\n\n  toJSON() {\n    return { timeOrigin: this.timeOrigin };\n  }\n}\n\nexports.implementation = PerformanceImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst EventTarget = require(\"./EventTarget.js\");\n\nconst interfaceName = \"Performance\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Performance'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Performance\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  EventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Performance extends globalObject.EventTarget {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    now() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'now' called on an object that is not a valid instance of Performance.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].now());\n    }\n\n    toJSON() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'toJSON' called on an object that is not a valid instance of Performance.\");\n      }\n\n      return esValue[implSymbol].toJSON();\n    }\n\n    get timeOrigin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get timeOrigin' called on an object that is not a valid instance of Performance.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"timeOrigin\"]);\n    }\n  }\n  Object.defineProperties(Performance.prototype, {\n    now: { enumerable: true },\n    toJSON: { enumerable: true },\n    timeOrigin: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Performance\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Performance;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Performance\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/hr-time/Performance-impl.js\");\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils\");\n\nexports.implementation = class PluginArray {\n  refresh() {}\n\n  get length() {\n    return 0;\n  }\n\n  item() {\n    return null;\n  }\n\n  namedItem() {\n    return null;\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    return [];\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"PluginArray\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'PluginArray'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"PluginArray\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class PluginArray {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    refresh() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'refresh' called on an object that is not a valid instance of PluginArray.\");\n      }\n\n      return esValue[implSymbol].refresh();\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of PluginArray.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'PluginArray': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'PluginArray': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].item(...args);\n    }\n\n    namedItem(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'namedItem' called on an object that is not a valid instance of PluginArray.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'namedItem' on 'PluginArray': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'namedItem' on 'PluginArray': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].namedItem(...args);\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of PluginArray.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(PluginArray.prototype, {\n    refresh: { enumerable: true },\n    item: { enumerable: true },\n    namedItem: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"PluginArray\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = PluginArray;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: PluginArray\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/navigator/PluginArray-impl.js\");\n","\"use strict\";\n\nconst idlUtils = require(\"../../../generated/idl/utils\");\n\nexports.implementation = class MimeTypeArray {\n  get length() {\n    return 0;\n  }\n\n  item() {\n    return null;\n  }\n\n  namedItem() {\n    return null;\n  }\n\n  get [idlUtils.supportedPropertyIndices]() {\n    return [];\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"MimeTypeArray\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'MimeTypeArray'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"MimeTypeArray\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class MimeTypeArray {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of MimeTypeArray.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'MimeTypeArray': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'MimeTypeArray': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].item(...args);\n    }\n\n    namedItem(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'namedItem' called on an object that is not a valid instance of MimeTypeArray.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'namedItem' on 'MimeTypeArray': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'namedItem' on 'MimeTypeArray': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].namedItem(...args);\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get length' called on an object that is not a valid instance of MimeTypeArray.\"\n        );\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(MimeTypeArray.prototype, {\n    item: { enumerable: true },\n    namedItem: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"MimeTypeArray\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = MimeTypeArray;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: MimeTypeArray\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      const indexedValue = target[implSymbol].item(index);\n      if (indexedValue !== null) {\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !(target[implSymbol].item(index) !== null);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/navigator/MimeTypeArray-impl.js\");\n","\"use strict\";\n\nexports.implementation = class NavigatorIDImpl {\n  get appCodeName() {\n    return \"Mozilla\";\n  }\n\n  get appName() {\n    return \"Netscape\";\n  }\n\n  get appVersion() {\n    return \"4.0\";\n  }\n\n  get platform() {\n    return \"\";\n  }\n\n  get product() {\n    return \"Gecko\";\n  }\n\n  get productSub() {\n    return \"20030107\";\n  }\n\n  // see Navigator constructor for userAgent\n\n  get vendor() {\n    return \"Apple Computer, Inc.\";\n  }\n\n  get vendorSub() {\n    return \"\";\n  }\n};\n","\"use strict\";\n\nexports.implementation = class NavigatorLanguageImpl {\n  get language() {\n    return \"en-US\";\n  }\n\n  // See Navigator constructor for languages\n};\n","\"use strict\";\n\nexports.implementation = class NavigatorOnLineImpl {\n  get onLine() {\n    return true;\n  }\n};\n","\"use strict\";\n\nexports.implementation = class NavigatorCookiesImpl {\n  get cookieEnabled() {\n    return true;\n  }\n};\n","\"use strict\";\n\nexports.implementation = class NavigatorPluginsImpl {\n  // plugins and mimeTypes are implemented in Navigator-impl.js\n  javaEnabled() {\n    return false;\n  }\n};\n","\"use strict\";\nconst os = require(\"os\");\n\nexports.implementation = class NavigatorConcurrentHardwareImpl {\n  get hardwareConcurrency() {\n    return os.cpus().length;\n  }\n};\n","\"use strict\";\nconst { mixin } = require(\"../../utils\");\nconst PluginArray = require(\"../../../generated/idl/PluginArray\");\nconst MimeTypeArray = require(\"../../../generated/idl/MimeTypeArray\");\nconst NavigatorIDImpl = require(\"./NavigatorID-impl\").implementation;\nconst NavigatorLanguageImpl = require(\"./NavigatorLanguage-impl\").implementation;\nconst NavigatorOnLineImpl = require(\"./NavigatorOnLine-impl\").implementation;\nconst NavigatorCookiesImpl = require(\"./NavigatorCookies-impl\").implementation;\nconst NavigatorPluginsImpl = require(\"./NavigatorPlugins-impl\").implementation;\nconst NavigatorConcurrentHardwareImpl = require(\"./NavigatorConcurrentHardware-impl\").implementation;\n\nclass NavigatorImpl {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n    this.userAgent = globalObject._userAgent;\n    this.languages = Object.freeze([\"en-US\", \"en\"]);\n    this.plugins = PluginArray.create(this._globalObject);\n    this.mimeTypes = MimeTypeArray.create(this._globalObject);\n  }\n}\n\nmixin(NavigatorImpl.prototype, NavigatorIDImpl.prototype);\nmixin(NavigatorImpl.prototype, NavigatorLanguageImpl.prototype);\nmixin(NavigatorImpl.prototype, NavigatorOnLineImpl.prototype);\nmixin(NavigatorImpl.prototype, NavigatorCookiesImpl.prototype);\nmixin(NavigatorImpl.prototype, NavigatorPluginsImpl.prototype);\nmixin(NavigatorImpl.prototype, NavigatorConcurrentHardwareImpl.prototype);\n\nexports.implementation = NavigatorImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Navigator\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Navigator'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Navigator\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Navigator {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    javaEnabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'javaEnabled' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol].javaEnabled();\n    }\n\n    get appCodeName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get appCodeName' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"appCodeName\"];\n    }\n\n    get appName() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get appName' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"appName\"];\n    }\n\n    get appVersion() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get appVersion' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"appVersion\"];\n    }\n\n    get platform() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get platform' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"platform\"];\n    }\n\n    get product() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get product' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"product\"];\n    }\n\n    get productSub() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get productSub' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"productSub\"];\n    }\n\n    get userAgent() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get userAgent' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"userAgent\"];\n    }\n\n    get vendor() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get vendor' called on an object that is not a valid instance of Navigator.\");\n      }\n\n      return esValue[implSymbol][\"vendor\"];\n    }\n\n    get vendorSub() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get vendorSub' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"vendorSub\"];\n    }\n\n    get language() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get language' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"language\"];\n    }\n\n    get languages() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get languages' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"languages\"]);\n    }\n\n    get onLine() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onLine' called on an object that is not a valid instance of Navigator.\");\n      }\n\n      return esValue[implSymbol][\"onLine\"];\n    }\n\n    get cookieEnabled() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get cookieEnabled' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"cookieEnabled\"];\n    }\n\n    get plugins() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get plugins' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"plugins\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"plugins\"]);\n      });\n    }\n\n    get mimeTypes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get mimeTypes' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"mimeTypes\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"mimeTypes\"]);\n      });\n    }\n\n    get hardwareConcurrency() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get hardwareConcurrency' called on an object that is not a valid instance of Navigator.\"\n        );\n      }\n\n      return esValue[implSymbol][\"hardwareConcurrency\"];\n    }\n  }\n  Object.defineProperties(Navigator.prototype, {\n    javaEnabled: { enumerable: true },\n    appCodeName: { enumerable: true },\n    appName: { enumerable: true },\n    appVersion: { enumerable: true },\n    platform: { enumerable: true },\n    product: { enumerable: true },\n    productSub: { enumerable: true },\n    userAgent: { enumerable: true },\n    vendor: { enumerable: true },\n    vendorSub: { enumerable: true },\n    language: { enumerable: true },\n    languages: { enumerable: true },\n    onLine: { enumerable: true },\n    cookieEnabled: { enumerable: true },\n    plugins: { enumerable: true },\n    mimeTypes: { enumerable: true },\n    hardwareConcurrency: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Navigator\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Navigator;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Navigator\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/navigator/Navigator-impl.js\");\n","\"use strict\";\n\nconst nodeCrypto = require(\"crypto\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\n// https://w3c.github.io/webcrypto/#crypto-interface\nclass CryptoImpl {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  // https://w3c.github.io/webcrypto/#Crypto-method-getRandomValues\n  getRandomValues(array) {\n    const typeName = getTypedArrayTypeName(array);\n    if (!(typeName === \"Int8Array\" ||\n        typeName === \"Uint8Array\" ||\n        typeName === \"Uint8ClampedArray\" ||\n        typeName === \"Int16Array\" ||\n        typeName === \"Uint16Array\" ||\n        typeName === \"Int32Array\" ||\n        typeName === \"Uint32Array\" ||\n        typeName === \"BigInt64Array\" ||\n        typeName === \"BigUint64Array\")) {\n      throw DOMException.create(this._globalObject, [\n        `getRandomValues() only accepts integer typed arrays`,\n        \"TypeMismatchError\"\n      ]);\n    }\n\n    if (array.byteLength > 65536) {\n      throw DOMException.create(this._globalObject, [\n        `getRandomValues() cannot generate more than 65536 bytes of random values; ` +\n        `${array.byteLength} bytes were requested`,\n        \"QuotaExceededError\"\n      ]);\n    }\n    nodeCrypto.randomFillSync(array);\n    return array;\n  }\n\n  // https://w3c.github.io/webcrypto/#Crypto-method-randomUUID\n  randomUUID() {\n    return nodeCrypto.randomUUID();\n  }\n}\n\nexports.implementation = CryptoImpl;\n\n// See #3395. Subclasses of TypedArrays should properly work, but we can't rely\n// on instanceof because Uint8Array may be different across different windows -\n// which can happen in JSDOM when running { runScripts: \"dangerously\" }. As a\n// solution, we imitate the behavior of instanceof by walking the proottype\n// chain.\nfunction getTypedArrayTypeName(array) {\n  const target = array.constructor;\n  const chain = [target.name];\n  let proto = Object.getPrototypeOf(target);\n  while (proto) {\n    chain.push(proto.name);\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  while (chain.length > 0 && chain[chain.length - 1] !== \"TypedArray\") {\n    chain.pop();\n  }\n  chain.reverse();\n  return chain[1];\n}\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Crypto\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Crypto'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Crypto\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Crypto {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    getRandomValues(array) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getRandomValues' called on an object that is not a valid instance of Crypto.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getRandomValues' on 'Crypto': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (ArrayBuffer.isView(curArg)) {\n          curArg = conversions[\"ArrayBufferView\"](curArg, {\n            context: \"Failed to execute 'getRandomValues' on 'Crypto': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          throw new globalObject.TypeError(\n            \"Failed to execute 'getRandomValues' on 'Crypto': parameter 1\" + \" is not of any supported type.\"\n          );\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getRandomValues(...args);\n    }\n\n    randomUUID() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'randomUUID' called on an object that is not a valid instance of Crypto.\");\n      }\n\n      return esValue[implSymbol].randomUUID();\n    }\n  }\n  Object.defineProperties(Crypto.prototype, {\n    getRandomValues: { enumerable: true },\n    randomUUID: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Crypto\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Crypto;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Crypto\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/crypto/Crypto-impl.js\");\n","\"use strict\";\n\nexports.implementation = class Plugin {};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Plugin\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Plugin'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Plugin\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nfunction makeProxy(wrapper, globalObject) {\n  let proxyHandler = proxyHandlerCache.get(globalObject);\n  if (proxyHandler === undefined) {\n    proxyHandler = new ProxyHandler(globalObject);\n    proxyHandlerCache.set(globalObject, proxyHandler);\n  }\n  return new Proxy(wrapper, proxyHandler);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  let wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper = makeProxy(wrapper, globalObject);\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Plugin {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    item(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'item' called on an object that is not a valid instance of Plugin.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'item' on 'Plugin': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'item' on 'Plugin': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].item(...args);\n    }\n\n    namedItem(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'namedItem' called on an object that is not a valid instance of Plugin.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'namedItem' on 'Plugin': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'namedItem' on 'Plugin': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].namedItem(...args);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get name' called on an object that is not a valid instance of Plugin.\");\n      }\n\n      return esValue[implSymbol][\"name\"];\n    }\n\n    get description() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get description' called on an object that is not a valid instance of Plugin.\"\n        );\n      }\n\n      return esValue[implSymbol][\"description\"];\n    }\n\n    get filename() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get filename' called on an object that is not a valid instance of Plugin.\");\n      }\n\n      return esValue[implSymbol][\"filename\"];\n    }\n\n    get length() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get length' called on an object that is not a valid instance of Plugin.\");\n      }\n\n      return esValue[implSymbol][\"length\"];\n    }\n  }\n  Object.defineProperties(Plugin.prototype, {\n    item: { enumerable: true },\n    namedItem: { enumerable: true },\n    name: { enumerable: true },\n    description: { enumerable: true },\n    filename: { enumerable: true },\n    length: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Plugin\", configurable: true },\n    [Symbol.iterator]: { value: globalObject.Array.prototype[Symbol.iterator], configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = Plugin;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Plugin\n  });\n};\n\nconst proxyHandlerCache = new WeakMap();\nclass ProxyHandler {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  get(target, P, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.get(target, P, receiver);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc === undefined) {\n      const parent = Object.getPrototypeOf(target);\n      if (parent === null) {\n        return undefined;\n      }\n      return Reflect.get(target, P, receiver);\n    }\n    if (!desc.get && !desc.set) {\n      return desc.value;\n    }\n    const getter = desc.get;\n    if (getter === undefined) {\n      return undefined;\n    }\n    return Reflect.apply(getter, receiver, []);\n  }\n\n  has(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.has(target, P);\n    }\n    const desc = this.getOwnPropertyDescriptor(target, P);\n    if (desc !== undefined) {\n      return true;\n    }\n    const parent = Object.getPrototypeOf(target);\n    if (parent !== null) {\n      return Reflect.has(parent, P);\n    }\n    return false;\n  }\n\n  ownKeys(target) {\n    const keys = new Set();\n\n    for (const key of target[implSymbol][utils.supportedPropertyIndices]) {\n      keys.add(`${key}`);\n    }\n\n    for (const key of Reflect.ownKeys(target)) {\n      keys.add(key);\n    }\n    return [...keys];\n  }\n\n  getOwnPropertyDescriptor(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    let ignoreNamedProps = false;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n\n      if (target[implSymbol][utils.supportsPropertyIndex](index)) {\n        const indexedValue = target[implSymbol].item(index);\n        return {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n      ignoreNamedProps = true;\n    }\n\n    return Reflect.getOwnPropertyDescriptor(target, P);\n  }\n\n  set(target, P, V, receiver) {\n    if (typeof P === \"symbol\") {\n      return Reflect.set(target, P, V, receiver);\n    }\n    // The `receiver` argument refers to the Proxy exotic object or an object\n    // that inherits from it, whereas `target` refers to the Proxy target:\n    if (target[implSymbol][utils.wrapperSymbol] === receiver) {\n      const globalObject = this._globalObject;\n    }\n    let ownDesc;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n\n      if (target[implSymbol][utils.supportsPropertyIndex](index)) {\n        const indexedValue = target[implSymbol].item(index);\n        ownDesc = {\n          writable: false,\n          enumerable: true,\n          configurable: true,\n          value: utils.tryWrapperForImpl(indexedValue)\n        };\n      }\n    }\n\n    if (ownDesc === undefined) {\n      ownDesc = Reflect.getOwnPropertyDescriptor(target, P);\n    }\n    return utils.ordinarySetWithOwnDescriptor(target, P, V, receiver, ownDesc);\n  }\n\n  defineProperty(target, P, desc) {\n    if (typeof P === \"symbol\") {\n      return Reflect.defineProperty(target, P, desc);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      return false;\n    }\n\n    return Reflect.defineProperty(target, P, desc);\n  }\n\n  deleteProperty(target, P) {\n    if (typeof P === \"symbol\") {\n      return Reflect.deleteProperty(target, P);\n    }\n\n    const globalObject = this._globalObject;\n\n    if (utils.isArrayIndexPropName(P)) {\n      const index = P >>> 0;\n      return !target[implSymbol][utils.supportsPropertyIndex](index);\n    }\n\n    return Reflect.deleteProperty(target, P);\n  }\n\n  preventExtensions() {\n    return false;\n  }\n}\n\nconst Impl = require(\"../../jsdom/living/navigator/Plugin-impl.js\");\n","\"use strict\";\n\nexports.implementation = class MimeType {};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"MimeType\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'MimeType'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"MimeType\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class MimeType {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get type' called on an object that is not a valid instance of MimeType.\");\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n\n    get description() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get description' called on an object that is not a valid instance of MimeType.\"\n        );\n      }\n\n      return esValue[implSymbol][\"description\"];\n    }\n\n    get suffixes() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get suffixes' called on an object that is not a valid instance of MimeType.\"\n        );\n      }\n\n      return esValue[implSymbol][\"suffixes\"];\n    }\n\n    get enabledPlugin() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get enabledPlugin' called on an object that is not a valid instance of MimeType.\"\n        );\n      }\n\n      return esValue[implSymbol][\"enabledPlugin\"];\n    }\n  }\n  Object.defineProperties(MimeType.prototype, {\n    type: { enumerable: true },\n    description: { enumerable: true },\n    suffixes: { enumerable: true },\n    enabledPlugin: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"MimeType\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = MimeType;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: MimeType\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/navigator/MimeType-impl.js\");\n","\"use strict\";\n\nconst { labelToName, legacyHookDecode } = require(\"@exodus/bytes/encoding.js\");\nconst { toBase64 } = require(\"@exodus/bytes/base64.js\");\nconst { MIMEType } = require(\"whatwg-mimetype\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst EventTargetImpl = require(\"../events/EventTarget-impl\").implementation;\nconst ProgressEvent = require(\"../../../generated/idl/ProgressEvent\");\nconst { setupForSimpleEventAccessors } = require(\"../helpers/create-event-accessor\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst { copyToArrayBufferInTargetRealm } = require(\"../helpers/binary-data\");\n\nconst READY_STATES = Object.freeze({\n  EMPTY: 0,\n  LOADING: 1,\n  DONE: 2\n});\n\nconst events = [\"loadstart\", \"progress\", \"load\", \"abort\", \"error\", \"loadend\"];\n\nclass FileReaderImpl extends EventTargetImpl {\n  constructor(globalObject, args, privateData) {\n    super(globalObject, args, privateData);\n\n    this.error = null;\n    this.readyState = READY_STATES.EMPTY;\n    this.result = null;\n\n    this._globalObject = globalObject;\n    this._ownerDocument = globalObject.document;\n    this._terminated = false;\n  }\n\n  readAsArrayBuffer(file) {\n    this._readFile(file, \"buffer\");\n  }\n  readAsBinaryString(file) {\n    this._readFile(file, \"binaryString\");\n  }\n  readAsDataURL(file) {\n    this._readFile(file, \"dataURL\");\n  }\n  readAsText(file, encodingLabel) {\n    this._readFile(file, \"text\", labelToName(encodingLabel) || \"UTF-8\");\n  }\n\n  abort() {\n    if (this.readyState === READY_STATES.EMPTY || this.readyState === READY_STATES.DONE) {\n      this.result = null;\n      return;\n    }\n\n    if (this.readyState === READY_STATES.LOADING) {\n      this.readyState = READY_STATES.DONE;\n      this.result = null;\n    }\n\n    this._terminated = true;\n    this._fireProgressEvent(\"abort\");\n    this._fireProgressEvent(\"loadend\");\n  }\n\n  _fireProgressEvent(name, props) {\n    fireAnEvent(name, this, ProgressEvent, props);\n  }\n\n  _readFile(file, format, encodingLabel) {\n    if (this.readyState === READY_STATES.LOADING) {\n      throw DOMException.create(this._globalObject, [\n        \"The object is in an invalid state.\",\n        \"InvalidStateError\"\n      ]);\n    }\n\n    this.readyState = READY_STATES.LOADING;\n    this.result = null;\n    this.error = null;\n\n    // Multiple separate tasks are necessary to match the spec's separate \"queue a task\" invocations.\n    setImmediate(() => {\n      if (this._terminated) {\n        this._terminated = false;\n        return;\n      }\n\n      this._fireProgressEvent(\"loadstart\");\n\n      setImmediate(() => {\n        if (this._terminated) {\n          this._terminated = false;\n          return;\n        }\n\n        if (file._bytes.length > 0) {\n          this._fireProgressEvent(\"progress\", {\n            lengthComputable: !isNaN(file.size),\n            total: file.size,\n            loaded: file._bytes.length\n          });\n        }\n\n        setImmediate(() => {\n          if (this._terminated) {\n            this._terminated = false;\n            return;\n          }\n\n          this._setResult(file, format, encodingLabel);\n          this.readyState = READY_STATES.DONE;\n          this._fireProgressEvent(\"load\");\n          this._fireProgressEvent(\"loadend\");\n        });\n      });\n    });\n  }\n\n  _setResult(file, format, encodingLabel) {\n    switch (format) {\n      case \"binaryString\": {\n        // Convert Uint8Array to binary string (each byte as a code point)\n        let binaryString = \"\";\n        for (let i = 0; i < file._bytes.length; i++) {\n          binaryString += String.fromCharCode(file._bytes[i]);\n        }\n        this.result = binaryString;\n        break;\n      }\n      case \"dataURL\": {\n        // Spec seems very unclear here; see https://github.com/w3c/FileAPI/issues/104.\n        const contentType = MIMEType.parse(file.type) || \"application/octet-stream\";\n        this.result = `data:${contentType};base64,${toBase64(file._bytes)}`;\n        break;\n      }\n      case \"text\": {\n        this.result = legacyHookDecode(file._bytes, encodingLabel);\n        break;\n      }\n      case \"buffer\":\n      default: {\n        this.result = copyToArrayBufferInTargetRealm(file._bytes.buffer, this._globalObject);\n        break;\n      }\n    }\n  }\n}\nsetupForSimpleEventAccessors(FileReaderImpl.prototype, events);\n\nexports.implementation = FileReaderImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Blob = require(\"./Blob.js\");\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst EventTarget = require(\"./EventTarget.js\");\n\nconst interfaceName = \"FileReader\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'FileReader'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"FileReader\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  EventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class FileReader extends globalObject.EventTarget {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    readAsArrayBuffer(blob) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'readAsArrayBuffer' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'readAsArrayBuffer' on 'FileReader': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Blob.convert(globalObject, curArg, {\n          context: \"Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].readAsArrayBuffer(...args);\n    }\n\n    readAsBinaryString(blob) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'readAsBinaryString' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'readAsBinaryString' on 'FileReader': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Blob.convert(globalObject, curArg, {\n          context: \"Failed to execute 'readAsBinaryString' on 'FileReader': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].readAsBinaryString(...args);\n    }\n\n    readAsText(blob) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'readAsText' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'readAsText' on 'FileReader': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Blob.convert(globalObject, curArg, {\n          context: \"Failed to execute 'readAsText' on 'FileReader': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'readAsText' on 'FileReader': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].readAsText(...args);\n    }\n\n    readAsDataURL(blob) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'readAsDataURL' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'readAsDataURL' on 'FileReader': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Blob.convert(globalObject, curArg, {\n          context: \"Failed to execute 'readAsDataURL' on 'FileReader': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].readAsDataURL(...args);\n    }\n\n    abort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'abort' called on an object that is not a valid instance of FileReader.\");\n      }\n\n      return esValue[implSymbol].abort();\n    }\n\n    get readyState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readyState' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return esValue[implSymbol][\"readyState\"];\n    }\n\n    get result() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get result' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"result\"]);\n    }\n\n    get error() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get error' called on an object that is not a valid instance of FileReader.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"error\"]);\n    }\n\n    get onloadstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadstart' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadstart\"]);\n    }\n\n    set onloadstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadstart' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadstart' property on 'FileReader': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadstart\"] = V;\n    }\n\n    get onprogress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onprogress' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onprogress\"]);\n    }\n\n    set onprogress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onprogress' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onprogress' property on 'FileReader': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onprogress\"] = V;\n    }\n\n    get onload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onload' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onload\"]);\n    }\n\n    set onload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onload' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onload' property on 'FileReader': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onload\"] = V;\n    }\n\n    get onabort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onabort' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onabort\"]);\n    }\n\n    set onabort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onabort' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onabort' property on 'FileReader': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onabort\"] = V;\n    }\n\n    get onerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onerror' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onerror\"]);\n    }\n\n    set onerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onerror' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onerror' property on 'FileReader': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onerror\"] = V;\n    }\n\n    get onloadend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadend' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadend\"]);\n    }\n\n    set onloadend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadend' called on an object that is not a valid instance of FileReader.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadend' property on 'FileReader': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadend\"] = V;\n    }\n  }\n  Object.defineProperties(FileReader.prototype, {\n    readAsArrayBuffer: { enumerable: true },\n    readAsBinaryString: { enumerable: true },\n    readAsText: { enumerable: true },\n    readAsDataURL: { enumerable: true },\n    abort: { enumerable: true },\n    readyState: { enumerable: true },\n    result: { enumerable: true },\n    error: { enumerable: true },\n    onloadstart: { enumerable: true },\n    onprogress: { enumerable: true },\n    onload: { enumerable: true },\n    onabort: { enumerable: true },\n    onerror: { enumerable: true },\n    onloadend: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"FileReader\", configurable: true },\n    EMPTY: { value: 0, enumerable: true },\n    LOADING: { value: 1, enumerable: true },\n    DONE: { value: 2, enumerable: true }\n  });\n  Object.defineProperties(FileReader, {\n    EMPTY: { value: 0, enumerable: true },\n    LOADING: { value: 1, enumerable: true },\n    DONE: { value: 2, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = FileReader;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: FileReader\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/file-api/FileReader-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst BlobPropertyBag = require(\"./BlobPropertyBag.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  BlobPropertyBag._convertInherit(globalObject, obj, ret, { context });\n\n  {\n    const key = \"lastModified\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"long long\"](value, {\n        context: context + \" has member 'lastModified' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst BlobImpl = require(\"./Blob-impl\").implementation;\n\nexports.implementation = class FileImpl extends BlobImpl {\n  constructor(globalObject, [fileBits, fileName, options], privateData) {\n    super(globalObject, [fileBits, options], privateData);\n\n    this.name = fileName;\n    this.lastModified = \"lastModified\" in options ? options.lastModified : Date.now();\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Blob = require(\"./Blob.js\");\nconst FilePropertyBag = require(\"./FilePropertyBag.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"File\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'File'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"File\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  Blob._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class File extends globalObject.Blob {\n    constructor(fileBits, fileName) {\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (!utils.isObject(curArg)) {\n          throw new globalObject.TypeError(\"Failed to construct 'File': parameter 1\" + \" is not an iterable object.\");\n        } else {\n          const V = [];\n          const tmp = curArg;\n          for (let nextItem of tmp) {\n            if (Blob.is(nextItem)) {\n              nextItem = utils.implForWrapper(nextItem);\n            } else if (utils.isArrayBuffer(nextItem)) {\n              nextItem = conversions[\"ArrayBuffer\"](nextItem, {\n                context: \"Failed to construct 'File': parameter 1\" + \"'s element\",\n                globals: globalObject\n              });\n            } else if (ArrayBuffer.isView(nextItem)) {\n              nextItem = conversions[\"ArrayBufferView\"](nextItem, {\n                context: \"Failed to construct 'File': parameter 1\" + \"'s element\",\n                globals: globalObject\n              });\n            } else {\n              nextItem = conversions[\"USVString\"](nextItem, {\n                context: \"Failed to construct 'File': parameter 1\" + \"'s element\",\n                globals: globalObject\n              });\n            }\n            V.push(nextItem);\n          }\n          curArg = V;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to construct 'File': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        curArg = FilePropertyBag.convert(globalObject, curArg, { context: \"Failed to construct 'File': parameter 3\" });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get name() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get name' called on an object that is not a valid instance of File.\");\n      }\n\n      return esValue[implSymbol][\"name\"];\n    }\n\n    get lastModified() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get lastModified' called on an object that is not a valid instance of File.\"\n        );\n      }\n\n      return esValue[implSymbol][\"lastModified\"];\n    }\n  }\n  Object.defineProperties(File.prototype, {\n    name: { enumerable: true },\n    lastModified: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"File\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = File;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: File\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/file-api/File-impl.js\");\n","\"use strict\";\n\nconst enumerationValues = new Set([\n  \"text/html\",\n  \"text/xml\",\n  \"application/xml\",\n  \"application/xhtml+xml\",\n  \"image/svg+xml\"\n]);\nexports.enumerationValues = enumerationValues;\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  const string = `${value}`;\n  if (!enumerationValues.has(string)) {\n    throw new globalObject.TypeError(`${context} '${string}' is not a valid enumeration value for SupportedType`);\n  }\n  return string;\n};\n","\"use strict\";\n\nconst { parseIntoDocument } = require(\"../../browser/parser\");\n\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst Document = require(\"../../../generated/idl/Document\");\n\nexports.implementation = class DOMParserImpl {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  parseFromString(string, contentType) {\n    switch (String(contentType)) {\n      case \"text/html\": {\n        return this.createScriptingDisabledDocument(\"html\", contentType, string);\n      }\n\n      case \"text/xml\":\n      case \"application/xml\":\n      case \"application/xhtml+xml\":\n      case \"image/svg+xml\": {\n        try {\n          return this.createScriptingDisabledDocument(\"xml\", contentType, string);\n        } catch (error) {\n          const document = this.createScriptingDisabledDocument(\"xml\", contentType);\n          const element = document.createElementNS(\"http://www.mozilla.org/newlayout/xml/parsererror.xml\", \"parsererror\");\n\n          element.textContent = error.message;\n\n          document.appendChild(element);\n          return document;\n        }\n      }\n\n      default:\n        throw new TypeError(\"Invalid contentType\");\n    }\n  }\n\n  createScriptingDisabledDocument(parsingMode, contentType, string) {\n    const document = Document.createImpl(this._globalObject, [], {\n      options: {\n        parsingMode,\n        encoding: \"UTF-8\",\n        contentType,\n        readyState: \"complete\",\n        scriptingDisabled: true,\n        url: idlUtils.implForWrapper(this._globalObject._document).URL\n      }\n    });\n\n    if (string !== undefined) {\n      parseIntoDocument(string, document);\n    }\n\n    return document;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst SupportedType = require(\"./SupportedType.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DOMParser\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DOMParser'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DOMParser\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DOMParser {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    parseFromString(str, type) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'parseFromString' called on an object that is not a valid instance of DOMParser.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'parseFromString' on 'DOMParser': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'parseFromString' on 'DOMParser': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = SupportedType.convert(globalObject, curArg, {\n          context: \"Failed to execute 'parseFromString' on 'DOMParser': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].parseFromString(...args));\n    }\n  }\n  Object.defineProperties(DOMParser.prototype, {\n    parseFromString: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DOMParser\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = DOMParser;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DOMParser\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/domparsing/DOMParser-impl.js\");\n","\"use strict\";\nconst serialize = require(\"w3c-xmlserializer\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst utils = require(\"../../../generated/idl/utils\");\n\nexports.implementation = class XMLSerializerImpl {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n  }\n\n  serializeToString(root) {\n    try {\n      return serialize(utils.wrapperForImpl(root), { requireWellFormed: false });\n    } catch (e) {\n      throw DOMException.create(this._globalObject, [e.message, \"InvalidStateError\"]);\n    }\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Node = require(\"./Node.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"XMLSerializer\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'XMLSerializer'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"XMLSerializer\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class XMLSerializer {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    serializeToString(root) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'serializeToString' called on an object that is not a valid instance of XMLSerializer.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'serializeToString' on 'XMLSerializer': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'serializeToString' on 'XMLSerializer': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].serializeToString(...args);\n    }\n  }\n  Object.defineProperties(XMLSerializer.prototype, {\n    serializeToString: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"XMLSerializer\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = XMLSerializer;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: XMLSerializer\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/domparsing/XMLSerializer-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (typeof value !== \"function\") {\n    throw new globalObject.TypeError(context + \" is not a function\");\n  }\n\n  function invokeTheCallbackFunction(...args) {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    for (let i = 0; i < args.length; i++) {\n      args[i] = utils.tryWrapperForImpl(args[i]);\n    }\n\n    callResult = Reflect.apply(value, thisArg, args);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  }\n\n  invokeTheCallbackFunction.construct = (...args) => {\n    for (let i = 0; i < args.length; i++) {\n      args[i] = utils.tryWrapperForImpl(args[i]);\n    }\n\n    let callResult = Reflect.construct(value, args);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { closest } = require(\"../helpers/traversal\");\nconst { isDisabled, isButton, isSubmitButton } = require(\"../helpers/form-controls\");\nconst Blob = require(\"../../../generated/idl/Blob.js\");\nconst File = require(\"../../../generated/idl/File.js\");\nconst conversions = require(\"webidl-conversions\");\n\nexports.implementation = class FormDataImpl {\n  constructor(globalObject, args) {\n    this._globalObject = globalObject;\n    this._entries = [];\n\n    if (args[0] !== undefined) {\n      const [form, submitter = null] = args;\n      if (submitter !== null) {\n        if (!isSubmitButton(submitter)) {\n          throw new TypeError(\"The specified element is not a submit button\");\n        }\n        if (submitter.form !== form) {\n          throw DOMException.create(this._globalObject, [\n            \"The specified element is not owned by this form element\",\n            \"NotFoundError\"\n          ]);\n        }\n      }\n      this._entries = constructTheEntryList(form, submitter);\n    }\n  }\n\n  append(name, value, filename) {\n    const entry = createAnEntry(name, value, filename);\n    this._entries.push(entry);\n  }\n\n  delete(name) {\n    this._entries = this._entries.filter(entry => entry.name !== name);\n  }\n\n  get(name) {\n    const foundEntry = this._entries.find(entry => entry.name === name);\n    return foundEntry !== undefined ? idlUtils.tryWrapperForImpl(foundEntry.value) : null;\n  }\n\n  getAll(name) {\n    return this._entries.filter(entry => entry.name === name).map(entry => idlUtils.tryWrapperForImpl(entry.value));\n  }\n\n  has(name) {\n    return this._entries.findIndex(entry => entry.name === name) !== -1;\n  }\n\n  set(name, value, filename) {\n    const entry = createAnEntry(name, value, filename);\n\n    const foundIndex = this._entries.findIndex(e => e.name === name);\n    if (foundIndex !== -1) {\n      this._entries[foundIndex] = entry;\n      this._entries = this._entries.filter((e, i) => e.name !== name || i === foundIndex);\n    } else {\n      this._entries.push(entry);\n    }\n  }\n\n  * [Symbol.iterator]() {\n    for (const entry of this._entries) {\n      yield [entry.name, idlUtils.tryWrapperForImpl(entry.value)];\n    }\n  }\n};\n\nfunction createAnEntry(name, value, filename) {\n  const entry = { name };\n\n  // https://github.com/whatwg/xhr/issues/75\n\n  if (Blob.isImpl(value) && !File.isImpl(value)) {\n    const oldValue = value;\n    value = File.createImpl(value._globalObject, [\n      [],\n      \"blob\",\n      { type: oldValue.type }\n    ]);\n    // \"representing the same bytes\"\n    value._bytes = oldValue._bytes;\n  }\n\n  if (File.isImpl(value) && filename !== undefined) {\n    const oldValue = value;\n    value = File.createImpl(value._globalObject, [\n      [],\n      filename,\n      // spec makes no mention of `lastModified`; assume it is inherited\n      // (Chrome's behavior)\n      { type: oldValue.type, lastModified: oldValue.lastModified }\n    ]);\n    // \"representing the same bytes\"\n    value._bytes = oldValue._bytes;\n  }\n\n  entry.value = value;\n\n  return entry;\n}\n\nfunction constructTheEntryList(form, submitter) {\n  // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#constructing-the-form-data-set\n  // TODO: handle encoding\n  // TODO: handling \"constructing entry list\"\n\n  const controls = form._getSubmittableElementNodes();\n  const entryList = [];\n\n  for (const field of controls) {\n    if (closest(field, \"datalist\") !== null) {\n      continue;\n    }\n    if (isDisabled(field)) {\n      continue;\n    }\n    if (isButton(field) && field !== submitter) {\n      continue;\n    }\n    if (field.type === \"checkbox\" && field._checkedness === false) {\n      continue;\n    }\n    if (field.type === \"radio\" && field._checkedness === false) {\n      continue;\n    }\n    if (field.localName === \"object\") { // in jsdom, no objects are \"using a plugin\"\n      continue;\n    }\n\n    const name = field.getAttributeNS(null, \"name\");\n    if (field.localName === \"input\" && field.type === \"image\") {\n      const prefix = name ? `${name}.` : \"\";\n      const coordinate = field._selectedCoordinate ?? { x: 0, y: 0 };\n      appendAnEntry(entryList, `${prefix}x`, coordinate.x);\n      appendAnEntry(entryList, `${prefix}y`, coordinate.y);\n      continue;\n    }\n\n    // TODO: handle form-associated custom elements.\n\n    if (name === null || name === \"\") {\n      continue;\n    }\n\n    if (field.localName === \"select\") {\n      for (const option of field.options) {\n        if (option._selectedness === true && !isDisabled(field)) {\n          appendAnEntry(entryList, name, option._getValue());\n        }\n      }\n    } else if (field.localName === \"input\" && (field.type === \"checkbox\" || field.type === \"radio\")) {\n      const value = field.hasAttributeNS(null, \"value\") ? field.getAttributeNS(null, \"value\") : \"on\";\n      appendAnEntry(entryList, name, value);\n    } else if (field.type === \"file\") {\n      if (field.files.length === 0) {\n        const value = File.createImpl(form._globalObject, [[], \"\", { type: \"application/octet-stream\" }]);\n        appendAnEntry(entryList, name, value);\n      } else {\n        for (let i = 0; i < field.files.length; ++i) {\n          appendAnEntry(entryList, name, field.files.item(i));\n        }\n      }\n    } else {\n      appendAnEntry(entryList, name, field._getValue());\n    }\n\n    const dirname = field.getAttributeNS(null, \"dirname\");\n    if (dirname !== null && dirname !== \"\") {\n      const dir = \"ltr\"; // jsdom does not (yet?) implement actual directionality\n      appendAnEntry(entryList, dirname, dir);\n    }\n  }\n\n  // TODO: formdata event\n\n  return entryList;\n}\n\nfunction appendAnEntry(entryList, name, value) {\n  name = conversions.USVString(name);\n  if (!File.isImpl(value)) {\n    value = conversions.USVString(value);\n  }\n  const entry = createAnEntry(name, value);\n  entryList.push(entry);\n}\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst HTMLFormElement = require(\"./HTMLFormElement.js\");\nconst HTMLElement = require(\"./HTMLElement.js\");\nconst Blob = require(\"./Blob.js\");\nconst Function = require(\"./Function.js\");\nconst newObjectInRealm = utils.newObjectInRealm;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"FormData\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'FormData'.`);\n};\n\nexports.createDefaultIterator = (globalObject, target, kind) => {\n  const ctorRegistry = globalObject[ctorRegistrySymbol];\n  const iteratorPrototype = ctorRegistry[\"FormData Iterator\"];\n  const iterator = Object.create(iteratorPrototype);\n  Object.defineProperty(iterator, utils.iterInternalSymbol, {\n    value: { target, kind, index: 0 },\n    configurable: true\n  });\n  return iterator;\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"FormData\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class FormData {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = HTMLFormElement.convert(globalObject, curArg, {\n            context: \"Failed to construct 'FormData': parameter 1\"\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            curArg = HTMLElement.convert(globalObject, curArg, {\n              context: \"Failed to construct 'FormData': parameter 2\"\n            });\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    append(name, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'append' called on an object that is not a valid instance of FormData.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'append' on 'FormData': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      switch (arguments.length) {\n        case 2:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'append' on 'FormData': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            if (Blob.is(curArg)) {\n              {\n                let curArg = arguments[1];\n                curArg = Blob.convert(globalObject, curArg, {\n                  context: \"Failed to execute 'append' on 'FormData': parameter 2\"\n                });\n                args.push(curArg);\n              }\n            } else {\n              {\n                let curArg = arguments[1];\n                curArg = conversions[\"USVString\"](curArg, {\n                  context: \"Failed to execute 'append' on 'FormData': parameter 2\",\n                  globals: globalObject\n                });\n                args.push(curArg);\n              }\n            }\n          }\n          break;\n        default:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'append' on 'FormData': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = Blob.convert(globalObject, curArg, {\n              context: \"Failed to execute 'append' on 'FormData': parameter 2\"\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            if (curArg !== undefined) {\n              curArg = conversions[\"USVString\"](curArg, {\n                context: \"Failed to execute 'append' on 'FormData': parameter 3\",\n                globals: globalObject\n              });\n            }\n            args.push(curArg);\n          }\n      }\n      return esValue[implSymbol].append(...args);\n    }\n\n    delete(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'delete' called on an object that is not a valid instance of FormData.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'delete' on 'FormData': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'delete' on 'FormData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].delete(...args);\n    }\n\n    get(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get' called on an object that is not a valid instance of FormData.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'get' on 'FormData': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'get' on 'FormData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].get(...args));\n    }\n\n    getAll(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'getAll' called on an object that is not a valid instance of FormData.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getAll' on 'FormData': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'getAll' on 'FormData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getAll(...args));\n    }\n\n    has(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'has' called on an object that is not a valid instance of FormData.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'has' on 'FormData': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'has' on 'FormData': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].has(...args);\n    }\n\n    set(name, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set' called on an object that is not a valid instance of FormData.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'set' on 'FormData': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      switch (arguments.length) {\n        case 2:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'set' on 'FormData': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            if (Blob.is(curArg)) {\n              {\n                let curArg = arguments[1];\n                curArg = Blob.convert(globalObject, curArg, {\n                  context: \"Failed to execute 'set' on 'FormData': parameter 2\"\n                });\n                args.push(curArg);\n              }\n            } else {\n              {\n                let curArg = arguments[1];\n                curArg = conversions[\"USVString\"](curArg, {\n                  context: \"Failed to execute 'set' on 'FormData': parameter 2\",\n                  globals: globalObject\n                });\n                args.push(curArg);\n              }\n            }\n          }\n          break;\n        default:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'set' on 'FormData': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = Blob.convert(globalObject, curArg, {\n              context: \"Failed to execute 'set' on 'FormData': parameter 2\"\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            if (curArg !== undefined) {\n              curArg = conversions[\"USVString\"](curArg, {\n                context: \"Failed to execute 'set' on 'FormData': parameter 3\",\n                globals: globalObject\n              });\n            }\n            args.push(curArg);\n          }\n      }\n      return esValue[implSymbol].set(...args);\n    }\n\n    keys() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'keys' called on an object that is not a valid instance of FormData.\");\n      }\n      return exports.createDefaultIterator(globalObject, this, \"key\");\n    }\n\n    values() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'values' called on an object that is not a valid instance of FormData.\");\n      }\n      return exports.createDefaultIterator(globalObject, this, \"value\");\n    }\n\n    entries() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'entries' called on an object that is not a valid instance of FormData.\");\n      }\n      return exports.createDefaultIterator(globalObject, this, \"key+value\");\n    }\n\n    forEach(callback) {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'forEach' called on an object that is not a valid instance of FormData.\");\n      }\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          \"Failed to execute 'forEach' on 'iterable': 1 argument required, but only 0 present.\"\n        );\n      }\n      callback = Function.convert(globalObject, callback, {\n        context: \"Failed to execute 'forEach' on 'iterable': The callback provided as parameter 1\"\n      });\n      const thisArg = arguments[1];\n      let pairs = Array.from(this[implSymbol]);\n      let i = 0;\n      while (i < pairs.length) {\n        const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n        callback.call(thisArg, value, key, this);\n        pairs = Array.from(this[implSymbol]);\n        i++;\n      }\n    }\n  }\n  Object.defineProperties(FormData.prototype, {\n    append: { enumerable: true },\n    delete: { enumerable: true },\n    get: { enumerable: true },\n    getAll: { enumerable: true },\n    has: { enumerable: true },\n    set: { enumerable: true },\n    keys: { enumerable: true },\n    values: { enumerable: true },\n    entries: { enumerable: true },\n    forEach: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"FormData\", configurable: true },\n    [Symbol.iterator]: { value: FormData.prototype.entries, configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = FormData;\n\n  ctorRegistry[\"FormData Iterator\"] = Object.create(ctorRegistry[\"%IteratorPrototype%\"], {\n    [Symbol.toStringTag]: {\n      configurable: true,\n      value: \"FormData Iterator\"\n    }\n  });\n  utils.define(ctorRegistry[\"FormData Iterator\"], {\n    next() {\n      const internal = this && this[utils.iterInternalSymbol];\n      if (!internal) {\n        throw new globalObject.TypeError(\"next() called on a value that is not a FormData iterator object\");\n      }\n\n      const { target, kind, index } = internal;\n      const values = Array.from(target[implSymbol]);\n      const len = values.length;\n      if (index >= len) {\n        return newObjectInRealm(globalObject, { value: undefined, done: true });\n      }\n\n      const pair = values[index];\n      internal.index = index + 1;\n      return newObjectInRealm(globalObject, utils.iteratorResult(pair.map(utils.tryWrapperForImpl), kind));\n    }\n  });\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: FormData\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/xhr/FormData-impl.js\");\n","\"use strict\";\nconst EventTargetImpl = require(\"../events/EventTarget-impl\").implementation;\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst { setupForSimpleEventAccessors } = require(\"../helpers/create-event-accessor\");\n\nconst events = [\"loadstart\", \"progress\", \"abort\", \"error\", \"load\", \"timeout\", \"loadend\"];\n\nclass XMLHttpRequestEventTargetImpl extends EventTargetImpl {\n  // TODO: remove this when we fix EventTargetImpl to use this._globalObject directly instead of using _ownerDocument.\n  // https://github.com/jsdom/jsdom/issues/2780\n  get _ownerDocument() {\n    return idlUtils.implForWrapper(this._globalObject._document);\n  }\n}\nsetupForSimpleEventAccessors(XMLHttpRequestEventTargetImpl.prototype, events);\n\nexports.implementation = XMLHttpRequestEventTargetImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst EventTarget = require(\"./EventTarget.js\");\n\nconst interfaceName = \"XMLHttpRequestEventTarget\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'XMLHttpRequestEventTarget'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"XMLHttpRequestEventTarget\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  EventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"DedicatedWorker\", \"SharedWorker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class XMLHttpRequestEventTarget extends globalObject.EventTarget {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get onloadstart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadstart' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadstart\"]);\n    }\n\n    set onloadstart(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadstart' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadstart' property on 'XMLHttpRequestEventTarget': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadstart\"] = V;\n    }\n\n    get onprogress() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onprogress' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onprogress\"]);\n    }\n\n    set onprogress(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onprogress' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onprogress' property on 'XMLHttpRequestEventTarget': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onprogress\"] = V;\n    }\n\n    get onabort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onabort' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onabort\"]);\n    }\n\n    set onabort(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onabort' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onabort' property on 'XMLHttpRequestEventTarget': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onabort\"] = V;\n    }\n\n    get onerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onerror' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onerror\"]);\n    }\n\n    set onerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onerror' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onerror' property on 'XMLHttpRequestEventTarget': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onerror\"] = V;\n    }\n\n    get onload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onload' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onload\"]);\n    }\n\n    set onload(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onload' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onload' property on 'XMLHttpRequestEventTarget': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onload\"] = V;\n    }\n\n    get ontimeout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ontimeout' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"ontimeout\"]);\n    }\n\n    set ontimeout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set ontimeout' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'ontimeout' property on 'XMLHttpRequestEventTarget': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"ontimeout\"] = V;\n    }\n\n    get onloadend() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onloadend' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onloadend\"]);\n    }\n\n    set onloadend(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onloadend' called on an object that is not a valid instance of XMLHttpRequestEventTarget.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onloadend' property on 'XMLHttpRequestEventTarget': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onloadend\"] = V;\n    }\n  }\n  Object.defineProperties(XMLHttpRequestEventTarget.prototype, {\n    onloadstart: { enumerable: true },\n    onprogress: { enumerable: true },\n    onabort: { enumerable: true },\n    onerror: { enumerable: true },\n    onload: { enumerable: true },\n    ontimeout: { enumerable: true },\n    onloadend: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"XMLHttpRequestEventTarget\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = XMLHttpRequestEventTarget;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: XMLHttpRequestEventTarget\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js\");\n","\"use strict\";\nconst XMLHttpRequestEventTargetImpl = require(\"./XMLHttpRequestEventTarget-impl\").implementation;\n\nexports.implementation = class XMLHttpRequestUploadImpl extends XMLHttpRequestEventTargetImpl {};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst XMLHttpRequestEventTarget = require(\"./XMLHttpRequestEventTarget.js\");\n\nconst interfaceName = \"XMLHttpRequestUpload\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'XMLHttpRequestUpload'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"XMLHttpRequestUpload\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  XMLHttpRequestEventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"DedicatedWorker\", \"SharedWorker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class XMLHttpRequestUpload extends globalObject.XMLHttpRequestEventTarget {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n  }\n  Object.defineProperties(XMLHttpRequestUpload.prototype, {\n    [Symbol.toStringTag]: { value: \"XMLHttpRequestUpload\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = XMLHttpRequestUpload;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: XMLHttpRequestUpload\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/xhr/XMLHttpRequestUpload-impl.js\");\n","\"use strict\";\n\nconst enumerationValues = new Set([\"\", \"arraybuffer\", \"blob\", \"document\", \"json\", \"text\"]);\nexports.enumerationValues = enumerationValues;\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  const string = `${value}`;\n  if (!enumerationValues.has(string)) {\n    throw new globalObject.TypeError(\n      `${context} '${string}' is not a valid enumeration value for XMLHttpRequestResponseType`\n    );\n  }\n  return string;\n};\n","\"use strict\";\n\n// https://fetch.spec.whatwg.org/#header-name\nfunction isHeaderName(name) {\n  return /^[!#$%&'*+\\-.^`|~\\w]+$/.test(name);\n}\n\n// https://fetch.spec.whatwg.org/#header-value\nfunction isHeaderValue(value) {\n  return value[0] !== \"\\t\" &&\n    value[0] !== \" \" &&\n    value[value.length - 1] !== \"\\t\" &&\n    value[value.length - 1] !== \" \" &&\n    !/[\\0\\r\\n]/.test(value);\n}\n\n// https://fetch.spec.whatwg.org/#concept-header-value-normalize\nfunction normalizeHeaderValue(potentialValue) {\n  return potentialValue.replace(/^[\\n\\r\\t ]+|[\\n\\r\\t ]+$/g, \"\");\n}\n\nmodule.exports = {\n  isHeaderName,\n  isHeaderValue,\n  normalizeHeaderValue\n};\n","\"use strict\";\n\n/**\n * Provides utility functions for efficiently managing a collection of headers. Corresponds to\n * https://fetch.spec.whatwg.org/#concept-header-list.\n *\n * Notably, unlike `Headers`, this allows retrieving the original casing of header names and does no normalization of\n * inputs, which is important for implementing `XMLHttpRequest`. See discussions on, e.g.,\n * https://github.com/whatwg/fetch/pull/476.\n *\n */\nclass HeaderList {\n  // Note: we can use normal `toLowerCase()` in this class, instead of `asciiLowercase()`, because we assume all inputs\n  // are byte strings.\n\n  constructor() {\n    // Internal storage: Map<lowercaseName, {name: originalName, values: Array<value>}>\n    this._headers = new Map();\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-append\n  append(name, value) {\n    const lower = name.toLowerCase();\n    const existing = this._headers.get(lower);\n    if (existing) {\n      existing.values.push(value);\n    } else {\n      this._headers.set(lower, { name, values: [value] });\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#header-list-contains\n  contains(name) {\n    return this._headers.has(name.toLowerCase());\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-get\n  get(name) {\n    const entry = this._headers.get(name.toLowerCase());\n    if (!entry) {\n      return null;\n    }\n    return entry.values.join(\", \");\n  }\n\n  // No corresponding spec algorithm, but equivalent to e.g. the steps used in\n  // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie.\n  getAll(name) {\n    const entry = this._headers.get(name.toLowerCase());\n    if (!entry) {\n      return null;\n    }\n    return entry.values;\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-delete\n  delete(name) {\n    this._headers.delete(name.toLowerCase());\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-set\n  set(name, value) {\n    const lower = name.toLowerCase();\n    this._headers.set(lower, { name, values: [value] });\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-combine\n  combine(name, value) {\n    const lower = name.toLowerCase();\n    const existing = this._headers.get(lower);\n    if (existing) {\n      existing.values[0] += \", \" + value;\n    } else {\n      this._headers.set(lower, { name, values: [value] });\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n  sortAndCombine() {\n    const names = [...this._headers.keys()].sort();\n\n    const headers = [];\n    for (const name of names) {\n      const { values } = this._headers.get(name);\n      if (name === \"set-cookie\") {\n        for (const value of values) {\n          headers.push([name, value]);\n        }\n      } else {\n        headers.push([name, values.join(\", \")]);\n      }\n    }\n\n    return headers;\n  }\n\n  /**\n   * Yields [name, value] pairs for iteration.\n   * Each header with multiple values yields multiple pairs.\n   * Preserves original casing.\n   */\n  * [Symbol.iterator]() {\n    for (const { name, values } of this._headers.values()) {\n      for (const value of values) {\n        yield [name, value];\n      }\n    }\n  }\n\n  /**\n   * Yields unique header names (with original casing).\n   */\n  * names() {\n    for (const { name } of this._headers.values()) {\n      yield name;\n    }\n  }\n\n  /**\n   * Serializes the header list to an object.\n   * Format matches undici's headers object: {name: value} or {name: [values]} for multiple values.\n   */\n  toJSON() {\n    const result = {};\n    for (const { name, values } of this._headers.values()) {\n      result[name] = values.length === 1 ? values[0] : values;\n    }\n    return result;\n  }\n\n  /**\n   * Creates a HeaderList from a headers object.\n   * Format: {name: value} or {name: [values]} for multiple values.\n   * @param {object} obj - Headers object\n   */\n  static fromJSON(obj) {\n    const list = new HeaderList();\n    for (const [name, value] of Object.entries(obj)) {\n      if (Array.isArray(value)) {\n        for (const v of value) {\n          list.append(name, v);\n        }\n      } else {\n        list.append(name, value);\n      }\n    }\n    return list;\n  }\n\n  /**\n   * Creates a copy of this HeaderList.\n   */\n  clone() {\n    return HeaderList.fromJSON(this.toJSON());\n  }\n}\n\nmodule.exports = HeaderList;\n","\"use strict\";\n\nconst { MIMEType } = require(\"whatwg-mimetype\");\n\n// https://fetch.spec.whatwg.org/#privileged-no-cors-request-header-name\nconst PRIVILEGED_NO_CORS_REQUEST = new Set([\"range\"]);\nfunction isPrivilegedNoCORSRequestHeaderName(name) {\n  return PRIVILEGED_NO_CORS_REQUEST.has(name.toLowerCase());\n}\n\n// https://fetch.spec.whatwg.org/#no-cors-safelisted-request-header-name\nconst NO_CORS_SAFELISTED_REQUEST = new Set([\n  `accept`,\n  `accept-language`,\n  `content-language`,\n  `content-type`\n]);\nfunction isNoCORSSafelistedRequestHeaderName(name) {\n  return NO_CORS_SAFELISTED_REQUEST.has(name.toLowerCase());\n}\n\n// https://fetch.spec.whatwg.org/#forbidden-response-header-name\nconst FORBIDDEN_RESPONSE = new Set([\"set-cookie\", \"set-cookie2\"]);\nfunction isForbiddenResponseHeaderName(name) {\n  return FORBIDDEN_RESPONSE.has(name.toLowerCase());\n}\n\n// https://fetch.spec.whatwg.org/#cors-safelisted-request-header\n// Note: name and value are already ensured by the IDL layer to be byte strings.\nconst CORS_UNSAFE_BYTE = /[\\x00-\\x08\\x0A-\\x1F\"():<>?@[\\\\\\]{}\\x7F]/;\nfunction isCORSSafelistedRequestHeader(name, value) {\n  name = name.toLowerCase();\n  switch (name) {\n    case \"accept\":\n      if (value.match(CORS_UNSAFE_BYTE)) {\n        return false;\n      }\n      break;\n    case \"accept-language\":\n    case \"content-language\":\n      if (value.match(/[^\\x30-\\x39\\x41-\\x5A\\x61-\\x7A *,\\-.;=]/)) {\n        return false;\n      }\n      break;\n    case \"content-type\": {\n      if (value.match(CORS_UNSAFE_BYTE)) {\n        return false;\n      }\n      const mimeType = MIMEType.parse(value);\n      if (mimeType === null) {\n        return false;\n      }\n      if (\n        ![\n          \"application/x-www-form-urlencoded\",\n          \"multipart/form-data\",\n          \"text/plain\"\n        ].includes(mimeType.essence)\n      ) {\n        return false;\n      }\n      break;\n    }\n    default:\n      return false;\n  }\n  if (value.length > 128) {\n    return false;\n  }\n  return true;\n}\n\n// https://fetch.spec.whatwg.org/#no-cors-safelisted-request-header\nfunction isNoCORSSafelistedRequestHeader(name, value) {\n  if (!isNoCORSSafelistedRequestHeaderName(name)) {\n    return false;\n  }\n  return isCORSSafelistedRequestHeader(name, value);\n}\n\nconst BASIC_FORBIDDEN_REQUEST_HEADERS = new Set([\n  \"accept-charset\",\n  \"accept-encoding\",\n  \"access-control-request-headers\",\n  \"access-control-request-method\",\n  \"connection\",\n  \"content-length\",\n  \"cookie\",\n  \"cookie2\",\n  \"date\",\n  \"dnt\",\n  \"expect\",\n  \"host\",\n  \"keep-alive\",\n  \"origin\",\n  \"referer\",\n  \"te\",\n  \"trailer\",\n  \"transfer-encoding\",\n  \"upgrade\",\n  \"via\"\n]);\n\nconst METHOD_CHECKING_FORBIDDEN_REQUEST_HEADERS = new Set([\n  \"x-http-method\",\n  \"x-http-method-override\",\n  \"x-method-override\"\n]);\n\nconst FORBIDDEN_METHODS = new Set([\n  \"connect\",\n  \"trace\",\n  \"track\"\n]);\n\n// https://fetch.spec.whatwg.org/#forbidden-method\nfunction isForbiddenMethod(value) {\n  return FORBIDDEN_METHODS.has(value.toLowerCase());\n}\n\n// https://fetch.spec.whatwg.org/#forbidden-request-header\nfunction isForbiddenRequestHeader(name, value) {\n  const lowercaseName = name.toLowerCase();\n  if (BASIC_FORBIDDEN_REQUEST_HEADERS.has(lowercaseName)) {\n    return true;\n  }\n  if (lowercaseName.startsWith(\"proxy-\") || lowercaseName.startsWith(\"sec-\")) {\n    return true;\n  }\n\n  if (METHOD_CHECKING_FORBIDDEN_REQUEST_HEADERS.has(lowercaseName)) {\n    const parsedValues = getDecodeAndSplit(value);\n    return parsedValues.some(isForbiddenMethod);\n  }\n\n  return false;\n}\n\n// https://fetch.spec.whatwg.org/#header-value-get-decode-and-split\nfunction getDecodeAndSplit(input) {\n  const values = [];\n  let temporaryValue = \"\";\n  let position = 0;\n\n  while (true) {\n    // Collect sequence of code points that are not \" or ,\n    while (position < input.length && input[position] !== \"\\\"\" && input[position] !== \",\") {\n      temporaryValue += input[position++];\n    }\n\n    // If position is not past end and code point is \"\n    if (position < input.length && input[position] === '\"') {\n      // Inlined: collect HTTP quoted string (extract-value = false)\n      const positionStart = position++;\n      while (true) {\n        while (position < input.length && input[position] !== \"\\\"\" && input[position] !== \"\\\\\") {\n          position++;\n        }\n        if (position >= input.length) {\n          break;\n        }\n        if (input[position++] === \"\\\\\") {\n          if (position >= input.length) {\n            break;\n          }\n          position++;\n        } else {\n          break; // It was \"\n        }\n      }\n      temporaryValue += input.slice(positionStart, position);\n      if (position < input.length) {\n        continue;\n      }\n    }\n\n    // Remove HTTP tab or space from start and end\n    let start = 0;\n    let end = temporaryValue.length;\n    while (start < end && (temporaryValue[start] === \"\\t\" || temporaryValue[start] === \" \")) {\n      start++;\n    }\n    while (end > start && (temporaryValue[end - 1] === \"\\t\" || temporaryValue[end - 1] === \" \")) {\n      end--;\n    }\n\n    values.push(temporaryValue.slice(start, end));\n    temporaryValue = \"\";\n\n    if (position >= input.length) {\n      return values;\n    }\n    // Assert: code point at position is ,\n    position++;\n  }\n}\n\nmodule.exports = {\n  isPrivilegedNoCORSRequestHeaderName,\n  isNoCORSSafelistedRequestHeaderName,\n  isNoCORSSafelistedRequestHeader,\n  isForbiddenRequestHeader,\n  isForbiddenResponseHeaderName,\n  isCORSSafelistedRequestHeader\n};\n","\"use strict\";\nconst { Readable } = require(\"stream\");\nconst { parseURL, serializeURL, serializeURLOrigin } = require(\"whatwg-url\");\nconst HeaderList = require(\"../fetch/header-list\");\nconst { isForbiddenResponseHeaderName, isNoCORSSafelistedRequestHeaderName } = require(\"../fetch/header-types\");\n\nconst headerListSeparatorRegexp = /,[ \\t]*/;\nconst simpleMethods = new Set([\"GET\", \"HEAD\", \"POST\"]);\n\nconst corsSafeResponseHeaders = new Set([\n  \"cache-control\",\n  \"content-language\",\n  \"content-length\",\n  \"content-type\",\n  \"expires\",\n  \"last-modified\",\n  \"pragma\"\n]);\n\n/**\n * A network error response.\n */\nfunction makeNetworkError(error = null) {\n  return { type: \"error\", error };\n}\n\n/**\n * Check if a response is a network error.\n */\nfunction isNetworkError(response) {\n  return response && response.type === \"error\";\n}\n\n/**\n * Performs a fetch operation for XHR with full CORS handling.\n * Delegates redirect handling and CORS validation to the dispatcher.\n *\n * @param {JSDOMDispatcher} dispatcher - The dispatcher to use for sending the request\n * @param {Object} config - Request configuration\n * @param {AbortSignal} signal - Signal to abort the fetch\n * @returns {Promise<Object>} The response object with filteredResponseHeaders, or a network error response\n */\nasync function performFetch(dispatcher, config, signal) {\n  const {\n    url,\n    method,\n    requestHeaders: userRequestHeaders,\n    body,\n    origin,\n    referrer,\n    withCredentials,\n    auth,\n    uploadListener\n  } = config;\n\n  const urlRecord = parseURL(url);\n  const ucMethod = method.toUpperCase();\n\n  // Build request headers - start with user-set headers\n  // Default headers (User-Agent, Accept, etc.) are added by the dispatcher\n  const requestHeaders = userRequestHeaders.clone();\n\n  if (referrer) {\n    requestHeaders.set(\"Referer\", referrer);\n  }\n\n  const crossOrigin = origin !== serializeURLOrigin(urlRecord);\n  if (crossOrigin) {\n    requestHeaders.set(\"Origin\", origin);\n  }\n\n  // Compute if preflight is needed (but don't execute - dispatcher will)\n  const nonSimpleHeaders = [];\n  for (const name of userRequestHeaders.names()) {\n    if (!isNoCORSSafelistedRequestHeaderName(name)) {\n      nonSimpleHeaders.push(name);\n    }\n  }\n  const needsPreflight = crossOrigin &&\n    (!simpleMethods.has(ucMethod) || nonSimpleHeaders.length > 0 || uploadListener);\n\n  // Build opaque options for dispatcher\n  const opaque = {\n    element: null,\n    url,\n    origin,\n    corsMode: crossOrigin, // Enable CORS handling if cross-origin\n    withCredentials,\n    auth\n  };\n  if (needsPreflight) {\n    opaque.preflight = { unsafeHeaders: nonSimpleHeaders };\n  }\n\n  // Single dispatch call - dispatcher handles preflight, redirects, CORS\n  const response = await dispatchMainRequest(dispatcher, {\n    method,\n    headers: requestHeaders,\n    body,\n    opaque\n  }, signal);\n\n  if (isNetworkError(response)) {\n    return response;\n  }\n\n  // Build filtered response headers (post-processing)\n  const filteredResponseHeaders = new Set();\n  const { headers } = response;\n\n  // Determine effective origin for filtering (from response URL after redirects)\n  const destUrlRecord = parseURL(response.url);\n  const isCrossOriginResponse = origin !== serializeURLOrigin(destUrlRecord) && destUrlRecord.scheme !== \"data\";\n\n  if (isCrossOriginResponse) {\n    // Filter headers not exposed by CORS\n    const acehStr = headers.get(\"access-control-expose-headers\");\n    const aceh = new Set(acehStr ? acehStr.trim().toLowerCase().split(headerListSeparatorRegexp) : []);\n    for (const [header] of headers) {\n      if (!corsSafeResponseHeaders.has(header) && !aceh.has(header) && !aceh.has(\"*\")) {\n        filteredResponseHeaders.add(header);\n      }\n    }\n  }\n\n  // Always filter forbidden response headers\n  for (const [header] of headers) {\n    if (isForbiddenResponseHeaderName(header)) {\n      filteredResponseHeaders.add(header);\n    }\n  }\n\n  response.filteredResponseHeaders = filteredResponseHeaders;\n  return response;\n}\n\n/**\n * Helper to dispatch a request and return a Promise with the response.\n *\n * We use the callback-based dispatch() API instead of the simpler request() API because of\n * WrapHandler's incorrect encoding of header values: https://github.com/nodejs/undici/issues/4797\n */\nfunction dispatchMainRequest(dispatcher, opts, signal) {\n  if (signal.aborted) {\n    return Promise.resolve(makeNetworkError());\n  }\n\n  return new Promise(resolve => {\n    let context, bodyStream, sendAbortToUndiciController;\n\n    function onAbort() {\n      sendAbortToUndiciController?.(signal.reason);\n      bodyStream?.destroy();\n      resolve(makeNetworkError());\n    }\n    signal.addEventListener(\"abort\", onAbort, { once: true });\n\n    dispatcher.dispatch(opts, {\n      onRequestStart(controller, ctx) {\n        context = ctx;\n        sendAbortToUndiciController = reason => controller.abort(reason);\n        if (signal.aborted) {\n          controller.abort(signal.reason);\n        }\n      },\n      onResponseStart(controller, statusCode, headers, statusText) {\n        if (signal.aborted) {\n          return;\n        }\n\n        // Prevent unhandled \"error\" events from `destroy()` calls.\n        bodyStream = new Readable({ read() {} });\n        bodyStream.on(\"error\", () => {});\n\n        // Get final URL from context (set by dispatcher after handling redirects)\n        const finalURL = serializeURL(context.finalURL);\n\n        resolve({\n          status: statusCode,\n          statusText: statusText || \"\",\n          headers: HeaderList.fromJSON(headers),\n          body: bodyStream,\n          url: finalURL\n        });\n      },\n      onResponseData(controller, chunk) {\n        if (signal.aborted) {\n          return;\n        }\n        bodyStream.push(chunk);\n      },\n      onResponseEnd() {\n        signal.removeEventListener(\"abort\", onAbort);\n        bodyStream?.push(null);\n      },\n      onResponseError(controller, err) {\n        signal.removeEventListener(\"abort\", onAbort);\n        bodyStream?.destroy(err);\n        resolve(makeNetworkError(err));\n      }\n    });\n  });\n}\n\nexports.performFetch = performFetch;\nexports.isNetworkError = isNetworkError;\n","\"use strict\";\nconst { utf8Decode } = require(\"./encoding\");\n\n// https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\nexports.parseJSONFromBytes = bytes => {\n  return JSON.parse(utf8Decode(bytes));\n};\n","\"use strict\";\nconst conversions = require(\"webidl-conversions\");\nconst { utf8Encode } = require(\"../helpers/encoding\");\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract (note: always UTF-8)\n// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart%2Fform-data-encoding-algorithm\n// https://andreubotella.github.io/multipart-form-data/\n\nconst contentDispositionPrefix = utf8Encode(`Content-Disposition: form-data; name=\"`);\nconst filenamePrefix = utf8Encode(`; filename=\"`);\nconst contentType = utf8Encode(`Content-Type: `);\n\n// https://andreubotella.github.io/multipart-form-data/#multipart-form-data-boundary\nfunction generateBoundary() {\n  let boundary = \"--------------------------\";\n  for (let i = 0; i < 24; ++i) {\n    boundary += Math.floor(Math.random() * 10).toString(16);\n  }\n  return utf8Encode(boundary);\n}\n\n// https://andreubotella.github.io/multipart-form-data/#escape-a-multipart-form-data-name\nfunction escapeName(name, isFilename = false) {\n  if (isFilename) {\n    name = conversions.USVString(name);\n  } else {\n    name = name.replace(/\\r(?!\\n)|(?<!\\r)\\n/g, \"\\r\\n\");\n  }\n\n  const encoded = utf8Encode(name);\n  const encodedWithSubs = [];\n  for (const originalByte of encoded) {\n    if (originalByte === 0x0A) {\n      encodedWithSubs.push(37, 48, 65); // `%0A`\n    } else if (originalByte === 0x0D) {\n      encodedWithSubs.push(37, 48, 68); // `%0D`\n    } else if (originalByte === 0x22) {\n      encodedWithSubs.push(37, 50, 50); // `%22`\n    } else {\n      encodedWithSubs.push(originalByte);\n    }\n  }\n\n  return new Uint8Array(encodedWithSubs);\n}\n\n// https://andreubotella.github.io/multipart-form-data/#multipart-form-data-chunk-serializer\nexports.serializeEntryList = entries => {\n  const boundary = generateBoundary();\n  const outputChunks = [];\n\n  for (const entry of entries) {\n    const chunkBytes = [\n      45, 45, // `--`\n      ...boundary,\n      0x0D, 0x0A\n    ];\n\n    chunkBytes.push(...contentDispositionPrefix, ...escapeName(entry.name), 0x22 /* `\"` */);\n\n    let { value } = entry;\n    if (typeof value === \"string\") {\n      chunkBytes.push(0x0D, 0x0A, 0x0D, 0x0A);\n\n      value = value.replace(/\\r(?!\\n)|(?<!\\r)\\n/g, \"\\r\\n\");\n\n      chunkBytes.push(...utf8Encode(value));\n\n      chunkBytes.push(0x0D, 0x0A);\n\n      outputChunks.push(new Uint8Array(chunkBytes));\n    } else {\n      // value is a FileImpl object\n\n      chunkBytes.push(...filenamePrefix, ...escapeName(value.name, true), 0x22, 0x0D, 0x0A);\n\n      const type = value.type !== \"\" ? value.type : \"application/octet-stream\";\n      chunkBytes.push(...contentType, ...utf8Encode(type));\n\n      chunkBytes.push(0x0D, 0x0A, 0x0D, 0x0A);\n\n      outputChunks.push(\n        new Uint8Array(chunkBytes),\n        // The spec returns the File object here but for our purposes the bytes (as a `Uint8Array`) are more convenient.\n        value._bytes,\n        new Uint8Array([0x0D, 0x0A])\n      );\n    }\n  }\n\n  outputChunks.push(\n    new Uint8Array([45, 45]), // `--`\n    boundary,\n    new Uint8Array([45, 45]), // `--`\n    new Uint8Array([0x0D, 0x0A])\n  );\n\n  return { boundary, outputChunks };\n};\n","\"use strict\";\n\nconst { Worker, receiveMessageOnPort, MessageChannel } = require(\"node:worker_threads\");\nconst { inspect } = require(\"util\");\nconst { parseURL, serializeURL } = require(\"whatwg-url\");\nconst { getBOMEncoding, labelToName, legacyHookDecode } = require(\"@exodus/bytes/encoding.js\");\nconst tough = require(\"tough-cookie\");\nconst { MIMEType } = require(\"whatwg-mimetype\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst Document = require(\"../../../generated/idl/Document\");\nconst Blob = require(\"../../../generated/idl/Blob\");\nconst FormData = require(\"../../../generated/idl/FormData\");\nconst XMLHttpRequestUpload = require(\"../../../generated/idl/XMLHttpRequestUpload\");\nconst ProgressEvent = require(\"../../../generated/idl/ProgressEvent\");\nconst { isHeaderName, isHeaderValue, normalizeHeaderValue } = require(\"../fetch/header-utils\");\nconst HeaderList = require(\"../fetch/header-list\");\nconst { isForbiddenRequestHeader } = require(\"../fetch/header-types\");\nconst { performFetch, isNetworkError } = require(\"./xhr-utils\");\nconst XMLHttpRequestEventTargetImpl = require(\"./XMLHttpRequestEventTarget-impl\").implementation;\nconst { parseIntoDocument } = require(\"../../browser/parser\");\nconst { fragmentSerialization } = require(\"../domparsing/serialization\");\nconst { copyToArrayBufferInTargetRealmDestructively, concatTypedArrays } = require(\"../helpers/binary-data\");\nconst { setupForSimpleEventAccessors } = require(\"../helpers/create-event-accessor\");\nconst { utf8Encode, utf8Decode } = require(\"../helpers/encoding\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst { parseJSONFromBytes } = require(\"../helpers/json\");\nconst { asciiCaseInsensitiveMatch } = require(\"../helpers/strings\");\nconst { serializeEntryList } = require(\"./multipart-form-data\");\n\nconst syncWorkerFile = require.resolve(\"./xhr-sync-worker.js\");\n\n// TODO: simplify after dropping Node.js v20 support\nfunction trimUint8Array(arr, newSize) {\n  if (arr.buffer.transfer) {\n    return new Uint8Array(arr.buffer.transfer(newSize));\n  }\n  return arr.slice(0, newSize);\n}\n\nlet syncWorker = null;\n\nfunction getSyncWorker() {\n  if (!syncWorker) {\n    syncWorker = new Worker(syncWorkerFile);\n    syncWorker.unref();\n    syncWorker.on(\"exit\", () => {\n      syncWorker = null;\n    });\n  }\n  return syncWorker;\n}\n\nconst SYNC_WORKER_TIMEOUT_MS = 2 * 60 * 1000;\n\n// Sends a serialized XHR request to the persistent worker thread and synchronously blocks\n// until it responds. The synchronization works as follows:\n//\n// - A SharedArrayBuffer is shared between the main thread and the worker, used as a signal.\n// - Atomics.wait() blocks the main thread until the worker writes to the shared buffer.\n// - The worker does the actual async fetch, then posts the response via a MessagePort and\n//   signals completion by writing to the SharedArrayBuffer with Atomics.store()/notify().\n// - After waking, receiveMessageOnPort() synchronously reads the response from the port.\nfunction sendSyncWorkerRequest(config) {\n  const sharedBuffer = new SharedArrayBuffer(4);\n  const int32 = new Int32Array(sharedBuffer);\n  const { port1, port2 } = new MessageChannel();\n\n  getSyncWorker().postMessage({ sharedBuffer, responsePort: port2, config }, [port2]);\n\n  const waitResult = Atomics.wait(int32, 0, 0, SYNC_WORKER_TIMEOUT_MS);\n  if (waitResult === \"timed-out\") {\n    throw new Error(\"Sync XHR worker timed out\");\n  }\n\n  const msg = receiveMessageOnPort(port1);\n  if (!msg) {\n    throw new Error(\"No response received from sync XHR worker\");\n  }\n  return msg.message;\n}\n\nconst READY_STATES = Object.freeze({\n  UNSENT: 0,\n  OPENED: 1,\n  HEADERS_RECEIVED: 2,\n  LOADING: 3,\n  DONE: 4\n});\n\nconst tokenRegexp = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/;\n\nconst allowedRequestMethods = new Set([\"OPTIONS\", \"GET\", \"HEAD\", \"POST\", \"PUT\", \"DELETE\"]);\nconst forbiddenRequestMethods = new Set([\"TRACK\", \"TRACE\", \"CONNECT\"]);\n\n// Helper functions for error handling\n\nfunction dispatchError(xhr, errMessage) {\n  // Store the error message for sync XHR worker to serialize\n  xhr._error = errMessage;\n  requestErrorSteps(xhr, \"error\", DOMException.create(xhr._globalObject, [errMessage, \"NetworkError\"]));\n}\n\nfunction requestErrorSteps(xhr, event, exception) {\n  const { upload } = xhr;\n\n  xhr.readyState = READY_STATES.DONE;\n  xhr._send = false;\n\n  setResponseToNetworkError(xhr);\n\n  if (xhr._synchronous) {\n    throw exception;\n  }\n\n  fireAnEvent(\"readystatechange\", xhr);\n\n  if (!xhr._uploadComplete) {\n    xhr._uploadComplete = true;\n\n    if (xhr._uploadListener) {\n      fireAnEvent(event, upload, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });\n      fireAnEvent(\"loadend\", upload, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });\n    }\n  }\n\n  fireAnEvent(event, xhr, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });\n  fireAnEvent(\"loadend\", xhr, ProgressEvent, { loaded: 0, total: 0, lengthComputable: false });\n}\n\nfunction setResponseToNetworkError(xhr) {\n  xhr._responseBytes =\n    xhr._responseCache =\n    xhr._responseTextCache =\n    xhr._responseXMLCache = null;\n\n  xhr._responseHeaders = new HeaderList();\n  xhr.status = 0;\n  xhr.statusText = \"\";\n}\n\nclass XMLHttpRequestImpl extends XMLHttpRequestEventTargetImpl {\n  constructor(window) {\n    super(window);\n\n    const { _ownerDocument } = this;\n\n    this.upload = XMLHttpRequestUpload.createImpl(window);\n\n    // Public WebIDL properties\n    this.readyState = READY_STATES.UNSENT;\n    this.responseURL = \"\";\n    this.status = 0;\n    this.statusText = \"\";\n\n    // Request configuration\n    this._synchronous = false;\n    this._withCredentials = false;\n    this._mimeType = null;\n    this._auth = null;\n    this._method = undefined;\n    this._responseType = \"\";\n    this._requestHeaders = new HeaderList();\n    this._referrer = _ownerDocument.URL;\n    this._url = \"\";\n    this._timeout = 0;\n    this._body = undefined;\n    this._preflight = false;\n    this._overrideMIMEType = null;\n    this._overrideCharset = null;\n    this._requestManager = _ownerDocument._requestManager;\n    this._dispatcher = window._dispatcher;\n    this._cookieJar = _ownerDocument._cookieJar;\n    this._encoding = _ownerDocument._encoding;\n    this._origin = window._origin;\n    this._userAgent = window.navigator.userAgent;\n\n    // Runtime/response state\n    this._beforeSend = false;\n    this._send = false;\n    this._controller = null;\n    this._timeoutStart = 0;\n    this._timeoutId = 0;\n    this._timeoutFn = null;\n    this._responseBytes = null;\n    this._responseCache = null;\n    this._responseTextCache = null;\n    this._responseXMLCache = null;\n    this._responseHeaders = new HeaderList();\n    this._filteredResponseHeaders = new Set();\n    this._error = \"\";\n    this._uploadComplete = false;\n    this._uploadListener = false;\n    // Signifies that we're calling abort() from xhr-utils.js because of a window shutdown.\n    // In that case the termination reason is \"fatal\", not \"end-user abort\".\n    this._abortError = false;\n    this._bufferStepSize = 1 * 1024 * 1024; // pre-allocate buffer increase step size. init value is 1MB\n    this._totalReceivedChunkSize = 0;\n  }\n\n  get responseType() {\n    return this._responseType;\n  }\n  set responseType(responseType) {\n    if (this.readyState === READY_STATES.LOADING || this.readyState === READY_STATES.DONE) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n    if (this.readyState === READY_STATES.OPENED && this._synchronous) {\n      throw DOMException.create(this._globalObject, [\n        \"The object does not support the operation or argument.\",\n        \"InvalidAccessError\"\n      ]);\n    }\n    this._responseType = responseType;\n  }\n\n  get response() {\n    if (this._responseCache) {\n      // Needed because of: https://github.com/jsdom/webidl2js/issues/149\n      return idlUtils.tryWrapperForImpl(this._responseCache);\n    }\n    let res;\n\n    const responseBytes = this._responseBytes?.slice(0, this._totalReceivedChunkSize) ?? null;\n\n    switch (this.responseType) {\n      case \"\":\n      case \"text\": {\n        res = this.responseText;\n        break;\n      }\n      case \"arraybuffer\": {\n        if (!responseBytes) {\n          return null;\n        }\n        res = copyToArrayBufferInTargetRealmDestructively(responseBytes.buffer, this._globalObject);\n        break;\n      }\n      case \"blob\": {\n        if (!responseBytes) {\n          return null;\n        }\n        const contentType = finalMIMEType(this);\n        res = Blob.createImpl(this._globalObject, [\n          [new Uint8Array(responseBytes)],\n          { type: contentType || \"\" }\n        ]);\n        break;\n      }\n      case \"document\": {\n        res = this.responseXML;\n        break;\n      }\n      case \"json\": {\n        if (this.readyState !== READY_STATES.DONE || !responseBytes) {\n          res = null;\n        }\n\n        try {\n          res = parseJSONFromBytes(responseBytes);\n        } catch {\n          res = null;\n        }\n        break;\n      }\n    }\n    this._responseCache = res;\n    // Needed because of: https://github.com/jsdom/webidl2js/issues/149\n    return idlUtils.tryWrapperForImpl(res);\n  }\n  get responseText() {\n    if (this.responseType !== \"\" && this.responseType !== \"text\") {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n    if (this.readyState !== READY_STATES.LOADING && this.readyState !== READY_STATES.DONE) {\n      return \"\";\n    }\n    if (this._responseTextCache) {\n      return this._responseTextCache;\n    }\n    const responseBytes = this._responseBytes?.slice(0, this._totalReceivedChunkSize) ?? null;\n    if (!responseBytes) {\n      return \"\";\n    }\n\n    const fallbackEncodingLabel = finalCharset(this) || getBOMEncoding(responseBytes) || \"UTF-8\";\n    const res = legacyHookDecode(responseBytes, fallbackEncodingLabel);\n\n    this._responseTextCache = res;\n    return res;\n  }\n  get responseXML() {\n    if (this.responseType !== \"\" && this.responseType !== \"document\") {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n    if (this.readyState !== READY_STATES.DONE) {\n      return null;\n    }\n    if (this._responseXMLCache) {\n      return this._responseXMLCache;\n    }\n    const responseBytes = this._responseBytes?.slice(0, this._totalReceivedChunkSize) ?? null;\n    if (!responseBytes) {\n      return null;\n    }\n\n    const contentType = finalMIMEType(this);\n    let isHTML = false;\n    let isXML = false;\n    const parsed = MIMEType.parse(contentType);\n    if (parsed) {\n      isHTML = parsed.isHTML();\n      isXML = parsed.isXML();\n      if (!isXML && !isHTML) {\n        return null;\n      }\n    }\n\n    if (this.responseType === \"\" && isHTML) {\n      return null;\n    }\n\n    const encoding = finalCharset(this) || labelToName(getBOMEncoding(responseBytes)) || \"UTF-8\";\n    const resText = legacyHookDecode(responseBytes, encoding);\n\n    if (!resText) {\n      return null;\n    }\n    const res = Document.createImpl(this._globalObject, [], {\n      options: {\n        url: this._url,\n        lastModified: new Date(this._responseHeaders.get(\"last-modified\")),\n        parsingMode: isHTML ? \"html\" : \"xml\",\n        cookieJar: { setCookieSync: () => undefined, getCookieStringSync: () => \"\" },\n        encoding,\n        parseOptions: this._ownerDocument._parseOptions\n      }\n    });\n    try {\n      parseIntoDocument(resText, res);\n    } catch {\n      this._responseXMLCache = null;\n      return null;\n    }\n    res.close();\n    this._responseXMLCache = res;\n    return res;\n  }\n\n  get timeout() {\n    return this._timeout;\n  }\n  set timeout(val) {\n    if (this._synchronous) {\n      throw DOMException.create(this._globalObject, [\n        \"The object does not support the operation or argument.\",\n        \"InvalidAccessError\"\n      ]);\n    }\n    this._timeout = val;\n    clearTimeout(this._timeoutId);\n    if (val > 0 && this._timeoutFn) {\n      this._timeoutId = setTimeout(\n        this._timeoutFn,\n        Math.max(0, val - ((new Date()).getTime() - this._timeoutStart))\n      );\n    } else {\n      this._timeoutFn = null;\n      this._timeoutStart = 0;\n    }\n  }\n\n  get withCredentials() {\n    return this._withCredentials;\n  }\n  set withCredentials(val) {\n    if (!(this.readyState === READY_STATES.UNSENT || this.readyState === READY_STATES.OPENED)) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n    if (this._send) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n    this._withCredentials = val;\n  }\n\n  abort() {\n    // Terminate the request\n    clearTimeout(this._timeoutId);\n    this._timeoutFn = null;\n    this._timeoutStart = 0;\n\n    if (this._controller) {\n      this._controller.abort();\n      this._controller = null;\n    }\n\n    if (this._abortError) {\n      // Special case that ideally shouldn't be going through the public API at all.\n      // Run the https://xhr.spec.whatwg.org/#handle-errors \"fatal\" steps.\n      this.readyState = READY_STATES.DONE;\n      this._send = false;\n      setResponseToNetworkError(this);\n      return;\n    }\n\n    if ((this.readyState === READY_STATES.OPENED && this._send) ||\n        this.readyState === READY_STATES.HEADERS_RECEIVED ||\n        this.readyState === READY_STATES.LOADING) {\n      requestErrorSteps(this, \"abort\");\n    }\n\n    if (this.readyState === READY_STATES.DONE) {\n      this.readyState = READY_STATES.UNSENT;\n\n      setResponseToNetworkError(this);\n    }\n  }\n  getAllResponseHeaders() {\n    if (this.readyState === READY_STATES.UNSENT || this.readyState === READY_STATES.OPENED) {\n      return \"\";\n    }\n    const result = [];\n    for (const [key, value] of this._responseHeaders) {\n      const lcKey = key.toLowerCase();\n      if (!this._filteredResponseHeaders.has(lcKey)) {\n        result.push(`${lcKey}: ${value}`);\n      }\n    }\n    return result.join(\"\\r\\n\");\n  }\n\n  getResponseHeader(header) {\n    if (this.readyState === READY_STATES.UNSENT || this.readyState === READY_STATES.OPENED) {\n      return null;\n    }\n    const lcHeader = header.toLowerCase();\n    if (this._filteredResponseHeaders.has(lcHeader)) {\n      return null;\n    }\n    return this._responseHeaders.get(lcHeader);\n  }\n\n  open(method, url, asynchronous, user, password) {\n    const { _ownerDocument } = this;\n    if (!_ownerDocument) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    if (!tokenRegexp.test(method)) {\n      throw DOMException.create(this._globalObject, [\n        \"The string did not match the expected pattern.\",\n        \"SyntaxError\"\n      ]);\n    }\n    const upperCaseMethod = method.toUpperCase();\n    if (forbiddenRequestMethods.has(upperCaseMethod)) {\n      throw DOMException.create(this._globalObject, [\"The operation is insecure.\", \"SecurityError\"]);\n    }\n\n    if (this._controller && typeof this._controller.abort === \"function\") {\n      this._controller.abort();\n    }\n\n    if (allowedRequestMethods.has(upperCaseMethod)) {\n      method = upperCaseMethod;\n    }\n    if (typeof asynchronous !== \"undefined\") {\n      this._synchronous = !asynchronous;\n    } else {\n      this._synchronous = false;\n    }\n    if (this._responseType && this._synchronous) {\n      throw DOMException.create(this._globalObject, [\n        \"The object does not support the operation or argument.\",\n        \"InvalidAccessError\"\n      ]);\n    }\n    if (this._synchronous && this._timeout) {\n      throw DOMException.create(this._globalObject, [\n        \"The object does not support the operation or argument.\",\n        \"InvalidAccessError\"\n      ]);\n    }\n    this._method = method;\n\n    const urlRecord = parseURL(url, { baseURL: _ownerDocument.baseURL() });\n    if (!urlRecord) {\n      throw DOMException.create(this._globalObject, [\n        \"The string did not match the expected pattern.\",\n        \"SyntaxError\"\n      ]);\n    }\n\n    if (user || (password && !urlRecord.username)) {\n      this._auth = {\n        user,\n        pass: password\n      };\n      urlRecord.username = \"\";\n      urlRecord.password = \"\";\n    }\n\n    this._url = serializeURL(urlRecord);\n    this._requestHeaders = new HeaderList();\n    this._preflight = false;\n\n    this._send = false;\n    this._uploadListener = false;\n    this._body = undefined;\n    this._abortError = false;\n\n    this._responseBytes = null;\n    this._responseCache = null;\n    this._responseTextCache = null;\n    this._responseXMLCache = null;\n    this._responseHeaders = new HeaderList();\n    this._totalReceivedChunkSize = 0;\n    this.responseURL = \"\";\n    this.status = 0;\n    this.statusText = \"\";\n\n    readyStateChange(this, READY_STATES.OPENED);\n  }\n\n  overrideMimeType(mime) {\n    if (this.readyState === READY_STATES.LOADING || this.readyState === READY_STATES.DONE) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    this._overrideMIMEType = \"application/octet-stream\";\n\n    // Waiting for better spec: https://github.com/whatwg/xhr/issues/157\n    const parsed = MIMEType.parse(mime);\n    if (parsed) {\n      this._overrideMIMEType = parsed.essence;\n\n      const charset = parsed.parameters.get(\"charset\");\n      if (charset) {\n        this._overrideCharset = labelToName(charset);\n      }\n    }\n  }\n\n  // TODO: Add support for URLSearchParams and ReadableStream\n  send(body) {\n    const { upload, _ownerDocument } = this;\n    // Not per spec, but per tests: https://github.com/whatwg/xhr/issues/65\n    if (!_ownerDocument) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    if (this.readyState !== READY_STATES.OPENED || this._send) {\n      throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n    }\n\n    this._beforeSend = true;\n\n    try {\n      if (this._method === \"GET\" || this._method === \"HEAD\") {\n        body = null;\n      }\n\n      if (body !== null) {\n        let extractedContentType = null;\n\n        if (Document.isImpl(body)) {\n          // Note: our utf8Encode() does both USVString conversion and UTF-8 encoding.\n          this._body = utf8Encode(fragmentSerialization(body, { requireWellFormed: false }));\n        } else {\n          const { body: extractedBody, type } = extractBody(body);\n          this._body = extractedBody;\n          extractedContentType = type;\n        }\n\n        const originalAuthorContentType = this._requestHeaders.get(\"content-type\");\n\n        if (originalAuthorContentType !== null) {\n          if (Document.isImpl(body) || typeof body === \"string\") {\n            const parsed = MIMEType.parse(originalAuthorContentType);\n            if (parsed) {\n              const charset = parsed.parameters.get(\"charset\");\n              if (charset && !asciiCaseInsensitiveMatch(charset, \"UTF-8\")) {\n                parsed.parameters.set(\"charset\", \"UTF-8\");\n                this._requestHeaders.set(\"Content-Type\", parsed.toString());\n              }\n            }\n          }\n        } else if (Document.isImpl(body)) {\n          if (body._parsingMode === \"html\") {\n            this._requestHeaders.set(\"Content-Type\", \"text/html;charset=UTF-8\");\n          } else {\n            this._requestHeaders.set(\"Content-Type\", \"application/xml;charset=UTF-8\");\n          }\n        } else if (extractedContentType !== null) {\n          this._requestHeaders.set(\"Content-Type\", extractedContentType);\n        }\n      }\n    } finally {\n      if (this._beforeSend) {\n        this._beforeSend = false;\n      } else {\n        throw DOMException.create(this._globalObject, [\"The object is in an invalid state.\", \"InvalidStateError\"]);\n      }\n    }\n\n    if (Object.keys(upload._eventListeners).length > 0) {\n      this._uploadListener = true;\n    }\n\n    // request doesn't like zero-length bodies\n    if (this._body && this._body.byteLength === 0) {\n      this._body = null;\n    }\n\n    // Per XHR spec step 11: \"If req's body is null, then set this's upload complete flag.\"\n    // This prevents upload events from firing for GET/HEAD and other bodyless requests.\n    // Note: this._body may be undefined (for GET/HEAD) or null (for zero-length bodies).\n    if (!this._body) {\n      this._uploadComplete = true;\n    }\n\n    if (this._synchronous) {\n      this._adoptSerializedResponse(sendSyncWorkerRequest(this._serializeRequest()));\n\n      this.readyState = READY_STATES.LOADING;\n\n      if (this._error) {\n        dispatchError(this, this._error);\n        throw DOMException.create(this._globalObject, [this._error, \"NetworkError\"]);\n      } else {\n        const contentLength = this._responseHeaders.get(\"content-length\") || \"0\";\n        const byteLength = parseInt(contentLength) || this._responseBytes.length;\n        const progressObj = { lengthComputable: false };\n        if (byteLength !== 0) {\n          progressObj.total = byteLength;\n          progressObj.loaded = byteLength;\n          progressObj.lengthComputable = true;\n        }\n        fireAnEvent(\"progress\", this, ProgressEvent, progressObj);\n        readyStateChange(this, READY_STATES.DONE);\n        fireAnEvent(\"load\", this, ProgressEvent, progressObj);\n        fireAnEvent(\"loadend\", this, ProgressEvent, progressObj);\n      }\n    } else {\n      this._send = true;\n      this._totalReceivedChunkSize = 0;\n      this._bufferStepSize = 1 * 1024 * 1024;\n\n      if (body !== null && body !== \"\") {\n        this._uploadComplete = false;\n      } else {\n        this._uploadComplete = true;\n      }\n\n      // State for upload progress - use this._body which is the processed Uint8Array\n      const uploadTotal = this._body ? this._body.byteLength : 0;\n      const uploadProgress = {\n        lengthComputable: uploadTotal > 0,\n        total: uploadTotal,\n        loaded: 0\n      };\n\n      // Create abort controller BEFORE firing loadstart so open() called in\n      // loadstart handler can properly abort this request\n      const abortController = new AbortController();\n      this._controller = abortController;\n\n      // Register with request manager so window.close()/stop() can abort this request\n      const requestManagerEntry = {\n        abort: () => {\n          this._abortError = true;\n          abortController.abort();\n        }\n      };\n      if (this._requestManager) {\n        this._requestManager.add(requestManagerEntry);\n      }\n\n      // Per XHR spec, fire loadstart on xhr first, then on upload.\n      fireAnEvent(\"loadstart\", this, ProgressEvent);\n\n      if (!this._uploadComplete && this._uploadListener) {\n        fireAnEvent(\"loadstart\", upload, ProgressEvent, uploadProgress);\n      }\n\n      // Per XHR spec: \"If this's state is not opened or this's send() flag is unset, return.\"\n      // Also check if this request was aborted (e.g., by open() called in loadstart handler)\n      if (this.readyState !== READY_STATES.OPENED || !this._send || abortController.signal.aborted) {\n        if (this._requestManager) {\n          this._requestManager.remove(requestManagerEntry);\n        }\n        return;\n      }\n\n      // Async fetch and body streaming\n      (async () => {\n        try {\n          const response = await performFetch(\n            this._dispatcher,\n            {\n              url: this._url,\n              method: this._method,\n              requestHeaders: this._requestHeaders,\n              body: this._body,\n              origin: this._origin,\n              referrer: this._referrer,\n              userAgent: this._userAgent,\n              withCredentials: this._withCredentials,\n              auth: this._auth,\n              cookieJar: this._cookieJar,\n              uploadListener: this._uploadListener\n            },\n            abortController.signal\n          );\n\n          // Handle network errors (includes CORS failures)\n          if (isNetworkError(response)) {\n            if (abortController.signal.aborted) {\n              // Request was aborted - don't fire error events\n              return;\n            }\n            dispatchError(this, response.error?.message || \"Network error\");\n            return;\n          }\n\n          // Fire upload complete events\n          if (!this._uploadComplete) {\n            this._uploadComplete = true;\n            if (this._uploadListener) {\n              uploadProgress.loaded = uploadProgress.total;\n              fireAnEvent(\"progress\", upload, ProgressEvent, uploadProgress);\n              fireAnEvent(\"load\", upload, ProgressEvent, uploadProgress);\n              fireAnEvent(\"loadend\", upload, ProgressEvent, uploadProgress);\n            }\n          }\n\n          // Process response headers (CORS filtering done by performFetch)\n          const { headers, filteredResponseHeaders } = response;\n\n          this.responseURL = response.url;\n          this.status = response.status;\n          this.statusText = response.statusText;\n          this._responseHeaders = headers;\n          this._filteredResponseHeaders = filteredResponseHeaders;\n\n          // Set up progress tracking\n          // If content-encoding is set, the body was compressed and we report decompressed bytes,\n          // so lengthComputable must be false (method b from the XHR spec)\n          const contentEncoding = headers.get(\"content-encoding\");\n          const contentLength = headers.get(\"content-length\") || \"0\";\n          const bufferLength = parseInt(contentLength) || 0;\n          const progressObj = { lengthComputable: false, loaded: 0, total: 0 };\n          if (bufferLength !== 0 && !contentEncoding) {\n            progressObj.total = bufferLength;\n            progressObj.lengthComputable = true;\n          }\n\n          // Pre-allocate buffer\n          this._responseBytes = new Uint8Array(this._bufferStepSize);\n          this._responseCache = null;\n          this._responseTextCache = null;\n          this._responseXMLCache = null;\n\n          readyStateChange(this, READY_STATES.HEADERS_RECEIVED);\n\n          // Track progress for deduplication\n          let lastProgressReported;\n\n          // Stream the response body\n          if (response.body) {\n            for await (const chunk of response.body) {\n              // Check if aborted\n              if (abortController.signal.aborted) {\n                break;\n              }\n\n              // Store decompressed bytes\n              this._totalReceivedChunkSize += chunk.length;\n              if (this._totalReceivedChunkSize >= this._bufferStepSize) {\n                this._bufferStepSize *= 2;\n                while (this._totalReceivedChunkSize >= this._bufferStepSize) {\n                  this._bufferStepSize *= 2;\n                }\n                const tmpBuf = new Uint8Array(this._bufferStepSize);\n                tmpBuf.set(this._responseBytes);\n                this._responseBytes = tmpBuf;\n              }\n              this._responseBytes.set(chunk, this._totalReceivedChunkSize - chunk.length);\n              this._responseCache = null;\n              this._responseTextCache = null;\n              this._responseXMLCache = null;\n\n              if (this.readyState === READY_STATES.HEADERS_RECEIVED) {\n                this.readyState = READY_STATES.LOADING;\n              }\n              fireAnEvent(\"readystatechange\", this);\n\n              progressObj.loaded = this._totalReceivedChunkSize;\n              if (lastProgressReported !== progressObj.loaded) {\n                lastProgressReported = progressObj.loaded;\n                fireAnEvent(\"progress\", this, ProgressEvent, progressObj);\n              }\n            }\n          }\n\n          // Request complete - trim the pre-allocated buffer to actual size (zero-copy when available)\n          if (this._responseBytes) {\n            this._responseBytes = trimUint8Array(this._responseBytes, this._totalReceivedChunkSize);\n          }\n          clearTimeout(this._timeoutId);\n          this._timeoutFn = null;\n          this._timeoutStart = 0;\n          this._controller = null;\n\n          if (this._requestManager) {\n            this._requestManager.remove(requestManagerEntry);\n          }\n\n          // Don't fire completion events if aborted\n          if (abortController.signal.aborted) {\n            return;\n          }\n\n          // Fire final progress if not already fired with this loaded value\n          if (lastProgressReported !== progressObj.loaded) {\n            fireAnEvent(\"progress\", this, ProgressEvent, progressObj);\n          }\n          readyStateChange(this, READY_STATES.DONE);\n          fireAnEvent(\"load\", this, ProgressEvent, progressObj);\n          fireAnEvent(\"loadend\", this, ProgressEvent, progressObj);\n        } catch (err) {\n          this._controller = null;\n          if (this._requestManager) {\n            this._requestManager.remove(requestManagerEntry);\n          }\n          // Don't fire error events if aborted\n          if (!abortController.signal.aborted) {\n            dispatchError(this, err.message || String(err));\n          }\n        }\n      })();\n\n      if (this.timeout > 0) {\n        this._timeoutStart = (new Date()).getTime();\n        this._timeoutFn = () => {\n          this._controller?.abort();\n          if (!(this.readyState === READY_STATES.UNSENT ||\n              (this.readyState === READY_STATES.OPENED && !this._send) ||\n              this.readyState === READY_STATES.DONE)) {\n            this._send = false;\n            let stateChanged = false;\n            if (!this._uploadComplete) {\n              fireAnEvent(\"progress\", upload, ProgressEvent);\n              readyStateChange(this, READY_STATES.DONE);\n              fireAnEvent(\"timeout\", upload, ProgressEvent);\n              fireAnEvent(\"loadend\", upload, ProgressEvent);\n              stateChanged = true;\n            }\n            fireAnEvent(\"progress\", this, ProgressEvent);\n            if (!stateChanged) {\n              readyStateChange(this, READY_STATES.DONE);\n            }\n            fireAnEvent(\"timeout\", this, ProgressEvent);\n            fireAnEvent(\"loadend\", this, ProgressEvent);\n          }\n          this.readyState = READY_STATES.UNSENT;\n        };\n        this._timeoutId = setTimeout(this._timeoutFn, this.timeout);\n      }\n    }\n  }\n\n  setRequestHeader(header, value) {\n    if (this.readyState !== READY_STATES.OPENED) {\n      throw DOMException.create(\n        this._globalObject,\n        [\"setRequestHeader() can only be called in the OPENED state.\", \"InvalidStateError\"]\n      );\n    }\n    if (this._send) {\n      throw DOMException.create(\n        this._globalObject,\n        [\"setRequestHeader() cannot be called after send()\", \"InvalidStateError\"]\n      );\n    }\n\n    value = normalizeHeaderValue(value);\n\n    if (!isHeaderName(header)) {\n      throw DOMException.create(this._globalObject, [\"Invalid header name\", \"SyntaxError\"]);\n    }\n    if (!isHeaderValue(value)) {\n      throw DOMException.create(this._globalObject, [\"Invalid header value\", \"SyntaxError\"]);\n    }\n\n    if (isForbiddenRequestHeader(header, value)) {\n      return;\n    }\n\n    this._requestHeaders.combine(header, value);\n  }\n\n  // Serialization methods for sync XHR worker communication\n\n  // Called in main process before spawning sync worker\n  _serializeRequest() {\n    return {\n      method: this._method,\n      url: this._url,\n      body: this._body,\n      requestHeaders: this._requestHeaders.toJSON(),\n      withCredentials: this._withCredentials,\n      mimeType: this._mimeType,\n      auth: this._auth,\n      responseType: this._responseType,\n      timeout: this._timeout,\n      preflight: this._preflight,\n      cookieJar: this._cookieJar.serializeSync(),\n      encoding: this._encoding,\n      origin: this._origin,\n      referrer: this._referrer,\n      userAgent: this._userAgent\n    };\n  }\n\n  // Called in main process after sync worker returns\n  _adoptSerializedResponse(response) {\n    this.status = response.status;\n    this.statusText = response.statusText;\n    this.responseURL = response.responseURL;\n\n    if (response.responseBytes) {\n      this._responseBytes = trimUint8Array(response.responseBytes, response.totalReceivedChunkSize);\n      this._totalReceivedChunkSize = response.totalReceivedChunkSize;\n    }\n    this._responseHeaders = HeaderList.fromJSON(response.responseHeaders);\n    this._filteredResponseHeaders = response.filteredResponseHeaders;\n    this._error = response.error || \"\";\n    this._uploadComplete = response.uploadComplete;\n\n    if (response.cookieJar) {\n      this._cookieJar = tough.CookieJar.deserializeSync(\n        response.cookieJar,\n        this._ownerDocument._cookieJar.store\n      );\n    }\n  }\n\n  // Called in worker to set up XHR from serialized config\n  _adoptSerializedRequest(config) {\n    this._method = config.method;\n    this._url = config.url;\n    this._body = config.body;\n    this._requestHeaders = HeaderList.fromJSON(config.requestHeaders);\n    this._synchronous = false; // Run as async in worker\n    this._withCredentials = config.withCredentials;\n    this._mimeType = config.mimeType;\n    this._auth = config.auth;\n    this._responseType = config.responseType;\n    this._timeout = config.timeout;\n    this._preflight = config.preflight;\n    this._cookieJar = config.cookieJar ?\n      tough.CookieJar.deserializeSync(config.cookieJar) :\n      null;\n    this._encoding = config.encoding;\n    this._origin = config.origin;\n    this._referrer = config.referrer;\n    this._userAgent = config.userAgent;\n\n    this.readyState = READY_STATES.OPENED;\n  }\n\n  // Called in worker to serialize response\n  _serializeResponse() {\n    let error = this._error;\n    if (error && typeof error !== \"string\") {\n      error = error.stack || inspect(error);\n    }\n\n    return {\n      status: this.status,\n      statusText: this.statusText,\n      responseURL: this.responseURL,\n      responseBytes: this._responseBytes,\n      totalReceivedChunkSize: this._totalReceivedChunkSize,\n      responseHeaders: this._responseHeaders.toJSON(),\n      filteredResponseHeaders: this._filteredResponseHeaders,\n      error,\n      uploadComplete: this._uploadComplete,\n      cookieJar: this._cookieJar.serializeSync()\n    };\n  }\n}\n\nsetupForSimpleEventAccessors(XMLHttpRequestImpl.prototype, [\"readystatechange\"]);\n\nfunction readyStateChange(xhr, readyState) {\n  if (xhr.readyState === readyState) {\n    return;\n  }\n\n  xhr.readyState = readyState;\n\n  fireAnEvent(\"readystatechange\", xhr);\n}\n\nfunction finalMIMEType(xhr) {\n  return xhr._overrideMIMEType || xhr._responseHeaders.get(\"content-type\");\n}\n\nfunction finalCharset(xhr) {\n  if (xhr._overrideCharset) {\n    return xhr._overrideCharset;\n  }\n  const parsedContentType = MIMEType.parse(xhr._responseHeaders.get(\"content-type\"));\n  if (parsedContentType) {\n    return labelToName(parsedContentType.parameters.get(\"charset\"));\n  }\n  return null;\n}\n\nfunction extractBody(bodyInit) {\n  // https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n  // We represent the body as a `Uint8Array`.\n\n  if (Blob.isImpl(bodyInit)) {\n    return {\n      body: bodyInit._bytes,\n      type: bodyInit.type === \"\" ? null : bodyInit.type\n    };\n  } else if (idlUtils.isArrayBuffer(bodyInit)) {\n    return {\n      body: new Uint8Array(bodyInit).slice(0),\n      type: null\n    };\n  } else if (ArrayBuffer.isView(bodyInit)) {\n    return {\n      body: new Uint8Array(bodyInit),\n      type: null\n    };\n  } else if (FormData.isImpl(bodyInit)) {\n    const { boundary, outputChunks } = serializeEntryList(bodyInit._entries);\n\n    return {\n      body: concatTypedArrays(outputChunks),\n      type: \"multipart/form-data; boundary=\" + utf8Decode(boundary)\n    };\n  }\n\n  // Must be a string\n  return {\n    body: utf8Encode(bodyInit),\n    type: \"text/plain;charset=UTF-8\"\n  };\n}\n\nexports.implementation = XMLHttpRequestImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Document = require(\"./Document.js\");\nconst Blob = require(\"./Blob.js\");\nconst FormData = require(\"./FormData.js\");\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst XMLHttpRequestResponseType = require(\"./XMLHttpRequestResponseType.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst XMLHttpRequestEventTarget = require(\"./XMLHttpRequestEventTarget.js\");\n\nconst interfaceName = \"XMLHttpRequest\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'XMLHttpRequest'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"XMLHttpRequest\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  XMLHttpRequestEventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"DedicatedWorker\", \"SharedWorker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class XMLHttpRequest extends globalObject.XMLHttpRequestEventTarget {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    open(method, url) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'open' called on an object that is not a valid instance of XMLHttpRequest.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'open' on 'XMLHttpRequest': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      switch (arguments.length) {\n        case 2:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"ByteString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          break;\n        case 3:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"ByteString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            curArg = conversions[\"boolean\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 3\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          break;\n        case 4:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"ByteString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            curArg = conversions[\"boolean\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 3\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[3];\n            if (curArg !== undefined) {\n              if (curArg === null || curArg === undefined) {\n                curArg = null;\n              } else {\n                curArg = conversions[\"USVString\"](curArg, {\n                  context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 4\",\n                  globals: globalObject\n                });\n              }\n            } else {\n              curArg = null;\n            }\n            args.push(curArg);\n          }\n          break;\n        default:\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"ByteString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[1];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 2\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[2];\n            curArg = conversions[\"boolean\"](curArg, {\n              context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 3\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[3];\n            if (curArg !== undefined) {\n              if (curArg === null || curArg === undefined) {\n                curArg = null;\n              } else {\n                curArg = conversions[\"USVString\"](curArg, {\n                  context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 4\",\n                  globals: globalObject\n                });\n              }\n            } else {\n              curArg = null;\n            }\n            args.push(curArg);\n          }\n          {\n            let curArg = arguments[4];\n            if (curArg !== undefined) {\n              if (curArg === null || curArg === undefined) {\n                curArg = null;\n              } else {\n                curArg = conversions[\"USVString\"](curArg, {\n                  context: \"Failed to execute 'open' on 'XMLHttpRequest': parameter 5\",\n                  globals: globalObject\n                });\n              }\n            } else {\n              curArg = null;\n            }\n            args.push(curArg);\n          }\n      }\n      return esValue[implSymbol].open(...args);\n    }\n\n    setRequestHeader(name, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setRequestHeader' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'setRequestHeader' on 'XMLHttpRequest': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'setRequestHeader' on 'XMLHttpRequest': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setRequestHeader(...args);\n    }\n\n    send() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'send' called on an object that is not a valid instance of XMLHttpRequest.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          if (curArg === null || curArg === undefined) {\n            curArg = null;\n          } else {\n            if (Document.is(curArg) || Blob.is(curArg) || FormData.is(curArg)) {\n              curArg = utils.implForWrapper(curArg);\n            } else if (utils.isArrayBuffer(curArg)) {\n              curArg = conversions[\"ArrayBuffer\"](curArg, {\n                context: \"Failed to execute 'send' on 'XMLHttpRequest': parameter 1\",\n                globals: globalObject\n              });\n            } else if (ArrayBuffer.isView(curArg)) {\n              curArg = conversions[\"ArrayBufferView\"](curArg, {\n                context: \"Failed to execute 'send' on 'XMLHttpRequest': parameter 1\",\n                globals: globalObject\n              });\n            } else {\n              curArg = conversions[\"USVString\"](curArg, {\n                context: \"Failed to execute 'send' on 'XMLHttpRequest': parameter 1\",\n                globals: globalObject\n              });\n            }\n          }\n        } else {\n          curArg = null;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].send(...args);\n    }\n\n    abort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'abort' called on an object that is not a valid instance of XMLHttpRequest.\");\n      }\n\n      return esValue[implSymbol].abort();\n    }\n\n    getResponseHeader(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getResponseHeader' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getResponseHeader' on 'XMLHttpRequest': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'getResponseHeader' on 'XMLHttpRequest': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getResponseHeader(...args);\n    }\n\n    getAllResponseHeaders() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getAllResponseHeaders' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol].getAllResponseHeaders();\n    }\n\n    overrideMimeType(mime) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'overrideMimeType' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'overrideMimeType' on 'XMLHttpRequest': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'overrideMimeType' on 'XMLHttpRequest': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].overrideMimeType(...args);\n    }\n\n    get onreadystatechange() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onreadystatechange' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onreadystatechange\"]);\n    }\n\n    set onreadystatechange(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onreadystatechange' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onreadystatechange' property on 'XMLHttpRequest': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onreadystatechange\"] = V;\n    }\n\n    get readyState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readyState' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"readyState\"];\n    }\n\n    get timeout() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get timeout' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"timeout\"];\n    }\n\n    set timeout(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set timeout' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      V = conversions[\"unsigned long\"](V, {\n        context: \"Failed to set the 'timeout' property on 'XMLHttpRequest': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"timeout\"] = V;\n    }\n\n    get withCredentials() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get withCredentials' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"withCredentials\"];\n    }\n\n    set withCredentials(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set withCredentials' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      V = conversions[\"boolean\"](V, {\n        context: \"Failed to set the 'withCredentials' property on 'XMLHttpRequest': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"withCredentials\"] = V;\n    }\n\n    get upload() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get upload' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"upload\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"upload\"]);\n      });\n    }\n\n    get responseURL() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get responseURL' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"responseURL\"];\n    }\n\n    get status() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get status' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"status\"];\n    }\n\n    get statusText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get statusText' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"statusText\"];\n    }\n\n    get responseType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get responseType' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"responseType\"]);\n    }\n\n    set responseType(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set responseType' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      V = `${V}`;\n      if (!XMLHttpRequestResponseType.enumerationValues.has(V)) {\n        return;\n      }\n\n      esValue[implSymbol][\"responseType\"] = V;\n    }\n\n    get response() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get response' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"response\"];\n    }\n\n    get responseText() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get responseText' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return esValue[implSymbol][\"responseText\"];\n    }\n\n    get responseXML() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get responseXML' called on an object that is not a valid instance of XMLHttpRequest.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"responseXML\"]);\n    }\n  }\n  Object.defineProperties(XMLHttpRequest.prototype, {\n    open: { enumerable: true },\n    setRequestHeader: { enumerable: true },\n    send: { enumerable: true },\n    abort: { enumerable: true },\n    getResponseHeader: { enumerable: true },\n    getAllResponseHeaders: { enumerable: true },\n    overrideMimeType: { enumerable: true },\n    onreadystatechange: { enumerable: true },\n    readyState: { enumerable: true },\n    timeout: { enumerable: true },\n    withCredentials: { enumerable: true },\n    upload: { enumerable: true },\n    responseURL: { enumerable: true },\n    status: { enumerable: true },\n    statusText: { enumerable: true },\n    responseType: { enumerable: true },\n    response: { enumerable: true },\n    responseText: { enumerable: true },\n    responseXML: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"XMLHttpRequest\", configurable: true },\n    UNSENT: { value: 0, enumerable: true },\n    OPENED: { value: 1, enumerable: true },\n    HEADERS_RECEIVED: { value: 2, enumerable: true },\n    LOADING: { value: 3, enumerable: true },\n    DONE: { value: 4, enumerable: true }\n  });\n  Object.defineProperties(XMLHttpRequest, {\n    UNSENT: { value: 0, enumerable: true },\n    OPENED: { value: 1, enumerable: true },\n    HEADERS_RECEIVED: { value: 2, enumerable: true },\n    LOADING: { value: 3, enumerable: true },\n    DONE: { value: 4, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = XMLHttpRequest;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: XMLHttpRequest\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/xhr/XMLHttpRequest-impl.js\");\n","\"use strict\";\n\nconst enumerationValues = new Set([\"blob\", \"arraybuffer\"]);\nexports.enumerationValues = enumerationValues;\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  const string = `${value}`;\n  if (!enumerationValues.has(string)) {\n    throw new globalObject.TypeError(`${context} '${string}' is not a valid enumeration value for BinaryType`);\n  }\n  return string;\n};\n","\"use strict\";\nconst { WebSocket } = require(\"undici\");\nconst { parseURL, serializeURL, serializeURLOrigin } = require(\"whatwg-url\");\nconst { setupForSimpleEventAccessors } = require(\"../helpers/create-event-accessor\");\nconst { fireAnEvent } = require(\"../helpers/events\");\nconst { copyToArrayBufferInTargetRealmDestructively } = require(\"../helpers/binary-data\");\nconst IterableWeakSet = require(\"../helpers/iterable-weak-set\");\nconst EventTargetImpl = require(\"../events/EventTarget-impl\").implementation;\nconst Blob = require(\"../../../generated/idl/Blob\");\nconst CloseEvent = require(\"../../../generated/idl/CloseEvent\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\nconst MessageEvent = require(\"../../../generated/idl/MessageEvent\");\n\nconst openSockets = new WeakMap();\n\nclass WebSocketImpl extends EventTargetImpl {\n  constructor(globalObject, [url, protocols]) {\n    super(globalObject);\n\n    // Do our own URL parsing because we want to be consistent with the rest of jsdom and use whatwg-url, not Node.js's\n    // URL.\n    const urlRecord = parseURL(url);\n    if (urlRecord === null) {\n      throw DOMException.create(this._globalObject, [`The URL '${url}' is invalid.`, \"SyntaxError\"]);\n    }\n    if (urlRecord.scheme !== \"ws\" && urlRecord.scheme !== \"wss\") {\n      throw DOMException.create(this._globalObject, [\n        `The URL's scheme must be either 'ws' or 'wss'. '${urlRecord.scheme}' is not allowed.`,\n        \"SyntaxError\"\n      ]);\n    }\n    if (urlRecord.fragment !== null) {\n      throw DOMException.create(this._globalObject, [\n        `The URL contains a fragment identifier ('${urlRecord.fragment}'). Fragment identifiers ` +\n        \"are not allowed in WebSocket URLs.\",\n        \"SyntaxError\"\n      ]);\n    }\n\n    this._urlRecord = urlRecord;\n    this._urlSerialized = serializeURL(urlRecord);\n    this._binaryType = \"blob\";\n\n    const wsOptions = {\n      dispatcher: globalObject._dispatcher,\n      protocols,\n      headers: {\n        // Origin is required for WebSocket and uses the window's origin\n        origin: globalObject._origin\n      }\n    };\n\n    this._ws = wrapAndRethrowNodeDOMExceptions(() => {\n      return new WebSocket(serializeURL(urlRecord), wsOptions);\n    }, this._globalObject);\n\n    // Always use \"arraybuffer\" for `this._ws`'s `binaryType`. It will be converted to the correct type by `_onMessage`,\n    // and jsdom's `Blob`s are just wrappers around `ArrayBuffer`s anyway.\n    this._ws.binaryType = \"arraybuffer\";\n\n    // Track open sockets for cleanup\n    let openSocketsForWindow = openSockets.get(globalObject._globalProxy);\n    if (openSocketsForWindow === undefined) {\n      openSocketsForWindow = new IterableWeakSet();\n      openSockets.set(globalObject._globalProxy, openSocketsForWindow);\n    }\n    openSocketsForWindow.add(this);\n\n    // Set up event forwarding. We use `setTimeout()` to work around https://github.com/nodejs/undici/issues/4741 where\n    // undici fires events synchronously during `close()`, but the spec requires them to fire asynchronously.\n    this._ws.addEventListener(\"open\", () => {\n      setTimeout(() => fireAnEvent(\"open\", this), 0);\n    });\n\n    this._ws.addEventListener(\"message\", event => {\n      // Capture readyState now, before setTimeout, because undici may transition to CLOSED before our setTimeout fires,\n      // but the spec says readyState must be OPEN during message events.\n      const readyStateWhenReceived = this._ws.readyState;\n      setTimeout(() => {\n        const prevReadyState = this._readyState;\n        this._readyState = readyStateWhenReceived;\n        this._onMessage(event);\n        this._readyState = prevReadyState;\n      }, 0);\n    });\n\n    this._ws.addEventListener(\"error\", () => {\n      setTimeout(() => fireAnEvent(\"error\", this), 0);\n    });\n\n    this._ws.addEventListener(\"close\", event => {\n      setTimeout(() => {\n        // Set readyState to CLOSED when firing the close event. We manage this ourselves because undici has bugs with\n        // readyState during close: https://github.com/nodejs/undici/issues/4742.\n        this._readyState = this._ws.CLOSED;\n        openSocketsForWindow.delete(this);\n        fireAnEvent(\"close\", this, CloseEvent, {\n          wasClean: event.wasClean,\n          code: event.code,\n          reason: event.reason\n        });\n      }, 0);\n    });\n  }\n\n  _onMessage({ data }) {\n    let dataForEvent;\n    if (typeof data === \"string\") {\n      dataForEvent = data;\n    } else if (this._binaryType === \"arraybuffer\") {\n      dataForEvent = copyToArrayBufferInTargetRealmDestructively(data, this._globalObject);\n    } else {\n      // `this._binaryType === \"blob\"`\n      dataForEvent = Blob.create(this._globalObject, [undefined, { type: \"\" }], {\n        fastPathArrayBufferToWrap: data\n      });\n    }\n\n    fireAnEvent(\"message\", this, MessageEvent, {\n      data: dataForEvent,\n      origin: serializeURLOrigin(this._urlRecord)\n    });\n  }\n\n  get url() {\n    return this._urlSerialized;\n  }\n\n  get readyState() {\n    // Use captured readyState if available (workaround for undici bug #4742)\n    return this._readyState ?? this._ws.readyState;\n  }\n\n  get bufferedAmount() {\n    return this._ws.bufferedAmount;\n  }\n\n  get extensions() {\n    return this._ws.extensions;\n  }\n\n  get protocol() {\n    return this._ws.protocol;\n  }\n\n  get binaryType() {\n    return this._binaryType;\n  }\n\n  set binaryType(value) {\n    this._binaryType = value;\n  }\n\n  close(code, reason) {\n    return wrapAndRethrowNodeDOMExceptions(() => {\n      // Set readyState to CLOSING before calling undici's close(). We manage this ourselves because\n      // undici has bugs with readyState during close - see https://github.com/nodejs/undici/issues/4742\n      // Only set to CLOSING if not already CLOSED (calling close() on a closed socket is a no-op).\n      if (this._readyState !== this._ws.CLOSED) {\n        this._readyState = this._ws.CLOSING;\n      }\n      return this._ws.close(code, reason);\n    }, this._globalObject);\n  }\n\n  send(data) {\n    return wrapAndRethrowNodeDOMExceptions(() => {\n      // Convert jsdom Blob to ArrayBuffer. Other types are passed through as-is.\n      if (Blob.isImpl(data)) {\n        data = data._bytes.buffer;\n      }\n\n      return this._ws.send(data);\n    }, this._globalObject);\n  }\n\n  // https://websockets.spec.whatwg.org/#make-disappear\n  // But with additional work from jsdom to remove all event listeners.\n  _makeDisappear() {\n    this._eventListeners = Object.create(null);\n    if (this._ws.readyState === this._ws.OPEN || this._ws.readyState === this._ws.CONNECTING) {\n      // Close without a code - undici doesn't allow reserved codes like 1001\n      this._ws.close();\n    }\n  }\n\n  static cleanUpWindow(window) {\n    const openSocketsForWindow = openSockets.get(window._globalProxy);\n    if (openSocketsForWindow !== undefined) {\n      for (const ws of openSocketsForWindow) {\n        ws._makeDisappear();\n      }\n      openSockets.delete(window._globalProxy);\n    }\n  }\n}\n\nfunction wrapAndRethrowNodeDOMExceptions(func, globalObject) {\n  try {\n    return func();\n  } catch (e) {\n    if (e instanceof globalThis.DOMException) {\n      throw DOMException.create(globalObject, [e.message, e.name]);\n    }\n    throw e;\n  }\n}\n\nsetupForSimpleEventAccessors(WebSocketImpl.prototype, [\"open\", \"message\", \"error\", \"close\"]);\n\nexports.implementation = WebSocketImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Blob = require(\"./Blob.js\");\nconst EventHandlerNonNull = require(\"./EventHandlerNonNull.js\");\nconst BinaryType = require(\"./BinaryType.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst EventTarget = require(\"./EventTarget.js\");\n\nconst interfaceName = \"WebSocket\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'WebSocket'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"WebSocket\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  EventTarget._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class WebSocket extends globalObject.EventTarget {\n    constructor(url) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'WebSocket': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to construct 'WebSocket': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          if (utils.isObject(curArg)) {\n            if (curArg[Symbol.iterator] !== undefined) {\n              if (!utils.isObject(curArg)) {\n                throw new globalObject.TypeError(\n                  \"Failed to construct 'WebSocket': parameter 2\" + \" sequence\" + \" is not an iterable object.\"\n                );\n              } else {\n                const V = [];\n                const tmp = curArg;\n                for (let nextItem of tmp) {\n                  nextItem = conversions[\"DOMString\"](nextItem, {\n                    context: \"Failed to construct 'WebSocket': parameter 2\" + \" sequence\" + \"'s element\",\n                    globals: globalObject\n                  });\n\n                  V.push(nextItem);\n                }\n                curArg = V;\n              }\n            } else {\n            }\n          } else {\n            curArg = conversions[\"DOMString\"](curArg, {\n              context: \"Failed to construct 'WebSocket': parameter 2\",\n              globals: globalObject\n            });\n          }\n        } else {\n          curArg = [];\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    close() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'close' called on an object that is not a valid instance of WebSocket.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unsigned short\"](curArg, {\n            context: \"Failed to execute 'close' on 'WebSocket': parameter 1\",\n            globals: globalObject,\n            clamp: true\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'close' on 'WebSocket': parameter 2\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].close(...args);\n    }\n\n    send(data) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'send' called on an object that is not a valid instance of WebSocket.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'send' on 'WebSocket': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (Blob.is(curArg)) {\n          {\n            let curArg = arguments[0];\n            curArg = Blob.convert(globalObject, curArg, {\n              context: \"Failed to execute 'send' on 'WebSocket': parameter 1\"\n            });\n            args.push(curArg);\n          }\n        } else if (utils.isArrayBuffer(curArg)) {\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"ArrayBuffer\"](curArg, {\n              context: \"Failed to execute 'send' on 'WebSocket': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n        } else if (ArrayBuffer.isView(curArg)) {\n          {\n            let curArg = arguments[0];\n            if (ArrayBuffer.isView(curArg)) {\n              curArg = conversions[\"ArrayBufferView\"](curArg, {\n                context: \"Failed to execute 'send' on 'WebSocket': parameter 1\",\n                globals: globalObject\n              });\n            } else {\n              throw new globalObject.TypeError(\n                \"Failed to execute 'send' on 'WebSocket': parameter 1\" + \" is not of any supported type.\"\n              );\n            }\n            args.push(curArg);\n          }\n        } else {\n          {\n            let curArg = arguments[0];\n            curArg = conversions[\"USVString\"](curArg, {\n              context: \"Failed to execute 'send' on 'WebSocket': parameter 1\",\n              globals: globalObject\n            });\n            args.push(curArg);\n          }\n        }\n      }\n      return esValue[implSymbol].send(...args);\n    }\n\n    get url() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get url' called on an object that is not a valid instance of WebSocket.\");\n      }\n\n      return esValue[implSymbol][\"url\"];\n    }\n\n    get readyState() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get readyState' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return esValue[implSymbol][\"readyState\"];\n    }\n\n    get bufferedAmount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get bufferedAmount' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return esValue[implSymbol][\"bufferedAmount\"];\n    }\n\n    get onopen() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get onopen' called on an object that is not a valid instance of WebSocket.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onopen\"]);\n    }\n\n    set onopen(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set onopen' called on an object that is not a valid instance of WebSocket.\");\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onopen' property on 'WebSocket': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onopen\"] = V;\n    }\n\n    get onerror() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onerror' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onerror\"]);\n    }\n\n    set onerror(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onerror' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onerror' property on 'WebSocket': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onerror\"] = V;\n    }\n\n    get onclose() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onclose' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onclose\"]);\n    }\n\n    set onclose(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onclose' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onclose' property on 'WebSocket': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onclose\"] = V;\n    }\n\n    get extensions() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get extensions' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return esValue[implSymbol][\"extensions\"];\n    }\n\n    get protocol() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get protocol' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return esValue[implSymbol][\"protocol\"];\n    }\n\n    get onmessage() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get onmessage' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"onmessage\"]);\n    }\n\n    set onmessage(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set onmessage' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      if (!utils.isObject(V)) {\n        V = null;\n      } else {\n        V = EventHandlerNonNull.convert(globalObject, V, {\n          context: \"Failed to set the 'onmessage' property on 'WebSocket': The provided value\"\n        });\n      }\n      esValue[implSymbol][\"onmessage\"] = V;\n    }\n\n    get binaryType() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get binaryType' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"binaryType\"]);\n    }\n\n    set binaryType(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'set binaryType' called on an object that is not a valid instance of WebSocket.\"\n        );\n      }\n\n      V = `${V}`;\n      if (!BinaryType.enumerationValues.has(V)) {\n        return;\n      }\n\n      esValue[implSymbol][\"binaryType\"] = V;\n    }\n  }\n  Object.defineProperties(WebSocket.prototype, {\n    close: { enumerable: true },\n    send: { enumerable: true },\n    url: { enumerable: true },\n    readyState: { enumerable: true },\n    bufferedAmount: { enumerable: true },\n    onopen: { enumerable: true },\n    onerror: { enumerable: true },\n    onclose: { enumerable: true },\n    extensions: { enumerable: true },\n    protocol: { enumerable: true },\n    onmessage: { enumerable: true },\n    binaryType: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"WebSocket\", configurable: true },\n    CONNECTING: { value: 0, enumerable: true },\n    OPEN: { value: 1, enumerable: true },\n    CLOSING: { value: 2, enumerable: true },\n    CLOSED: { value: 3, enumerable: true }\n  });\n  Object.defineProperties(WebSocket, {\n    CONNECTING: { value: 0, enumerable: true },\n    OPEN: { value: 1, enumerable: true },\n    CLOSING: { value: 2, enumerable: true },\n    CLOSED: { value: 3, enumerable: true }\n  });\n  ctorRegistry[interfaceName] = WebSocket;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: WebSocket\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/websockets/WebSocket-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Node = require(\"./Node.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"endContainer\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = Node.convert(globalObject, value, { context: context + \" has member 'endContainer' that\" });\n\n      ret[key] = value;\n    } else {\n      throw new globalObject.TypeError(\"endContainer is required in 'StaticRangeInit'\");\n    }\n  }\n\n  {\n    const key = \"endOffset\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'endOffset' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      throw new globalObject.TypeError(\"endOffset is required in 'StaticRangeInit'\");\n    }\n  }\n\n  {\n    const key = \"startContainer\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = Node.convert(globalObject, value, { context: context + \" has member 'startContainer' that\" });\n\n      ret[key] = value;\n    } else {\n      throw new globalObject.TypeError(\"startContainer is required in 'StaticRangeInit'\");\n    }\n  }\n\n  {\n    const key = \"startOffset\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unsigned long\"](value, {\n        context: context + \" has member 'startOffset' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      throw new globalObject.TypeError(\"startOffset is required in 'StaticRangeInit'\");\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst NODE_TYPE = require(\"../node-type\");\n\nconst AbstractRangeImpl = require(\"./AbstractRange-impl\").implementation;\n\n// https://dom.spec.whatwg.org/#staticrange\nclass StaticRangeImpl extends AbstractRangeImpl {\n  // https://dom.spec.whatwg.org/#dom-staticrange-staticrange\n  constructor(globalObject, args) {\n    const { startContainer, startOffset, endContainer, endOffset } = args[0];\n\n    if (\n      startContainer.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE ||\n      startContainer.nodeType === NODE_TYPE.ATTRIBUTE_NODE ||\n      endContainer.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE ||\n      endContainer.nodeType === NODE_TYPE.ATTRIBUTE_NODE\n    ) {\n      throw DOMException.create(globalObject, [\"The supplied node is incorrect.\", \"InvalidNodeTypeError\"]);\n    }\n\n    super(globalObject, [], {\n      start: {\n        node: startContainer,\n        offset: startOffset\n      },\n      end: {\n        node: endContainer,\n        offset: endOffset\n      }\n    });\n  }\n}\n\nmodule.exports = {\n  implementation: StaticRangeImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst StaticRangeInit = require(\"./StaticRangeInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst AbstractRange = require(\"./AbstractRange.js\");\n\nconst interfaceName = \"StaticRange\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'StaticRange'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"StaticRange\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  AbstractRange._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class StaticRange extends globalObject.AbstractRange {\n    constructor(init) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'StaticRange': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = StaticRangeInit.convert(globalObject, curArg, {\n          context: \"Failed to construct 'StaticRange': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n  }\n  Object.defineProperties(StaticRange.prototype, {\n    [Symbol.toStringTag]: { value: \"StaticRange\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = StaticRange;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: StaticRange\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/range/StaticRange-impl.js\");\n","\"use strict\";\n\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst NODE_TYPE = require(\"../node-type\");\nconst { nodeLength, nodeRoot } = require(\"../helpers/node\");\nconst { domSymbolTree } = require(\"../helpers/internal-constants\");\nconst { compareBoundaryPointsPosition } = require(\"../range/boundary-point\");\n\nconst { setBoundaryPointStart, setBoundaryPointEnd } = require(\"../range/Range-impl\");\n\nconst Range = require(\"../../../generated/idl/Range\");\nconst { implForWrapper } = require(\"../../../generated/idl/utils\");\nconst { fireAnEvent } = require(\"../helpers/events\");\n\n// https://w3c.github.io/selection-api/#dfn-direction\nconst SELECTION_DIRECTION = {\n  FORWARDS: 1,\n  BACKWARDS: -1,\n  DIRECTIONLESS: 0\n};\n\n// https://w3c.github.io/selection-api/#dom-selection\nclass SelectionImpl {\n  constructor(globalObject) {\n    this._range = null;\n    this._direction = SELECTION_DIRECTION.DIRECTIONLESS;\n\n    this._globalObject = globalObject;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-anchornode\n  get anchorNode() {\n    const anchor = this._anchor;\n    return anchor ? anchor.node : null;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-anchoroffset\n  get anchorOffset() {\n    const anchor = this._anchor;\n    return anchor ? anchor.offset : 0;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-focusnode\n  get focusNode() {\n    const focus = this._focus;\n    return focus ? focus.node : null;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-focusoffset\n  get focusOffset() {\n    const focus = this._focus;\n    return focus ? focus.offset : 0;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-iscollapsed\n  get isCollapsed() {\n    return this._range === null || this._range.collapsed;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-rangecount\n  get rangeCount() {\n    return this._isEmpty() ? 0 : 1;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-type\n  get type() {\n    if (this._isEmpty()) {\n      return \"None\";\n    } else if (this._range.collapsed) {\n      return \"Caret\";\n    }\n\n    return \"Range\";\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-getrangeat\n  getRangeAt(index) {\n    if (index !== 0 || this._isEmpty()) {\n      throw DOMException.create(this._globalObject, [\"Invalid range index.\", \"IndexSizeError\"]);\n    }\n\n    return this._range;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-addrange\n  addRange(range) {\n    if (range._root === implForWrapper(this._globalObject._document) && this.rangeCount === 0) {\n      this._associateRange(range);\n    }\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-removerange\n  removeRange(range) {\n    if (range !== this._range) {\n      throw DOMException.create(this._globalObject, [\"Invalid range.\", \"NotFoundError\"]);\n    }\n\n    this._associateRange(null);\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-removeallranges\n  removeAllRanges() {\n    this._associateRange(null);\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-empty\n  empty() {\n    this.removeAllRanges();\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-collapse\n  collapse(node, offset) {\n    if (node === null) {\n      this.removeAllRanges();\n      return;\n    }\n\n    if (node.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) {\n      throw DOMException.create(this._globalObject, [\n        \"DocumentType Node can't be used as boundary point.\",\n        \"InvalidNodeTypeError\"\n      ]);\n    }\n\n    if (offset > nodeLength(node)) {\n      throw DOMException.create(this._globalObject, [\"Invalid range index.\", \"IndexSizeError\"]);\n    }\n\n    if (nodeRoot(node) !== implForWrapper(this._globalObject._document)) {\n      return;\n    }\n\n    const newRange = Range.createImpl(this._globalObject, [], {\n      start: { node, offset: 0 },\n      end: { node, offset: 0 }\n    });\n\n    setBoundaryPointStart(newRange, node, offset);\n    setBoundaryPointEnd(newRange, node, offset);\n\n    this._associateRange(newRange);\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-setposition\n  setPosition(node, offset) {\n    this.collapse(node, offset);\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-collapsetostart\n  collapseToStart() {\n    if (this._isEmpty()) {\n      throw DOMException.create(this._globalObject, [\"There is no selection to collapse.\", \"InvalidStateError\"]);\n    }\n\n    const { node, offset } = this._range._start;\n    const newRange = Range.createImpl(this._globalObject, [], {\n      start: { node, offset },\n      end: { node, offset }\n    });\n\n    this._associateRange(newRange);\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-collapsetoend\n  collapseToEnd() {\n    if (this._isEmpty()) {\n      throw DOMException.create(this._globalObject, [\"There is no selection to collapse.\", \"InvalidStateError\"]);\n    }\n\n    const { node, offset } = this._range._end;\n    const newRange = Range.createImpl(this._globalObject, [], {\n      start: { node, offset },\n      end: { node, offset }\n    });\n\n    this._associateRange(newRange);\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-extend\n  extend(node, offset) {\n    if (nodeRoot(node) !== implForWrapper(this._globalObject._document)) {\n      return;\n    }\n\n    if (this._isEmpty()) {\n      throw DOMException.create(this._globalObject, [\"There is no selection to extend.\", \"InvalidStateError\"]);\n    }\n\n    const { _anchor: oldAnchor } = this;\n    const newFocus = { node, offset };\n\n    const newRange = Range.createImpl(this._globalObject, [], {\n      start: { node, offset: 0 },\n      end: { node, offset: 0 }\n    });\n\n    if (nodeRoot(node) !== this._range._root) {\n      setBoundaryPointStart(newRange, newFocus.node, newFocus.offset);\n      setBoundaryPointEnd(newRange, newFocus.node, newFocus.offset);\n    } else if (compareBoundaryPointsPosition(oldAnchor, newFocus) <= 0) {\n      setBoundaryPointStart(newRange, oldAnchor.node, oldAnchor.offset);\n      setBoundaryPointEnd(newRange, newFocus.node, newFocus.offset);\n    } else {\n      setBoundaryPointStart(newRange, newFocus.node, newFocus.offset);\n      setBoundaryPointEnd(newRange, oldAnchor.node, oldAnchor.offset);\n    }\n\n    this._associateRange(newRange);\n\n    this._direction = compareBoundaryPointsPosition(newFocus, oldAnchor) === -1 ?\n      SELECTION_DIRECTION.BACKWARDS :\n      SELECTION_DIRECTION.FORWARDS;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-setbaseandextent\n  setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset) {\n    if (anchorOffset > nodeLength(anchorNode) || focusOffset > nodeLength(focusNode)) {\n      throw DOMException.create(this._globalObject, [\"Invalid anchor or focus offset.\", \"IndexSizeError\"]);\n    }\n\n    const document = implForWrapper(this._globalObject._document);\n    if (document !== nodeRoot(anchorNode) || document !== nodeRoot(focusNode)) {\n      return;\n    }\n\n    const anchor = { node: anchorNode, offset: anchorOffset };\n    const focus = { node: focusNode, offset: focusOffset };\n\n    let newRange;\n    if (compareBoundaryPointsPosition(anchor, focus) === -1) {\n      newRange = Range.createImpl(this._globalObject, [], {\n        start: { node: anchor.node, offset: anchor.offset },\n        end: { node: focus.node, offset: focus.offset }\n      });\n    } else {\n      newRange = Range.createImpl(this._globalObject, [], {\n        start: { node: focus.node, offset: focus.offset },\n        end: { node: anchor.node, offset: anchor.offset }\n      });\n    }\n\n    this._associateRange(newRange);\n\n    this._direction = compareBoundaryPointsPosition(focus, anchor) === -1 ?\n      SELECTION_DIRECTION.BACKWARDS :\n      SELECTION_DIRECTION.FORWARDS;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-selectallchildren\n  selectAllChildren(node) {\n    if (node.nodeType === NODE_TYPE.DOCUMENT_TYPE_NODE) {\n      throw DOMException.create(this._globalObject, [\n        \"DocumentType Node can't be used as boundary point.\",\n        \"InvalidNodeTypeError\"\n      ]);\n    }\n\n    const document = implForWrapper(this._globalObject._document);\n    if (document !== nodeRoot(node)) {\n      return;\n    }\n\n    const length = domSymbolTree.childrenCount(node);\n\n    const newRange = Range.createImpl(this._globalObject, [], {\n      start: { node, offset: 0 },\n      end: { node, offset: 0 }\n    });\n\n    setBoundaryPointStart(newRange, node, 0);\n    setBoundaryPointEnd(newRange, node, length);\n\n    this._associateRange(newRange);\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-deletefromdocument\n  deleteFromDocument() {\n    if (!this._isEmpty()) {\n      this._range.deleteContents();\n    }\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-containsnode\n  containsNode(node, allowPartialContainment) {\n    if (this._isEmpty() || nodeRoot(node) !== implForWrapper(this._globalObject._document)) {\n      return false;\n    }\n\n    const { _start, _end } = this._range;\n\n    const startIsBeforeNode = compareBoundaryPointsPosition(_start, { node, offset: 0 }) === -1;\n    const endIsAfterNode = compareBoundaryPointsPosition(_end, { node, offset: nodeLength(node) }) === 1;\n\n    return allowPartialContainment ?\n      startIsBeforeNode || endIsAfterNode :\n      startIsBeforeNode && endIsAfterNode;\n  }\n\n  // https://w3c.github.io/selection-api/#dom-selection-stringifier\n  toString() {\n    return this._range ? this._range.toString() : \"\";\n  }\n\n  // https://w3c.github.io/selection-api/#dfn-empty\n  _isEmpty() {\n    return this._range === null;\n  }\n\n  // https://w3c.github.io/selection-api/#dfn-anchor\n  get _anchor() {\n    if (!this._range) {\n      return null;\n    }\n\n    return this._direction === SELECTION_DIRECTION.FORWARDS ?\n      this._range._start :\n      this._range._end;\n  }\n\n  // https://w3c.github.io/selection-api/#dfn-focus\n  get _focus() {\n    if (!this._range) {\n      return null;\n    }\n\n    return this._direction === SELECTION_DIRECTION.FORWARDS ?\n      this._range._end :\n      this._range._start;\n  }\n\n  _associateRange(newRange) {\n    const didSelectionChange = this._range !== newRange &&\n      (\n        // Change from/to null selection\n        newRange === null ||\n        this._range === null ||\n        // Change of selection range\n        compareBoundaryPointsPosition(newRange._start, this._range._start) !== 0 ||\n        compareBoundaryPointsPosition(newRange._end, this._range._end) !== 0\n      );\n    this._range = newRange;\n    this._direction = newRange === null ? SELECTION_DIRECTION.DIRECTIONLESS : SELECTION_DIRECTION.FORWARDS;\n\n    // https://w3c.github.io/selection-api/#selectionchange-event\n    if (didSelectionChange) {\n      // Fire the event asynchronously, as it's done in the browser\n      const document = this._globalObject._document;\n      setTimeout(() => {\n        fireAnEvent(\"selectionchange\", implForWrapper(document));\n      }, 0);\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: SelectionImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Range = require(\"./Range.js\");\nconst Node = require(\"./Node.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Selection\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Selection'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Selection\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Selection {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    getRangeAt(index) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'getRangeAt' called on an object that is not a valid instance of Selection.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getRangeAt' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'getRangeAt' on 'Selection': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].getRangeAt(...args));\n    }\n\n    addRange(range) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'addRange' called on an object that is not a valid instance of Selection.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'addRange' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Range.convert(globalObject, curArg, {\n          context: \"Failed to execute 'addRange' on 'Selection': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].addRange(...args);\n    }\n\n    removeRange(range) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeRange' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'removeRange' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Range.convert(globalObject, curArg, {\n          context: \"Failed to execute 'removeRange' on 'Selection': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].removeRange(...args);\n    }\n\n    removeAllRanges() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'removeAllRanges' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return esValue[implSymbol].removeAllRanges();\n    }\n\n    empty() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'empty' called on an object that is not a valid instance of Selection.\");\n      }\n\n      return esValue[implSymbol].empty();\n    }\n\n    collapse(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'collapse' called on an object that is not a valid instance of Selection.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'collapse' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = Node.convert(globalObject, curArg, {\n            context: \"Failed to execute 'collapse' on 'Selection': parameter 1\"\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unsigned long\"](curArg, {\n            context: \"Failed to execute 'collapse' on 'Selection': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].collapse(...args);\n    }\n\n    setPosition(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setPosition' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setPosition' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg === null || curArg === undefined) {\n          curArg = null;\n        } else {\n          curArg = Node.convert(globalObject, curArg, {\n            context: \"Failed to execute 'setPosition' on 'Selection': parameter 1\"\n          });\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unsigned long\"](curArg, {\n            context: \"Failed to execute 'setPosition' on 'Selection': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setPosition(...args);\n    }\n\n    collapseToStart() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'collapseToStart' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return esValue[implSymbol].collapseToStart();\n    }\n\n    collapseToEnd() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'collapseToEnd' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return esValue[implSymbol].collapseToEnd();\n    }\n\n    extend(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'extend' called on an object that is not a valid instance of Selection.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'extend' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'extend' on 'Selection': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unsigned long\"](curArg, {\n            context: \"Failed to execute 'extend' on 'Selection': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].extend(...args);\n    }\n\n    setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'setBaseAndExtent' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      if (arguments.length < 4) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'setBaseAndExtent' on 'Selection': 4 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setBaseAndExtent' on 'Selection': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setBaseAndExtent' on 'Selection': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'setBaseAndExtent' on 'Selection': parameter 3\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        curArg = conversions[\"unsigned long\"](curArg, {\n          context: \"Failed to execute 'setBaseAndExtent' on 'Selection': parameter 4\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].setBaseAndExtent(...args);\n    }\n\n    selectAllChildren(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'selectAllChildren' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'selectAllChildren' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'selectAllChildren' on 'Selection': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].selectAllChildren(...args);\n    }\n\n    deleteFromDocument() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'deleteFromDocument' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].deleteFromDocument();\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    containsNode(node) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'containsNode' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'containsNode' on 'Selection': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'containsNode' on 'Selection': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"boolean\"](curArg, {\n            context: \"Failed to execute 'containsNode' on 'Selection': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = false;\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].containsNode(...args);\n    }\n\n    toString() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'toString' called on an object that is not a valid instance of Selection.\");\n      }\n\n      return esValue[implSymbol].toString();\n    }\n\n    get anchorNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get anchorNode' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"anchorNode\"]);\n    }\n\n    get anchorOffset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get anchorOffset' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return esValue[implSymbol][\"anchorOffset\"];\n    }\n\n    get focusNode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get focusNode' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol][\"focusNode\"]);\n    }\n\n    get focusOffset() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get focusOffset' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return esValue[implSymbol][\"focusOffset\"];\n    }\n\n    get isCollapsed() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get isCollapsed' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return esValue[implSymbol][\"isCollapsed\"];\n    }\n\n    get rangeCount() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get rangeCount' called on an object that is not a valid instance of Selection.\"\n        );\n      }\n\n      return esValue[implSymbol][\"rangeCount\"];\n    }\n\n    get type() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get type' called on an object that is not a valid instance of Selection.\");\n      }\n\n      return esValue[implSymbol][\"type\"];\n    }\n  }\n  Object.defineProperties(Selection.prototype, {\n    getRangeAt: { enumerable: true },\n    addRange: { enumerable: true },\n    removeRange: { enumerable: true },\n    removeAllRanges: { enumerable: true },\n    empty: { enumerable: true },\n    collapse: { enumerable: true },\n    setPosition: { enumerable: true },\n    collapseToStart: { enumerable: true },\n    collapseToEnd: { enumerable: true },\n    extend: { enumerable: true },\n    setBaseAndExtent: { enumerable: true },\n    selectAllChildren: { enumerable: true },\n    deleteFromDocument: { enumerable: true },\n    containsNode: { enumerable: true },\n    toString: { enumerable: true },\n    anchorNode: { enumerable: true },\n    anchorOffset: { enumerable: true },\n    focusNode: { enumerable: true },\n    focusOffset: { enumerable: true },\n    isCollapsed: { enumerable: true },\n    rangeCount: { enumerable: true },\n    type: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Selection\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = Selection;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Selection\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/selection/Selection-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (typeof value !== \"function\") {\n    throw new globalObject.TypeError(context + \" is not a function\");\n  }\n\n  function invokeTheCallbackFunction() {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    callResult = Reflect.apply(value, thisArg, []);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  }\n\n  invokeTheCallbackFunction.construct = () => {\n    let callResult = Reflect.construct(value, []);\n\n    callResult = conversions[\"any\"](callResult, { context: context, globals: globalObject });\n\n    return callResult;\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"extends\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"DOMString\"](value, {\n        context: context + \" has member 'extends' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst webIDLConversions = require(\"webidl-conversions\");\nconst DOMException = require(\"../../../generated/idl/DOMException\");\n\nconst NODE_TYPE = require(\"../node-type\");\n\nconst { HTML_NS } = require(\"../helpers/namespaces\");\nconst { getHTMLElementInterface } = require(\"../helpers/create-element\");\nconst { shadowIncludingInclusiveDescendantsIterator } = require(\"../helpers/shadow-dom\");\nconst { isValidCustomElementName, tryUpgradeElement, enqueueCEUpgradeReaction } = require(\"../helpers/custom-elements\");\n\nconst idlUtils = require(\"../../../generated/idl/utils\");\nconst IDLFunction = require(\"../../../generated/idl/Function.js\");\nconst HTMLUnknownElement = require(\"../../../generated/idl/HTMLUnknownElement\");\n\nconst LIFECYCLE_CALLBACKS = [\n  \"connectedCallback\",\n  \"disconnectedCallback\",\n  \"adoptedCallback\",\n  \"attributeChangedCallback\"\n];\n\nfunction convertToSequenceDOMString(obj) {\n  if (!obj || !obj[Symbol.iterator]) {\n    throw new TypeError(\"Invalid Sequence\");\n  }\n\n  return Array.from(obj, webIDLConversions.DOMString);\n}\n\n// Returns true is the passed value is a valid constructor.\n// Borrowed from: https://stackoverflow.com/a/39336206/3832710\nfunction isConstructor(value) {\n  if (typeof value !== \"function\") {\n    return false;\n  }\n\n  try {\n    const P = new Proxy(value, {\n      construct() {\n        return {};\n      }\n    });\n\n    // eslint-disable-next-line no-new\n    new P();\n\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n// https://html.spec.whatwg.org/#customelementregistry\nclass CustomElementRegistryImpl {\n  constructor(globalObject) {\n    this._customElementDefinitions = [];\n    this._elementDefinitionIsRunning = false;\n    this._whenDefinedPromiseMap = Object.create(null);\n\n    this._globalObject = globalObject;\n  }\n\n  // https://html.spec.whatwg.org/#dom-customelementregistry-define\n  define(name, constructor, options) {\n    const { _globalObject } = this;\n    const ctor = constructor.objectReference;\n\n    if (!isConstructor(ctor)) {\n      throw new TypeError(\"Constructor argument is not a constructor.\");\n    }\n\n    if (!isValidCustomElementName(name)) {\n      throw DOMException.create(_globalObject, [\"Name argument is not a valid custom element name.\", \"SyntaxError\"]);\n    }\n\n    const nameAlreadyRegistered = this._customElementDefinitions.some(entry => entry.name === name);\n    if (nameAlreadyRegistered) {\n      throw DOMException.create(_globalObject, [\n        \"This name has already been registered in the registry.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    const ctorAlreadyRegistered = this._customElementDefinitions.some(entry => entry.objectReference === ctor);\n    if (ctorAlreadyRegistered) {\n      throw DOMException.create(_globalObject, [\n        \"This constructor has already been registered in the registry.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    let localName = name;\n\n    let extendsOption = null;\n    if (options !== undefined && options.extends) {\n      extendsOption = options.extends;\n    }\n\n    if (extendsOption !== null) {\n      if (isValidCustomElementName(extendsOption)) {\n        throw DOMException.create(_globalObject, [\n          \"Option extends value can't be a valid custom element name.\",\n          \"NotSupportedError\"\n        ]);\n      }\n\n      const extendsInterface = getHTMLElementInterface(extendsOption);\n      if (extendsInterface === HTMLUnknownElement) {\n        throw DOMException.create(_globalObject, [\n          `${extendsOption} is an HTMLUnknownElement.`,\n          \"NotSupportedError\"\n        ]);\n      }\n\n      localName = extendsOption;\n    }\n\n    if (this._elementDefinitionIsRunning) {\n      throw DOMException.create(_globalObject, [\n        \"Invalid nested custom element definition.\",\n        \"NotSupportedError\"\n      ]);\n    }\n\n    this._elementDefinitionIsRunning = true;\n\n    let disableInternals = false;\n    let disableShadow = false;\n    let observedAttributes = [];\n    let formAssociated = false;\n    const lifecycleCallbacks = {\n      connectedCallback: null,\n      disconnectedCallback: null,\n      adoptedCallback: null,\n      attributeChangedCallback: null\n    };\n\n    let caughtError;\n    try {\n      const { prototype } = ctor;\n\n      if (typeof prototype !== \"object\") {\n        throw new TypeError(\"Invalid constructor prototype.\");\n      }\n\n      for (const callbackName of LIFECYCLE_CALLBACKS) {\n        const callbackValue = prototype[callbackName];\n\n        if (callbackValue !== undefined) {\n          lifecycleCallbacks[callbackName] = IDLFunction.convert(_globalObject, callbackValue, {\n            context: `The lifecycle callback \"${callbackName}\"`\n          });\n        }\n      }\n\n      if (lifecycleCallbacks.attributeChangedCallback !== null) {\n        const observedAttributesIterable = ctor.observedAttributes;\n\n        if (observedAttributesIterable !== undefined) {\n          observedAttributes = convertToSequenceDOMString(observedAttributesIterable);\n        }\n      }\n\n      let disabledFeatures = [];\n      const disabledFeaturesIterable = ctor.disabledFeatures;\n      if (disabledFeaturesIterable) {\n        disabledFeatures = convertToSequenceDOMString(disabledFeaturesIterable);\n      }\n\n      const formAssociatedValue = ctor.formAssociated;\n\n      disableInternals = disabledFeatures.includes(\"internals\");\n      disableShadow = disabledFeatures.includes(\"shadow\");\n      formAssociated = webIDLConversions.boolean(formAssociatedValue);\n    } catch (err) {\n      caughtError = err;\n    } finally {\n      this._elementDefinitionIsRunning = false;\n    }\n\n    if (caughtError !== undefined) {\n      throw caughtError;\n    }\n\n    const definition = {\n      name,\n      localName,\n      constructor,\n      objectReference: ctor,\n      formAssociated,\n      observedAttributes,\n      lifecycleCallbacks,\n      disableShadow,\n      disableInternals,\n      constructionStack: []\n    };\n\n    this._customElementDefinitions.push(definition);\n\n    const document = idlUtils.implForWrapper(this._globalObject._document);\n\n    const upgradeCandidates = [];\n    for (const candidate of shadowIncludingInclusiveDescendantsIterator(document)) {\n      if (\n        (candidate._namespaceURI === HTML_NS && candidate._localName === localName) &&\n        (extendsOption === null || candidate._isValue === name)\n      ) {\n        upgradeCandidates.push(candidate);\n      }\n    }\n\n    for (const upgradeCandidate of upgradeCandidates) {\n      enqueueCEUpgradeReaction(upgradeCandidate, definition);\n    }\n\n    if (this._whenDefinedPromiseMap[name] !== undefined) {\n      this._whenDefinedPromiseMap[name].resolve(ctor);\n      delete this._whenDefinedPromiseMap[name];\n    }\n  }\n\n  // https://html.spec.whatwg.org/#dom-customelementregistry-get\n  get(name) {\n    const definition = this._customElementDefinitions.find(entry => entry.name === name);\n    return definition && definition.objectReference;\n  }\n\n  // https://html.spec.whatwg.org/#dom-customelementregistry-getname\n  getName(constructor) {\n    const found = this._customElementDefinitions.find(entry => entry.objectReference === constructor.objectReference);\n    return found ? found.name : null;\n  }\n\n  // https://html.spec.whatwg.org/#dom-customelementregistry-whendefined\n  whenDefined(name) {\n    if (!isValidCustomElementName(name)) {\n      return Promise.reject(DOMException.create(\n        this._globalObject,\n        [\"Name argument is not a valid custom element name.\", \"SyntaxError\"]\n      ));\n    }\n\n    const alreadyRegistered = this._customElementDefinitions.find(entry => entry.name === name);\n    if (alreadyRegistered) {\n      return Promise.resolve(alreadyRegistered.objectReference);\n    }\n\n    if (this._whenDefinedPromiseMap[name] === undefined) {\n      let resolve;\n      const promise = new Promise(r => {\n        resolve = r;\n      });\n\n      // Store the pending Promise along with the extracted resolve callback to actually resolve the returned Promise,\n      // once the custom element is registered.\n      this._whenDefinedPromiseMap[name] = {\n        promise,\n        resolve\n      };\n    }\n\n    return this._whenDefinedPromiseMap[name].promise;\n  }\n\n  // https://html.spec.whatwg.org/#dom-customelementregistry-upgrade\n  upgrade(root) {\n    for (const candidate of shadowIncludingInclusiveDescendantsIterator(root)) {\n      if (candidate.nodeType === NODE_TYPE.ELEMENT_NODE) {\n        tryUpgradeElement(candidate);\n      }\n    }\n  }\n}\n\nmodule.exports = {\n  implementation: CustomElementRegistryImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst CustomElementConstructor = require(\"./CustomElementConstructor.js\");\nconst ElementDefinitionOptions = require(\"./ElementDefinitionOptions.js\");\nconst ceReactionsPreSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPreSteps;\nconst ceReactionsPostSteps_jsdom_living_helpers_custom_elements =\n  require(\"../../jsdom/living/helpers/custom-elements.js\").ceReactionsPostSteps;\nconst Node = require(\"./Node.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"CustomElementRegistry\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'CustomElementRegistry'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"CustomElementRegistry\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class CustomElementRegistry {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    define(name, constructor) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'define' called on an object that is not a valid instance of CustomElementRegistry.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'define' on 'CustomElementRegistry': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'define' on 'CustomElementRegistry': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = CustomElementConstructor.convert(globalObject, curArg, {\n          context: \"Failed to execute 'define' on 'CustomElementRegistry': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        curArg = ElementDefinitionOptions.convert(globalObject, curArg, {\n          context: \"Failed to execute 'define' on 'CustomElementRegistry': parameter 3\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].define(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n\n    get(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get' called on an object that is not a valid instance of CustomElementRegistry.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'get' on 'CustomElementRegistry': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"DOMString\"](curArg, {\n          context: \"Failed to execute 'get' on 'CustomElementRegistry': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].get(...args);\n    }\n\n    getName(constructor) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'getName' called on an object that is not a valid instance of CustomElementRegistry.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'getName' on 'CustomElementRegistry': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = CustomElementConstructor.convert(globalObject, curArg, {\n          context: \"Failed to execute 'getName' on 'CustomElementRegistry': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].getName(...args);\n    }\n\n    whenDefined(name) {\n      try {\n        const esValue = this !== null && this !== undefined ? this : globalObject;\n        if (!exports.is(esValue)) {\n          throw new globalObject.TypeError(\n            \"'whenDefined' called on an object that is not a valid instance of CustomElementRegistry.\"\n          );\n        }\n\n        if (arguments.length < 1) {\n          throw new globalObject.TypeError(\n            `Failed to execute 'whenDefined' on 'CustomElementRegistry': 1 argument required, but only ${arguments.length} present.`\n          );\n        }\n        const args = [];\n        {\n          let curArg = arguments[0];\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to execute 'whenDefined' on 'CustomElementRegistry': parameter 1\",\n            globals: globalObject\n          });\n          args.push(curArg);\n        }\n        return utils.tryWrapperForImpl(esValue[implSymbol].whenDefined(...args));\n      } catch (e) {\n        return globalObject.Promise.reject(e);\n      }\n    }\n\n    upgrade(root) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'upgrade' called on an object that is not a valid instance of CustomElementRegistry.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'upgrade' on 'CustomElementRegistry': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'upgrade' on 'CustomElementRegistry': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      ceReactionsPreSteps_jsdom_living_helpers_custom_elements(globalObject);\n      try {\n        return esValue[implSymbol].upgrade(...args);\n      } finally {\n        ceReactionsPostSteps_jsdom_living_helpers_custom_elements(globalObject);\n      }\n    }\n  }\n  Object.defineProperties(CustomElementRegistry.prototype, {\n    define: { enumerable: true },\n    get: { enumerable: true },\n    getName: { enumerable: true },\n    whenDefined: { enumerable: true },\n    upgrade: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"CustomElementRegistry\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = CustomElementRegistry;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: CustomElementRegistry\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/custom-elements/CustomElementRegistry-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (typeof value !== \"function\") {\n    throw new globalObject.TypeError(context + \" is not a function\");\n  }\n\n  function invokeTheCallbackFunction(mutations, observer) {\n    const thisArg = utils.tryWrapperForImpl(this);\n    let callResult;\n\n    mutations = utils.tryWrapperForImpl(mutations);\n\n    observer = utils.tryWrapperForImpl(observer);\n\n    callResult = Reflect.apply(value, thisArg, [mutations, observer]);\n  }\n\n  invokeTheCallbackFunction.construct = (mutations, observer) => {\n    mutations = utils.tryWrapperForImpl(mutations);\n\n    observer = utils.tryWrapperForImpl(observer);\n\n    let callResult = Reflect.construct(value, [mutations, observer]);\n  };\n\n  invokeTheCallbackFunction[utils.wrapperSymbol] = value;\n  invokeTheCallbackFunction.objectReference = value;\n\n  return invokeTheCallbackFunction;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"attributeFilter\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      if (!utils.isObject(value)) {\n        throw new globalObject.TypeError(\n          context + \" has member 'attributeFilter' that\" + \" is not an iterable object.\"\n        );\n      } else {\n        const V = [];\n        const tmp = value;\n        for (let nextItem of tmp) {\n          nextItem = conversions[\"DOMString\"](nextItem, {\n            context: context + \" has member 'attributeFilter' that\" + \"'s element\",\n            globals: globalObject\n          });\n\n          V.push(nextItem);\n        }\n        value = V;\n      }\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"attributeOldValue\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'attributeOldValue' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"attributes\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'attributes' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"characterData\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'characterData' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"characterDataOldValue\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'characterDataOldValue' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    }\n  }\n\n  {\n    const key = \"childList\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'childList' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"subtree\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'subtree' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst { wrapperForImpl } = require(\"../../../generated/idl/utils\");\n\n// If we were to implement the MutationObserver by spec, the MutationObservers will not be collected by the GC because\n// all the MO are kept in a mutation observer list (https://github.com/jsdom/jsdom/pull/2398/files#r238123889). The\n// mutation observer list is primarily used to invoke the mutation observer callback in the same order than the\n// mutation observer creation.\n// In order to get around this issue, we will assign an increasing id for each mutation observer, this way we would be\n// able to invoke the callback in the creation order without having to keep a list of all the mutation observers.\nlet mutationObserverId = 0;\n\n// https://dom.spec.whatwg.org/#mutationobserver\nclass MutationObserverImpl {\n  // https://dom.spec.whatwg.org/#dom-mutationobserver-mutationobserver\n  constructor(globalObject, args) {\n    const [callback] = args;\n\n    this._callback = callback;\n    this._nodeList = [];\n    this._recordQueue = [];\n\n    this._id = ++mutationObserverId;\n  }\n\n  // https://dom.spec.whatwg.org/#dom-mutationobserver-observe\n  observe(target, options) {\n    if ((\"attributeOldValue\" in options || \"attributeFilter\" in options) && !(\"attributes\" in options)) {\n      options.attributes = true;\n    }\n\n    if (\"characterDataOldValue\" in options & !(\"characterData\" in options)) {\n      options.characterData = true;\n    }\n\n    if (!options.childList && !options.attributes && !options.characterData) {\n      throw new TypeError(\"The options object must set at least one of 'attributes', 'characterData', or 'childList' \" +\n        \"to true.\");\n    } else if (options.attributeOldValue && !options.attributes) {\n      throw new TypeError(\"The options object may only set 'attributeOldValue' to true when 'attributes' is true or \" +\n        \"not present.\");\n    } else if ((\"attributeFilter\" in options) && !options.attributes) {\n      throw new TypeError(\"The options object may only set 'attributeFilter' when 'attributes' is true or not \" +\n        \"present.\");\n    } else if (options.characterDataOldValue && !options.characterData) {\n      throw new TypeError(\"The options object may only set 'characterDataOldValue' to true when 'characterData' is \" +\n        \"true or not present.\");\n    }\n\n    const existingRegisteredObserver = target._registeredObserverList.find(registeredObserver => {\n      return registeredObserver.observer === this;\n    });\n\n    if (existingRegisteredObserver) {\n      for (const node of this._nodeList) {\n        node._registeredObserverList = node._registeredObserverList.filter(registeredObserver => {\n          return registeredObserver.source !== existingRegisteredObserver;\n        });\n      }\n\n      existingRegisteredObserver.options = options;\n    } else {\n      target._registeredObserverList.push({\n        observer: this,\n        options\n      });\n\n      this._nodeList.push(target);\n    }\n  }\n\n  // https://dom.spec.whatwg.org/#dom-mutationobserver-disconnect\n  disconnect() {\n    for (const node of this._nodeList) {\n      node._registeredObserverList = node._registeredObserverList.filter(registeredObserver => {\n        return registeredObserver.observer !== this;\n      });\n    }\n\n    this._recordQueue = [];\n  }\n\n  // https://dom.spec.whatwg.org/#dom-mutationobserver-takerecords\n  takeRecords() {\n    // TODO: revisit if https://github.com/jsdom/webidl2js/pull/108 gets fixed.\n    const records = this._recordQueue.map(wrapperForImpl);\n    this._recordQueue = [];\n\n    return records;\n  }\n}\n\nmodule.exports = {\n  implementation: MutationObserverImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst MutationCallback = require(\"./MutationCallback.js\");\nconst Node = require(\"./Node.js\");\nconst MutationObserverInit = require(\"./MutationObserverInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"MutationObserver\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'MutationObserver'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"MutationObserver\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class MutationObserver {\n    constructor(callback) {\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to construct 'MutationObserver': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = MutationCallback.convert(globalObject, curArg, {\n          context: \"Failed to construct 'MutationObserver': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    observe(target) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'observe' called on an object that is not a valid instance of MutationObserver.\"\n        );\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'observe' on 'MutationObserver': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = Node.convert(globalObject, curArg, {\n          context: \"Failed to execute 'observe' on 'MutationObserver': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = MutationObserverInit.convert(globalObject, curArg, {\n          context: \"Failed to execute 'observe' on 'MutationObserver': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].observe(...args);\n    }\n\n    disconnect() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'disconnect' called on an object that is not a valid instance of MutationObserver.\"\n        );\n      }\n\n      return esValue[implSymbol].disconnect();\n    }\n\n    takeRecords() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'takeRecords' called on an object that is not a valid instance of MutationObserver.\"\n        );\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].takeRecords());\n    }\n  }\n  Object.defineProperties(MutationObserver.prototype, {\n    observe: { enumerable: true },\n    disconnect: { enumerable: true },\n    takeRecords: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"MutationObserver\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = MutationObserver;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: MutationObserver\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/mutation-observer/MutationObserver-impl.js\");\n","\"use strict\";\n\nconst {\n  isForbiddenRequestHeader,\n  isForbiddenResponseHeaderName,\n  isPrivilegedNoCORSRequestHeaderName,\n  isNoCORSSafelistedRequestHeaderName,\n  isNoCORSSafelistedRequestHeader\n} = require(\"./header-types\");\nconst { isHeaderName, isHeaderValue, normalizeHeaderValue } = require(\"./header-utils\");\nconst HeaderList = require(\"./header-list\");\n\nfunction assertName(name) {\n  if (!isHeaderName(name)) {\n    throw new TypeError(\"name is invalid\");\n  }\n}\n\nfunction assertValue(value) {\n  if (!isHeaderValue(value)) {\n    throw new TypeError(\"value is invalid\");\n  }\n}\n\nclass HeadersImpl {\n  constructor(globalObject, args) {\n    this.guard = \"none\";\n    this.headerList = new HeaderList();\n\n    if (args[0]) {\n      this.#fill(args[0]);\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#headers-validate\n  #validate(name, value) {\n    assertName(name);\n    assertValue(value);\n\n    switch (this.guard) {\n      case \"immutable\": {\n        throw new TypeError(\"Headers is immutable\");\n      }\n      case \"request\": {\n        if (isForbiddenRequestHeader(name, value)) {\n          return false;\n        }\n        break;\n      }\n      case \"response\": {\n        if (isForbiddenResponseHeaderName(name)) {\n          return false;\n        }\n        break;\n      }\n    }\n\n    return true;\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-headers-fill\n  #fill(init) {\n    if (Array.isArray(init)) {\n      for (const header of init) {\n        if (header.length !== 2) {\n          throw new TypeError(\"init is invalid\");\n        }\n        this.append(header[0], header[1]);\n      }\n    } else {\n      for (const [key, value] of Object.entries(init)) {\n        this.append(key, value);\n      }\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-headers-remove-privileged-no-cors-request-headers\n  #removePrivilegedNoCORSHeaders() {\n    this.headerList.delete(\"range\");\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-append\n  append(name, value) {\n    value = normalizeHeaderValue(value);\n    if (!this.#validate(name, value)) {\n      return;\n    }\n\n    if (this.guard === \"request-no-cors\") {\n      let temporaryValue = this.headerList.get(name);\n      if (temporaryValue === null) {\n        temporaryValue = value;\n      } else {\n        temporaryValue += \", \" + value;\n      }\n      if (!isNoCORSSafelistedRequestHeader(name, temporaryValue)) {\n        return;\n      }\n    }\n\n    this.headerList.append(name, value);\n\n    if (this.guard === \"request-no-cors\") {\n      this.#removePrivilegedNoCORSHeaders();\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-delete\n  delete(name) {\n    if (!this.#validate(name, \"\")) {\n      return;\n    }\n\n    if (this.guard === \"request-no-cors\" &&\n      !isNoCORSSafelistedRequestHeaderName(name) &&\n      !isPrivilegedNoCORSRequestHeaderName(name)) {\n      return;\n    }\n\n    if (!this.headerList.contains(name)) {\n      return;\n    }\n\n    this.headerList.delete(name);\n\n    if (this.guard === \"request-no-cors\") {\n      this.#removePrivilegedNoCORSHeaders();\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-get\n  get(name) {\n    assertName(name);\n    return this.headerList.get(name);\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n  getSetCookie() {\n    return this.headerList.getAll(\"Set-Cookie\") || [];\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-has\n  has(name) {\n    assertName(name);\n    return this.headerList.contains(name);\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-set\n  set(name, value) {\n    value = normalizeHeaderValue(value);\n    if (!this.#validate(name, value)) {\n      return;\n    }\n\n    if (this.guard === \"request-no-cors\" && !isNoCORSSafelistedRequestHeader(name, value)) {\n      return;\n    }\n\n    this.headerList.set(name, value);\n\n    if (this.guard === \"request-no-cors\") {\n      this.#removePrivilegedNoCORSHeaders();\n    }\n  }\n\n  * [Symbol.iterator]() {\n    for (const header of this.headerList.sortAndCombine()) {\n      yield header;\n    }\n  }\n}\n\nexports.implementation = HeadersImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst Function = require(\"./Function.js\");\nconst newObjectInRealm = utils.newObjectInRealm;\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"Headers\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'Headers'.`);\n};\n\nexports.createDefaultIterator = (globalObject, target, kind) => {\n  const ctorRegistry = globalObject[ctorRegistrySymbol];\n  const iteratorPrototype = ctorRegistry[\"Headers Iterator\"];\n  const iterator = Object.create(iteratorPrototype);\n  Object.defineProperty(iterator, utils.iterInternalSymbol, {\n    value: { target, kind, index: 0 },\n    configurable: true\n  });\n  return iterator;\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"Headers\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class Headers {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          if (utils.isObject(curArg)) {\n            if (curArg[Symbol.iterator] !== undefined) {\n              if (!utils.isObject(curArg)) {\n                throw new globalObject.TypeError(\n                  \"Failed to construct 'Headers': parameter 1\" + \" sequence\" + \" is not an iterable object.\"\n                );\n              } else {\n                const V = [];\n                const tmp = curArg;\n                for (let nextItem of tmp) {\n                  if (!utils.isObject(nextItem)) {\n                    throw new globalObject.TypeError(\n                      \"Failed to construct 'Headers': parameter 1\" +\n                        \" sequence\" +\n                        \"'s element\" +\n                        \" is not an iterable object.\"\n                    );\n                  } else {\n                    const V = [];\n                    const tmp = nextItem;\n                    for (let nextItem of tmp) {\n                      nextItem = conversions[\"ByteString\"](nextItem, {\n                        context:\n                          \"Failed to construct 'Headers': parameter 1\" + \" sequence\" + \"'s element\" + \"'s element\",\n                        globals: globalObject\n                      });\n\n                      V.push(nextItem);\n                    }\n                    nextItem = V;\n                  }\n\n                  V.push(nextItem);\n                }\n                curArg = V;\n              }\n            } else {\n              if (!utils.isObject(curArg)) {\n                throw new globalObject.TypeError(\n                  \"Failed to construct 'Headers': parameter 1\" + \" record\" + \" is not an object.\"\n                );\n              } else {\n                const result = Object.create(null);\n                for (const key of Reflect.ownKeys(curArg)) {\n                  const desc = Object.getOwnPropertyDescriptor(curArg, key);\n                  if (desc && desc.enumerable) {\n                    let typedKey = key;\n\n                    typedKey = conversions[\"ByteString\"](typedKey, {\n                      context: \"Failed to construct 'Headers': parameter 1\" + \" record\" + \"'s key\",\n                      globals: globalObject\n                    });\n\n                    let typedValue = curArg[key];\n\n                    typedValue = conversions[\"ByteString\"](typedValue, {\n                      context: \"Failed to construct 'Headers': parameter 1\" + \" record\" + \"'s value\",\n                      globals: globalObject\n                    });\n\n                    result[typedKey] = typedValue;\n                  }\n                }\n                curArg = result;\n              }\n            }\n          } else {\n            throw new globalObject.TypeError(\n              \"Failed to construct 'Headers': parameter 1\" + \" is not of any supported type.\"\n            );\n          }\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    append(name, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'append' called on an object that is not a valid instance of Headers.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'append' on 'Headers': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'append' on 'Headers': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'append' on 'Headers': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].append(...args);\n    }\n\n    delete(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'delete' called on an object that is not a valid instance of Headers.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'delete' on 'Headers': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'delete' on 'Headers': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].delete(...args);\n    }\n\n    get(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get' called on an object that is not a valid instance of Headers.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'get' on 'Headers': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'get' on 'Headers': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].get(...args);\n    }\n\n    getSetCookie() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'getSetCookie' called on an object that is not a valid instance of Headers.\");\n      }\n\n      return utils.tryWrapperForImpl(esValue[implSymbol].getSetCookie());\n    }\n\n    has(name) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'has' called on an object that is not a valid instance of Headers.\");\n      }\n\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'has' on 'Headers': 1 argument required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'has' on 'Headers': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].has(...args);\n    }\n\n    set(name, value) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set' called on an object that is not a valid instance of Headers.\");\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'set' on 'Headers': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'set' on 'Headers': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"ByteString\"](curArg, {\n          context: \"Failed to execute 'set' on 'Headers': parameter 2\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].set(...args);\n    }\n\n    keys() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'keys' called on an object that is not a valid instance of Headers.\");\n      }\n      return exports.createDefaultIterator(globalObject, this, \"key\");\n    }\n\n    values() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'values' called on an object that is not a valid instance of Headers.\");\n      }\n      return exports.createDefaultIterator(globalObject, this, \"value\");\n    }\n\n    entries() {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'entries' called on an object that is not a valid instance of Headers.\");\n      }\n      return exports.createDefaultIterator(globalObject, this, \"key+value\");\n    }\n\n    forEach(callback) {\n      if (!exports.is(this)) {\n        throw new globalObject.TypeError(\"'forEach' called on an object that is not a valid instance of Headers.\");\n      }\n      if (arguments.length < 1) {\n        throw new globalObject.TypeError(\n          \"Failed to execute 'forEach' on 'iterable': 1 argument required, but only 0 present.\"\n        );\n      }\n      callback = Function.convert(globalObject, callback, {\n        context: \"Failed to execute 'forEach' on 'iterable': The callback provided as parameter 1\"\n      });\n      const thisArg = arguments[1];\n      let pairs = Array.from(this[implSymbol]);\n      let i = 0;\n      while (i < pairs.length) {\n        const [key, value] = pairs[i].map(utils.tryWrapperForImpl);\n        callback.call(thisArg, value, key, this);\n        pairs = Array.from(this[implSymbol]);\n        i++;\n      }\n    }\n  }\n  Object.defineProperties(Headers.prototype, {\n    append: { enumerable: true },\n    delete: { enumerable: true },\n    get: { enumerable: true },\n    getSetCookie: { enumerable: true },\n    has: { enumerable: true },\n    set: { enumerable: true },\n    keys: { enumerable: true },\n    values: { enumerable: true },\n    entries: { enumerable: true },\n    forEach: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"Headers\", configurable: true },\n    [Symbol.iterator]: { value: Headers.prototype.entries, configurable: true, writable: true }\n  });\n  ctorRegistry[interfaceName] = Headers;\n\n  ctorRegistry[\"Headers Iterator\"] = Object.create(ctorRegistry[\"%IteratorPrototype%\"], {\n    [Symbol.toStringTag]: {\n      configurable: true,\n      value: \"Headers Iterator\"\n    }\n  });\n  utils.define(ctorRegistry[\"Headers Iterator\"], {\n    next() {\n      const internal = this && this[utils.iterInternalSymbol];\n      if (!internal) {\n        throw new globalObject.TypeError(\"next() called on a value that is not a Headers iterator object\");\n      }\n\n      const { target, kind, index } = internal;\n      const values = Array.from(target[implSymbol]);\n      const len = values.length;\n      if (index >= len) {\n        return newObjectInRealm(globalObject, { value: undefined, done: true });\n      }\n\n      const pair = values[index];\n      internal.index = index + 1;\n      return newObjectInRealm(globalObject, utils.iteratorResult(pair.map(utils.tryWrapperForImpl), kind));\n    }\n  });\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: Headers\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/fetch/Headers-impl.js\");\n","\"use strict\";\n\nconst AbortSignal = require(\"../../../generated/idl/AbortSignal\");\n\nclass AbortControllerImpl {\n  constructor(globalObject) {\n    this.signal = AbortSignal.createImpl(globalObject, []);\n  }\n\n  abort(reason) {\n    this.signal._signalAbort(reason);\n  }\n}\n\nmodule.exports = {\n  implementation: AbortControllerImpl\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"AbortController\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'AbortController'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"AbortController\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class AbortController {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    abort() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'abort' called on an object that is not a valid instance of AbortController.\"\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"any\"](curArg, {\n            context: \"Failed to execute 'abort' on 'AbortController': parameter 1\",\n            globals: globalObject\n          });\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].abort(...args);\n    }\n\n    get signal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get signal' called on an object that is not a valid instance of AbortController.\"\n        );\n      }\n\n      return utils.getSameObject(this, \"signal\", () => {\n        return utils.tryWrapperForImpl(esValue[implSymbol][\"signal\"]);\n      });\n    }\n  }\n  Object.defineProperties(AbortController.prototype, {\n    abort: { enumerable: true },\n    signal: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"AbortController\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = AbortController;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: AbortController\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/aborting/AbortController-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DeviceMotionEventAcceleration\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DeviceMotionEventAcceleration'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DeviceMotionEventAcceleration\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DeviceMotionEventAcceleration {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get x() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get x' called on an object that is not a valid instance of DeviceMotionEventAcceleration.\"\n        );\n      }\n\n      return esValue[implSymbol][\"x\"];\n    }\n\n    get y() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get y' called on an object that is not a valid instance of DeviceMotionEventAcceleration.\"\n        );\n      }\n\n      return esValue[implSymbol][\"y\"];\n    }\n\n    get z() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get z' called on an object that is not a valid instance of DeviceMotionEventAcceleration.\"\n        );\n      }\n\n      return esValue[implSymbol][\"z\"];\n    }\n  }\n  Object.defineProperties(DeviceMotionEventAcceleration.prototype, {\n    x: { enumerable: true },\n    y: { enumerable: true },\n    z: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DeviceMotionEventAcceleration\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = DeviceMotionEventAcceleration;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DeviceMotionEventAcceleration\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/deviceorientation/DeviceMotionEventAcceleration-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DeviceMotionEventRotationRate\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DeviceMotionEventRotationRate'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DeviceMotionEventRotationRate\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DeviceMotionEventRotationRate {\n    constructor() {\n      throw new globalObject.TypeError(\"Illegal constructor\");\n    }\n\n    get alpha() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get alpha' called on an object that is not a valid instance of DeviceMotionEventRotationRate.\"\n        );\n      }\n\n      return esValue[implSymbol][\"alpha\"];\n    }\n\n    get beta() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get beta' called on an object that is not a valid instance of DeviceMotionEventRotationRate.\"\n        );\n      }\n\n      return esValue[implSymbol][\"beta\"];\n    }\n\n    get gamma() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get gamma' called on an object that is not a valid instance of DeviceMotionEventRotationRate.\"\n        );\n      }\n\n      return esValue[implSymbol][\"gamma\"];\n    }\n  }\n  Object.defineProperties(DeviceMotionEventRotationRate.prototype, {\n    alpha: { enumerable: true },\n    beta: { enumerable: true },\n    gamma: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DeviceMotionEventRotationRate\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = DeviceMotionEventRotationRate;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DeviceMotionEventRotationRate\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/deviceorientation/DeviceMotionEventRotationRate-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"height\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unrestricted double\"](value, {\n        context: context + \" has member 'height' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"width\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unrestricted double\"](value, {\n        context: context + \" has member 'width' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"x\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unrestricted double\"](value, {\n        context: context + \" has member 'x' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n\n  {\n    const key = \"y\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"unrestricted double\"](value, {\n        context: context + \" has member 'y' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = 0;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst DOMRectReadOnly = require(\"../../../generated/idl/DOMRectReadOnly\");\n\nclass DOMRectReadOnlyImpl {\n  constructor(globalObject, [x = 0, y = 0, width = 0, height = 0]) {\n    this._globalObject = globalObject;\n    this._x = x;\n    this._y = y;\n    this._width = width;\n    this._height = height;\n  }\n\n  static fromRect(globalObject, other) {\n    return DOMRectReadOnly.createImpl(globalObject, [other.x, other.y, other.width, other.height]);\n  }\n\n  get x() {\n    return this._x;\n  }\n\n  get y() {\n    return this._y;\n  }\n\n  get width() {\n    return this._width;\n  }\n\n  get height() {\n    return this._height;\n  }\n\n  get top() {\n    const { height, y } = this;\n    // We use Math.min's built-in NaN handling: https://github.com/w3c/fxtf-drafts/issues/222\n    return Math.min(y, y + height);\n  }\n\n  get right() {\n    const { width, x } = this;\n    // We use Math.max's built-in NaN handling: https://github.com/w3c/fxtf-drafts/issues/222\n    return Math.max(x, x + width);\n  }\n\n  get bottom() {\n    const { height, y } = this;\n    // We use Math.max's built-in NaN handling: https://github.com/w3c/fxtf-drafts/issues/222\n    return Math.max(y, y + height);\n  }\n\n  get left() {\n    const { width, x } = this;\n    // We use Math.min's built-in NaN handling: https://github.com/w3c/fxtf-drafts/issues/222\n    return Math.min(x, x + width);\n  }\n\n  // Could be removed after https://github.com/jsdom/webidl2js/issues/185 gets fixed.\n  toJSON() {\n    return {\n      x: this.x,\n      y: this.y,\n      width: this.width,\n      height: this.height,\n      top: this.top,\n      right: this.right,\n      bottom: this.bottom,\n      left: this.left\n    };\n  }\n}\n\nexports.implementation = DOMRectReadOnlyImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst DOMRectInit = require(\"./DOMRectInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"DOMRectReadOnly\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DOMRectReadOnly'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DOMRectReadOnly\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DOMRectReadOnly {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRectReadOnly': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRectReadOnly': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRectReadOnly': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRectReadOnly': parameter 4\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    toJSON() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'toJSON' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol].toJSON();\n    }\n\n    get x() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get x' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"x\"];\n    }\n\n    get y() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get y' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"y\"];\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get width' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"width\"];\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get height' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"height\"];\n    }\n\n    get top() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get top' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"top\"];\n    }\n\n    get right() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get right' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"right\"];\n    }\n\n    get bottom() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get bottom' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"bottom\"];\n    }\n\n    get left() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get left' called on an object that is not a valid instance of DOMRectReadOnly.\"\n        );\n      }\n\n      return esValue[implSymbol][\"left\"];\n    }\n\n    static fromRect() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = DOMRectInit.convert(globalObject, curArg, {\n          context: \"Failed to execute 'fromRect' on 'DOMRectReadOnly': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(Impl.implementation.fromRect(globalObject, ...args));\n    }\n  }\n  Object.defineProperties(DOMRectReadOnly.prototype, {\n    toJSON: { enumerable: true },\n    x: { enumerable: true },\n    y: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    top: { enumerable: true },\n    right: { enumerable: true },\n    bottom: { enumerable: true },\n    left: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DOMRectReadOnly\", configurable: true }\n  });\n  Object.defineProperties(DOMRectReadOnly, { fromRect: { enumerable: true } });\n  ctorRegistry[interfaceName] = DOMRectReadOnly;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DOMRectReadOnly\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/geometry/DOMRectReadOnly-impl.js\");\n","\"use strict\";\nconst DOMRectReadOnlyImpl = require(\"./DOMRectReadOnly-impl\").implementation;\nconst DOMRect = require(\"../../../generated/idl/DOMRect\");\n\nclass DOMRectImpl extends DOMRectReadOnlyImpl {\n  static fromRect(globalObject, other) {\n    return DOMRect.createImpl(globalObject, [other.x, other.y, other.width, other.height]);\n  }\n\n  get x() {\n    return super.x;\n  }\n  set x(newX) {\n    this._x = newX;\n  }\n\n  get y() {\n    return super.y;\n  }\n  set y(newY) {\n    this._y = newY;\n  }\n\n  get width() {\n    return super.width;\n  }\n  set width(newWidth) {\n    this._width = newWidth;\n  }\n\n  get height() {\n    return super.height;\n  }\n  set height(newHeight) {\n    this._height = newHeight;\n  }\n}\n\nexports.implementation = DOMRectImpl;\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst DOMRectInit = require(\"./DOMRectInit.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\nconst DOMRectReadOnly = require(\"./DOMRectReadOnly.js\");\n\nconst interfaceName = \"DOMRect\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'DOMRect'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"DOMRect\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {\n  DOMRectReadOnly._internalSetup(wrapper, globalObject);\n};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\", \"Worker\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class DOMRect extends globalObject.DOMRectReadOnly {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRect': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRect': parameter 2\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[2];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRect': parameter 3\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[3];\n        if (curArg !== undefined) {\n          curArg = conversions[\"unrestricted double\"](curArg, {\n            context: \"Failed to construct 'DOMRect': parameter 4\",\n            globals: globalObject\n          });\n        } else {\n          curArg = 0;\n        }\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    get x() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get x' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      return esValue[implSymbol][\"x\"];\n    }\n\n    set x(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set x' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      V = conversions[\"unrestricted double\"](V, {\n        context: \"Failed to set the 'x' property on 'DOMRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"x\"] = V;\n    }\n\n    get y() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get y' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      return esValue[implSymbol][\"y\"];\n    }\n\n    set y(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set y' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      V = conversions[\"unrestricted double\"](V, {\n        context: \"Failed to set the 'y' property on 'DOMRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"y\"] = V;\n    }\n\n    get width() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get width' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      return esValue[implSymbol][\"width\"];\n    }\n\n    set width(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set width' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      V = conversions[\"unrestricted double\"](V, {\n        context: \"Failed to set the 'width' property on 'DOMRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"width\"] = V;\n    }\n\n    get height() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'get height' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      return esValue[implSymbol][\"height\"];\n    }\n\n    set height(V) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'set height' called on an object that is not a valid instance of DOMRect.\");\n      }\n\n      V = conversions[\"unrestricted double\"](V, {\n        context: \"Failed to set the 'height' property on 'DOMRect': The provided value\",\n        globals: globalObject\n      });\n\n      esValue[implSymbol][\"height\"] = V;\n    }\n\n    static fromRect() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = DOMRectInit.convert(globalObject, curArg, {\n          context: \"Failed to execute 'fromRect' on 'DOMRect': parameter 1\"\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(Impl.implementation.fromRect(globalObject, ...args));\n    }\n  }\n  Object.defineProperties(DOMRect.prototype, {\n    x: { enumerable: true },\n    y: { enumerable: true },\n    width: { enumerable: true },\n    height: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"DOMRect\", configurable: true }\n  });\n  Object.defineProperties(DOMRect, { fromRect: { enumerable: true } });\n  ctorRegistry[interfaceName] = DOMRect;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: DOMRect\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/geometry/DOMRect-impl.js\");\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"fatal\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'fatal' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n\n  {\n    const key = \"ignoreBOM\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, {\n        context: context + \" has member 'ignoreBOM' that\",\n        globals: globalObject\n      });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nexports._convertInherit = (globalObject, obj, ret, { context = \"The provided value\" } = {}) => {\n  {\n    const key = \"stream\";\n    let value = obj === undefined || obj === null ? undefined : obj[key];\n    if (value !== undefined) {\n      value = conversions[\"boolean\"](value, { context: context + \" has member 'stream' that\", globals: globalObject });\n\n      ret[key] = value;\n    } else {\n      ret[key] = false;\n    }\n  }\n};\n\nexports.convert = (globalObject, obj, { context = \"The provided value\" } = {}) => {\n  if (obj !== undefined && typeof obj !== \"object\" && typeof obj !== \"function\") {\n    throw new globalObject.TypeError(`${context} is not an object.`);\n  }\n\n  const ret = Object.create(null);\n  exports._convertInherit(globalObject, obj, ret, { context });\n  return ret;\n};\n","\"use strict\";\nconst { TextDecoder } = require(\"@exodus/bytes/encoding.js\");\n\n// A thin wrapper is needed since there are constructor arguments, which mismatches webidl2js's assumed pattern.\nexports.implementation = class TextDecoderImpl {\n  constructor(globalObject, [label, options]) {\n    this._innerImpl = new TextDecoder(label, options);\n  }\n\n  decode(input, options) {\n    return this._innerImpl.decode(input, options);\n  }\n\n  get encoding() {\n    return this._innerImpl.encoding;\n  }\n\n  get fatal() {\n    return this._innerImpl.fatal;\n  }\n\n  get ignoreBOM() {\n    return this._innerImpl.ignoreBOM;\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst TextDecoderOptions = require(\"./TextDecoderOptions.js\");\nconst TextDecodeOptions = require(\"./TextDecodeOptions.js\");\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"TextDecoder\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'TextDecoder'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"TextDecoder\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class TextDecoder {\n    constructor() {\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"DOMString\"](curArg, {\n            context: \"Failed to construct 'TextDecoder': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"utf-8\";\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = TextDecoderOptions.convert(globalObject, curArg, {\n          context: \"Failed to construct 'TextDecoder': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return exports.setup(Object.create(new.target.prototype), globalObject, args);\n    }\n\n    decode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'decode' called on an object that is not a valid instance of TextDecoder.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          if (utils.isArrayBuffer(curArg)) {\n            curArg = conversions[\"ArrayBuffer\"](curArg, {\n              context: \"Failed to execute 'decode' on 'TextDecoder': parameter 1\",\n              globals: globalObject\n            });\n          } else if (utils.isSharedArrayBuffer(curArg)) {\n            curArg = conversions[\"SharedArrayBuffer\"](curArg, {\n              context: \"Failed to execute 'decode' on 'TextDecoder': parameter 1\",\n              globals: globalObject\n            });\n          } else if (ArrayBuffer.isView(curArg)) {\n            curArg = conversions[\"ArrayBufferView\"](curArg, {\n              context: \"Failed to execute 'decode' on 'TextDecoder': parameter 1\",\n              globals: globalObject,\n              allowShared: true\n            });\n          } else {\n            throw new globalObject.TypeError(\n              \"Failed to execute 'decode' on 'TextDecoder': parameter 1\" + \" is not of any supported type.\"\n            );\n          }\n        }\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = TextDecodeOptions.convert(globalObject, curArg, {\n          context: \"Failed to execute 'decode' on 'TextDecoder': parameter 2\"\n        });\n        args.push(curArg);\n      }\n      return esValue[implSymbol].decode(...args);\n    }\n\n    get encoding() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get encoding' called on an object that is not a valid instance of TextDecoder.\"\n        );\n      }\n\n      return esValue[implSymbol][\"encoding\"];\n    }\n\n    get fatal() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get fatal' called on an object that is not a valid instance of TextDecoder.\"\n        );\n      }\n\n      return esValue[implSymbol][\"fatal\"];\n    }\n\n    get ignoreBOM() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get ignoreBOM' called on an object that is not a valid instance of TextDecoder.\"\n        );\n      }\n\n      return esValue[implSymbol][\"ignoreBOM\"];\n    }\n  }\n  Object.defineProperties(TextDecoder.prototype, {\n    decode: { enumerable: true },\n    encoding: { enumerable: true },\n    fatal: { enumerable: true },\n    ignoreBOM: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"TextDecoder\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = TextDecoder;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: TextDecoder\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/encoding/TextDecoder-impl.js\");\n","\"use strict\";\nconst { TextEncoder } = require(\"@exodus/bytes/encoding.js\");\nconst { copyToArrayBufferInTargetRealm } = require(\"../helpers/binary-data\");\n\n// We can't directly use the native TextEncoder as the impl class, because its encode() method returns a Uint8Array in\n// the Node.js realm. We need to wrap it so that encode() returns a Uint8Array in the jsdom window's realm, so that\n// `result.buffer instanceof ArrayBuffer` works correctly in user code.\n\nconst encoder = new TextEncoder();\n\nexports.implementation = class TextEncoderImpl {\n  constructor(globalObject) {\n    this._globalObject = globalObject;\n    this.encoding = \"utf-8\";\n  }\n\n  encode(input) {\n    const encoded = encoder.encode(input);\n    const ab = copyToArrayBufferInTargetRealm(encoded.buffer, this._globalObject);\n    return new this._globalObject.Uint8Array(ab);\n  }\n\n  encodeInto(source, destination) {\n    return encoder.encodeInto(source, destination);\n  }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\n\nconst implSymbol = utils.implSymbol;\nconst ctorRegistrySymbol = utils.ctorRegistrySymbol;\n\nconst interfaceName = \"TextEncoder\";\n\nexports.is = value => {\n  return utils.isObject(value) && Object.hasOwn(value, implSymbol) && value[implSymbol] instanceof Impl.implementation;\n};\nexports.isImpl = value => {\n  return utils.isObject(value) && value instanceof Impl.implementation;\n};\nexports.convert = (globalObject, value, { context = \"The provided value\" } = {}) => {\n  if (exports.is(value)) {\n    return utils.implForWrapper(value);\n  }\n  throw new globalObject.TypeError(`${context} is not of type 'TextEncoder'.`);\n};\n\nfunction makeWrapper(globalObject, newTarget) {\n  let proto;\n  if (newTarget !== undefined) {\n    proto = newTarget.prototype;\n  }\n\n  if (!utils.isObject(proto)) {\n    proto = globalObject[ctorRegistrySymbol][\"TextEncoder\"].prototype;\n  }\n\n  return Object.create(proto);\n}\n\nexports.create = (globalObject, constructorArgs, privateData) => {\n  const wrapper = makeWrapper(globalObject);\n  return exports.setup(wrapper, globalObject, constructorArgs, privateData);\n};\n\nexports.createImpl = (globalObject, constructorArgs, privateData) => {\n  const wrapper = exports.create(globalObject, constructorArgs, privateData);\n  return utils.implForWrapper(wrapper);\n};\n\nexports._internalSetup = (wrapper, globalObject) => {};\n\nexports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {\n  privateData.wrapper = wrapper;\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: new Impl.implementation(globalObject, constructorArgs, privateData),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper;\n};\n\nexports.new = (globalObject, newTarget) => {\n  const wrapper = makeWrapper(globalObject, newTarget);\n\n  exports._internalSetup(wrapper, globalObject);\n  Object.defineProperty(wrapper, implSymbol, {\n    value: Object.create(Impl.implementation.prototype),\n    configurable: true\n  });\n\n  wrapper[implSymbol][utils.wrapperSymbol] = wrapper;\n  if (Impl.init) {\n    Impl.init(wrapper[implSymbol]);\n  }\n  return wrapper[implSymbol];\n};\n\nconst exposed = new Set([\"Window\"]);\n\nexports.install = (globalObject, globalNames) => {\n  if (!globalNames.some(globalName => exposed.has(globalName))) {\n    return;\n  }\n\n  const ctorRegistry = utils.initCtorRegistry(globalObject);\n  class TextEncoder {\n    constructor() {\n      return exports.setup(Object.create(new.target.prototype), globalObject, undefined);\n    }\n\n    encode() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\"'encode' called on an object that is not a valid instance of TextEncoder.\");\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        if (curArg !== undefined) {\n          curArg = conversions[\"USVString\"](curArg, {\n            context: \"Failed to execute 'encode' on 'TextEncoder': parameter 1\",\n            globals: globalObject\n          });\n        } else {\n          curArg = \"\";\n        }\n        args.push(curArg);\n      }\n      return esValue[implSymbol].encode(...args);\n    }\n\n    encodeInto(source, destination) {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'encodeInto' called on an object that is not a valid instance of TextEncoder.\"\n        );\n      }\n\n      if (arguments.length < 2) {\n        throw new globalObject.TypeError(\n          `Failed to execute 'encodeInto' on 'TextEncoder': 2 arguments required, but only ${arguments.length} present.`\n        );\n      }\n      const args = [];\n      {\n        let curArg = arguments[0];\n        curArg = conversions[\"USVString\"](curArg, {\n          context: \"Failed to execute 'encodeInto' on 'TextEncoder': parameter 1\",\n          globals: globalObject\n        });\n        args.push(curArg);\n      }\n      {\n        let curArg = arguments[1];\n        curArg = conversions[\"Uint8Array\"](curArg, {\n          context: \"Failed to execute 'encodeInto' on 'TextEncoder': parameter 2\",\n          globals: globalObject,\n          allowShared: true\n        });\n        args.push(curArg);\n      }\n      return utils.tryWrapperForImpl(esValue[implSymbol].encodeInto(...args));\n    }\n\n    get encoding() {\n      const esValue = this !== null && this !== undefined ? this : globalObject;\n\n      if (!exports.is(esValue)) {\n        throw new globalObject.TypeError(\n          \"'get encoding' called on an object that is not a valid instance of TextEncoder.\"\n        );\n      }\n\n      return esValue[implSymbol][\"encoding\"];\n    }\n  }\n  Object.defineProperties(TextEncoder.prototype, {\n    encode: { enumerable: true },\n    encodeInto: { enumerable: true },\n    encoding: { enumerable: true },\n    [Symbol.toStringTag]: { value: \"TextEncoder\", configurable: true }\n  });\n  ctorRegistry[interfaceName] = TextEncoder;\n\n  Object.defineProperty(globalObject, interfaceName, {\n    configurable: true,\n    writable: true,\n    value: TextEncoder\n  });\n};\n\nconst Impl = require(\"../../jsdom/living/encoding/TextEncoder-impl.js\");\n","\"use strict\";\n\nconst style = require(\"../level2/style\");\nconst xpath = require(\"../level3/xpath\");\n\n// This object defines the mapping between the interface name and the generated interface wrapper code.\n// Note: The mapping needs to stay as-is in order due to interface evaluation.\n// We cannot \"refactor\" this to something less duplicative because that would break bundlers which depend on static\n// analysis of require()s.\nconst generatedInterfaces = {\n  DOMException: require(\"../../generated/idl/DOMException.js\"),\n\n  URL: require(\"whatwg-url/webidl2js-wrapper\").URL,\n  URLSearchParams: require(\"whatwg-url/webidl2js-wrapper\").URLSearchParams,\n\n  EventTarget: require(\"../../generated/idl/EventTarget\"),\n\n  NamedNodeMap: require(\"../../generated/idl/NamedNodeMap\"),\n  Node: require(\"../../generated/idl/Node\"),\n  Attr: require(\"../../generated/idl/Attr\"),\n  Element: require(\"../../generated/idl/Element\"),\n  DocumentFragment: require(\"../../generated/idl/DocumentFragment\"),\n  DOMImplementation: require(\"../../generated/idl/DOMImplementation\"),\n  Document: require(\"../../generated/idl/Document\"),\n  XMLDocument: require(\"../../generated/idl/XMLDocument\"),\n  CharacterData: require(\"../../generated/idl/CharacterData\"),\n  Text: require(\"../../generated/idl/Text\"),\n  CDATASection: require(\"../../generated/idl/CDATASection\"),\n  ProcessingInstruction: require(\"../../generated/idl/ProcessingInstruction\"),\n  Comment: require(\"../../generated/idl/Comment\"),\n  DocumentType: require(\"../../generated/idl/DocumentType\"),\n  NodeList: require(\"../../generated/idl/NodeList\"),\n  RadioNodeList: require(\"../../generated/idl/RadioNodeList\"),\n  HTMLCollection: require(\"../../generated/idl/HTMLCollection\"),\n  HTMLOptionsCollection: require(\"../../generated/idl/HTMLOptionsCollection\"),\n  DOMStringMap: require(\"../../generated/idl/DOMStringMap\"),\n  DOMTokenList: require(\"../../generated/idl/DOMTokenList\"),\n\n  StyleSheetList: require(\"../../generated/idl/StyleSheetList.js\"),\n\n  HTMLElement: require(\"../../generated/idl/HTMLElement.js\"),\n  HTMLHeadElement: require(\"../../generated/idl/HTMLHeadElement.js\"),\n  HTMLTitleElement: require(\"../../generated/idl/HTMLTitleElement.js\"),\n  HTMLBaseElement: require(\"../../generated/idl/HTMLBaseElement.js\"),\n  HTMLLinkElement: require(\"../../generated/idl/HTMLLinkElement.js\"),\n  HTMLMetaElement: require(\"../../generated/idl/HTMLMetaElement.js\"),\n  HTMLStyleElement: require(\"../../generated/idl/HTMLStyleElement.js\"),\n  HTMLBodyElement: require(\"../../generated/idl/HTMLBodyElement.js\"),\n  HTMLHeadingElement: require(\"../../generated/idl/HTMLHeadingElement.js\"),\n  HTMLParagraphElement: require(\"../../generated/idl/HTMLParagraphElement.js\"),\n  HTMLHRElement: require(\"../../generated/idl/HTMLHRElement.js\"),\n  HTMLPreElement: require(\"../../generated/idl/HTMLPreElement.js\"),\n  HTMLUListElement: require(\"../../generated/idl/HTMLUListElement.js\"),\n  HTMLOListElement: require(\"../../generated/idl/HTMLOListElement.js\"),\n  HTMLLIElement: require(\"../../generated/idl/HTMLLIElement.js\"),\n  HTMLMenuElement: require(\"../../generated/idl/HTMLMenuElement.js\"),\n  HTMLDListElement: require(\"../../generated/idl/HTMLDListElement.js\"),\n  HTMLDivElement: require(\"../../generated/idl/HTMLDivElement.js\"),\n  HTMLAnchorElement: require(\"../../generated/idl/HTMLAnchorElement.js\"),\n  HTMLAreaElement: require(\"../../generated/idl/HTMLAreaElement.js\"),\n  HTMLBRElement: require(\"../../generated/idl/HTMLBRElement.js\"),\n  HTMLButtonElement: require(\"../../generated/idl/HTMLButtonElement.js\"),\n  HTMLCanvasElement: require(\"../../generated/idl/HTMLCanvasElement.js\"),\n  HTMLDataElement: require(\"../../generated/idl/HTMLDataElement.js\"),\n  HTMLDataListElement: require(\"../../generated/idl/HTMLDataListElement.js\"),\n  HTMLDetailsElement: require(\"../../generated/idl/HTMLDetailsElement.js\"),\n  HTMLDialogElement: require(\"../../generated/idl/HTMLDialogElement.js\"),\n  HTMLDirectoryElement: require(\"../../generated/idl/HTMLDirectoryElement.js\"),\n  HTMLFieldSetElement: require(\"../../generated/idl/HTMLFieldSetElement.js\"),\n  HTMLFontElement: require(\"../../generated/idl/HTMLFontElement.js\"),\n  HTMLFormElement: require(\"../../generated/idl/HTMLFormElement.js\"),\n  HTMLHtmlElement: require(\"../../generated/idl/HTMLHtmlElement.js\"),\n  HTMLImageElement: require(\"../../generated/idl/HTMLImageElement.js\"),\n  HTMLInputElement: require(\"../../generated/idl/HTMLInputElement.js\"),\n  HTMLLabelElement: require(\"../../generated/idl/HTMLLabelElement.js\"),\n  HTMLLegendElement: require(\"../../generated/idl/HTMLLegendElement.js\"),\n  HTMLMapElement: require(\"../../generated/idl/HTMLMapElement.js\"),\n  HTMLMarqueeElement: require(\"../../generated/idl/HTMLMarqueeElement.js\"),\n  HTMLMediaElement: require(\"../../generated/idl/HTMLMediaElement.js\"),\n  HTMLMeterElement: require(\"../../generated/idl/HTMLMeterElement.js\"),\n  HTMLModElement: require(\"../../generated/idl/HTMLModElement.js\"),\n  HTMLOptGroupElement: require(\"../../generated/idl/HTMLOptGroupElement.js\"),\n  HTMLOptionElement: require(\"../../generated/idl/HTMLOptionElement.js\"),\n  HTMLOutputElement: require(\"../../generated/idl/HTMLOutputElement.js\"),\n  HTMLPictureElement: require(\"../../generated/idl/HTMLPictureElement.js\"),\n  HTMLProgressElement: require(\"../../generated/idl/HTMLProgressElement.js\"),\n  HTMLQuoteElement: require(\"../../generated/idl/HTMLQuoteElement.js\"),\n  HTMLScriptElement: require(\"../../generated/idl/HTMLScriptElement.js\"),\n  HTMLSelectElement: require(\"../../generated/idl/HTMLSelectElement.js\"),\n  HTMLSlotElement: require(\"../../generated/idl/HTMLSlotElement.js\"),\n  HTMLSourceElement: require(\"../../generated/idl/HTMLSourceElement.js\"),\n  HTMLSpanElement: require(\"../../generated/idl/HTMLSpanElement.js\"),\n  HTMLTableCaptionElement: require(\"../../generated/idl/HTMLTableCaptionElement.js\"),\n  HTMLTableCellElement: require(\"../../generated/idl/HTMLTableCellElement.js\"),\n  HTMLTableColElement: require(\"../../generated/idl/HTMLTableColElement.js\"),\n  HTMLTableElement: require(\"../../generated/idl/HTMLTableElement.js\"),\n  HTMLTimeElement: require(\"../../generated/idl/HTMLTimeElement.js\"),\n  HTMLTableRowElement: require(\"../../generated/idl/HTMLTableRowElement.js\"),\n  HTMLTableSectionElement: require(\"../../generated/idl/HTMLTableSectionElement.js\"),\n  HTMLTemplateElement: require(\"../../generated/idl/HTMLTemplateElement.js\"),\n  HTMLTextAreaElement: require(\"../../generated/idl/HTMLTextAreaElement.js\"),\n  HTMLUnknownElement: require(\"../../generated/idl/HTMLUnknownElement.js\"),\n  HTMLFrameElement: require(\"../../generated/idl/HTMLFrameElement.js\"),\n  HTMLFrameSetElement: require(\"../../generated/idl/HTMLFrameSetElement.js\"),\n  HTMLIFrameElement: require(\"../../generated/idl/HTMLIFrameElement.js\"),\n  HTMLEmbedElement: require(\"../../generated/idl/HTMLEmbedElement.js\"),\n  HTMLObjectElement: require(\"../../generated/idl/HTMLObjectElement.js\"),\n  HTMLParamElement: require(\"../../generated/idl/HTMLParamElement.js\"),\n  HTMLVideoElement: require(\"../../generated/idl/HTMLVideoElement.js\"),\n  HTMLAudioElement: require(\"../../generated/idl/HTMLAudioElement.js\"),\n  HTMLTrackElement: require(\"../../generated/idl/HTMLTrackElement.js\"),\n  HTMLFormControlsCollection: require(\"../../generated/idl/HTMLFormControlsCollection.js\"),\n\n  SVGElement: require(\"../../generated/idl/SVGElement.js\"),\n  SVGGraphicsElement: require(\"../../generated/idl/SVGGraphicsElement.js\"),\n  SVGSVGElement: require(\"../../generated/idl/SVGSVGElement.js\"),\n  SVGGElement: require(\"../../generated/idl/SVGGElement.js\"),\n  SVGDefsElement: require(\"../../generated/idl/SVGDefsElement.js\"),\n  SVGDescElement: require(\"../../generated/idl/SVGDescElement.js\"),\n  SVGMetadataElement: require(\"../../generated/idl/SVGMetadataElement.js\"),\n  SVGTitleElement: require(\"../../generated/idl/SVGTitleElement.js\"),\n  SVGSymbolElement: require(\"../../generated/idl/SVGSymbolElement.js\"),\n  SVGSwitchElement: require(\"../../generated/idl/SVGSwitchElement.js\"),\n\n  SVGAnimatedPreserveAspectRatio: require(\"../../generated/idl/SVGAnimatedPreserveAspectRatio\"),\n  SVGAnimatedRect: require(\"../../generated/idl/SVGAnimatedRect\"),\n  SVGAnimatedString: require(\"../../generated/idl/SVGAnimatedString\"),\n  SVGNumber: require(\"../../generated/idl/SVGNumber\"),\n  SVGPreserveAspectRatio: require(\"../../generated/idl/SVGPreserveAspectRatio\"),\n  SVGRect: require(\"../../generated/idl/SVGRect\"),\n  SVGStringList: require(\"../../generated/idl/SVGStringList\"),\n\n  Event: require(\"../../generated/idl/Event\"),\n  BeforeUnloadEvent: require(\"../../generated/idl/BeforeUnloadEvent\"),\n  BlobEvent: require(\"../../generated/idl/BlobEvent\"),\n  CloseEvent: require(\"../../generated/idl/CloseEvent\"),\n  CustomEvent: require(\"../../generated/idl/CustomEvent\"),\n  DeviceOrientationEvent: require(\"../../generated/idl/DeviceOrientationEvent\"),\n  DeviceMotionEvent: require(\"../../generated/idl/DeviceMotionEvent\"),\n  ErrorEvent: require(\"../../generated/idl/ErrorEvent\"),\n  HashChangeEvent: require(\"../../generated/idl/HashChangeEvent\"),\n  MessageEvent: require(\"../../generated/idl/MessageEvent\"),\n  PageTransitionEvent: require(\"../../generated/idl/PageTransitionEvent\"),\n  PopStateEvent: require(\"../../generated/idl/PopStateEvent\"),\n  PromiseRejectionEvent: require(\"../../generated/idl/PromiseRejectionEvent\"),\n  ProgressEvent: require(\"../../generated/idl/ProgressEvent\"),\n  StorageEvent: require(\"../../generated/idl/StorageEvent\"),\n  SubmitEvent: require(\"../../generated/idl/SubmitEvent\"),\n  TransitionEvent: require(\"../../generated/idl/TransitionEvent\"),\n\n  UIEvent: require(\"../../generated/idl/UIEvent\"),\n  FocusEvent: require(\"../../generated/idl/FocusEvent\"),\n  InputEvent: require(\"../../generated/idl/InputEvent\"),\n  MouseEvent: require(\"../../generated/idl/MouseEvent\"),\n  PointerEvent: require(\"../../generated/idl/PointerEvent\"),\n  KeyboardEvent: require(\"../../generated/idl/KeyboardEvent\"),\n  TouchEvent: require(\"../../generated/idl/TouchEvent\"),\n  CompositionEvent: require(\"../../generated/idl/CompositionEvent\"),\n  WheelEvent: require(\"../../generated/idl/WheelEvent\"),\n\n  BarProp: require(\"../../generated/idl/BarProp\"),\n  External: require(\"../../generated/idl/External\"),\n  Location: require(\"../../generated/idl/Location\"),\n  History: require(\"../../generated/idl/History\"),\n  Screen: require(\"../../generated/idl/Screen\"),\n  Performance: require(\"../../generated/idl/Performance\"),\n  Navigator: require(\"../../generated/idl/Navigator\"),\n\n  Crypto: require(\"../../generated/idl/Crypto\"),\n\n  PluginArray: require(\"../../generated/idl/PluginArray\"),\n  MimeTypeArray: require(\"../../generated/idl/MimeTypeArray\"),\n  Plugin: require(\"../../generated/idl/Plugin\"),\n  MimeType: require(\"../../generated/idl/MimeType\"),\n\n  FileReader: require(\"../../generated/idl/FileReader\"),\n  Blob: require(\"../../generated/idl/Blob\"),\n  File: require(\"../../generated/idl/File\"),\n  FileList: require(\"../../generated/idl/FileList\"),\n  ValidityState: require(\"../../generated/idl/ValidityState\"),\n\n  DOMParser: require(\"../../generated/idl/DOMParser\"),\n  XMLSerializer: require(\"../../generated/idl/XMLSerializer\"),\n\n  FormData: require(\"../../generated/idl/FormData\"),\n  XMLHttpRequestEventTarget: require(\"../../generated/idl/XMLHttpRequestEventTarget\"),\n  XMLHttpRequestUpload: require(\"../../generated/idl/XMLHttpRequestUpload\"),\n  XMLHttpRequest: require(\"../../generated/idl/XMLHttpRequest\"),\n  WebSocket: require(\"../../generated/idl/WebSocket\"),\n\n  NodeFilter: require(\"../../generated/idl/NodeFilter\"),\n  NodeIterator: require(\"../../generated/idl/NodeIterator\"),\n  TreeWalker: require(\"../../generated/idl/TreeWalker\"),\n\n  AbstractRange: require(\"../../generated/idl/AbstractRange\"),\n  Range: require(\"../../generated/idl/Range\"),\n  StaticRange: require(\"../../generated/idl/StaticRange\"),\n  Selection: require(\"../../generated/idl/Selection\"),\n\n  Storage: require(\"../../generated/idl/Storage\"),\n\n  CustomElementRegistry: require(\"../../generated/idl/CustomElementRegistry\"),\n  ElementInternals: require(\"../../generated/idl/ElementInternals\"),\n  ShadowRoot: require(\"../../generated/idl/ShadowRoot\"),\n\n  MutationObserver: require(\"../../generated/idl/MutationObserver\"),\n  MutationRecord: require(\"../../generated/idl/MutationRecord\"),\n\n  Headers: require(\"../../generated/idl/Headers\"),\n  AbortController: require(\"../../generated/idl/AbortController\"),\n  AbortSignal: require(\"../../generated/idl/AbortSignal\"),\n\n  DeviceMotionEventAcceleration: require(\"../../generated/idl/DeviceMotionEventAcceleration\"),\n  DeviceMotionEventRotationRate: require(\"../../generated/idl/DeviceMotionEventRotationRate\"),\n\n  DOMRectReadOnly: require(\"../../generated/idl/DOMRectReadOnly\"),\n  DOMRect: require(\"../../generated/idl/DOMRect\"),\n\n  TextDecoder: require(\"../../generated/idl/TextDecoder\"),\n  TextEncoder: require(\"../../generated/idl/TextEncoder\")\n};\n\nfunction install(window, name, interfaceConstructor) {\n  Object.defineProperty(window, name, {\n    configurable: true,\n    writable: true,\n    value: interfaceConstructor\n  });\n}\n\nexports.installInterfaces = (window, globalNames) => {\n  // Install generated interface.\n  for (const generatedInterface of Object.values(generatedInterfaces)) {\n    generatedInterface.install(window, globalNames);\n  }\n\n  // Install legacy HTMLDocument interface\n  // https://html.spec.whatwg.org/#htmldocument\n  install(window, \"HTMLDocument\", window.Document);\n\n  // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n  Object.setPrototypeOf(window.DOMException.prototype, window.Error.prototype);\n\n  // These need to be cleaned up...\n  style.addToCore(window);\n  xpath(window);\n};\n\n// Returns an interface webidl2js wrapper given its an interface name.\nexports.getInterfaceWrapper = name => {\n  return generatedInterfaces[name];\n};\n","\"use strict\";\nconst PageTransitionEvent = require(\"../../../generated/idl/PageTransitionEvent.js\");\nconst { fireAnEvent } = require(\"./events\");\n\n// https://html.spec.whatwg.org/multipage/browsing-the-web.html#fire-a-page-transition-event\nexports.fireAPageTransitionEvent = (eventName, window, persisted) => {\n  const attributes = { persisted, cancelable: true, bubbles: true };\n  fireAnEvent(eventName, window, PageTransitionEvent, attributes, true);\n};\n","\"use strict\";\nconst whatwgURL = require(\"whatwg-url\");\nconst HashChangeEvent = require(\"../../../generated/idl/HashChangeEvent.js\");\nconst PopStateEvent = require(\"../../../generated/idl/PopStateEvent.js\");\nconst notImplemented = require(\"../../browser/not-implemented.js\");\nconst idlUtils = require(\"../../../generated/idl/utils.js\");\nconst { fireAnEvent } = require(\"../helpers/events\");\n\n// https://html.spec.whatwg.org/#session-history\nclass SessionHistory {\n  constructor(initialEntry, window) {\n    this._window = window;\n    this._windowImpl = idlUtils.implForWrapper(window);\n    this._historyTraversalQueue = new Set();\n    this._entries = [initialEntry];\n    this._currentIndex = 0;\n  }\n\n  _queueHistoryTraversalTask(fn) {\n    const timeoutId = this._window.setTimeout(() => {\n      this._historyTraversalQueue.delete(timeoutId);\n      fn();\n    }, 0);\n\n    this._historyTraversalQueue.add(timeoutId);\n  }\n\n  clearHistoryTraversalTasks() {\n    for (const timeoutId of this._historyTraversalQueue) {\n      this._window.clearTimeout(timeoutId);\n    }\n    this._historyTraversalQueue.clear();\n  }\n\n  get length() {\n    return this._entries.length;\n  }\n\n  get currentEntry() {\n    return this._entries[this._currentIndex];\n  }\n\n  // https://html.spec.whatwg.org/#dom-history-pushstate\n  removeAllEntriesAfterCurrentEntry() {\n    this._entries.splice(this._currentIndex + 1, Infinity);\n  }\n\n  // https://html.spec.whatwg.org/#traverse-the-history-by-a-delta\n  traverseByDelta(delta) {\n    this._queueHistoryTraversalTask(() => {\n      const newIndex = this._currentIndex + delta;\n      if (newIndex < 0 || newIndex >= this.length) {\n        return;\n      }\n\n      const specifiedEntry = this._entries[newIndex];\n\n      // Not implemented: unload a document guard\n\n      // Not clear that this should be queued. html/browsers/history/the-history-interface/004.html can be fixed\n      // by removing the queue, but doing so breaks some tests in history.js that also pass in browsers.\n      this._queueHistoryTraversalTask(() => {\n        // If there is an ongoing attempt to navigate specified browsing context that has not yet matured,\n        // then cancel that attempt to navigate the browsing context.\n\n        // Doing this seems to break tests involving navigating via push/pop state and via fragments. I think this\n        // is because these navigations should already count as having \"matured\" because the document is not changing.\n\n        // this.clearHistoryTraversalTasks();\n\n        if (specifiedEntry.document !== this.currentEntry.document) {\n          // TODO: unload the active document with the recycle parameter set to false\n          notImplemented(this._window, \"traversing history to another Document\");\n        }\n        this.traverseHistory(specifiedEntry);\n      });\n    });\n  }\n\n  // https://html.spec.whatwg.org/#traverse-the-history\n  traverseHistory(specifiedEntry, flags = {}) {\n    if (!specifiedEntry.document) {\n      // If entry no longer holds a Document object, then navigate the browsing context to entry's URL\n      // to perform an entry update of entry, and abort these steps\n      notImplemented(this._window, \"traversing the history to an entry that no longer holds a Document\");\n    }\n    // Not spec compliant, just minimal. Lots of missing steps.\n\n    const nonBlockingEvents = Boolean(flags.nonBlockingEvents);\n\n    const document = idlUtils.implForWrapper(this._window._document);\n\n    const { currentEntry } = this;\n\n    // If the current entry's title was not set by the pushState() or replaceState() methods, then set its title\n    // to the value returned by the document.title IDL attribute.\n    if (currentEntry.title === undefined) {\n      currentEntry.title = document.title;\n    }\n\n\n    if (specifiedEntry.document !== currentEntry.document) {\n      // If entry has a different Document object than the current entry, then...\n      notImplemented(this._window, \"traversing the history to an entry with a different Document\");\n    }\n\n    document._URL = specifiedEntry.url;\n\n    const hashChanged =\n      specifiedEntry.url.fragment !== currentEntry.url.fragment && specifiedEntry.document === currentEntry.document;\n    let oldURL, newURL;\n    if (hashChanged) {\n      oldURL = currentEntry.url;\n      newURL = specifiedEntry.url;\n    }\n\n    if (flags.replacement) {\n      // If the traversal was initiated with replacement enabled, remove the entry immediately before the\n      // specified entry in the session history.\n      this._entries.splice(this._entries.indexOf(specifiedEntry) - 1, 1);\n    }\n\n    this.updateCurrentEntry(specifiedEntry);\n\n    const state = specifiedEntry.stateObject; // TODO structured clone\n\n    // arguably it's a bit odd that the state and latestEntry do not belong to the SessionHistory\n    // but the spec gives them to \"History\" and \"Document\" respecively.\n    document._history._state = state;\n    const stateChanged = specifiedEntry.document._latestEntry !== specifiedEntry;\n    specifiedEntry.document._latestEntry = specifiedEntry;\n\n    const fireEvents = () => this._fireEvents(stateChanged, hashChanged, state, oldURL, newURL);\n\n    if (nonBlockingEvents) {\n      this._window.setTimeout(fireEvents, 0);\n    } else {\n      fireEvents();\n    }\n  }\n\n  _fireEvents(stateChanged, hashChanged, state, oldURL, newURL) {\n    if (stateChanged) {\n      fireAnEvent(\"popstate\", this._windowImpl, PopStateEvent, { state });\n    }\n\n    if (hashChanged) {\n      fireAnEvent(\"hashchange\", this._windowImpl, HashChangeEvent, {\n        oldURL: whatwgURL.serializeURL(oldURL),\n        newURL: whatwgURL.serializeURL(newURL)\n      });\n    }\n  }\n\n  addEntryAfterCurrentEntry(entry) {\n    this._entries.splice(this._currentIndex + 1, 0, entry);\n  }\n\n  updateCurrentEntry(entry) {\n    this._currentIndex = this._entries.indexOf(entry);\n  }\n}\nmodule.exports = SessionHistory;\n","","\"use strict\";\nconst vm = require(\"node:vm\");\nconst webIDLConversions = require(\"webidl-conversions\");\nconst whatwgURL = require(\"whatwg-url\");\nconst { notImplementedMethod } = require(\"./not-implemented\");\nconst { installInterfaces } = require(\"../living/interfaces\");\nconst { define, mixin } = require(\"../utils\");\nconst Element = require(\"../../generated/idl/Element\");\nconst EventTarget = require(\"../../generated/idl/EventTarget\");\nconst EventHandlerNonNull = require(\"../../generated/idl/EventHandlerNonNull\");\nconst IDLFunction = require(\"../../generated/idl/Function\");\nconst OnBeforeUnloadEventHandlerNonNull = require(\"../../generated/idl/OnBeforeUnloadEventHandlerNonNull\");\nconst OnErrorEventHandlerNonNull = require(\"../../generated/idl/OnErrorEventHandlerNonNull\");\nconst { fireAPageTransitionEvent } = require(\"../living/helpers/page-transition-event\");\nconst windowProperties = require(\"../living/window-properties\");\nconst DOMException = require(\"../../generated/idl/DOMException\");\nconst idlUtils = require(\"../../generated/idl/utils\");\nconst WebSocketImpl = require(\"../living/websockets/WebSocket-impl\").implementation;\nconst BarProp = require(\"../../generated/idl/BarProp\");\nconst documents = require(\"../living/documents.js\");\nconst External = require(\"../../generated/idl/External\");\nconst Navigator = require(\"../../generated/idl/Navigator\");\nconst Performance = require(\"../../generated/idl/Performance\");\nconst Screen = require(\"../../generated/idl/Screen\");\nconst Crypto = require(\"../../generated/idl/Crypto\");\nconst Storage = require(\"../../generated/idl/Storage\");\nconst Selection = require(\"../../generated/idl/Selection\");\nconst reportException = require(\"../living/helpers/runtime-script-errors\");\nconst { getCurrentEventHandlerValue } = require(\"../living/helpers/create-event-accessor.js\");\nconst { fireAnEvent } = require(\"../living/helpers/events\");\nconst SessionHistory = require(\"../living/window/SessionHistory\");\nconst { SHADOW_DOM_PSEUDO_REGEXP, getComputedStyleDeclaration } = require(\"../living/helpers/style-rules.js\");\nconst CustomElementRegistry = require(\"../../generated/idl/CustomElementRegistry\");\nconst MessageEvent = require(\"../../generated/idl/MessageEvent\");\nconst jsGlobals = require(\"../../generated/js-globals.json\");\n\nconst GlobalEventHandlersImpl = require(\"../living/nodes/GlobalEventHandlers-impl\").implementation;\nconst WindowEventHandlersImpl = require(\"../living/nodes/WindowEventHandlers-impl\").implementation;\nconst { globalEventHandlersEvents, windowEventHandlersEvents } = require(\"../../generated/event-sets\");\n\nconst allWindowEvents = new Set([...globalEventHandlersEvents, ...windowEventHandlersEvents]);\n\nconst jsGlobalEntriesToInstall = Object.entries(jsGlobals).filter(([name]) => name in global);\n\nexports.createWindow = options => {\n  const makeVMContext = options.runScripts === \"outside-only\" || options.runScripts === \"dangerously\";\n\n  // Bootstrap with an empty object from the Node.js realm. We'll muck with its prototype chain shortly.\n  let window = {};\n\n  // Make window into a global object: either via vm, or just aliasing the Node.js globals.\n  // Also set _globalObject and _globalProxy.\n  //\n  // TODO: don't expose _globalObject and _globalProxy as public properties. While you're there, audit usage sites to\n  // see how necessary they really are.\n  if (makeVMContext) {\n    window = vm.createContext(vm.constants.DONT_CONTEXTIFY);\n\n    window._globalObject = window;\n    window._globalProxy = vm.runInContext(\"this\", window);\n\n    // Without this, these globals will only appear to scripts running inside the context using vm.runScript; they will\n    // not appear to scripts running from the outside, including to JSDOM implementation code.\n    for (const [globalName, globalPropDesc] of jsGlobalEntriesToInstall) {\n      const propDesc = { ...globalPropDesc, value: vm.runInContext(globalName, window) };\n      Object.defineProperty(window, globalName, propDesc);\n    }\n  } else {\n    window._globalObject = window._globalProxy = window;\n\n    // Without contextifying the window, none of the globals will exist. So, let's at least alias them from the Node.js\n    // context. See https://github.com/jsdom/jsdom/issues/2727 for more background and discussion.\n    for (const [globalName, globalPropDesc] of jsGlobalEntriesToInstall) {\n      const propDesc = { ...globalPropDesc, value: global[globalName] };\n      Object.defineProperty(window, globalName, propDesc);\n    }\n  }\n\n  // Create instances of all the web platform interfaces and install them on the window.\n  installInterfaces(window, [\"Window\"]);\n\n  // Now we have an EventTarget contructor so we can work on the prototype chain.\n\n  // eslint-disable-next-line func-name-matching, func-style\n  const WindowConstructor = function Window() {\n    throw new TypeError(\"Illegal constructor\");\n  };\n  Object.setPrototypeOf(WindowConstructor, window.EventTarget);\n\n  Object.defineProperty(window, \"Window\", {\n    configurable: true,\n    writable: true,\n    value: WindowConstructor\n  });\n\n  const windowPropertiesObject = windowProperties.create(window.EventTarget.prototype, window);\n\n  const windowPrototype = Object.create(windowPropertiesObject);\n  Object.defineProperties(windowPrototype, {\n    constructor: {\n      value: WindowConstructor,\n      writable: true,\n      configurable: true\n    },\n    [Symbol.toStringTag]: {\n      value: \"Window\",\n      configurable: true\n    }\n  });\n\n  WindowConstructor.prototype = windowPrototype;\n  Object.setPrototypeOf(window, windowPrototype);\n  if (makeVMContext) {\n    Object.setPrototypeOf(window._globalProxy, windowPrototype);\n    Object.setPrototypeOf(window.EventTarget.prototype, window.Object.prototype);\n  }\n\n  // Now that the prototype chain is fully set up, call the superclass setup.\n  EventTarget.setup(window, window);\n\n  installEventHandlers(window);\n\n  installOwnProperties(window, options);\n\n  // Not sure why this is necessary... TODO figure it out.\n  Object.defineProperty(idlUtils.implForWrapper(window), idlUtils.wrapperSymbol, { get: () => window._globalProxy });\n\n  // Fire or prepare to fire load and pageshow events.\n  process.nextTick(() => {\n    if (!window.document) {\n      return; // window might've been closed already\n    }\n\n    if (window.document.readyState === \"complete\") {\n      fireAnEvent(\"load\", window, undefined, {}, true);\n    } else {\n      window.document.addEventListener(\"load\", () => {\n        fireAnEvent(\"load\", window, undefined, {}, true);\n        if (!window._document) {\n          return; // window might've been closed already\n        }\n\n        const documentImpl = idlUtils.implForWrapper(window._document);\n        if (!documentImpl._pageShowingFlag) {\n          documentImpl._pageShowingFlag = true;\n          fireAPageTransitionEvent(\"pageshow\", window, false);\n        }\n      });\n    }\n  });\n\n  return window;\n};\n\nfunction installEventHandlers(window) {\n  mixin(window, WindowEventHandlersImpl.prototype);\n  mixin(window, GlobalEventHandlersImpl.prototype);\n  window._initGlobalEvents();\n\n  for (const event of allWindowEvents) {\n    let Converter = EventHandlerNonNull;\n    if (event === \"error\") {\n      Converter = OnErrorEventHandlerNonNull;\n    } else if (event === \"beforeunload\") {\n      Converter = OnBeforeUnloadEventHandlerNonNull;\n    }\n    Object.defineProperty(window, `on${event}`, {\n      configurable: true,\n      enumerable: true,\n      get() {\n        return idlUtils.tryWrapperForImpl(getCurrentEventHandlerValue(window, event));\n      },\n      set(V) {\n        if (!idlUtils.isObject(V)) {\n          V = null;\n        } else {\n          V = Converter.convert(window, V, {\n            context: `Failed to set the 'on${event}' property on 'Window': The provided value`\n          });\n        }\n        window._setEventHandlerFor(event, V);\n      }\n    });\n  }\n}\n\nfunction installOwnProperties(window, options) {\n  const windowInitialized = performance.now();\n\n  // ### PRIVATE DATA PROPERTIES\n\n  window._dispatcher = options.dispatcher;\n  window._loadSubresources = options.loadSubresources;\n  window._userAgent = options.userAgent;\n\n  // List options explicitly to be clear which are passed through\n  window._document = documents.createWrapper(window, {\n    parsingMode: options.parsingMode,\n    contentType: options.contentType,\n    encoding: options.encoding,\n    cookieJar: options.cookieJar,\n    url: options.url,\n    lastModified: options.lastModified,\n    referrer: options.referrer,\n    parseOptions: options.parseOptions,\n    defaultView: window._globalProxy,\n    global: window,\n    parentOrigin: options.parentOrigin\n  }, { alwaysUseDocumentClass: true });\n\n  const documentOrigin = idlUtils.implForWrapper(window._document)._origin;\n  window._origin = documentOrigin;\n\n  // https://html.spec.whatwg.org/#session-history\n  window._sessionHistory = new SessionHistory({\n    document: idlUtils.implForWrapper(window._document),\n    url: idlUtils.implForWrapper(window._document)._URL,\n    stateObject: null\n  }, window);\n\n  window._virtualConsole = options.virtualConsole;\n\n  window._runScripts = options.runScripts;\n\n  // Set up the window as if it's a top level window.\n  // If it's not, then references will be corrected by frame/iframe code.\n  window._parent = window._top = window._globalProxy;\n  window._frameElement = null;\n\n  // This implements window.frames.length, since window.frames returns a\n  // self reference to the window object.  This value is incremented in the\n  // HTMLFrameElement implementation.\n  window._length = 0;\n\n  // https://dom.spec.whatwg.org/#window-current-event\n  window._currentEvent = undefined;\n\n  window._pretendToBeVisual = options.pretendToBeVisual;\n  window._storageQuota = options.storageQuota;\n\n  // Some properties (such as localStorage and sessionStorage) share data\n  // between windows in the same origin. This object is intended\n  // to contain such data.\n  if (options.commonForOrigin && options.commonForOrigin[documentOrigin]) {\n    window._commonForOrigin = options.commonForOrigin;\n  } else {\n    window._commonForOrigin = {\n      [documentOrigin]: {\n        localStorageArea: new Map(),\n        sessionStorageArea: new Map(),\n        windowsInSameOrigin: [window]\n      }\n    };\n  }\n\n  window._currentOriginData = window._commonForOrigin[documentOrigin];\n\n  // ### WEB STORAGE\n\n  window._localStorage = Storage.create(window, [], {\n    associatedWindow: window,\n    storageArea: window._currentOriginData.localStorageArea,\n    type: \"localStorage\",\n    url: window._document.documentURI,\n    storageQuota: window._storageQuota\n  });\n  window._sessionStorage = Storage.create(window, [], {\n    associatedWindow: window,\n    storageArea: window._currentOriginData.sessionStorageArea,\n    type: \"sessionStorage\",\n    url: window._document.documentURI,\n    storageQuota: window._storageQuota\n  });\n\n  // ### SELECTION\n\n  // https://w3c.github.io/selection-api/#dfn-selection\n  window._selection = Selection.createImpl(window);\n\n  // https://w3c.github.io/selection-api/#dom-window\n  window.getSelection = function () {\n    return window._selection;\n  };\n\n  // ### GETTERS\n\n  const locationbar = BarProp.create(window);\n  const menubar = BarProp.create(window);\n  const personalbar = BarProp.create(window);\n  const scrollbars = BarProp.create(window);\n  const statusbar = BarProp.create(window);\n  const toolbar = BarProp.create(window);\n  const external = External.create(window);\n  const navigator = Navigator.create(window);\n  const performanceImpl = Performance.create(window, [], {\n    timeOrigin: performance.timeOrigin + windowInitialized,\n    nowAtTimeOrigin: windowInitialized\n  });\n  const screen = Screen.create(window);\n  const crypto = Crypto.create(window);\n  window._customElementRegistry = CustomElementRegistry.create(window);\n\n  let status = \"\";\n\n  define(window, {\n    name: \"\",\n    get status() {\n      return status;\n    },\n    set status(value) {\n      status = webIDLConversions.DOMString(value);\n    },\n    get devicePixelRatio() {\n      return 1;\n    },\n    get innerWidth() {\n      return 1024;\n    },\n    get innerHeight() {\n      return 768;\n    },\n    get outerWidth() {\n      return 1024;\n    },\n    get outerHeight() {\n      return 768;\n    },\n    get pageXOffset() {\n      return 0;\n    },\n    get pageYOffset() {\n      return 0;\n    },\n    get screenX() {\n      return 0;\n    },\n    get screenLeft() {\n      return 0;\n    },\n    get screenY() {\n      return 0;\n    },\n    get screenTop() {\n      return 0;\n    },\n    get scrollX() {\n      return 0;\n    },\n    get scrollY() {\n      return 0;\n    },\n    get length() {\n      return window._length;\n    },\n    get window() {\n      return window._globalProxy;\n    },\n    get frameElement() {\n      return idlUtils.wrapperForImpl(window._frameElement);\n    },\n    get frames() {\n      return window._globalProxy;\n    },\n    get self() {\n      return window._globalProxy;\n    },\n    get parent() {\n      return window._parent;\n    },\n    get top() {\n      return window._top;\n    },\n    get document() {\n      return window._document;\n    },\n    get external() {\n      return external;\n    },\n    get location() {\n      return idlUtils.wrapperForImpl(idlUtils.implForWrapper(window._document)._location);\n    },\n    // [PutForwards=href]:\n    set location(value) {\n      Reflect.set(window.location, \"href\", value);\n    },\n    get history() {\n      return idlUtils.wrapperForImpl(idlUtils.implForWrapper(window._document)._history);\n    },\n    get navigator() {\n      return navigator;\n    },\n    get locationbar() {\n      return locationbar;\n    },\n    get menubar() {\n      return menubar;\n    },\n    get personalbar() {\n      return personalbar;\n    },\n    get scrollbars() {\n      return scrollbars;\n    },\n    get statusbar() {\n      return statusbar;\n    },\n    get toolbar() {\n      return toolbar;\n    },\n    get performance() {\n      return performanceImpl;\n    },\n    get screen() {\n      return screen;\n    },\n    get crypto() {\n      return crypto;\n    },\n    get origin() {\n      return window._origin;\n    },\n    get localStorage() {\n      if (idlUtils.implForWrapper(window._document)._origin === \"null\") {\n        throw DOMException.create(window, [\n          \"localStorage is not available for opaque origins\",\n          \"SecurityError\"\n        ]);\n      }\n\n      return window._localStorage;\n    },\n    get sessionStorage() {\n      if (idlUtils.implForWrapper(window._document)._origin === \"null\") {\n        throw DOMException.create(window, [\n          \"sessionStorage is not available for opaque origins\",\n          \"SecurityError\"\n        ]);\n      }\n\n      return window._sessionStorage;\n    },\n    get customElements() {\n      return window._customElementRegistry;\n    },\n    get event() {\n      return window._currentEvent ? idlUtils.wrapperForImpl(window._currentEvent) : undefined;\n    }\n  });\n\n  Object.defineProperties(window, {\n    // [Replaceable]:\n    self: makeReplaceablePropertyDescriptor(\"self\", window),\n    locationbar: makeReplaceablePropertyDescriptor(\"locationbar\", window),\n    menubar: makeReplaceablePropertyDescriptor(\"menubar\", window),\n    personalbar: makeReplaceablePropertyDescriptor(\"personalbar\", window),\n    scrollbars: makeReplaceablePropertyDescriptor(\"scrollbars\", window),\n    statusbar: makeReplaceablePropertyDescriptor(\"statusbar\", window),\n    toolbar: makeReplaceablePropertyDescriptor(\"toolbar\", window),\n    frames: makeReplaceablePropertyDescriptor(\"frames\", window),\n    parent: makeReplaceablePropertyDescriptor(\"parent\", window),\n    external: makeReplaceablePropertyDescriptor(\"external\", window),\n    length: makeReplaceablePropertyDescriptor(\"length\", window),\n    screen: makeReplaceablePropertyDescriptor(\"screen\", window),\n    origin: makeReplaceablePropertyDescriptor(\"origin\", window),\n    event: makeReplaceablePropertyDescriptor(\"event\", window),\n    innerWidth: makeReplaceablePropertyDescriptor(\"innerWidth\", window),\n    innerHeight: makeReplaceablePropertyDescriptor(\"innerHeight\", window),\n    scrollX: makeReplaceablePropertyDescriptor(\"scrollX\", window),\n    pageXOffset: makeReplaceablePropertyDescriptor(\"pageXOffset\", window),\n    scrollY: makeReplaceablePropertyDescriptor(\"scrollY\", window),\n    pageYOffset: makeReplaceablePropertyDescriptor(\"pageYOffset\", window),\n    screenX: makeReplaceablePropertyDescriptor(\"screenX\", window),\n    screenLeft: makeReplaceablePropertyDescriptor(\"screenLeft\", window),\n    screenY: makeReplaceablePropertyDescriptor(\"screenY\", window),\n    screenTop: makeReplaceablePropertyDescriptor(\"screenTop\", window),\n    outerWidth: makeReplaceablePropertyDescriptor(\"outerWidth\", window),\n    outerHeight: makeReplaceablePropertyDescriptor(\"outerHeight\", window),\n    devicePixelRatio: makeReplaceablePropertyDescriptor(\"devicePixelRatio\", window),\n\n    // [LegacyUnforgeable]:\n    window: { configurable: false },\n    document: { configurable: false },\n    location: { configurable: false },\n    top: { configurable: false }\n  });\n\n\n  // ### METHODS\n\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n\n  // In the spec the list of active timers is a set of IDs. We make it a map of IDs to Node.js timer objects, so that\n  // we can call Node.js-side clearTimeout() when clearing, and thus allow process shutdown faster.\n  const listOfActiveTimers = new Map();\n  let latestTimerId = 0;\n\n  window.setTimeout = function (handler, timeout = 0, ...args) {\n    if (typeof handler !== \"function\") {\n      handler = webIDLConversions.DOMString(handler);\n    }\n    timeout = webIDLConversions.long(timeout);\n\n    return timerInitializationSteps(handler, timeout, args, { methodContext: window, repeat: false });\n  };\n  window.setInterval = function (handler, timeout = 0, ...args) {\n    if (typeof handler !== \"function\") {\n      handler = webIDLConversions.DOMString(handler);\n    }\n    timeout = webIDLConversions.long(timeout);\n\n    return timerInitializationSteps(handler, timeout, args, { methodContext: window, repeat: true });\n  };\n\n  window.clearTimeout = function (handle = 0) {\n    handle = webIDLConversions.long(handle);\n\n    const nodejsTimer = listOfActiveTimers.get(handle);\n    if (nodejsTimer) {\n      clearTimeout(nodejsTimer);\n      listOfActiveTimers.delete(handle);\n    }\n  };\n  window.clearInterval = function (handle = 0) {\n    handle = webIDLConversions.long(handle);\n\n    const nodejsTimer = listOfActiveTimers.get(handle);\n    if (nodejsTimer) {\n      // We use setTimeout() in timerInitializationSteps even for window.setInterval().\n      clearTimeout(nodejsTimer);\n      listOfActiveTimers.delete(handle);\n    }\n  };\n\n  function timerInitializationSteps(handler, timeout, args, { methodContext, repeat, previousHandle }) {\n    // This appears to be unspecced, but matches browser behavior for close()ed windows.\n    if (!methodContext._document) {\n      return 0;\n    }\n\n    // TODO: implement timer nesting level behavior.\n\n    const methodContextProxy = methodContext._globalProxy;\n    const handle = previousHandle !== undefined ? previousHandle : ++latestTimerId;\n\n    function task() {\n      if (!listOfActiveTimers.has(handle)) {\n        return;\n      }\n\n      try {\n        if (typeof handler === \"function\") {\n          handler.apply(methodContextProxy, args);\n        } else if (window._runScripts === \"dangerously\") {\n          vm.runInContext(handler, window, { filename: window.location.href, displayErrors: false });\n        }\n      } catch (e) {\n        reportException(window, e, window.location.href);\n      }\n\n      if (listOfActiveTimers.has(handle)) {\n        if (repeat) {\n          timerInitializationSteps(handler, timeout, args, { methodContext, repeat: true, previousHandle: handle });\n        } else {\n          listOfActiveTimers.delete(handle);\n        }\n      }\n    }\n\n    if (timeout < 0) {\n      timeout = 0;\n    }\n\n    const nodejsTimer = setTimeout(task, timeout);\n    listOfActiveTimers.set(handle, nodejsTimer);\n\n    return handle;\n  }\n\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#microtask-queuing\n\n  window.queueMicrotask = function (callback) {\n    callback = IDLFunction.convert(window, callback);\n\n    queueMicrotask(() => {\n      try {\n        callback();\n      } catch (e) {\n        reportException(window, e, window.location.href);\n      }\n    });\n  };\n\n  // https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#animation-frames\n\n  let animationFrameCallbackId = 0;\n  const mapOfAnimationFrameCallbacks = new Map();\n  let animationFrameNodejsInterval = null;\n\n  // Unlike the spec, where an animation frame happens every 60 Hz regardless, we optimize so that if there are no\n  // requestAnimationFrame() calls outstanding, we don't fire the timer. This helps us track that.\n  let numberOfOngoingAnimationFrameCallbacks = 0;\n\n  if (window._pretendToBeVisual) {\n    window.requestAnimationFrame = function (callback) {\n      callback = IDLFunction.convert(window, callback);\n\n      const handle = ++animationFrameCallbackId;\n      mapOfAnimationFrameCallbacks.set(handle, callback);\n\n      ++numberOfOngoingAnimationFrameCallbacks;\n      if (numberOfOngoingAnimationFrameCallbacks === 1) {\n        animationFrameNodejsInterval = setInterval(() => {\n          runAnimationFrameCallbacks(performance.now() - windowInitialized);\n        }, 1000 / 60);\n      }\n\n      return handle;\n    };\n\n    window.cancelAnimationFrame = function (handle) {\n      handle = webIDLConversions[\"unsigned long\"](handle);\n\n      removeAnimationFrameCallback(handle);\n    };\n\n    function runAnimationFrameCallbacks(now) {\n      // Converting to an array is important to get a sync snapshot and thus match spec semantics.\n      const callbackHandles = [...mapOfAnimationFrameCallbacks.keys()];\n      for (const handle of callbackHandles) {\n        // This has() can be false if a callback calls cancelAnimationFrame().\n        if (mapOfAnimationFrameCallbacks.has(handle)) {\n          const callback = mapOfAnimationFrameCallbacks.get(handle);\n          removeAnimationFrameCallback(handle);\n          try {\n            callback(now);\n          } catch (e) {\n            reportException(window, e, window.location.href);\n          }\n        }\n      }\n    }\n\n    function removeAnimationFrameCallback(handle) {\n      if (mapOfAnimationFrameCallbacks.has(handle)) {\n        --numberOfOngoingAnimationFrameCallbacks;\n        if (numberOfOngoingAnimationFrameCallbacks === 0) {\n          clearInterval(animationFrameNodejsInterval);\n        }\n      }\n\n      mapOfAnimationFrameCallbacks.delete(handle);\n    }\n  }\n\n  function stopAllTimers() {\n    for (const nodejsTimer of listOfActiveTimers.values()) {\n      clearTimeout(nodejsTimer);\n    }\n    listOfActiveTimers.clear();\n\n    clearInterval(animationFrameNodejsInterval);\n  }\n\n  function Option(text, value, defaultSelected, selected) {\n    if (text === undefined) {\n      text = \"\";\n    }\n    text = webIDLConversions.DOMString(text);\n\n    if (value !== undefined) {\n      value = webIDLConversions.DOMString(value);\n    }\n\n    defaultSelected = webIDLConversions.boolean(defaultSelected);\n    selected = webIDLConversions.boolean(selected);\n\n    const option = window._document.createElement(\"option\");\n    const impl = idlUtils.implForWrapper(option);\n\n    if (text !== \"\") {\n      impl.text = text;\n    }\n    if (value !== undefined) {\n      impl.setAttributeNS(null, \"value\", value);\n    }\n    if (defaultSelected) {\n      impl.setAttributeNS(null, \"selected\", \"\");\n    }\n    impl._selectedness = selected;\n\n    return option;\n  }\n  Object.defineProperty(Option, \"prototype\", {\n    value: window.HTMLOptionElement.prototype,\n    configurable: false,\n    enumerable: false,\n    writable: false\n  });\n  Object.defineProperty(window, \"Option\", {\n    value: Option,\n    configurable: true,\n    enumerable: false,\n    writable: true\n  });\n\n  function Image(...args) {\n    const img = window._document.createElement(\"img\");\n    const impl = idlUtils.implForWrapper(img);\n\n    if (args.length > 0) {\n      impl.setAttributeNS(null, \"width\", String(args[0]));\n    }\n    if (args.length > 1) {\n      impl.setAttributeNS(null, \"height\", String(args[1]));\n    }\n\n    return img;\n  }\n  Object.defineProperty(Image, \"prototype\", {\n    value: window.HTMLImageElement.prototype,\n    configurable: false,\n    enumerable: false,\n    writable: false\n  });\n  Object.defineProperty(window, \"Image\", {\n    value: Image,\n    configurable: true,\n    enumerable: false,\n    writable: true\n  });\n\n  function Audio(src) {\n    const audio = window._document.createElement(\"audio\");\n    const impl = idlUtils.implForWrapper(audio);\n    impl.setAttributeNS(null, \"preload\", \"auto\");\n\n    if (src !== undefined) {\n      impl.setAttributeNS(null, \"src\", String(src));\n    }\n\n    return audio;\n  }\n  Object.defineProperty(Audio, \"prototype\", {\n    value: window.HTMLAudioElement.prototype,\n    configurable: false,\n    enumerable: false,\n    writable: false\n  });\n  Object.defineProperty(window, \"Audio\", {\n    value: Audio,\n    configurable: true,\n    enumerable: false,\n    writable: true\n  });\n\n  window.postMessage = function (message, targetOrigin) {\n    if (arguments.length < 2) {\n      throw new TypeError(\"'postMessage' requires 2 arguments: 'message' and 'targetOrigin'\");\n    }\n\n    targetOrigin = webIDLConversions.DOMString(targetOrigin);\n\n    if (targetOrigin === \"/\") {\n      // TODO: targetOrigin === \"/\" requires getting incumbent settings object.\n      // Maybe could be done with Error stack traces??\n      return;\n    } else if (targetOrigin !== \"*\") {\n      const parsedURL = whatwgURL.parseURL(targetOrigin);\n      if (parsedURL === null) {\n        throw DOMException.create(window, [\n          \"Failed to execute 'postMessage' on 'Window': \" +\n          \"Invalid target origin '\" + targetOrigin + \"' in a call to 'postMessage'.\",\n          \"SyntaxError\"\n        ]);\n      }\n      targetOrigin = whatwgURL.serializeURLOrigin(parsedURL);\n\n      if (targetOrigin !== idlUtils.implForWrapper(window._document)._origin) {\n        // Not implemented.\n        return;\n      }\n    }\n\n    // TODO: event.source - requires reference to incumbent window\n    // TODO: event.origin - requires reference to incumbent window\n    // TODO: event.ports\n    // TODO: event.data - requires structured cloning\n    setTimeout(() => {\n      fireAnEvent(\"message\", window, MessageEvent, { data: message });\n    }, 0);\n  };\n\n  window.atob = function (str) {\n    try {\n      return atob(str);\n    } catch {\n      // Convert Node.js DOMException to one from our global.\n      throw DOMException.create(window, [\n        \"The string to be decoded contains invalid characters.\",\n        \"InvalidCharacterError\"\n      ]);\n    }\n  };\n\n  window.btoa = function (str) {\n    try {\n      return btoa(str);\n    } catch {\n      // Convert Node.js DOMException to one from our global.\n      throw DOMException.create(window, [\n        \"The string to be encoded contains invalid characters.\",\n        \"InvalidCharacterError\"\n      ]);\n    }\n  };\n\n  window.stop = function () {\n    const manager = idlUtils.implForWrapper(window._document)._requestManager;\n    if (manager) {\n      manager.close();\n    }\n  };\n\n  window.close = function () {\n    // Recursively close child frame windows, then ourselves (depth-first).\n    for (let i = 0; i < window.length; ++i) {\n      window[i].close?.();\n    }\n\n    // Clear out all listeners. Any in-flight or upcoming events should not get delivered.\n    idlUtils.implForWrapper(window)._eventListeners = Object.create(null);\n\n    if (window._document) {\n      if (window._document.body) {\n        window._document.body.innerHTML = \"\";\n      }\n\n      if (window._document.close) {\n        // It's especially important to clear out the listeners here because document.close() causes a \"load\" event to\n        // fire.\n        idlUtils.implForWrapper(window._document)._eventListeners = Object.create(null);\n        window._document.close();\n      }\n      const doc = idlUtils.implForWrapper(window._document);\n      if (doc._requestManager) {\n        doc._requestManager.close();\n      }\n      delete window._document;\n    }\n\n    stopAllTimers();\n    WebSocketImpl.cleanUpWindow(window);\n  };\n\n  window.getComputedStyle = function (elt, pseudoElt = undefined) {\n    const elementImpl = Element.convert(window, elt);\n\n    if (pseudoElt !== undefined && pseudoElt !== null) {\n      pseudoElt = webIDLConversions.DOMString(pseudoElt);\n\n      if (pseudoElt !== \"\") {\n        // TODO: Parse pseudoElt\n\n        if (SHADOW_DOM_PSEUDO_REGEXP.test(pseudoElt)) {\n          throw new TypeError(\"Tried to get the computed style of a Shadow DOM pseudo-element.\");\n        }\n\n        notImplementedMethod(window, \"Window\", \"getComputedStyle\", \"with pseudo-elements\");\n      }\n    }\n\n    return getComputedStyleDeclaration(elementImpl);\n  };\n\n  window.getSelection = function () {\n    return window._document.getSelection();\n  };\n\n  // The captureEvents() and releaseEvents() methods must do nothing\n  window.captureEvents = function () {};\n\n  window.releaseEvents = function () {};\n\n  // ### PUBLIC DATA PROPERTIES (TODO: should be getters)\n\n  function wrapConsoleMethod(method) {\n    return (...args) => {\n      window._virtualConsole.emit(method, ...args);\n    };\n  }\n\n  window.console = {\n    assert: wrapConsoleMethod(\"assert\"),\n    clear: wrapConsoleMethod(\"clear\"),\n    count: wrapConsoleMethod(\"count\"),\n    countReset: wrapConsoleMethod(\"countReset\"),\n    debug: wrapConsoleMethod(\"debug\"),\n    dir: wrapConsoleMethod(\"dir\"),\n    dirxml: wrapConsoleMethod(\"dirxml\"),\n    error: wrapConsoleMethod(\"error\"),\n    group: wrapConsoleMethod(\"group\"),\n    groupCollapsed: wrapConsoleMethod(\"groupCollapsed\"),\n    groupEnd: wrapConsoleMethod(\"groupEnd\"),\n    info: wrapConsoleMethod(\"info\"),\n    log: wrapConsoleMethod(\"log\"),\n    table: wrapConsoleMethod(\"table\"),\n    time: wrapConsoleMethod(\"time\"),\n    timeLog: wrapConsoleMethod(\"timeLog\"),\n    timeEnd: wrapConsoleMethod(\"timeEnd\"),\n    trace: wrapConsoleMethod(\"trace\"),\n    warn: wrapConsoleMethod(\"warn\")\n  };\n\n  function notImplementedMethodWrapper(name) {\n    return function () {\n      notImplementedMethod(window, \"Window\", name);\n    };\n  }\n\n  define(window, {\n    alert: notImplementedMethodWrapper(\"alert\"),\n    blur: notImplementedMethodWrapper(\"blur\"),\n    confirm: notImplementedMethodWrapper(\"confirm\"),\n    focus: notImplementedMethodWrapper(\"focus\"),\n    moveBy: notImplementedMethodWrapper(\"moveBy\"),\n    moveTo: notImplementedMethodWrapper(\"moveTo\"),\n    open: notImplementedMethodWrapper(\"open\"),\n    print: notImplementedMethodWrapper(\"print\"),\n    prompt: notImplementedMethodWrapper(\"prompt\"),\n    resizeBy: notImplementedMethodWrapper(\"resizeBy\"),\n    resizeTo: notImplementedMethodWrapper(\"resizeTo\"),\n    scroll: notImplementedMethodWrapper(\"scroll\"),\n    scrollBy: notImplementedMethodWrapper(\"scrollBy\"),\n    scrollTo: notImplementedMethodWrapper(\"scrollTo\")\n  });\n}\n\nfunction makeReplaceablePropertyDescriptor(property, window) {\n  const desc = {\n    set(value) {\n      Object.defineProperty(window, property, {\n        configurable: true,\n        enumerable: true,\n        writable: true,\n        value\n      });\n    }\n  };\n\n  Object.defineProperty(desc.set, \"name\", { value: `set ${property}` });\n  return desc;\n}\n","\"use strict\";\n\n// Adapted from undici's lib/interceptor/decompress.js\n// https://github.com/nodejs/undici/blob/main/lib/interceptor/decompress.js\n// Changes:\n// - Removed zstd support (requires runtimeFeatures check)\n// - Removed experimental warning\n// - Use undici's exported DecoratorHandler\n\nconst { createInflate, createGunzip, createBrotliDecompress } = require(\"zlib\");\nconst { pipeline } = require(\"stream\");\nconst { DecoratorHandler } = require(\"undici\");\n\nconst supportedEncodings = {\n  \"gzip\": createGunzip,\n  \"x-gzip\": createGunzip,\n  \"br\": createBrotliDecompress,\n  \"deflate\": createInflate,\n  \"compress\": createInflate,\n  \"x-compress\": createInflate\n};\n\nconst defaultSkipStatusCodes = [204, 304];\n\nclass DecompressHandler extends DecoratorHandler {\n  #decompressors = [];\n  #skipStatusCodes;\n  #skipErrorResponses;\n\n  constructor(handler, { skipStatusCodes = defaultSkipStatusCodes, skipErrorResponses = true } = {}) {\n    super(handler);\n    this.#skipStatusCodes = skipStatusCodes;\n    this.#skipErrorResponses = skipErrorResponses;\n  }\n\n  #shouldSkipDecompression(contentEncoding, statusCode) {\n    if (!contentEncoding || statusCode < 200) {\n      return true;\n    }\n    if (this.#skipStatusCodes.includes(statusCode)) {\n      return true;\n    }\n    if (this.#skipErrorResponses && statusCode >= 400) {\n      return true;\n    }\n    return false;\n  }\n\n  #createDecompressionChain(encodings) {\n    const parts = encodings.split(\",\");\n\n    const maxContentEncodings = 5;\n    if (parts.length > maxContentEncodings) {\n      throw new Error(`too many content-encodings in response: ${parts.length}, max is ${maxContentEncodings}`);\n    }\n\n    const decompressors = [];\n\n    for (let i = parts.length - 1; i >= 0; i--) {\n      const encoding = parts[i].trim();\n      if (!encoding) {\n        continue;\n      }\n\n      if (!supportedEncodings[encoding]) {\n        decompressors.length = 0;\n        return decompressors;\n      }\n\n      decompressors.push(supportedEncodings[encoding]());\n    }\n\n    return decompressors;\n  }\n\n  #setupDecompressorEvents(decompressor, controller) {\n    decompressor.on(\"readable\", () => {\n      let chunk;\n      while ((chunk = decompressor.read()) !== null) {\n        const result = super.onResponseData(controller, chunk);\n        if (result === false) {\n          break;\n        }\n      }\n    });\n\n    decompressor.on(\"error\", error => {\n      super.onResponseError(controller, error);\n    });\n  }\n\n  #setupSingleDecompressor(controller) {\n    const decompressor = this.#decompressors[0];\n    this.#setupDecompressorEvents(decompressor, controller);\n\n    decompressor.on(\"end\", () => {\n      super.onResponseEnd(controller, {});\n    });\n  }\n\n  #setupMultipleDecompressors(controller) {\n    const lastDecompressor = this.#decompressors[this.#decompressors.length - 1];\n    this.#setupDecompressorEvents(lastDecompressor, controller);\n\n    pipeline(this.#decompressors, err => {\n      if (err) {\n        super.onResponseError(controller, err);\n        return;\n      }\n      super.onResponseEnd(controller, {});\n    });\n  }\n\n  #cleanupDecompressors() {\n    this.#decompressors.length = 0;\n  }\n\n  onResponseStart(controller, statusCode, headers, statusMessage) {\n    const contentEncoding = headers[\"content-encoding\"];\n\n    if (this.#shouldSkipDecompression(contentEncoding, statusCode)) {\n      return super.onResponseStart(controller, statusCode, headers, statusMessage);\n    }\n\n    const decompressors = this.#createDecompressionChain(contentEncoding.toLowerCase());\n\n    if (decompressors.length === 0) {\n      this.#cleanupDecompressors();\n      return super.onResponseStart(controller, statusCode, headers, statusMessage);\n    }\n\n    this.#decompressors = decompressors;\n\n    // Keep content-encoding and content-length headers as-is\n    // XHR spec requires these to reflect the wire format, not the decoded body\n    const newHeaders = { ...headers };\n\n    if (this.#decompressors.length === 1) {\n      this.#setupSingleDecompressor(controller);\n    } else {\n      this.#setupMultipleDecompressors(controller);\n    }\n\n    return super.onResponseStart(controller, statusCode, newHeaders, statusMessage);\n  }\n\n  onResponseData(controller, chunk) {\n    if (this.#decompressors.length > 0) {\n      this.#decompressors[0].write(chunk);\n      return;\n    }\n    super.onResponseData(controller, chunk);\n  }\n\n  onResponseEnd(controller, trailers) {\n    if (this.#decompressors.length > 0) {\n      this.#decompressors[0].end();\n      this.#cleanupDecompressors();\n      return;\n    }\n    super.onResponseEnd(controller, trailers);\n  }\n\n  onResponseError(controller, err) {\n    if (this.#decompressors.length > 0) {\n      for (const decompressor of this.#decompressors) {\n        decompressor.destroy(err);\n      }\n      this.#cleanupDecompressors();\n    }\n    super.onResponseError(controller, err);\n  }\n}\n\nfunction createDecompressInterceptor(options = {}) {\n  return dispatch => {\n    return (opts, handler) => {\n      const decompressHandler = new DecompressHandler(handler, options);\n      return dispatch(opts, decompressHandler);\n    };\n  };\n}\n\nmodule.exports = createDecompressInterceptor;\n","\"use strict\";\nconst { Readable } = require(\"stream\");\nconst { sendStreamResponse } = require(\"./stream-handler\");\n\n/**\n * Creates a user-friendly `undici` interceptor for jsdom.\n *\n * This helper allows users to intercept requests using a callback that receives a `Request` object and can return a\n * promise for a `Response` to provide a synthetic response, or a promise for `undefined` to pass through.\n *\n * @param {function} fn - Async callback function that receives (request, context) and can return a Response\n * @returns {function} An undici interceptor\n *\n * @example\n * const dom = new JSDOM(html, {\n *   interceptors: [\n *     requestInterceptor(async (request, { element }) => {\n *       console.log(`${element?.localName || 'XHR'} requested ${request.url}`);\n *       if (request.url.endsWith('/test.js')) {\n *         return new Response('window.mocked = true;', {\n *           headers: { 'Content-Type': 'application/javascript' }\n *         });\n *       }\n *       // Return undefined to let the request pass through\n *     })\n *   ]\n * });\n *\n * ## Why this doesn't use undici's DecoratorHandler pattern\n *\n * The standard undici interceptor pattern (see e.g. undici/lib/interceptor/dump.js) uses DecoratorHandler\n * to wrap handler callbacks. That pattern calls `dispatch()` synchronously, then observes/modifies the\n * request and response as they flow through the handler callbacks.\n *\n * This interceptor needs to support async user functions that can BLOCK the request and potentially\n * REPLACE it with a synthetic response. This requires:\n *\n * 1. Waiting for the async user function BEFORE deciding whether to dispatch\n * 2. For synthetic responses, NEVER calling dispatch() at all\n *\n * Since synthetic responses bypass the normal undici dispatch flow entirely, there's no underlying\n * dispatcher (Agent/Pool) to create a real controller for us. We provide our own controller object\n * that delegates to a Node.js Readable stream for pause/resume/abort support, following the pattern\n * from undici/lib/interceptor/cache.js.\n */\nmodule.exports = function requestInterceptor(fn) {\n  return dispatch => (options, handler) => {\n    const { element = null, url } = options.opaque || {};\n    const abortController = new AbortController();\n\n    // Create undici controller and wrapped handler using the signal handler helper.\n    // The undici controller reflects abortController.signal's state and forwards to inner undici controller.\n    const { undiciController, wrappedHandler } = createSignalHandler(handler, abortController);\n\n    // Call onRequestStart immediately to wire into the abort chain.\n    handler.onRequestStart?.(undiciController, {});\n\n    // Build Request object with our signal\n    const requestInit = {\n      method: options.method || \"GET\",\n      headers: options.headers,\n      signal: abortController.signal\n    };\n    if (options.body !== undefined && options.body !== null) {\n      requestInit.body = options.body;\n      requestInit.duplex = \"half\";\n    }\n    if (options.referrer) {\n      requestInit.referrer = options.referrer;\n    }\n    const request = new Request(url, requestInit);\n\n    new Promise(resolve => {\n      resolve(fn(request, { element }));\n    })\n      .then(response => {\n        if (response instanceof Response) {\n          // Send synthetic response without ever starting real request\n          // response.body can be null for responses with no body\n          const stream = response.body ? Readable.fromWeb(response.body) : Readable.from([]);\n          sendStreamResponse(wrappedHandler, stream, {\n            status: response.status,\n            statusText: response.statusText,\n            headers: headersToUndici(response.headers)\n          });\n        } else if (response !== undefined) {\n          throw new TypeError(\"requestInterceptor callback must return undefined or a Response\");\n        } else if (!abortController.signal.aborted) {\n          // Pass through to real request\n          dispatch(options, wrappedHandler);\n        }\n      })\n      .catch(error => {\n        handler.onResponseError?.(undiciController, error);\n      });\n\n    // Return true to indicate request is being handled\n    return true;\n  };\n};\n\n/**\n * Creates an undici controller and wrapped handler that bridge an AbortController to undici's dispatch protocol.\n *\n * The undici controller reflects the AbortController's signal state and captures an inner undici controller\n * (from pass-through dispatch or synthetic stream) for forwarding pause/resume/abort.\n */\nfunction createSignalHandler(handler, abortController) {\n  let innerUndiciController = null;\n\n  const undiciController = {\n    abort(reason) {\n      abortController.abort(reason);\n      innerUndiciController?.abort(reason);\n    },\n    pause() {\n      innerUndiciController?.pause();\n    },\n    resume() {\n      innerUndiciController?.resume();\n    },\n    get paused() {\n      return innerUndiciController?.paused ?? false;\n    },\n    get aborted() {\n      return abortController.signal.aborted;\n    },\n    get reason() {\n      return abortController.signal.reason;\n    }\n  };\n\n  const wrappedHandler = {\n    onRequestStart(controller) {\n      innerUndiciController = controller;\n    },\n    onRequestUpgrade(...args) {\n      handler.onRequestUpgrade?.(...args);\n    },\n    onResponseStart(...args) {\n      handler.onResponseStart?.(...args);\n    },\n    onResponseData(...args) {\n      handler.onResponseData?.(...args);\n    },\n    onResponseEnd(...args) {\n      handler.onResponseEnd?.(...args);\n    },\n    onResponseError(...args) {\n      handler.onResponseError?.(...args);\n    }\n  };\n\n  return { undiciController, wrappedHandler };\n}\n\n/**\n * Converts a Headers object to the format undici expects.\n * Handles multiple Set-Cookie headers via getSetCookie().\n */\nfunction headersToUndici(headers) {\n  const result = {};\n  for (const [key, value] of headers) {\n    result[key] = value;\n  }\n  const cookies = headers.getSetCookie();\n  if (cookies.length > 0) {\n    result[\"set-cookie\"] = cookies;\n  }\n  return result;\n}\n","\"use strict\";\nconst path = require(\"path\");\nconst { pathToFileURL } = require(\"url\");\nconst fs = require(\"fs\").promises;\nconst vm = require(\"vm\");\nconst toughCookie = require(\"tough-cookie\");\nconst sniffHTMLEncoding = require(\"html-encoding-sniffer\");\nconst whatwgURL = require(\"whatwg-url\");\nconst { legacyHookDecode } = require(\"@exodus/bytes/encoding.js\");\nconst { URL } = require(\"whatwg-url\");\nconst { MIMEType } = require(\"whatwg-mimetype\");\nconst { getGlobalDispatcher } = require(\"undici\");\nconst idlUtils = require(\"./generated/idl/utils.js\");\nconst VirtualConsole = require(\"./jsdom/virtual-console.js\");\nconst { createWindow } = require(\"./jsdom/browser/Window.js\");\nconst { parseIntoDocument } = require(\"./jsdom/browser/parser\");\nconst { fragmentSerialization } = require(\"./jsdom/living/domparsing/serialization.js\");\nconst createDecompressInterceptor = require(\"./jsdom/browser/resources/decompress-interceptor.js\");\nconst {\n  JSDOMDispatcher, DEFAULT_USER_AGENT, fetchCollected\n} = require(\"./jsdom/browser/resources/jsdom-dispatcher.js\");\nconst requestInterceptor = require(\"./jsdom/browser/resources/request-interceptor.js\");\n\nclass CookieJar extends toughCookie.CookieJar {\n  constructor(store, options) {\n    // jsdom cookie jars must be loose by default\n    super(store, { looseMode: true, ...options });\n  }\n}\n\nconst window = Symbol(\"window\");\nlet sharedFragmentDocument = null;\n\nclass JSDOM {\n  constructor(input = \"\", options = {}) {\n    const mimeType = new MIMEType(options.contentType === undefined ? \"text/html\" : options.contentType);\n    const { html, encoding } = normalizeHTML(input, mimeType);\n\n    options = transformOptions(options, encoding, mimeType);\n\n    this[window] = createWindow(options.windowOptions);\n\n    const documentImpl = idlUtils.implForWrapper(this[window]._document);\n\n    options.beforeParse(this[window]._globalProxy);\n\n    parseIntoDocument(html, documentImpl);\n\n    documentImpl.close();\n  }\n\n  get window() {\n    // It's important to grab the global proxy, instead of just the result of `createWindow(...)`, since otherwise\n    // things like `window.eval` don't exist.\n    return this[window]._globalProxy;\n  }\n\n  get virtualConsole() {\n    return this[window]._virtualConsole;\n  }\n\n  get cookieJar() {\n    // TODO NEWAPI move _cookieJar to window probably\n    return idlUtils.implForWrapper(this[window]._document)._cookieJar;\n  }\n\n  serialize() {\n    return fragmentSerialization(idlUtils.implForWrapper(this[window]._document), { requireWellFormed: false });\n  }\n\n  nodeLocation(node) {\n    if (!idlUtils.implForWrapper(this[window]._document)._parseOptions.sourceCodeLocationInfo) {\n      throw new Error(\"Location information was not saved for this jsdom. Use includeNodeLocations during creation.\");\n    }\n\n    return idlUtils.implForWrapper(node).sourceCodeLocation;\n  }\n\n  getInternalVMContext() {\n    if (!vm.isContext(this[window])) {\n      throw new TypeError(\"This jsdom was not configured to allow script running. \" +\n        \"Use the runScripts option during creation.\");\n    }\n\n    return this[window];\n  }\n\n  reconfigure(settings) {\n    if (\"windowTop\" in settings) {\n      this[window]._top = settings.windowTop;\n    }\n\n    if (\"url\" in settings) {\n      const document = idlUtils.implForWrapper(this[window]._document);\n\n      const url = whatwgURL.parseURL(settings.url);\n      if (url === null) {\n        throw new TypeError(`Could not parse \"${settings.url}\" as a URL`);\n      }\n\n      document._URL = url;\n      document._origin = whatwgURL.serializeURLOrigin(document._URL);\n      this[window]._sessionHistory.currentEntry.url = url;\n      document._clearBaseURLCache();\n    }\n  }\n\n  static fragment(string = \"\") {\n    if (!sharedFragmentDocument) {\n      sharedFragmentDocument = (new JSDOM()).window.document;\n    }\n\n    const template = sharedFragmentDocument.createElement(\"template\");\n    template.innerHTML = string;\n    return template.content;\n  }\n\n  static async fromURL(url, options = {}) {\n    options = normalizeFromURLOptions(options);\n\n    // Build the dispatcher for the initial request\n    // For the initial fetch, we default to \"usable\" instead of no resource loading, since fromURL() implicitly requests\n    // fetching the initial resource. This does not impact further resource fetching, which uses options.resources.\n    const resourcesForInitialFetch = options.resources !== undefined ? options.resources : \"usable\";\n    const { effectiveDispatcher } = extractResourcesOptions(resourcesForInitialFetch, options.cookieJar);\n\n    const headers = { Accept: \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\" };\n    if (options.referrer) {\n      headers.Referer = options.referrer;\n    }\n\n    const response = await fetchCollected(effectiveDispatcher, {\n      url,\n      headers\n    });\n\n    if (!response.ok) {\n      throw new Error(`Resource was not loaded. Status: ${response.status}`);\n    }\n\n    options = Object.assign(options, {\n      url: response.url,\n      contentType: response.headers[\"content-type\"] || undefined,\n      referrer: options.referrer,\n      resources: options.resources\n    });\n\n    return new JSDOM(response.body, options);\n  }\n\n  static async fromFile(filename, options = {}) {\n    options = normalizeFromFileOptions(filename, options);\n    const nodeBuffer = await fs.readFile(filename);\n\n    return new JSDOM(nodeBuffer, options);\n  }\n}\n\nfunction normalizeFromURLOptions(options) {\n  // Checks on options that are invalid for `fromURL`\n  if (options.url !== undefined) {\n    throw new TypeError(\"Cannot supply a url option when using fromURL\");\n  }\n  if (options.contentType !== undefined) {\n    throw new TypeError(\"Cannot supply a contentType option when using fromURL\");\n  }\n\n  // Normalization of options which must be done before the rest of the fromURL code can use them, because they are\n  // given to request()\n  const normalized = { ...options };\n\n  if (options.referrer !== undefined) {\n    normalized.referrer = (new URL(options.referrer)).href;\n  }\n\n  if (options.cookieJar === undefined) {\n    normalized.cookieJar = new CookieJar();\n  }\n\n  return normalized;\n\n  // All other options don't need to be processed yet, and can be taken care of in the normal course of things when\n  // `fromURL` calls `new JSDOM(html, options)`.\n}\n\nfunction extractResourcesOptions(resources, cookieJar) {\n  // loadSubresources controls whether PerDocumentResourceLoader fetches scripts, stylesheets, etc.\n  // XHR always works regardless of this flag.\n  let userAgent, baseDispatcher, userInterceptors, loadSubresources;\n\n  if (resources === undefined) {\n    // resources: undefined means no automatic subresource fetching, but XHR still works\n    userAgent = DEFAULT_USER_AGENT;\n    baseDispatcher = getGlobalDispatcher();\n    userInterceptors = [];\n    loadSubresources = false;\n  } else if (resources === \"usable\") {\n    // resources: \"usable\" means use all defaults\n    userAgent = DEFAULT_USER_AGENT;\n    baseDispatcher = getGlobalDispatcher();\n    userInterceptors = [];\n    loadSubresources = true;\n  } else if (typeof resources === \"object\" && resources !== null) {\n    // resources: { userAgent?, dispatcher?, interceptors? }\n    userAgent = resources.userAgent !== undefined ? resources.userAgent : DEFAULT_USER_AGENT;\n    baseDispatcher = resources.dispatcher !== undefined ? resources.dispatcher : getGlobalDispatcher();\n    userInterceptors = resources.interceptors !== undefined ? resources.interceptors : [];\n    loadSubresources = true;\n  } else {\n    throw new TypeError(`resources must be undefined, \"usable\", or an object`);\n  }\n\n  // User interceptors come first (outermost), then decompress interceptor\n  const allUserInterceptors = [\n    ...userInterceptors,\n    createDecompressInterceptor()\n  ];\n\n  return {\n    userAgent,\n    effectiveDispatcher: new JSDOMDispatcher({\n      baseDispatcher,\n      cookieJar,\n      userAgent,\n      userInterceptors: allUserInterceptors\n    }),\n    loadSubresources\n  };\n}\n\nfunction normalizeFromFileOptions(filename, options) {\n  const normalized = { ...options };\n\n  if (normalized.contentType === undefined) {\n    const extname = path.extname(filename);\n    if (extname === \".xhtml\" || extname === \".xht\" || extname === \".xml\") {\n      normalized.contentType = \"application/xhtml+xml\";\n    }\n  }\n\n  if (normalized.url === undefined) {\n    normalized.url = pathToFileURL(path.resolve(filename)).href;\n  }\n\n  return normalized;\n}\n\nfunction transformOptions(options, encoding, mimeType) {\n  const transformed = {\n    windowOptions: {\n      // Defaults\n      url: \"about:blank\",\n      referrer: \"\",\n      contentType: \"text/html\",\n      parsingMode: \"html\",\n      parseOptions: {\n        sourceCodeLocationInfo: false,\n        scriptingEnabled: false\n      },\n      runScripts: undefined,\n      encoding,\n      pretendToBeVisual: false,\n      storageQuota: 5000000,\n\n      // Defaults filled in later\n      dispatcher: undefined,\n      loadSubresources: undefined,\n      userAgent: undefined,\n      virtualConsole: undefined,\n      cookieJar: undefined\n    },\n\n    // Defaults\n    beforeParse() { }\n  };\n\n  // options.contentType was parsed into mimeType by the caller.\n  if (!mimeType.isHTML() && !mimeType.isXML()) {\n    throw new RangeError(`The given content type of \"${options.contentType}\" was not a HTML or XML content type`);\n  }\n\n  transformed.windowOptions.contentType = mimeType.essence;\n  transformed.windowOptions.parsingMode = mimeType.isHTML() ? \"html\" : \"xml\";\n\n  if (options.url !== undefined) {\n    transformed.windowOptions.url = (new URL(options.url)).href;\n  }\n\n  if (options.referrer !== undefined) {\n    transformed.windowOptions.referrer = (new URL(options.referrer)).href;\n  }\n\n  if (options.includeNodeLocations) {\n    if (transformed.windowOptions.parsingMode === \"xml\") {\n      throw new TypeError(\"Cannot set includeNodeLocations to true with an XML content type\");\n    }\n\n    transformed.windowOptions.parseOptions = { sourceCodeLocationInfo: true };\n  }\n\n  transformed.windowOptions.cookieJar = options.cookieJar === undefined ?\n                                       new CookieJar() :\n                                       options.cookieJar;\n\n  transformed.windowOptions.virtualConsole = options.virtualConsole === undefined ?\n                                            (new VirtualConsole()).forwardTo(console) :\n                                            options.virtualConsole;\n\n  if (!(transformed.windowOptions.virtualConsole instanceof VirtualConsole)) {\n    throw new TypeError(\"virtualConsole must be an instance of VirtualConsole\");\n  }\n\n  const { userAgent, effectiveDispatcher, loadSubresources } =\n    extractResourcesOptions(options.resources, transformed.windowOptions.cookieJar);\n  transformed.windowOptions.userAgent = userAgent;\n  transformed.windowOptions.dispatcher = effectiveDispatcher;\n  transformed.windowOptions.loadSubresources = loadSubresources;\n\n  if (options.runScripts !== undefined) {\n    transformed.windowOptions.runScripts = String(options.runScripts);\n    if (transformed.windowOptions.runScripts === \"dangerously\") {\n      transformed.windowOptions.parseOptions.scriptingEnabled = true;\n    } else if (transformed.windowOptions.runScripts !== \"outside-only\") {\n      throw new RangeError(`runScripts must be undefined, \"dangerously\", or \"outside-only\"`);\n    }\n  }\n\n  if (options.beforeParse !== undefined) {\n    transformed.beforeParse = options.beforeParse;\n  }\n\n  if (options.pretendToBeVisual !== undefined) {\n    transformed.windowOptions.pretendToBeVisual = Boolean(options.pretendToBeVisual);\n  }\n\n  if (options.storageQuota !== undefined) {\n    transformed.windowOptions.storageQuota = Number(options.storageQuota);\n  }\n\n  return transformed;\n}\n\nfunction normalizeHTML(html, mimeType) {\n  let encoding = \"UTF-8\";\n\n  if (html instanceof Uint8Array) {\n    // leave as-is\n  } else if (ArrayBuffer.isView(html)) {\n    html = new Uint8Array(html.buffer, html.byteOffset, html.byteLength);\n  } else if (html instanceof ArrayBuffer) {\n    html = new Uint8Array(html);\n  }\n\n  if (html instanceof Uint8Array) {\n    encoding = sniffHTMLEncoding(html, {\n      xml: mimeType.isXML(),\n      transportLayerEncodingLabel: mimeType.parameters.get(\"charset\")\n    });\n    html = legacyHookDecode(html, encoding);\n  } else {\n    html = String(html);\n  }\n\n  return { html, encoding };\n}\n\nexports.JSDOM = JSDOM;\n\nexports.VirtualConsole = VirtualConsole;\nexports.CookieJar = CookieJar;\nexports.requestInterceptor = requestInterceptor;\n\nexports.toughCookie = toughCookie;\n","// src/index.ts\nimport DOMPurifyFactory from \"dompurify\";\nimport { JSDOM } from \"jsdom\";\nvar window = new JSDOM(\"<!DOCTYPE html>\").window;\nvar purify = DOMPurifyFactory(window);\nvar DOMPurify = new Proxy({}, {\n  get(_, prop) {\n    const value = purify[prop];\n    return typeof value === \"function\" ? value.bind(purify) : value;\n  }\n});\nvar src_default = DOMPurify;\nvar sanitize = ((dirty, config) => purify.sanitize(dirty, config));\nvar isSupported = DOMPurify.isSupported;\nvar addHook = ((entryPoint, hookFunction) => purify.addHook(entryPoint, hookFunction));\nvar removeHook = ((entryPoint) => purify.removeHook(entryPoint));\nvar removeHooks = ((entryPoint) => purify.removeHooks(entryPoint));\nvar removeAllHooks = (() => purify.removeAllHooks());\nvar setConfig = ((config) => purify.setConfig(config));\nvar clearConfig = (() => purify.clearConfig());\nvar isValidAttribute = ((tag, attr, value) => purify.isValidAttribute(tag, attr, value));\nvar version = DOMPurify.version;\nvar removed = new Proxy([], {\n  get(_, prop) {\n    return Reflect.get(purify.removed, prop);\n  }\n});\nfunction clearWindow() {\n  window.close();\n  window = new JSDOM(\"<!DOCTYPE html>\").window;\n  purify = DOMPurifyFactory(window);\n}\nexport {\n  addHook,\n  clearConfig,\n  clearWindow,\n  src_default as default,\n  isSupported,\n  isValidAttribute,\n  removeAllHooks,\n  removeHook,\n  removeHooks,\n  removed,\n  sanitize,\n  setConfig,\n  version\n};\n","import DOMPurify from \"isomorphic-dompurify\";\n\nconst BASIC_NAMED_HTML_ENTITIES: Record<string, string> = {\n  amp: \"&\",\n  apos: \"'\",\n  gt: \">\",\n  lt: \"<\",\n  nbsp: \"\\u00A0\",\n  quot: '\"',\n};\n\nconst decodeHtmlEntity = (entity: string): string => {\n  const normalizedEntity = entity.toLowerCase();\n\n  if (normalizedEntity.startsWith(\"&#x\")) {\n    const codePoint = Number.parseInt(normalizedEntity.slice(3, -1), 16);\n\n    try {\n      return Number.isNaN(codePoint) ? entity : String.fromCodePoint(codePoint);\n    } catch {\n      return entity;\n    }\n  }\n\n  if (normalizedEntity.startsWith(\"&#\")) {\n    const codePoint = Number.parseInt(normalizedEntity.slice(2, -1), 10);\n\n    try {\n      return Number.isNaN(codePoint) ? entity : String.fromCodePoint(codePoint);\n    } catch {\n      return entity;\n    }\n  }\n\n  const namedEntity = normalizedEntity.slice(1, -1);\n  return BASIC_NAMED_HTML_ENTITIES[namedEntity] ?? entity;\n};\n\nconst decodeBasicHtmlEntities = (str: string): string =>\n  str.replace(/&(?:#\\d+|#x[\\da-f]+|amp|lt|gt|quot|apos|nbsp);/gi, (entity) =>\n    decodeHtmlEntity(entity),\n  );\n\nexport const stripTagsForSsr = (str: string): string => {\n  const textWithEntities = DOMPurify.sanitize(`<span>${str}</span>`, {\n    ALLOWED_ATTR: [],\n    ALLOWED_TAGS: [],\n    KEEP_CONTENT: true,\n  });\n  return decodeBasicHtmlEntities(textWithEntities);\n};\n\nexport const stripTags = (str: string) => {\n  if (!str) return \"\";\n\n  return stripTagsForSsr(str);\n};\n","import type { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\nexport interface SocialShareParams {\n  url: string;\n  title?: string;\n  description?: string;\n  hashtags?: string[];\n}\n\nexport function getFacebookShareUrl({\n  url,\n  title,\n  description,\n}: SocialShareParams): string {\n  const params = new URLSearchParams({\n    u: url,\n    ...(title && { quote: title }),\n    ...(description && { description }),\n  });\n\n  return `https://www.facebook.com/sharer/sharer.php?${params.toString()}`;\n}\n\nexport function getXShareUrl({\n  url,\n  title,\n  hashtags,\n}: SocialShareParams): string {\n  const params = new URLSearchParams({\n    url,\n    ...(title && { text: title }),\n    ...(hashtags && hashtags.length > 0 && { hashtags: hashtags.join(\",\") }),\n  });\n\n  return `https://twitter.com/intent/tweet?${params.toString()}`;\n}\n\nexport function getLinkedInShareUrl({\n  url,\n  title,\n  description,\n}: SocialShareParams): string {\n  const params = new URLSearchParams({\n    url,\n    ...(title && { title }),\n    ...(description && { summary: description }),\n  });\n\n  return `https://www.linkedin.com/sharing/share-offsite/?${params.toString()}`;\n}\n\nexport function handleInstagramShare({\n  url,\n}: SocialShareParams): Promise<void> {\n  return navigator.clipboard.writeText(url).then(() => {\n    setTimeout(() => {\n      window.open(\"https://www.instagram.com\", \"_blank\");\n    }, 2000);\n  });\n}\n\nexport function handleTikTokShare({ url }: SocialShareParams): Promise<void> {\n  return navigator.clipboard.writeText(url).then(() => {\n    setTimeout(() => {\n      window.open(\"https://www.tiktok.com\", \"_blank\");\n    }, 2000);\n  });\n}\n\nexport function openSocialShare(shareUrl: string): void {\n  const width = 600;\n  const height = 400;\n  const left = (window.screen.width - width) / 2;\n  const top = (window.screen.height - height) / 2;\n\n  window.open(\n    shareUrl,\n    \"social-share\",\n    `width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes`,\n  );\n}\n\ntype ShareablesT = ReturnType<typeof useShareablesTranslation>[\"t\"];\n\nexport interface SocialShareLabels {\n  share_opening_facebook: string;\n  share_opening_x: string;\n  share_opening_linkedin: string;\n  share_copied_instagram: string;\n  share_copied_tiktok: string;\n  share_failed: (platform: string) => string;\n}\n\nexport function buildSocialShareLabels(t: ShareablesT): SocialShareLabels {\n  return {\n    share_opening_facebook: t(\"share_opening_facebook\"),\n    share_opening_x: t(\"share_opening_x\"),\n    share_opening_linkedin: t(\"share_opening_linkedin\"),\n    share_copied_instagram: t(\"share_copied_instagram\"),\n    share_copied_tiktok: t(\"share_copied_tiktok\"),\n    share_failed: (platform: string) => t(\"share_failed\", { platform }),\n  };\n}\n\nexport async function handleSocialShare(\n  platform: \"facebook\" | \"x\" | \"linkedin\" | \"instagram\" | \"tiktok\",\n  params: SocialShareParams,\n  onSuccess?: (message: string) => void,\n  onError?: (message: string) => void,\n  labels?: SocialShareLabels,\n): Promise<void> {\n  try {\n    switch (platform) {\n      case \"facebook\":\n        openSocialShare(getFacebookShareUrl(params));\n        onSuccess?.(\n          labels?.share_opening_facebook ?? \"Opening Facebook share dialog...\",\n        );\n        break;\n\n      case \"x\":\n        openSocialShare(getXShareUrl(params));\n        onSuccess?.(labels?.share_opening_x ?? \"Opening X share dialog...\");\n        break;\n\n      case \"linkedin\":\n        openSocialShare(getLinkedInShareUrl(params));\n        onSuccess?.(\n          labels?.share_opening_linkedin ?? \"Opening LinkedIn share dialog...\",\n        );\n        break;\n\n      case \"instagram\":\n        await handleInstagramShare(params);\n        onSuccess?.(\n          labels?.share_copied_instagram ??\n            \"Link copied! Opening Instagram and paste link in bio or post!.\",\n        );\n        break;\n\n      case \"tiktok\":\n        await handleTikTokShare(params);\n        onSuccess?.(\n          labels?.share_copied_tiktok ??\n            \"Link copied! Opening TikTok and paste in your link!\",\n        );\n        break;\n\n      default:\n        throw new Error(`Unsupported platform: ${platform}`);\n    }\n  } catch (error) {\n    console.error(\"Social sharing error:\", error);\n    const failedMsg =\n      (labels?.share_failed ? labels.share_failed(platform) : null) ??\n      `Failed to share on ${platform}. Please try again.`;\n    onError?.(failedMsg);\n  }\n}\n","export type OperatingSystem =\n  | \"mac\"\n  | \"windows\"\n  | \"linux\"\n  | \"ios\"\n  | \"android\"\n  | \"unknown\";\n\nexport function getOperatingSystem(): OperatingSystem {\n  if (typeof navigator === \"undefined\") {\n    return \"unknown\";\n  }\n\n  const userAgent = navigator.userAgent.toLowerCase();\n  const platform = navigator.platform?.toLowerCase() || \"\";\n\n  if (/iphone|ipad|ipod/.test(userAgent)) {\n    return \"ios\";\n  }\n\n  if (/android/.test(userAgent)) {\n    return \"android\";\n  }\n\n  if (/mac/.test(platform) || /darwin/.test(userAgent)) {\n    return \"mac\";\n  }\n\n  if (/win/.test(platform) || /windows/.test(userAgent)) {\n    return \"windows\";\n  }\n\n  if (/linux/.test(platform) || /x11/.test(platform)) {\n    return \"linux\";\n  }\n\n  return \"unknown\";\n}\n\nexport function isMobileDevice(): boolean {\n  const os = getOperatingSystem();\n  return os === \"ios\" || os === \"android\";\n}\n\nexport function isDesktopDevice(): boolean {\n  const os = getOperatingSystem();\n  return os === \"mac\" || os === \"windows\" || os === \"linux\";\n}\n","import type { FetchClient } from \"../lib/fetch-client\";\nimport type { products } from \"../custom/products\";\n\n// ============================================================================\n// Products - List & Get\n// ============================================================================\n\nexport async function listProducts(\n  client: FetchClient,\n  params?: products.ListProductsParams,\n): Promise<products.ProductsResponse> {\n  const { sorting, ...rest } = params ?? {};\n  return client.get(\"/company/v1/products\", {\n    ...rest,\n    ...(sorting && { order_by: [sorting.id, sorting.desc ? \"desc\" : \"asc\"] }),\n  });\n}\n\nexport async function getProduct(\n  client: FetchClient,\n  id: string | number,\n  options?: { lang?: string; country_code?: string },\n): Promise<products.ProductResponse> {\n  return client.get(`/company/v1/products/${id}`, {\n    ...(options?.lang && { lang: options.lang }),\n    ...(options?.country_code && { country_code: options.country_code }),\n  });\n}\n\nexport async function listProductsV2(\n  client: FetchClient,\n  params?: products.ListProductsV2Params,\n): Promise<products.ProductsV2Response> {\n  const { sorting, ...rest } = params ?? {};\n  return client.get(\"/v2025-06/products\", {\n    ...rest,\n    ...(sorting && { order_by: [sorting.id, sorting.desc ? \"desc\" : \"asc\"] }),\n  });\n}\n\nexport async function searchProducts(\n  client: FetchClient,\n  searchTerm: string,\n  countryCodes: readonly string[],\n): Promise<products.ProductsResponse> {\n  const input: Record<string, unknown> = {\n    limit: 100,\n  };\n  if (searchTerm) {\n    input.search_query = searchTerm;\n  }\n  if (countryCodes && countryCodes.length > 0) {\n    input.country_code = countryCodes;\n  }\n  return client.get(\"/company/v1/products\", input);\n}\n\n// ============================================================================\n// Products - Create, Delete, Duplicate\n// ============================================================================\n\nexport async function createProduct(\n  client: FetchClient,\n  product: products.CreateProduct,\n): Promise<products.ProductResponse> {\n  return client.post(\"/company/v1/products\", { product });\n}\n\nexport async function updateProduct(\n  client: FetchClient,\n  id: number | string,\n  product: products.UpdateProduct,\n  options?: products.UpdateProductParams,\n): Promise<products.ProductResponse> {\n  return client.patch(`/company/v1/products/${id}`, {\n    id: String(id),\n    product,\n    ...(options?.lang && { lang: options.lang }),\n    ...(options?.dam_asset_codes &&\n      options.dam_asset_codes.length > 0 && {\n        dam_asset_codes: options.dam_asset_codes,\n      }),\n  });\n}\n\nexport async function deleteProduct(\n  client: FetchClient,\n  id: number,\n): Promise<products.DeleteProductResponse> {\n  return client.delete(`/company/v1/products/${id}`);\n}\n\nexport async function duplicateProduct(\n  client: FetchClient,\n  id: number,\n): Promise<products.DuplicateProductResponse> {\n  return client.post(`/company/v1/products/${id}/duplicate`);\n}\n\n// ============================================================================\n// Products - Status Changes\n// ============================================================================\n\nexport async function archiveProduct(\n  client: FetchClient,\n  product: { id: number; title: string },\n): Promise<products.ProductResponse> {\n  return client.patch(`/company/v1/products/${product.id}`, {\n    id: product.id.toString(),\n    product: {\n      title: product.title || \"\",\n      status: \"archived\",\n    },\n  });\n}\n\nexport async function unarchiveProduct(\n  client: FetchClient,\n  product: { id: number; title: string },\n): Promise<products.ProductResponse> {\n  return client.patch(`/company/v1/products/${product.id}`, {\n    id: product.id.toString(),\n    product: {\n      title: product.title || \"\",\n      status: \"active\",\n    },\n  });\n}\n\nexport async function draftProduct(\n  client: FetchClient,\n  product: { id: number; title: string },\n): Promise<products.ProductResponse> {\n  return client.patch(`/company/v1/products/${product.id}`, {\n    id: product.id.toString(),\n    product: {\n      title: product.title || \"\",\n      status: \"draft\",\n    },\n  });\n}\n\nexport async function sendProductToTop(\n  client: FetchClient,\n  id: number,\n): Promise<products.SendToTopResponse> {\n  return client.patch(`/company/v1/products/${id}/send_to_top`);\n}\n","import type { Provider } from \"react\";\nimport { createTranslationContext } from \"@fluid-app/i18n/translation-api-context-factory\";\nimport type { TranslationApi } from \"@fluid-app/i18n/translation-api\";\nimport type { ShareablesDict } from \"./translation-dictionary\";\n\nconst { Provider: ShareablesProvider, useTranslation } =\n  createTranslationContext<ShareablesDict>(\"Shareables\");\n\nexport const ShareablesTranslationProvider: Provider<TranslationApi<ShareablesDict> | null> =\n  ShareablesProvider;\nexport const useShareablesTranslation = useTranslation;\n","\"use client\";\n\nimport type React from \"react\";\nimport { Card, Badge } from \"@fluid-app/ui-primitives\";\nimport { CirclePlay } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI, useRenderImage } from \"../../context\";\n\nexport interface ShareItemCardProps {\n  /** Display title */\n  title: string;\n  /** Image URL to display */\n  imageUrl?: string | null;\n  /** Navigation URL when card is clicked */\n  href: string;\n  /** Optional badge to display (e.g., \"5 items\", \"12 assets\") */\n  badge?: {\n    text: string;\n    isLoading?: boolean;\n  };\n  /** Whether this item is a video */\n  isVideo?: boolean;\n  /** Subtitle content below the title */\n  subtitle?: React.ReactNode;\n}\n\nconst DEFAULT_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png\";\n\nexport default function ShareItemCard({\n  title,\n  imageUrl,\n  href,\n  badge,\n  isVideo = false,\n  subtitle,\n}: ShareItemCardProps): React.JSX.Element {\n  const { navigate } = useShareablesUI();\n  const renderImage = useRenderImage();\n  const { t } = useShareablesTranslation();\n  const resolvedSubtitle = subtitle ?? t(\"share_click_to_find_assets\");\n\n  function handleClick() {\n    navigate(href);\n  }\n\n  return (\n    <Card\n      role=\"button\"\n      tabIndex={0}\n      onClick={handleClick}\n      onKeyDown={(e) => {\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n          handleClick();\n        }\n      }}\n      className=\"group hover:bg-muted cursor-pointer gap-0 overflow-hidden rounded-lg border-0 p-0 shadow-none transition-colors\"\n    >\n      {/* Image container */}\n      <div className=\"bg-muted relative aspect-square overflow-hidden rounded-lg\">\n        {renderImage({\n          src: imageUrl || DEFAULT_IMAGE,\n          alt: title,\n          fill: true,\n          className: \"object-cover transition-transform group-hover:scale-105\",\n        })}\n\n        {/* Video play indicator */}\n        {isVideo && (\n          <div className=\"absolute inset-0 flex items-center justify-center\">\n            <div className=\"bg-foreground/50 flex size-16 items-center justify-center rounded-full backdrop-blur-sm\">\n              <CirclePlay className=\"text-background size-12\" />\n            </div>\n          </div>\n        )}\n\n        {/* Badge */}\n        {badge && !isVideo && !badge.isLoading && (\n          <Badge className=\"absolute top-2 right-2 shadow-lg\" variant=\"default\">\n            {badge.text}\n          </Badge>\n        )}\n\n        {/* Loading indicator for badge */}\n        {badge?.isLoading && !isVideo && (\n          <div className=\"bg-muted-foreground absolute top-2 right-2 size-6 animate-pulse rounded-full\" />\n        )}\n      </div>\n\n      {/* Item info */}\n      <div className=\"px-2 pt-2 pb-4\">\n        <h3 className=\"text-foreground line-clamp-2 text-sm leading-tight font-bold\">\n          {title || t(\"common_untitled\")}\n        </h3>\n        <p className=\"text-muted-foreground mt-1 text-xs\">{resolvedSubtitle}</p>\n      </div>\n    </Card>\n  );\n}\n","import type React from \"react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport ShareItemCard from \"../ShareItemCard\";\n\ninterface ShareProductCardProps {\n  product: {\n    id: number;\n    title: string;\n    image_url?: string | null;\n    images?: Array<{ image_url: string; position?: number }> | null;\n    kind?: string;\n    video_url?: string;\n  };\n  mediaCount?: number;\n}\n\nfunction getProductImageUrl(\n  product: ShareProductCardProps[\"product\"],\n): string | null {\n  if (Array.isArray(product.images) && product.images.length > 0) {\n    const sortedImages = product.images.toSorted(\n      (a, b) => (a.position ?? 0) - (b.position ?? 0),\n    );\n    const primaryImage = sortedImages[0];\n    if (primaryImage?.image_url) {\n      return primaryImage.image_url;\n    }\n  }\n  return product.image_url ?? null;\n}\n\nexport default function ShareProductCard({\n  product,\n  mediaCount,\n}: ShareProductCardProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const imageUrl = getProductImageUrl(product);\n  const isVideo = product.kind === \"video\" && !!product.video_url;\n\n  return (\n    <ShareItemCard\n      title={product.title}\n      imageUrl={imageUrl}\n      href={`product/${product.id}`}\n      badge={\n        !isVideo && mediaCount != null\n          ? { text: t(\"products_asset_count\", { count: String(mediaCount) }) }\n          : undefined\n      }\n      isVideo={isVideo}\n    />\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport type { ReactNode, RefObject } from \"react\";\nimport { Skeleton } from \"@fluid-app/ui-primitives\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\n/**\n * Grid column class shared by all shareable listing screens (products, media,\n * playlists, files). Exposed so the list-content slot can reuse it directly.\n */\nexport const SHAREABLE_GRID_CLASS =\n  \"grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-4\";\n\nexport interface ShareableListLayoutProps {\n  /** Filter bar slot — rendered above the grid/list when provided. */\n  filters?: ReactNode;\n  /** Main content — grid, list, or bulk-selection area. */\n  children?: ReactNode;\n  /** Loading state. When true, a skeleton screen is rendered. */\n  isLoading?: boolean;\n  /** When provided and truthy, an error message is rendered in place of content. */\n  error?: unknown;\n  /** Error text (defaults to generic message). */\n  errorMessage?: string;\n  /** Empty state — rendered in place of children when true. Must be paired with `emptyMessage`. */\n  isEmpty?: boolean;\n  /** Empty state message. */\n  emptyMessage?: ReactNode;\n  /** Pagination / load-more footer slot (rendered below content). */\n  footer?: ReactNode;\n  /**\n   * Shape of the filter-bar skeleton rendered while loading.\n   * - `\"search\"` — single skeleton bar. The default, used by files and pages.\n   * - `\"search-view\"` — search + view toggle. Used by media, playlists and products.\n   * - `\"search-action\"` — search + primary action. No current callers.\n   */\n  loadingFilterShape?: \"search\" | \"search-view\" | \"search-action\";\n  /** Infinite-scroll sentinel ref (rendered as a 1px div below content). */\n  sentinelRef?: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Standard page chrome for shareable listing screens. Provides:\n *\n * - Page-level padding (matching all existing listing screens).\n * - Loading skeleton (filter bar + grid of 8 card placeholders).\n * - Inline error rendering.\n * - Empty state rendering.\n * - Optional filter/footer/sentinel slots.\n *\n * Domain-specific UI (cards, rows, filter controls) is slotted in via\n * `filters` and `children`. This component does NOT own data fetching or\n * any state — callers pass in the derived flags.\n */\nexport function ShareableListLayout({\n  filters,\n  children,\n  isLoading,\n  error,\n  errorMessage,\n  isEmpty,\n  emptyMessage,\n  footer,\n  loadingFilterShape = \"search\",\n  sentinelRef,\n}: ShareableListLayoutProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const resolvedErrorMessage = errorMessage ?? t(\"common_load_error_default\");\n\n  if (isLoading) {\n    return (\n      <div className=\"space-y-6 px-4 py-4 md:px-10 md:py-6\">\n        <div className=\"flex items-center gap-3\">\n          <Skeleton className=\"h-10 flex-1\" />\n          {loadingFilterShape === \"search-view\" && (\n            <Skeleton className=\"size-10\" />\n          )}\n          {loadingFilterShape === \"search-action\" && (\n            <Skeleton className=\"h-10 w-24\" />\n          )}\n        </div>\n        <div className={SHAREABLE_GRID_CLASS}>\n          {Array.from({ length: 8 }).map((_, i) => (\n            <div key={i} className=\"space-y-2\">\n              <Skeleton className=\"aspect-square w-full rounded-lg\" />\n              <Skeleton className=\"h-4 w-3/4\" />\n              <Skeleton className=\"h-3 w-1/2\" />\n            </div>\n          ))}\n        </div>\n      </div>\n    );\n  }\n\n  if (error) {\n    return (\n      <div className=\"flex flex-col items-center justify-center py-16\">\n        <p className=\"text-destructive text-sm\">{resolvedErrorMessage}</p>\n      </div>\n    );\n  }\n\n  return (\n    // overflow-x-clip contains decorative overhang (e.g. the rotated playlist\n    // card \"stack\" fan) so it can't push the mobile viewport into a horizontal\n    // scroll. The fan still shows within the page's horizontal padding.\n    <div className=\"space-y-6 overflow-x-clip px-4 py-4 md:px-10 md:py-6\">\n      {filters}\n      {isEmpty ? (\n        <div className=\"flex flex-col items-center justify-center py-16\">\n          <p className=\"text-muted-foreground text-sm\">{emptyMessage}</p>\n        </div>\n      ) : (\n        children\n      )}\n      {footer}\n      {sentinelRef && <div ref={sentinelRef} className=\"h-1\" />}\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport type { ReactNode } from \"react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\n/**\n * Container className for a list-view rendering of shareables. Pairs with\n * `ShareableListRow` and mirrors `SHAREABLE_GRID_CLASS` for symmetry.\n */\nexport const SHAREABLE_LIST_CLASS = \"divide-border divide-y rounded-lg border\";\n\nexport interface ShareableListRowProps {\n  /** Image URL for the row thumbnail. Falls back to a muted block. */\n  imageUrl?: string | null;\n  /** Alt text for the thumbnail image (defaults to title). */\n  imageAlt?: string;\n  /** Primary row label. Falls back to \"Untitled\" when empty. */\n  title: string;\n  /** Secondary content rendered beneath the title (badges, type label, etc.). */\n  subtitle?: ReactNode;\n  /** Click handler for the row body (thumbnail + title region). */\n  onClick?: () => void;\n  /**\n   * Slot rendered before the thumbnail (e.g. selection checkbox). Sits as a\n   * sibling of the navigation button so its clicks don't bubble through it.\n   */\n  leading?: ReactNode;\n  /**\n   * Slot rendered after the title region (e.g. favorite toggle, action menu).\n   * Same sibling-positioning as `leading`.\n   */\n  trailing?: ReactNode;\n}\n\n/**\n * Single row in a shareables list view. The row body (thumbnail + title) is\n * a `<button>` for keyboard/click navigation; `leading` and `trailing` slots\n * are siblings so their interactive elements don't nest inside the body\n * button. Hover styling applies to the entire row container.\n */\nexport function ShareableListRow({\n  imageUrl,\n  imageAlt,\n  title,\n  subtitle,\n  onClick,\n  leading,\n  trailing,\n}: ShareableListRowProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  return (\n    <div className=\"hover:bg-muted flex items-center gap-3 px-4 py-3 transition-colors\">\n      {leading}\n      <button\n        type=\"button\"\n        onClick={onClick}\n        className=\"flex min-w-0 flex-1 items-center gap-4 text-left\"\n      >\n        <div className=\"bg-muted size-12 shrink-0 overflow-hidden rounded-md\">\n          {imageUrl ? (\n            <img\n              src={imageUrl}\n              alt={imageAlt ?? title}\n              className=\"h-full w-full object-cover\"\n            />\n          ) : (\n            <div className=\"bg-muted h-full w-full\" />\n          )}\n        </div>\n        <div className=\"min-w-0 flex-1\">\n          <p className=\"text-foreground truncate text-sm font-medium\">\n            {title || t(\"common_untitled\")}\n          </p>\n          {subtitle != null && subtitle !== false && (\n            <p className=\"text-muted-foreground flex items-center gap-1.5 text-xs\">\n              {subtitle}\n            </p>\n          )}\n        </div>\n      </button>\n      {trailing}\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { cn } from \"@fluid-app/ui-primitives\";\nimport { LayoutGrid, List } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\nexport type ViewMode = \"grid\" | \"list\";\n\nexport interface ViewModeToggleProps {\n  value: ViewMode;\n  onChange: (mode: ViewMode) => void;\n}\n\n/**\n * Segmented list/grid toggle used in the filter bar of every shareable\n * listing screen. Stateless — callers own the `viewMode` state.\n */\nexport function ViewModeToggle({\n  value,\n  onChange,\n}: ViewModeToggleProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  return (\n    <div className=\"border-input bg-muted flex items-center rounded-lg border p-0.5\">\n      <ToggleButton\n        active={value === \"list\"}\n        label={t(\"common_list_view\")}\n        onClick={() => onChange(\"list\")}\n      >\n        <List className=\"size-4\" />\n      </ToggleButton>\n      <ToggleButton\n        active={value === \"grid\"}\n        label={t(\"common_grid_view\")}\n        onClick={() => onChange(\"grid\")}\n      >\n        <LayoutGrid className=\"size-4\" />\n      </ToggleButton>\n    </div>\n  );\n}\n\nfunction ToggleButton({\n  active,\n  label,\n  onClick,\n  children,\n}: {\n  active: boolean;\n  label: string;\n  onClick: () => void;\n  children: React.ReactNode;\n}) {\n  return (\n    <button\n      type=\"button\"\n      onClick={onClick}\n      title={label}\n      aria-label={label}\n      aria-pressed={active}\n      className={cn(\n        \"flex h-8 w-8 items-center justify-center rounded-md transition-all\",\n        active\n          ? \"bg-background text-foreground shadow-sm\"\n          : \"text-muted-foreground hover:text-foreground\",\n      )}\n    >\n      {children}\n    </button>\n  );\n}\n","import { useEffect, useRef, type RefObject } from \"react\";\n\nexport interface UseInfiniteListSentinelOptions {\n  /** TanStack Query `hasNextPage` flag from `useInfiniteQuery`. */\n  hasNextPage: boolean;\n  /** TanStack Query `isFetchingNextPage` flag from `useInfiniteQuery`. */\n  isFetchingNextPage: boolean;\n  /** TanStack Query `fetchNextPage` callback from `useInfiniteQuery`. */\n  fetchNextPage: () => void;\n  /**\n   * TanStack Query `error` from `useInfiniteQuery`. When truthy, the sentinel\n   * stops requesting additional pages so a transient next-page failure doesn't\n   * spin into a retry loop while the sentinel is still on screen. Pass\n   * `undefined`/`null` when no error is present.\n   */\n  error: unknown;\n}\n\n/**\n * Wires a sentinel `<div>` to TanStack Query infinite-pagination state.\n *\n * Returns a ref the caller attaches to a 1px sentinel element rendered below\n * the list. When the sentinel scrolls into view (with a 200px root margin)\n * and the query has a next page, isn't already fetching, and hasn't errored,\n * `fetchNextPage()` is invoked.\n */\nexport function useInfiniteListSentinel({\n  hasNextPage,\n  isFetchingNextPage,\n  fetchNextPage,\n  error,\n}: UseInfiniteListSentinelOptions): RefObject<HTMLDivElement | null> {\n  const sentinelRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    const target = sentinelRef.current;\n    if (!target) return;\n    const observer = new IntersectionObserver(\n      (entries) => {\n        if (\n          entries[0]?.isIntersecting &&\n          hasNextPage &&\n          !isFetchingNextPage &&\n          !error\n        ) {\n          fetchNextPage();\n        }\n      },\n      { threshold: 0, rootMargin: \"200px\" },\n    );\n    observer.observe(target);\n    return () => observer.disconnect();\n  }, [fetchNextPage, hasNextPage, isFetchingNextPage, error]);\n\n  return sentinelRef;\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useMemo } from \"react\";\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport { listProducts } from \"@fluid-app/products-api-client\";\nimport { useShareablesClient } from \"@fluid-app/shareables-core\";\nimport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbPage,\n} from \"@fluid-app/ui-primitives\";\nimport { SearchSort } from \"@fluid-app/ui-components/components/SearchSort\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { ScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport ShareProductCard from \"../MediaShare/products/ShareProductCard\";\nimport type { PortalProductsResponse } from \"../portal-product-types\";\nimport {\n  ShareableListLayout,\n  SHAREABLE_GRID_CLASS,\n} from \"../shared/ShareableListLayout\";\nimport {\n  ShareableListRow,\n  SHAREABLE_LIST_CLASS,\n} from \"../shared/ShareableListRow\";\nimport { ViewModeToggle, type ViewMode } from \"../shared/ViewModeToggle\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport { useInfiniteListSentinel } from \"../../hooks/use-infinite-list-sentinel\";\n\nconst PAGE_SIZE = 24;\n\n// SORT_OPTIONS moved into component as useMemo for i18n\n\nexport interface ProductsScreenProps {\n  countryCode?: string;\n  fetchProducts?: (\n    search: string,\n    cursor?: string,\n    limit?: number,\n    sort?: string,\n  ) => Promise<PortalProductsResponse>;\n  onNavigate?: (screen: string, detailId?: string) => void;\n}\n\nexport function ProductsScreen({\n  countryCode,\n  fetchProducts: fetchPortalProducts,\n  onNavigate: _onNavigate,\n}: ProductsScreenProps): React.JSX.Element {\n  const client = useShareablesClient();\n  const { navigate } = useShareablesUI();\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n\n  const SORT_OPTIONS = useMemo(\n    () => [\n      { label: t(\"sort_newest\"), value: \"created_at_desc\" },\n      { label: t(\"sort_oldest\"), value: \"created_at_asc\" },\n      { label: t(\"sort_title_asc\"), value: \"title_asc\" },\n      { label: t(\"sort_title_desc\"), value: \"title_desc\" },\n      { label: t(\"sort_price_asc\"), value: \"price_asc\" },\n      { label: t(\"sort_price_desc\"), value: \"price_desc\" },\n    ],\n    [t],\n  );\n\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [debouncedSearch, setDebouncedSearch] = useState(\"\");\n  const [sortValue, setSortValue] = useState(\"created_at_desc\");\n  const [viewMode, setViewMode] = useState<ViewMode>(\"grid\");\n\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setDebouncedSearch(searchTerm);\n    }, 300);\n    return () => clearTimeout(timer);\n  }, [searchTerm]);\n\n  // Sort is only applied to the list endpoint; the search endpoint uses\n  // relevance ranking, so exclude sortValue from the key during search to\n  // avoid unnecessary cache entries.\n  const effectiveSort = debouncedSearch ? undefined : sortValue;\n\n  // Portal-tenant query (cursor-based)\n  const portalQuery = useInfiniteQuery({\n    queryKey: [\n      \"portal-product-catalog\",\n      debouncedSearch || \"\",\n      PAGE_SIZE,\n      effectiveSort,\n    ],\n    queryFn: async ({ pageParam }) => {\n      return fetchPortalProducts!(\n        debouncedSearch,\n        pageParam,\n        PAGE_SIZE,\n        effectiveSort,\n      );\n    },\n    getNextPageParam: (lastPage) =>\n      lastPage.meta?.pagination?.next_cursor ?? undefined,\n    initialPageParam: undefined as string | undefined,\n    enabled: !!fetchPortalProducts,\n  });\n\n  // Legacy query (page-based) — used when fetchProducts prop is not provided\n  const legacyQuery = useInfiniteQuery({\n    queryKey: [\"shareables-products\", debouncedSearch, countryCode],\n    queryFn: async ({ pageParam = 1 }) => {\n      // Invariant: `enabled` guarantees `client` is non-null when this runs.\n      if (!client) throw new Error(\"Unreachable: client is null\");\n      const response = await listProducts(client, {\n        page: pageParam,\n        per_page: PAGE_SIZE,\n        search_query: debouncedSearch || undefined,\n        sorting: { id: \"title\", desc: false },\n        status: [\"active\"],\n        country_code: countryCode ? [countryCode] : [\"US\"],\n        published_stores: [\"rep\"],\n      });\n      return response.products;\n    },\n    getNextPageParam: (lastPage, allPages) =>\n      lastPage.length === PAGE_SIZE ? allPages.length + 1 : undefined,\n    initialPageParam: 1,\n    enabled: !fetchPortalProducts && !!client,\n  });\n\n  // When neither `fetchPortalProducts` nor `client` is available, both\n  // queries are disabled and the screen renders with an empty product list.\n  const usePortal = !!fetchPortalProducts;\n  const activeQuery = usePortal ? portalQuery : legacyQuery;\n\n  const {\n    data,\n    isLoading,\n    isFetchingNextPage,\n    hasNextPage,\n    fetchNextPage,\n    error,\n  } = activeQuery;\n\n  const sentinelRef = useInfiniteListSentinel({\n    hasNextPage,\n    isFetchingNextPage,\n    fetchNextPage,\n    error,\n  });\n\n  const products = useMemo(() => {\n    if (!data) return [];\n    if (usePortal) {\n      const portalData = data as typeof portalQuery.data;\n      return (\n        portalData?.pages.flatMap((page) =>\n          (page.products ?? []).map((p) => ({\n            id: p.id ?? 0,\n            title: p.name ?? \"\",\n            image_url: p.images?.[0]?.url ?? null,\n            media_count: p.media_count,\n          })),\n        ) ?? []\n      );\n    }\n    const legacyData = data as typeof legacyQuery.data;\n    return (\n      legacyData?.pages.flat().map((p) => ({\n        id: p.id,\n        title: p.title ?? \"\",\n        image_url:\n          p.image_url ??\n          (\n            p.images as\n              | Array<{ image_url: string; position?: number }>\n              | undefined\n          )?.[0]?.image_url ??\n          null,\n        media_count: undefined as number | undefined,\n      })) ?? []\n    );\n  }, [data, usePortal]);\n\n  const footer = (\n    <>\n      {isFetchingNextPage && (\n        <div className=\"flex justify-center py-4\">\n          <div className=\"border-primary size-6 animate-spin rounded-full border-2 border-t-transparent\" />\n        </div>\n      )}\n      {error && (\n        <p className=\"bg-destructive/10 text-destructive rounded-lg px-3 py-2\">\n          {t(\"products_load_error\")}\n        </p>\n      )}\n    </>\n  );\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {t(\"products_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableListLayout\n        isLoading={isLoading}\n        isEmpty={\n          !error && products.length === 0 && !isFetchingNextPage && !hasNextPage\n        }\n        emptyMessage={\n          debouncedSearch\n            ? t(\"products_search_no_results\")\n            : t(\"products_empty_default\")\n        }\n        filters={\n          <div className=\"bg-background sticky top-0 z-10 -mx-4 flex items-center justify-end gap-2 px-4 py-2 md:static md:mx-0 md:bg-transparent md:px-0 md:py-0\">\n            <div className=\"w-full md:max-w-sm\">\n              <SearchSort\n                presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n                searchValue={searchTerm}\n                onSearchChange={setSearchTerm}\n                placeholder={t(\"products_search_placeholder\")}\n                sortOptions={SORT_OPTIONS}\n                sortValue={sortValue}\n                onSortChange={setSortValue}\n              />\n            </div>\n\n            <ViewModeToggle value={viewMode} onChange={setViewMode} />\n          </div>\n        }\n        loadingFilterShape=\"search-view\"\n        footer={footer}\n        sentinelRef={sentinelRef}\n      >\n        {viewMode === \"grid\" ? (\n          <div className={SHAREABLE_GRID_CLASS}>\n            {products.map((product) => (\n              <ShareProductCard\n                key={product.id}\n                product={{\n                  id: product.id,\n                  title: product.title,\n                  image_url: product.image_url,\n                }}\n                mediaCount={product.media_count}\n              />\n            ))}\n          </div>\n        ) : (\n          <div className={SHAREABLE_LIST_CLASS}>\n            {products.map((product) => (\n              <ShareableListRow\n                key={product.id}\n                imageUrl={product.image_url}\n                title={product.title}\n                subtitle={\n                  product.media_count != null\n                    ? t(\"products_asset_count\", {\n                        count: String(product.media_count),\n                      })\n                    : undefined\n                }\n                onClick={() => navigate(`product/${product.id}`)}\n              />\n            ))}\n          </div>\n        )}\n      </ShareableListLayout>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n  Button,\n  Badge,\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogTitle,\n} from \"@fluid-app/ui-primitives\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useRenderImage } from \"../../context\";\nimport {\n  ChevronLeft,\n  ChevronRight,\n  Image as ImageIcon,\n  Maximize,\n  X,\n} from \"lucide-react\";\n\nfunction buildPdfSrc(url: string, page = 1): string {\n  try {\n    const parsed = new URL(url);\n    parsed.hash = `page=${page}&view=FitH`;\n    return parsed.toString();\n  } catch {\n    return `${url}#page=${page}&view=FitH`;\n  }\n}\n\ninterface SharePageImageDisplayProps {\n  displayImage: string;\n  displayTitle: string;\n  displayVideo?: string;\n  displayPdf?: string;\n  isVideo: boolean;\n  badgeLabel: string;\n  /** When false, removes the rounded-2xl corners so the media fills its\n   *  container flush (used by full-screen detail pages where rounded\n   *  corners show background through the edges). Default true for the\n   *  modal/card use case. */\n  rounded?: boolean;\n  /** When false, hides the in-overlay type badge so callers can render\n   *  the media type elsewhere (e.g. below the media). Default true to\n   *  preserve existing behavior for modal/card callers. */\n  showBadge?: boolean;\n  pdfPrevAriaLabel?: string;\n  pdfNextAriaLabel?: string;\n  pdfDocumentTitle?: string;\n}\n\nexport default function SharePageImageDisplay({\n  displayImage,\n  displayTitle,\n  displayVideo,\n  displayPdf,\n  isVideo,\n  badgeLabel,\n  rounded = true,\n  showBadge = true,\n  pdfPrevAriaLabel,\n  pdfNextAriaLabel,\n  pdfDocumentTitle,\n}: SharePageImageDisplayProps): React.JSX.Element {\n  const [isPreviewOpen, setIsPreviewOpen] = useState(false);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [imageFailed, setImageFailed] = useState(false);\n  const imagePreviewButtonRef = useRef<HTMLButtonElement>(null);\n  const renderImage = useRenderImage();\n  const { t } = useShareablesTranslation();\n  const imageAlt = displayTitle || badgeLabel;\n  const hasDisplayImage = !!displayImage && !imageFailed;\n  const imageOpenerAriaLabel = imageAlt\n    ? t(\"open_image_viewer_for\", { title: imageAlt })\n    : t(\"open_image_viewer\");\n  const isImageViewerOpen =\n    isPreviewOpen && !isVideo && !displayPdf && hasDisplayImage;\n  const resolvedPdfPrevAriaLabel =\n    pdfPrevAriaLabel ?? t(\"pdf_previous_page_aria\");\n  const resolvedPdfNextAriaLabel = pdfNextAriaLabel ?? t(\"pdf_next_page_aria\");\n  const resolvedPdfDocumentTitle = pdfDocumentTitle || t(\"pdf_document_title\");\n\n  useEffect(() => {\n    setImageFailed(false);\n  }, [displayImage]);\n\n  const handleImageError = () => {\n    setImageFailed(true);\n    setIsPreviewOpen(false);\n  };\n\n  const handlePrevPage = () => {\n    setCurrentPage((prev) => (prev > 1 ? prev - 1 : prev));\n  };\n\n  const handleNextPage = () => {\n    setCurrentPage((prev) => prev + 1);\n  };\n\n  return (\n    <div\n      className={`relative flex h-full w-full flex-col overflow-hidden bg-gray-100 ${\n        rounded ? \"rounded-2xl\" : \"\"\n      }`}\n    >\n      {isVideo ? (\n        <video\n          src={displayVideo || \"\"}\n          className=\"h-full w-full object-cover\"\n          autoPlay\n          muted\n          loop\n          controls\n        />\n      ) : displayPdf ? (\n        <>\n          <iframe\n            src={buildPdfSrc(displayPdf, currentPage)}\n            className=\"min-h-0 w-full flex-1\"\n            title={displayTitle || resolvedPdfDocumentTitle}\n          />\n          <div className=\"flex items-center justify-center gap-4 py-3\">\n            <Button\n              onClick={handlePrevPage}\n              disabled={currentPage <= 1}\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"size-8 p-0\"\n              aria-label={resolvedPdfPrevAriaLabel}\n            >\n              <ChevronLeft className=\"size-4\" />\n            </Button>\n            <div className=\"flex items-center gap-2\">\n              <input\n                type=\"number\"\n                min=\"1\"\n                value={currentPage}\n                onChange={(e) => {\n                  const page = parseInt(e.target.value);\n                  if (page > 0) {\n                    setCurrentPage(page);\n                  }\n                }}\n                className=\"border-input bg-background w-14 rounded-md border px-2 py-1 text-center text-sm focus:ring-1 focus:outline-none\"\n                aria-label={t(\"pdf_page_number_aria\")}\n              />\n            </div>\n            <Button\n              onClick={handleNextPage}\n              variant=\"outline\"\n              size=\"sm\"\n              className=\"size-8 p-0\"\n              aria-label={resolvedPdfNextAriaLabel}\n            >\n              <ChevronRight className=\"size-4\" />\n            </Button>\n          </div>\n        </>\n      ) : hasDisplayImage ? (\n        <button\n          ref={imagePreviewButtonRef}\n          type=\"button\"\n          onClick={() => setIsPreviewOpen(true)}\n          className=\"group absolute inset-0 z-0 cursor-pointer border-0 bg-transparent p-0\"\n          aria-label={imageOpenerAriaLabel}\n          aria-haspopup=\"dialog\"\n          aria-expanded={isImageViewerOpen}\n        >\n          <img\n            key={displayImage}\n            src={displayImage}\n            alt=\"\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            className=\"absolute inset-0 h-full w-full scale-125 object-cover blur-md\"\n            aria-hidden=\"true\"\n            onError={(e) => {\n              e.currentTarget.style.display = \"none\";\n            }}\n          />\n          {renderImage({\n            src: displayImage,\n            alt: imageAlt,\n            fill: true,\n            className: \"object-contain\",\n            onError: handleImageError,\n          })}\n          <span className=\"group-focus-visible:ring-ring pointer-events-none absolute inset-0 group-focus-visible:ring-2 group-focus-visible:ring-inset\" />\n        </button>\n      ) : (\n        <div className=\"bg-muted text-muted-foreground flex h-full w-full items-center justify-center\">\n          <ImageIcon className=\"size-12 opacity-50\" aria-hidden=\"true\" />\n          <span className=\"sr-only\">{t(\"image_unavailable\")}</span>\n        </div>\n      )}\n\n      {/* Badge in top-right corner (opt-out when caller renders type elsewhere).\n          Kept at z-0 so it stacks above the media element below it but cannot\n          pass over a sticky screen header (z-10). */}\n      {showBadge && (\n        <Badge\n          variant=\"secondary\"\n          className=\"absolute top-3 right-3 z-0 bg-gray-100 text-gray-900 hover:bg-gray-100\"\n        >\n          {badgeLabel}\n        </Badge>\n      )}\n\n      {/* Expand button for videos and PDFs (see z-index note above). */}\n      {(isVideo || displayPdf) && (\n        <Button\n          onClick={() => setIsPreviewOpen(true)}\n          className=\"absolute top-3 left-3 z-0 flex size-8 items-center justify-center rounded-full bg-white/90 text-gray-700 backdrop-blur-sm transition-colors hover:bg-white\"\n          variant=\"ghost\"\n          size=\"sm\"\n          aria-label={t(\"open_media_preview\")}\n        >\n          <Maximize className=\"size-4\" />\n        </Button>\n      )}\n\n      {/* Full image viewer */}\n      <Dialog open={isImageViewerOpen} onOpenChange={setIsPreviewOpen}>\n        <DialogContent\n          className=\"z-[9999] h-[95vh] w-[95vw] max-w-none border-0 bg-transparent p-0 shadow-none sm:max-w-none\"\n          showCloseButton={false}\n          overlayClassName=\"z-[9998] bg-black/90\"\n          onCloseAutoFocus={(event) => {\n            event.preventDefault();\n            imagePreviewButtonRef.current?.focus();\n          }}\n        >\n          <DialogTitle className=\"sr-only\">{imageAlt}</DialogTitle>\n          <DialogDescription className=\"sr-only\">\n            {t(\"image_viewer_description\")}\n          </DialogDescription>\n          <DialogClose\n            aria-label={t(\"close_image_viewer\")}\n            className=\"bg-foreground/60 text-background hover:bg-foreground/80 focus-visible:ring-ring focus-visible:ring-offset-background absolute top-4 right-4 z-10 flex size-10 cursor-pointer items-center justify-center rounded-full transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none\"\n          >\n            <X className=\"size-5\" />\n          </DialogClose>\n          <div className=\"relative flex h-full w-full items-center justify-center\">\n            {renderImage({\n              src: displayImage,\n              alt: imageAlt,\n              fill: true,\n              className: \"object-contain\",\n              onError: handleImageError,\n            })}\n          </div>\n        </DialogContent>\n      </Dialog>\n\n      {/* Fullscreen Video Preview */}\n      {isPreviewOpen && isVideo && (\n        <div\n          className=\"fixed inset-0 z-9999 flex items-center justify-center bg-black\"\n          onClick={() => setIsPreviewOpen(false)}\n        >\n          <Button\n            onClick={() => setIsPreviewOpen(false)}\n            className=\"absolute top-4 right-4 z-10000 flex size-10 items-center justify-center rounded-full bg-white/90 text-gray-900 backdrop-blur-sm transition-colors hover:bg-white\"\n            variant=\"ghost\"\n            size=\"sm\"\n            aria-label={t(\"close_media_preview\")}\n          >\n            <X className=\"size-5\" />\n          </Button>\n          <video\n            src={displayVideo || \"\"}\n            className=\"max-h-screen max-w-full\"\n            autoPlay\n            controls\n            onClick={(e) => e.stopPropagation()}\n          />\n        </div>\n      )}\n\n      {/* Fullscreen PDF Preview */}\n      {isPreviewOpen && displayPdf && (\n        <div\n          className=\"fixed inset-0 z-9999 flex items-center justify-center bg-black/70 backdrop-blur-sm\"\n          onClick={() => setIsPreviewOpen(false)}\n        >\n          <Button\n            onClick={(e) => {\n              e.stopPropagation();\n              setIsPreviewOpen(false);\n            }}\n            className=\"absolute top-4 right-4 z-10000 flex size-10 items-center justify-center rounded-full bg-white/90 text-gray-900 backdrop-blur-sm transition-colors hover:bg-white\"\n            variant=\"ghost\"\n            size=\"sm\"\n            aria-label={t(\"close_media_preview\")}\n          >\n            <X className=\"size-5\" />\n          </Button>\n          <div\n            className=\"relative\"\n            onClick={(e) => e.stopPropagation()}\n            style={{ width: \"95vw\", height: \"90vh\" }}\n          >\n            <iframe\n              src={buildPdfSrc(displayPdf, currentPage)}\n              className=\"h-full w-full rounded-lg bg-white\"\n              title={displayTitle || resolvedPdfDocumentTitle}\n            />\n          </div>\n        </div>\n      )}\n    </div>\n  );\n}\n","import type React from \"react\";\nimport { useMemo } from \"react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\ninterface QrCodeDisplayProps {\n  url: string | null | undefined;\n  alt?: string;\n  size?: \"sm\" | \"md\" | \"lg\";\n  className?: string;\n}\n\nexport function QrCodeDisplay({\n  url,\n  alt,\n  size = \"md\",\n  className = \"\",\n}: QrCodeDisplayProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const resolvedAlt = alt ?? t(\"share_qr_code_default_alt\");\n  const qrCodeUrl = useMemo(\n    () =>\n      url\n        ? `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(url)}`\n        : \"\",\n    [url],\n  );\n\n  const sizeClasses = {\n    sm: \"h-16 w-16\",\n    md: \"h-[120px] w-[120px]\",\n    lg: \"h-40 w-40\",\n  };\n\n  const iconSizes = {\n    sm: \"h-4 w-4\",\n    md: \"h-8 w-8\",\n    lg: \"h-12 w-12\",\n  };\n\n  return (\n    <div\n      className={`flex ${sizeClasses[size]} items-center justify-center overflow-hidden rounded-xl border border-gray-200 bg-white shadow-sm ${className}`}\n    >\n      {qrCodeUrl ? (\n        <img\n          src={qrCodeUrl}\n          alt={resolvedAlt}\n          className=\"h-full w-full object-cover\"\n          loading=\"lazy\"\n          onError={(e) => {\n            e.currentTarget.style.display = \"none\";\n            const parent = e.currentTarget.parentElement;\n            if (parent) parent.title = t(\"share_qr_code_load_error\");\n          }}\n        />\n      ) : (\n        <div className=\"flex items-center justify-center text-gray-400\">\n          <svg\n            className={iconSizes[size]}\n            fill=\"currentColor\"\n            viewBox=\"0 0 24 24\"\n          >\n            <path d=\"M3 3h6v6H3V3zm8 0h6v6h-6V3zm8 0h2v2h-2V3zm0 4h2v2h-2V7zM3 11h6v6H3v-6zm8 0h6v6h-6v-6zm8 0h2v2h-2v-2zm0 4h2v2h-2v-2zM3 19h6v2H3v-2zm8 0h6v2h-6v-2zm8 0h2v2h-2v-2z\" />\n          </svg>\n        </div>\n      )}\n    </div>\n  );\n}\n","import type React from \"react\";\nimport type { SVGProps } from \"react\";\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function FacebookIcon(props: IconProps): React.JSX.Element {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"currentColor\"\n      {...props}\n    >\n      <path d=\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\" />\n    </svg>\n  );\n}\n\nexport function InstagramIcon(props: IconProps): React.JSX.Element {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"currentColor\"\n      {...props}\n    >\n      <path d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z\" />\n    </svg>\n  );\n}\n\nexport function TikTokIcon(props: IconProps): React.JSX.Element {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"currentColor\"\n      {...props}\n    >\n      <path d=\"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z\" />\n    </svg>\n  );\n}\n\nexport function XTwitterIcon(props: IconProps): React.JSX.Element {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"currentColor\"\n      {...props}\n    >\n      <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n    </svg>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState } from \"react\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { QrCodeDisplay } from \"../QrCodeDisplay\";\nimport { Menu, Copy } from \"lucide-react\";\nimport {\n  FacebookIcon,\n  InstagramIcon,\n  TikTokIcon,\n  XTwitterIcon,\n} from \"../icons/social-icons\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport {\n  handleSocialShare,\n  buildSocialShareLabels,\n} from \"../../utils/social-sharing\";\nimport { isMobileDevice } from \"../../utils/os-detection\";\nimport { useShareablesUI } from \"../../context\";\n\ninterface ShareLinkSectionProps {\n  shareLink: string | null;\n  loading: boolean;\n  displayTitle: string;\n  isVideo: boolean;\n  relateableId: number;\n  relateableType: \"Product\" | \"Medium\" | \"Page\" | \"EnrollmentPack\" | \"Library\";\n}\n\nexport default function ShareLinkSection({\n  shareLink,\n  loading,\n  displayTitle,\n  isVideo,\n  relateableId,\n  relateableType,\n}: ShareLinkSectionProps): React.JSX.Element {\n  const { showToast, onMySiteShare } = useShareablesUI();\n  const { t } = useShareablesTranslation();\n  const [isShareSheetOpen, setIsShareSheetOpen] = useState(false);\n\n  const handleCopyLink = async () => {\n    if (shareLink) {\n      try {\n        await navigator.clipboard.writeText(shareLink);\n        showToast({\n          title: t(\"share_link_copied\"),\n          type: \"success\",\n        });\n      } catch (error) {\n        showToast({\n          title: t(\"share_link_copy_error\"),\n          type: \"error\",\n          error,\n        });\n      }\n    }\n  };\n\n  const handlePlatformShare = async (platform: string) => {\n    if (!shareLink) {\n      showToast({\n        title: t(\"share_link_not_available\"),\n        type: \"error\",\n      });\n      return;\n    }\n    await handleSocialShare(\n      platform.toLowerCase() as\n        | \"facebook\"\n        | \"x\"\n        | \"linkedin\"\n        | \"instagram\"\n        | \"tiktok\",\n      {\n        url: shareLink,\n        title: displayTitle,\n        description: t(\"share_social_description\", {\n          type: isVideo ? \"video\" : \"image\",\n          title: displayTitle,\n        }),\n      },\n      (message) => showToast({ title: message, type: \"success\" }),\n      (message) => showToast({ title: message, type: \"error\" }),\n      buildSocialShareLabels(t),\n    );\n  };\n\n  const handleMySiteShareClick = async () => {\n    if (!shareLink) {\n      showToast({\n        title: t(\"share_link_not_available\"),\n        type: \"error\",\n      });\n      return;\n    }\n\n    if (onMySiteShare) {\n      try {\n        await onMySiteShare({\n          shareLink,\n          relateable_id: relateableId,\n          relateable_type: relateableType,\n        });\n        showToast({\n          title: t(\"share_mysite_success\"),\n          type: \"success\",\n        });\n      } catch (error) {\n        showToast({\n          title: t(\"share_mysite_error\"),\n          type: \"error\",\n          error,\n        });\n      }\n    }\n  };\n\n  const socialPlatforms = [\n    { name: \"Facebook\", Icon: FacebookIcon },\n    { name: \"Instagram\", Icon: InstagramIcon },\n    { name: \"TikTok\", Icon: TikTokIcon },\n    { name: \"X\", Icon: XTwitterIcon },\n  ];\n\n  return (\n    <div className=\"space-y-4\">\n      {/* Header with divider lines */}\n      <div className=\"flex items-center gap-3\">\n        <h3 className=\"text-foreground shrink-0 text-sm font-semibold\">\n          {t(\"share_unique_link_heading\")}\n        </h3>\n        <div className=\"bg-foreground h-px flex-1\" />\n      </div>\n\n      <div className=\"flex items-start gap-4\">\n        {/* QR Code */}\n        <div className=\"bg-muted shrink-0 rounded-md p-2\">\n          <QrCodeDisplay\n            url={shareLink}\n            alt={t(\"share_qr_code_alt\")}\n            size=\"sm\"\n            className=\"h-[75px] w-[75px] rounded-none! border-none\"\n          />\n        </div>\n\n        <div className=\"flex min-w-0 flex-1 flex-col gap-3\">\n          {/* Social buttons */}\n          <div className=\"scrollbar-none flex flex-nowrap items-center gap-2 overflow-x-auto\">\n            <Button\n              onClick={handleMySiteShareClick}\n              variant=\"secondary\"\n              size=\"sm\"\n              className=\"border-foreground bg-background text-foreground hover:bg-muted h-8 rounded-md border px-3 text-xs font-semibold transition-colors\"\n            >\n              {t(\"share_mysite_button\")}\n            </Button>\n            {isMobileDevice() ? (\n              <>\n                <Button\n                  variant=\"secondary\"\n                  size=\"sm\"\n                  className=\"border-foreground bg-background text-foreground hover:bg-muted h-8 rounded-md border px-3 text-xs font-semibold transition-colors\"\n                  onClick={() => setIsShareSheetOpen(true)}\n                >\n                  <Menu className=\"mr-1 size-3\" />\n                  {t(\"share_button\")}\n                </Button>\n                <MobileActionSheet\n                  open={isShareSheetOpen}\n                  onOpenChange={setIsShareSheetOpen}\n                  title={t(\"share_button\")}\n                  actions={socialPlatforms.map((platform) => ({\n                    id: platform.name,\n                    label: platform.name,\n                    onSelect: () => handlePlatformShare(platform.name),\n                  }))}\n                />\n              </>\n            ) : (\n              socialPlatforms.map((platform) => (\n                <Button\n                  key={platform.name}\n                  onClick={() => handlePlatformShare(platform.name)}\n                  variant=\"secondary\"\n                  size=\"sm\"\n                  className=\"border-foreground bg-background text-foreground hover:bg-muted h-8 rounded-md border px-3 text-xs font-semibold transition-colors\"\n                >\n                  <platform.Icon className=\"mr-1.5 size-3\" />\n                  {platform.name}\n                </Button>\n              ))\n            )}\n          </div>\n\n          {/* Gradient URL bar */}\n          <div\n            className=\"flex h-10 items-center gap-2 rounded-lg px-3\"\n            style={{\n              background:\n                \"linear-gradient(81.27deg, #E5F7FF 0.95%, #FFDBF5 34.5%, #FFE0CF 60.44%, #EDFFFB 75.06%, #FFDBF5 99.76%)\",\n            }}\n          >\n            <span className=\"flex-1 truncate text-sm text-[#344054]\">\n              {shareLink ||\n                (loading ? t(\"share_generating_link\") : t(\"common_loading\"))}\n            </span>\n            <Button\n              onClick={handleCopyLink}\n              variant=\"ghost\"\n              size=\"sm\"\n              className=\"size-6 shrink-0 p-0 hover:bg-transparent\"\n              disabled={!shareLink}\n            >\n              <Copy className=\"size-4 text-[#344054]\" />\n            </Button>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","export async function downloadFile(\n  url: string,\n  filename: string,\n): Promise<void> {\n  const res = await fetch(url);\n  if (!res.ok) {\n    throw new Error(`Download failed: ${res.status} ${res.statusText}`);\n  }\n  const blob = await res.blob();\n  const objectUrl = URL.createObjectURL(blob);\n  const a = document.createElement(\"a\");\n  a.href = objectUrl;\n  a.download = filename;\n  a.click();\n  URL.revokeObjectURL(objectUrl);\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport { Download } from \"lucide-react\";\nimport ShareLinkSection from \"./ShareLinkSection\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport { downloadFile } from \"../../utils/download-file\";\n\ninterface AssetActionsProps {\n  downloadUrl: string | null | undefined;\n  displayTitle: string;\n  shareLink: string | null;\n  shareLinkLoading: boolean;\n  isVideo: boolean;\n  relateableId: number;\n  relateableType: \"Product\" | \"Medium\" | \"Page\" | \"EnrollmentPack\" | \"Library\";\n  /** Optional control rendered to the right of the Download button, on the\n   *  same row. When omitted, Download renders exactly as before\n   *  (full-width). When provided, Download shrinks to share the row with\n   *  this control. Used by MediaDetailScreen to place its \"Add To\" toggle\n   *  next to Download; the other three screens that render `AssetActions`\n   *  (Product/Page/Playlist detail) don't pass this and are unaffected. */\n  secondaryAction?: React.ReactNode;\n  /** Optional panel rendered directly below the Add To / Download row, full\n   *  width — not inside the row itself. Used by MediaDetailScreen for the\n   *  row of actions revealed by toggling its `secondaryAction` (\"Add To\")\n   *  button; only rendered when provided, so the other three screens that\n   *  render `AssetActions` and never pass it are unaffected. */\n  secondaryActionPanel?: React.ReactNode;\n}\n\nexport default function AssetActions({\n  downloadUrl,\n  displayTitle,\n  shareLink,\n  shareLinkLoading,\n  isVideo,\n  relateableId,\n  relateableType,\n  secondaryAction,\n  secondaryActionPanel,\n}: AssetActionsProps): React.JSX.Element {\n  const { onFileDownload } = useShareablesUI();\n  const { t } = useShareablesTranslation();\n  const [isDownloading, setIsDownloading] = useState(false);\n\n  const handleDownload = useCallback(async () => {\n    if (!downloadUrl || isDownloading) return;\n    if (onFileDownload) {\n      onFileDownload(downloadUrl, displayTitle || \"asset\");\n      return;\n    }\n    setIsDownloading(true);\n    try {\n      await downloadFile(downloadUrl, displayTitle || \"asset\");\n    } catch {\n      window.open(downloadUrl, \"_blank\", \"noopener,noreferrer\");\n    } finally {\n      setIsDownloading(false);\n    }\n  }, [downloadUrl, displayTitle, onFileDownload, isDownloading]);\n\n  const downloadButton = downloadUrl && (\n    <Button\n      onClick={handleDownload}\n      disabled={isDownloading}\n      className={\n        secondaryAction\n          ? \"border-foreground bg-background text-foreground hover:bg-muted flex h-10 items-center justify-center gap-2 rounded-lg border px-4 transition-all\"\n          : \"bg-foreground text-background hover:bg-foreground/70 flex h-10 w-full items-center justify-between rounded-lg px-4 transition-all\"\n      }\n    >\n      <span className=\"text-sm font-medium\">{t(\"share_download_asset\")}</span>\n      <Download className=\"size-4\" />\n    </Button>\n  );\n\n  return (\n    <>\n      {(downloadUrl || secondaryAction) &&\n        (secondaryAction ? (\n          // Row and panel are grouped into a single child so the parent's\n          // `space-y-4` applies once, to the group. Left as siblings, the\n          // collapsed panel would still count as a spaced child and leave a\n          // phantom gap, and revealing would stack space-y on top of the\n          // panel's own margin.\n          <div>\n            <div className=\"flex flex-wrap items-center gap-3\">\n              {secondaryAction}\n              {downloadButton}\n            </div>\n            {secondaryActionPanel}\n          </div>\n        ) : (\n          downloadButton\n        ))}\n\n      <ShareLinkSection\n        shareLink={shareLink}\n        loading={shareLinkLoading}\n        displayTitle={displayTitle}\n        isVideo={isVideo}\n        relateableId={relateableId}\n        relateableType={relateableType}\n      />\n    </>\n  );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { Spinner, Button } from \"@fluid-app/ui-primitives\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useRenderImage } from \"../../context\";\nimport { Image, Play, FileImage } from \"lucide-react\";\n\nconst PLACEHOLDER_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/placeholder.png\";\n\n// FILTER_TABS moved into component as useMemo for i18n\n\n// Sub-components\n\ninterface FilterTab {\n  id: string;\n  label: string;\n}\n\ninterface FilterTabsProps {\n  tabs: FilterTab[];\n  activeTab: string;\n  onTabChange: (tabId: string) => void;\n}\n\nconst FilterTabs = React.memo(function FilterTabs({\n  tabs,\n  activeTab,\n  onTabChange,\n}: FilterTabsProps): React.JSX.Element {\n  return (\n    <div className=\"mb-3 flex gap-2\">\n      {tabs.map((tab) => (\n        <Button\n          key={tab.id}\n          onClick={() => onTabChange(tab.id)}\n          variant=\"secondary\"\n          size=\"sm\"\n          className={`inline-flex items-center gap-x-1.5 rounded-sm border-none px-2 py-1 text-xs font-medium capitalize shadow-none! transition-colors ${\n            activeTab === tab.id\n              ? \"bg-primary text-primary-foreground ring-primary hover:bg-primary hover:text-primary-foreground hover:ring-primary\"\n              : \"bg-muted text-foreground hover:bg-primary hover:text-primary-foreground hover:ring-primary\"\n          }`}\n        >\n          {tab.label}\n        </Button>\n      ))}\n    </div>\n  );\n});\n\ninterface MediaCardProps {\n  mediaItem: MediaItem;\n  onClick: (mediaItem: MediaItem) => void;\n}\n\nconst MediaCard = React.memo(function MediaCard({\n  mediaItem,\n  onClick,\n}: MediaCardProps) {\n  const renderImage = useRenderImage();\n  const { t } = useShareablesTranslation();\n  const isVideo = mediaItem.kind === \"video\";\n  const isImage = mediaItem.kind === \"image\";\n\n  const MediaIcon = isVideo ? Play : isImage ? FileImage : Image;\n\n  return (\n    <button\n      onClick={() => onClick(mediaItem)}\n      className=\"group flex w-full flex-col gap-2 text-left transition-all\"\n    >\n      {/* Media Image */}\n      <div className=\"bg-background relative aspect-[3/4] w-full overflow-hidden rounded-lg\">\n        {renderImage({\n          src: mediaItem.image_url || PLACEHOLDER_IMAGE,\n          alt: mediaItem.title || t(\"media_type_default\"),\n          fill: true,\n          className: \"object-cover\",\n        })}\n\n        {/* Media Type Icon Badge in top-right corner */}\n        <div className=\"absolute top-2 right-2\">\n          <div className=\"bg-background/90 flex size-8 items-center justify-center rounded-full shadow-md backdrop-blur-sm\">\n            <MediaIcon className=\"size-4 text-gray-900\" />\n          </div>\n        </div>\n      </div>\n\n      {/* Title */}\n      <h3 className=\"text-foreground line-clamp-2 px-1 text-[15px] leading-[1.4] font-semibold\">\n        {mediaItem.title || t(\"common_untitled\")}\n      </h3>\n    </button>\n  );\n});\n\ninterface LoadingStateProps {\n  message?: string;\n}\n\nconst LoadingState = React.memo(function LoadingState({\n  message,\n}: LoadingStateProps) {\n  const { t } = useShareablesTranslation();\n  const resolvedMessage = message ?? t(\"share_loading_media\");\n  return (\n    <div className=\"flex flex-col items-center justify-center gap-3 py-12\">\n      <Spinner className=\"size-8\" />\n      <div className=\"text-muted-foreground text-sm\">{resolvedMessage}</div>\n    </div>\n  );\n});\n\ninterface ErrorStateProps {\n  message?: string;\n}\n\nconst ErrorState = React.memo(function ErrorState({\n  message,\n}: ErrorStateProps) {\n  const { t } = useShareablesTranslation();\n  const resolvedMessage = message ?? t(\"share_media_load_error\");\n  return (\n    <div className=\"flex items-center justify-center\">\n      <div className=\"text-sm text-red-500\">{resolvedMessage}</div>\n    </div>\n  );\n});\n\ninterface EmptyStateProps {\n  message: string;\n  icon?: React.ReactNode;\n  description?: string;\n}\n\nconst EmptyState = React.memo(function EmptyState({\n  message,\n  icon,\n  description,\n}: EmptyStateProps) {\n  return (\n    <div className=\"flex items-center justify-center py-8\">\n      {icon && <div className=\"mb-2 text-gray-400\">{icon}</div>}\n      <div className=\"text-center\">\n        <div className=\"text-sm text-gray-500\">{message}</div>\n        {description && (\n          <div className=\"text-xs text-gray-400\">{description}</div>\n        )}\n      </div>\n    </div>\n  );\n});\n\nconst AnalyticsPlaceholder = React.memo(function AnalyticsPlaceholder() {\n  const { t } = useShareablesTranslation();\n  return (\n    <div className=\"flex flex-1 items-center justify-center\">\n      <div className=\"text-center\">\n        <div className=\"mb-1 text-sm text-gray-500\">\n          {t(\"share_analytics_coming_soon\")}\n        </div>\n        <div className=\"text-xs text-gray-400\">\n          {t(\"share_analytics_description\")}\n        </div>\n      </div>\n    </div>\n  );\n});\n\n// RELATEABLE_TYPE_LABELS moved into component for i18n\n\nconst NoAssetsState = React.memo(function NoAssetsState({\n  relateable_type,\n}: {\n  relateable_type: string;\n}) {\n  const { t } = useShareablesTranslation();\n  const RELATEABLE_TYPE_LABELS: Record<string, string> = useMemo(\n    () => ({\n      Product: t(\"share_type_product\"),\n      Medium: t(\"share_type_media\"),\n      EnrollmentPack: t(\"share_type_enrollment_pack\"),\n      MySite: t(\"share_type_site\"),\n      Library: t(\"share_type_library\"),\n    }),\n    [t],\n  );\n  const label = RELATEABLE_TYPE_LABELS[relateable_type] ?? \"item\";\n  return (\n    <div className=\"flex flex-1 items-center justify-center px-6\">\n      <div className=\"text-center\">\n        <div className=\"mb-2 text-gray-400\">\n          <Image className=\"mx-auto size-12\" />\n        </div>\n        <div className=\"mb-1 text-sm text-gray-500\">\n          {t(\"share_no_marketing_assets\")}\n        </div>\n        <div className=\"text-xs text-gray-400\">\n          {t(\"share_no_associated_media\", { label })}\n        </div>\n      </div>\n    </div>\n  );\n});\n\nexport interface MediaItem {\n  id: number;\n  title: string;\n  image_url?: string | null;\n  kind: string;\n  video_url?: string | null;\n  media_format?: string | null;\n}\n\ninterface MarketingAssetsGridProps {\n  isLoading: boolean;\n  error: Error | null;\n  activeTab: string;\n  onTabChange: (tab: string) => void;\n  mediaItems: MediaItem[];\n  onMediaItemClick: (mediaItem: MediaItem) => void;\n  showEmptyState?: boolean;\n  activeMainTab?: string;\n  relateable_type:\n    | \"Product\"\n    | \"Medium\"\n    | \"EnrollmentPack\"\n    | \"MySite\"\n    | \"Library\";\n}\n\nfunction MarketingAssetsGrid({\n  isLoading,\n  error,\n  activeTab,\n  onTabChange,\n  mediaItems,\n  onMediaItemClick,\n  showEmptyState = false,\n  activeMainTab = \"Related Sharables\",\n  relateable_type,\n}: MarketingAssetsGridProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n\n  const FILTER_TABS: FilterTab[] = useMemo(\n    () => [\n      { id: \"all\", label: t(\"common_all\") },\n      { id: \"images\", label: t(\"media_filter_images\") },\n      { id: \"videos\", label: t(\"media_filter_videos\") },\n    ],\n    [t],\n  );\n\n  const handleMediaItemClick = useCallback(\n    (mediaItem: MediaItem) => {\n      onMediaItemClick(mediaItem);\n    },\n    [onMediaItemClick],\n  );\n\n  // Render content based on current state\n  const renderContent = () => {\n    if (showEmptyState) {\n      return <NoAssetsState relateable_type={relateable_type} />;\n    }\n    if (activeMainTab === \"Analytics\" && relateable_type === \"Medium\") {\n      return <AnalyticsPlaceholder />;\n    }\n\n    if (activeMainTab === \"Related Sharables\") {\n      return (\n        <>\n          {/* Header */}\n          <div className=\"mb-4 px-4 pt-4\">\n            <h2 className=\"text-foreground text-[15px] leading-[1.4] font-semibold\">\n              {t(\"share_related_sharables_count\", {\n                count: String(mediaItems.length),\n              })}\n            </h2>\n          </div>\n\n          {/* Content */}\n          <div className=\"px-4 pb-4\">\n            <FilterTabs\n              tabs={FILTER_TABS}\n              activeTab={activeTab}\n              onTabChange={onTabChange}\n            />\n\n            {isLoading && <LoadingState />}\n            {error && <ErrorState />}\n\n            {!isLoading && !error && mediaItems.length > 0 && (\n              <div className=\"grid grid-cols-2 gap-4 xl:grid-cols-3\">\n                {mediaItems.map((mediaItem: MediaItem) => (\n                  <MediaCard\n                    key={mediaItem.id}\n                    mediaItem={mediaItem}\n                    onClick={handleMediaItemClick}\n                  />\n                ))}\n              </div>\n            )}\n\n            {!isLoading && !error && mediaItems.length === 0 && (\n              <EmptyState\n                message={t(\"share_no_tab_items_found\", {\n                  tab: (\n                    FILTER_TABS.find((tab) => tab.id === activeTab)?.label ??\n                    activeTab\n                  ).toLowerCase(),\n                })}\n              />\n            )}\n          </div>\n        </>\n      );\n    }\n\n    return null;\n  };\n\n  return (\n    <div\n      className=\"hide-scrollbar bg-background flex min-h-0 flex-1 flex-col overflow-y-auto\"\n      style={{ scrollbarWidth: \"none\", msOverflowStyle: \"none\" }}\n    >\n      {/* MainTabs hidden */}\n      {renderContent()}\n    </div>\n  );\n}\n\n// Memoize the entire component to prevent unnecessary re-renders\nexport default React.memo(MarketingAssetsGrid);\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, type ReactNode } from \"react\";\nimport DOMPurify from \"isomorphic-dompurify\";\nimport { Button, Skeleton } from \"@fluid-app/ui-primitives\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { stripTags } from \"../../utils/strip-tags\";\n\nconst RICH_TEXT_ALLOWED_TAGS = [\n  \"a\",\n  \"b\",\n  \"blockquote\",\n  \"br\",\n  \"caption\",\n  \"code\",\n  \"div\",\n  \"em\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"hr\",\n  \"i\",\n  \"img\",\n  \"li\",\n  \"ol\",\n  \"p\",\n  \"pre\",\n  \"s\",\n  \"span\",\n  \"strong\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"tr\",\n  \"u\",\n  \"ul\",\n];\n\nconst RICH_TEXT_ALLOWED_ATTRIBUTES_BY_TAG: Record<\n  string,\n  ReadonlySet<string>\n> = {\n  a: new Set([\"href\", \"rel\", \"target\", \"title\"]),\n  img: new Set([\"alt\", \"height\", \"src\", \"title\", \"width\"]),\n  td: new Set([\"colspan\", \"rowspan\", \"style\"]),\n  th: new Set([\"colspan\", \"rowspan\", \"style\"]),\n};\n\nconst RICH_TEXT_ALLOWED_ATTRIBUTES = [\n  \"alt\",\n  \"colspan\",\n  \"height\",\n  \"href\",\n  \"rel\",\n  \"rowspan\",\n  \"src\",\n  \"style\",\n  \"target\",\n  \"title\",\n  \"width\",\n];\n\nconst TEXT_ALIGN_STYLE_ALLOWED_TAGS = new Set([\n  \"blockquote\",\n  \"div\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"li\",\n  \"p\",\n  \"span\",\n  \"td\",\n  \"th\",\n]);\nconst SAFE_TEXT_ALIGN_VALUES = new Set([\"center\", \"justify\", \"left\", \"right\"]);\nconst SAFE_LINK_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"tel:\"]);\nconst SAFE_IMAGE_PROTOCOLS = new Set([\"http:\", \"https:\"]);\nconst SAFE_LINK_TARGETS = new Set([\"_blank\", \"_self\"]);\nconst HTML_INTEGER_ATTRIBUTE_PATTERN = /^\\d{1,5}$/;\nconst TABLE_SPAN_ATTRIBUTE_PATTERN = /^\\d{1,3}$/;\nconst SAFE_URL_BASE = \"https://fluid.app\";\nconst SAFE_URL_PROTOCOL_PATTERN =\n  /^(?:(?:https?|mailto|tel):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i;\n\nconst SHAREABLE_DESCRIPTION_CLASS_NAME =\n  \"text-foreground/70 text-sm leading-relaxed [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-2 [&_a:hover]:text-primary/80 [&_blockquote]:my-4 [&_blockquote]:border-border [&_blockquote]:text-foreground/80 [&_blockquote]:border-l-2 [&_blockquote]:pl-4 [&_code]:bg-muted [&_code]:text-foreground [&_code]:rounded [&_code]:px-1 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[0.85em] [&_h1]:mt-5 [&_h1]:mb-3 [&_h1]:text-xl [&_h1]:leading-tight [&_h1]:font-semibold [&_h1]:text-foreground [&_h2]:mt-5 [&_h2]:mb-3 [&_h2]:text-lg [&_h2]:leading-tight [&_h2]:font-semibold [&_h2]:text-foreground [&_h3]:mt-4 [&_h3]:mb-2 [&_h3]:text-base [&_h3]:leading-tight [&_h3]:font-semibold [&_h3]:text-foreground [&_h4]:mt-4 [&_h4]:mb-2 [&_h4]:font-semibold [&_h4]:text-foreground [&_h5]:mt-3 [&_h5]:mb-2 [&_h5]:font-semibold [&_h5]:text-foreground [&_h6]:mt-3 [&_h6]:mb-2 [&_h6]:font-semibold [&_h6]:text-foreground [&_hr]:border-border [&_hr]:my-4 [&_img]:my-3 [&_img]:h-auto [&_img]:max-w-full [&_img]:rounded-md [&_li>p]:mb-0 [&_li]:my-1 [&_ol]:my-3 [&_ol]:list-decimal [&_ol]:pl-5 [&_p]:mb-3 [&_p:last-child]:mb-0 [&_pre]:bg-muted [&_pre]:text-foreground [&_pre]:my-4 [&_pre]:overflow-x-auto [&_pre]:rounded-md [&_pre]:p-4 [&_pre]:font-mono [&_pre]:text-xs [&_pre]:break-words [&_pre]:whitespace-pre-wrap [&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_pre_code]:text-xs [&_table]:my-4 [&_table]:w-full [&_table]:border-collapse [&_tbody]:border-border [&_td]:border [&_td]:border-border [&_td]:p-2 [&_tfoot]:border-border [&_th]:border [&_th]:border-border [&_th]:bg-muted/50 [&_th]:p-2 [&_th]:text-left [&_thead]:border-border [&_tr]:border-border [&_ul]:my-3 [&_ul]:list-disc [&_ul]:pl-5\";\n\nexport interface ShareableDetailLayoutProps {\n  /** Loading state — renders a centered spinner in place of the layout. */\n  isLoading?: boolean;\n  /** When true, the not-found state is rendered in place of the layout. */\n  notFound?: boolean;\n  /** Not-found message (defaults to generic). */\n  notFoundMessage?: string;\n  /** Title rendered at the top of the details column. */\n  title: string;\n  /**\n   * Optional raw description (HTML allowed). Rendered as sanitized rich\n   * text with a read-more toggle. Pass `null`/empty string to skip.\n   */\n  description?: string | null;\n  /** Left column (hero image/video). */\n  image: ReactNode;\n  /** Actions slot (AssetActions, download, share, etc.) — rendered under description. */\n  actions?: ReactNode;\n  /** Optional extra header slot rendered between title and description (e.g. price). */\n  meta?: ReactNode;\n  /** Optional body/sections rendered below a divider (e.g. related media, playlist items). */\n  children?: ReactNode;\n  /** Override the container max viewport height. Defaults to `md:h-[calc(100vh-140px)]`. */\n  containerHeightClass?: string;\n}\n\n/**\n * Standard page chrome for shareable detail screens (product/media/playlist).\n * Provides the two-column hero + details layout, loading/not-found states,\n * title, and the read-more description block.\n *\n * Domain-specific chrome (breadcrumbs, header actions) is still wired up by\n * each screen via the shell header context — this layout purposefully does\n * NOT touch the shell header. Dialogs (delete confirmation, etc.) belong to\n * the caller and should be rendered as siblings to this component.\n */\nexport function ShareableDetailLayout({\n  isLoading,\n  notFound,\n  notFoundMessage,\n  title,\n  description,\n  image,\n  actions,\n  meta,\n  children,\n  containerHeightClass = \"md:h-[calc(100vh-140px)]\",\n}: ShareableDetailLayoutProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const resolvedNotFoundMessage =\n    notFoundMessage ?? t(\"common_not_found_default\");\n\n  if (isLoading) {\n    // Mirror the loaded two-column layout so content lands with no shift.\n    return (\n      <div\n        className=\"flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6\"\n        role=\"status\"\n        aria-busy=\"true\"\n      >\n        <div\n          className={`mx-auto flex w-full max-w-[480px] flex-col gap-6 md:max-w-none md:flex-row ${containerHeightClass}`}\n        >\n          <Skeleton className=\"aspect-square w-full rounded-lg md:aspect-auto md:h-full\" />\n          <div className=\"flex w-full flex-col gap-4\">\n            <Skeleton className=\"h-8 w-3/4\" />\n            <Skeleton className=\"h-4 w-full\" />\n            <Skeleton className=\"h-4 w-5/6\" />\n            <Skeleton className=\"h-4 w-2/3\" />\n            <div className=\"flex gap-3 pt-2\">\n              <Skeleton className=\"h-10 w-32\" />\n              <Skeleton className=\"size-10\" />\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  if (notFound) {\n    return (\n      <div className=\"flex flex-col items-center justify-center py-16\">\n        <p className=\"text-destructive text-sm\">{resolvedNotFoundMessage}</p>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"animate-in fade-in flex flex-col gap-4 px-4 py-4 duration-300 motion-reduce:animate-none md:px-10 md:py-6\">\n      <div\n        className={`mx-auto flex w-full max-w-[480px] flex-col gap-6 md:max-w-none md:flex-row ${containerHeightClass}`}\n      >\n        {/* Left column - hero image/video */}\n        <div className=\"aspect-square w-full md:aspect-auto md:h-full\">\n          {image}\n        </div>\n\n        {/* Right column - details */}\n        <div className=\"flex w-full flex-col md:overflow-y-auto\">\n          <div className=\"space-y-4\">\n            <h1 className=\"text-foreground text-[26px] leading-[1.2] font-semibold break-words\">\n              {title}\n            </h1>\n\n            <ShareableDescription html={description} />\n\n            {meta}\n\n            {actions}\n          </div>\n\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nfunction isSafeUrl(\n  value: string,\n  allowedProtocols: ReadonlySet<string>,\n): boolean {\n  try {\n    const url = new URL(value, SAFE_URL_BASE);\n    return allowedProtocols.has(url.protocol);\n  } catch {\n    return false;\n  }\n}\n\nfunction isAllowedRichTextAttribute(\n  tagName: string,\n  attributeName: string,\n): boolean {\n  const normalizedTagName = tagName.toLowerCase();\n  const normalizedAttributeName = attributeName.toLowerCase();\n\n  if (normalizedAttributeName === \"style\") {\n    return TEXT_ALIGN_STYLE_ALLOWED_TAGS.has(normalizedTagName);\n  }\n\n  return (\n    RICH_TEXT_ALLOWED_ATTRIBUTES_BY_TAG[normalizedTagName]?.has(\n      normalizedAttributeName,\n    ) ?? false\n  );\n}\n\nfunction sanitizeTextAlignStyle(styleValue: string): string | null {\n  let sanitizedTextAlign: string | null = null;\n\n  for (const declaration of styleValue.split(\";\")) {\n    const separatorIndex = declaration.indexOf(\":\");\n\n    if (separatorIndex === -1) {\n      continue;\n    }\n\n    const property = declaration.slice(0, separatorIndex).trim().toLowerCase();\n    const value = declaration\n      .slice(separatorIndex + 1)\n      .trim()\n      .toLowerCase();\n\n    if (property === \"text-align\" && SAFE_TEXT_ALIGN_VALUES.has(value)) {\n      sanitizedTextAlign = value;\n    }\n  }\n\n  return sanitizedTextAlign === null\n    ? null\n    : `text-align: ${sanitizedTextAlign};`;\n}\n\nconst sanitizeRichTextElementAttributes = (node: Element) => {\n  const tagName = node.tagName.toLowerCase();\n\n  for (const attr of Array.from(node.attributes)) {\n    const attributeName = attr.name.toLowerCase();\n    const attributeValue = attr.value.trim();\n\n    if (\n      !isAllowedRichTextAttribute(tagName, attributeName) ||\n      attributeValue.includes(\"<\") ||\n      attributeValue.includes(\">\")\n    ) {\n      node.removeAttribute(attr.name);\n      continue;\n    }\n\n    if (\n      tagName === \"a\" &&\n      attributeName === \"href\" &&\n      !isSafeUrl(attributeValue, SAFE_LINK_PROTOCOLS)\n    ) {\n      node.removeAttribute(attr.name);\n      continue;\n    }\n\n    if (\n      tagName === \"img\" &&\n      attributeName === \"src\" &&\n      !isSafeUrl(attributeValue, SAFE_IMAGE_PROTOCOLS)\n    ) {\n      node.removeAttribute(attr.name);\n      continue;\n    }\n\n    if (attributeName === \"target\") {\n      const normalizedTarget = attributeValue.toLowerCase();\n\n      if (SAFE_LINK_TARGETS.has(normalizedTarget)) {\n        node.setAttribute(attr.name, normalizedTarget);\n      } else {\n        node.removeAttribute(attr.name);\n      }\n\n      continue;\n    }\n\n    if (attributeName === \"style\") {\n      const sanitizedStyle = sanitizeTextAlignStyle(attributeValue);\n\n      if (sanitizedStyle === null) {\n        node.removeAttribute(attr.name);\n      } else {\n        node.setAttribute(attr.name, sanitizedStyle);\n      }\n\n      continue;\n    }\n\n    if (\n      (attributeName === \"width\" || attributeName === \"height\") &&\n      !HTML_INTEGER_ATTRIBUTE_PATTERN.test(attributeValue)\n    ) {\n      node.removeAttribute(attr.name);\n      continue;\n    }\n\n    if (\n      (attributeName === \"colspan\" || attributeName === \"rowspan\") &&\n      !TABLE_SPAN_ATTRIBUTE_PATTERN.test(attributeValue)\n    ) {\n      node.removeAttribute(attr.name);\n    }\n  }\n};\n\nconst removeSanitizedImageWithoutSafeSrc = (node: Element) => {\n  if (node.tagName.toLowerCase() !== \"img\") {\n    return;\n  }\n\n  const src = node.getAttribute(\"src\")?.trim();\n\n  if (src && isSafeUrl(src, SAFE_IMAGE_PROTOCOLS)) {\n    return;\n  }\n\n  node.remove();\n};\n\nconst normalizeSanitizedElementAttributes = (node: Element) => {\n  if (node.tagName.toLowerCase() === \"a\") {\n    const target = node.getAttribute(\"target\")?.trim().toLowerCase();\n\n    if (target === \"_blank\") {\n      node.setAttribute(\"target\", \"_blank\");\n      node.setAttribute(\"rel\", \"noopener noreferrer\");\n      return;\n    }\n\n    if (target === \"_self\") {\n      node.setAttribute(\"target\", \"_self\");\n    } else {\n      node.removeAttribute(\"target\");\n    }\n\n    node.removeAttribute(\"rel\");\n    return;\n  }\n\n  removeSanitizedImageWithoutSafeSrc(node);\n};\n\nfunction hasSanitizedImageWithSrc(sanitizedHtml: string): boolean {\n  if (typeof document === \"undefined\") {\n    return /<img\\b[^>]*\\bsrc\\s*=/i.test(sanitizedHtml);\n  }\n\n  const doc = new DOMParser().parseFromString(sanitizedHtml, \"text/html\");\n  return doc.body.querySelector(\"img[src]\") !== null;\n}\n\nfunction hasRenderableSanitizedHtml(sanitizedHtml: string): boolean {\n  const normalizedHtml = sanitizedHtml.trim();\n\n  if (!normalizedHtml) {\n    return false;\n  }\n\n  return (\n    stripTags(normalizedHtml).trim().length > 0 ||\n    hasSanitizedImageWithSrc(normalizedHtml)\n  );\n}\n\nexport function hasRenderableShareableDescriptionHtml(html: string): boolean {\n  return hasRenderableSanitizedHtml(sanitizeShareableDescriptionHtml(html));\n}\n\nexport function sanitizeShareableDescriptionHtml(html: string): string {\n  const sanitizedBody = DOMPurify.sanitize(html, {\n    ALLOWED_ATTR: RICH_TEXT_ALLOWED_ATTRIBUTES,\n    ALLOWED_TAGS: RICH_TEXT_ALLOWED_TAGS,\n    ALLOWED_URI_REGEXP: SAFE_URL_PROTOCOL_PATTERN,\n    ALLOW_ARIA_ATTR: false,\n    ALLOW_DATA_ATTR: false,\n    ADD_DATA_URI_TAGS: [],\n    RETURN_DOM: true,\n  }) as unknown as Element;\n\n  for (const node of Array.from(sanitizedBody.querySelectorAll(\"*\"))) {\n    sanitizeRichTextElementAttributes(node);\n    normalizeSanitizedElementAttributes(node);\n  }\n\n  return sanitizedBody.innerHTML;\n}\n\nexport function ShareableDescription({\n  html,\n  threshold = 150,\n}: {\n  html?: string | null;\n  threshold?: number;\n}): React.JSX.Element | null {\n  const { t } = useShareablesTranslation();\n  const [isExpanded, setIsExpanded] = useState(false);\n  const sanitized = sanitizeShareableDescriptionHtml(html ?? \"\");\n\n  if (!hasRenderableSanitizedHtml(sanitized)) return null;\n\n  const stripped = stripTags(sanitized).trim();\n  const shouldShowReadMore = stripped.length > threshold;\n  return (\n    <div className={SHAREABLE_DESCRIPTION_CLASS_NAME}>\n      <div\n        className={!isExpanded && shouldShowReadMore ? \"line-clamp-3\" : \"\"}\n        dangerouslySetInnerHTML={{ __html: sanitized }}\n      />\n      {shouldShowReadMore && (\n        <Button\n          onClick={() => setIsExpanded((prev) => !prev)}\n          variant=\"ghost\"\n          size=\"sm\"\n          className=\"text-foreground hover:text-foreground/80 mt-1 h-auto p-0 text-xs font-normal underline\"\n        >\n          {isExpanded ? t(\"common_read_less\") : t(\"common_read_more\")}\n        </Button>\n      )}\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useCallback } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { getProduct } from \"@fluid-app/products-api-client\";\nimport {\n  useShareablesApi,\n  useShareablesClient,\n  useShareLink,\n} from \"@fluid-app/shareables-core\";\nimport type { PortalProductResponse } from \"../portal-product-types\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Separator,\n} from \"@fluid-app/ui-primitives\";\nimport { Image as ImageIcon } from \"lucide-react\";\nimport { ScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport SharePageImageDisplay from \"../SharePage/SharePageImageDisplay\";\nimport AssetActions from \"../SharePage/AssetActions\";\nimport MarketingAssetsGrid from \"../ShareablesModal/MarketingAssetsGrid\";\nimport type { MediaItem } from \"../ShareablesModal/MarketingAssetsGrid\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport type { ShareablesParentBreadcrumb } from \"../shareables-parent-breadcrumb-types\";\nimport { ShareableDetailLayout } from \"../shared/ShareableDetailLayout\";\n\nexport interface ProductDetailScreenProps {\n  productId: string;\n  countryCode?: string;\n  fetchProduct?: (id: string | number) => Promise<PortalProductResponse>;\n  onNavigate?: (screen: string, detailId?: string) => void;\n  onBack?: () => void;\n  parentBreadcrumb?: ShareablesParentBreadcrumb | null;\n}\n\nexport function ProductDetailScreen({\n  productId,\n  countryCode,\n  fetchProduct: fetchPortalProduct,\n  onNavigate,\n  onBack,\n  parentBreadcrumb,\n}: ProductDetailScreenProps): React.JSX.Element {\n  const api = useShareablesApi();\n  const client = useShareablesClient();\n  const { navigate } = useShareablesUI();\n  const { t, locale } = useShareablesTranslation();\n  const [activeTab, setActiveTab] = useState(\"all\");\n\n  // Portal-tenant product fetch\n  const { data: portalProductResponse, isLoading: isLoadingPortalProduct } =\n    useQuery({\n      queryKey: [\"portal-products\", \"detail\", productId],\n      queryFn: () => fetchPortalProduct!(productId),\n      enabled: !!fetchPortalProduct,\n    });\n\n  // Legacy product fetch\n  const { data: legacyProductResponse, isLoading: isLoadingLegacyProduct } =\n    useQuery({\n      queryKey: [\"product\", productId],\n      queryFn: () => {\n        // Invariant: `enabled` guarantees `client` is non-null when this runs.\n        if (!client) throw new Error(\"Unreachable: client is null\");\n        return getProduct(client, productId, { country_code: countryCode });\n      },\n      enabled: !fetchPortalProduct && !!client,\n    });\n\n  const isLoadingProduct = fetchPortalProduct\n    ? isLoadingPortalProduct\n    : isLoadingLegacyProduct;\n\n  // Fetch product media\n  const {\n    data: productMediaResponse,\n    isLoading: isLoadingMedia,\n    error: mediaError,\n  } = useQuery({\n    queryKey: [\"media\", \"public\", productId],\n    queryFn: () => api.productMedia.getProductMedia(Number(productId)),\n  });\n\n  // Share link\n  const {\n    shareLink,\n    loading: shareLinkLoading,\n    error: shareLinkError,\n  } = useShareLink({ id: Number(productId) }, \"Product\", undefined, locale);\n\n  // Derive display values from whichever source is available\n  const portalProduct = portalProductResponse?.product;\n  const legacyProduct = legacyProductResponse?.product;\n  const product = portalProduct || legacyProduct;\n\n  const displayTitle = portalProduct?.name || legacyProduct?.title || \"\";\n  const productImage =\n    portalProduct?.images?.[0]?.url || legacyProduct?.image_url || \"\";\n  const displayDescription =\n    portalProduct?.description ||\n    legacyProduct?.description ||\n    legacyProduct?.stripped ||\n    \"\";\n\n  const displayPrice = (() => {\n    if (legacyProduct?.display_price) return legacyProduct.display_price;\n    const price = portalProduct?.price ?? legacyProduct?.price;\n    if (!price) return undefined;\n    const numericPrice = Number(price);\n    if (Number.isNaN(numericPrice)) return `$${price}`;\n    try {\n      return new Intl.NumberFormat(locale.replace(\"_\", \"-\"), {\n        style: \"currency\",\n        currency: portalProduct?.currency || \"USD\",\n      }).format(numericPrice);\n    } catch {\n      return `$${price}`;\n    }\n  })();\n\n  // Filter media items\n  const filteredMediaItems: MediaItem[] = (productMediaResponse?.media ?? [])\n    .filter((item: { kind: string | null }) => {\n      if (activeTab === \"all\") return true;\n      if (activeTab === \"images\") return item.kind === \"image\";\n      if (activeTab === \"videos\") return item.kind === \"video\";\n      return true;\n    })\n    .map(\n      (item: {\n        id: number;\n        title: string;\n        image_url?: string | null;\n        kind: string | null;\n        video_url?: string | null;\n        media_format?: string | null;\n      }) => ({\n        id: item.id,\n        title: item.title,\n        image_url: item.image_url,\n        kind: item.kind || \"\",\n        video_url: item.video_url,\n        media_format: item.media_format,\n      }),\n    );\n\n  const hasMedia = (productMediaResponse?.media?.length || 0) > 0;\n\n  // Media item click\n  const handleMediaItemClick = useCallback(\n    (mediaItem: MediaItem) => {\n      onNavigate?.(\"media\", String(mediaItem.id));\n    },\n    [onNavigate],\n  );\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  (\n                    parentBreadcrumb?.onClick ??\n                    onBack ??\n                    (() => navigate(\"products\"))\n                  )();\n                }}\n              >\n                {t(\"products_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {displayTitle || t(\"products_breadcrumb_fallback\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableDetailLayout\n        isLoading={isLoadingProduct}\n        notFound={!product}\n        notFoundMessage={t(\"products_not_found\")}\n        title={displayTitle}\n        description={displayDescription}\n        image={\n          <div className=\"relative h-full overflow-hidden rounded-2xl\">\n            {!productImage ? (\n              <div className=\"bg-muted flex h-full w-full flex-col items-center justify-center rounded-2xl\">\n                <div className=\"mb-2 text-gray-400\">\n                  <ImageIcon className=\"mx-auto size-12\" />\n                </div>\n                <div className=\"mb-1 text-sm text-gray-500\">\n                  {t(\"products_no_image\")}\n                </div>\n                <div className=\"text-xs text-gray-400\">\n                  {t(\"products_no_media\")}\n                </div>\n              </div>\n            ) : (\n              <SharePageImageDisplay\n                displayImage={productImage}\n                displayTitle={displayTitle}\n                isVideo={false}\n                badgeLabel={t(\"common_product\")}\n                pdfPrevAriaLabel={t(\"pdf_previous_page_aria\")}\n                pdfNextAriaLabel={t(\"pdf_next_page_aria\")}\n                pdfDocumentTitle={t(\"pdf_document_title\")}\n              />\n            )}\n          </div>\n        }\n        meta={\n          displayPrice ? (\n            <div className=\"text-foreground flex items-center gap-2 text-sm\">\n              <span className=\"font-semibold\">{t(\"products_price_label\")}</span>\n              <span>|</span>\n              <span className=\"font-semibold\">{displayPrice}</span>\n            </div>\n          ) : null\n        }\n        actions={\n          <AssetActions\n            downloadUrl={productImage || null}\n            displayTitle={displayTitle}\n            shareLink={shareLinkError ? null : shareLink || null}\n            shareLinkLoading={shareLinkLoading}\n            isVideo={false}\n            relateableId={Number(productId)}\n            relateableType=\"Product\"\n          />\n        }\n      >\n        {/* Divider + Marketing Assets */}\n        <Separator className=\"border-foreground my-4\" />\n\n        <div className=\"hide-scrollbar bg-background h-full overflow-y-auto rounded-lg\">\n          <MarketingAssetsGrid\n            isLoading={isLoadingMedia}\n            error={mediaError as Error | null}\n            activeTab={activeTab}\n            onTabChange={setActiveTab}\n            mediaItems={filteredMediaItems}\n            onMediaItemClick={handleMediaItemClick}\n            showEmptyState={!hasMedia}\n            activeMainTab=\"Related Sharables\"\n            relateable_type=\"Product\"\n          />\n        </div>\n      </ShareableDetailLayout>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n  shareablesKeys,\n  useProductMediaByProductIds,\n  type shareables,\n} from \"@fluid-app/shareables-core\";\nimport { Button, Skeleton } from \"@fluid-app/ui-primitives\";\nimport { ChevronLeft, ChevronRight, Sparkles } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useRenderImage, useShareablesUI } from \"../../context\";\n\nconst DEFAULT_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png\";\n\ntype ProductSharablesMediaItem = shareables.ProductMedia;\n\ntype ProductSharablesProduct = {\n  id: number;\n  title: string;\n  image_url?: string | null;\n};\n\ntype ProductSharablesImageItem = {\n  title?: string | null;\n  image_url?: string | null;\n};\n\nexport interface ProductSharablesCarouselProps {\n  maxProducts?: number;\n}\n\nfunction getProductKitTitle(\n  title: string | null | undefined,\n  fallback: string,\n) {\n  return (title ?? fallback).replace(/\\s+—\\s+Shareable\\s+\\d+$/i, \"\");\n}\n\nfunction getNewestMediaId(\n  items: ProductSharablesMediaItem[] | undefined,\n): number {\n  return items?.reduce((newestId, item) => Math.max(newestId, item.id), 0) ?? 0;\n}\n\nexport function ProductSharablesCarousel({\n  maxProducts = 6,\n}: ProductSharablesCarouselProps): React.JSX.Element | null {\n  const { t, locale } = useShareablesTranslation();\n  const { navigate, searchProducts } = useShareablesUI();\n  const renderImage = useRenderImage();\n  const carouselRef = useRef<HTMLDivElement | null>(null);\n\n  const scrollCarousel = useCallback((direction: -1 | 1) => {\n    const carousel = carouselRef.current;\n    if (!carousel) return;\n\n    carousel.scrollBy({\n      left: direction * Math.min(carousel.clientWidth * 0.85, 720),\n      behavior: \"smooth\",\n    });\n  }, []);\n\n  const { data: productsData, isLoading } = useQuery({\n    queryKey: shareablesKeys.productMedia.carouselProducts(locale, maxProducts),\n    queryFn: async () => {\n      if (!searchProducts) return [];\n\n      const response = await searchProducts(\"\", { limit: maxProducts + 2 });\n      return response.products;\n    },\n    enabled: !!searchProducts,\n    staleTime: 5 * 60 * 1000,\n  });\n\n  const products = useMemo<ProductSharablesProduct[]>(\n    () =>\n      productsData\n        ?.filter((product) => product.id != null)\n        .map((product) => ({\n          id: product.id,\n          title: product.name ?? t(\"common_untitled\"),\n          image_url: product.image_url ?? null,\n        })) ?? [],\n    [productsData, t],\n  );\n\n  const productIds = useMemo(\n    () => products.slice(0, maxProducts).map((product) => product.id),\n    [maxProducts, products],\n  );\n\n  const { data: productMediaByProductId } =\n    useProductMediaByProductIds(productIds);\n\n  const carouselItems = useMemo(\n    () =>\n      products\n        .toSorted(\n          (a, b) =>\n            getNewestMediaId(productMediaByProductId?.[b.id]) -\n            getNewestMediaId(productMediaByProductId?.[a.id]),\n        )\n        .slice(0, maxProducts),\n    [maxProducts, productMediaByProductId, products],\n  );\n\n  const renderCardImage = (\n    item: ProductSharablesImageItem | undefined,\n    className = \"object-cover transition-transform duration-500 group-hover:scale-105\",\n  ) =>\n    renderImage({\n      src: item?.image_url || DEFAULT_IMAGE,\n      alt: item?.title ?? t(\"common_untitled\"),\n      fill: true,\n      className,\n    });\n\n  if (isLoading) {\n    return (\n      <section className=\"space-y-4\">\n        <div className=\"flex flex-col gap-1\">\n          <Skeleton className=\"h-8 w-64\" />\n          <Skeleton className=\"h-4 w-full max-w-96\" />\n        </div>\n        <div className=\"-my-2 flex gap-4 overflow-x-auto py-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\">\n          {Array.from({ length: 3 }, (_, i) => (\n            <Skeleton\n              key={i}\n              className=\"h-[25rem] min-w-[min(78vw,20rem)] rounded-[2rem] md:min-w-[22rem] lg:min-w-[23rem]\"\n            />\n          ))}\n        </div>\n      </section>\n    );\n  }\n\n  if (carouselItems.length === 0) return null;\n\n  return (\n    <section className=\"space-y-4\">\n      <div className=\"flex items-end justify-between gap-4\">\n        <div className=\"flex flex-col gap-1\">\n          <h2 className=\"text-foreground text-2xl font-bold\">\n            {t(\"media_product_carousel_title\")}\n          </h2>\n          <p className=\"text-muted-foreground text-sm\">\n            {t(\"media_product_carousel_description\")}\n          </p>\n        </div>\n        <div className=\"hidden items-center gap-2 sm:flex\">\n          <Button\n            type=\"button\"\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => scrollCarousel(-1)}\n            className=\"bg-background/90 hover:bg-background size-10 rounded-full p-0 shadow-sm\"\n            aria-label={t(\"media_product_carousel_previous\")}\n          >\n            <ChevronLeft className=\"size-4\" />\n          </Button>\n          <Button\n            type=\"button\"\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={() => scrollCarousel(1)}\n            className=\"bg-background/90 hover:bg-background size-10 rounded-full p-0 shadow-sm\"\n            aria-label={t(\"media_product_carousel_next\")}\n          >\n            <ChevronRight className=\"size-4\" />\n          </Button>\n        </div>\n      </div>\n      <div className=\"relative\">\n        <div\n          ref={carouselRef}\n          className=\"-my-2 flex snap-x gap-4 overflow-x-auto py-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\"\n        >\n          {carouselItems.map((item) => {\n            const productTitle = getProductKitTitle(\n              item.title,\n              t(\"common_untitled\"),\n            );\n            const relatedItems =\n              productMediaByProductId?.[item.id]\n                ?.toSorted((a, b) => b.id - a.id)\n                .slice(0, 3) ?? [];\n            const relatedCount =\n              productMediaByProductId?.[item.id]?.length ?? relatedItems.length;\n\n            return (\n              <button\n                key={item.id}\n                type=\"button\"\n                onClick={() => navigate(`product/${item.id}`)}\n                className=\"group focus-visible:ring-ring relative h-[25rem] min-w-[min(78vw,20rem)] snap-start overflow-hidden rounded-[2rem] text-left shadow-sm transition-transform hover:-translate-y-1 focus-visible:ring-2 focus-visible:outline-none md:min-w-[22rem] lg:min-w-[23rem]\"\n              >\n                {renderCardImage(item)}\n                <span className=\"bg-foreground/25 absolute inset-0\" />\n                <span className=\"from-foreground/85 via-foreground/20 absolute inset-0 bg-gradient-to-t to-transparent\" />\n                <span className=\"to-foreground/20 absolute inset-0 bg-gradient-to-b from-transparent\" />\n                <span className=\"absolute inset-0 flex flex-col justify-between p-4\">\n                  <span className=\"text-background flex flex-col items-start gap-1 drop-shadow-sm\">\n                    <span className=\"max-w-[80%] text-base leading-tight font-bold\">\n                      {productTitle}\n                    </span>\n                    <span className=\"text-background/90 flex items-center gap-2 text-sm font-semibold\">\n                      <Sparkles className=\"size-3.5 fill-current\" />\n                      {t(\"media_product_carousel_count\", {\n                        count: relatedCount,\n                      })}\n                    </span>\n                  </span>\n\n                  <span className=\"text-background mx-auto max-w-[14rem] text-center text-3xl leading-none font-bold tracking-normal drop-shadow-md\">\n                    {t(\"media_product_carousel_kit_title\", {\n                      title: productTitle,\n                    })}\n                  </span>\n\n                  <span className=\"mx-auto flex max-w-[13rem] justify-center gap-2\">\n                    {relatedItems.map((relatedItem) => (\n                      <span\n                        key={relatedItem.id}\n                        className=\"bg-background/95 block size-16 shrink-0 overflow-hidden rounded-2xl p-1.5 shadow-md\"\n                      >\n                        <span className=\"relative block size-full overflow-hidden rounded-xl\">\n                          {renderCardImage(relatedItem)}\n                        </span>\n                      </span>\n                    ))}\n                  </span>\n                </span>\n              </button>\n            );\n          })}\n        </div>\n      </div>\n    </section>\n  );\n}\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n  keepPreviousData,\n  useInfiniteQuery,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\nimport { Button, cn, Input, Label, Spinner } from \"@fluid-app/ui-primitives\";\nimport { ListMusic } from \"lucide-react\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { isApiError } from \"@fluid-app/api-client-core\";\nimport { shareablesKeys } from \"@fluid-app/shareables-core\";\nimport { useShareablesApi } from \"@fluid-app/shareables-core/api-context\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { useInfiniteListSentinel } from \"../../hooks/use-infinite-list-sentinel\";\n\nconst PAGE_SIZE = 20;\n\n/**\n * Cache prefix for the picker's own playlist list. Declared once because the\n * query and its invalidation must agree: the list lived under this prefix while\n * invalidation targeted the screen's `[\"playlists\"]` keys, which prefix-matching\n * never reaches. With a 60s staleTime in the portal that meant a playlist just\n * created was missing from the picker on reopen.\n */\nconst PICKER_PLAYLISTS_KEY = [\"add-to-playlist\", \"playlists\"] as const;\n\n/** Content types a playlist accepts. The BFF allows all four; only media is\n *  wired to a trigger today, but the dialog stays type-agnostic so pages and\n *  products need no change here when their surfaces land. */\nexport type PlaylistContentType =\n  | \"Medium\"\n  | \"Page\"\n  | \"Product\"\n  | \"EnrollmentPack\";\n\nexport interface AddToPlaylistDialogProps {\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n  /** The record being added — not fetched here, the caller already has it. */\n  contentId: number;\n  contentType: PlaylistContentType;\n  mode: \"pick\" | \"create\";\n  /**\n   * A playlist an earlier attempt already created for this same content,\n   * where the add that followed failed. Opening with one puts the dialog in\n   * pick mode so the retry adds to that playlist instead of creating another.\n   *\n   * Held by the caller because this dialog unmounts when it closes. The caller\n   * must scope it to the content it was created for — resuming while adding a\n   * different medium would strand the user in pick mode for no visible reason.\n   */\n  resumePlaylistId?: number | null;\n  /** Called once a playlist has been created, before the add is attempted. */\n  onPlaylistCreated?: (playlistId: number) => void;\n  /** Called once the content is in a playlist, so the caller can forget any\n   *  resume target it was holding. */\n  onAdded?: () => void;\n  /**\n   * The control to hand focus back to once the dialog closes.\n   *\n   * Radix returns focus to whatever held it when the dialog opened, but on\n   * both surfaces that element is gone by the time it closes: the row menu's\n   * item unmounts with the menu, and the detail screen's panel pill is made\n   * `inert`. Focusing something unfocusable is a no-op, so focus falls to\n   * `<body>` and a keyboard member restarts from the top of the page. Naming a\n   * control that outlives the dialog is what makes the return trip work.\n   */\n  restoreFocusTo?: React.RefObject<HTMLElement | null>;\n}\n\nexport function AddToPlaylistDialog({\n  open,\n  onOpenChange,\n  contentId,\n  contentType,\n  mode,\n  resumePlaylistId = null,\n  onPlaylistCreated,\n  onAdded,\n  restoreFocusTo,\n}: AddToPlaylistDialogProps): React.JSX.Element {\n  const api = useShareablesApi();\n  const isMobile = useIsMobile();\n  const { t } = useShareablesTranslation();\n  const { showToast } = useShareablesUI();\n  const queryClient = useQueryClient();\n\n  const [search, setSearch] = useState(\"\");\n  const [debouncedSearch, setDebouncedSearch] = useState(\"\");\n  const [title, setTitle] = useState(\"\");\n  // Playlists the API has told us already hold this content, by way of a 409.\n  // There's no way to know up front — the list endpoint doesn't report\n  // membership — so a row is marked only once its add has been refused.\n  const [alreadyHolding, setAlreadyHolding] = useState<ReadonlySet<number>>(\n    new Set(),\n  );\n  // The refusal to announce, captured whole at the moment it happens.\n  // `alreadyHolding` can't carry it: a set has no order, and a live region only\n  // re-announces when its text changes. Holding the title rather than looking\n  // it up per render matters for the same reason — resolving it against the\n  // loaded list let a search that filtered the row out blank the region, and\n  // one that brought it back announce a refusal the member dealt with long ago.\n  const [lastRefusal, setLastRefusal] = useState<{\n    id: number;\n    title: string;\n  } | null>(null);\n  // Set once create mode has actually created a playlist. Cleared on success.\n  // Seeded from the caller so a playlist created before a failed add is still\n  // the target after this dialog has been closed and reopened.\n  const [createdPlaylistId, setCreatedPlaylistId] = useState<number | null>(\n    resumePlaylistId,\n  );\n  // Which face the dialog is showing, so the empty state can flip itself to\n  // create without a round trip through the caller. Seeded from the prop, and\n  // reset by the unmount that closing performs, so the caller's `mode` is\n  // honoured every time the dialog opens.\n  const [internalMode, setInternalMode] = useState<\"pick\" | \"create\">(mode);\n  const restoreTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n  // Create and add are two calls, so a create that succeeds before a failing\n  // add leaves a real playlist behind. Once that has happened, recovery belongs\n  // in pick mode: the playlist exists and the list has been invalidated, so it\n  // is right there to tap. Staying in create mode would offer a button that\n  // makes a second playlist and abandons the first, whether the user retries\n  // now or closes and comes back.\n  const effectiveMode = createdPlaylistId === null ? internalMode : \"pick\";\n\n  // Closing unmounts this dialog — both callers render it conditionally — so\n  // the return trip is scheduled from the unmount cleanup rather than from a\n  // close handler that never runs. The timeout places it after Radix's own\n  // restore attempt, which is deferred by a tick and, per `restoreFocusTo`,\n  // lands on a detached or inert node here.\n  //\n  // The id is held so setup can cancel it. StrictMode runs setup, cleanup,\n  // setup on mount (the portal enables it — see create-portal.tsx), so the\n  // cleanup fires while the dialog is opening and would otherwise queue a\n  // focus on the trigger behind it. Radix re-focuses the content afterwards\n  // and wins today, but that is an ordering accident, not a guarantee.\n  useEffect(() => {\n    if (restoreTimeout.current !== null) {\n      clearTimeout(restoreTimeout.current);\n      restoreTimeout.current = null;\n    }\n    return () => {\n      const trigger = restoreFocusTo?.current;\n      if (!trigger) return;\n      restoreTimeout.current = setTimeout(() => {\n        restoreTimeout.current = null;\n        trigger.focus();\n      }, 0);\n    };\n  }, [restoreFocusTo]);\n\n  // Debounce search input so it doesn't fire a request per keystroke —\n  // mirrors PlaylistsListingScreen's pattern.\n  useEffect(() => {\n    const timer = setTimeout(() => setDebouncedSearch(search), 300);\n    return () => clearTimeout(timer);\n  }, [search]);\n\n  const {\n    data,\n    hasNextPage,\n    isFetchingNextPage,\n    fetchNextPage,\n    error,\n    isPending,\n    isFetching,\n    refetch,\n  } = useInfiniteQuery({\n    queryKey: [...PICKER_PLAYLISTS_KEY, debouncedSearch],\n    enabled: open && effectiveMode === \"pick\",\n    // Hold the previous page while a new search is in flight, so the list\n    // doesn't blank — and read as \"no playlists\" — on every keystroke.\n    placeholderData: keepPreviousData,\n    queryFn: async ({ pageParam }) => {\n      const response = await api.playlists.getPlaylists({\n        \"filter[title]\": debouncedSearch || undefined,\n        \"filter[ownership]\": \"mine\",\n        \"page[cursor]\": pageParam,\n        \"page[limit]\": PAGE_SIZE,\n      });\n      return {\n        playlists: response.playlists,\n        nextCursor: response.meta.pagination.next_cursor,\n      };\n    },\n    getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,\n    initialPageParam: undefined as string | undefined,\n  });\n\n  const playlists = data?.pages.flatMap((page) => page.playlists) ?? [];\n\n  // An untitled playlist falls back to the sentence that names no one, rather\n  // than announcing a verb with a blank subject.\n  const refusalAnnouncement = !lastRefusal\n    ? \"\"\n    : lastRefusal.title\n      ? t(\"playlist_item_already_exists_named\", { title: lastRefusal.title })\n      : t(\"playlist_item_already_exists\");\n\n  const sentinelRef = useInfiniteListSentinel({\n    hasNextPage,\n    isFetchingNextPage,\n    fetchNextPage,\n    error,\n  });\n\n  // No `order`: the API appends to the end of the playlist when the position\n  // is omitted, which is the agreed behavior for adds made while browsing.\n  // Sending an explicit 0 is rejected outright (positions are 1-based).\n  const addItem = (playlistId: number) =>\n    api.playlists.addItemToPlaylist(playlistId, {\n      items: [{ relateable_type: contentType, relateable_id: contentId }],\n    });\n\n  /** The row being added, carried so a refusal can name it. Looking the title\n   *  back up on failure reads a list that may have moved on under the request\n   *  — a debounced search resolving, a background refetch — and announces a\n   *  refusal with no subject. */\n  type AddTarget = { id: number; title: string };\n\n  const invalidate = () => {\n    // Both surfaces: this picker, and the playlists screen behind it.\n    void queryClient.invalidateQueries({ queryKey: PICKER_PLAYLISTS_KEY });\n    void queryClient.invalidateQueries({\n      queryKey: shareablesKeys.playlists.all,\n    });\n  };\n\n  const addMutation = useMutation({\n    mutationFn: ({ id }: AddTarget) => addItem(id),\n    onSuccess: () => {\n      onAdded?.();\n      showToast({ type: \"success\", title: t(\"playlist_add_item_success\") });\n      invalidate();\n      onOpenChange(false);\n    },\n    onError: (error: Error, { id: playlistId, title }: AddTarget) => {\n      // 409 means this content is already in that playlist. Blocked inline on\n      // the row rather than as a toast, and the dialog stays open so the user\n      // can pick a different playlist without starting over.\n      if (isApiError(error) && error.status === 409) {\n        setAlreadyHolding((previous) => new Set(previous).add(playlistId));\n        setLastRefusal({ id: playlistId, title });\n        // A refusal from the playlist we were resuming means the content is in\n        // it after all, so the recovery target has done its job — otherwise the\n        // caller holds it forever and every later New playlist for this content\n        // opens the picker instead. A refusal from any *other* playlist says\n        // nothing about the resumed one, so that target stands.\n        //\n        // Released here as well as at the caller: leaving it set pins\n        // `effectiveMode` to pick for the life of the dialog, which withholds\n        // the empty state's create button and rebuilds the dead end this\n        // branch exists to remove. `createMutation` already clears it on the\n        // same reasoning.\n        if (playlistId === createdPlaylistId) {\n          setCreatedPlaylistId(null);\n          // Pinned to pick by that same target, so releasing it would hand the\n          // face back to whatever `internalMode` was last set to — the create\n          // form the member left behind, title still filled in. They are\n          // looking at the picker; a refusal is no reason to move them.\n          setInternalMode(\"pick\");\n          onAdded?.();\n        }\n        return;\n      }\n      showToast({ type: \"error\", title: t(\"playlist_add_item_error\"), error });\n    },\n  });\n\n  const createMutation = useMutation({\n    mutationFn: async (newTitle: string) => {\n      const created = await api.playlists.createPlaylist({\n        playlist: { title: newTitle },\n      });\n      // Recorded before the add so a failure leaves the dialog in pick mode\n      // with the new playlist selectable, per `effectiveMode` above, and the\n      // caller keeps the target for after this dialog closes.\n      setCreatedPlaylistId(created.playlist.id);\n      // Selectable only if it is on screen. Create is reachable from a search\n      // that matched nothing, and that term still filters the list the dialog\n      // drops back to — so the playlist just made would be filtered out, the\n      // no-match message would render over it, and the way forward would be\n      // clearing a box nothing points at.\n      setSearch(\"\");\n      setDebouncedSearch(\"\");\n      onPlaylistCreated?.(created.playlist.id);\n      await addItem(created.playlist.id);\n    },\n    onSuccess: () => {\n      setCreatedPlaylistId(null);\n      onAdded?.();\n      showToast({ type: \"success\", title: t(\"playlist_add_item_success\") });\n      onOpenChange(false);\n    },\n    onError: (error: Error) => {\n      // A 409 here means the playlist we just created already holds the\n      // content, so the request achieved what it set out to. Treated as\n      // success, releasing the target — otherwise this is the one path where\n      // that status means \"generic failure\" while addMutation reads it as\n      // \"already there\", and the caller keeps a target that is spent.\n      if (isApiError(error) && error.status === 409) {\n        setCreatedPlaylistId(null);\n        onAdded?.();\n        showToast({ type: \"success\", title: t(\"playlist_add_item_success\") });\n        onOpenChange(false);\n        return;\n      }\n      showToast({ type: \"error\", title: t(\"playlist_add_item_error\"), error });\n    },\n    // Not onSuccess: the playlist can be created successfully even when the\n    // subsequent addItem call fails, so invalidation must run on both paths\n    // — otherwise a playlist created before the add failed would be missing\n    // from a warm cache.\n    onSettled: () => {\n      invalidate();\n    },\n  });\n\n  return (\n    <ResponsiveDialog\n      open={open}\n      onOpenChange={onOpenChange}\n      presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n      title={\n        effectiveMode === \"create\"\n          ? t(\"playlist_create_title\")\n          : t(\"media_add_to_playlist\")\n      }\n    >\n      {effectiveMode === \"create\" ? (\n        <div className=\"flex flex-col gap-4\">\n          <Label htmlFor=\"playlist-title\">\n            {t(\"playlist_create_name_label\")}\n          </Label>\n          <Input\n            id=\"playlist-title\"\n            value={title}\n            onChange={(event) => setTitle(event.target.value)}\n          />\n          <Button\n            disabled={!title.trim() || createMutation.isPending}\n            onClick={() => createMutation.mutate(title.trim())}\n          >\n            {t(\"playlist_create_submit\")}\n          </Button>\n          {/* Only when the dialog was opened on the picker. Arriving here is\n              then something the member did — off an empty state, possibly a\n              mistyped search — and the way back is the picker they came from.\n              A dialog opened straight into create has no picker behind it, so\n              there is nowhere to return to and no control. */}\n          {mode === \"pick\" && (\n            <Button\n              variant=\"outline\"\n              disabled={createMutation.isPending}\n              onClick={() => setInternalMode(\"pick\")}\n            >\n              {t(\"common_cancel\")}\n            </Button>\n          )}\n        </div>\n      ) : (\n        <div className=\"flex flex-col gap-2\">\n          <Input\n            value={search}\n            placeholder={t(\"playlist_picker_search\")}\n            // Named here as well as by the placeholder, which stops being the\n            // field's accessible name as soon as it holds content.\n            aria-label={t(\"playlist_picker_search\")}\n            onChange={(event) => setSearch(event.target.value)}\n          />\n          {/* A refusal is reported on the row, which is right for anyone who\n              can see it, but a member driving the dialog from the keyboard has\n              no reason to re-read a row they just left. Repeating it here says\n              so out loud. Rendered in every pick-mode state so the region is\n              already in the accessibility tree when its text arrives. */}\n          <p\n            role=\"status\"\n            aria-live=\"polite\"\n            data-testid=\"playlist-refusal-announcement\"\n            className=\"sr-only\"\n          >\n            {refusalAnnouncement}\n          </p>\n          {/* `keepPreviousData` holds the last page while a new search is in\n              flight, so an in-flight fetch over an empty previous result would\n              otherwise render \"No playlists yet\" — the exact claim this dialog\n              is being fixed for — in the beat between clearing a search and its\n              rows arriving. */}\n          {isPending || (isFetching && playlists.length === 0) ? (\n            <div className=\"flex justify-center py-6\">\n              <Spinner className=\"size-5\" />\n            </div>\n          ) : error ? (\n            /* A failed list previously fell through to \"no playlists yet\",\n               telling a member with twenty of them they had none, with no way\n               to try again. */\n            <div className=\"flex flex-col items-start gap-2 py-2\">\n              <p className=\"text-muted-foreground text-sm\">\n                {t(\"common_load_error_default\")}\n              </p>\n              <Button variant=\"outline\" size=\"sm\" onClick={() => refetch()}>\n                {t(\"common_retry\")}\n              </Button>\n            </div>\n          ) : playlists.length === 0 ? (\n            /* Two different situations, and one message used to cover both:\n               a member with twenty playlists who searched for something none\n               of them match was told they had none.\n\n               Either way the list is empty, and without a create control here\n               that is a dead end: the sibling \"New playlist\" action sits on\n               the menu *behind* this dialog, so the way forward is to close\n               what you just opened. */\n            <div className=\"flex flex-col items-start gap-3 py-2\">\n              <p className=\"text-muted-foreground text-sm\">\n                {debouncedSearch\n                  ? t(\"playlist_picker_no_matches\")\n                  : t(\"playlist_picker_empty\")}\n              </p>\n              {/* Withheld while a created-but-unadded playlist is waiting.\n                  `effectiveMode` pins the dialog to pick until that add lands,\n                  so the button could set the mode but never change the face —\n                  an affordance that looks live and does nothing. It is also the\n                  right answer on its own terms: a second playlist here would\n                  abandon the one already made. Clearing the search brings the\n                  waiting playlist back into view. */}\n              {createdPlaylistId === null && (\n                <Button\n                  variant=\"outline\"\n                  size=\"sm\"\n                  onClick={() => setInternalMode(\"create\")}\n                >\n                  {t(\"media_new_playlist\")}\n                </Button>\n              )}\n            </div>\n          ) : (\n            playlists.map((playlist) => {\n              const isAlreadyHolding = alreadyHolding.has(playlist.id);\n              const isBlocked = addMutation.isPending || isAlreadyHolding;\n\n              return (\n                <button\n                  key={playlist.id}\n                  type=\"button\"\n                  className={cn(\n                    \"hover:bg-muted flex items-center gap-3 rounded p-2 text-left\",\n                    isBlocked && \"opacity-60 hover:bg-transparent\",\n                  )}\n                  // `aria-disabled`, not `disabled`. The native attribute takes\n                  // the row out of the tab order and drops the focus sitting on\n                  // it, which throws a keyboard member clean out of the open\n                  // dialog at the exact moment the row starts carrying the one\n                  // explanation of what just happened. This keeps the row\n                  // reachable and readable; the guard in the handler is what\n                  // actually refuses the press.\n                  aria-disabled={isBlocked || undefined}\n                  // A pointer press on a button focuses it, which pulls focus\n                  // out of the search field mid-search — and a refusal is the\n                  // one outcome that leaves the dialog open with the member\n                  // still wanting to type. Rows are options over a search box,\n                  // so they behave like one: the press acts without taking\n                  // focus, and whatever the member was using keeps it. Nothing\n                  // changes for the keyboard, where focus is already on the row\n                  // before Enter and stays there to carry the refusal.\n                  onMouseDown={(event) => event.preventDefault()}\n                  onClick={() => {\n                    if (isBlocked) return;\n                    addMutation.mutate({\n                      id: playlist.id,\n                      title: playlist.title ?? \"\",\n                    });\n                  }}\n                >\n                  {playlist.image_url ? (\n                    <img\n                      src={playlist.image_url}\n                      alt=\"\"\n                      aria-hidden=\"true\"\n                      loading=\"lazy\"\n                      className=\"bg-muted size-10 shrink-0 rounded object-cover\"\n                    />\n                  ) : (\n                    // Placeholder keeps every row the same height whether or not\n                    // the playlist has a cover, so the list doesn't jitter.\n                    <div\n                      aria-hidden=\"true\"\n                      className=\"bg-muted text-muted-foreground flex size-10 shrink-0 items-center justify-center rounded\"\n                    >\n                      <ListMusic className=\"size-4\" />\n                    </div>\n                  )}\n                  <span className=\"flex min-w-0 flex-col\">\n                    <span className=\"truncate\">{playlist.title}</span>\n                    {/* Only rendered on refusal. There is no second line\n                      otherwise: `filter[ownership]` is `mine`, so every row\n                      here belongs to the member and saying so adds nothing.\n                      `company_library` was never populated on this path\n                      either, so the admin half could not render. */}\n                    {isAlreadyHolding && (\n                      <span className=\"text-muted-foreground text-xs\">\n                        {t(\"playlist_item_already_exists\")}\n                      </span>\n                    )}\n                  </span>\n                </button>\n              );\n            })\n          )}\n          {isFetchingNextPage && (\n            <div className=\"flex justify-center py-2\">\n              <Spinner className=\"size-4\" />\n            </div>\n          )}\n          {/* 1px sentinel — fetches the next page when scrolled into view. */}\n          <div ref={sentinelRef} />\n        </div>\n      )}\n    </ResponsiveDialog>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useRef, useState } from \"react\";\nimport {\n  Button,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { MoreVertical, Trash2 } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\n/** Three-dot dropdown attached to each media row/card.\n *\n *  Two gates, because the actions aren't equivalent:\n *\n *  - The playlist actions follow `canCuratePlaylists`. They don't mutate the\n *    media and every member type has playlists of their own, so customers get\n *    them too.\n *  - \"Delete\" follows `canDelete`, since deleting mutates the media and a user\n *    must not delete media they don't own.\n *\n *  Both playlist handlers are handed this menu's own trigger. Selecting an\n *  item closes the menu, so the item that had focus is gone by the time the\n *  dialog it opened closes again; the trigger is the nearest control that\n *  outlives both, and the caller passes it on as the dialog's\n *  `restoreFocusTo`.\n */\nexport function MediaRowActionsMenu({\n  canCuratePlaylists = true,\n  canDelete,\n  onDelete,\n  onAddToPlaylist,\n  onNewPlaylist,\n}: {\n  /** Defaults to `true` so hosts that never opted out keep the actions. */\n  canCuratePlaylists?: boolean;\n  canDelete: boolean;\n  onDelete: () => void;\n  /** Receives this menu's trigger, so the dialog the action opens can hand\n   *  focus back to it on close. */\n  onAddToPlaylist: (trigger: HTMLButtonElement | null) => void;\n  onNewPlaylist: (trigger: HTMLButtonElement | null) => void;\n}): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n  const [isOpen, setIsOpen] = useState(false);\n  const triggerRef = useRef<HTMLButtonElement>(null);\n  if (isMobile) {\n    return (\n      <>\n        <Button\n          ref={triggerRef}\n          variant=\"ghost\"\n          size=\"sm\"\n          className=\"bg-background/80 hover:bg-background size-8 p-0 backdrop-blur-sm\"\n          onClick={(event) => {\n            event.stopPropagation();\n            setIsOpen(true);\n          }}\n          aria-label={t(\"media_actions_aria\")}\n        >\n          <MoreVertical className=\"size-4\" />\n        </Button>\n        <MobileActionSheet\n          open={isOpen}\n          onOpenChange={setIsOpen}\n          title={t(\"media_actions_aria\")}\n          actions={[\n            ...(canCuratePlaylists\n              ? [\n                  {\n                    id: \"add-to-playlist\",\n                    label: t(\"media_add_to_playlist\"),\n                    onSelect: () => onAddToPlaylist(triggerRef.current),\n                  },\n                  {\n                    id: \"new-playlist\",\n                    label: t(\"media_new_playlist\"),\n                    onSelect: () => onNewPlaylist(triggerRef.current),\n                  },\n                ]\n              : []),\n            ...(canDelete\n              ? [\n                  {\n                    id: \"delete\",\n                    label: t(\"common_delete\"),\n                    variant: \"destructive\" as const,\n                    onSelect: onDelete,\n                  },\n                ]\n              : []),\n          ]}\n        />\n      </>\n    );\n  }\n  return (\n    <DropdownMenu>\n      <DropdownMenuTrigger asChild>\n        <Button\n          ref={triggerRef}\n          variant=\"ghost\"\n          size=\"sm\"\n          className=\"bg-background/80 hover:bg-background size-8 p-0 backdrop-blur-sm\"\n          onClick={(e) => {\n            // Prevent the card/row click-through since the card wraps the\n            // whole area with its own navigation handler.\n            e.stopPropagation();\n          }}\n          aria-label={t(\"media_actions_aria\")}\n        >\n          <MoreVertical className=\"size-4\" />\n        </Button>\n      </DropdownMenuTrigger>\n      <DropdownMenuContent align=\"end\" onClick={(e) => e.stopPropagation()}>\n        {canCuratePlaylists && (\n          <>\n            <DropdownMenuItem\n              onClick={() => onAddToPlaylist(triggerRef.current)}\n            >\n              {t(\"media_add_to_playlist\")}\n            </DropdownMenuItem>\n            <DropdownMenuItem onClick={() => onNewPlaylist(triggerRef.current)}>\n              {t(\"media_new_playlist\")}\n            </DropdownMenuItem>\n          </>\n        )}\n        {canDelete && (\n          <DropdownMenuItem\n            onClick={onDelete}\n            className=\"text-destructive focus:text-destructive\"\n          >\n            <Trash2 className=\"mr-2 size-4\" />\n            {t(\"common_delete\")}\n          </DropdownMenuItem>\n        )}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { Tabs, TabsList, TabsTrigger, cn } from \"@fluid-app/ui-primitives\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\nexport type OwnerFilter = \"all\" | \"mine\" | \"company\";\n\nexport const OWNER_FILTER_TABS_FULL_WIDTH_ROOT_CLASS = \"max-sm:w-full\";\nexport const OWNER_FILTER_TABS_FULL_WIDTH_LIST_CLASS =\n  \"max-sm:grid max-sm:w-full max-sm:grid-cols-3\";\nexport const OWNER_FILTER_TABS_FULL_WIDTH_TRIGGER_CLASS =\n  \"max-sm:min-w-0 max-sm:truncate max-sm:px-1.5\";\n\nexport function getFilteredEmptyMessage({\n  searchTerm,\n  ownerFilter,\n  hasOtherFilters = false,\n  entityName = \"items\",\n  defaultMessage,\n  messages,\n  t,\n}: {\n  searchTerm: string;\n  ownerFilter: OwnerFilter;\n  hasOtherFilters?: boolean;\n  entityName?: string;\n  defaultMessage?: string;\n  messages?: {\n    filterSearchNoResults: string;\n    searchNoResults: string;\n    filterNoResults: string;\n    emptyDefault?: string;\n  };\n  t?: ReturnType<typeof useShareablesTranslation>[\"t\"];\n}): string {\n  const isFiltered = ownerFilter !== \"all\" || hasOtherFilters;\n  if (messages) {\n    if (searchTerm && isFiltered) return messages.filterSearchNoResults;\n    if (searchTerm) return messages.searchNoResults;\n    if (isFiltered) return messages.filterNoResults;\n    return (\n      defaultMessage ??\n      messages.emptyDefault ??\n      t?.(\"filter_empty_default\") ??\n      \"Nothing available at the moment.\"\n    );\n  }\n  if (searchTerm && isFiltered)\n    return (\n      t?.(\"filter_empty_search_filtered\", { entityName, searchTerm }) ??\n      `No ${entityName} match \"${searchTerm}\" with the current filters. Try a different search term or switch to \"All\".`\n    );\n  if (searchTerm)\n    return (\n      t?.(\"filter_empty_search\", { entityName, searchTerm }) ??\n      `No ${entityName} match \"${searchTerm}\". Try a different search term.`\n    );\n  if (isFiltered)\n    return (\n      t?.(\"filter_empty_filtered\", { entityName }) ??\n      `No matching ${entityName} for the current filters.`\n    );\n  return (\n    defaultMessage ??\n    t?.(\"filter_empty_default\") ??\n    \"Nothing available at the moment.\"\n  );\n}\n\nexport interface OwnerFilterTabsProps {\n  value: OwnerFilter;\n  onValueChange: (value: OwnerFilter) => void;\n  myLabel?: string;\n  fullWidthOnMobile?: boolean;\n}\n\nexport function OwnerFilterTabs({\n  value,\n  onValueChange,\n  myLabel,\n  fullWidthOnMobile = false,\n}: OwnerFilterTabsProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  return (\n    <Tabs\n      value={value}\n      onValueChange={(v) => onValueChange(v as OwnerFilter)}\n      className={cn(\n        fullWidthOnMobile && OWNER_FILTER_TABS_FULL_WIDTH_ROOT_CLASS,\n      )}\n    >\n      <TabsList\n        className={cn(\n          fullWidthOnMobile && OWNER_FILTER_TABS_FULL_WIDTH_LIST_CLASS,\n        )}\n      >\n        <TabsTrigger\n          value=\"all\"\n          className={cn(\n            fullWidthOnMobile && OWNER_FILTER_TABS_FULL_WIDTH_TRIGGER_CLASS,\n          )}\n        >\n          {t(\"common_all\")}\n        </TabsTrigger>\n        <TabsTrigger\n          value=\"mine\"\n          className={cn(\n            fullWidthOnMobile && OWNER_FILTER_TABS_FULL_WIDTH_TRIGGER_CLASS,\n          )}\n        >\n          {myLabel ?? t(\"common_mine\")}\n        </TabsTrigger>\n        <TabsTrigger\n          value=\"company\"\n          className={cn(\n            fullWidthOnMobile && OWNER_FILTER_TABS_FULL_WIDTH_TRIGGER_CLASS,\n          )}\n        >\n          {t(\"common_company\")}\n        </TabsTrigger>\n      </TabsList>\n    </Tabs>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\n\nexport const SHAREABLE_FILTER_BAR_CLASS =\n  \"flex flex-col gap-3 sm:flex-row sm:items-center\";\nexport const SHAREABLE_FILTER_TABS_CLASS = \"w-full overflow-x-auto sm:w-auto\";\nexport const SHAREABLE_FILTER_CONTROLS_CLASS =\n  \"flex w-full items-center gap-2 sm:ml-auto sm:w-auto\";\nexport const SHAREABLE_SEARCH_SORT_CLASS =\n  \"min-w-0 flex-1 sm:w-full sm:max-w-sm\";\n\nexport interface ShareableFilterBarLayoutProps {\n  tabs: React.ReactNode;\n  controls: React.ReactNode;\n}\n\n/**\n * Filter bar for shareable listing screens with ownership tabs. Stacks the\n * tabs above the search/sort controls on mobile so they stop competing for\n * horizontal space, and collapses back to a single row from `sm` up.\n *\n * Wrap the search control in `SHAREABLE_SEARCH_SORT_CLASS` so it takes the\n * width left over by the adjacent buttons.\n */\nexport function ShareableFilterBarLayout({\n  tabs,\n  controls,\n}: ShareableFilterBarLayoutProps): React.JSX.Element {\n  return (\n    <div className={SHAREABLE_FILTER_BAR_CLASS}>\n      <div className={SHAREABLE_FILTER_TABS_CLASS}>{tabs}</div>\n      <div className={SHAREABLE_FILTER_CONTROLS_CLASS}>{controls}</div>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useMemo, useCallback, useRef } from \"react\";\nimport {\n  useInfiniteQuery,\n  useQueryClient,\n  useMutation,\n  keepPreviousData,\n} from \"@tanstack/react-query\";\nimport {\n  useShareablesApi,\n  useRepContext,\n  shareablesKeys,\n} from \"@fluid-app/shareables-core\";\nimport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbPage,\n  Badge,\n  Button,\n  DialogFooter,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n  Spinner,\n} from \"@fluid-app/ui-primitives\";\nimport { SearchSort } from \"@fluid-app/ui-components/components/SearchSort\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { Check, Filter, MoreVertical, Plus, Trash2 } from \"lucide-react\";\nimport {\n  ScreenHeaderActions,\n  ScreenHeaderBreadcrumbs,\n} from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { ProductSharablesCarousel } from \"../MediaShare/ProductSharablesCarousel\";\nimport ShareItemCard from \"../MediaShare/ShareItemCard\";\nimport { useShareablesUI, useCanCuratePlaylists } from \"../../context\";\nimport { AddToPlaylistDialog } from \"../media/AddToPlaylistDialog\";\nimport { MediaRowActionsMenu } from \"../media/MediaRowActionsMenu\";\nimport { useInfiniteListSentinel } from \"../../hooks/use-infinite-list-sentinel\";\nimport {\n  OwnerFilterTabs,\n  getFilteredEmptyMessage,\n  type OwnerFilter,\n} from \"../OwnerFilterTabs\";\nimport {\n  ShareableListLayout,\n  SHAREABLE_GRID_CLASS,\n} from \"../shared/ShareableListLayout\";\nimport {\n  ShareableListRow,\n  SHAREABLE_LIST_CLASS,\n} from \"../shared/ShareableListRow\";\nimport { ViewModeToggle, type ViewMode } from \"../shared/ViewModeToggle\";\nimport {\n  ShareableFilterBarLayout,\n  SHAREABLE_SEARCH_SORT_CLASS,\n} from \"../shared/ShareableFilterBarLayout\";\n\nconst PAGE_SIZE = 24;\n\nfunction getMediaKindLabel(\n  kind: string | null,\n  labels: { video: string; pdf: string; image: string },\n): string {\n  switch (kind) {\n    case \"video\":\n      return labels.video;\n    case \"pdf\":\n      return labels.pdf;\n    default:\n      return labels.image;\n  }\n}\n\nexport interface MediaListingScreenProps {\n  onNavigate?: (screen: string, detailId?: string) => void;\n  showProductSharablesCarousel?: boolean;\n}\n\ntype KindFilter = \"all\" | \"image\" | \"video\" | \"pdf\";\n\nconst KIND_FILTER_OPTIONS = [\n  { value: \"all\", labelKey: \"media_filter_all_types\" },\n  { value: \"image\", labelKey: \"media_filter_images\" },\n  { value: \"video\", labelKey: \"media_filter_videos\" },\n  { value: \"pdf\", labelKey: \"media_filter_pdfs\" },\n] as const satisfies readonly { value: KindFilter; labelKey: string }[];\n\nexport function MediaListingScreen({\n  showProductSharablesCarousel = false,\n}: MediaListingScreenProps): React.JSX.Element {\n  const { t, locale } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n  const api = useShareablesApi();\n  const repContext = useRepContext();\n  const queryClient = useQueryClient();\n  const { navigate, readOnly, showToast } = useShareablesUI();\n  const canCuratePlaylists = useCanCuratePlaylists();\n  // Playlists created for a medium whose add then failed, by medium id. Kept\n  // here rather than in the dialog because the dialog unmounts when it closes.\n  //\n  // Keyed rather than a single slot: this screen lists many media, so a second\n  // medium hitting the same create-then-fail sequence used to overwrite the\n  // first medium's target and let it create a duplicate. Bounded by the media\n  // a member opens the dialog for in one session.\n  const [pendingCreates, setPendingCreates] = useState<Record<number, number>>(\n    {},\n  );\n\n  const [pendingDeleteId, setPendingDeleteId] = useState<number | null>(null);\n  const [playlistDialog, setPlaylistDialog] = useState<{\n    mediaId: number;\n    mode: \"pick\" | \"create\";\n  } | null>(null);\n  // The row menu trigger that opened the dialog, so closing the dialog puts\n  // focus back on the row a member was working through rather than at the top\n  // of the page. A ref, not state: only the dialog's unmount reads it, and\n  // re-rendering the whole listing to record a focus target would be waste.\n  //\n  // The menu hands its own trigger over rather than taking a ref from here,\n  // because a ref passed down would be one ref shared by every row and would\n  // end up holding whichever mounted last. The detail screen has a single\n  // \"Add To\" toggle and so can own its ref directly.\n  const playlistDialogTriggerRef = useRef<HTMLButtonElement | null>(null);\n  const openPlaylistDialog = useCallback(\n    (mediaId: number, mode: \"pick\" | \"create\") =>\n      (trigger: HTMLButtonElement | null) => {\n        playlistDialogTriggerRef.current = trigger;\n        setPlaylistDialog({ mediaId, mode });\n      },\n    [],\n  );\n\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [debouncedSearch, setDebouncedSearch] = useState(\"\");\n  const [sortValue, setSortValue] = useState(\"newest\");\n  const [viewMode, setViewMode] = useState<ViewMode>(\"grid\");\n  const [ownerFilter, setOwnerFilter] = useState<OwnerFilter>(\"all\");\n  const [kindFilter, setKindFilter] = useState<KindFilter>(\"all\");\n  const [isKindFilterOpen, setIsKindFilterOpen] = useState(false);\n\n  // Debounce search input\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setDebouncedSearch(searchTerm);\n    }, 300);\n    return () => clearTimeout(timer);\n  }, [searchTerm]);\n\n  const { mutate: deleteMedia, isPending: isDeleting } = useMutation({\n    mutationFn: (id: number) => api.media.deleteMedia(id),\n    onSuccess: () => {\n      showToast({ title: t(\"media_delete_success\"), type: \"success\" });\n      void queryClient.invalidateQueries({\n        queryKey: shareablesKeys.media.all,\n      });\n      setPendingDeleteId(null);\n    },\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"media_delete_error\", { message: error.message }),\n        type: \"error\",\n        error,\n      });\n      setPendingDeleteId(null);\n    },\n  });\n  const confirmDelete = useCallback(() => {\n    if (pendingDeleteId != null) deleteMedia(pendingDeleteId);\n  }, [pendingDeleteId, deleteMedia]);\n\n  // Map the UI sort value to the BFF's sort enum. The BFF currently supports\n  // only title_asc / title_desc; for \"newest\" we omit `sort` so the server\n  // applies its own default (newest first).\n  const bffSort: \"title_asc\" | \"title_desc\" | undefined =\n    sortValue === \"title_asc\"\n      ? \"title_asc\"\n      : sortValue === \"title_desc\"\n        ? \"title_desc\"\n        : undefined;\n\n  // Map the UI kind filter to the BFF enum; \"all\" becomes `undefined`.\n  const bffKind: \"image\" | \"video\" | \"pdf\" | undefined =\n    kindFilter === \"all\" ? undefined : kindFilter;\n\n  const {\n    data,\n    isLoading,\n    isFetchingNextPage,\n    hasNextPage,\n    fetchNextPage,\n    error,\n  } = useInfiniteQuery({\n    queryKey: [\n      ...shareablesKeys.media.list(\n        debouncedSearch,\n        sortValue === \"title_desc\",\n        repContext,\n        ownerFilter,\n        locale,\n      ),\n      sortValue,\n      kindFilter,\n    ],\n    queryFn: async ({ pageParam }) => {\n      const response = await api.media.list({\n        \"filter[title]\": debouncedSearch || undefined,\n        \"filter[ownership]\": ownerFilter,\n        \"filter[content_format]\": bffKind,\n        \"page[cursor]\": pageParam,\n        \"page[limit]\": PAGE_SIZE,\n        sort: bffSort,\n        language_iso: locale,\n      });\n      return response;\n    },\n    getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,\n    initialPageParam: undefined as string | undefined,\n    placeholderData: keepPreviousData,\n  });\n\n  const filteredItems = useMemo(\n    () => data?.pages.flatMap((p) => p.media) ?? [],\n    [data?.pages],\n  );\n\n  const sentinelRef = useInfiniteListSentinel({\n    hasNextPage,\n    isFetchingNextPage,\n    fetchNextPage,\n    error,\n  });\n\n  const kindFilterOptions = useMemo(\n    () =>\n      KIND_FILTER_OPTIONS.map((option) => ({\n        value: option.value,\n        label: t(option.labelKey),\n      })),\n    [t],\n  );\n\n  const kindFilterLabel =\n    kindFilterOptions.find((option) => option.value === kindFilter)?.label ??\n    t(\"media_filter_all_types\");\n\n  const kindFilterTrigger = (\n    <>\n      <Filter className=\"size-4\" />\n      {/* The label would crowd the row on a phone, so show just the icon there. */}\n      <span className=\"hidden sm:inline\">{kindFilterLabel}</span>\n    </>\n  );\n\n  const filterBar = (\n    <div className=\"space-y-6\">\n      {showProductSharablesCarousel && <ProductSharablesCarousel />}\n\n      <ShareableFilterBarLayout\n        tabs={\n          <OwnerFilterTabs\n            value={ownerFilter}\n            onValueChange={setOwnerFilter}\n            myLabel={t(\"media_my_media_tab\")}\n            fullWidthOnMobile\n          />\n        }\n        controls={\n          <>\n            <div className={SHAREABLE_SEARCH_SORT_CLASS}>\n              <SearchSort\n                presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n                searchValue={searchTerm}\n                onSearchChange={setSearchTerm}\n                placeholder={t(\"media_search_placeholder\")}\n                sortOptions={[\n                  { label: t(\"sort_newest\"), value: \"newest\" },\n                  { label: t(\"sort_name_asc\"), value: \"title_asc\" },\n                  { label: t(\"sort_name_desc\"), value: \"title_desc\" },\n                ]}\n                sortValue={sortValue}\n                onSortChange={setSortValue}\n              />\n            </div>\n\n            {/* SearchSort takes a presentation prop to pick its bottom sheet or\n                dropdown. The kind filter has no such prop, so it chooses here.\n                Keep the two in step. */}\n            {isMobile ? (\n              <>\n                <Button\n                  variant=\"outline\"\n                  aria-label={t(\"media_filter_aria\", {\n                    label: kindFilterLabel,\n                  })}\n                  onClick={() => setIsKindFilterOpen(true)}\n                >\n                  {kindFilterTrigger}\n                </Button>\n                <MobileActionSheet\n                  open={isKindFilterOpen}\n                  onOpenChange={setIsKindFilterOpen}\n                  title={t(\"media_filter_all_types\")}\n                  actions={kindFilterOptions.map((option) => ({\n                    id: option.value,\n                    label: option.label,\n                    selected: kindFilter === option.value,\n                    onSelect: () => setKindFilter(option.value),\n                  }))}\n                />\n              </>\n            ) : (\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button\n                    variant=\"outline\"\n                    aria-label={t(\"media_filter_aria\", {\n                      label: kindFilterLabel,\n                    })}\n                  >\n                    {kindFilterTrigger}\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  {kindFilterOptions.map((option) => (\n                    <DropdownMenuItem\n                      key={option.value}\n                      onClick={() => setKindFilter(option.value)}\n                    >\n                      <span className=\"flex-1\">{option.label}</span>\n                      {kindFilter === option.value && (\n                        <Check className=\"text-muted-foreground size-4\" />\n                      )}\n                    </DropdownMenuItem>\n                  ))}\n                </DropdownMenuContent>\n              </DropdownMenu>\n            )}\n\n            <ViewModeToggle value={viewMode} onChange={setViewMode} />\n          </>\n        }\n      />\n    </div>\n  );\n\n  const footer = (\n    <>\n      {isFetchingNextPage && (\n        <div className=\"flex justify-center py-4\">\n          <div className=\"border-primary size-6 animate-spin rounded-full border-2 border-t-transparent\" />\n        </div>\n      )}\n      {error && (\n        <p className=\"bg-destructive/10 text-destructive rounded-lg px-3 py-2\">\n          {t(\"common_error_prefix\")}\n          {error.message}\n        </p>\n      )}\n    </>\n  );\n\n  return (\n    <>\n      <ScreenHeaderActions>\n        {readOnly ? null : (\n          <Button onClick={() => navigate(\"media/new\")} size=\"sm\">\n            <Plus className=\"mr-1 size-4\" />\n            {t(\"media_add_button\")}\n          </Button>\n        )}\n      </ScreenHeaderActions>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {t(\"media_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableListLayout\n        isLoading={isLoading}\n        isEmpty={\n          !error &&\n          filteredItems.length === 0 &&\n          !isFetchingNextPage &&\n          !hasNextPage\n        }\n        emptyMessage={getFilteredEmptyMessage({\n          searchTerm: debouncedSearch,\n          ownerFilter,\n          hasOtherFilters: kindFilter !== \"all\",\n          entityName: \"media\",\n          defaultMessage: t(\"media_empty_default\"),\n          t,\n          messages: {\n            filterSearchNoResults: t(\"common_filter_search_no_results\", {\n              entityName: \"media\",\n              searchTerm: debouncedSearch,\n            }),\n            searchNoResults: t(\"common_search_no_results\", {\n              entityName: \"media\",\n              searchTerm: debouncedSearch,\n            }),\n            filterNoResults: t(\"common_filter_no_results\", {\n              entityName: \"media\",\n            }),\n          },\n        })}\n        filters={filterBar}\n        footer={footer}\n        sentinelRef={sentinelRef}\n        loadingFilterShape=\"search-view\"\n      >\n        {viewMode === \"grid\" ? (\n          <div className={SHAREABLE_GRID_CLASS}>\n            {filteredItems.map((item) => {\n              return (\n                <div key={item.id} className=\"relative\">\n                  <ShareItemCard\n                    title={item.title ?? \"\"}\n                    imageUrl={item.image_url}\n                    href={`media/${item.id}`}\n                    badge={{\n                      text: getMediaKindLabel(item.kind, {\n                        video: t(\"media_type_video\"),\n                        pdf: t(\"media_type_pdf\"),\n                        image: t(\"media_type_image\"),\n                      }),\n                    }}\n                    isVideo={item.kind === \"video\"}\n                    subtitle={\n                      <span className=\"flex items-center gap-1.5\">\n                        {getMediaKindLabel(item.kind, {\n                          video: t(\"media_type_video\"),\n                          pdf: t(\"media_type_pdf\"),\n                          image: t(\"media_type_image\"),\n                        })}\n                        {item.owner_type === \"user\" && (\n                          <Badge\n                            variant=\"secondary\"\n                            className=\"px-1.5 py-0 text-[10px] leading-4\"\n                          >\n                            {t(\"media_my_media_badge\")}\n                          </Badge>\n                        )}\n                      </span>\n                    }\n                  />\n                  {(canCuratePlaylists ||\n                    (!readOnly && item.owner_type === \"user\")) && (\n                    <div className=\"absolute top-2 right-2\">\n                      <MediaRowActionsMenu\n                        canCuratePlaylists={canCuratePlaylists}\n                        canDelete={!readOnly && item.owner_type === \"user\"}\n                        onDelete={() => setPendingDeleteId(item.id)}\n                        onAddToPlaylist={openPlaylistDialog(item.id, \"pick\")}\n                        onNewPlaylist={openPlaylistDialog(item.id, \"create\")}\n                      />\n                    </div>\n                  )}\n                </div>\n              );\n            })}\n          </div>\n        ) : (\n          <div className={SHAREABLE_LIST_CLASS}>\n            {filteredItems.map((item) => {\n              return (\n                <ShareableListRow\n                  key={item.id}\n                  imageUrl={item.image_url}\n                  imageAlt={item.title ?? \"\"}\n                  title={item.title ?? t(\"common_untitled\")}\n                  subtitle={\n                    <>\n                      {getMediaKindLabel(item.kind, {\n                        video: t(\"media_type_video\"),\n                        pdf: t(\"media_type_pdf\"),\n                        image: t(\"media_type_image\"),\n                      })}\n                      {item.owner_type === \"user\" && (\n                        <Badge\n                          variant=\"secondary\"\n                          className=\"px-1.5 py-0 text-[10px] leading-4\"\n                        >\n                          {t(\"media_my_media_badge\")}\n                        </Badge>\n                      )}\n                    </>\n                  }\n                  onClick={() => navigate(`media/${item.id}`)}\n                  trailing={\n                    (canCuratePlaylists ||\n                      (!readOnly && item.owner_type === \"user\")) && (\n                      <MediaRowActionsMenu\n                        canCuratePlaylists={canCuratePlaylists}\n                        canDelete={!readOnly && item.owner_type === \"user\"}\n                        onDelete={() => setPendingDeleteId(item.id)}\n                        onAddToPlaylist={openPlaylistDialog(item.id, \"pick\")}\n                        onNewPlaylist={openPlaylistDialog(item.id, \"create\")}\n                      />\n                    )\n                  }\n                />\n              );\n            })}\n          </div>\n        )}\n      </ShareableListLayout>\n\n      {/* Delete confirmation */}\n      <ResponsiveDialog\n        open={pendingDeleteId !== null}\n        onOpenChange={(open) => !open && setPendingDeleteId(null)}\n        title={t(\"media_delete_confirm_title\")}\n        description={t(\"media_delete_confirm_description\")}\n        presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n        role=\"alertdialog\"\n        size=\"compact\"\n      >\n        <DialogFooter>\n          <Button\n            variant=\"secondary\"\n            onClick={() => setPendingDeleteId(null)}\n            disabled={isDeleting}\n          >\n            {t(\"common_cancel\")}\n          </Button>\n          <Button\n            variant=\"destructive\"\n            onClick={confirmDelete}\n            disabled={isDeleting}\n          >\n            {isDeleting ? <Spinner className=\"size-4\" /> : t(\"common_delete\")}\n          </Button>\n        </DialogFooter>\n      </ResponsiveDialog>\n\n      {playlistDialog && (\n        <AddToPlaylistDialog\n          open\n          onOpenChange={(next) => {\n            if (!next) setPlaylistDialog(null);\n          }}\n          contentId={playlistDialog.mediaId}\n          contentType=\"Medium\"\n          mode={playlistDialog.mode}\n          resumePlaylistId={pendingCreates[playlistDialog.mediaId] ?? null}\n          restoreFocusTo={playlistDialogTriggerRef}\n          onPlaylistCreated={(playlistId) =>\n            setPendingCreates((pending) => ({\n              ...pending,\n              [playlistDialog.mediaId]: playlistId,\n            }))\n          }\n          onAdded={() =>\n            setPendingCreates(\n              ({ [playlistDialog.mediaId]: _done, ...rest }) => rest,\n            )\n          }\n        />\n      )}\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useRenderImage } from \"../../context\";\nimport { ShoppingBag, ArrowUpRight } from \"lucide-react\";\nimport type { shareables } from \"@fluid-app/shareables-core\";\n\nconst DEFAULT_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png\";\n\ntype TaggedProduct = shareables.Relateable;\n\ninterface TaggedProductsListProps {\n  products: TaggedProduct[];\n  /** Called when user clicks a product card */\n  onProductClick?: (productId: number) => void;\n}\n\nfunction resolvePrice(product: TaggedProduct): string | null {\n  let price = product.display_price || product.price;\n\n  if (product.variants && product.variants.length > 0) {\n    const firstVariant = product.variants[0];\n    if (firstVariant?.display_price) {\n      price = firstVariant.display_price;\n    } else if (firstVariant?.price) {\n      price = firstVariant.price;\n    }\n  }\n\n  if (!price) return null;\n\n  const numPrice = parseFloat(price.replace(/[^0-9.-]/g, \"\"));\n  if (Number.isNaN(numPrice) || numPrice <= 0) return null;\n\n  if (price.includes(\"$\")) return price;\n\n  return `$${numPrice.toFixed(2)}`;\n}\n\nexport default function TaggedProductsList({\n  products,\n  onProductClick,\n}: TaggedProductsListProps): React.JSX.Element {\n  const renderImage = useRenderImage();\n  const { t } = useShareablesTranslation();\n\n  const handleProductClick = (\n    productId: number | undefined,\n    e: React.MouseEvent,\n  ) => {\n    e.stopPropagation();\n    if (productId == null) return;\n    onProductClick?.(productId);\n  };\n\n  if (!products || products.length === 0) {\n    return (\n      <div className=\"mb-6\">\n        <div className=\"mb-4 px-4\">\n          <h2 className=\"text-foreground text-[15px] leading-[1.4] font-semibold\">\n            {t(\"share_tagged_products_count\", { count: \"0\" })}\n          </h2>\n        </div>\n        <div className=\"flex flex-1 items-center justify-center px-6 py-12\">\n          <div className=\"text-center\">\n            <div className=\"text-muted-foreground mb-2\">\n              <ShoppingBag className=\"mx-auto size-12\" />\n            </div>\n            <div className=\"text-foreground mb-1 text-sm\">\n              {t(\"share_no_tagged_products\")}\n            </div>\n            <div className=\"text-muted-foreground text-xs\">\n              {t(\"share_no_tagged_products_description\")}\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"mb-6\">\n      {/* Header */}\n      <div className=\"mb-4 px-4\">\n        <h2 className=\"text-foreground text-[15px] leading-[1.4] font-semibold\">\n          {t(\"share_tagged_products_count\", { count: String(products.length) })}\n        </h2>\n      </div>\n\n      {/* Content */}\n      <div className=\"px-4\">\n        <div className=\"scrollbar-none flex gap-4 overflow-x-auto pb-2\">\n          {products.map((product, index) => {\n            const imageUrl =\n              product.images?.[0]?.image_url ||\n              product.image_url ||\n              product.compressed_image_url ||\n              DEFAULT_IMAGE;\n            const title = product.title || t(\"common_untitled\");\n            const displayPrice = resolvePrice(product);\n            return (\n              <button\n                key={product.id ?? index}\n                onClick={(e) => handleProductClick(product.id, e)}\n                className=\"group bg-muted hover:bg-muted/60 flex w-[168px] shrink-0 flex-col gap-2 rounded-lg p-3 text-left transition-all\"\n              >\n                {/* Product Image */}\n                <div className=\"bg-background relative h-[168px] w-full overflow-hidden rounded-lg\">\n                  {renderImage({\n                    src: imageUrl,\n                    alt: title,\n                    fill: true,\n                    className: \"object-cover\",\n                  })}\n                </div>\n\n                {/* Content */}\n                <div className=\"flex min-w-0 flex-col gap-1\">\n                  {/* Title with hover arrow */}\n                  <h3 className=\"text-foreground flex items-start gap-1.5 text-[15px] leading-[1.4] font-semibold\">\n                    <span className=\"line-clamp-2\">{title}</span>\n                    <ArrowUpRight className=\"text-foreground mt-0.5 size-3 shrink-0 opacity-0 transition-opacity group-hover:opacity-100\" />\n                  </h3>\n\n                  {/* Price */}\n                  {displayPrice && (\n                    <div className=\"text-foreground text-[15px] leading-[1.4] font-normal\">\n                      {displayPrice}\n                    </div>\n                  )}\n                </div>\n              </button>\n            );\n          })}\n        </div>\n      </div>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n  useShareablesApi,\n  useRepContext,\n  useShareLink,\n  shareablesKeys,\n} from \"@fluid-app/shareables-core\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Button,\n  Separator,\n  cn,\n} from \"@fluid-app/ui-primitives\";\nimport { Pencil, Plus } from \"lucide-react\";\nimport {\n  ScreenHeaderActions,\n  ScreenHeaderBreadcrumbs,\n} from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport SharePageImageDisplay from \"../SharePage/SharePageImageDisplay\";\nimport AssetActions from \"../SharePage/AssetActions\";\nimport TaggedProductsList from \"../SharePage/TaggedProductsList\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI, useCanCuratePlaylists } from \"../../context\";\nimport type { ShareablesParentBreadcrumb } from \"../shareables-parent-breadcrumb-types\";\nimport { ShareableDetailLayout } from \"../shared/ShareableDetailLayout\";\nimport { AddToPlaylistDialog } from \"../media/AddToPlaylistDialog\";\n\nexport interface MediaDetailScreenProps {\n  mediaId: string;\n  onNavigate?: (screen: string, detailId?: string) => void;\n  onBack?: () => void;\n  parentBreadcrumb?: ShareablesParentBreadcrumb | null;\n}\n\n/** \"Add To\" disclosure trigger for the media detail screen. A plain toggle\n *  button — no floating menu — rendered as `AssetActions`'s\n *  `secondaryAction`, positioned to the left of the Download button on the\n *  same row. Clicking it toggles `MediaAddToPanel` (below), which\n *  MediaDetailScreen renders as `AssetActions`'s `secondaryActionPanel`\n *  when `open` is true. Open/closed state lives in MediaDetailScreen (see\n *  its `isAddToOpen` state) so both pieces stay in sync; this component\n *  only reflects it. Kept as its own component so it's testable without\n *  mounting the full detail screen's data-fetching tree, mirroring how\n *  `MediaRowActionsMenu` is tested in isolation.\n *\n *  Takes a `triggerRef` because it is the one control on this screen that\n *  survives the whole add-to-playlist trip: selecting an action closes the\n *  panel, which `inert`s the pill that was focused, so the dialog needs this\n *  button to hand focus back to. */\nexport function MediaAddToMenu({\n  open,\n  onToggle,\n  triggerRef,\n}: {\n  open: boolean;\n  onToggle: () => void;\n  triggerRef?: React.Ref<HTMLButtonElement>;\n}): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  return (\n    <Button\n      ref={triggerRef}\n      type=\"button\"\n      aria-expanded={open}\n      onClick={onToggle}\n      className=\"bg-foreground text-background hover:bg-foreground/70 flex h-10 items-center justify-center gap-2 rounded-lg px-4 transition-all\"\n    >\n      {t(\"media_add_to_button\")}\n      <Plus className=\"size-3.5\" aria-hidden=\"true\" />\n    </Button>\n  );\n}\n\n/** The row of actions revealed by `MediaAddToMenu`. Rendered as\n *  `AssetActions`'s `secondaryActionPanel`, directly below the Add To /\n *  Download row, full width. Styled as secondary pills matching\n *  `ShareLinkSection`'s social/share buttons (see that file's className)\n *  so they read as lightweight options beneath the two black primary\n *  buttons above. Selecting any action both performs it and closes the\n *  panel — callers are expected to fold that closing behavior into the\n *  handlers they pass in (see MediaDetailScreen). */\nexport function MediaAddToPanel({\n  open,\n  canCuratePlaylists = true,\n  onAddToPlaylist,\n  onNewPlaylist,\n}: {\n  /** Drives the reveal. The panel stays mounted in both states so the\n   *  height/opacity transition can play on the way out as well as in —\n   *  unmounting on close would make it disappear abruptly. */\n  open: boolean;\n  /** Playlists belong to every member type, so this defaults to on. */\n  canCuratePlaylists?: boolean;\n  onAddToPlaylist: () => void;\n  onNewPlaylist: () => void;\n}): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const pillClassName =\n    \"border-foreground bg-background text-foreground hover:bg-muted h-8 rounded-md border px-3 text-xs font-semibold transition-colors\";\n  return (\n    // The grid + `grid-rows-[0fr→1fr]` pair is what makes the height\n    // animatable: `height: auto` cannot be transitioned, but a grid track\n    // fraction can, so the inner `overflow-hidden` wrapper is squeezed to\n    // zero and back smoothly without hard-coding a pixel height.\n    <div\n      inert={!open}\n      className={cn(\n        \"grid transition-[grid-template-rows,opacity] duration-300 ease-out motion-reduce:transition-none\",\n        open ? \"grid-rows-[1fr] opacity-100\" : \"grid-rows-[0fr] opacity-0\",\n      )}\n    >\n      <div className=\"overflow-hidden\">\n        <div className=\"mt-2 flex flex-wrap items-center gap-3\">\n          {canCuratePlaylists && (\n            <>\n              <Button\n                type=\"button\"\n                variant=\"secondary\"\n                size=\"sm\"\n                onClick={onAddToPlaylist}\n                className={pillClassName}\n              >\n                {t(\"media_add_to_playlist\")}\n              </Button>\n              <Button\n                type=\"button\"\n                variant=\"secondary\"\n                size=\"sm\"\n                onClick={onNewPlaylist}\n                className={pillClassName}\n              >\n                {t(\"media_new_playlist\")}\n              </Button>\n            </>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nfunction getBadgeLabel(\n  kind: string | null,\n  labels: { video: string; image: string; pdf: string; default: string },\n): string {\n  switch (kind) {\n    case \"video\":\n      return labels.video;\n    case \"image\":\n      return labels.image;\n    case \"pdf\":\n      return labels.pdf;\n    default:\n      return labels.default;\n  }\n}\n\nexport function MediaDetailScreen({\n  mediaId,\n  onNavigate,\n  onBack,\n  parentBreadcrumb,\n}: MediaDetailScreenProps): React.JSX.Element {\n  const { t, locale } = useShareablesTranslation();\n  const api = useShareablesApi();\n  const repContext = useRepContext();\n  const { navigate, readOnly, mediaProductsApi } = useShareablesUI();\n  const canCuratePlaylists = useCanCuratePlaylists();\n  const [playlistDialog, setPlaylistDialog] = useState<{\n    mediaId: number;\n    mode: \"pick\" | \"create\";\n  } | null>(null);\n  // Disclosure state for the \"Add To\" row (MediaAddToMenu / MediaAddToPanel)\n  // rendered in AssetActions via `secondaryAction` / `secondaryActionPanel`.\n  // Lives here rather than in MediaAddToMenu so selecting one of the three\n  // revealed actions can close the row from this component's handlers.\n  const [isAddToOpen, setIsAddToOpen] = useState(false);\n  // A playlist created for this medium whose add then failed. Kept here rather\n  // than in the dialog because the dialog unmounts when it closes. A single\n  // slot is enough: this screen shows one medium, so unlike the listing screen\n  // there is no second medium to collide with.\n  const [pendingCreate, setPendingCreate] = useState<{\n    mediaId: number;\n    playlistId: number;\n  } | null>(null);\n  // Focus returns to the \"Add To\" toggle when the dialog closes. The pill that\n  // was actually clicked lives in the panel, which this screen closes on the\n  // way into the dialog, and an `inert` element cannot take focus.\n  const addToTriggerRef = useRef<HTMLButtonElement>(null);\n\n  const { data: mediaResponse, isLoading } = useQuery({\n    queryKey: shareablesKeys.media.detail(Number(mediaId), repContext, locale),\n    queryFn: () => api.media.getMediaById(Number(mediaId), locale),\n  });\n\n  const {\n    shareLink,\n    loading: shareLinkLoading,\n    error: shareLinkError,\n  } = useShareLink({ id: Number(mediaId) }, \"Medium\", undefined, locale);\n\n  const { data: mediaProductsData } = useQuery({\n    queryKey: shareablesKeys.mediaProducts.list(Number(mediaId), locale),\n    queryFn: () =>\n      mediaProductsApi!.listMediaProducts(Number(mediaId), {\n        language_iso: locale,\n      }),\n    enabled: !!mediaProductsApi,\n  });\n\n  const taggedProducts = useMemo(\n    () =>\n      mediaProductsData?.media_products?.map((p) => ({\n        id: p.id,\n        title: p.name ?? null,\n        image_url: p.image_url ?? null,\n        price: p.price ?? null,\n        slug: p.slug ?? null,\n        sku: p.sku ?? null,\n      })) ?? [],\n    [mediaProductsData],\n  );\n\n  const mediaItem = mediaResponse?.media;\n\n  const displayTitle = mediaItem?.title || \"\";\n  const displayImage = mediaItem?.image_url || \"\";\n  const displayVideo = mediaItem?.video_url || \"\";\n  const displayPdf = mediaItem?.pdf_url || \"\";\n  const isVideo = mediaItem?.kind === \"video\" && !!displayVideo;\n  const isPdf = mediaItem?.kind === \"pdf\" && !!displayPdf;\n\n  const badgeLabel = getBadgeLabel(mediaItem?.kind ?? null, {\n    video: t(\"media_type_video\"),\n    image: t(\"media_type_image\"),\n    pdf: t(\"media_type_pdf\"),\n    default: t(\"media_type_default\"),\n  });\n\n  const rawDescription =\n    mediaItem?.description?.body || mediaItem?.stripped || \"\";\n\n  const downloadUrl = isVideo\n    ? displayVideo\n    : mediaItem?.pdf_url || displayImage;\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  (\n                    parentBreadcrumb?.onClick ??\n                    onBack ??\n                    (() => navigate(\"media\"))\n                  )();\n                }}\n              >\n                {parentBreadcrumb?.label ?? t(\"media_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"block max-w-[60vw] truncate align-bottom font-semibold md:max-w-[60ch]\">\n                {displayTitle || t(\"media_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ScreenHeaderActions>\n        {readOnly || !mediaItem || mediaItem.owner_type !== \"user\" ? null : (\n          <Button\n            size=\"sm\"\n            variant=\"outline\"\n            onClick={() => navigate(`media/${mediaId}/edit`)}\n            className=\"flex items-center gap-1.5\"\n          >\n            <Pencil className=\"size-3.5\" />\n            {t(\"common_edit\")}\n          </Button>\n        )}\n      </ScreenHeaderActions>\n      <ShareableDetailLayout\n        isLoading={isLoading}\n        notFound={!mediaItem}\n        notFoundMessage={t(\"media_not_found\")}\n        title={displayTitle}\n        description={rawDescription}\n        // Trim ~5% off the viewport budget (95vh vs 100vh) so the right\n        // column + footer padding fits without a page-level scroll.\n        containerHeightClass=\"md:h-[calc(95vh-140px)]\"\n        image={\n          <div className=\"relative h-full overflow-hidden\">\n            <SharePageImageDisplay\n              displayImage={displayImage}\n              displayTitle={displayTitle}\n              displayVideo={isVideo ? displayVideo : undefined}\n              displayPdf={isPdf ? displayPdf : undefined}\n              isVideo={isVideo}\n              badgeLabel={badgeLabel}\n              rounded\n              showBadge={false}\n              pdfPrevAriaLabel={t(\"pdf_previous_page_aria\")}\n              pdfNextAriaLabel={t(\"pdf_next_page_aria\")}\n              pdfDocumentTitle={t(\"pdf_document_title\")}\n            />\n            {/* Media type chip overlay (Edit button moved to the screen\n              header actions). Kept at z-0 so it can't scroll over the\n              sticky ScreenHeader (which sits at z-10). */}\n            <span className=\"bg-background/80 text-foreground absolute top-3 right-3 z-0 inline-flex h-8 items-center rounded-full px-3 text-xs font-medium shadow-md backdrop-blur-sm\">\n              {badgeLabel}\n            </span>\n          </div>\n        }\n        actions={\n          <AssetActions\n            downloadUrl={downloadUrl || null}\n            displayTitle={displayTitle}\n            shareLink={shareLinkError ? null : shareLink || null}\n            shareLinkLoading={shareLinkLoading}\n            isVideo={isVideo}\n            relateableId={Number(mediaId)}\n            relateableType=\"Medium\"\n            secondaryAction={\n              canCuratePlaylists && mediaItem ? (\n                <MediaAddToMenu\n                  open={isAddToOpen}\n                  onToggle={() => setIsAddToOpen((prev) => !prev)}\n                  triggerRef={addToTriggerRef}\n                />\n              ) : undefined\n            }\n            secondaryActionPanel={\n              canCuratePlaylists && mediaItem ? (\n                <MediaAddToPanel\n                  open={isAddToOpen}\n                  canCuratePlaylists={canCuratePlaylists}\n                  onAddToPlaylist={() => {\n                    setPlaylistDialog({\n                      mediaId: Number(mediaId),\n                      mode: \"pick\",\n                    });\n                    setIsAddToOpen(false);\n                  }}\n                  onNewPlaylist={() => {\n                    setPlaylistDialog({\n                      mediaId: Number(mediaId),\n                      mode: \"create\",\n                    });\n                    setIsAddToOpen(false);\n                  }}\n                />\n              ) : undefined\n            }\n          />\n        }\n      >\n        {taggedProducts.length > 0 && (\n          <>\n            <Separator className=\"bg-foreground my-4\" />\n            <div className=\"bg-background rounded-lg\">\n              <TaggedProductsList\n                products={taggedProducts}\n                onProductClick={(productId) =>\n                  onNavigate?.(\"product\", String(productId))\n                }\n              />\n            </div>\n          </>\n        )}\n      </ShareableDetailLayout>\n\n      {playlistDialog && (\n        <AddToPlaylistDialog\n          open\n          onOpenChange={(next) => {\n            if (!next) setPlaylistDialog(null);\n          }}\n          contentId={playlistDialog.mediaId}\n          contentType=\"Medium\"\n          mode={playlistDialog.mode}\n          resumePlaylistId={\n            pendingCreate?.mediaId === playlistDialog.mediaId\n              ? pendingCreate.playlistId\n              : null\n          }\n          restoreFocusTo={addToTriggerRef}\n          onPlaylistCreated={(playlistId) =>\n            setPendingCreate({ mediaId: playlistDialog.mediaId, playlistId })\n          }\n          onAdded={() =>\n            // Only this medium's slot. A successful add for another\n            // medium used to clear a target still owed to this one.\n            setPendingCreate((pending) =>\n              pending?.mediaId === playlistDialog.mediaId ? null : pending,\n            )\n          }\n        />\n      )}\n    </>\n  );\n}\n","import type { FilePickerApi } from \"@fluid-app/file-picker-core\";\nimport {\n  FilePickerApiProvider as CoreFilePickerApiProvider,\n  useFilePickerApi,\n} from \"@fluid-app/file-picker-core\";\n\nexport { useFilePickerApi };\n\nexport function FilePickerApiProvider({\n  api,\n  children,\n}: {\n  api: FilePickerApi;\n  children: React.ReactNode;\n}): React.JSX.Element {\n  return (\n    <CoreFilePickerApiProvider value={api}>\n      {children}\n    </CoreFilePickerApiProvider>\n  );\n}\n","\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport type {\n  FilePickerResult,\n  PickerEnrollmentPackItem,\n  PickerPageItem,\n  PickerProductItem,\n  PickerSource,\n} from \"@fluid-app/file-picker-core\";\n\nexport interface FilePickerToast {\n  success(title: string): void;\n  error(title: string, error?: unknown): void;\n  loading(title: string): string | number;\n  dismiss(id: string | number): void;\n}\n\nexport interface FilePickerContextValue {\n  companyId?: number;\n  userId?: number;\n  toast: FilePickerToast;\n  /**\n   * Per-content-type list/search functions used by the non-file picker tabs.\n   * `media` is required because MediaTab is the original consumer and several\n   * existing host configs always supply it. The other three are optional —\n   * a missing key signals to the picker that the corresponding sidebar tab\n   * should not render even when listed in `allowedMethods`.\n   */\n  shareablesClient?: {\n    media: {\n      list: (...args: unknown[]) => Promise<unknown>;\n      cacheKey?: string;\n    };\n    pages?: PickerSource<PickerPageItem>;\n    products?: PickerSource<PickerProductItem>;\n    enrollment_packs?: PickerSource<PickerEnrollmentPackItem>;\n  };\n  apiBaseUrl?: string;\n}\n\nconst FilePickerContext = createContext<FilePickerContextValue | null>(null);\n\nexport function FilePickerProvider({\n  children,\n  value,\n}: {\n  children: React.ReactNode;\n  value: FilePickerContextValue;\n}): React.JSX.Element {\n  return (\n    <FilePickerContext.Provider value={value}>\n      <FilePickerSelectionProvider>{children}</FilePickerSelectionProvider>\n    </FilePickerContext.Provider>\n  );\n}\n\nexport function useFilePickerContext(): FilePickerContextValue {\n  const ctx = useContext(FilePickerContext);\n  if (!ctx) {\n    throw new Error(\n      \"useFilePickerContext must be used within a FilePickerProvider\",\n    );\n  }\n  return ctx;\n}\n\n// ---------------------------------------------------------------------------\n// Unified cross-tab selection (opt-in via FilePickerConfig.unifiedSelection).\n//\n// When a tab body reads/writes the unified list it does so through these\n// hooks. Default per-method picker UX still works because each tab only\n// reaches into the unified context when explicitly wired by FilePicker.\n// ---------------------------------------------------------------------------\n\ntype UnifiedSelectionState = {\n  items: FilePickerResult[];\n};\n\ntype UnifiedSelectionApi = {\n  add: (item: FilePickerResult) => void;\n  remove: (assetCode: string) => void;\n  clear: () => void;\n  isSelected: (assetCode: string) => boolean;\n  selectionIndex: (assetCode: string) => number;\n};\n\nconst FilePickerSelectionReadContext =\n  createContext<UnifiedSelectionState | null>(null);\nconst FilePickerSelectionWriteContext =\n  createContext<UnifiedSelectionApi | null>(null);\n\nfunction FilePickerSelectionProvider({\n  children,\n}: {\n  children: React.ReactNode;\n}): React.JSX.Element {\n  // Default no-op state. The active <FilePicker> mounts a real provider\n  // (FilePickerSelectionScope) when `config.unifiedSelection === true`,\n  // overriding these defaults.\n  return (\n    <FilePickerSelectionReadContext.Provider value={null}>\n      <FilePickerSelectionWriteContext.Provider value={null}>\n        {children}\n      </FilePickerSelectionWriteContext.Provider>\n    </FilePickerSelectionReadContext.Provider>\n  );\n}\n\nexport function FilePickerSelectionScope({\n  state,\n  api,\n  children,\n}: {\n  state: UnifiedSelectionState;\n  api: UnifiedSelectionApi;\n  children: React.ReactNode;\n}): React.JSX.Element {\n  return (\n    <FilePickerSelectionReadContext.Provider value={state}>\n      <FilePickerSelectionWriteContext.Provider value={api}>\n        {children}\n      </FilePickerSelectionWriteContext.Provider>\n    </FilePickerSelectionReadContext.Provider>\n  );\n}\n\n/**\n * Returns the unified selection state when the active picker has unified\n * selection enabled, otherwise null. Tabs use this as the signal to switch\n * between unified and per-method behavior.\n */\nexport function useFilePickerSelection(): {\n  state: UnifiedSelectionState | null;\n  api: UnifiedSelectionApi | null;\n} {\n  const state = useContext(FilePickerSelectionReadContext);\n  const api = useContext(FilePickerSelectionWriteContext);\n  return { state, api };\n}\n\nexport type { UnifiedSelectionApi, UnifiedSelectionState };\n","import type React from \"react\";\n\ninterface BrandIconProps {\n  className?: string;\n}\n\nexport function GoogleIcon({ className }: BrandIconProps): React.JSX.Element {\n  return (\n    <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n      <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z\" />\n      <path d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\" />\n      <path d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\" />\n      <path d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" />\n    </svg>\n  );\n}\n\nexport function InstagramIcon({\n  className,\n}: BrandIconProps): React.JSX.Element {\n  return (\n    <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n      <path d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 1 0 0 12.324 6.162 6.162 0 0 0 0-12.324zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.406-11.845a1.44 1.44 0 1 0 0 2.881 1.44 1.44 0 0 0 0-2.881z\" />\n    </svg>\n  );\n}\n\nexport function FacebookIcon({ className }: BrandIconProps): React.JSX.Element {\n  return (\n    <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n      <path d=\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\" />\n    </svg>\n  );\n}\n\nexport function TiktokIcon({ className }: BrandIconProps): React.JSX.Element {\n  return (\n    <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n      <path d=\"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z\" />\n    </svg>\n  );\n}\n\nexport function DropboxIcon({ className }: BrandIconProps): React.JSX.Element {\n  return (\n    <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n      <path d=\"M12 6.13L6 10.13l6 4-6 4-6-4 6-4-6-4 6-4 6 4zm0 0l6-4 6 4-6 4 6 4-6 4-6-4 6-4-6-4zm0 16.74l-6-4 6-4 6 4-6 4z\" />\n    </svg>\n  );\n}\n\nexport function UnsplashIcon({ className }: BrandIconProps): React.JSX.Element {\n  return (\n    <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n      <path d=\"M7.5 6.75V0h9v6.75h-9zm9 3.75H24V24H0V10.5h7.5v6.75h9V10.5z\" />\n    </svg>\n  );\n}\n","import type React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport const useDebouncedSearch = (\n  delay: number = 300,\n): {\n  searchQuery: string;\n  setSearchQuery: React.Dispatch<React.SetStateAction<string>>;\n  debouncedSearchQuery: string;\n} => {\n  const [searchQuery, setSearchQuery] = useState(\"\");\n  const [debouncedSearchQuery, setDebouncedSearchQuery] = useState(\"\");\n\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setDebouncedSearchQuery(searchQuery);\n    }, delay);\n\n    return () => clearTimeout(timer);\n  }, [searchQuery, delay]);\n\n  return {\n    searchQuery,\n    setSearchQuery,\n    debouncedSearchQuery,\n  };\n};\n","import { useState, useCallback, useMemo, useEffect } from \"react\";\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport {\n  damQueryKeys,\n  type DamAsset,\n  type DamTree,\n  type FilePickerResult,\n  type DamAssetApi,\n  type DamQueryResponse,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerApi } from \"../context/FilePickerApiContext\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\nimport { useDebouncedSearch } from \"./use-debounced-search\";\n\nexport type UseDamLibraryControlledSearch = {\n  searchQuery: string;\n  setSearchQuery: (value: string) => void;\n};\n\n// Replace and tag edits act on the asset's default variant, but the API\n// returns variants unordered, so it can arrive at any index. Put it first,\n// because callers read `variants[0]` as \"the file\". `index > 0` covers both\n// leave-alone cases: 0 is already first, -1 is no default at all.\n//\n// fluid-admin's `networking/dam/converters.ts` keeps the same logic for the\n// admin screens.\nconst defaultVariantFirst = <T extends { default?: boolean }>(\n  variants: T[],\n): T[] => {\n  const index = variants.findIndex((variant) => variant.default === true);\n  const defaultVariant = index > 0 ? variants[index] : undefined;\n  if (!defaultVariant) return variants;\n  return [defaultVariant, ...variants.filter((_, i) => i !== index)];\n};\n\nconst convertApiAssetToInternal = (apiAsset: DamAssetApi): DamAsset => {\n  const defaultUrl =\n    (apiAsset as { default_variant_url?: string }).default_variant_url ?? \"\";\n  return {\n    id: apiAsset.id,\n    // Fallback to `asset_code` for legacy API responses that used that field name instead of `code`\n    asset_code:\n      apiAsset.code ||\n      (apiAsset as unknown as { asset_code: string }).asset_code,\n    name: apiAsset.name,\n    category: apiAsset.category,\n    default_variant_url: defaultUrl || undefined,\n    variants: defaultVariantFirst(\n      Array.isArray(apiAsset.variants) ? apiAsset.variants : [],\n    ).map((variant) => {\n      const variantAny = variant as unknown as {\n        metadata?: Record<string, unknown>;\n        ready?: boolean;\n      };\n      return {\n        id: String(variant.id || \"\"),\n        url: variant.url || defaultUrl || \"\",\n        file_name: variant.file_name || \"\",\n        mime_type: variant.mime_type || \"\",\n        metadata: variantAny.metadata || {},\n        ready: variantAny.ready ?? variant.processing_status === \"completed\",\n        tags: variant.tags || [],\n      };\n    }),\n  };\n};\n\nconst isApiDamAsset = (value: unknown): value is DamAssetApi => {\n  return (\n    typeof value === \"object\" &&\n    value !== null &&\n    (\"code\" in value || \"asset_code\" in value) &&\n    \"name\" in value &&\n    \"category\" in value\n  );\n};\n\nconst normalizeAsset = (asset: DamAsset | DamAssetApi): DamAsset => {\n  // Always run through convertApiAssetToInternal for DamAssetApi objects.\n  // We can't rely on \"asset_code\" as a discriminator because legacy API\n  // responses also carry that field — using \"variants\" with mapped `ready`\n  // boolean is a more reliable signal that conversion already happened.\n  if (\n    \"asset_code\" in asset &&\n    Array.isArray((asset as DamAsset).variants) &&\n    (asset as DamAsset).variants.length > 0 &&\n    typeof (asset as DamAsset).variants[0]?.ready === \"boolean\"\n  ) {\n    return asset as DamAsset;\n  }\n  return convertApiAssetToInternal(asset as DamAssetApi);\n};\n\nconst flattenTree = (\n  tree: DamTree,\n  basePath = \"\",\n  depth = 0,\n): { folders: string[]; assets: DamAsset[] } => {\n  if (depth > 10) return { folders: [], assets: [] };\n\n  const folders: string[] = [];\n  const assets: DamAsset[] = [];\n\n  for (const [key, value] of Object.entries(tree)) {\n    const fullPath = basePath ? `${basePath}.${key}` : key;\n\n    if (isApiDamAsset(value)) {\n      assets.push(convertApiAssetToInternal(value));\n    } else if (typeof value === \"object\" && value !== null) {\n      if (Object.keys(value ?? {})?.length === 0) continue;\n      folders.push(fullPath);\n      const nested = flattenTree(value as DamTree, fullPath, depth + 1);\n      folders.push(...nested.folders);\n      assets.push(...nested.assets);\n    }\n  }\n\n  return { folders, assets };\n};\n\nexport const useDamLibrary = (\n  fileTypeFilter?: string[],\n  controlledSearch?: UseDamLibraryControlledSearch,\n): {\n  currentPath: string;\n  searchQuery: string;\n  setSearchQuery: (value: string) => void;\n  navigateToPath: (path: string) => void;\n  navigateUp: () => void;\n  selectAsset: (asset: DamAsset | DamAssetApi, variantId?: string) => void;\n  deselectAsset: (assetCode: string) => void;\n  clearSelection: () => void;\n  clearAndSelectAsset: (\n    asset: DamAsset | DamAssetApi,\n    variantId?: string,\n  ) => void;\n  getSelectedResults: () => FilePickerResult[];\n  getSelectionIndex: (assetCode: string) => number;\n  selectedAssets: string[];\n  selectedAssetsMap: Map<string, { asset: DamAsset; variantId?: string }>;\n  folders: string[];\n  assets: DamAsset[];\n  isLoading: boolean;\n  error: Error | null;\n  isSearching: boolean;\n  hasNextPage: boolean;\n  loadMore: () => void;\n  isFetching: boolean;\n} => {\n  const api = useFilePickerApi();\n  const { companyId } = useFilePickerContext();\n  const [currentPath, setCurrentPath] = useState(\"*\");\n\n  const internalSearch = useDebouncedSearch(300);\n  const isControlled = controlledSearch !== undefined;\n  const searchQuery = isControlled\n    ? controlledSearch!.searchQuery\n    : internalSearch.searchQuery;\n  const setSearchQuery = isControlled\n    ? controlledSearch!.setSearchQuery\n    : internalSearch.setSearchQuery;\n\n  const [controlledDebounced, setControlledDebounced] = useState(\n    controlledSearch?.searchQuery ?? \"\",\n  );\n  useEffect(() => {\n    if (!isControlled) return;\n    const timer = setTimeout(() => setControlledDebounced(searchQuery), 300);\n    return () => clearTimeout(timer);\n  }, [isControlled, searchQuery]);\n\n  const debouncedSearchQuery = isControlled\n    ? controlledDebounced\n    : internalSearch.debouncedSearchQuery;\n\n  const [selectedAssets, setSelectedAssets] = useState<\n    Map<string, { asset: DamAsset; variantId?: string }>\n  >(new Map());\n\n  const canonicalPathFilters = useMemo(() => {\n    if (!fileTypeFilter || !companyId) return fileTypeFilter;\n    return fileTypeFilter.map((filter) =>\n      filter.includes(\".\") ? filter : `${companyId}.${filter}.*`,\n    );\n  }, [fileTypeFilter, companyId]);\n\n  const ltreeQueryPath = useMemo(() => {\n    if (!canonicalPathFilters?.length) return currentPath;\n    if (canonicalPathFilters?.length === 1) return canonicalPathFilters[0];\n    if (!companyId) return currentPath;\n\n    const categories = canonicalPathFilters\n      .map((path) => path.split(\".\")[1])\n      .filter(Boolean);\n\n    return categories?.length\n      ? `${companyId}.${categories.join(\"|\")}.*`\n      : currentPath;\n  }, [canonicalPathFilters, currentPath, companyId]);\n\n  const {\n    data,\n    isLoading,\n    error,\n    isFetching,\n    fetchNextPage,\n    hasNextPage,\n    isFetchingNextPage,\n  } = useInfiniteQuery({\n    queryKey: damQueryKeys.query({\n      path: ltreeQueryPath,\n      search: debouncedSearchQuery,\n      filters: canonicalPathFilters,\n    }),\n    queryFn: ({ pageParam }) =>\n      api.queryDamAssets({\n        path: ltreeQueryPath || \"*\",\n        search: debouncedSearchQuery,\n        tags_string: \"*\",\n        exclude_tags: \"file_resource\",\n        exclude_categories: \"text,other\",\n        cursor: pageParam as string | undefined,\n      }),\n    getNextPageParam: (lastPage) =>\n      (lastPage as DamQueryResponse)?.meta?.next_cursor || undefined,\n    initialPageParam: undefined as string | undefined,\n    refetchOnWindowFocus: false,\n  });\n\n  const navigateUp = useCallback(() => {\n    if (currentPath === \"*\") return;\n\n    const pathParts = currentPath.split(\".\");\n    if (pathParts?.length <= 1) {\n      setCurrentPath(\"*\");\n      return;\n    }\n    if (pathParts?.[pathParts?.length - 1] === \"*\") {\n      const parentParts = pathParts.slice(0, -2);\n      if (parentParts?.length === 0) {\n        setCurrentPath(\"*\");\n      } else {\n        setCurrentPath(parentParts.join(\".\") + \".*\");\n      }\n    } else {\n      const parentParts = pathParts.slice(0, -1);\n      setCurrentPath(parentParts.join(\".\") + \".*\");\n    }\n  }, [currentPath]);\n\n  const selectAsset = useCallback(\n    (asset: DamAsset | DamAssetApi, variantId?: string) => {\n      const normalized = normalizeAsset(asset);\n      setSelectedAssets((prev) => {\n        const next = new Map(prev);\n        next.set(normalized.asset_code, { asset: normalized, variantId });\n        return next;\n      });\n    },\n    [],\n  );\n\n  const deselectAsset = useCallback((assetCode: string) => {\n    setSelectedAssets((prev) => {\n      if (!prev.has(assetCode)) return prev;\n      const next = new Map(prev);\n      next.delete(assetCode);\n      return next;\n    });\n  }, []);\n\n  const clearSelection = useCallback(() => {\n    setSelectedAssets(new Map());\n  }, []);\n\n  const clearAndSelectAsset = useCallback(\n    (asset: DamAsset | DamAssetApi, variantId?: string) => {\n      const normalized = normalizeAsset(asset);\n      setSelectedAssets(\n        new Map([[normalized.asset_code, { asset: normalized, variantId }]]),\n      );\n    },\n    [],\n  );\n\n  const getSelectedResults = useCallback((): FilePickerResult[] => {\n    return Array.from(selectedAssets.values()).map(({ asset, variantId }) => {\n      const variant = variantId\n        ? asset.variants.find((v) => v.id === variantId)\n        : asset.variants.find((v) => v.ready) || asset.variants[0];\n      const defaultVariantUrl = asset.default_variant_url ?? \"\";\n      const fileUrl = variant?.url || defaultVariantUrl || \"\";\n\n      const metadata = variant?.metadata || {};\n      const dimensions =\n        typeof metadata.width === \"number\" &&\n        typeof metadata.height === \"number\"\n          ? { width: metadata.width, height: metadata.height }\n          : undefined;\n\n      return {\n        asset_id: asset.id,\n        asset_code: asset.asset_code,\n        file_path: fileUrl,\n        file_url: fileUrl,\n        metadata: {\n          file_name: variant?.file_name || asset.name,\n          mime_type: variant?.mime_type || \"\",\n          dimensions,\n        },\n        upload_status: \"ready\",\n        variant_id: variant?.id || undefined,\n      };\n    });\n  }, [selectedAssets]);\n\n  const getSelectionIndex = useCallback(\n    (assetCode: string): number => {\n      const keys = Array.from(selectedAssets.keys());\n      const index = keys.indexOf(assetCode);\n      return index === -1 ? -1 : index + 1;\n    },\n    [selectedAssets],\n  );\n\n  const selectedAssetCodes = useMemo(\n    () => Array.from(selectedAssets.keys()),\n    [selectedAssets],\n  );\n\n  const getCompanyTree = useCallback(\n    (tree: DamTree): DamTree => {\n      const companyIdStr = companyId?.toString();\n      return companyIdStr && tree[companyIdStr]\n        ? { [companyIdStr]: tree[companyIdStr] }\n        : tree;\n    },\n    [companyId],\n  );\n\n  const { folders, allAssets } = useMemo(() => {\n    if (!data?.pages?.length) {\n      return { folders: [], allAssets: [] };\n    }\n\n    const companyIdStr = companyId?.toString();\n    const excluded: string[] = companyIdStr ? [companyIdStr] : [];\n    if (fileTypeFilter?.length && companyIdStr) {\n      fileTypeFilter.forEach((filter) => {\n        if (!filter.includes(\".\")) {\n          excluded.push(`${companyIdStr}.${filter}`);\n        }\n      });\n    }\n\n    const folderSet = new Set<string>();\n    const assetMap = new Map<string, DamAsset>();\n    for (const page of data.pages) {\n      const response = page as DamQueryResponse;\n      const flat = flattenTree(getCompanyTree(response.tree));\n      for (const folder of flat.folders) {\n        if (!excluded.includes(folder)) {\n          folderSet.add(folder);\n        }\n      }\n      for (const asset of flat.assets) {\n        assetMap.set(asset.asset_code, asset);\n      }\n    }\n\n    return {\n      folders: Array.from(folderSet),\n      allAssets: Array.from(assetMap.values()),\n    };\n  }, [data, getCompanyTree, companyId, fileTypeFilter]);\n\n  return {\n    currentPath,\n    searchQuery,\n    setSearchQuery,\n    navigateToPath: setCurrentPath,\n    navigateUp,\n    selectAsset,\n    deselectAsset,\n    clearSelection,\n    clearAndSelectAsset,\n    getSelectedResults,\n    getSelectionIndex,\n    selectedAssets: selectedAssetCodes,\n    selectedAssetsMap: selectedAssets,\n    folders: folders ?? [],\n    assets: allAssets ?? [],\n    isLoading,\n    error,\n    isSearching: searchQuery !== debouncedSearchQuery,\n    hasNextPage: Boolean(hasNextPage),\n    loadMore: fetchNextPage,\n    isFetching: isFetching || isFetchingNextPage,\n  };\n};\n","import { useEffect, useState } from \"react\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile(): boolean {\n  const [isMobile, setIsMobile] = useState(false);\n\n  useEffect(() => {\n    if (typeof window.matchMedia !== \"function\") {\n      setIsMobile(false);\n      return;\n    }\n\n    const mediaQuery = window.matchMedia(\n      `(max-width: ${MOBILE_BREAKPOINT - 1}px)`,\n    );\n    const update = () => setIsMobile(mediaQuery.matches);\n\n    update();\n    mediaQuery.addEventListener(\"change\", update);\n    return () => mediaQuery.removeEventListener(\"change\", update);\n  }, []);\n\n  return isMobile;\n}\n","import type React from \"react\";\nimport type { UseFormReturn } from \"react-hook-form\";\nimport * as z from \"zod\";\nimport {\n  Form,\n  FormControl,\n  FormField,\n  FormItem,\n  FormLabel,\n  FormMessage,\n  Input,\n  Button,\n} from \"@fluid-app/ui-primitives\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"../hooks/use-is-mobile\";\n\nexport const folderSchema: z.ZodObject<{\n  folderName: z.ZodString;\n}> = z.object({\n  folderName: z\n    .string()\n    .min(1, \"Folder name is required\")\n    .min(3, \"Folder name must be at least 3 characters\")\n    .max(50, \"Folder name must be at most 50 characters\")\n    .regex(\n      /^[a-zA-Z0-9_]+$/,\n      \"Folder name may only contain letters, numbers, and underscores\",\n    ),\n});\n\ntype FolderFormValues = z.infer<typeof folderSchema>;\n\ninterface AddFolderModalProps {\n  open: boolean;\n  setOpen(b: boolean): void;\n  onSubmit(v: FolderFormValues): void;\n  form: UseFormReturn<FolderFormValues>;\n  isLoading?: boolean;\n}\n\nexport function AddFolderModal({\n  open,\n  setOpen,\n  onSubmit,\n  form,\n  isLoading,\n}: AddFolderModalProps): React.JSX.Element {\n  const isMobile = useIsMobile();\n  const handleClose = () => {\n    setOpen(false);\n    form.reset();\n  };\n\n  return (\n    <ResponsiveDialog\n      open={open}\n      onOpenChange={handleClose}\n      title=\"Add Folder\"\n      description=\"Create a new folder by entering a name below.\"\n      presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n      size=\"compact\"\n    >\n      <Form {...form}>\n        <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-4\">\n          <FormField\n            control={form.control}\n            name=\"folderName\"\n            render={({ field }) => (\n              <FormItem>\n                <FormLabel>Folder Name</FormLabel>\n                <FormControl>\n                  <Input\n                    placeholder=\"Enter folder name\"\n                    {...field}\n                    disabled={isLoading}\n                  />\n                </FormControl>\n                <FormMessage />\n              </FormItem>\n            )}\n          />\n          <Button variant=\"default\" type=\"submit\" disabled={isLoading}>\n            {isLoading ? \"Creating...\" : \"Add Folder\"}\n          </Button>\n        </form>\n      </Form>\n    </ResponsiveDialog>\n  );\n}\n","import type React from \"react\";\nimport {\n  cn,\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n  Button,\n  DialogFooter,\n} from \"@fluid-app/ui-primitives\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"../hooks/use-is-mobile\";\nimport { XIcon, Trash2Icon, AlertTriangleIcon } from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\n\ntype AssetActionsProps = {\n  onDiscard(): void;\n  onDelete(): void;\n};\n\ntype HoverIconProps = {\n  label: string;\n  icon: LucideIcon;\n  onClick(): void;\n  className?: string;\n};\n\nconst HoverIcon = ({\n  icon: Icon,\n  label,\n  onClick,\n  className,\n}: HoverIconProps) => {\n  return (\n    <Tooltip>\n      <TooltipTrigger asChild>\n        <button\n          type=\"button\"\n          className={cn(\n            \"mr-0.5 rounded-md border border-gray-300 bg-white p-2 text-gray-600 transition-colors hover:bg-gray-50 hover:text-gray-900\",\n            className,\n          )}\n          onClick={(e) => {\n            e.stopPropagation();\n            e.preventDefault();\n            onClick();\n          }}\n        >\n          <Icon className=\"h-3.5 w-3.5\" />\n        </button>\n      </TooltipTrigger>\n      <TooltipContent>\n        <p>{label}</p>\n      </TooltipContent>\n    </Tooltip>\n  );\n};\n\nexport function AssetActions({\n  onDiscard,\n  onDelete,\n}: AssetActionsProps): React.JSX.Element {\n  return (\n    <div className={\"absolute top-1 right-0.5 z-1 hidden group-hover:flex\"}>\n      <TooltipProvider>\n        <HoverIcon label=\"Discard\" icon={XIcon} onClick={onDiscard} />\n\n        <HoverIcon\n          label=\"Delete\"\n          icon={Trash2Icon}\n          onClick={onDelete}\n          className=\"border-red-300 text-red-600 hover:bg-red-50 hover:text-red-700\"\n        />\n      </TooltipProvider>\n    </div>\n  );\n}\n\ntype ActionModalProps = {\n  open: boolean;\n  title: string;\n  description: string;\n  cancelLabel?: string;\n  actionLabel?: string;\n  onCancel?(): void;\n  onAction(): void;\n  actionVariant?:\n    | \"default\"\n    | \"destructive\"\n    | \"outline\"\n    | \"secondary\"\n    | \"ghost\"\n    | \"link\";\n  loading?: boolean;\n};\n\nexport function ActionModal({\n  title,\n  description,\n  actionLabel = \"Delete\",\n  cancelLabel = \"Cancel\",\n  open,\n  onAction,\n  onCancel,\n  actionVariant = \"destructive\",\n  loading,\n}: ActionModalProps): React.JSX.Element {\n  const isMobile = useIsMobile();\n  return (\n    <ResponsiveDialog\n      open={open}\n      onOpenChange={(nextOpen) => {\n        if (!nextOpen) onCancel?.();\n      }}\n      title={title}\n      presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n      size=\"compact\"\n    >\n      <div className=\"sm:flex sm:items-start\">\n        <AlertTriangleIcon className=\"mr-2 h-5 w-5 shrink-0 text-blue-600\" />\n        <div className=\"mt-2\">\n          <p className=\"text-sm text-gray-500\">{description}</p>\n        </div>\n      </div>\n\n      <DialogFooter>\n        <Button\n          type=\"button\"\n          onClick={onCancel}\n          variant=\"secondary\"\n          disabled={loading}\n          className=\"cursor-pointer\"\n        >\n          {cancelLabel}\n        </Button>\n        <Button\n          disabled={loading}\n          type=\"button\"\n          onClick={onAction}\n          variant={actionVariant}\n          className=\"cursor-pointer\"\n        >\n          {actionLabel}\n        </Button>\n      </DialogFooter>\n    </ResponsiveDialog>\n  );\n}\n","import type { LucideIcon } from \"lucide-react\";\nimport { ImageIcon, VideoIcon, FileIcon } from \"lucide-react\";\n\nexport function getCategoryIcon(category: string): LucideIcon {\n  switch (category) {\n    case \"images\":\n      return ImageIcon;\n    case \"videos\":\n      return VideoIcon;\n    default:\n      return FileIcon;\n  }\n}\n","\"use client\";\n\nimport React, { useState, useRef, useEffect } from \"react\";\nimport { cn } from \"@fluid-app/ui-primitives\";\nimport type { DamAsset, DamVariant } from \"@fluid-app/file-picker-core\";\nimport { getCategoryIcon } from \"../../utils/icons\";\n\nfunction formatDuration(seconds: number): string {\n  const h = Math.floor(seconds / 3600);\n  const m = Math.floor((seconds % 3600) / 60);\n  const s = Math.floor(seconds % 60);\n  if (h > 0)\n    return `${h}:${String(m).padStart(2, \"0\")}:${String(s).padStart(2, \"0\")}`;\n  return `${m}:${String(s).padStart(2, \"0\")}`;\n}\n\nfunction VideoDurationBadge({ src }: { src: string }) {\n  const [duration, setDuration] = useState<string | null>(null);\n  const videoRef = useRef<HTMLVideoElement | null>(null);\n\n  useEffect(() => {\n    const video = document.createElement(\"video\");\n    video.preload = \"metadata\";\n    video.src = src;\n    video.onloadedmetadata = () => {\n      if (video.duration && isFinite(video.duration)) {\n        setDuration(formatDuration(video.duration));\n      }\n    };\n    videoRef.current = video;\n    return () => {\n      video.onloadedmetadata = null;\n      video.src = \"\";\n    };\n  }, [src]);\n\n  if (!duration) return null;\n\n  return (\n    <span className=\"absolute right-1.5 bottom-1.5 rounded bg-black/70 px-1.5 py-0.5 text-[10px] font-medium text-white\">\n      {duration}\n    </span>\n  );\n}\n\nexport type ThumbnailLayout = \"list\" | \"grid\" | \"preview\";\n\nexport interface AssetThumbnailProps {\n  asset: DamAsset;\n  variant: DamVariant | undefined;\n  layout: ThumbnailLayout;\n  imageSize?: number;\n  className?: string;\n}\n\nexport function AssetThumbnail({\n  asset,\n  variant,\n  layout,\n  imageSize = 100,\n  className,\n}: AssetThumbnailProps): React.ReactElement {\n  const IconComponent = getCategoryIcon(asset.category);\n\n  if (layout === \"list\") {\n    return (\n      <div\n        className={cn(\n          \"relative h-12 w-12 shrink-0 overflow-hidden rounded bg-gray-100\",\n          className,\n        )}\n      >\n        {variant?.url && asset.category === \"images\" ? (\n          <img\n            src={variant.url}\n            alt={asset.name}\n            width={48}\n            height={48}\n            className=\"h-full w-full object-cover\"\n          />\n        ) : variant?.url && asset.category === \"videos\" ? (\n          <img\n            src={`${variant.url.split(\"?\")[0]}/ik-thumbnail.jpg`}\n            alt={variant.url || \"Video\"}\n            width={48}\n            height={48}\n            className=\"h-full w-full object-cover\"\n          />\n        ) : variant?.url && asset.category === \"documents\" ? (\n          <img\n            src={`${variant.url.split(\"?\")[0]}/ik-thumbnail.jpg`}\n            alt={asset.name || \"Document\"}\n            width={48}\n            height={48}\n            className=\"h-full w-full object-cover\"\n          />\n        ) : (\n          <div className=\"flex h-full w-full items-center justify-center\">\n            <IconComponent className=\"h-5 w-5 text-gray-400\" />\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  if (layout === \"preview\") {\n    return (\n      <div\n        className={cn(\n          \"relative aspect-video w-full overflow-hidden bg-gray-100\",\n          className,\n        )}\n      >\n        {variant?.url && asset.category === \"images\" ? (\n          <img\n            src={variant.url}\n            alt={asset.name}\n            width={960}\n            height={540}\n            className=\"h-full w-full object-contain\"\n          />\n        ) : variant?.url && asset.category === \"videos\" ? (\n          <video\n            src={variant.url}\n            autoPlay\n            muted\n            controls\n            className=\"h-full w-full object-contain\"\n          />\n        ) : variant?.url && asset.category === \"documents\" ? (\n          <img\n            src={`${variant.url.split(\"?\")[0]}/ik-thumbnail.jpg`}\n            alt={asset.name}\n            width={960}\n            height={540}\n            className=\"h-full w-full object-contain\"\n          />\n        ) : (\n          <div className=\"flex h-full w-full items-center justify-center\">\n            <IconComponent className=\"h-16 w-16 text-gray-400\" />\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  // grid\n  return (\n    <div\n      className={cn(\n        \"relative aspect-square overflow-hidden rounded-t-lg bg-gray-100\",\n        className,\n      )}\n    >\n      {variant?.url && asset.category === \"images\" ? (\n        <img\n          src={variant.url}\n          alt={asset.name}\n          width={imageSize}\n          height={imageSize}\n          className=\"h-full w-full object-contain\"\n        />\n      ) : variant?.url && asset.category === \"videos\" ? (\n        <>\n          <img\n            src={`${variant.url.split(\"?\")[0]}/ik-thumbnail.jpg`}\n            alt={asset.name}\n            width={imageSize}\n            height={imageSize}\n            className=\"h-full w-full object-contain\"\n          />\n          <VideoDurationBadge src={variant.url} />\n        </>\n      ) : variant?.url && asset.category === \"documents\" ? (\n        <img\n          src={`${variant.url.split(\"?\")[0]}/ik-thumbnail.jpg`}\n          alt={asset.name}\n          width={imageSize}\n          height={imageSize}\n          className=\"h-full w-full object-contain\"\n        />\n      ) : (\n        <div className=\"flex h-full w-full items-center justify-center\">\n          <IconComponent className=\"h-6 w-6 text-gray-400\" />\n        </div>\n      )}\n    </div>\n  );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn } from \"@fluid-app/ui-primitives\";\n\nexport interface SelectionIndexBadgeProps {\n  index: number;\n  className?: string;\n}\n\nexport function SelectionIndexBadge({\n  index,\n  className,\n}: SelectionIndexBadgeProps): React.ReactElement {\n  const baseClasses =\n    \"flex items-center justify-center rounded-full bg-blue-600 text-xs font-medium text-white shadow-sm z-10\";\n  return (\n    <div\n      className={cn(\"absolute top-2 left-2 h-5 w-5\", baseClasses, className)}\n    >\n      {index}\n    </div>\n  );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { EllipsisVerticalIcon, XIcon, Trash2Icon } from \"lucide-react\";\n\nimport {\n  cn,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport type { DamAsset } from \"@fluid-app/file-picker-core\";\nimport { useIsMobile } from \"../../hooks/use-is-mobile\";\n\nexport type ActionsMenuPosition = \"list\" | \"grid\";\n\nexport interface AssetActionsMenuProps {\n  asset: DamAsset;\n  position: ActionsMenuPosition;\n  onDiscard: () => void;\n  onDelete: () => void;\n}\n\nexport function AssetActionsMenu({\n  position,\n  onDiscard,\n  onDelete,\n}: AssetActionsMenuProps): React.ReactElement {\n  const isMobile = useIsMobile();\n  const [isOpen, setIsOpen] = useState(false);\n  const wrapperClassName = isMobile\n    ? position === \"list\"\n      ? \"absolute top-1/2 right-2 z-10 -translate-y-1/2\"\n      : \"absolute top-2 right-2 z-10\"\n    : position === \"list\"\n      ? \"absolute top-1/2 right-2 z-10 hidden -translate-y-1/2 group-hover:block has-data-[state=open]:block\"\n      : \"absolute top-2 right-2 z-10 hidden group-hover:block has-data-[state=open]:block\";\n\n  return (\n    <div\n      className={cn(wrapperClassName)}\n      onClick={(e) => e.stopPropagation()}\n      onDoubleClick={(e) => e.stopPropagation()}\n    >\n      {isMobile ? (\n        <>\n          <button\n            type=\"button\"\n            onClick={() => setIsOpen(true)}\n            className=\"flex h-7 w-7 items-center justify-center rounded-md border border-gray-200 bg-white text-gray-500 shadow-sm transition-colors hover:bg-gray-50 hover:text-gray-700\"\n            aria-label=\"Asset actions\"\n          >\n            <EllipsisVerticalIcon className=\"h-3.5 w-3.5\" />\n          </button>\n          <MobileActionSheet\n            open={isOpen}\n            onOpenChange={setIsOpen}\n            title=\"Asset actions\"\n            actions={[\n              { id: \"discard\", label: \"Discard\", onSelect: onDiscard },\n              {\n                id: \"delete\",\n                label: \"Delete\",\n                variant: \"destructive\",\n                onSelect: onDelete,\n              },\n            ]}\n          />\n        </>\n      ) : (\n        <DropdownMenu>\n          <DropdownMenuTrigger className=\"flex h-7 w-7 items-center justify-center rounded-md border border-gray-200 bg-white text-gray-500 shadow-sm transition-colors hover:bg-gray-50 hover:text-gray-700\">\n            <EllipsisVerticalIcon className=\"h-3.5 w-3.5\" />\n          </DropdownMenuTrigger>\n          <DropdownMenuContent className=\"z-301\">\n            <DropdownMenuItem onClick={onDiscard}>\n              <XIcon className=\"h-3.5 w-3.5\" />\n              Discard\n            </DropdownMenuItem>\n            <DropdownMenuItem\n              onClick={onDelete}\n              className=\"text-red-600 focus:text-red-700\"\n            >\n              <Trash2Icon className=\"h-3.5 w-3.5\" />\n              Delete\n            </DropdownMenuItem>\n          </DropdownMenuContent>\n        </DropdownMenu>\n      )}\n    </div>\n  );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn } from \"@fluid-app/ui-primitives\";\nimport { getAssetCardClassName } from \"@fluid-app/file-picker-core\";\nimport { SelectionIndexBadge } from \"./DamLibraryAsset\";\n\nexport type LibraryAssetViewMode = \"grid\" | \"list\";\n\n/**\n * Normalized item for the shared library/media grid.\n * Consumers map DAM assets or media items to this shape and provide renderThumbnail.\n */\nexport interface LibraryAssetItem<T = unknown> {\n  id: string;\n  name: string;\n  subtitle?: string;\n  isSelected: boolean;\n  /** 0 = not selected, 1-based when selected (for badge) */\n  selectionIndex: number;\n  raw: T;\n}\n\nexport interface LibraryAssetGridProps<T> {\n  items: LibraryAssetItem<T>[];\n  viewMode: LibraryAssetViewMode;\n  thumbnailSize: number;\n  showNamesOnMedia: boolean;\n  renderThumbnail: (item: T, layout: LibraryAssetViewMode) => React.ReactNode;\n  onClick: (e: React.MouseEvent, id: string, index: number) => void;\n  onDoubleClick?: (e: React.MouseEvent, id: string, index: number) => void;\n  renderTopLeftOverlay?: (item: LibraryAssetItem<T>) => React.ReactNode;\n  renderTopRightOverlay?: (item: LibraryAssetItem<T>) => React.ReactNode;\n  wrapItem?: (\n    item: LibraryAssetItem<T>,\n    content: React.ReactNode,\n  ) => React.ReactNode;\n}\n\nfunction getGridClasses(\n  viewMode: LibraryAssetViewMode,\n  thumbnailSize: number,\n): string {\n  if (viewMode === \"list\") {\n    return \"grid-cols-1\";\n  }\n  if (thumbnailSize <= 35) {\n    return \"grid-cols-4 sm:grid-cols-6 md:grid-cols-8 lg:grid-cols-12 xl:grid-cols-16\";\n  }\n  if (thumbnailSize <= 50) {\n    return \"grid-cols-3 sm:grid-cols-5 md:grid-cols-7 lg:grid-cols-10 xl:grid-cols-14\";\n  }\n  if (thumbnailSize <= 70) {\n    return \"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8\";\n  }\n  if (thumbnailSize <= 90) {\n    return \"grid-cols-2 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-7\";\n  }\n  if (thumbnailSize <= 110) {\n    return \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6\";\n  }\n  if (thumbnailSize <= 130) {\n    return \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5\";\n  }\n  return \"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4\";\n}\n\nexport function LibraryAssetGrid<T>({\n  items,\n  viewMode,\n  thumbnailSize,\n  showNamesOnMedia,\n  renderThumbnail,\n  onClick,\n  onDoubleClick,\n  renderTopLeftOverlay,\n  renderTopRightOverlay,\n  wrapItem,\n}: LibraryAssetGridProps<T>): React.ReactElement {\n  const gridClasses = getGridClasses(viewMode, thumbnailSize);\n\n  const renderCard = (item: LibraryAssetItem<T>, index: number) => {\n    const handleClick = (e: React.MouseEvent) => {\n      e.preventDefault();\n      onClick(e, item.id, index);\n    };\n    const handleDoubleClick = onDoubleClick\n      ? (e: React.MouseEvent) => {\n          e.preventDefault();\n          e.stopPropagation();\n          onDoubleClick(e, item.id, index);\n        }\n      : undefined;\n\n    const content = (\n      <>\n        {renderTopRightOverlay?.(item)}\n        {viewMode === \"list\" ? (\n          <div className=\"flex items-start gap-4\">\n            <div className=\"h-12 w-12 shrink-0 overflow-hidden rounded bg-gray-100\">\n              {renderThumbnail(item.raw, \"list\")}\n            </div>\n            <div className=\"min-w-0 flex-1 text-start\">\n              <p className=\"truncate text-sm font-medium text-gray-900\">\n                {item.name}\n              </p>\n              {item.subtitle != null && item.subtitle !== \"\" && (\n                <p className=\"truncate text-xs text-gray-500\">\n                  {item.subtitle}\n                </p>\n              )}\n            </div>\n          </div>\n        ) : (\n          <>\n            <div className=\"relative aspect-square overflow-hidden rounded-t-lg bg-gray-100 p-2\">\n              {renderThumbnail(item.raw, \"grid\")}\n            </div>\n            {showNamesOnMedia && (\n              <div className=\"bg-gray-100 px-2 py-1.5\">\n                <p className=\"truncate text-xs font-medium text-gray-900\">\n                  {item.name}\n                </p>\n                {item.subtitle && (\n                  <p className=\"truncate text-[10px] text-gray-500\">\n                    {item.subtitle}\n                  </p>\n                )}\n              </div>\n            )}\n          </>\n        )}\n        {item.isSelected && item.selectionIndex > 0 && (\n          <SelectionIndexBadge index={item.selectionIndex} />\n        )}\n        {renderTopLeftOverlay?.(item)}\n      </>\n    );\n\n    return (\n      <div\n        role=\"button\"\n        tabIndex={0}\n        className={cn(\n          \"group relative cursor-pointer overflow-hidden rounded-lg transition-all\",\n          getAssetCardClassName(item.isSelected),\n          viewMode === \"list\" && \"flex items-start gap-4 p-3\",\n        )}\n        onClick={handleClick}\n        onDoubleClick={handleDoubleClick}\n        onKeyDown={(e) => {\n          if (e.key === \"Enter\" || e.key === \" \") {\n            e.preventDefault();\n            onClick(e as unknown as React.MouseEvent, item.id, index);\n          }\n        }}\n      >\n        {content}\n      </div>\n    );\n  };\n\n  return (\n    <div className={cn(\"grid gap-4\", gridClasses)}>\n      {items.map((item, index) => {\n        const card = renderCard(item, index);\n        const wrapped = wrapItem ? wrapItem(item, card) : card;\n        return <React.Fragment key={item.id}>{wrapped}</React.Fragment>;\n      })}\n    </div>\n  );\n}\n","import React, {\n  useState,\n  useEffect,\n  useCallback,\n  useImperativeHandle,\n  forwardRef,\n  useRef,\n  useMemo,\n} from \"react\";\nimport {\n  Button,\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  cn,\n  Dialog,\n  DialogOverlay,\n  DialogPortal,\n  Tooltip,\n  TooltipContent,\n  TooltipProvider,\n  TooltipTrigger,\n  useZodForm,\n} from \"@fluid-app/ui-primitives\";\nimport { FolderIcon, LoaderIcon, ChevronDownIcon } from \"lucide-react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport {\n  damQueryKeys,\n  SORT_OPTIONS,\n  createAssetClickHandlers,\n  type CreateDamAssetPathForAssetsParams,\n  type FilePickerConfig,\n  type FilePickerResult,\n  type DamAsset,\n  type DamAssetApi,\n  type SortOptionId,\n} from \"@fluid-app/file-picker-core\";\nimport { useDamLibrary } from \"../hooks/use-dam-library\";\nimport type { UseDamLibraryControlledSearch } from \"../hooks/use-dam-library\";\nimport { useFilePickerApi } from \"../context/FilePickerApiContext\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\nimport { AddFolderModal, folderSchema } from \"./AddFolderModal\";\nimport { ActionModal } from \"./AssetActions\";\nimport type { ViewMode } from \"./FilePickerHeader\";\nimport { AssetThumbnail, AssetActionsMenu } from \"./DamLibraryAsset\";\nimport {\n  LibraryAssetGrid,\n  type LibraryAssetItem,\n  type LibraryAssetViewMode,\n} from \"./LibraryAssetGrid\";\n\ninterface DamLibraryProps {\n  config: FilePickerConfig;\n  onAssetsSelected: (results: FilePickerResult[]) => void;\n  onSelectionChange?: (\n    count: number,\n    files?: FilePickerResult[],\n    variantCounts?: Record<string, number>,\n  ) => void;\n  onConfirmAndClose?: (results: FilePickerResult[]) => void;\n  onSearchingChange?: (searching: boolean) => void;\n  showVariants?: boolean;\n  searchQuery?: string;\n  onSearchChange?: (value: string) => void;\n  thumbnailSize?: number;\n  viewMode?: ViewMode;\n  showNamesOnMedia?: boolean;\n  sortOption?: SortOptionId;\n  onFoldersChange?: (folders: string[]) => void;\n  previewContainer?: HTMLDivElement | null;\n  previewAsset?: DamAsset | null;\n  onPreviewAssetChange?: (asset: DamAsset | null) => void;\n}\n\nexport interface DamLibraryRef {\n  clearSelection: () => void;\n  confirmSelection: () => void;\n  confirmAndClose: () => void;\n  getSelectedResults: () => FilePickerResult[];\n  deselectAssetByCode: (assetCode: string) => void;\n  selectAssetsByCodes: (assetCodes: string[]) => string[];\n  addAssetToSelection: (asset: DamAsset | DamAssetApi) => void;\n  openAddFolderModal: () => void;\n  addToExistingFolder: (folderPath: string) => void;\n  getVariantCount: (assetCode: string) => number;\n  getAssetWithVariants: (assetCode: string) => DamAsset | null;\n  setVariantForAsset: (assetCode: string, variantId: string) => void;\n}\n\ntype ActionType = {\n  type: \"Discard\" | \"Delete\";\n  item: DamAsset;\n};\n\ntype DamBreadcrumbItem = { label: string; path: string; isCurrent: boolean };\n\nfunction getBreadcrumbsFromPath(currentPath: string): DamBreadcrumbItem[] {\n  if (currentPath === \"*\") {\n    return [{ label: \"All assets\", path: \"*\", isCurrent: true }];\n  }\n  const normalized = currentPath.endsWith(\".*\")\n    ? currentPath.slice(0, -3)\n    : currentPath;\n  const segments = normalized.split(\".\").filter((s): s is string => Boolean(s));\n  if (segments.length === 0) {\n    return [{ label: \"All assets\", path: \"*\", isCurrent: true }];\n  }\n  const crumbs: DamBreadcrumbItem[] = [\n    { label: \"All assets\", path: \"*\", isCurrent: false },\n  ];\n  let pathAcc = \"\";\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i] as string;\n    pathAcc = pathAcc ? `${pathAcc}.${segment}` : segment;\n    crumbs.push({\n      label: segment,\n      path: `${pathAcc}.*`,\n      isCurrent: i === segments.length - 1,\n    });\n  }\n  return crumbs;\n}\n\nexport const DamLibrary: React.ForwardRefExoticComponent<\n  DamLibraryProps & React.RefAttributes<DamLibraryRef>\n> = forwardRef<DamLibraryRef, DamLibraryProps>(\n  (\n    {\n      config,\n      onAssetsSelected,\n      onSelectionChange,\n      onConfirmAndClose,\n      onSearchingChange,\n      showVariants: _showVariants = false,\n      searchQuery: controlledSearchQuery,\n      onSearchChange: controlledSetSearchQuery,\n      thumbnailSize = 100,\n      viewMode = \"grid\",\n      showNamesOnMedia = true,\n      sortOption,\n      onFoldersChange,\n      previewContainer,\n      previewAsset,\n      onPreviewAssetChange,\n    },\n    ref,\n  ) => {\n    \"use no memo\";\n\n    const api = useFilePickerApi();\n    const { companyId, toast } = useFilePickerContext();\n    const queryClient = useQueryClient();\n\n    const controlledSearch: UseDamLibraryControlledSearch | undefined =\n      controlledSearchQuery !== undefined && controlledSetSearchQuery\n        ? {\n            searchQuery: controlledSearchQuery,\n            setSearchQuery: controlledSetSearchQuery,\n          }\n        : undefined;\n\n    const {\n      currentPath,\n      navigateToPath,\n      selectAsset,\n      deselectAsset,\n      clearSelection,\n      clearAndSelectAsset,\n      getSelectedResults,\n      getSelectionIndex,\n      selectedAssets,\n      selectedAssetsMap,\n      folders,\n      assets,\n      isLoading,\n      isSearching,\n      hasNextPage,\n      loadMore,\n      isFetching,\n    } = useDamLibrary(config.fileTypeFilter, controlledSearch);\n\n    const breadcrumbs = useMemo(\n      () => getBreadcrumbsFromPath(currentPath),\n      [currentPath],\n    );\n\n    const sortedAssets = useMemo(() => {\n      if (!sortOption || !assets?.length) return assets ?? [];\n      const option = SORT_OPTIONS.find((o) => o.id === sortOption);\n      if (!option) return assets ?? [];\n\n      return [...(assets ?? [])].sort((a, b) => {\n        if (option.sortBy === \"name\") {\n          const cmp = (a.name ?? \"\").localeCompare(b.name ?? \"\", undefined, {\n            sensitivity: \"base\",\n          });\n          return option.sortDirection === \"asc\" ? cmp : -cmp;\n        }\n        if (option.sortBy === \"created_at\") {\n          const aId = a.id ?? 0;\n          const bId = b.id ?? 0;\n          const cmp = aId - bId;\n          return option.sortDirection === \"asc\" ? cmp : -cmp;\n        }\n        return 0;\n      });\n    }, [assets, sortOption]);\n\n    useEffect(() => {\n      onSearchingChange?.(isSearching);\n    }, [isSearching, onSearchingChange]);\n\n    useEffect(() => {\n      onFoldersChange?.(folders ?? []);\n    }, [folders, onFoldersChange]);\n\n    const [open, setOpen] = useState(false);\n\n    const form = useZodForm(folderSchema, {\n      defaultValues: {\n        folderName: \"\",\n      },\n    });\n\n    const { mutate, isPending } = useMutation({\n      mutationFn: (data: CreateDamAssetPathForAssetsParams[]) => {\n        const promises = data.map((params) =>\n          api.createDamAssetPathForAssets(params),\n        );\n        return Promise.all(promises);\n      },\n      onSuccess: () => {\n        toast.success(\"Assets moved to folder successfully\");\n        queryClient.invalidateQueries({ queryKey: damQueryKeys.all });\n        form.reset();\n        setOpen(false);\n        clearSelection();\n      },\n      onError: () => {\n        toast.error(\"Failed to move assets to folder.\");\n      },\n    });\n\n    const [action, setAction] = useState<ActionType | null>(null);\n    const lastClickedIndexRef = useRef<number>(-1);\n    const pendingClickTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(\n      null,\n    );\n\n    const { mutate: deleteAssetMutate, isPending: isDeleting } = useMutation({\n      mutationFn: (assetCode: string) => api.deleteDamAsset(assetCode),\n      onSuccess: () => {\n        toast.success(\"Asset deleted successfully\");\n        queryClient.invalidateQueries({ queryKey: damQueryKeys.all });\n      },\n      onError: () => {\n        toast.error(\"Failed to delete asset.\");\n      },\n    });\n\n    const { mutate: discardAssetMutate, isPending: isDiscarding } = useMutation(\n      {\n        mutationFn: (assetCode: string) => api.discardDamAsset(assetCode),\n        onSuccess: () => {\n          toast.success(\"Asset discarded successfully\");\n          queryClient.invalidateQueries({ queryKey: damQueryKeys.all });\n        },\n        onError: () => {\n          toast.error(\"Failed to discard asset.\");\n        },\n      },\n    );\n\n    const getAssetBaseName = (fileName: string): string => {\n      const dotIdx = fileName.lastIndexOf(\".\");\n      const rawName = dotIdx > 0 ? fileName.substring(0, dotIdx) : fileName;\n      return rawName.replace(/[^a-zA-Z0-9_]/g, \"_\") || \"file\";\n    };\n\n    const handleNewFolder = useCallback(\n      (data: { folderName: string }) => {\n        if (!companyId) {\n          toast.error(\"Company ID is required to create folders\");\n          return;\n        }\n        const promises = getSelectedResults().map((item) => {\n          const basePath = companyId.toString() + \".\";\n          const name = getAssetBaseName(item.metadata.file_name);\n\n          return {\n            code: item.asset_code,\n            asset_paths: [`${basePath}${data.folderName}.${name}`],\n          };\n        });\n\n        mutate(promises);\n      },\n      [getSelectedResults, companyId, mutate, toast],\n    );\n\n    const handleAddToExistingFolder = useCallback(\n      (folderPath: string) => {\n        const promises = getSelectedResults().map((item) => {\n          const name = getAssetBaseName(item.metadata.file_name);\n\n          return {\n            code: item.asset_code,\n            asset_paths: [`${folderPath}.${name}`],\n          };\n        });\n\n        mutate(promises);\n      },\n      [getSelectedResults, mutate],\n    );\n\n    // Expose methods to parent component\n    useImperativeHandle(\n      ref,\n      () => ({\n        clearSelection: () => {\n          clearSelection();\n        },\n        confirmSelection: () => {\n          const results = getSelectedResults();\n          onAssetsSelected(results);\n        },\n        confirmAndClose: () => {\n          const results = getSelectedResults();\n          if (onConfirmAndClose) {\n            onConfirmAndClose(results);\n          } else {\n            onAssetsSelected(results);\n          }\n        },\n        getSelectedResults: () => {\n          return getSelectedResults();\n        },\n        deselectAssetByCode: (assetCode: string) => {\n          deselectAsset(assetCode);\n        },\n        addAssetToSelection: (asset: DamAsset | DamAssetApi) => {\n          selectAsset(asset);\n        },\n        selectAssetsByCodes: (assetCodes: string[]): string[] => {\n          const setToSelect = new Set(assetCodes);\n          const selected: string[] = [];\n          for (const asset of sortedAssets || []) {\n            if (setToSelect.has(asset.asset_code)) {\n              selectAsset(asset);\n              selected.push(asset.asset_code);\n            }\n          }\n          return selected;\n        },\n        openAddFolderModal: () => {\n          setOpen(true);\n        },\n        addToExistingFolder: (folderPath: string) => {\n          handleAddToExistingFolder(folderPath);\n        },\n        getVariantCount: (assetCode: string) => {\n          const entry = selectedAssetsMap.get(assetCode);\n          return entry?.asset?.variants?.length ?? 0;\n        },\n        getAssetWithVariants: (assetCode: string) => {\n          const entry = selectedAssetsMap.get(assetCode);\n          return entry?.asset ?? null;\n        },\n        setVariantForAsset: (assetCode: string, variantId: string) => {\n          const entry = selectedAssetsMap.get(assetCode);\n          const asset = entry?.asset;\n          if (asset) {\n            if (config.maxFiles === 1) {\n              clearAndSelectAsset(asset, variantId);\n            } else {\n              selectAsset(asset, variantId);\n            }\n          }\n        },\n      }),\n      [\n        clearSelection,\n        getSelectedResults,\n        onAssetsSelected,\n        onConfirmAndClose,\n        sortedAssets,\n        deselectAsset,\n        selectAsset,\n        clearAndSelectAsset,\n        handleAddToExistingFolder,\n        selectedAssetsMap,\n        config.maxFiles,\n      ],\n    );\n\n    // Keep a stable ref to onSelectionChange to avoid re-running the effect\n    // when the parent passes an unstable callback reference.\n    const onSelectionChangeRef = useRef(onSelectionChange);\n    onSelectionChangeRef.current = onSelectionChange;\n\n    // Notify parent when selection count changes (include variant counts so parent can enable \"Change variant\" without reading ref during render)\n    useEffect(() => {\n      const count = (selectedAssets ?? []).length;\n      const files = getSelectedResults();\n      const variantCounts: Record<string, number> = {};\n      selectedAssetsMap.forEach((entry, assetCode) => {\n        const n = entry?.asset?.variants?.length ?? 0;\n        if (n > 0) variantCounts[assetCode] = n;\n      });\n      onSelectionChangeRef.current?.(count, files, variantCounts);\n    }, [selectedAssets, getSelectedResults, selectedAssetsMap]);\n\n    const handleAssetClick = (\n      e: React.MouseEvent,\n      asset: DamAsset,\n      index: number,\n    ) => {\n      const originalVariant =\n        asset.variants.find((v) => v.ready) || asset.variants[0];\n\n      if (e.shiftKey && config.maxFiles !== 1) {\n        // Range select: from last clicked to current index\n        const last = lastClickedIndexRef.current;\n        const from = last >= 0 ? Math.min(last, index) : index;\n        const to = last >= 0 ? Math.max(last, index) : index;\n        const toSelect = sortedAssets?.slice(from, to + 1) ?? [];\n        const maxToAdd = config.maxFiles\n          ? Math.max(0, config.maxFiles - selectedAssets.length)\n          : toSelect.length;\n        let added = 0;\n        toSelect.forEach((a: DamAsset) => {\n          if (selectedAssets.includes(a.asset_code)) return;\n          if (added >= maxToAdd) return;\n          const v =\n            a.variants.find((v: DamAsset[\"variants\"][number]) => v.ready) ||\n            a.variants[0];\n          selectAsset(a, v?.id);\n          added += 1;\n        });\n        lastClickedIndexRef.current = index;\n        return;\n      }\n\n      if ((e.metaKey || e.ctrlKey) && config.maxFiles !== 1) {\n        // Toggle selection (add only if under maxFiles)\n        if (selectedAssets.includes(asset.asset_code)) {\n          deselectAsset(asset.asset_code);\n        } else if (\n          !config.maxFiles ||\n          selectedAssets.length < config.maxFiles\n        ) {\n          selectAsset(asset, originalVariant?.id);\n        }\n        lastClickedIndexRef.current = index;\n        return;\n      }\n\n      lastClickedIndexRef.current = index;\n\n      if (selectedAssets.includes(asset.asset_code)) {\n        deselectAsset(asset.asset_code);\n      } else {\n        if (config.maxFiles === 1) {\n          clearAndSelectAsset(asset, originalVariant?.id);\n        } else {\n          selectAsset(asset, originalVariant?.id);\n        }\n      }\n    };\n\n    const closeAction = () => setAction(null);\n\n    const libraryItems = useMemo((): LibraryAssetItem<DamAsset>[] => {\n      if (!sortedAssets?.length) return [];\n      return sortedAssets.map((asset: DamAsset) => {\n        const isSelected = selectedAssets.includes(asset.asset_code);\n        const selectionIndex = getSelectionIndex(asset.asset_code);\n        return {\n          id: asset.asset_code,\n          name: asset.name ?? \"\",\n          subtitle: `${asset.category} • ${asset.variants?.length ?? 0} variant${(asset.variants?.length ?? 0) !== 1 ? \"s\" : \"\"}`,\n          isSelected,\n          selectionIndex,\n          raw: asset,\n        };\n      });\n    }, [sortedAssets, selectedAssets, getSelectionIndex]);\n\n    const getImageSize = () => {\n      const baseSize = 200;\n      return Math.round(baseSize * (thumbnailSize / 100));\n    };\n\n    return (\n      <>\n        <AddFolderModal\n          open={open}\n          setOpen={setOpen}\n          onSubmit={handleNewFolder}\n          form={form}\n          isLoading={isPending}\n        />\n\n        <ActionModal\n          open={action?.type === \"Delete\"}\n          description={`This asset **${action?.item.name}** will be permanently deleted.`}\n          onCancel={closeAction}\n          onAction={() =>\n            deleteAssetMutate(action?.item.asset_code ?? \"\", {\n              onSuccess: closeAction,\n            })\n          }\n          title=\"Are you sure?\"\n          loading={isDeleting}\n        />\n\n        <ActionModal\n          actionLabel=\"Discard\"\n          open={action?.type === \"Discard\"}\n          description={`This asset **${action?.item.name}** will be discarded from your library and will be permanently deleted after a month!`}\n          onAction={() =>\n            discardAssetMutate(action?.item.asset_code ?? \"\", {\n              onSuccess: closeAction,\n            })\n          }\n          title=\"Are you sure?\"\n          onCancel={closeAction}\n          actionVariant=\"default\"\n          loading={isDiscarding}\n        />\n\n        {/* Preview popup on double-click */}\n        <Dialog\n          open={previewAsset !== null}\n          onOpenChange={(open) => !open && onPreviewAssetChange?.(null)}\n        >\n          <DialogPortal container={previewContainer ?? undefined}>\n            <DialogOverlay className=\"z-9999 bg-black/70 backdrop-blur-none\" />\n            <DialogPrimitive.Content\n              className=\"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 fixed top-1/2 left-1/2 z-10000 max-h-[85vh] w-full max-w-4xl -translate-x-1/2 -translate-y-1/2 overflow-hidden bg-white shadow-xl\"\n              style={{ zIndex: 10000 }}\n              aria-label=\"Asset preview\"\n            >\n              {previewAsset && (\n                <div className=\"flex max-h-[85vh] flex-col\">\n                  <AssetThumbnail\n                    asset={previewAsset}\n                    variant={\n                      previewAsset.variants.find((x) => x.ready) ||\n                      previewAsset.variants[0]\n                    }\n                    layout=\"preview\"\n                  />\n                </div>\n              )}\n            </DialogPrimitive.Content>\n          </DialogPortal>\n        </Dialog>\n\n        <div>\n          <div className=\"space-y-4\">\n            <Breadcrumb>\n              <BreadcrumbList className=\"min-w-0 flex-wrap\">\n                {breadcrumbs.map((crumb, index) => (\n                  <React.Fragment key={crumb.path}>\n                    <BreadcrumbItem className=\"inline-flex min-w-0\">\n                      {crumb.isCurrent ? (\n                        <BreadcrumbPage className=\"max-w-48 truncate sm:max-w-xs\">\n                          {crumb.label}\n                        </BreadcrumbPage>\n                      ) : (\n                        <Button\n                          variant=\"ghost\"\n                          type=\"button\"\n                          onClick={() => navigateToPath(crumb.path)}\n                          className={cn(\n                            \"hover:text-foreground max-w-48 truncate transition-colors sm:max-w-xs\",\n                          )}\n                        >\n                          {crumb.label}\n                        </Button>\n                      )}\n                    </BreadcrumbItem>\n                    {index < breadcrumbs.length - 1 && <BreadcrumbSeparator />}\n                  </React.Fragment>\n                ))}\n              </BreadcrumbList>\n            </Breadcrumb>\n\n            {isLoading || isSearching ? (\n              <div className=\"flex items-center justify-center py-12\">\n                <div className=\"text-center\">\n                  <div className=\"mx-auto mb-2 h-8 w-8 animate-spin rounded-full border-2 border-blue-600 border-t-transparent\"></div>\n                  <p className=\"text-sm text-gray-500\">\n                    {isSearching ? \"Searching...\" : \"Loading assets...\"}\n                  </p>\n                </div>\n              </div>\n            ) : (\n              <div className=\"space-y-6\">\n                {folders?.length > 0 && (\n                  <div className=\"space-y-6\">\n                    <h3 className=\"text-sm font-medium text-gray-900\">\n                      Folders\n                    </h3>\n\n                    <div className=\"grid grid-cols-2 gap-3 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5\">\n                      {folders.map((folder) => (\n                        <Button\n                          variant=\"ghost\"\n                          key={folder}\n                          onClick={() => navigateToPath(folder + \".*\")}\n                          className=\"group flex items-center gap-3 rounded-lg border border-gray-200 bg-white p-3 text-left shadow-sm transition-colors hover:border-gray-300 hover:bg-gray-50\"\n                        >\n                          <div className=\"flex h-8 w-8 items-center justify-center rounded-md bg-blue-50\">\n                            <FolderIcon className=\"h-4 w-4 text-blue-600\" />\n                          </div>\n                          <span className=\"truncate text-sm font-medium text-gray-900 group-hover:text-gray-700\">\n                            {folder.split(\".\").pop()}\n                          </span>\n                        </Button>\n                      ))}\n                    </div>\n                  </div>\n                )}\n\n                {sortedAssets?.length > 0 && (\n                  <div>\n                    <div className=\"mb-4 flex items-center justify-between\">\n                      <h3 className=\"text-sm font-medium text-gray-900\">\n                        Assets\n                      </h3>\n                    </div>\n\n                    <LibraryAssetGrid<DamAsset>\n                      items={libraryItems}\n                      viewMode={viewMode as LibraryAssetViewMode}\n                      thumbnailSize={thumbnailSize}\n                      showNamesOnMedia={showNamesOnMedia}\n                      renderThumbnail={(raw, layout) => {\n                        const defaultVariant =\n                          raw.variants.find((v) => v.ready) || raw.variants[0];\n                        return (\n                          <AssetThumbnail\n                            asset={raw}\n                            variant={defaultVariant}\n                            layout={layout}\n                            imageSize={getImageSize()}\n                          />\n                        );\n                      }}\n                      onClick={(e, id, index) => {\n                        const asset = sortedAssets?.[index];\n                        if (!asset) return;\n                        const handlers = createAssetClickHandlers(\n                          pendingClickTimeoutRef,\n                          handleAssetClick,\n                          (a) => onPreviewAssetChange?.(a),\n                          asset,\n                          index,\n                        );\n                        handlers.onClick(e);\n                      }}\n                      onDoubleClick={(e, _id, index) => {\n                        const asset = sortedAssets?.[index];\n                        if (!asset) return;\n                        const handlers = createAssetClickHandlers(\n                          pendingClickTimeoutRef,\n                          handleAssetClick,\n                          (a) => onPreviewAssetChange?.(a),\n                          asset,\n                          index,\n                        );\n                        handlers.onDoubleClick(e);\n                      }}\n                      renderTopRightOverlay={(item) => (\n                        <AssetActionsMenu\n                          asset={item.raw}\n                          position={viewMode === \"list\" ? \"list\" : \"grid\"}\n                          onDiscard={() =>\n                            setAction({ item: item.raw, type: \"Discard\" })\n                          }\n                          onDelete={() =>\n                            setAction({ item: item.raw, type: \"Delete\" })\n                          }\n                        />\n                      )}\n                      wrapItem={(item, content) => (\n                        <TooltipProvider key={item.id}>\n                          <Tooltip>\n                            <TooltipTrigger asChild>{content}</TooltipTrigger>\n                            <TooltipContent>{item.name}</TooltipContent>\n                          </Tooltip>\n                        </TooltipProvider>\n                      )}\n                    />\n                    {hasNextPage && (\n                      <div className=\"mt-4 flex justify-center\">\n                        <Button\n                          variant=\"secondary\"\n                          size=\"sm\"\n                          onClick={(e) => {\n                            e.preventDefault();\n                            e.stopPropagation();\n                            loadMore();\n                          }}\n                          disabled={isFetching}\n                        >\n                          {isFetching ? (\n                            <>\n                              <LoaderIcon className=\"mr-2 h-3 w-3 animate-spin\" />\n                              Loading...\n                            </>\n                          ) : (\n                            <>\n                              <ChevronDownIcon className=\"mr-2 h-3 w-3\" />\n                              Load more\n                            </>\n                          )}\n                        </Button>\n                      </div>\n                    )}\n                  </div>\n                )}\n\n                {folders?.length === 0 &&\n                  sortedAssets?.length === 0 &&\n                  !isLoading && (\n                    <div className=\"flex flex-col items-center justify-center py-12\">\n                      <div className=\"mb-4 rounded-full bg-gray-100 p-3\">\n                        <FolderIcon className=\"h-6 w-6 text-gray-400\" />\n                      </div>\n                      <h3 className=\"mb-1 text-sm font-medium text-gray-900\">\n                        No assets found\n                      </h3>\n                      <p className=\"text-xs text-gray-500\">\n                        Try searching for something else or navigate to a\n                        different folder\n                      </p>\n                    </div>\n                  )}\n              </div>\n            )}\n          </div>\n        </div>\n      </>\n    );\n  },\n);\n\nDamLibrary.displayName = \"DamLibrary\";\n","import React from \"react\";\nimport { IMPLEMENTED_PICKER_METHODS } from \"@fluid-app/file-picker-core\";\nimport type { PickerMethod } from \"@fluid-app/file-picker-core\";\nimport { Button } from \"@fluid-app/ui-primitives\";\n\ninterface FilePickerSidebarProps {\n  currentStep: \"select\" | \"details\";\n  activeMethod: PickerMethod;\n  onMethodChange: (method: PickerMethod) => void;\n  methods: Array<{\n    id: PickerMethod;\n    label: string;\n    icon: React.ComponentType<{ className?: string }>;\n    description: string;\n  }>;\n}\n\nexport const FilePickerSidebar: React.FC<FilePickerSidebarProps> = ({\n  currentStep,\n  activeMethod,\n  onMethodChange,\n  methods,\n}) => {\n  if (currentStep !== \"select\") {\n    return null;\n  }\n\n  // Desktop-only: a 256px rail doesn't fit a phone, so below `md` the header\n  // title doubles as the method switcher.\n  return (\n    <div className=\"hidden h-full w-64 flex-col rounded-tl-lg border-r border-gray-200 bg-gray-50 md:flex\">\n      <div className=\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto p-2\">\n        {/* Upload Files Title */}\n        <div className=\"flex flex-col gap-2 pt-3\">\n          <h3 className=\"text-sm font-semibold text-gray-900\">Choose source</h3>\n        </div>\n\n        {/* Main Tabs */}\n        <div className=\"flex w-full min-w-0 flex-col gap-1 p-2\">\n          {methods\n            .filter((method) => IMPLEMENTED_PICKER_METHODS.includes(method.id))\n            .map((method) => (\n              <Button\n                variant=\"ghost\"\n                key={method.id}\n                onClick={() => onMethodChange(method.id)}\n                className={`flex h-8 w-full cursor-pointer items-center justify-start gap-2 rounded-md p-2 text-left text-sm transition-colors hover:bg-gray-100 ${\n                  activeMethod === method.id\n                    ? \"bg-gray-100 font-medium text-gray-900\"\n                    : \"text-gray-700\"\n                }`}\n              >\n                {React.createElement(method.icon, {\n                  className: \"h-4 w-4 text-gray-500\",\n                })}\n                <span className=\"font-semibold\">{method.label}</span>\n              </Button>\n            ))}\n        </div>\n\n        {/* Cloud Storage */}\n        {/* <div className=\"flex w-full min-w-0 flex-col gap-1 p-2\">\n          <div className=\"mb-1 px-2 text-xs font-medium text-gray-500\">\n            Cloud Storage\n          </div>\n          {methods\n            .filter((method) =>\n              [\"google-drive\", \"dropbox\"].includes(method.id),\n            )\n            .map((method) => {\n              const Icon = method.icon;\n              return (\n                <button\n                  key={method.id}\n                  onClick={() => onMethodChange(method.id)}\n                  className={`flex h-8 w-full cursor-pointer items-center gap-2 rounded-md p-2 text-left text-sm transition-colors hover:bg-blue-50 ${\n                    activeMethod === method.id\n                      ? \"bg-blue-50 font-medium text-blue-600\"\n                      : \"text-gray-700\"\n                  }`}\n                >\n                  <Icon className=\"h-4 w-4 text-gray-500\" />\n                  <span className=\"font-semibold\">{method.label}</span>\n                </button>\n              );\n            })}\n        </div> */}\n\n        {/* Social Media */}\n        {/* <div className=\"flex w-full min-w-0 flex-col gap-1 p-2\">\n          <div className=\"mb-1 px-2 text-xs font-medium text-gray-500\">\n            Social Media\n          </div>\n          {methods\n            .filter((method) =>\n              [\"instagram\", \"facebook\", \"tiktok\"].includes(method.id),\n            )\n            .map((method) => {\n              const Icon = method.icon;\n              return (\n                <button\n                  key={method.id}\n                  onClick={() => onMethodChange(method.id)}\n                  className={`flex h-8 w-full cursor-pointer items-center gap-2 rounded-md p-2 text-left text-sm transition-colors hover:bg-blue-50 ${\n                    activeMethod === method.id\n                      ? \"bg-blue-50 font-medium text-blue-600\"\n                      : \"text-gray-700\"\n                  }`}\n                >\n                  <Icon className=\"h-4 w-4 text-gray-500\" />\n                  <span className=\"font-semibold\">{method.label}</span>\n                </button>\n              );\n            })}\n        </div> */}\n      </div>\n    </div>\n  );\n};\n","import React from \"react\";\nimport {\n  Button,\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@fluid-app/ui-primitives\";\nimport {\n  DAM_TYPE_FILTER_OPTIONS,\n  FILTER_VALUE_ALL,\n} from \"@fluid-app/file-picker-core\";\n\nexport interface FilePickerFiltersState {\n  type: string;\n  date: string;\n  uploadedBy: string;\n  usageStatus: string;\n  source: string;\n}\n\nconst defaultFilters: FilePickerFiltersState = {\n  type: \"\",\n  date: \"\",\n  uploadedBy: \"\",\n  usageStatus: \"\",\n  source: \"\",\n};\n\ninterface FilePickerFiltersPanelProps {\n  filters: FilePickerFiltersState;\n  onFiltersChange: (filters: FilePickerFiltersState) => void;\n  onClear: () => void;\n  onDone: () => void;\n}\n\nexport const FilePickerFiltersPanel: React.FC<FilePickerFiltersPanelProps> = ({\n  filters,\n  onFiltersChange,\n  onClear,\n  onDone,\n}) => {\n  const updateFilter = <K extends keyof FilePickerFiltersState>(\n    key: K,\n    value: FilePickerFiltersState[K],\n  ) => {\n    onFiltersChange({ ...filters, [key]: value });\n  };\n\n  const hasActiveFilters =\n    filters.type !== \"\" ||\n    filters.date !== \"\" ||\n    filters.uploadedBy !== \"\" ||\n    filters.usageStatus !== \"\" ||\n    filters.source !== \"\";\n\n  return (\n    <div className=\"flex w-80 flex-col gap-4 p-4\">\n      <div className=\"flex items-center justify-between\">\n        <span className=\"text-sm font-medium text-gray-900\">Filters</span>\n        {hasActiveFilters && (\n          <button\n            type=\"button\"\n            onClick={onClear}\n            className=\"text-sm text-blue-600 hover:underline\"\n          >\n            Clear\n          </button>\n        )}\n      </div>\n\n      <div className=\"grid gap-4\">\n        <div className=\"grid gap-2\">\n          <label className=\"text-sm font-medium text-gray-700\">Type</label>\n          <Select\n            value={filters.type || FILTER_VALUE_ALL}\n            onValueChange={(value) =>\n              updateFilter(\"type\", value === FILTER_VALUE_ALL ? \"\" : value)\n            }\n          >\n            <SelectTrigger className=\"z-[350]\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent className=\"z-[350]\">\n              {DAM_TYPE_FILTER_OPTIONS.map((option) => (\n                <SelectItem key={option.value} value={option.value}>\n                  {option.label}\n                </SelectItem>\n              ))}\n            </SelectContent>\n          </Select>\n        </div>\n\n        {/* Commented out until we have the date, source, uploaded by, and usage status filters implemented */}\n        {/* <div className=\"grid gap-2\">\n          <label className=\"text-sm font-medium text-gray-700\">Date</label>\n          ...\n        </div>\n\n        <div className=\"grid gap-2\">\n          <label className=\"text-sm font-medium text-gray-700\">\n            Uploaded by\n          </label>\n          ...\n        </div>\n\n        <div className=\"grid gap-2\">\n          <label className=\"text-sm font-medium text-gray-700\">\n            Usage status\n          </label>\n          ...\n        </div>\n\n        <div className=\"grid gap-2\">\n          <label className=\"text-sm font-medium text-gray-700\">Source</label>\n          ...\n        </div> */}\n      </div>\n\n      <div className=\"flex justify-end gap-2 border-t border-gray-100 pt-4\">\n        <Button variant=\"secondary\" size=\"sm\" onClick={onDone}>\n          Done\n        </Button>\n      </div>\n    </div>\n  );\n};\n\nFilePickerFiltersPanel.displayName = \"FilePickerFiltersPanel\";\n\nexport { defaultFilters };\n","import React, { useState } from \"react\";\nimport {\n  XIcon,\n  MinusIcon,\n  PlusIcon,\n  ChevronDownIcon,\n  FolderIcon,\n  FolderPlusIcon,\n  TypeIcon,\n  LayoutGridIcon,\n  ListIcon,\n  SlidersHorizontalIcon,\n  ArrowUpDownIcon,\n  CheckIcon,\n} from \"lucide-react\";\nimport {\n  Button,\n  Input,\n  Slider,\n  Tooltip,\n  TooltipTrigger,\n  TooltipContent,\n  TooltipProvider,\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { MobileBottomSheet } from \"@fluid-app/ui-components/components/MobileBottomSheet\";\n\nimport { IMPLEMENTED_PICKER_METHODS } from \"@fluid-app/file-picker-core\";\nimport type { PickerMethod } from \"@fluid-app/file-picker-core\";\nimport {\n  FilePickerFiltersPanel,\n  defaultFilters as defaultFiltersState,\n} from \"./FilePickerFiltersPanel\";\nimport type { FilePickerFiltersState } from \"./FilePickerFiltersPanel\";\nimport { SORT_OPTIONS } from \"@fluid-app/file-picker-core\";\nimport type { SortOptionId } from \"@fluid-app/file-picker-core\";\nimport { useIsMobile } from \"../hooks/use-is-mobile\";\n\nexport type ViewMode = \"grid\" | \"list\";\n\ninterface FilePickerHeaderProps {\n  currentStep: \"select\" | \"details\";\n  activeMethod: PickerMethod;\n  methods: Array<{\n    id: PickerMethod;\n    label: string;\n    icon: React.ComponentType<{ className?: string }>;\n    description: string;\n  }>;\n  onClose: () => void;\n  /**\n   * Switches the active method. Required on mobile, where the header title is\n   * the only method switcher — the sidebar that owns it is desktop-only.\n   */\n  onMethodChange?: (method: PickerMethod) => void;\n  damSearchQuery?: string;\n  onDamSearchChange?: (value: string) => void;\n  damSearching?: boolean;\n  thumbnailSize?: number;\n  onThumbnailSizeChange?: (size: number) => void;\n  viewMode?: ViewMode;\n  onViewModeChange?: (mode: ViewMode) => void;\n  showNamesOnMedia?: boolean;\n  onShowNamesOnMediaChange?: (value: boolean) => void;\n  hasSelectedFiles?: boolean;\n  damFolders?: string[];\n  onAddToNewFolder?: () => void;\n  onAddToExistingFolder?: (folderPath: string) => void;\n  filters?: FilePickerFiltersState;\n  onFiltersChange?: (filters: FilePickerFiltersState) => void;\n  onFiltersClear?: () => void;\n  sortOption?: SortOptionId;\n  onSortChange?: (optionId: SortOptionId) => void;\n  unsplashSearchQuery?: string;\n  onUnsplashSearchChange?: (value: string) => void;\n  unsplashSearching?: boolean;\n  isUnsplashUploading?: boolean;\n}\n\nexport const FilePickerHeader: React.FC<FilePickerHeaderProps> = ({\n  currentStep,\n  activeMethod,\n  methods,\n  onClose,\n  onMethodChange,\n  damSearchQuery = \"\",\n  onDamSearchChange,\n  damSearching = false,\n  thumbnailSize = 100,\n  onThumbnailSizeChange,\n  viewMode = \"grid\",\n  onViewModeChange,\n  showNamesOnMedia = true,\n  onShowNamesOnMediaChange,\n  hasSelectedFiles = false,\n  damFolders = [],\n  onAddToNewFolder,\n  onAddToExistingFolder,\n  filters,\n  onFiltersChange,\n  onFiltersClear,\n  sortOption,\n  onSortChange,\n  unsplashSearchQuery = \"\",\n  onUnsplashSearchChange,\n  unsplashSearching = false,\n  isUnsplashUploading = false,\n}) => {\n  const [filtersOpen, setFiltersOpen] = useState(false);\n  const [folderActionsOpen, setFolderActionsOpen] = useState(false);\n  const [sortOpen, setSortOpen] = useState(false);\n  const [methodsOpen, setMethodsOpen] = useState(false);\n  const isMobile = useIsMobile();\n  const showMediaToolbar =\n    currentStep === \"select\" &&\n    (activeMethod === \"dam\" || activeMethod === \"media\");\n  const showUnsplashToolbar =\n    currentStep === \"select\" && activeMethod === \"unsplash\";\n  const title =\n    currentStep === \"select\"\n      ? methods.find((method) => method.id === activeMethod)?.label ||\n        \"Select Files\"\n      : \"Media Details\";\n  // The sidebar that switches methods is desktop-only, so below `md` the title\n  // doubles as the switcher — otherwise the picker is stuck on whichever tab it\n  // opened on and \"Upload from computer\" (the device's camera/photo picker) is\n  // unreachable.\n  // Same filter the sidebar applies: the cloud-storage and social methods\n  // still render a placeholder, so offering them is a dead end.\n  const switchableMethods = methods.filter((method) =>\n    IMPLEMENTED_PICKER_METHODS.includes(method.id),\n  );\n  const showMethodSwitcher =\n    isMobile &&\n    currentStep === \"select\" &&\n    onMethodChange !== undefined &&\n    switchableMethods.length > 1;\n\n  return (\n    <div className=\"sticky top-0 z-20 flex w-full flex-wrap items-center justify-between gap-3 border-b border-gray-100 bg-white px-6 py-3\">\n      <div className=\"flex min-w-0 flex-1 items-center gap-4\">\n        {showMethodSwitcher ? (\n          <>\n            <Button\n              variant=\"ghost\"\n              type=\"button\"\n              // Named so tests can assert the switcher itself rather than its\n              // label; the header already holds another `aria-haspopup=\"dialog\"`\n              // trigger, and the label changes with the active method.\n              data-testid=\"file-picker-method-switcher\"\n              aria-haspopup=\"dialog\"\n              aria-expanded={methodsOpen}\n              onClick={() => setMethodsOpen(true)}\n              className=\"h-8 shrink-0 gap-1 px-2 text-lg font-semibold text-gray-900 hover:bg-gray-100\"\n            >\n              {title}\n              <ChevronDownIcon className=\"h-4 w-4 text-gray-500\" />\n            </Button>\n            <MobileActionSheet\n              open={methodsOpen}\n              onOpenChange={setMethodsOpen}\n              title=\"Choose source\"\n              actions={switchableMethods.map((method) => ({\n                id: method.id,\n                label: method.label,\n                selected: method.id === activeMethod,\n                onSelect: () => onMethodChange?.(method.id),\n              }))}\n            />\n          </>\n        ) : (\n          <span className=\"shrink-0 text-lg font-semibold text-gray-900\">\n            {title}\n          </span>\n        )}\n\n        {showMediaToolbar && (\n          <div className=\"relative max-w-md min-w-0 flex-1\">\n            <Input\n              type=\"text\"\n              placeholder=\"Search assets...\"\n              value={damSearchQuery}\n              onChange={(e) => onDamSearchChange?.(e.target.value)}\n              className=\"h-9\"\n            />\n            {damSearching && (\n              <div className=\"absolute top-1/2 right-3 -translate-y-1/2\">\n                <div className=\"h-4 w-4 animate-spin rounded-full border-2 border-blue-600 border-t-transparent\" />\n              </div>\n            )}\n          </div>\n        )}\n\n        {showUnsplashToolbar && (\n          <div className=\"flex min-w-0 flex-1 justify-center\">\n            <div className=\"relative w-full max-w-md\">\n              <Input\n                type=\"text\"\n                placeholder=\"Search for images...\"\n                value={unsplashSearchQuery}\n                onChange={(e) => onUnsplashSearchChange?.(e.target.value)}\n                disabled={isUnsplashUploading}\n                className=\"h-9\"\n              />\n              {unsplashSearching && (\n                <div className=\"absolute top-1/2 right-3 -translate-y-1/2\">\n                  <div className=\"h-4 w-4 animate-spin rounded-full border-2 border-blue-600 border-t-transparent\" />\n                </div>\n              )}\n            </div>\n          </div>\n        )}\n      </div>\n\n      {/* DAM / Media Toolbar Controls */}\n      {showMediaToolbar && (\n        <div className=\"flex items-center gap-3\">\n          {/* Zoom Slider (disabled in list view) */}\n          <div\n            className={\n              viewMode === \"list\"\n                ? \"pointer-events-none flex items-center gap-1.5 opacity-50\"\n                : \"flex items-center gap-1.5\"\n            }\n          >\n            <TooltipProvider>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    type=\"button\"\n                    onClick={() => {\n                      const next = Math.max(25, thumbnailSize - 25);\n                      onThumbnailSizeChange?.(next);\n                    }}\n                    disabled={thumbnailSize <= 25 || viewMode === \"list\"}\n                    className=\"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-transparent text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:opacity-40 disabled:hover:bg-transparent\"\n                  >\n                    <MinusIcon className=\"h-3 w-3\" />\n                  </Button>\n                </TooltipTrigger>\n                <TooltipContent>Zoom out</TooltipContent>\n              </Tooltip>\n            </TooltipProvider>\n            <Slider\n              value={[thumbnailSize]}\n              onValueChange={(value) => {\n                if (value[0] !== undefined) {\n                  onThumbnailSizeChange?.(value[0]);\n                }\n              }}\n              min={25}\n              max={150}\n              step={25}\n              className=\"w-20\"\n              disabled={viewMode === \"list\"}\n            />\n            <TooltipProvider>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    type=\"button\"\n                    onClick={() => {\n                      const next = Math.min(150, thumbnailSize + 25);\n                      onThumbnailSizeChange?.(next);\n                    }}\n                    disabled={thumbnailSize >= 150 || viewMode === \"list\"}\n                    className=\"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-transparent text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:opacity-40 disabled:hover:bg-transparent\"\n                  >\n                    <PlusIcon className=\"h-3 w-3\" />\n                  </Button>\n                </TooltipTrigger>\n                <TooltipContent>Zoom in</TooltipContent>\n              </Tooltip>\n            </TooltipProvider>\n          </div>\n\n          <div className=\"h-5 w-px bg-gray-200\" />\n\n          <TooltipProvider>\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <Button\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  onClick={() => onShowNamesOnMediaChange?.(!showNamesOnMedia)}\n                  disabled={viewMode === \"list\"}\n                  className={`flex h-8 w-8 items-center justify-center rounded-md bg-transparent transition-colors ${\n                    viewMode === \"list\"\n                      ? \"cursor-not-allowed opacity-50\"\n                      : showNamesOnMedia\n                        ? \"bg-blue-50 text-blue-600\"\n                        : \"text-gray-500 hover:bg-gray-100 hover:text-gray-700\"\n                  }`}\n                >\n                  <TypeIcon className=\"h-4 w-4\" />\n                </Button>\n              </TooltipTrigger>\n              <TooltipContent>\n                {viewMode === \"list\"\n                  ? \"Not available in list view\"\n                  : showNamesOnMedia\n                    ? \"Hide names on media\"\n                    : \"Show names on media\"}\n              </TooltipContent>\n            </Tooltip>\n          </TooltipProvider>\n\n          <div className=\"h-5 w-px bg-gray-200\" />\n\n          {/* View Mode Toggles - Grid and List */}\n          <div className=\"flex items-center gap-1 rounded-md border border-gray-200 bg-gray-50 p-0.5\">\n            <TooltipProvider>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    onClick={() => onViewModeChange?.(\"grid\")}\n                    className={`flex h-7 w-7 items-center justify-center rounded bg-transparent transition-colors ${\n                      viewMode === \"grid\"\n                        ? \"bg-white text-blue-600 shadow-sm\"\n                        : \"text-gray-500 hover:bg-gray-100 hover:text-gray-700\"\n                    }`}\n                  >\n                    <LayoutGridIcon className=\"h-3.5 w-3.5\" />\n                  </Button>\n                </TooltipTrigger>\n                <TooltipContent>Grid View</TooltipContent>\n              </Tooltip>\n            </TooltipProvider>\n            <TooltipProvider>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <Button\n                    variant=\"ghost\"\n                    size=\"icon\"\n                    onClick={() => onViewModeChange?.(\"list\")}\n                    className={`flex h-7 w-7 items-center justify-center rounded bg-transparent transition-colors ${\n                      viewMode === \"list\"\n                        ? \"bg-white text-blue-600 shadow-sm\"\n                        : \"text-gray-500 hover:text-gray-700\"\n                    }`}\n                  >\n                    <ListIcon className=\"h-3.5 w-3.5\" />\n                  </Button>\n                </TooltipTrigger>\n                <TooltipContent>List View</TooltipContent>\n              </Tooltip>\n            </TooltipProvider>\n          </div>\n\n          <div className=\"h-5 w-px bg-gray-200\" />\n\n          {activeMethod === \"dam\" && (\n            <TooltipProvider>\n              <Tooltip>\n                <TooltipTrigger asChild>\n                  <span className=\"inline-flex\">\n                    {isMobile ? (\n                      <>\n                        <Button\n                          variant=\"ghost\"\n                          size=\"icon\"\n                          disabled={!hasSelectedFiles}\n                          className=\"flex h-8 w-8 items-center justify-center rounded-md bg-transparent text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:opacity-40\"\n                          onClick={() => setFolderActionsOpen(true)}\n                        >\n                          <FolderPlusIcon className=\"h-4 w-4\" />\n                        </Button>\n                        <MobileActionSheet\n                          open={folderActionsOpen}\n                          onOpenChange={setFolderActionsOpen}\n                          title=\"Add to folder\"\n                          actions={[\n                            {\n                              id: \"new\",\n                              label: \"Add to New Folder\",\n                              onSelect: () => onAddToNewFolder?.(),\n                            },\n                            ...damFolders.map((folder) => ({\n                              id: folder,\n                              label: folder.split(\".\").pop() || folder,\n                              onSelect: () => onAddToExistingFolder?.(folder),\n                            })),\n                          ]}\n                        />\n                      </>\n                    ) : (\n                      <DropdownMenu>\n                        <DropdownMenuTrigger asChild>\n                          <Button\n                            variant=\"ghost\"\n                            size=\"icon\"\n                            disabled={!hasSelectedFiles}\n                            className=\"flex h-8 w-8 items-center justify-center rounded-md bg-transparent text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 disabled:opacity-40\"\n                          >\n                            <FolderPlusIcon className=\"h-4 w-4\" />\n                          </Button>\n                        </DropdownMenuTrigger>\n                        <DropdownMenuContent className=\"z-350 min-w-[200px]\">\n                          <DropdownMenuItem\n                            onClick={() => onAddToNewFolder?.()}\n                            className=\"cursor-pointer\"\n                          >\n                            <FolderPlusIcon className=\"mr-2 h-4 w-4\" />\n                            Add to New Folder\n                          </DropdownMenuItem>\n                          {damFolders.length > 0 && (\n                            <DropdownMenuSub>\n                              <DropdownMenuSubTrigger className=\"cursor-pointer\">\n                                <FolderPlusIcon className=\"mr-2 h-4 w-4\" />\n                                Add to Existing Folder\n                              </DropdownMenuSubTrigger>\n                              <DropdownMenuSubContent className=\"z-350 max-h-64 overflow-y-auto\">\n                                {damFolders.map((folder) => (\n                                  <DropdownMenuItem\n                                    key={folder}\n                                    onClick={() =>\n                                      onAddToExistingFolder?.(folder)\n                                    }\n                                    className=\"cursor-pointer\"\n                                  >\n                                    <FolderIcon className=\"mr-2 h-4 w-4\" />\n                                    {folder.split(\".\").pop() || folder}\n                                  </DropdownMenuItem>\n                                ))}\n                              </DropdownMenuSubContent>\n                            </DropdownMenuSub>\n                          )}\n                        </DropdownMenuContent>\n                      </DropdownMenu>\n                    )}\n                  </span>\n                </TooltipTrigger>\n                <TooltipContent>\n                  {hasSelectedFiles\n                    ? \"Add selected files to a folder\"\n                    : \"Select files to add to a folder\"}\n                </TooltipContent>\n              </Tooltip>\n            </TooltipProvider>\n          )}\n\n          {activeMethod === \"dam\" && <div className=\"h-5 w-px bg-gray-200\" />}\n\n          {/* Filters */}\n          {isMobile ? (\n            <>\n              <Button\n                variant=\"ghost\"\n                size=\"icon\"\n                type=\"button\"\n                aria-label=\"Filters\"\n                onClick={() => setFiltersOpen(true)}\n                className={`flex h-8 w-8 items-center justify-center rounded-md bg-transparent transition-colors ${\n                  filters &&\n                  (filters.type ||\n                    filters.date ||\n                    filters.uploadedBy ||\n                    filters.usageStatus ||\n                    filters.source)\n                    ? \"bg-blue-50 text-blue-600\"\n                    : \"text-gray-500 hover:bg-gray-100 hover:text-gray-700\"\n                }`}\n              >\n                <SlidersHorizontalIcon className=\"h-4 w-4\" />\n              </Button>\n              <MobileBottomSheet\n                open={filtersOpen}\n                onOpenChange={setFiltersOpen}\n                title=\"Filters\"\n              >\n                <FilePickerFiltersPanel\n                  filters={filters ?? defaultFiltersState}\n                  onFiltersChange={(nextFilters) =>\n                    onFiltersChange?.(nextFilters)\n                  }\n                  onClear={() => {\n                    onFiltersClear?.();\n                    setFiltersOpen(false);\n                  }}\n                  onDone={() => setFiltersOpen(false)}\n                />\n              </MobileBottomSheet>\n            </>\n          ) : (\n            <Popover open={filtersOpen} onOpenChange={setFiltersOpen}>\n              <TooltipProvider>\n                <Tooltip>\n                  <TooltipTrigger asChild>\n                    <PopoverTrigger asChild>\n                      <Button\n                        variant=\"ghost\"\n                        size=\"icon\"\n                        type=\"button\"\n                        className={`flex h-8 w-8 items-center justify-center rounded-md bg-transparent transition-colors ${\n                          filters &&\n                          (filters.type ||\n                            filters.date ||\n                            filters.uploadedBy ||\n                            filters.usageStatus ||\n                            filters.source)\n                            ? \"bg-blue-50 text-blue-600\"\n                            : \"text-gray-500 hover:bg-gray-100 hover:text-gray-700\"\n                        }`}\n                      >\n                        <SlidersHorizontalIcon className=\"h-4 w-4\" />\n                      </Button>\n                    </PopoverTrigger>\n                  </TooltipTrigger>\n                  <TooltipContent>Filters</TooltipContent>\n                </Tooltip>\n              </TooltipProvider>\n              <PopoverContent align=\"end\" className=\"w-auto p-0\">\n                <FilePickerFiltersPanel\n                  filters={filters ?? defaultFiltersState}\n                  onFiltersChange={(f) => onFiltersChange?.(f)}\n                  onClear={() => {\n                    onFiltersClear?.();\n                    setFiltersOpen(false);\n                  }}\n                  onDone={() => setFiltersOpen(false)}\n                />\n              </PopoverContent>\n            </Popover>\n          )}\n\n          {/* Sort */}\n          <TooltipProvider>\n            <Tooltip>\n              <TooltipTrigger asChild>\n                <span className=\"inline-flex\">\n                  {isMobile ? (\n                    <>\n                      <Button\n                        variant=\"ghost\"\n                        size=\"icon\"\n                        aria-label=\"Sort\"\n                        onClick={() => setSortOpen(true)}\n                        className=\"flex h-8 w-8 items-center justify-center rounded-md bg-transparent text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700\"\n                      >\n                        <ArrowUpDownIcon className=\"h-4 w-4\" />\n                      </Button>\n                      <MobileActionSheet\n                        open={sortOpen}\n                        onOpenChange={setSortOpen}\n                        title=\"Sort\"\n                        actions={SORT_OPTIONS.map((option) => ({\n                          id: option.id,\n                          label: option.label,\n                          onSelect: () => onSortChange?.(option.id),\n                        }))}\n                      />\n                    </>\n                  ) : (\n                    <DropdownMenu>\n                      <DropdownMenuTrigger asChild>\n                        <Button\n                          variant=\"ghost\"\n                          size=\"icon\"\n                          className=\"flex h-8 w-8 items-center justify-center rounded-md bg-transparent text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700\"\n                        >\n                          <ArrowUpDownIcon className=\"h-4 w-4\" />\n                        </Button>\n                      </DropdownMenuTrigger>\n                      <DropdownMenuContent className=\"z-350 min-w-[180px]\">\n                        {SORT_OPTIONS.map((option) => (\n                          <DropdownMenuItem\n                            key={option.id}\n                            onClick={() => onSortChange?.(option.id)}\n                          >\n                            <span\n                              className={\n                                sortOption === option.id\n                                  ? \"font-medium\"\n                                  : undefined\n                              }\n                            >\n                              {option.label}\n                            </span>\n                            {sortOption === option.id && (\n                              <CheckIcon className=\"ml-auto h-4 w-4 text-blue-600\" />\n                            )}\n                          </DropdownMenuItem>\n                        ))}\n                      </DropdownMenuContent>\n                    </DropdownMenu>\n                  )}\n                </span>\n              </TooltipTrigger>\n              <TooltipContent>Sort</TooltipContent>\n            </Tooltip>\n          </TooltipProvider>\n        </div>\n      )}\n\n      {/* Close button - always visible */}\n      <Button variant=\"ghost\" size=\"sm\" onClick={onClose} className=\"ml-2\">\n        <XIcon className=\"h-4 w-4\" />\n      </Button>\n    </div>\n  );\n};\n","import React, { useState, useCallback, useEffect, useMemo } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n  ImageIcon,\n  VideoIcon,\n  FileIcon,\n  LoaderIcon,\n  SearchIcon,\n  ChevronDownIcon,\n} from \"lucide-react\";\nimport {\n  Button,\n  Input,\n  Dialog,\n  DialogOverlay,\n  DialogPortal,\n  DialogContent,\n} from \"@fluid-app/ui-primitives\";\nimport type {\n  FilePickerResult,\n  SortOptionId,\n} from \"@fluid-app/file-picker-core\";\nimport { SORT_OPTIONS } from \"@fluid-app/file-picker-core\";\nimport {\n  useFilePickerContext,\n  useFilePickerSelection,\n} from \"../context/FilePickerContext\";\nimport {\n  LibraryAssetGrid,\n  type LibraryAssetItem,\n  type LibraryAssetViewMode,\n} from \"./LibraryAssetGrid\";\nimport type { MediumResponse } from \"../types/media\";\n\ninterface MediaTabProps {\n  config: {\n    maxFiles?: number;\n    fileTypeFilter?: string[];\n  };\n  onMediaSelected: (results: FilePickerResult[]) => void;\n  onSelectionChange?: (count: number) => void;\n  onMediaDataChange?: (data: FilePickerResult[]) => void;\n  selectedMediaIds: number[];\n  onMediaIdsChange: (ids: number[]) => void;\n  searchQuery?: string;\n  onSearchChange?: (value: string) => void;\n  thumbnailSize?: number;\n  viewMode?: LibraryAssetViewMode;\n  showNamesOnMedia?: boolean;\n  mediaTypeFilter?: string;\n  sortOption?: SortOptionId;\n  previewContainer?: HTMLDivElement | null;\n  previewMedia?: MediumResponse | null;\n  onPreviewMediaChange?: (media: MediumResponse | null) => void;\n}\n\nconst DAM_CATEGORY_TO_MEDIA_TYPE: Record<string, string> = {\n  images: \"image\",\n  videos: \"video\",\n  documents: \"document\",\n  audio: \"audio\",\n  text: \"document\",\n  other: \"image\",\n  presentations: \"presentation\",\n};\n\nexport const MediaTab: React.FC<MediaTabProps> = ({\n  config,\n  onSelectionChange,\n  onMediaDataChange,\n  selectedMediaIds,\n  onMediaIdsChange,\n  searchQuery: controlledSearchQuery,\n  onSearchChange: controlledSetSearchQuery,\n  thumbnailSize = 100,\n  viewMode = \"grid\",\n  showNamesOnMedia = true,\n  mediaTypeFilter: headerTypeFilter,\n  sortOption,\n  previewContainer,\n  previewMedia,\n  onPreviewMediaChange,\n}) => {\n  const { shareablesClient } = useFilePickerContext();\n  const mediaSourceCacheKey = shareablesClient?.media.cacheKey ?? \"default\";\n\n  const [internalSearchQuery, setInternalSearchQuery] = useState(\"\");\n  const isSearchControlled =\n    controlledSearchQuery !== undefined && controlledSetSearchQuery != null;\n  const searchQuery = isSearchControlled\n    ? controlledSearchQuery\n    : internalSearchQuery;\n  const setSearchQuery = isSearchControlled\n    ? controlledSetSearchQuery\n    : setInternalSearchQuery;\n  const [allMediaItems, setAllMediaItems] = useState<MediumResponse[]>([]);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [loadingMore, setLoadingMore] = useState(false);\n  const [hasNextPage, setHasNextPage] = useState(false);\n\n  const mediaTypeFilter = useMemo(() => {\n    if (headerTypeFilter && DAM_CATEGORY_TO_MEDIA_TYPE[headerTypeFilter]) {\n      return DAM_CATEGORY_TO_MEDIA_TYPE[headerTypeFilter];\n    }\n    if (!config.fileTypeFilter || config.fileTypeFilter.length === 0) {\n      return undefined;\n    }\n    for (const filter of config.fileTypeFilter) {\n      if (DAM_CATEGORY_TO_MEDIA_TYPE[filter]) {\n        return DAM_CATEGORY_TO_MEDIA_TYPE[filter];\n      }\n    }\n    return undefined;\n  }, [headerTypeFilter, config.fileTypeFilter]);\n\n  // Fetch all media (same as media index table)\n  const {\n    data: mediaResponse,\n    isLoading,\n    error,\n  } = useQuery({\n    queryKey: [\"media-tab\", searchQuery, mediaTypeFilter, mediaSourceCacheKey],\n    queryFn: () => {\n      if (!shareablesClient) {\n        throw new Error(\"Shareables client is not configured\");\n      }\n      return shareablesClient.media.list({\n        search_query: searchQuery,\n        page: 1,\n        per_page: 30,\n        active: true,\n        with_type: mediaTypeFilter,\n      }) as Promise<{\n        media: MediumResponse[];\n        meta?: { next: string | null };\n      }>;\n    },\n    enabled: !!shareablesClient,\n    staleTime: 5 * 60 * 1000, // 5 minutes\n  });\n\n  // Reset pagination when the cache identity, search, or media type filter changes\n  useEffect(() => {\n    setAllMediaItems([]);\n    setCurrentPage(1);\n    setHasNextPage(false);\n  }, [mediaSourceCacheKey, searchQuery, mediaTypeFilter]);\n\n  const requestIdentityRef = React.useRef(\n    `${mediaSourceCacheKey}|${searchQuery}|${mediaTypeFilter ?? \"\"}`,\n  );\n  useEffect(() => {\n    requestIdentityRef.current = `${mediaSourceCacheKey}|${searchQuery}|${mediaTypeFilter ?? \"\"}`;\n  }, [mediaSourceCacheKey, searchQuery, mediaTypeFilter]);\n\n  // Update accumulated media items when new data comes in\n  useEffect(() => {\n    if (!mediaResponse) return;\n\n    setHasNextPage(mediaResponse.meta?.next != null);\n\n    const newMediaItems = (mediaResponse.media || []) as MediumResponse[];\n    if (newMediaItems.length > 0) {\n      setAllMediaItems((prev) => {\n        // Merge without duplicates by id\n        const map = new Map(prev.map((item) => [item.id, item]));\n        for (const item of newMediaItems) {\n          map.set(item.id, item);\n        }\n        return Array.from(map.values());\n      });\n    }\n  }, [mediaResponse]);\n\n  // Load more media items\n  const loadMore = useCallback(async () => {\n    if (!hasNextPage || !shareablesClient) return;\n\n    try {\n      setLoadingMore(true);\n      const nextPage = currentPage + 1;\n      const requestIdentity = `${mediaSourceCacheKey}|${searchQuery}|${mediaTypeFilter ?? \"\"}`;\n      const response = (await shareablesClient.media.list({\n        search_query: searchQuery,\n        page: nextPage,\n        per_page: 30,\n        active: true,\n        with_type: mediaTypeFilter,\n      })) as { media: MediumResponse[]; meta?: { next: string | null } };\n\n      if (requestIdentity !== requestIdentityRef.current) return;\n\n      setHasNextPage(response.meta?.next != null);\n      setCurrentPage(nextPage);\n\n      const newMediaItems = (response.media || []) as MediumResponse[];\n      if (newMediaItems.length > 0) {\n        setAllMediaItems((prev) => {\n          // Merge without duplicates by id\n          const map = new Map(prev.map((item) => [item.id, item]));\n          for (const item of newMediaItems) {\n            map.set(item.id, item);\n          }\n          return Array.from(map.values());\n        });\n      }\n    } finally {\n      setLoadingMore(false);\n    }\n  }, [\n    hasNextPage,\n    currentPage,\n    searchQuery,\n    mediaTypeFilter,\n    shareablesClient,\n    mediaSourceCacheKey,\n  ]);\n\n  // Convert MediumResponse to FilePickerResult\n  const convertToFilePickerResult = useCallback(\n    (media: MediumResponse): FilePickerResult => {\n      // Determine the file URL based on media type\n      let fileUrl = \"\";\n      let mimeType = \"\";\n      let fileName = media.title;\n      let thumbnailUrl = \"\";\n      let description = \"\";\n\n      // Almost all media have image_url that stores the url for thumbnail/preview\n      // so, we'll check the presence of image_url at the end of the logic\n      if (media.video_url) {\n        fileUrl = media.video_url;\n        mimeType = \"video/mp4\"; // Default, could be improved with actual detection\n        fileName = `${media.title}.mp4`;\n        thumbnailUrl = media.image_url || \"\";\n        description = media.description?.body || \"\";\n      } else if (media.pdf_url) {\n        fileUrl = media.pdf_url;\n        mimeType = \"application/pdf\";\n        fileName = `${media.title}.pdf`;\n      } else if (media.image_url) {\n        fileUrl = media.image_url;\n        mimeType = \"image/jpeg\"; // Default, could be improved with actual detection\n        fileName = `${media.title}.jpg`;\n      }\n\n      return {\n        asset_id: media.id,\n        asset_code: `media_${media.id}`,\n        file_path: fileUrl,\n        file_url: fileUrl,\n        ...(thumbnailUrl ? { thumbnail_url: thumbnailUrl } : {}),\n        ...(description ? { description: description } : {}),\n        metadata: {\n          file_name: fileName,\n          mime_type: mimeType,\n        },\n        upload_status: \"ready\" as const,\n      };\n    },\n    [],\n  );\n\n  // Unified cross-tab selection — when the active picker has unifiedSelection\n  // enabled, MediaTab writes directly into the cross-tab selection list and\n  // skips the per-method `selectedMediaIds` channel.\n  const { state: unifiedState, api: unifiedApi } = useFilePickerSelection();\n  const isUnified = unifiedState !== null && unifiedApi !== null;\n\n  const handleMediaClick = useCallback(\n    (_e: React.MouseEvent, id: string, _index: number) => {\n      const mediaId = parseInt(id.replace(/^media_/, \"\"), 10);\n      if (Number.isNaN(mediaId)) return;\n\n      if (isUnified) {\n        const media = allMediaItems.find((m) => m.id === mediaId);\n        if (!media) return;\n        const result = convertToFilePickerResult(media);\n        if (unifiedApi!.isSelected(result.asset_code)) {\n          unifiedApi!.remove(result.asset_code);\n        } else {\n          unifiedApi!.add(result);\n        }\n        return;\n      }\n\n      const isSelected = selectedMediaIds.includes(mediaId);\n      let newSelectedIds: number[];\n\n      if (isSelected) {\n        newSelectedIds = selectedMediaIds.filter((id) => id !== mediaId);\n      } else {\n        if (config.maxFiles === 1) {\n          newSelectedIds = [mediaId];\n        } else if (\n          config.maxFiles &&\n          selectedMediaIds.length >= config.maxFiles\n        ) {\n          return;\n        } else {\n          newSelectedIds = [...selectedMediaIds, mediaId];\n        }\n      }\n\n      onMediaIdsChange(newSelectedIds);\n\n      const idToMedia = new Map(allMediaItems.map((m) => [m.id, m]));\n      const orderedMedia = newSelectedIds\n        .map((id) => idToMedia.get(id))\n        .filter((m): m is MediumResponse => m != null);\n      const filePickerResults = orderedMedia.map(convertToFilePickerResult);\n      onMediaDataChange?.(filePickerResults);\n    },\n    [\n      isUnified,\n      unifiedApi,\n      selectedMediaIds,\n      config.maxFiles,\n      allMediaItems,\n      convertToFilePickerResult,\n      onMediaIdsChange,\n      onMediaDataChange,\n    ],\n  );\n\n  // Update selection count when selectedMediaIds changes (per-method only —\n  // unified mode reads its count from the cross-tab context).\n  React.useEffect(() => {\n    if (!isUnified) {\n      onSelectionChange?.(selectedMediaIds.length);\n    }\n  }, [isUnified, selectedMediaIds.length, onSelectionChange]);\n\n  const sortedMediaItems = useMemo(() => {\n    if (!sortOption || !allMediaItems.length) return allMediaItems;\n    const option = SORT_OPTIONS.find((o) => o.id === sortOption);\n    if (!option) return allMediaItems;\n    return [...allMediaItems].sort((a, b) => {\n      if (option.sortBy === \"name\") {\n        const cmp = (a.title ?? \"\").localeCompare(b.title ?? \"\", undefined, {\n          sensitivity: \"base\",\n        });\n        return option.sortDirection === \"asc\" ? cmp : -cmp;\n      }\n      if (option.sortBy === \"created_at\") {\n        const aId = a.id ?? 0;\n        const bId = b.id ?? 0;\n        const cmp = aId - bId;\n        return option.sortDirection === \"asc\" ? cmp : -cmp;\n      }\n      return 0;\n    });\n  }, [allMediaItems, sortOption]);\n\n  const getMediaIcon = (media: MediumResponse) => {\n    if (media.image_url) return ImageIcon;\n    if (media.video_url) return VideoIcon;\n    if (media.pdf_url) return FileIcon;\n    return FileIcon;\n  };\n\n  const renderMediaThumbnail = useCallback(\n    (media: MediumResponse, _layout: LibraryAssetViewMode) => {\n      if (media.image_url) {\n        return (\n          <img\n            src={media.image_url}\n            alt={media.title}\n            width={200}\n            height={150}\n            className=\"h-full w-full object-cover\"\n          />\n        );\n      }\n      const MediaIcon = getMediaIcon(media);\n      return (\n        <div className=\"flex h-full w-full items-center justify-center bg-gray-100\">\n          <MediaIcon className=\"h-8 w-8 text-gray-400\" />\n        </div>\n      );\n    },\n    [],\n  );\n\n  const libraryItems = useMemo((): LibraryAssetItem<MediumResponse>[] => {\n    return sortedMediaItems.map((media) => {\n      const id = `media_${media.id}`;\n      let isSelected: boolean;\n      let selectionIndex: number;\n      if (isUnified) {\n        const idx = unifiedState!.items.findIndex((r) => r.asset_code === id);\n        isSelected = idx >= 0;\n        selectionIndex = isSelected ? idx + 1 : 0;\n      } else {\n        const indexInSelection = selectedMediaIds.indexOf(media.id);\n        isSelected = indexInSelection >= 0;\n        selectionIndex = isSelected ? indexInSelection + 1 : 0;\n      }\n      return {\n        id,\n        name: media.title ?? \"\",\n        subtitle: media.kind ?? \"Media\",\n        isSelected,\n        selectionIndex,\n        raw: media,\n      };\n    });\n  }, [sortedMediaItems, selectedMediaIds, isUnified, unifiedState]);\n\n  const handleMediaDoubleClick = useCallback(\n    (_e: React.MouseEvent, _id: string, index: number) => {\n      const media = sortedMediaItems[index];\n      if (media) onPreviewMediaChange?.(media);\n    },\n    [sortedMediaItems, onPreviewMediaChange],\n  );\n\n  if (error) {\n    return (\n      <div className=\"flex flex-col items-center justify-center py-12\">\n        <div className=\"text-center\">\n          <p className=\"text-sm text-red-600\">Failed to load media</p>\n          <p className=\"mt-1 text-xs text-gray-500\">Please try again later</p>\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"space-y-4\">\n      <Dialog\n        open={!!previewMedia}\n        onOpenChange={(open) => !open && onPreviewMediaChange?.(null)}\n      >\n        <DialogPortal container={previewContainer ?? undefined}>\n          <DialogOverlay className=\"z-9999 bg-black/70 backdrop-blur-none\" />\n          <DialogContent\n            className=\"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 fixed top-1/2 left-1/2 z-10000 max-h-[85vh] w-full max-w-4xl -translate-x-1/2 -translate-y-1/2 overflow-hidden bg-white shadow-xl\"\n            style={{ zIndex: 10000 }}\n          >\n            {previewMedia && (\n              <div className=\"flex max-h-[85vh] flex-col\">\n                {previewMedia.image_url ? (\n                  <div className=\"relative flex min-h-0 justify-center overflow-hidden bg-gray-100\">\n                    <img\n                      src={previewMedia.image_url}\n                      alt={previewMedia.title}\n                      className=\"max-h-[85vh] w-auto max-w-full object-contain\"\n                    />\n                  </div>\n                ) : previewMedia.video_url ? (\n                  <div className=\"relative aspect-video max-h-[85vh] overflow-hidden bg-black\">\n                    <video\n                      src={previewMedia.video_url}\n                      autoPlay\n                      muted\n                      controls\n                      className=\"h-full w-full object-contain\"\n                    />\n                  </div>\n                ) : (\n                  <div className=\"flex aspect-video min-h-[200px] items-center justify-center bg-gray-100 p-8\">\n                    {(() => {\n                      const PreviewIcon = getMediaIcon(previewMedia);\n                      return (\n                        <PreviewIcon className=\"h-16 w-16 text-gray-400\" />\n                      );\n                    })()}\n                    <p className=\"ml-4 text-sm text-gray-600\">\n                      {previewMedia.title}\n                    </p>\n                  </div>\n                )}\n              </div>\n            )}\n          </DialogContent>\n        </DialogPortal>\n      </Dialog>\n\n      {/* Search (only when not controlled from header) */}\n      {!isSearchControlled && (\n        <div className=\"relative\">\n          <Input\n            type=\"text\"\n            placeholder=\"Search media...\"\n            value={searchQuery}\n            onChange={(e) => {\n              setSearchQuery(e.target.value);\n            }}\n            className=\"h-9\"\n          />\n          <div className=\"absolute top-1/2 right-3 -translate-y-1/2\">\n            <SearchIcon className=\"h-4 w-4 text-gray-400\" />\n          </div>\n        </div>\n      )}\n\n      {/* Media Grid */}\n      {isLoading ? (\n        <div className=\"flex items-center justify-center py-12\">\n          <div className=\"text-center\">\n            <LoaderIcon className=\"mx-auto mb-2 h-8 w-8 animate-spin text-blue-600\" />\n            <p className=\"text-sm text-gray-500\">Loading media...</p>\n          </div>\n        </div>\n      ) : allMediaItems.length === 0 ? (\n        <div className=\"flex flex-col items-center justify-center py-12\">\n          <div className=\"mb-4 rounded-full bg-gray-100 p-3\">\n            <ImageIcon className=\"h-6 w-6 text-gray-400\" />\n          </div>\n          <h3 className=\"mb-1 text-sm font-medium text-gray-900\">\n            No media found\n          </h3>\n          <p className=\"text-xs text-gray-500\">\n            {searchQuery\n              ? \"Try adjusting your search terms\"\n              : \"Create some media to get started\"}\n          </p>\n        </div>\n      ) : (\n        <div className=\"space-y-4\">\n          <LibraryAssetGrid<MediumResponse>\n            items={libraryItems}\n            viewMode={viewMode ?? \"grid\"}\n            thumbnailSize={thumbnailSize}\n            showNamesOnMedia={showNamesOnMedia ?? true}\n            renderThumbnail={renderMediaThumbnail}\n            onClick={handleMediaClick}\n            onDoubleClick={handleMediaDoubleClick}\n          />\n\n          {/* Load More Button */}\n          {hasNextPage && (\n            <div className=\"flex justify-center\">\n              <Button\n                variant=\"secondary\"\n                size=\"sm\"\n                onClick={loadMore}\n                disabled={loadingMore}\n              >\n                {loadingMore ? (\n                  <>\n                    <LoaderIcon className=\"mr-2 h-3 w-3 animate-spin\" />\n                    Loading...\n                  </>\n                ) : (\n                  <>\n                    <ChevronDownIcon className=\"mr-2 h-3 w-3\" />\n                    Load more\n                  </>\n                )}\n              </Button>\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default MediaTab;\n","\"use client\";\n\nimport React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { ChevronDownIcon, LoaderIcon, SearchIcon } from \"lucide-react\";\nimport { Button, Input } from \"@fluid-app/ui-primitives\";\nimport type {\n  FilePickerResult,\n  PickerSource,\n} from \"@fluid-app/file-picker-core\";\nimport {\n  LibraryAssetGrid,\n  type LibraryAssetItem,\n  type LibraryAssetViewMode,\n} from \"./LibraryAssetGrid\";\nimport {\n  useFilePickerContext,\n  useFilePickerSelection,\n} from \"../context/FilePickerContext\";\n\ninterface ContentBrowserTabProps<T> {\n  /** Stable id for query keys; one of \"pages\" | \"products\" | \"enrollment_packs\". */\n  contentKind: string;\n  /** Asset-code prefix used in FilePickerResult, e.g. \"page_\". */\n  assetCodePrefix: string;\n  /** Plural label used in the empty/search placeholder copy. */\n  labelPlural: string;\n  /** Host-supplied data source. */\n  source: PickerSource<T>;\n  /** Extracts the numeric ID from a record. */\n  getId: (item: T) => number;\n  /** Extracts the human label (page title, product name, …). */\n  getLabel: (item: T) => string;\n  /** Optional thumbnail URL — falls back to icon when null/empty. */\n  getImageUrl: (item: T) => string | null | undefined;\n  /** Optional subtitle line for the grid card (e.g. price). */\n  getSubtitle?: (item: T) => string | null | undefined;\n  /** Icon shown when an item has no image. */\n  fallbackIcon: React.ComponentType<{ className?: string }>;\n  /** Picker config (maxFiles only used in per-method mode). */\n  config: { maxFiles?: number };\n  /** Per-method (non-unified) selection state. */\n  selectedIds: number[];\n  onSelectedIdsChange: (ids: number[]) => void;\n  /** Per-method selection results — emitted alongside id changes. */\n  onSelectedDataChange: (results: FilePickerResult[]) => void;\n  onSelectionCountChange?: (count: number) => void;\n  thumbnailSize?: number;\n  viewMode?: LibraryAssetViewMode;\n  showNamesOnMedia?: boolean;\n}\n\nconst PAGE_SIZE = 30;\n\nexport function ContentBrowserTab<T>({\n  contentKind,\n  assetCodePrefix,\n  labelPlural,\n  source,\n  getId,\n  getLabel,\n  getImageUrl,\n  getSubtitle,\n  fallbackIcon: FallbackIcon,\n  config,\n  selectedIds,\n  onSelectedIdsChange,\n  onSelectedDataChange,\n  onSelectionCountChange,\n  thumbnailSize = 100,\n  viewMode = \"grid\",\n  showNamesOnMedia = true,\n}: ContentBrowserTabProps<T>): React.ReactElement {\n  // Hide the search input when the source's backing endpoint doesn't\n  // support a title/search filter — typing in a non-functional box gives\n  // users false feedback. Defaults to enabled to preserve historical\n  // behavior for sources that pre-date the flag.\n  const supportsSearch = source.supportsSearch !== false;\n  const sourceCacheKey = source.cacheKey ?? \"default\";\n  const [searchQuery, setSearchQuery] = useState(\"\");\n  const [debouncedQuery, setDebouncedQuery] = useState(\"\");\n  const [items, setItems] = useState<T[]>([]);\n  const [cursor, setCursor] = useState<string | null>(null);\n  const [loadingMore, setLoadingMore] = useState(false);\n\n  // Debounce search to avoid hammering the host endpoint while typing\n  useEffect(() => {\n    const t = setTimeout(() => setDebouncedQuery(searchQuery), 250);\n    return () => clearTimeout(t);\n  }, [searchQuery]);\n\n  const queryKey = useMemo(\n    () => [contentKind, \"list\", debouncedQuery, sourceCacheKey],\n    [contentKind, debouncedQuery, sourceCacheKey],\n  );\n\n  const {\n    data: firstPage,\n    isLoading,\n    error,\n  } = useQuery({\n    queryKey,\n    queryFn: () =>\n      source.list({ search: debouncedQuery, cursor: null, limit: PAGE_SIZE }),\n    staleTime: 5 * 60 * 1000,\n  });\n\n  // Reset accumulated items/pagination when the source identity or search changes.\n  useEffect(() => {\n    setItems([]);\n    setCursor(null);\n  }, [sourceCacheKey, debouncedQuery]);\n\n  useEffect(() => {\n    if (!firstPage) return;\n    setItems(firstPage.items);\n    setCursor(firstPage.nextCursor);\n  }, [firstPage]);\n\n  // Track the latest search query so an in-flight loadMore can detect a\n  // race: if the user changes the search while the request is pending, the\n  // search-reset useEffect above replaces `items` with the new query's\n  // first page. Without this guard the resolved old-query results would be\n  // appended on top, mixing pages from two different searches.\n  const requestIdentityRef = useRef(`${sourceCacheKey}|${debouncedQuery}`);\n  useEffect(() => {\n    requestIdentityRef.current = `${sourceCacheKey}|${debouncedQuery}`;\n  }, [sourceCacheKey, debouncedQuery]);\n\n  const { toast } = useFilePickerContext();\n\n  const loadMore = useCallback(async () => {\n    if (!cursor) return;\n    const requestQuery = debouncedQuery;\n    const requestIdentity = `${sourceCacheKey}|${requestQuery}`;\n    try {\n      setLoadingMore(true);\n      const next = await source.list({\n        search: requestQuery,\n        cursor,\n        limit: PAGE_SIZE,\n      });\n      // Drop the page if the user changed the source/search while we were waiting.\n      if (requestIdentity !== requestIdentityRef.current) return;\n      setItems((prev) => {\n        const ids = new Set(prev.map(getId));\n        const merged = [...prev];\n        for (const it of next.items) {\n          if (!ids.has(getId(it))) merged.push(it);\n        }\n        return merged;\n      });\n      setCursor(next.nextCursor);\n    } catch (err) {\n      // useQuery only catches errors on the first page — surface load-more\n      // failures explicitly so the user knows pagination broke instead of\n      // silently leaving the cursor in place.\n      toast.error(`Failed to load more ${labelPlural}`, err);\n    } finally {\n      setLoadingMore(false);\n    }\n  }, [\n    cursor,\n    debouncedQuery,\n    sourceCacheKey,\n    source,\n    getId,\n    labelPlural,\n    toast,\n  ]);\n\n  // Unified vs per-method selection adapter\n  const { state: unifiedState, api: unifiedApi } = useFilePickerSelection();\n  const isUnified = unifiedState !== null && unifiedApi !== null;\n\n  const toResult = useCallback(\n    (item: T): FilePickerResult => {\n      const id = getId(item);\n      const label = getLabel(item);\n      const image = getImageUrl(item) ?? \"\";\n      return {\n        asset_id: id,\n        asset_code: `${assetCodePrefix}${id}`,\n        file_path: image,\n        file_url: image,\n        ...(image ? { thumbnail_url: image } : {}),\n        metadata: {\n          file_name: label,\n          mime_type: \"\",\n        },\n        upload_status: \"ready\" as const,\n      };\n    },\n    [assetCodePrefix, getId, getLabel, getImageUrl],\n  );\n\n  const isSelected = useCallback(\n    (id: number) => {\n      if (isUnified) {\n        return unifiedState!.items.some(\n          (r) => r.asset_code === `${assetCodePrefix}${id}`,\n        );\n      }\n      return selectedIds.includes(id);\n    },\n    [isUnified, unifiedState, assetCodePrefix, selectedIds],\n  );\n\n  const selectionIndex = useCallback(\n    (id: number): number => {\n      if (isUnified) {\n        const code = `${assetCodePrefix}${id}`;\n        return unifiedState!.items.findIndex((r) => r.asset_code === code) + 1;\n      }\n      return selectedIds.indexOf(id) + 1;\n    },\n    [isUnified, unifiedState, assetCodePrefix, selectedIds],\n  );\n\n  // Toggle handler — branches on unified vs per-method\n  const handleClick = useCallback(\n    (_e: React.MouseEvent, gridId: string) => {\n      // Use a literal string slice rather than a RegExp built from the\n      // prefix prop — a future caller passing regex metacharacters in the\n      // prefix would otherwise silently match more than intended and parse\n      // the wrong numeric ID.\n      const numericId = Number.parseInt(\n        gridId.startsWith(assetCodePrefix)\n          ? gridId.slice(assetCodePrefix.length)\n          : gridId,\n        10,\n      );\n      if (Number.isNaN(numericId)) return;\n      const item = items.find((it) => getId(it) === numericId);\n      if (!item) return;\n      const result = toResult(item);\n\n      if (isUnified) {\n        if (unifiedApi!.isSelected(result.asset_code)) {\n          unifiedApi!.remove(result.asset_code);\n        } else {\n          unifiedApi!.add(result);\n        }\n        return;\n      }\n\n      const already = selectedIds.includes(numericId);\n      let nextIds: number[];\n      if (already) {\n        nextIds = selectedIds.filter((x) => x !== numericId);\n      } else if (config.maxFiles === 1) {\n        nextIds = [numericId];\n      } else if (\n        config.maxFiles !== undefined &&\n        selectedIds.length >= config.maxFiles\n      ) {\n        return;\n      } else {\n        nextIds = [...selectedIds, numericId];\n      }\n      onSelectedIdsChange(nextIds);\n      const idToItem = new Map(items.map((it) => [getId(it), it]));\n      const ordered = nextIds\n        .map((id) => idToItem.get(id))\n        .filter((it): it is T => it != null)\n        .map(toResult);\n      onSelectedDataChange(ordered);\n    },\n    [\n      items,\n      assetCodePrefix,\n      isUnified,\n      unifiedApi,\n      selectedIds,\n      config.maxFiles,\n      onSelectedIdsChange,\n      onSelectedDataChange,\n      toResult,\n      getId,\n    ],\n  );\n\n  // Keep parent count in sync (per-method mode only — unified panel reads context)\n  useEffect(() => {\n    if (!isUnified) {\n      onSelectionCountChange?.(selectedIds.length);\n    }\n  }, [isUnified, selectedIds.length, onSelectionCountChange]);\n\n  const renderThumbnail = useCallback(\n    (item: T) => {\n      const url = getImageUrl(item);\n      if (url) {\n        return (\n          <img\n            src={url}\n            alt={getLabel(item)}\n            width={200}\n            height={150}\n            className=\"h-full w-full object-cover\"\n          />\n        );\n      }\n      return (\n        <div className=\"flex h-full w-full items-center justify-center bg-gray-100\">\n          <FallbackIcon className=\"h-8 w-8 text-gray-400\" />\n        </div>\n      );\n    },\n    [FallbackIcon, getImageUrl, getLabel],\n  );\n\n  const libraryItems = useMemo(\n    (): LibraryAssetItem<T>[] =>\n      items.map((item) => {\n        const id = getId(item);\n        const idx = selectionIndex(id);\n        return {\n          id: `${assetCodePrefix}${id}`,\n          name: getLabel(item),\n          subtitle: getSubtitle?.(item) ?? undefined,\n          isSelected: isSelected(id),\n          selectionIndex: idx,\n          raw: item,\n        };\n      }),\n    [\n      items,\n      assetCodePrefix,\n      isSelected,\n      selectionIndex,\n      getId,\n      getLabel,\n      getSubtitle,\n    ],\n  );\n\n  if (error) {\n    return (\n      <div className=\"flex flex-col items-center justify-center py-12\">\n        <p className=\"text-sm text-red-600\">Failed to load {labelPlural}</p>\n        <p className=\"mt-1 text-xs text-gray-500\">Please try again later</p>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"space-y-4\">\n      {supportsSearch && (\n        <div className=\"relative\">\n          <Input\n            type=\"text\"\n            placeholder={`Search ${labelPlural}...`}\n            value={searchQuery}\n            onChange={(e) => setSearchQuery(e.target.value)}\n            className=\"h-9\"\n          />\n          <div className=\"absolute top-1/2 right-3 -translate-y-1/2\">\n            <SearchIcon className=\"h-4 w-4 text-gray-400\" />\n          </div>\n        </div>\n      )}\n\n      {isLoading ? (\n        <div className=\"flex items-center justify-center py-12\">\n          <div className=\"text-center\">\n            <LoaderIcon className=\"mx-auto mb-2 h-8 w-8 animate-spin text-blue-600\" />\n            <p className=\"text-sm text-gray-500\">Loading {labelPlural}...</p>\n          </div>\n        </div>\n      ) : libraryItems.length === 0 ? (\n        <div className=\"flex flex-col items-center justify-center py-12\">\n          <div className=\"mb-4 rounded-full bg-gray-100 p-3\">\n            <FallbackIcon className=\"h-6 w-6 text-gray-400\" />\n          </div>\n          <h3 className=\"mb-1 text-sm font-medium text-gray-900\">\n            No {labelPlural} found\n          </h3>\n          <p className=\"text-xs text-gray-500\">\n            {debouncedQuery\n              ? \"Try adjusting your search terms\"\n              : `No ${labelPlural} available`}\n          </p>\n        </div>\n      ) : (\n        <div className=\"space-y-4\">\n          <LibraryAssetGrid<T>\n            items={libraryItems}\n            viewMode={viewMode}\n            thumbnailSize={thumbnailSize}\n            showNamesOnMedia={showNamesOnMedia}\n            renderThumbnail={renderThumbnail}\n            onClick={handleClick}\n          />\n          {cursor && (\n            <div className=\"flex justify-center\">\n              <Button\n                variant=\"secondary\"\n                size=\"sm\"\n                onClick={loadMore}\n                disabled={loadingMore}\n              >\n                {loadingMore ? (\n                  <>\n                    <LoaderIcon className=\"mr-2 h-3 w-3 animate-spin\" />\n                    Loading...\n                  </>\n                ) : (\n                  <>\n                    <ChevronDownIcon className=\"mr-2 h-3 w-3\" />\n                    Load more\n                  </>\n                )}\n              </Button>\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { FileTextIcon } from \"lucide-react\";\nimport type {\n  FilePickerResult,\n  PickerPageItem,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\nimport { ContentBrowserTab } from \"./ContentBrowserTab\";\nimport type { LibraryAssetViewMode } from \"./LibraryAssetGrid\";\n\nexport interface PagesTabProps {\n  config: { maxFiles?: number };\n  selectedIds: number[];\n  onSelectedIdsChange: (ids: number[]) => void;\n  onSelectedDataChange: (results: FilePickerResult[]) => void;\n  onSelectionCountChange?: (count: number) => void;\n  thumbnailSize?: number;\n  viewMode?: LibraryAssetViewMode;\n  showNamesOnMedia?: boolean;\n}\n\nexport const PagesTab: React.FC<PagesTabProps> = (props) => {\n  const { shareablesClient } = useFilePickerContext();\n  const source = shareablesClient?.pages;\n  if (!source) {\n    // Defensive: FilePicker should not render this tab without a source.\n    return null;\n  }\n  return (\n    <ContentBrowserTab<PickerPageItem>\n      contentKind=\"pages\"\n      assetCodePrefix=\"page_\"\n      labelPlural=\"pages\"\n      source={source}\n      getId={(p) => p.id}\n      getLabel={(p) => p.title || `Page #${p.id}`}\n      getImageUrl={(p) => p.image_url ?? null}\n      fallbackIcon={FileTextIcon}\n      {...props}\n    />\n  );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport { PackageIcon } from \"lucide-react\";\nimport type {\n  FilePickerResult,\n  PickerProductItem,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\nimport { ContentBrowserTab } from \"./ContentBrowserTab\";\nimport type { LibraryAssetViewMode } from \"./LibraryAssetGrid\";\n\nexport interface ProductsTabProps {\n  config: { maxFiles?: number };\n  selectedIds: number[];\n  onSelectedIdsChange: (ids: number[]) => void;\n  onSelectedDataChange: (results: FilePickerResult[]) => void;\n  onSelectionCountChange?: (count: number) => void;\n  thumbnailSize?: number;\n  viewMode?: LibraryAssetViewMode;\n  showNamesOnMedia?: boolean;\n}\n\nexport const ProductsTab: React.FC<ProductsTabProps> = (props) => {\n  const { shareablesClient } = useFilePickerContext();\n  const source = shareablesClient?.products;\n  if (!source) return null;\n  return (\n    <ContentBrowserTab<PickerProductItem>\n      contentKind=\"products\"\n      assetCodePrefix=\"product_\"\n      labelPlural=\"products\"\n      source={source}\n      getId={(p) => p.id}\n      getLabel={(p) => p.name || `Product #${p.id}`}\n      getImageUrl={(p) => p.image_url ?? null}\n      getSubtitle={(p) => (p.price ? `$${p.price}` : undefined)}\n      fallbackIcon={PackageIcon}\n      {...props}\n    />\n  );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport { GraduationCapIcon } from \"lucide-react\";\nimport type {\n  FilePickerResult,\n  PickerEnrollmentPackItem,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\nimport { ContentBrowserTab } from \"./ContentBrowserTab\";\nimport type { LibraryAssetViewMode } from \"./LibraryAssetGrid\";\n\nexport interface EnrollmentPacksTabProps {\n  config: { maxFiles?: number };\n  selectedIds: number[];\n  onSelectedIdsChange: (ids: number[]) => void;\n  onSelectedDataChange: (results: FilePickerResult[]) => void;\n  onSelectionCountChange?: (count: number) => void;\n  thumbnailSize?: number;\n  viewMode?: LibraryAssetViewMode;\n  showNamesOnMedia?: boolean;\n}\n\nexport const EnrollmentPacksTab: React.FC<EnrollmentPacksTabProps> = (\n  props,\n) => {\n  const { shareablesClient } = useFilePickerContext();\n  const source = shareablesClient?.enrollment_packs;\n  if (!source) return null;\n  return (\n    <ContentBrowserTab<PickerEnrollmentPackItem>\n      contentKind=\"enrollment_packs\"\n      assetCodePrefix=\"enrollment_pack_\"\n      labelPlural=\"enrollment packs\"\n      source={source}\n      getId={(p) => p.id}\n      getLabel={(p) => p.title || `Enrollment Pack #${p.id}`}\n      getImageUrl={(p) => p.image_url ?? null}\n      fallbackIcon={GraduationCapIcon}\n      {...props}\n    />\n  );\n};\n","import { useState, useCallback } from \"react\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport {\n  damQueryKeys,\n  getDamAssetUrl,\n  getSanitizedAssetName,\n  type CreateDamAssetParams,\n  type FilePickerResult,\n  type UnsplashImage,\n  type UploadProgress,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerApi } from \"../context/FilePickerApiContext\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\n\ninterface UseUnsplashPickerOptions {\n  controlledSearchQuery?: string;\n  onControlledSearchQueryChange?: (value: string) => void;\n}\n\nexport const useUnsplashPicker = (\n  options?: UseUnsplashPickerOptions,\n): {\n  searchQuery: string;\n  setSearchQuery: (value: string) => void;\n  searchResults: UnsplashImage[];\n  isSearching: boolean;\n  searchImages: (query: string, page?: number) => void;\n  downloadAndUpload: (image: UnsplashImage) => Promise<FilePickerResult>;\n  uploadProgress: UploadProgress[];\n  isUploading: boolean;\n  clearProgress: () => void;\n  hasMoreResults: boolean;\n  loadMore: () => void;\n  isLoadingMore: boolean;\n} => {\n  const { controlledSearchQuery, onControlledSearchQueryChange } =\n    options ?? {};\n  const [internalSearchQuery, setInternalSearchQuery] = useState(\"\");\n  const searchQuery = controlledSearchQuery ?? internalSearchQuery;\n  const setSearchQuery =\n    onControlledSearchQueryChange ?? setInternalSearchQuery;\n  const [searchResults, setSearchResults] = useState<UnsplashImage[]>([]);\n  const [isSearching, setIsSearching] = useState(false);\n  const [isLoadingMore, setIsLoadingMore] = useState(false);\n  const [currentPage, setCurrentPage] = useState(1);\n  const [hasMoreResults, setHasMoreResults] = useState(true);\n  const [uploadProgress, setUploadProgress] = useState<\n    Map<string, UploadProgress>\n  >(new Map());\n  const queryClient = useQueryClient();\n  const api = useFilePickerApi();\n  const { apiBaseUrl, toast } = useFilePickerContext();\n\n  const uploadMutation = useMutation({\n    mutationFn: (params: CreateDamAssetParams) => api.createDamAsset(params),\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: damQueryKeys.all });\n    },\n  });\n\n  const searchImages = useCallback(\n    async (query: string, page = 1) => {\n      if (!query.trim()) {\n        setSearchResults([]);\n        setCurrentPage(1);\n        setHasMoreResults(true);\n        return;\n      }\n\n      if (page === 1) {\n        setIsSearching(true);\n        setCurrentPage(1);\n      } else {\n        setIsLoadingMore(true);\n      }\n\n      try {\n        const data = await api.searchUnsplash(query, page);\n\n        setSearchResults((prevResults) =>\n          page === 1 ? data.results : [...prevResults, ...data.results],\n        );\n\n        setCurrentPage(page);\n        setHasMoreResults(page < data.total_pages);\n      } catch (err) {\n        if (page === 1) {\n          setSearchResults([]);\n        }\n        toast.error(\n          err instanceof Error ? err.message : \"Unsplash search failed\",\n        );\n      } finally {\n        setIsSearching(false);\n        setIsLoadingMore(false);\n      }\n    },\n    [api, toast],\n  );\n\n  const downloadAndUpload = useCallback(\n    async (image: UnsplashImage): Promise<FilePickerResult> => {\n      const uploadId = `unsplash-${image.id}`;\n      const fileName = `unsplash-${image.id}.jpg`;\n\n      setUploadProgress((prev) => {\n        const next = new Map(prev);\n        next.set(uploadId, {\n          file_name: fileName,\n          progress: 0,\n          status: \"uploading\",\n        });\n        return next;\n      });\n\n      try {\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: fileName,\n            progress: 25,\n            status: \"uploading\",\n          });\n          return next;\n        });\n\n        const downloadUrlObj = new URL(image.urls.regular);\n        downloadUrlObj.searchParams.set(\"fm\", \"jpg\");\n        downloadUrlObj.searchParams.set(\"q\", \"80\");\n        const downloadUrl = downloadUrlObj.toString();\n        const response = await fetch(downloadUrl);\n\n        if (!response.ok) {\n          throw new Error(`Failed to download image: ${response.statusText}`);\n        }\n\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: fileName,\n            progress: 50,\n            status: \"uploading\",\n          });\n          return next;\n        });\n\n        const blob = await response.blob();\n        const file = new File([blob], fileName, { type: \"image/jpeg\" });\n\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: fileName,\n            progress: 75,\n            status: \"uploading\",\n          });\n          return next;\n        });\n\n        const damResponse = await uploadMutation.mutateAsync({\n          file,\n          name: getSanitizedAssetName(\n            image.alt_description ||\n              image.description ||\n              `Unsplash ${image.id}`,\n          ),\n          description: `Downloaded from Unsplash. Photo by ${image.user.name} (@${image.user.username})`,\n          tags: [\"unsplash\", image.user.username],\n        });\n\n        if (!damResponse.asset) {\n          throw new Error(\n            \"Invalid DAM response structure - missing asset property\",\n          );\n        }\n\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: fileName,\n            progress: 100,\n            status: \"ready\",\n          });\n          return next;\n        });\n\n        const asset = damResponse.asset;\n        const fileUrl = getDamAssetUrl(asset, apiBaseUrl);\n\n        return {\n          asset_id: asset.id,\n          asset_code: asset.code,\n          file_path: fileUrl,\n          file_url: fileUrl,\n          metadata: {\n            file_name: fileName,\n            mime_type: \"image/jpeg\",\n            dimensions: {\n              width: image.width,\n              height: image.height,\n            },\n          },\n          upload_status: \"ready\",\n          variant_id: asset.default_variant_id\n            ? asset.default_variant_id.toString()\n            : undefined,\n        };\n      } catch (error) {\n        const errorMessage =\n          error instanceof Error ? error.message : \"Upload failed\";\n        toast.error(errorMessage);\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: fileName,\n            progress: 0,\n            status: \"error\",\n            error: errorMessage,\n          });\n          return next;\n        });\n\n        return {\n          asset_id: 0,\n          asset_code: \"\",\n          file_path: \"\",\n          file_url: \"\",\n          metadata: {\n            file_name: fileName,\n            mime_type: \"image/jpeg\",\n            dimensions: {\n              width: image.width,\n              height: image.height,\n            },\n          },\n          upload_status: \"error\",\n        };\n      }\n    },\n    [uploadMutation, apiBaseUrl, toast],\n  );\n\n  const clearProgress = useCallback(() => {\n    setUploadProgress(new Map());\n  }, []);\n\n  const loadMore = useCallback(() => {\n    if (searchQuery.trim() && hasMoreResults && !isLoadingMore) {\n      searchImages(searchQuery, currentPage + 1);\n    }\n  }, [searchQuery, hasMoreResults, isLoadingMore, currentPage, searchImages]);\n\n  return {\n    searchQuery,\n    setSearchQuery,\n    searchResults,\n    isSearching,\n    searchImages,\n    downloadAndUpload,\n    uploadProgress: Array.from(uploadProgress.values()),\n    isUploading: uploadMutation.isPending,\n    clearProgress,\n    hasMoreResults,\n    loadMore,\n    isLoadingMore,\n  };\n};\n","import React, { useState, useEffect } from \"react\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport {\n  DownloadIcon,\n  CheckIcon,\n  AlertTriangleIcon,\n  UserIcon,\n  LoaderIcon,\n} from \"lucide-react\";\nimport { useUnsplashPicker } from \"../hooks/use-unsplash-picker\";\nimport type {\n  FilePickerConfig,\n  FilePickerResult,\n} from \"@fluid-app/file-picker-core\";\n\ninterface UnsplashImage {\n  id: string;\n  urls: {\n    raw: string;\n    full: string;\n    regular: string;\n    small: string;\n    thumb: string;\n  };\n  alt_description: string | null;\n  description: string | null;\n  user: {\n    name: string;\n    username: string;\n  };\n  width: number;\n  height: number;\n}\n\ninterface UnsplashPickerProps {\n  config: FilePickerConfig;\n  onFileSelected: (result: FilePickerResult) => void;\n  searchQuery?: string;\n  onSearchQueryChange?: (value: string) => void;\n  onSearchingChange?: (searching: boolean) => void;\n  onUploadingChange?: (uploading: boolean) => void;\n}\n\nexport const UnsplashPicker: React.FC<UnsplashPickerProps> = ({\n  config,\n  onFileSelected,\n  searchQuery: controlledSearchQuery,\n  onSearchQueryChange: onControlledSearchQueryChange,\n  onSearchingChange,\n  onUploadingChange,\n}) => {\n  const {\n    searchQuery,\n    searchResults,\n    isSearching,\n    searchImages,\n    downloadAndUpload,\n    uploadProgress,\n    isUploading,\n    clearProgress,\n    hasMoreResults,\n    loadMore,\n    isLoadingMore,\n  } = useUnsplashPicker(\n    controlledSearchQuery !== undefined && onControlledSearchQueryChange\n      ? {\n          controlledSearchQuery,\n          onControlledSearchQueryChange,\n        }\n      : undefined,\n  );\n\n  const [selectedImageId, setSelectedImageId] = useState<string | null>(null);\n\n  useEffect(() => {\n    const timeoutId = setTimeout(() => {\n      if (searchQuery.trim()) {\n        searchImages(searchQuery);\n      }\n    }, 500);\n\n    return () => clearTimeout(timeoutId);\n  }, [searchQuery, searchImages]);\n\n  useEffect(() => {\n    onSearchingChange?.(isSearching);\n  }, [isSearching, onSearchingChange]);\n\n  useEffect(() => {\n    onUploadingChange?.(isUploading);\n  }, [isUploading, onUploadingChange]);\n\n  const handleImageSelect = async (image: UnsplashImage) => {\n    setSelectedImageId(image.id);\n    clearProgress();\n\n    const result = await downloadAndUpload(image);\n\n    if (result && result.upload_status === \"ready\") {\n      setSelectedImageId(null);\n      onFileSelected(result);\n    } else {\n      setSelectedImageId(null);\n    }\n  };\n\n  return (\n    <div className=\"space-y-4\">\n      {isSearching && (\n        <div className=\"py-4 text-center\">\n          <p className=\"text-gray-500\">Searching Unsplash...</p>\n        </div>\n      )}\n\n      {searchResults.length > 0 && (\n        <div className=\"grid grid-cols-2 gap-4 sm:grid-cols-3 md:grid-cols-4\">\n          {searchResults.map((image) => (\n            <div\n              key={image.id}\n              className={`group relative cursor-pointer overflow-hidden rounded-lg border-2 transition-all ${selectedImageId === image.id ? \"border-blue-500\" : \"border-transparent hover:border-gray-300\"} ${isUploading && selectedImageId === image.id ? \"opacity-50\" : \"\"} `}\n              onClick={() => !isUploading && handleImageSelect(image)}\n            >\n              <img\n                src={image.urls.small}\n                alt={\n                  image.alt_description || image.description || \"Unsplash image\"\n                }\n                width={400}\n                height={300}\n                className=\"h-32 w-full object-cover\"\n                onError={(e) => {\n                  const target = e.target as HTMLImageElement;\n                  target.src = image.urls.thumb;\n                }}\n              />\n\n              <div\n                className=\"group-hover:bg-opacity-30 absolute inset-0 flex items-center justify-center transition-all\"\n                style={{\n                  backgroundColor: \"rgba(0, 0, 0, 0)\",\n                }}\n              >\n                <div className=\"opacity-0 transition-opacity group-hover:opacity-100\">\n                  <DownloadIcon className=\"h-6 w-6 text-white\" />\n                </div>\n              </div>\n\n              <div className=\"absolute right-0 bottom-0 left-0 bg-linear-to-t from-black to-transparent p-2\">\n                <div className=\"flex items-center space-x-1 text-xs text-white\">\n                  <UserIcon className=\"h-3 w-3\" />\n                  <span>\n                    Photo by{\" \"}\n                    <a\n                      href={`https://unsplash.com/@${image.user.username}?utm_source=fluid&utm_medium=referral`}\n                      target=\"_blank\"\n                      rel=\"noopener noreferrer\"\n                      className=\"underline hover:text-gray-200\"\n                      onClick={(e) => e.stopPropagation()}\n                    >\n                      {image.user.name}\n                    </a>{\" \"}\n                    on{\" \"}\n                    <a\n                      href=\"https://unsplash.com/?utm_source=fluid&utm_medium=referral\"\n                      target=\"_blank\"\n                      rel=\"noopener noreferrer\"\n                      className=\"underline hover:text-gray-200\"\n                      onClick={(e) => e.stopPropagation()}\n                    >\n                      Unsplash\n                    </a>\n                  </span>\n                </div>\n              </div>\n\n              {selectedImageId === image.id && isUploading && (\n                <div className=\"bg-opacity-75 absolute inset-0 flex items-center justify-center bg-blue-500\">\n                  <div className=\"text-center text-white\">\n                    <DownloadIcon className=\"mb-1 h-6 w-6 animate-pulse\" />\n                    <p className=\"text-xs\">Uploading...</p>\n                  </div>\n                </div>\n              )}\n            </div>\n          ))}\n        </div>\n      )}\n\n      {searchQuery && !isSearching && searchResults.length === 0 && (\n        <div className=\"py-8 text-center\">\n          <p className=\"text-gray-500\">\n            No images found for &quot;{searchQuery}&quot;\n          </p>\n        </div>\n      )}\n\n      {hasMoreResults && searchResults.length > 0 && (\n        <div className=\"flex justify-center pt-4\">\n          <Button onClick={loadMore} disabled={isLoadingMore} variant=\"outline\">\n            {isLoadingMore ? (\n              <>\n                <LoaderIcon className=\"mr-2 animate-spin\" />\n                Loading...\n              </>\n            ) : (\n              <>\n                <DownloadIcon className=\"mr-2\" />\n                Load More\n              </>\n            )}\n          </Button>\n        </div>\n      )}\n\n      {config.showProgress && uploadProgress.length > 0 && (\n        <div className=\"space-y-2\">\n          <h4 className=\"text-sm font-medium text-gray-900\">Upload Progress</h4>\n          {uploadProgress.map((progress) => (\n            <div\n              key={`${progress.file_name}-${progress.status}`}\n              className=\"rounded-lg bg-gray-50 p-3\"\n            >\n              <div className=\"mb-2 flex items-center justify-between\">\n                <div className=\"flex items-center space-x-2\">\n                  {(() => {\n                    const Icon =\n                      progress.status === \"ready\"\n                        ? CheckIcon\n                        : progress.status === \"error\"\n                          ? AlertTriangleIcon\n                          : DownloadIcon;\n                    return (\n                      <Icon\n                        className={`h-4 w-4 ${\n                          progress.status === \"ready\"\n                            ? \"text-green-500\"\n                            : progress.status === \"error\"\n                              ? \"text-red-500\"\n                              : \"text-blue-500\"\n                        }`}\n                      />\n                    );\n                  })()}\n                  <span className=\"text-sm font-medium text-gray-900\">\n                    {progress.file_name}\n                  </span>\n                </div>\n                <span className=\"text-xs text-gray-500 capitalize\">\n                  {progress.status}\n                </span>\n              </div>\n\n              {progress.status === \"uploading\" && (\n                <div className=\"h-2 w-full rounded-full bg-gray-200\">\n                  <div\n                    className=\"h-2 rounded-full bg-blue-600 transition-all duration-300\"\n                    style={{ width: `${progress.progress}%` }}\n                  />\n                </div>\n              )}\n\n              {progress.error && (\n                <p className=\"mt-1 text-xs text-red-600\">{progress.error}</p>\n              )}\n            </div>\n          ))}\n        </div>\n      )}\n\n      <div className=\"text-center text-xs text-gray-400\">\n        Photos provided by{\" \"}\n        <a\n          href=\"https://unsplash.com\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          className=\"underline hover:text-gray-600\"\n        >\n          Unsplash\n        </a>\n      </div>\n    </div>\n  );\n};\n","import { useState, useCallback } from \"react\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport {\n  damQueryKeys,\n  getDamAssetUrl,\n  sanitizeFilename,\n  getSanitizedAssetName,\n  type CreateDamAssetParams,\n  type FilePickerResult,\n  type UploadProgress,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerApi } from \"../context/FilePickerApiContext\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\n\nexport const useUrlUpload = (): {\n  uploadFromUrl: (url: string, fileName?: string) => Promise<FilePickerResult>;\n  uploadProgress: UploadProgress[];\n  isUploading: boolean;\n  clearProgress: () => void;\n} => {\n  const [uploadProgress, setUploadProgress] = useState<\n    Map<string, UploadProgress>\n  >(new Map());\n  const queryClient = useQueryClient();\n  const api = useFilePickerApi();\n  const { companyId, apiBaseUrl, toast } = useFilePickerContext();\n\n  const uploadMutation = useMutation({\n    mutationFn: (params: CreateDamAssetParams) => api.createDamAsset(params),\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: damQueryKeys.all });\n    },\n  });\n\n  const uploadFromUrl = useCallback(\n    async (url: string, fileName?: string): Promise<FilePickerResult> => {\n      const uploadId = `url-${Date.now()}`;\n      const displayName =\n        fileName ||\n        url.split(\"/\").pop()?.split(\"?\")[0]?.split(\"#\")[0] ||\n        \"url-upload\";\n\n      setUploadProgress((prev) => {\n        const next = new Map(prev);\n        next.set(uploadId, {\n          file_name: displayName,\n          progress: 0,\n          status: \"uploading\",\n        });\n        return next;\n      });\n\n      try {\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: displayName,\n            progress: 25,\n            status: \"uploading\",\n          });\n          return next;\n        });\n\n        let blob: Blob;\n        let contentType: string;\n\n        try {\n          const response = await fetch(url, {\n            mode: \"cors\",\n            credentials: \"omit\",\n          });\n\n          if (!response.ok) {\n            throw new Error(`Failed to fetch file: ${response.statusText}`);\n          }\n\n          blob = await response.blob();\n          contentType =\n            response.headers.get(\"content-type\") || \"application/octet-stream\";\n        } catch (fetchError) {\n          const isCorsError =\n            fetchError instanceof TypeError &&\n            (fetchError.message.includes(\"CORS\") ||\n              fetchError.message.includes(\"Failed to fetch\") ||\n              fetchError.message.includes(\"NetworkError\"));\n\n          if (isCorsError) {\n            setUploadProgress((prev) => {\n              const next = new Map(prev);\n              next.set(uploadId, {\n                file_name: displayName,\n                progress: 30,\n                status: \"uploading\",\n              });\n              return next;\n            });\n\n            try {\n              const proxyResponse = await api.proxyUrlFetch(url);\n              const binaryString = atob(proxyResponse.data);\n              const bytes = new Uint8Array(binaryString.length);\n              for (let i = 0; i < binaryString.length; i++) {\n                bytes[i] = binaryString.charCodeAt(i);\n              }\n              blob = new Blob([bytes], { type: proxyResponse.contentType });\n              contentType = proxyResponse.contentType;\n            } catch (proxyError) {\n              let origin = url;\n              try {\n                origin = new URL(url).origin;\n              } catch {\n                // fallback to raw url\n              }\n              throw new Error(\n                `CORS error: The server at ${origin} does not allow cross-origin requests, and the proxy also failed: ${\n                  proxyError instanceof Error\n                    ? proxyError.message\n                    : \"Unknown error\"\n                }`,\n              );\n            }\n          } else {\n            throw fetchError;\n          }\n        }\n\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: displayName,\n            progress: 50,\n            status: \"uploading\",\n          });\n          return next;\n        });\n        const rawFileName = displayName;\n        const finalFileName = sanitizeFilename(rawFileName);\n\n        const file = new File([blob], finalFileName, { type: contentType });\n\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: finalFileName,\n            progress: 75,\n            status: \"uploading\",\n          });\n          return next;\n        });\n\n        const damResponse = await uploadMutation.mutateAsync({\n          file,\n          name: getSanitizedAssetName(finalFileName),\n          description: `Uploaded from URL: ${url}`,\n          companyId,\n        });\n\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: finalFileName,\n            progress: 100,\n            status: \"ready\",\n          });\n          return next;\n        });\n\n        const asset = damResponse.asset;\n        const fileUrl = getDamAssetUrl(asset, apiBaseUrl);\n\n        return {\n          asset_id: asset.id,\n          asset_code: asset.code,\n          file_path: fileUrl,\n          file_url: fileUrl,\n          metadata: {\n            file_name: finalFileName,\n            mime_type: contentType,\n            file_size: blob.size,\n          },\n          upload_status: \"ready\",\n          variant_id: asset.default_variant_id\n            ? asset.default_variant_id.toString()\n            : undefined,\n        };\n      } catch (error) {\n        const errorMessage =\n          error instanceof Error ? error.message : \"Upload failed\";\n        toast.error(errorMessage);\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(uploadId, {\n            file_name: displayName,\n            progress: 0,\n            status: \"error\",\n            error: errorMessage,\n          });\n          return next;\n        });\n\n        return {\n          asset_id: 0,\n          asset_code: \"\",\n          file_path: \"\",\n          file_url: \"\",\n          metadata: {\n            file_name: displayName,\n            mime_type: \"\",\n          },\n          upload_status: \"error\",\n        };\n      }\n    },\n    [uploadMutation, companyId, apiBaseUrl, api, toast],\n  );\n\n  const clearProgress = useCallback(() => {\n    setUploadProgress(new Map());\n  }, []);\n\n  return {\n    uploadFromUrl,\n    uploadProgress: Array.from(uploadProgress.values()),\n    isUploading: uploadMutation.isPending,\n    clearProgress,\n  };\n};\n","import React, { useState } from \"react\";\nimport { Input, Switch, Button } from \"@fluid-app/ui-primitives\";\nimport {\n  LinkIcon,\n  CheckIcon,\n  AlertTriangleIcon,\n  LoaderIcon,\n  FileIcon,\n  ArrowRightIcon,\n} from \"lucide-react\";\nimport { useUrlUpload } from \"../hooks/use-url-upload\";\nimport {\n  isFileTypeAccepted,\n  getAcceptedTypesDescription,\n} from \"@fluid-app/file-picker-core\";\nimport type {\n  FilePickerConfig,\n  FilePickerResult,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\n\ninterface UrlUploadProps {\n  config: FilePickerConfig;\n  onFileSelected: (result: FilePickerResult) => void;\n  enableShareableOption?: boolean;\n  shareableEnabled?: boolean;\n  onShareableChange?: (enabled: boolean) => void;\n  /** When provided (e.g. FilePicker with selection panel), progress is only shown when there are selected files or an upload is in progress */\n  selectedFilesCount?: number;\n}\n\nexport const UrlUpload: React.FC<UrlUploadProps> = ({\n  config,\n  onFileSelected,\n  enableShareableOption = false,\n  shareableEnabled = false,\n  onShareableChange,\n  selectedFilesCount,\n}) => {\n  const { toast } = useFilePickerContext();\n  const [url, setUrl] = useState(\"\");\n  const [fileName, setFileName] = useState(\"\");\n  const { uploadFromUrl, uploadProgress, isUploading, clearProgress } =\n    useUrlUpload();\n\n  const handleSubmit = async (e: React.FormEvent) => {\n    e.preventDefault();\n    if (!url.trim()) return;\n\n    clearProgress();\n\n    try {\n      // Validate file type if restrictions are configured\n      if (config.accept && config.accept.length > 0) {\n        try {\n          // Fetch the file to check its MIME type\n          const response = await fetch(url.trim(), {\n            method: \"HEAD\",\n            mode: \"cors\",\n            credentials: \"omit\",\n          });\n          const contentType = response.headers.get(\"content-type\") || \"\";\n          const finalFileName =\n            fileName.trim() || getFileNameFromUrl(url.trim());\n\n          if (!isFileTypeAccepted(contentType, finalFileName, config.accept)) {\n            const acceptedTypesDesc = getAcceptedTypesDescription(\n              config.accept,\n            );\n            toast.error(\n              `This file type is not allowed. Please upload ${acceptedTypesDesc.toLowerCase()}.`,\n            );\n            return;\n          }\n        } catch (error) {\n          // If we can't check the file type due to CORS, proceed with upload\n          // The server will handle validation, but warn the user about potential CORS issues\n          if (\n            error instanceof TypeError &&\n            (error.message.includes(\"CORS\") ||\n              error.message.includes(\"Failed to fetch\") ||\n              error.message.includes(\"NetworkError\"))\n          ) {\n            // CORS error - we'll proceed but the actual upload might also fail\n            // The uploadFromUrl function will handle the error more gracefully\n          }\n          // For other errors, proceed with upload - the server will handle validation\n        }\n      }\n\n      const result = await uploadFromUrl(\n        url.trim(),\n        fileName.trim() || undefined,\n      );\n\n      // Only call onFileSelected if the upload was successful\n      // If there's an error, the error will be shown in the progress section\n      // and the modal should stay open so the user can see it\n      if (result.upload_status === \"ready\") {\n        onFileSelected(result);\n        setUrl(\"\");\n        setFileName(\"\");\n      } else {\n        // Explicitly do nothing on error - the error is already shown in progress\n        // This ensures the modal stays open\n        return;\n      }\n    } catch (error) {\n      // Catch any unexpected errors to prevent the modal from closing\n      // The error should already be handled by uploadFromUrl and shown in progress\n      // This is just a safety net to ensure the modal stays open\n      toast.error(error instanceof Error ? error.message : \"Unknown error\");\n    }\n  };\n\n  const isValidUrl = (urlString: string): boolean => {\n    try {\n      new URL(urlString);\n      return true;\n    } catch {\n      return false;\n    }\n  };\n\n  const getFileNameFromUrl = (urlString: string): string => {\n    try {\n      const urlObj = new URL(urlString);\n      const pathname = urlObj.pathname;\n      const filename = pathname.split(\"/\").pop() || \"\";\n      return filename.split(\"?\")[0] || \"\";\n    } catch {\n      return \"\";\n    }\n  };\n\n  const handleUrlChange = (value: string) => {\n    setUrl(value);\n    if (value && isValidUrl(value) && !fileName) {\n      const suggestedName = getFileNameFromUrl(value);\n      if (suggestedName) {\n        setFileName(suggestedName);\n      }\n    }\n  };\n\n  return (\n    <div className=\"mx-auto max-w-5xl space-y-6 overflow-y-auto px-4 py-6 md:px-10 md:py-8\">\n      {/* Enhanced header with better visual hierarchy */}\n      <div className=\"text-center\">\n        <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100\">\n          <LinkIcon className=\"h-6 w-6 text-blue-600\" />\n        </div>\n        <h2 className=\"text-xl font-semibold text-gray-900\">Upload from URL</h2>\n      </div>\n\n      {/* Enhanced form with better interaction design */}\n\n      <form\n        onSubmit={handleSubmit}\n        className=\"mx-auto w-full space-y-5 md:w-1/2\"\n      >\n        <div className=\"flex gap-2\">\n          <div className=\"relative flex-1\">\n            <Input\n              id=\"url\"\n              type=\"url\"\n              placeholder=\"https://example.com/image.jpg\"\n              value={url}\n              onChange={(e) => handleUrlChange(e.target.value)}\n              disabled={isUploading}\n              required\n              className={`w-full pr-10 transition-all duration-200 ${\n                url && !isValidUrl(url)\n                  ? \"border-red-300 bg-red-50/30 focus:border-red-500 focus:ring-red-500/20\"\n                  : \"focus:border-blue-500 focus:ring-blue-500/20\"\n              }`}\n            />\n            {url && (\n              <div className=\"absolute top-1/2 right-3 -translate-y-1/2\">\n                {isValidUrl(url) ? (\n                  <div className=\"flex h-5 w-5 items-center justify-center rounded-full bg-green-100\">\n                    <CheckIcon className=\"h-3 w-3 text-green-600\" />\n                  </div>\n                ) : (\n                  <div className=\"flex h-5 w-5 items-center justify-center rounded-full bg-red-100\">\n                    <AlertTriangleIcon className=\"h-3 w-3 text-red-600\" />\n                  </div>\n                )}\n              </div>\n            )}\n          </div>\n          {url.trim() && isValidUrl(url) && (\n            <Button variant=\"default\" type=\"submit\" disabled={isUploading}>\n              {isUploading ? (\n                <>\n                  <LoaderIcon className=\"h-3 w-3 animate-spin\" />\n                </>\n              ) : (\n                <>\n                  <ArrowRightIcon className=\"h-3 w-3\" />\n                </>\n              )}\n            </Button>\n          )}\n        </div>\n        {url && !isValidUrl(url) && (\n          <p className=\"text-xs text-red-600\">Please enter a valid URL</p>\n        )}\n\n        {/* Auto-suggest filename section */}\n        {url && isValidUrl(url) && (\n          <div className=\"space-y-2\">\n            <label\n              htmlFor=\"fileName\"\n              className=\"flex items-center gap-2 text-sm font-medium text-gray-900\"\n            >\n              <FileIcon className=\"h-3.5 w-3.5 text-gray-400\" />\n              File Name\n              <span className=\"text-xs font-normal text-gray-500\">\n                (optional)\n              </span>\n            </label>\n            <Input\n              id=\"fileName\"\n              type=\"text\"\n              placeholder={\n                getFileNameFromUrl(url) ||\n                \"Leave empty to use original filename\"\n              }\n              value={fileName}\n              onChange={(e) => setFileName(e.target.value)}\n              disabled={isUploading}\n              className=\"w-full transition-all duration-200 focus:border-blue-500 focus:ring-blue-500/20\"\n            />\n            {getFileNameFromUrl(url) && !fileName && (\n              <p className=\"text-xs text-gray-500\">\n                Will use filename:{\" \"}\n                <span className=\"font-medium\">{getFileNameFromUrl(url)}</span>\n              </p>\n            )}\n          </div>\n        )}\n      </form>\n\n      {/* Enhanced progress feedback */}\n      {config.showProgress &&\n        uploadProgress.length > 0 &&\n        (selectedFilesCount === undefined ||\n          selectedFilesCount > 0 ||\n          isUploading) && (\n          <div className=\"space-y-4\">\n            {uploadProgress.map((progress, index) => (\n              <div\n                key={index}\n                className=\"mx-auto w-full overflow-hidden rounded-xl border border-gray-200 bg-white shadow-sm md:w-1/2\"\n              >\n                <div className=\"p-4\">\n                  <div className=\"flex items-center gap-3\">\n                    <div\n                      className={`flex h-10 w-10 items-center justify-center rounded-xl ${\n                        progress.status === \"ready\"\n                          ? \"bg-green-100\"\n                          : progress.status === \"error\"\n                            ? \"bg-red-100\"\n                            : \"bg-blue-100\"\n                      }`}\n                    >\n                      {(() => {\n                        const Icon =\n                          progress.status === \"ready\"\n                            ? CheckIcon\n                            : progress.status === \"error\"\n                              ? AlertTriangleIcon\n                              : LoaderIcon;\n                        return (\n                          <Icon\n                            className={`h-5 w-5 ${\n                              progress.status === \"ready\"\n                                ? \"text-green-600\"\n                                : progress.status === \"error\"\n                                  ? \"text-red-600\"\n                                  : \"animate-spin text-blue-600\"\n                            }`}\n                          />\n                        );\n                      })()}\n                    </div>\n                    <div className=\"min-w-0 flex-1\">\n                      <p className=\"truncate text-sm font-medium text-gray-900\">\n                        {progress.file_name}\n                      </p>\n                      <div className=\"mt-1 flex items-center gap-2\">\n                        <p className=\"text-xs text-gray-500 capitalize\">\n                          {progress.status === \"uploading\"\n                            ? \"Uploading...\"\n                            : progress.status === \"ready\"\n                              ? \"Complete\"\n                              : progress.status}\n                        </p>\n                        {progress.status === \"uploading\" && (\n                          <span className=\"text-xs font-medium text-blue-600\">\n                            {progress.progress}%\n                          </span>\n                        )}\n                      </div>\n                    </div>\n                  </div>\n\n                  {progress.status === \"uploading\" && (\n                    <div className=\"mt-3\">\n                      <div className=\"h-2 w-full overflow-hidden rounded-full bg-gray-100\">\n                        <div\n                          className=\"h-2 rounded-full bg-linear-to-r from-blue-500 to-blue-600 transition-all duration-500 ease-out\"\n                          style={{ width: `${progress.progress}%` }}\n                        />\n                      </div>\n                    </div>\n                  )}\n\n                  {progress.error && (\n                    <div className=\"mt-3 rounded-lg bg-red-50 p-3\">\n                      <p className=\"text-sm text-red-700\">{progress.error}</p>\n                    </div>\n                  )}\n                </div>\n              </div>\n            ))}\n          </div>\n        )}\n\n      {/* Footer with Shareable Option */}\n      {enableShareableOption && (\n        <div className=\"mx-auto flex w-full items-center justify-between md:w-1/2\">\n          <div className=\"flex items-center gap-2\">\n            <Switch\n              checked={shareableEnabled}\n              onCheckedChange={onShareableChange}\n              id=\"shareable-toggle-url\"\n            />\n            <label\n              htmlFor=\"shareable-toggle-url\"\n              className=\"text-sm text-gray-700\"\n            >\n              Create as shareable media\n            </label>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { useState, useCallback } from \"react\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport {\n  damQueryKeys,\n  getDamAssetUrl,\n  getSanitizedAssetName,\n  getFileMimeType,\n  type CreateDamAssetParams,\n  type FilePickerResult,\n  type UploadProgress,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerApi } from \"../context/FilePickerApiContext\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\n\nexport const useComputerUpload = (): {\n  uploadFiles: (files: File[]) => Promise<FilePickerResult[]>;\n  uploadProgress: UploadProgress[];\n  isUploading: boolean;\n  clearProgress: () => void;\n} => {\n  const [uploadProgress, setUploadProgress] = useState<\n    Map<string, UploadProgress>\n  >(new Map());\n  const queryClient = useQueryClient();\n  const api = useFilePickerApi();\n  const { companyId, toast, apiBaseUrl } = useFilePickerContext();\n\n  const uploadMutation = useMutation({\n    mutationFn: (params: CreateDamAssetParams) => api.createDamAsset(params),\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: damQueryKeys.all });\n    },\n  });\n\n  const uploadFiles = useCallback(\n    async (files: File[]): Promise<FilePickerResult[]> => {\n      const results: FilePickerResult[] = [];\n\n      for (const file of files) {\n        const fileId = `${file.name}-${Date.now()}`;\n\n        setUploadProgress((prev) => {\n          const next = new Map(prev);\n          next.set(fileId, {\n            file_name: file.name,\n            progress: 0,\n            status: \"uploading\",\n          });\n          return next;\n        });\n\n        try {\n          setUploadProgress((prev) => {\n            const next = new Map(prev);\n            next.set(fileId, {\n              file_name: file.name,\n              progress: 50,\n              status: \"uploading\",\n            });\n            return next;\n          });\n\n          const response = await uploadMutation.mutateAsync({\n            file,\n            name: getSanitizedAssetName(file.name),\n            description: `Uploaded via FilePicker: ${file.name}`,\n            companyId,\n          });\n\n          setUploadProgress((prev) => {\n            const next = new Map(prev);\n            next.set(fileId, {\n              file_name: file.name,\n              progress: 100,\n              status: \"ready\",\n            });\n            return next;\n          });\n\n          const asset = response.asset;\n          const fileUrl = getDamAssetUrl(asset, apiBaseUrl);\n\n          results.push({\n            asset_id: asset.id,\n            asset_code: asset.code,\n            file_path: fileUrl,\n            file_url: fileUrl,\n            metadata: {\n              file_name: file.name,\n              mime_type: getFileMimeType(file),\n              file_size: file.size,\n            },\n            upload_status: \"ready\",\n            variant_id: asset.default_variant_id\n              ? asset.default_variant_id.toString()\n              : undefined,\n          });\n        } catch (error) {\n          const errorMessage =\n            error instanceof Error ? error.message : \"Upload failed\";\n          const status =\n            error instanceof Error && \"status\" in error\n              ? (error as { status: number }).status\n              : undefined;\n          const isFileSizeError =\n            status === 413 ||\n            (status === 400 &&\n              errorMessage.toLowerCase().includes(\"file size\"));\n          if (isFileSizeError) {\n            toast.error(\n              \"File size too large: Please compress or choose another file\",\n            );\n          } else {\n            toast.error(errorMessage);\n          }\n          setUploadProgress((prev) => {\n            const next = new Map(prev);\n            next.set(fileId, {\n              file_name: file.name,\n              progress: 0,\n              status: \"error\",\n              error: errorMessage,\n            });\n            return next;\n          });\n\n          results.push({\n            asset_id: 0,\n            asset_code: \"\",\n            file_path: \"\",\n            file_url: \"\",\n            metadata: {\n              file_name: file.name,\n              mime_type: getFileMimeType(file),\n              file_size: file.size,\n            },\n            upload_status: \"error\",\n          });\n        }\n      }\n\n      return results;\n    },\n    [uploadMutation, companyId, toast, apiBaseUrl],\n  );\n\n  const clearProgress = useCallback(() => {\n    setUploadProgress(new Map());\n  }, []);\n\n  return {\n    uploadFiles,\n    uploadProgress: Array.from(uploadProgress.values()),\n    isUploading: uploadMutation.isPending,\n    clearProgress,\n  };\n};\n","import React, {\n  useState,\n  useRef,\n  useCallback,\n  useEffect,\n  useMemo,\n} from \"react\";\nimport ReactCrop, { type Crop, type PixelCrop } from \"react-image-crop\";\nimport \"react-image-crop/dist/ReactCrop.css\";\nimport {\n  Button,\n  Dialog,\n  DialogContent,\n  DialogTitle,\n  Slider,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport {\n  MoveHorizontalIcon,\n  RotateCwIcon,\n  ChevronDownIcon,\n  MinusIcon,\n  PlusIcon,\n} from \"lucide-react\";\nimport type {\n  ImageCropModalProps,\n  AspectValue,\n} from \"@fluid-app/file-picker-core\";\nimport {\n  ASPECT_OPTIONS,\n  ROTATION_MIN,\n  ROTATION_MAX,\n  computeInitialCrop,\n  getCroppedImgFromViewport,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\nimport { useIsMobile } from \"../hooks/use-is-mobile\";\n\nexport const ImageCropModal: React.FC<ImageCropModalProps> = ({\n  isOpen,\n  onClose,\n  onCrop,\n  imageFile,\n  aspectRatio: aspectRatioProp,\n  minWidth = 50,\n  minHeight = 50,\n  maxWidth = 2000,\n  maxHeight = 2000,\n}) => {\n  const { toast } = useFilePickerContext();\n  const isMobile = useIsMobile();\n  const [isAspectOpen, setIsAspectOpen] = useState(false);\n  const [crop, setCrop] = useState<Crop>();\n  const [completedCrop, setCompletedCrop] = useState<PixelCrop>();\n  const [imgSrc, setImgSrc] = useState<string>(\"\");\n  const [isProcessing, setIsProcessing] = useState(false);\n  const [aspectOption, setAspectOption] = useState<AspectValue>(\n    aspectRatioProp ?? \"free\",\n  );\n  const [rotation, setRotation] = useState(0);\n  const [flipHorizontal, setFlipHorizontal] = useState(false);\n  const [zoom, setZoom] = useState(1);\n  const [cropModified, setCropModified] = useState(false);\n  const [cropViewportWidthPx, setCropViewportWidthPx] = useState<number | null>(\n    null,\n  );\n  const imgRef = useRef<HTMLImageElement>(null);\n  const cropContainerRef = useRef<HTMLDivElement>(null);\n  const cropWrapperRef = useRef<HTMLDivElement>(null);\n\n  const effectiveAspect = aspectOption === \"free\" ? undefined : aspectOption;\n\n  const outputDimensions = useMemo(() => {\n    const img = imgRef.current;\n    if (!completedCrop || !img) return null;\n    const nw = img.naturalWidth;\n    const nh = img.naturalHeight;\n    const vw = img.clientWidth;\n    const vh = img.clientHeight;\n    if (!vw || !vh) return null;\n    const upscale = Math.max(nw / vw, nh / vh);\n    return {\n      width: Math.floor(completedCrop.width * upscale),\n      height: Math.floor(completedCrop.height * upscale),\n    };\n  }, [completedCrop]);\n\n  const initialAspect = aspectRatioProp ?? \"free\";\n  const hasChanges =\n    rotation !== 0 ||\n    flipHorizontal !== false ||\n    zoom !== 1 ||\n    aspectOption !== initialAspect ||\n    cropModified;\n\n  useEffect(() => {\n    if (isOpen && imageFile) {\n      const reader = new FileReader();\n      reader.addEventListener(\"load\", () => {\n        setImgSrc(reader.result as string);\n      });\n      reader.readAsDataURL(imageFile);\n    }\n    if (!isOpen) {\n      setRotation(0);\n      setFlipHorizontal(false);\n      setZoom(1);\n      setCropModified(false);\n      setCropViewportWidthPx(null);\n      setAspectOption(aspectRatioProp ?? \"free\");\n    }\n  }, [isOpen, imageFile, aspectRatioProp]);\n\n  /** Apply crop + completedCrop for given aspect, reading container dimensions. */\n  const applyCropForAspect = useCallback((aspect: number | undefined) => {\n    const img = imgRef.current;\n    if (!img) return;\n    const { crop: newCrop, completedCrop: newCompleted } = computeInitialCrop(\n      img.clientWidth,\n      img.clientHeight,\n      aspect,\n    );\n    setCrop(newCrop);\n    setTimeout(() => setCompletedCrop(newCompleted), 0);\n  }, []);\n\n  const onImageLoad = useCallback(() => {\n    if (!imgRef.current) return;\n    applyCropForAspect(effectiveAspect);\n  }, [effectiveAspect, applyCropForAspect]);\n\n  const handleCrop = async () => {\n    if (!imgRef.current) return;\n    setIsProcessing(true);\n    try {\n      const vw = imgRef.current.clientWidth;\n      const vh = imgRef.current.clientHeight;\n\n      let px: number, py: number, pw: number, ph: number;\n      if (completedCrop) {\n        px = completedCrop.x;\n        py = completedCrop.y;\n        pw = completedCrop.width;\n        ph = completedCrop.height;\n      } else if (crop) {\n        if (crop.unit === \"%\") {\n          px = (crop.x / 100) * vw;\n          py = (crop.y / 100) * vh;\n          pw = (crop.width / 100) * vw;\n          ph = (crop.height / 100) * vh;\n        } else {\n          px = (crop as PixelCrop).x;\n          py = (crop as PixelCrop).y;\n          pw = (crop as PixelCrop).width;\n          ph = (crop as PixelCrop).height;\n        }\n      } else {\n        px = 0;\n        py = 0;\n        pw = vw;\n        ph = vh;\n      }\n\n      // Use viewport-based export so rotation, flip, and zoom match the preview.\n      // Pass sourceFile so the bitmap is decoded at full resolution from the\n      // original bytes, not from the <img> element (which the browser may have\n      // decoded at a reduced resolution due to its small CSS display size).\n      const croppedFile = await getCroppedImgFromViewport(\n        imgRef.current,\n        vw,\n        vh,\n        { x: px, y: py, width: pw, height: ph },\n        zoom,\n        rotation,\n        flipHorizontal,\n        imageFile.name,\n        imageFile.type,\n        1,\n        imageFile,\n      );\n      await Promise.resolve(onCrop(croppedFile));\n      onClose();\n    } catch (error) {\n      toast.error(\n        error instanceof Error ? error.message : \"Failed to crop image\",\n      );\n    } finally {\n      setIsProcessing(false);\n    }\n  };\n\n  const resetCrop = () => {\n    setRotation(0);\n    setFlipHorizontal(false);\n    setZoom(1);\n    setCropModified(false);\n    setAspectOption(aspectRatioProp ?? \"free\");\n    applyCropForAspect(aspectRatioProp ?? undefined);\n  };\n\n  const aspectLabel =\n    ASPECT_OPTIONS.find(\n      (o) =>\n        o.value === aspectOption ||\n        (typeof o.value === \"number\" && o.value === aspectOption),\n    )?.label ?? \"Free\";\n\n  return (\n    <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()} modal>\n      <DialogContent\n        overlayClassName=\"bg-gray-500/75\"\n        showCloseButton={false}\n        className=\"border-border text-foreground z-400 flex h-[90vh]! w-[95vw]! max-w-[1600px]! flex-col overflow-auto border bg-white p-0\"\n      >\n        <DialogTitle className=\"sr-only\">Crop Image</DialogTitle>\n        <div className=\"bg-muted/30 flex shrink-0 flex-wrap items-center justify-center gap-2 px-4 py-2\">\n          {isMobile ? (\n            <>\n              <Button\n                variant=\"outline\"\n                size=\"sm\"\n                type=\"button\"\n                onClick={() => setIsAspectOpen(true)}\n              >\n                {aspectLabel}\n                <ChevronDownIcon className=\"h-3 w-3\" />\n              </Button>\n              <MobileActionSheet\n                open={isAspectOpen}\n                onOpenChange={setIsAspectOpen}\n                title=\"Aspect ratio\"\n                actions={ASPECT_OPTIONS.map((option) => ({\n                  id: String(option.value),\n                  label: option.label,\n                  onSelect: () => {\n                    setAspectOption(option.value);\n                    applyCropForAspect(\n                      option.value === \"free\" ? undefined : option.value,\n                    );\n                  },\n                }))}\n              />\n            </>\n          ) : (\n            <DropdownMenu>\n              <DropdownMenuTrigger className=\"inline-flex items-center gap-1 rounded-md border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700 shadow-sm transition-colors hover:bg-gray-50\">\n                {aspectLabel}\n                <ChevronDownIcon className=\"h-3 w-3\" />\n              </DropdownMenuTrigger>\n              <DropdownMenuContent className=\"z-410\">\n                {ASPECT_OPTIONS.map((opt) => (\n                  <DropdownMenuItem\n                    key={String(opt.value)}\n                    onClick={() => {\n                      setAspectOption(opt.value);\n                      applyCropForAspect(\n                        opt.value === \"free\" ? undefined : opt.value,\n                      );\n                    }}\n                  >\n                    {opt.label}\n                  </DropdownMenuItem>\n                ))}\n              </DropdownMenuContent>\n            </DropdownMenu>\n          )}\n          <Button\n            variant=\"ghost\"\n            size=\"sm\"\n            type=\"button\"\n            onClick={() => setFlipHorizontal((f) => !f)}\n            aria-label=\"Flip horizontal\"\n            className=\"gap-1 bg-transparent\"\n          >\n            <MoveHorizontalIcon className=\"h-4 w-4\" />\n            <span className=\"text-xs\">Flip</span>\n          </Button>\n          <Button\n            variant=\"ghost\"\n            size=\"sm\"\n            type=\"button\"\n            onClick={() => {\n              setRotation((r) => {\n                const next = r + 90;\n                if (next > ROTATION_MAX) return next - 360;\n                if (next < ROTATION_MIN) return next + 360;\n                return next;\n              });\n            }}\n            aria-label=\"Rotate 90deg\"\n            className=\"gap-1 bg-transparent\"\n          >\n            <RotateCwIcon className=\"h-4 w-4\" />\n            <span className=\"text-xs\">Rotate</span>\n          </Button>\n\n          <div className=\"flex items-center gap-1\">\n            <Button\n              variant=\"ghost\"\n              size=\"icon\"\n              type=\"button\"\n              onClick={() =>\n                setZoom((z) => Math.max(0.5, Math.round((z - 0.1) * 10) / 10))\n              }\n              className=\"bg-transparent\"\n              aria-label=\"Zoom out\"\n            >\n              <MinusIcon className=\"h-3 w-3\" />\n            </Button>\n            <Slider\n              min={0.5}\n              max={2}\n              step={0.1}\n              value={[zoom]}\n              onValueChange={([value]) => {\n                if (value !== undefined) setZoom(value);\n              }}\n              className=\"accent-contrast h-2 w-24 shrink-0\"\n              aria-label=\"Zoom\"\n            />\n            <Button\n              variant=\"ghost\"\n              size=\"icon\"\n              type=\"button\"\n              onClick={() =>\n                setZoom((z) => Math.min(2, Math.round((z + 0.1) * 10) / 10))\n              }\n              className=\"bg-transparent\"\n              aria-label=\"Zoom in\"\n            >\n              <PlusIcon className=\"h-3 w-3\" />\n            </Button>\n            <span\n              className=\"text-muted-foreground min-w-10 text-xs\"\n              aria-hidden\n            >\n              {Math.round(zoom * 100)}%\n            </span>\n          </div>\n        </div>\n\n        <div className=\"relative flex w-full flex-1 items-center justify-center overflow-auto p-4\">\n          {imgSrc && (\n            <div\n              ref={cropWrapperRef}\n              className=\"mx-auto\"\n              style={{\n                width:\n                  cropViewportWidthPx != null\n                    ? `${cropViewportWidthPx}px`\n                    : \"100%\",\n              }}\n            >\n              <div\n                ref={cropContainerRef}\n                className=\"image-crop-modal-crop [&_.ReactCrop__crop-selection]:border-contrast [&_.ReactCrop__rule]:border-border flex w-full items-center justify-center [&_.ReactCrop__crop-selection]:border-2 [&_.ReactCrop__crop-selection]:border-dashed [&_.ReactCrop__crop-selection]:shadow-[0_0_0_9999px_rgba(0,0,0,0.4)]\"\n              >\n                <ReactCrop\n                  crop={crop}\n                  onChange={(pixelCrop, percentCrop) => {\n                    setCrop(percentCrop);\n                    setCompletedCrop(pixelCrop);\n                    setCropModified(true);\n                  }}\n                  onComplete={(c) => setCompletedCrop(c)}\n                  aspect={effectiveAspect}\n                  minWidth={minWidth}\n                  minHeight={minHeight}\n                  maxWidth={maxWidth}\n                  maxHeight={maxHeight}\n                >\n                  <img\n                    ref={imgRef}\n                    alt=\"Crop\"\n                    src={imgSrc}\n                    className=\"block max-h-full max-w-full object-contain sm:h-[300px] xl:h-[500px]\"\n                    style={{\n                      transform: [\n                        `rotate(${rotation}deg)`,\n                        `scale(${zoom})`,\n                        flipHorizontal ? \"scaleX(-1)\" : null,\n                      ]\n                        .filter(Boolean)\n                        .join(\" \"),\n                      transformOrigin: \"center center\",\n                    }}\n                    onLoad={onImageLoad}\n                  />\n                </ReactCrop>\n              </div>\n            </div>\n          )}\n        </div>\n\n        <div className=\"bg-muted/30 flex shrink-0 flex-col gap-3 px-4 py-3\">\n          <div className=\"flex justify-center\">\n            <span className=\"text-muted-foreground text-xs\" aria-hidden>\n              {outputDimensions\n                ? `${outputDimensions.width} x ${outputDimensions.height} px · ${rotation}deg`\n                : `${rotation}deg`}\n            </span>\n          </div>\n          <div className=\"flex items-center justify-end gap-2\">\n            <Button\n              variant=\"ghost\"\n              size=\"sm\"\n              onClick={resetCrop}\n              disabled={isProcessing || !hasChanges}\n              className=\"border-0 shadow-none\"\n            >\n              Reset to Default\n            </Button>\n            <Button\n              variant=\"ghost\"\n              size=\"sm\"\n              onClick={onClose}\n              disabled={isProcessing}\n              className=\"border-0 shadow-none\"\n            >\n              Cancel\n            </Button>\n            <Button\n              variant=\"default\"\n              size=\"sm\"\n              onClick={handleCrop}\n              disabled={!crop || isProcessing}\n              className=\"border-0\"\n            >\n              {isProcessing ? \"Processing...\" : \"Apply Crop\"}\n            </Button>\n          </div>\n        </div>\n      </DialogContent>\n    </Dialog>\n  );\n};\n","import React, { useCallback, useState } from \"react\";\nimport { useDropzone, type FileRejection } from \"react-dropzone\";\nimport { Button, Card, CardContent, Switch } from \"@fluid-app/ui-primitives\";\nimport {\n  CheckIcon,\n  AlertTriangleIcon,\n  LoaderIcon,\n  ArrowUpIcon,\n} from \"lucide-react\";\nimport { useComputerUpload } from \"../hooks/use-computer-upload\";\nimport { ImageCropModal } from \"./ImageCropModal\";\nimport { getFileMimeType } from \"@fluid-app/file-picker-core\";\nimport type {\n  FilePickerConfig,\n  FilePickerResult,\n} from \"@fluid-app/file-picker-core\";\nimport { useFilePickerContext } from \"../context/FilePickerContext\";\n\nfunction formatFileSize(bytes: number): string {\n  if (bytes === 0) return \"0 Bytes\";\n  const k = 1024;\n  const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n  const i = Math.floor(Math.log(bytes) / Math.log(k));\n  return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n}\n\ninterface ComputerUploadProps {\n  config: FilePickerConfig;\n  onFilesSelected: (results: FilePickerResult[]) => void;\n  enableShareableOption?: boolean;\n  shareableEnabled?: boolean;\n  onShareableChange?: (enabled: boolean) => void;\n  skipCropper?: boolean;\n  selectedFilesCount?: number;\n}\n\nexport const ComputerUpload: React.FC<ComputerUploadProps> = ({\n  config,\n  onFilesSelected,\n  enableShareableOption = false,\n  shareableEnabled = false,\n  onShareableChange,\n  skipCropper = false,\n  selectedFilesCount,\n}) => {\n  const { toast } = useFilePickerContext();\n  const { uploadFiles, uploadProgress, isUploading, clearProgress } =\n    useComputerUpload();\n  const [dragActive, setDragActive] = useState(false);\n  const [cropModalOpen, setCropModalOpen] = useState(false);\n  const [pendingImageFile, setPendingImageFile] = useState<File | null>(null);\n  const [pendingFiles, setPendingFiles] = useState<File[]>([]);\n\n  const handleDrop = useCallback(\n    async (acceptedFiles: File[]) => {\n      setDragActive(false);\n      clearProgress();\n\n      const filesToUpload = config.maxFiles\n        ? acceptedFiles.slice(0, config.maxFiles)\n        : acceptedFiles;\n\n      // Check if any files are images that can be cropped\n      // HEIC/HEIF are excluded because <canvas> cannot render them natively\n      const UNCROPABLE_TYPES = [\n        \"image/heic\",\n        \"image/heic-sequence\",\n        \"image/heif\",\n        \"image/svg+xml\",\n      ];\n      const isCropableImage = (file: File) => {\n        const mime = getFileMimeType(file);\n        return mime.startsWith(\"image/\") && !UNCROPABLE_TYPES.includes(mime);\n      };\n      const imageFiles = filesToUpload.filter(isCropableImage);\n      const nonImageFiles = filesToUpload.filter((f) => !isCropableImage(f));\n\n      if (imageFiles.length === 1 && !skipCropper) {\n        // Only show crop tool for single image uploads\n        // Store non-image files for later upload\n        setPendingFiles(nonImageFiles);\n        // Open crop modal for the single image\n        setPendingImageFile(imageFiles[0] || null);\n        setCropModalOpen(true);\n      } else {\n        // Multiple files or no images to crop or cropper is disabled, upload directly\n        const results = await uploadFiles(filesToUpload);\n        onFilesSelected(results);\n      }\n    },\n    [uploadFiles, onFilesSelected, config.maxFiles, clearProgress, skipCropper],\n  );\n\n  const handleCropComplete = useCallback(\n    async (croppedFile: File) => {\n      setCropModalOpen(false);\n\n      // Combine cropped file with any pending non-image files\n      const allFiles = [croppedFile, ...pendingFiles];\n      const results = await uploadFiles(allFiles);\n      onFilesSelected(results);\n\n      // Reset state\n      setPendingImageFile(null);\n      setPendingFiles([]);\n    },\n    [uploadFiles, onFilesSelected, pendingFiles],\n  );\n\n  const handleCropCancel = useCallback(() => {\n    setCropModalOpen(false);\n    setPendingImageFile(null);\n\n    // Upload non-image files without cropping\n    if (pendingFiles.length > 0) {\n      uploadFiles(pendingFiles).then(onFilesSelected);\n    }\n    setPendingFiles([]);\n  }, [uploadFiles, onFilesSelected, pendingFiles]);\n\n  const handleDropRejected = useCallback(\n    (fileRejections: FileRejection[]) => {\n      fileRejections.forEach(({ file, errors }) => {\n        errors.forEach((error) => {\n          if (error.code === \"file-too-large\") {\n            toast.error(\n              `File size too large: \"${file.name}\" (${formatFileSize(file.size)}) exceeds the maximum allowed size.`,\n            );\n          } else if (error.code === \"file-invalid-type\") {\n            toast.error(\n              `Invalid file type: \"${file.name}\" is not an accepted file type.`,\n            );\n          } else if (error.code === \"too-many-files\") {\n            toast.error(\n              `Too many files: You can only upload ${config.maxFiles} file${config.maxFiles === 1 ? \"\" : \"s\"} at a time.`,\n            );\n          } else {\n            toast.error(error.message);\n          }\n        });\n      });\n    },\n    [config.maxFiles, toast],\n  );\n\n  const { getRootProps, getInputProps, isDragActive } = useDropzone({\n    onDrop: handleDrop,\n    onDropRejected: (fileRejections: FileRejection[]) =>\n      handleDropRejected(fileRejections),\n    accept: config.accept\n      ? config.accept.reduce(\n          (acc, type) => {\n            // Handle both MIME types (e.g., \"image/*\") and file extensions (e.g., \".jpg\")\n            if (type.startsWith(\".\")) {\n              // File extension - add to a generic MIME type\n              acc[\"*/*\"] = acc[\"*/*\"] || [];\n              acc[\"*/*\"].push(type);\n            } else {\n              // MIME type - add as is\n              acc[type] = [];\n            }\n            return acc;\n          },\n          {} as Record<string, string[]>,\n        )\n      : undefined,\n    maxSize: config.maxSize,\n    maxFiles: config.maxFiles,\n    onDragEnter: () => setDragActive(true),\n    onDragLeave: () => setDragActive(false),\n  });\n\n  return (\n    <div className=\"mx-auto max-w-7xl space-y-6 overflow-y-auto px-4 py-6 md:px-10 md:py-8\">\n      {/* Enhanced dropzone card */}\n      <Card className=\"mx-auto w-full border-none shadow-none md:w-1/2\">\n        <CardContent className=\"p-6\">\n          <div\n            {...getRootProps()}\n            className={`group cursor-pointer rounded-lg border-2 border-dashed p-8 text-center transition-all duration-200 ${\n              isDragActive || dragActive\n                ? \"scale-[1.02] border-blue-500 bg-blue-50/50\"\n                : \"border-gray-300 hover:border-blue-400 hover:bg-blue-50/20\"\n            } ${isUploading ? \"pointer-events-none opacity-50\" : \"\"}`}\n          >\n            <input {...getInputProps()} />\n            <div className=\"space-y-4\">\n              {/* Header with icon moved inside dropzone */}\n              <div className=\"text-center\">\n                <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 group-hover:bg-blue-200\">\n                  <ArrowUpIcon className=\"h-10 w-10 text-gray-600 group-hover:text-blue-500\" />\n                </div>\n              </div>\n\n              {/* File constraints */}\n              <p className=\"text-center text-xs text-gray-500\">\n                50MB for Images and Documents. 2GB for Videos.\n              </p>\n\n              <Button\n                variant=\"default\"\n                disabled={isUploading}\n                className=\"transition-all duration-200\"\n              >\n                {isUploading ? (\n                  <>\n                    <LoaderIcon className=\"mr-2 h-4 w-4 animate-spin\" />\n                    Uploading...\n                  </>\n                ) : (\n                  \"Choose Files\"\n                )}\n              </Button>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n\n      {/* Enhanced progress feedback */}\n      {config.showProgress &&\n        uploadProgress.length > 0 &&\n        (selectedFilesCount === undefined ||\n          selectedFilesCount > 0 ||\n          isUploading) && (\n          <div className=\"space-y-4\">\n            {uploadProgress.map((progress) => (\n              <div\n                key={`${progress.file_name}-${progress.status}`}\n                className=\"mx-auto w-full overflow-hidden rounded-xl border border-gray-200 bg-white shadow-sm md:w-1/2\"\n              >\n                <div className=\"p-4\">\n                  <div className=\"flex items-center gap-3\">\n                    <div\n                      className={`flex h-10 w-10 items-center justify-center rounded-xl ${\n                        progress.status === \"ready\"\n                          ? \"bg-green-100\"\n                          : progress.status === \"error\"\n                            ? \"bg-red-100\"\n                            : \"bg-blue-100\"\n                      }`}\n                    >\n                      {(() => {\n                        const Icon =\n                          progress.status === \"ready\"\n                            ? CheckIcon\n                            : progress.status === \"error\"\n                              ? AlertTriangleIcon\n                              : LoaderIcon;\n                        return (\n                          <Icon\n                            className={`h-5 w-5 ${\n                              progress.status === \"ready\"\n                                ? \"text-green-600\"\n                                : progress.status === \"error\"\n                                  ? \"text-red-600\"\n                                  : \"animate-spin text-blue-600\"\n                            }`}\n                          />\n                        );\n                      })()}\n                    </div>\n                    <div className=\"min-w-0 flex-1\">\n                      <p className=\"truncate text-sm font-medium text-gray-900\">\n                        {progress.file_name}\n                      </p>\n                      <div className=\"mt-1 flex items-center gap-2\">\n                        <p className=\"text-xs text-gray-500 capitalize\">\n                          {progress.status === \"uploading\"\n                            ? \"Uploading...\"\n                            : progress.status === \"ready\"\n                              ? \"Complete\"\n                              : progress.status}\n                        </p>\n                        {progress.status === \"uploading\" && (\n                          <span className=\"text-xs font-medium text-blue-600\">\n                            {progress.progress}%\n                          </span>\n                        )}\n                      </div>\n                    </div>\n                  </div>\n\n                  {progress.status === \"uploading\" && (\n                    <div className=\"mt-3\">\n                      <div className=\"h-2 w-full overflow-hidden rounded-full bg-gray-100\">\n                        <div\n                          className=\"h-2 rounded-full bg-linear-to-r from-blue-500 to-blue-600 transition-all duration-500 ease-out\"\n                          style={{ width: `${progress.progress}%` }}\n                        />\n                      </div>\n                    </div>\n                  )}\n\n                  {progress.error && (\n                    <div className=\"mt-3 rounded-lg bg-red-50 p-3\">\n                      <p className=\"text-sm text-red-700\">{progress.error}</p>\n                    </div>\n                  )}\n                </div>\n              </div>\n            ))}\n          </div>\n        )}\n\n      {/* Footer with Shareable Option */}\n      {enableShareableOption && (\n        <div className=\"mx-auto flex w-full items-center justify-between px-4 md:w-1/2\">\n          <div className=\"flex items-center gap-2\">\n            <Switch\n              checked={shareableEnabled}\n              onCheckedChange={onShareableChange}\n              id=\"shareable-toggle-computer\"\n            />\n            <label\n              htmlFor=\"shareable-toggle-computer\"\n              className=\"text-sm text-gray-700\"\n            >\n              Create as shareable media\n            </label>\n          </div>\n        </div>\n      )}\n\n      {/* Image Crop Modal */}\n      {pendingImageFile && (\n        <ImageCropModal\n          isOpen={cropModalOpen}\n          onClose={handleCropCancel}\n          onCrop={handleCropComplete}\n          imageFile={pendingImageFile}\n          minWidth={50}\n          minHeight={50}\n          maxWidth={2000}\n          maxHeight={2000}\n        />\n      )}\n    </div>\n  );\n};\n","import React from \"react\";\nimport {\n  GoogleIcon,\n  InstagramIcon,\n  FacebookIcon,\n  TiktokIcon,\n  DropboxIcon,\n} from \"../utils/brand-icons\";\nimport { DamLibrary, type DamLibraryRef } from \"./DamLibrary\";\nimport { MediaTab } from \"./MediaTab\";\nimport { PagesTab } from \"./PagesTab\";\nimport { ProductsTab } from \"./ProductsTab\";\nimport { EnrollmentPacksTab } from \"./EnrollmentPacksTab\";\nimport { UnsplashPicker } from \"./UnsplashPicker\";\nimport type {\n  FilePickerConfig,\n  FilePickerResult,\n  PickerMethod,\n  DamAsset,\n} from \"@fluid-app/file-picker-core\";\nimport type { ViewMode } from \"./FilePickerHeader\";\nimport type { SortOptionId } from \"@fluid-app/file-picker-core\";\nimport { UrlUpload } from \"./UrlUpload\";\nimport { ComputerUpload } from \"./ComputerUpload\";\nimport type { MediumResponse } from \"../types/media\";\n\nexport type { MediumResponse };\n\ninterface FilePickerContentProps {\n  activeMethod: PickerMethod;\n  config: FilePickerConfig;\n  damTypeFilter?: string;\n  sortOption?: SortOptionId;\n  onFilesSelected: (results: FilePickerResult[]) => void;\n  onUploadConfirmAndMaybeCreate: (results: FilePickerResult[]) => void;\n  onSingleFileSelected: (result: FilePickerResult) => void;\n  enableShareableOption?: boolean;\n  shareableEnabled?: boolean;\n  onShareableChange?: (enabled: boolean) => void;\n  damLibraryRef: React.RefObject<DamLibraryRef | null>;\n  onDamConfirmAndMaybeCreate: (results: FilePickerResult[]) => void;\n  selectedMediaIds: number[];\n  onMediaIdsChange: (ids: number[]) => void;\n  onMediaSelectionChange: (count: number) => void;\n  onMediaDataChange: (data: FilePickerResult[]) => void;\n  selectedPageIds?: number[];\n  onPageIdsChange?: (ids: number[]) => void;\n  onPageSelectionChange?: (count: number) => void;\n  onPageDataChange?: (data: FilePickerResult[]) => void;\n  selectedProductIds?: number[];\n  onProductIdsChange?: (ids: number[]) => void;\n  onProductSelectionChange?: (count: number) => void;\n  onProductDataChange?: (data: FilePickerResult[]) => void;\n  selectedEnrollmentPackIds?: number[];\n  onEnrollmentPackIdsChange?: (ids: number[]) => void;\n  onEnrollmentPackSelectionChange?: (count: number) => void;\n  onEnrollmentPackDataChange?: (data: FilePickerResult[]) => void;\n  onDamSelectionChange: (\n    count: number,\n    files?: FilePickerResult[],\n    variantCounts?: Record<string, number>,\n  ) => void;\n  onDamSearchingChange?: (searching: boolean) => void;\n  skipCropper?: boolean;\n  damSearchQuery?: string;\n  onDamSearchChange?: (value: string) => void;\n  mediaSearchQuery?: string;\n  onMediaSearchChange?: (value: string) => void;\n  unsplashSearchQuery?: string;\n  onUnsplashSearchChange?: (value: string) => void;\n  onUnsplashSearchingChange?: (searching: boolean) => void;\n  onUnsplashUploadingChange?: (uploading: boolean) => void;\n  thumbnailSize?: number;\n  viewMode?: ViewMode;\n  showNamesOnMedia?: boolean;\n  onDamFoldersChange?: (folders: string[]) => void;\n  previewContainer?: HTMLDivElement | null;\n  previewMedia?: MediumResponse | null;\n  onPreviewMediaChange?: (media: MediumResponse | null) => void;\n  previewAsset?: DamAsset | null;\n  onPreviewAssetChange?: (asset: DamAsset | null) => void;\n  uploadSelectionCount?: number;\n}\n\nexport const FilePickerContent: React.FC<FilePickerContentProps> = ({\n  activeMethod,\n  config,\n  damTypeFilter,\n  sortOption,\n  onFilesSelected,\n  onSingleFileSelected,\n  enableShareableOption,\n  shareableEnabled,\n  onShareableChange,\n  damLibraryRef,\n  onDamConfirmAndMaybeCreate,\n  selectedMediaIds,\n  onMediaIdsChange,\n  onMediaSelectionChange,\n  onMediaDataChange,\n  selectedPageIds,\n  onPageIdsChange,\n  onPageSelectionChange,\n  onPageDataChange,\n  selectedProductIds,\n  onProductIdsChange,\n  onProductSelectionChange,\n  onProductDataChange,\n  selectedEnrollmentPackIds,\n  onEnrollmentPackIdsChange,\n  onEnrollmentPackSelectionChange,\n  onEnrollmentPackDataChange,\n  onDamSelectionChange,\n  onDamSearchingChange,\n  skipCropper = false,\n  damSearchQuery = \"\",\n  onDamSearchChange,\n  mediaSearchQuery,\n  onMediaSearchChange,\n  unsplashSearchQuery,\n  onUnsplashSearchChange,\n  onUnsplashSearchingChange,\n  onUnsplashUploadingChange,\n  thumbnailSize = 100,\n  viewMode = \"grid\",\n  showNamesOnMedia = true,\n  onDamFoldersChange,\n  previewContainer,\n  previewMedia,\n  onPreviewMediaChange,\n  previewAsset,\n  onPreviewAssetChange,\n  uploadSelectionCount,\n}) => {\n  const damConfig = React.useMemo(\n    () => ({\n      ...config,\n      fileTypeFilter: damTypeFilter ? [damTypeFilter] : config.fileTypeFilter,\n    }),\n    [config, damTypeFilter],\n  );\n  return (\n    <div className=\"flex-1 overflow-x-hidden overflow-y-auto p-6\">\n      {(activeMethod === \"upload\" || activeMethod === \"computer\") && (\n        <ComputerUpload\n          config={config}\n          onFilesSelected={onFilesSelected}\n          enableShareableOption={enableShareableOption}\n          shareableEnabled={shareableEnabled}\n          onShareableChange={onShareableChange}\n          skipCropper={skipCropper}\n          selectedFilesCount={uploadSelectionCount}\n        />\n      )}\n      {activeMethod === \"url\" && (\n        <UrlUpload\n          config={config}\n          onFileSelected={onSingleFileSelected}\n          enableShareableOption={enableShareableOption}\n          shareableEnabled={shareableEnabled}\n          onShareableChange={onShareableChange}\n          selectedFilesCount={uploadSelectionCount}\n        />\n      )}\n\n      {activeMethod === (\"dam\" as PickerMethod) && (\n        <DamLibrary\n          ref={damLibraryRef}\n          config={damConfig}\n          sortOption={sortOption}\n          onFoldersChange={onDamFoldersChange}\n          onAssetsSelected={onFilesSelected}\n          onSelectionChange={onDamSelectionChange}\n          onConfirmAndClose={(results) => {\n            void onDamConfirmAndMaybeCreate(results);\n          }}\n          onSearchingChange={onDamSearchingChange}\n          showVariants={config.showVariants}\n          searchQuery={damSearchQuery}\n          onSearchChange={onDamSearchChange}\n          thumbnailSize={thumbnailSize}\n          viewMode={viewMode}\n          showNamesOnMedia={showNamesOnMedia}\n          previewContainer={previewContainer}\n          previewAsset={previewAsset}\n          onPreviewAssetChange={onPreviewAssetChange}\n        />\n      )}\n\n      {activeMethod === (\"media\" as PickerMethod) && (\n        <MediaTab\n          config={config}\n          onMediaSelected={() => {}} // Not used for media tab\n          onSelectionChange={onMediaSelectionChange}\n          onMediaDataChange={onMediaDataChange}\n          selectedMediaIds={selectedMediaIds}\n          onMediaIdsChange={onMediaIdsChange}\n          searchQuery={mediaSearchQuery}\n          onSearchChange={onMediaSearchChange}\n          thumbnailSize={thumbnailSize}\n          viewMode={viewMode}\n          showNamesOnMedia={showNamesOnMedia}\n          mediaTypeFilter={damTypeFilter}\n          sortOption={sortOption}\n          previewContainer={previewContainer}\n          previewMedia={previewMedia}\n          onPreviewMediaChange={onPreviewMediaChange}\n        />\n      )}\n\n      {activeMethod === \"pages\" && (\n        <PagesTab\n          config={config}\n          selectedIds={selectedPageIds ?? []}\n          onSelectedIdsChange={onPageIdsChange ?? (() => {})}\n          onSelectedDataChange={onPageDataChange ?? (() => {})}\n          onSelectionCountChange={onPageSelectionChange}\n          thumbnailSize={thumbnailSize}\n          viewMode={viewMode}\n          showNamesOnMedia={showNamesOnMedia}\n        />\n      )}\n\n      {activeMethod === \"products\" && (\n        <ProductsTab\n          config={config}\n          selectedIds={selectedProductIds ?? []}\n          onSelectedIdsChange={onProductIdsChange ?? (() => {})}\n          onSelectedDataChange={onProductDataChange ?? (() => {})}\n          onSelectionCountChange={onProductSelectionChange}\n          thumbnailSize={thumbnailSize}\n          viewMode={viewMode}\n          showNamesOnMedia={showNamesOnMedia}\n        />\n      )}\n\n      {activeMethod === \"enrollment_packs\" && (\n        <EnrollmentPacksTab\n          config={config}\n          selectedIds={selectedEnrollmentPackIds ?? []}\n          onSelectedIdsChange={onEnrollmentPackIdsChange ?? (() => {})}\n          onSelectedDataChange={onEnrollmentPackDataChange ?? (() => {})}\n          onSelectionCountChange={onEnrollmentPackSelectionChange}\n          thumbnailSize={thumbnailSize}\n          viewMode={viewMode}\n          showNamesOnMedia={showNamesOnMedia}\n        />\n      )}\n\n      {activeMethod === \"unsplash\" && (\n        <UnsplashPicker\n          config={config}\n          onFileSelected={onSingleFileSelected}\n          searchQuery={unsplashSearchQuery}\n          onSearchQueryChange={onUnsplashSearchChange}\n          onSearchingChange={onUnsplashSearchingChange}\n          onUploadingChange={onUnsplashUploadingChange}\n        />\n      )}\n\n      {activeMethod === \"google-drive\" && (\n        <div className=\"mx-auto max-w-7xl space-y-6 md:px-10 md:py-8\">\n          <div className=\"text-center\">\n            <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-linear-to-br from-blue-50 to-indigo-50 ring-4 ring-blue-50/50\">\n              <GoogleIcon className=\"h-6 w-6 text-blue-600\" />\n            </div>\n            <h2 className=\"text-xl font-semibold text-gray-900\">\n              Import from Google Drive\n            </h2>\n            <p className=\"mt-2 text-sm text-gray-600\">\n              Connect your Google Drive account to import files\n            </p>\n          </div>\n          <div className=\"rounded-lg border-2 border-dashed border-gray-300 p-8 text-center\">\n            <p className=\"text-gray-500\">\n              Google Drive integration coming soon...\n            </p>\n          </div>\n        </div>\n      )}\n\n      {activeMethod === \"instagram\" && (\n        <div className=\"mx-auto max-w-7xl space-y-6 md:px-10 md:py-8\">\n          <div className=\"text-center\">\n            <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-linear-to-br from-pink-50 to-purple-50 ring-4 ring-pink-50/50\">\n              <InstagramIcon className=\"h-6 w-6 text-pink-600\" />\n            </div>\n            <h2 className=\"text-xl font-semibold text-gray-900\">\n              Import from Instagram\n            </h2>\n            <p className=\"mt-2 text-sm text-gray-600\">\n              Connect your Instagram account to import your posts\n            </p>\n          </div>\n          <div className=\"rounded-lg border-2 border-dashed border-gray-300 p-8 text-center\">\n            <p className=\"text-gray-500\">\n              Instagram integration coming soon...\n            </p>\n          </div>\n        </div>\n      )}\n\n      {activeMethod === \"facebook\" && (\n        <div className=\"mx-auto max-w-7xl space-y-6 md:px-10 md:py-8\">\n          <div className=\"text-center\">\n            <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-linear-to-br from-blue-50 to-indigo-50 ring-4 ring-blue-50/50\">\n              <FacebookIcon className=\"h-6 w-6 text-blue-600\" />\n            </div>\n            <h2 className=\"text-xl font-semibold text-gray-900\">\n              Import from Facebook\n            </h2>\n            <p className=\"mt-2 text-sm text-gray-600\">\n              Connect your Facebook account to import your photos\n            </p>\n          </div>\n          <div className=\"rounded-lg border-2 border-dashed border-gray-300 p-8 text-center\">\n            <p className=\"text-gray-500\">Facebook integration coming soon...</p>\n          </div>\n        </div>\n      )}\n\n      {activeMethod === \"tiktok\" && (\n        <div className=\"mx-auto max-w-7xl space-y-6 md:px-10 md:py-8\">\n          <div className=\"text-center\">\n            <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-linear-to-br from-gray-50 to-gray-100 ring-4 ring-gray-50/50\">\n              <TiktokIcon className=\"h-6 w-6 text-gray-900\" />\n            </div>\n            <h2 className=\"text-xl font-semibold text-gray-900\">\n              Import from TikTok\n            </h2>\n            <p className=\"mt-2 text-sm text-gray-600\">\n              Connect your TikTok account to import your videos\n            </p>\n          </div>\n          <div className=\"rounded-lg border-2 border-dashed border-gray-300 p-8 text-center\">\n            <p className=\"text-gray-500\">TikTok integration coming soon...</p>\n          </div>\n        </div>\n      )}\n\n      {activeMethod === \"dropbox\" && (\n        <div className=\"mx-auto max-w-7xl space-y-6 md:px-10 md:py-8\">\n          <div className=\"text-center\">\n            <div className=\"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-linear-to-br from-blue-50 to-indigo-50 ring-4 ring-blue-50/50\">\n              <DropboxIcon className=\"h-6 w-6 text-blue-600\" />\n            </div>\n            <h2 className=\"text-xl font-semibold text-gray-900\">\n              Import from Dropbox\n            </h2>\n            <p className=\"mt-2 text-sm text-gray-600\">\n              Connect your Dropbox account to import files\n            </p>\n          </div>\n          <div className=\"rounded-lg border-2 border-dashed border-gray-300 p-8 text-center\">\n            <p className=\"text-gray-500\">Dropbox integration coming soon...</p>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { useState, useCallback, useEffect } from \"react\";\nimport {\n  XIcon,\n  FileIcon,\n  ImageIcon,\n  VideoIcon,\n  EllipsisVerticalIcon,\n  CropIcon,\n  LayersIcon,\n} from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport {\n  Button,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n  Dialog,\n  DialogPortal,\n  DialogOverlay,\n  cn,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { MobileBottomSheet } from \"@fluid-app/ui-components/components/MobileBottomSheet\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport type {\n  FilePickerResult,\n  DamAsset,\n  DamVariant,\n} from \"@fluid-app/file-picker-core\";\nimport { ImageCropModal } from \"./ImageCropModal\";\nimport { getCategoryIcon } from \"../utils/icons\";\nimport { useIsMobile } from \"../hooks/use-is-mobile\";\n\ninterface SelectionPanelProps {\n  selectedFiles: FilePickerResult[];\n  onRemoveFile: (assetCode: string) => void;\n  onClear: () => void;\n  onConfirm: () => void;\n  shareableEnabled?: boolean;\n  isVisible: boolean;\n  hasVariants?: (assetCode: string) => boolean;\n  /** Get full asset with variants for the variant picker modal (used with onVariantChange). */\n  getAssetWithVariants?: (assetCode: string) => DamAsset | null;\n  /** Called when user selects a different variant in the modal. */\n  onVariantChange?: (assetCode: string, variantId: string) => void;\n  /** @deprecated Use getAssetWithVariants + onVariantChange and open modal from SelectionPanel. */\n  onOpenVariantModal?: (assetCode: string) => void;\n  onCropImage?: (assetCode: string, croppedFile: File) => void;\n}\n\nconst getFileIcon = (mimeType: string | undefined): LucideIcon => {\n  if (!mimeType) return FileIcon;\n  if (mimeType.startsWith(\"image/\")) return ImageIcon;\n  if (mimeType.startsWith(\"video/\")) return VideoIcon;\n  return FileIcon;\n};\n\nconst isImageFile = (file: FilePickerResult): boolean =>\n  Boolean(file.metadata.mime_type?.startsWith(\"image/\"));\n\nexport const SelectionPanel: React.FC<SelectionPanelProps> = ({\n  selectedFiles,\n  onRemoveFile,\n  onClear,\n  onConfirm,\n  shareableEnabled = false,\n  isVisible,\n  hasVariants,\n  getAssetWithVariants,\n  onVariantChange,\n  onOpenVariantModal,\n  onCropImage,\n}) => {\n  const isMobile = useIsMobile();\n  const [actionFile, setActionFile] = useState<FilePickerResult | null>(null);\n  const [cropTarget, setCropTarget] = useState<{\n    assetCode: string;\n    file: FilePickerResult;\n  } | null>(null);\n  const [imageFileForCrop, setImageFileForCrop] = useState<File | null>(null);\n  const [cropModalOpen, setCropModalOpen] = useState(false);\n  const [variantModalAsset, setVariantModalAsset] = useState<{\n    asset: DamAsset;\n    assetCode: string;\n  } | null>(null);\n\n  const openVariantModal = useCallback(\n    (assetCode: string) => {\n      if (getAssetWithVariants && onVariantChange) {\n        const asset = getAssetWithVariants(assetCode);\n        if (asset && (asset.variants?.length ?? 0) > 1) {\n          setVariantModalAsset({ asset, assetCode });\n          return;\n        }\n      }\n      onOpenVariantModal?.(assetCode);\n    },\n    [getAssetWithVariants, onVariantChange, onOpenVariantModal],\n  );\n\n  const handleVariantSelect = useCallback(\n    (variant: DamVariant) => {\n      if (variantModalAsset) {\n        onVariantChange?.(variantModalAsset.assetCode, variant.id);\n        setVariantModalAsset(null);\n      }\n    },\n    [variantModalAsset, onVariantChange],\n  );\n\n  // When user clicks \"Crop image\", fetch the image and open crop modal\n  useEffect(() => {\n    if (!cropTarget?.file.file_url || !isImageFile(cropTarget.file)) {\n      return;\n    }\n    let cancelled = false;\n    const { file_url } = cropTarget.file;\n    const fileName = cropTarget.file.metadata.file_name ?? \"image.jpg\";\n    const mimeType = cropTarget.file.metadata.mime_type ?? \"image/jpeg\";\n    fetch(file_url)\n      .then((r) => r.blob())\n      .then((blob) => {\n        if (cancelled) return;\n        const file = new File([blob], fileName, { type: mimeType });\n        setImageFileForCrop(file);\n        setCropModalOpen(true);\n      })\n      .catch(() => {\n        if (!cancelled) setCropTarget(null);\n      });\n    return () => {\n      cancelled = true;\n    };\n  }, [cropTarget]);\n\n  const handleCropComplete = useCallback(\n    async (croppedFile: File) => {\n      if (cropTarget) {\n        const result = onCropImage?.(cropTarget.assetCode, croppedFile);\n        if (\n          result != null &&\n          typeof (result as Promise<unknown>)?.then === \"function\"\n        ) {\n          await (result as Promise<unknown>);\n        }\n      }\n      setCropTarget(null);\n      setImageFileForCrop(null);\n      setCropModalOpen(false);\n    },\n    [cropTarget, onCropImage],\n  );\n\n  const handleCropCancel = useCallback(() => {\n    setCropTarget(null);\n    setImageFileForCrop(null);\n    setCropModalOpen(false);\n  }, []);\n\n  if (!isVisible || selectedFiles.length === 0) {\n    return null;\n  }\n\n  return (\n    <div className=\"flex max-h-[45%] w-full shrink-0 flex-col border-t border-gray-200 bg-white md:h-full md:max-h-none md:w-72 md:border-t-0 md:border-l\">\n      <div className=\"border-b border-gray-200 px-4 py-3\">\n        <h3 className=\"text-sm font-semibold text-gray-900\">Selection</h3>\n      </div>\n\n      <div className=\"flex-1 overflow-y-auto p-3\">\n        <div className=\"space-y-2\">\n          {selectedFiles.map((file) => {\n            const canCrop = isImageFile(file) && onCropImage;\n            const hasVariantOption =\n              hasVariants?.(file.asset_code) &&\n              (onOpenVariantModal || (getAssetWithVariants && onVariantChange));\n            return (\n              <div\n                key={file.asset_code}\n                className=\"group flex items-center gap-3 rounded-lg border border-gray-100 bg-gray-50 p-2 transition-colors hover:border-gray-200 hover:bg-gray-100\"\n              >\n                <div className=\"relative h-10 w-10 shrink-0 overflow-hidden rounded bg-gray-200\">\n                  {file.file_url &&\n                  file.metadata.mime_type?.startsWith(\"image/\") ? (\n                    <img\n                      src={file.file_url}\n                      alt={file.metadata.file_name}\n                      width={40}\n                      height={40}\n                      className=\"h-full w-full object-cover\"\n                    />\n                  ) : file.file_url &&\n                    file.metadata.mime_type?.startsWith(\"video/\") ? (\n                    <img\n                      src={`${file.file_url.split(\"?\")[0]}/ik-thumbnail.jpg`}\n                      alt={file.metadata.file_name}\n                      width={40}\n                      height={40}\n                      className=\"h-full w-full object-cover\"\n                    />\n                  ) : (\n                    <div className=\"flex h-full w-full items-center justify-center\">\n                      {React.createElement(\n                        getFileIcon(file.metadata.mime_type),\n                        {\n                          className: \"h-4 w-4 text-gray-400\",\n                        },\n                      )}\n                    </div>\n                  )}\n                </div>\n\n                <div className=\"min-w-0 flex-1\">\n                  <p className=\"truncate text-xs font-medium text-gray-900\">\n                    {file.metadata.file_name}\n                  </p>\n                  <p className=\"truncate text-xs text-gray-500\">\n                    {file.metadata.mime_type?.split(\"/\")[1]?.toUpperCase() ||\n                      \"FILE\"}\n                  </p>\n                </div>\n\n                <div className=\"flex shrink-0 items-center gap-0.5\">\n                  {isMobile ? (\n                    <Button\n                      variant=\"ghost\"\n                      size=\"icon\"\n                      aria-label={`Actions for ${file.metadata.file_name}`}\n                      className=\"flex h-6 w-6 items-center justify-center rounded-full text-gray-400 hover:bg-gray-200 hover:text-gray-600\"\n                      onClick={(event) => {\n                        event.stopPropagation();\n                        setActionFile(file);\n                      }}\n                    >\n                      <EllipsisVerticalIcon className=\"h-3 w-3\" />\n                    </Button>\n                  ) : (\n                    <DropdownMenu>\n                      <DropdownMenuTrigger\n                        className=\"flex h-6 w-6 items-center justify-center rounded-full text-gray-400 opacity-0 transition-all group-hover:opacity-100 hover:bg-gray-200 hover:text-gray-600\"\n                        onClick={(e) => e.stopPropagation()}\n                      >\n                        <EllipsisVerticalIcon className=\"h-3 w-3\" />\n                      </DropdownMenuTrigger>\n                      <DropdownMenuContent align=\"end\" className=\"z-350\">\n                        <DropdownMenuItem\n                          disabled={!canCrop}\n                          onClick={(e) => {\n                            e.stopPropagation();\n                            if (canCrop && isImageFile(file))\n                              setCropTarget({\n                                assetCode: file.asset_code,\n                                file,\n                              });\n                          }}\n                          title={\n                            canCrop\n                              ? undefined\n                              : \"Crop is only available for image files\"\n                          }\n                        >\n                          <CropIcon className=\"mr-2 h-3.5 w-3.5 text-gray-600\" />\n                          Crop image\n                        </DropdownMenuItem>\n                        <DropdownMenuItem\n                          disabled={!hasVariantOption}\n                          onClick={(e) => {\n                            e.stopPropagation();\n                            if (hasVariantOption)\n                              openVariantModal(file.asset_code);\n                          }}\n                        >\n                          <LayersIcon\n                            className={`mr-2 h-3.5 w-3.5 ${hasVariantOption ? \"text-gray-600\" : \"text-gray-400\"}`}\n                          />\n                          Change variant\n                        </DropdownMenuItem>\n                      </DropdownMenuContent>\n                    </DropdownMenu>\n                  )}\n                  <button\n                    type=\"button\"\n                    aria-label={`Remove ${file.metadata.file_name}`}\n                    onClick={(e) => {\n                      e.stopPropagation();\n                      onRemoveFile(file.asset_code);\n                    }}\n                    className={cn(\n                      \"flex h-6 w-6 items-center justify-center rounded-full text-gray-400 transition-all hover:bg-gray-200 hover:text-gray-600\",\n                      !isMobile && \"opacity-0 group-hover:opacity-100\",\n                    )}\n                  >\n                    <XIcon className=\"h-3 w-3\" />\n                  </button>\n                </div>\n              </div>\n            );\n          })}\n        </div>\n      </div>\n\n      <MobileActionSheet\n        open={actionFile !== null}\n        onOpenChange={(open) => {\n          if (!open) setActionFile(null);\n        }}\n        title={actionFile?.metadata.file_name ?? \"File actions\"}\n        actions={[\n          {\n            id: \"crop\",\n            label: \"Crop image\",\n            disabled: !actionFile || !isImageFile(actionFile) || !onCropImage,\n            onSelect: () => {\n              if (actionFile && isImageFile(actionFile) && onCropImage) {\n                setCropTarget({\n                  assetCode: actionFile.asset_code,\n                  file: actionFile,\n                });\n              }\n            },\n          },\n          {\n            id: \"variant\",\n            label: \"Change variant\",\n            disabled:\n              !actionFile ||\n              !hasVariants?.(actionFile.asset_code) ||\n              !(\n                onOpenVariantModal ||\n                (getAssetWithVariants && onVariantChange)\n              ),\n            onSelect: () => {\n              if (actionFile) openVariantModal(actionFile.asset_code);\n            },\n          },\n        ]}\n      />\n\n      <div className=\"flex items-center justify-between gap-2 border-t border-gray-200 p-4\">\n        <Button variant=\"secondary\" size=\"sm\" onClick={onClear}>\n          Clear\n        </Button>\n        <Button variant=\"default\" size=\"sm\" onClick={onConfirm}>\n          {shareableEnabled\n            ? \"Next\"\n            : `Use ${selectedFiles.length} File${selectedFiles.length !== 1 ? \"s\" : \"\"}`}\n        </Button>\n      </div>\n\n      {imageFileForCrop && (\n        <ImageCropModal\n          isOpen={cropModalOpen}\n          onClose={handleCropCancel}\n          onCrop={handleCropComplete}\n          imageFile={imageFileForCrop}\n        />\n      )}\n\n      {variantModalAsset && isMobile ? (\n        <MobileBottomSheet\n          open={true}\n          onOpenChange={(open) => !open && setVariantModalAsset(null)}\n          title=\"Select variant\"\n        >\n          <p className=\"text-sm text-gray-500\">\n            Choose a variant for &quot;\n            {variantModalAsset.asset.name || \"Unknown Asset\"}&quot;\n          </p>\n          <div className=\"grid grid-cols-1 gap-4\">\n            {variantModalAsset.asset.variants?.map((variant) => (\n              <button\n                key={variant.id}\n                type=\"button\"\n                onClick={() => handleVariantSelect(variant)}\n                className=\"rounded-lg border border-gray-200 bg-white p-4 text-left\"\n              >\n                <p className=\"truncate font-medium text-gray-900\">\n                  {variant.file_name || \"Unknown File\"}\n                </p>\n                <p className=\"mt-1 text-xs text-gray-500\">\n                  {variant.mime_type || \"Unknown Type\"}\n                </p>\n              </button>\n            ))}\n          </div>\n        </MobileBottomSheet>\n      ) : variantModalAsset ? (\n        <Dialog\n          open={true}\n          onOpenChange={(open) => !open && setVariantModalAsset(null)}\n        >\n          <DialogPortal>\n            <DialogOverlay className=\"z-9999 bg-black/70 backdrop-blur-none\" />\n            <DialogPrimitive.Content\n              className=\"fixed top-1/2 left-1/2 z-10000 max-h-[80vh] w-full max-w-3xl -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-lg border border-gray-200 bg-white shadow-xl\"\n              style={{ zIndex: 10000 }}\n            >\n              <div className=\"border-b bg-white p-6\">\n                <h3 className=\"text-lg font-semibold text-gray-900\">\n                  Select variant\n                </h3>\n                <p className=\"mt-1 text-sm text-gray-500\">\n                  Choose a variant for &quot;\n                  {variantModalAsset.asset.name || \"Unknown Asset\"}&quot;\n                </p>\n              </div>\n              <div className=\"max-h-[60vh] overflow-y-auto p-6\">\n                <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n                  {variantModalAsset.asset.variants?.map((variant) => (\n                    <button\n                      key={variant?.id}\n                      type=\"button\"\n                      onClick={() => handleVariantSelect(variant)}\n                      className=\"group rounded-lg border border-gray-200 bg-white p-4 text-left transition-colors hover:bg-gray-50\"\n                    >\n                      <div className=\"flex items-start gap-4\">\n                        <div className=\"shrink-0\">\n                          {variant.url &&\n                          variantModalAsset.asset.category === \"images\" ? (\n                            <img\n                              src={variant.url}\n                              alt={variant.file_name}\n                              width={64}\n                              height={64}\n                              className=\"h-16 w-16 rounded-md object-cover\"\n                            />\n                          ) : variantModalAsset.asset.category === \"videos\" &&\n                            variant?.url ? (\n                            <div className=\"flex h-16 w-16 items-center justify-center rounded-md bg-gray-50\">\n                              <img\n                                src={`${variant?.url?.split(\"?\")[0]}/ik-thumbnail.jpg`}\n                                alt={variant.file_name}\n                                width={64}\n                                height={64}\n                                className=\"h-16 w-16 rounded-md object-cover\"\n                              />\n                            </div>\n                          ) : (\n                            <div className=\"flex h-16 w-16 items-center justify-center rounded-md bg-gray-50\">\n                              {React.createElement(\n                                getCategoryIcon(\n                                  variantModalAsset.asset?.category ||\n                                    \"unknown\",\n                                ),\n                                { className: \"h-6 w-6 text-gray-400\" },\n                              )}\n                            </div>\n                          )}\n                        </div>\n                        <div className=\"min-w-0 flex-1\">\n                          <p className=\"truncate font-medium text-gray-900 group-hover:text-gray-700\">\n                            {variant?.file_name || \"Unknown File\"}\n                          </p>\n                          <p className=\"mt-1 text-xs text-gray-500\">\n                            {variant?.mime_type || \"Unknown Type\"}\n                          </p>\n                          {typeof variant.metadata?.width === \"number\" &&\n                            typeof variant.metadata?.height === \"number\" && (\n                              <p className=\"mt-1 text-xs font-medium text-gray-600\">\n                                {variant.metadata.width}px ×{\" \"}\n                                {variant.metadata.height}px\n                              </p>\n                            )}\n                        </div>\n                      </div>\n                    </button>\n                  ))}\n                </div>\n              </div>\n              <div className=\"border-t bg-gray-50 p-6\">\n                <div className=\"flex justify-end\">\n                  <Button\n                    variant=\"secondary\"\n                    onClick={() => setVariantModalAsset(null)}\n                  >\n                    Cancel\n                  </Button>\n                </div>\n              </div>\n            </DialogPrimitive.Content>\n          </DialogPortal>\n        </Dialog>\n      ) : null}\n    </div>\n  );\n};\n\nexport default SelectionPanel;\n","import React, {\n  useState,\n  useCallback,\n  useEffect,\n  useRef,\n  useMemo,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n  ImagesIcon,\n  LaptopIcon,\n  CloudIcon,\n  LinkIcon,\n  FileTextIcon,\n  PackageIcon,\n  GraduationCapIcon,\n} from \"lucide-react\";\nimport {\n  GoogleIcon,\n  InstagramIcon,\n  FacebookIcon,\n  TiktokIcon,\n  DropboxIcon,\n  UnsplashIcon,\n} from \"../utils/brand-icons\";\nimport { Dialog, DialogContent, DialogTitle } from \"@fluid-app/ui-primitives\";\nimport {\n  filePickerConfigSchema,\n  type FilePickerResult,\n  type FilePickerConfigInput,\n  type PickerMethod,\n  type DamAsset,\n  type SortOptionId,\n} from \"@fluid-app/file-picker-core\";\nimport { type DamLibraryRef } from \"./DamLibrary\";\nimport { FilePickerSidebar } from \"./FilePickerSidebar\";\nimport { FilePickerHeader, type ViewMode } from \"./FilePickerHeader\";\nimport { FilePickerContent } from \"./FilePickerContent\";\nimport {\n  defaultFilters as defaultDamFilters,\n  type FilePickerFiltersState,\n} from \"./FilePickerFiltersPanel\";\nimport { SelectionPanel } from \"./SelectionPanel\";\nimport {\n  FilePickerSelectionScope,\n  useFilePickerContext,\n  type UnifiedSelectionApi,\n} from \"../context/FilePickerContext\";\n\nexport interface FilePickerProps {\n  config?: FilePickerConfigInput;\n  onFilesSelected: (results: FilePickerResult[]) => void;\n  onClose?: () => void;\n  open: boolean;\n  showMediaTab?: boolean;\n  className?: string;\n  skipCropper?: boolean;\n  defaultMethod?: PickerMethod;\n}\n\nexport const FilePicker: React.FC<FilePickerProps> = ({\n  config: configInput = {},\n  onFilesSelected,\n  onClose,\n  open,\n  showMediaTab = false,\n  className,\n  skipCropper = false,\n  defaultMethod,\n}) => {\n  const config = useMemo(() => {\n    const result = filePickerConfigSchema.safeParse(configInput);\n    return result.success ? result.data : filePickerConfigSchema.parse({});\n  }, [configInput]);\n\n  const defaultTab = defaultMethod ?? \"dam\";\n  const [activeMethod, setActiveMethod] = useState<PickerMethod>(() => {\n    if (config.allowedMethods && config.allowedMethods.length > 0) {\n      const allowed = config.allowedMethods as PickerMethod[];\n      if (allowed.includes(defaultTab)) return defaultTab;\n      return allowed[0] ?? \"dam\";\n    }\n    return defaultTab;\n  });\n  // Re-sync activeMethod if allowedMethods changes and current tab is no longer allowed\n  useEffect(() => {\n    if (\n      config.allowedMethods &&\n      config.allowedMethods.length > 0 &&\n      !config.allowedMethods.includes(activeMethod)\n    ) {\n      setActiveMethod((config.allowedMethods[0] as PickerMethod) ?? \"dam\");\n    }\n  }, [config.allowedMethods, activeMethod]);\n\n  const [selectedResults, setSelectedResults] = useState<FilePickerResult[]>(\n    [],\n  );\n  const [damSelectionCount, setDamSelectionCount] = useState(0);\n  const [damSelectedFiles, setDamSelectedFiles] = useState<FilePickerResult[]>(\n    [],\n  );\n  const [damVariantCounts, setDamVariantCounts] = useState<\n    Record<string, number>\n  >({});\n  const [damSearchQuery, setDamSearchQuery] = useState(\"\");\n  const [damSearching, setDamSearching] = useState(false);\n  const [mediaSearchQuery, setMediaSearchQuery] = useState(\"\");\n  const [unsplashSearchQuery, setUnsplashSearchQuery] = useState(\"\");\n  const [unsplashSearching, setUnsplashSearching] = useState(false);\n  const [isUnsplashUploading, setIsUnsplashUploading] = useState(false);\n  const [mediaSelectionCount, setMediaSelectionCount] = useState(0);\n  const [damFilters, setDamFilters] =\n    useState<FilePickerFiltersState>(defaultDamFilters);\n  const [sortOption, setSortOption] = useState<SortOptionId | undefined>(\n    undefined,\n  );\n  const [damFolders, setDamFolders] = useState<string[]>([]);\n  const [selectedMediaIds, setSelectedMediaIds] = useState<number[]>([]);\n  const [selectedMediaData, setSelectedMediaData] = useState<\n    FilePickerResult[]\n  >([]);\n  const [selectedPageIds, setSelectedPageIds] = useState<number[]>([]);\n  const [selectedPageData, setSelectedPageData] = useState<FilePickerResult[]>(\n    [],\n  );\n  const [pageSelectionCount, setPageSelectionCount] = useState(0);\n  const [selectedProductIds, setSelectedProductIds] = useState<number[]>([]);\n  const [selectedProductData, setSelectedProductData] = useState<\n    FilePickerResult[]\n  >([]);\n  const [productSelectionCount, setProductSelectionCount] = useState(0);\n  const [selectedEnrollmentPackIds, setSelectedEnrollmentPackIds] = useState<\n    number[]\n  >([]);\n  const [selectedEnrollmentPackData, setSelectedEnrollmentPackData] = useState<\n    FilePickerResult[]\n  >([]);\n  const [enrollmentPackSelectionCount, setEnrollmentPackSelectionCount] =\n    useState(0);\n  // Unified selection (used when config.unifiedSelection is true)\n  const [unifiedItems, setUnifiedItems] = useState<FilePickerResult[]>([]);\n  const damLibraryRef = useRef<DamLibraryRef | null>(null);\n  const [previewContainer, setPreviewContainer] =\n    useState<HTMLDivElement | null>(null);\n  const [previewAsset, setPreviewAsset] = useState<DamAsset | null>(null);\n\n  // DAM toolbar state\n  const [thumbnailSize, setThumbnailSize] = useState(100);\n  const [viewMode, setViewMode] = useState<ViewMode>(\"grid\");\n  const [showNamesOnMedia, setShowNamesOnMedia] = useState(true);\n\n  const resetPicker = useCallback(() => {\n    setActiveMethod(defaultTab);\n    setSelectedResults([]);\n    setDamSelectionCount(0);\n    setDamSelectedFiles([]);\n    setDamVariantCounts({});\n    setDamSearchQuery(\"\");\n    setMediaSearchQuery(\"\");\n    setUnsplashSearchQuery(\"\");\n    setUnsplashSearching(false);\n    setIsUnsplashUploading(false);\n    setMediaSelectionCount(0);\n    setSelectedMediaIds([]);\n    setSelectedMediaData([]);\n    setSelectedPageIds([]);\n    setSelectedPageData([]);\n    setPageSelectionCount(0);\n    setSelectedProductIds([]);\n    setSelectedProductData([]);\n    setProductSelectionCount(0);\n    setSelectedEnrollmentPackIds([]);\n    setSelectedEnrollmentPackData([]);\n    setEnrollmentPackSelectionCount(0);\n    setUnifiedItems([]);\n    setDamFilters(defaultDamFilters);\n    setSortOption(undefined);\n    damLibraryRef.current?.clearSelection?.();\n    setPreviewAsset(null);\n  }, [defaultTab]);\n\n  const handleMethodChange = useCallback(\n    (newMethod: PickerMethod) => {\n      // In unified-selection mode, switching tabs preserves the cross-tab\n      // selection list — only the active tab's local UI state needs updating.\n      if (!config.unifiedSelection) {\n        setSelectedResults([]);\n        setDamSelectionCount(0);\n        setDamSelectedFiles([]);\n        setDamVariantCounts({});\n        setDamSearchQuery(\"\");\n        setUnsplashSearchQuery(\"\");\n        setUnsplashSearching(false);\n        setIsUnsplashUploading(false);\n        setMediaSelectionCount(0);\n        setSelectedMediaIds([]);\n        setSelectedMediaData([]);\n        setSelectedPageIds([]);\n        setSelectedPageData([]);\n        setPageSelectionCount(0);\n        setSelectedProductIds([]);\n        setSelectedProductData([]);\n        setProductSelectionCount(0);\n        setSelectedEnrollmentPackIds([]);\n        setSelectedEnrollmentPackData([]);\n        setEnrollmentPackSelectionCount(0);\n        damLibraryRef.current?.clearSelection?.();\n      }\n      setActiveMethod(newMethod);\n    },\n    [config.unifiedSelection],\n  );\n\n  const handleFilesSelected = useCallback(\n    (results: FilePickerResult[]) => {\n      const validResults = results.filter(\n        (result) => result.upload_status !== \"error\",\n      );\n\n      if (config.maxFiles === 1) {\n        setSelectedResults(validResults.slice(0, 1));\n      } else {\n        setSelectedResults((prev) => {\n          const totalFiles = prev.length + validResults.length;\n          if (config.maxFiles && totalFiles > config.maxFiles) {\n            const remainingSlots = config.maxFiles - prev.length;\n            return [...prev, ...validResults.slice(0, remainingSlots)];\n          }\n          return [...prev, ...validResults];\n        });\n      }\n    },\n    [config.maxFiles],\n  );\n\n  const handleUploadConfirm = useCallback(\n    (results: FilePickerResult[]) => {\n      const validResults = results.filter(\n        (result) => result.upload_status !== \"error\",\n      );\n      if (validResults.length === 0) return;\n      onFilesSelected(validResults);\n      onClose?.();\n    },\n    [onFilesSelected, onClose],\n  );\n\n  const handleSingleFileSelected = useCallback(\n    (result: FilePickerResult) => {\n      handleFilesSelected([result]);\n    },\n    [handleFilesSelected],\n  );\n\n  const handleDamSelectionChange = useCallback(\n    (\n      count: number,\n      files?: FilePickerResult[],\n      variantCounts?: Record<string, number>,\n    ) => {\n      setDamSelectionCount(count);\n      setDamSelectedFiles(files ?? []);\n      setDamVariantCounts(variantCounts ?? {});\n    },\n    [],\n  );\n\n  const handleMediaSelectionChange = useCallback((count: number) => {\n    setMediaSelectionCount(count);\n  }, []);\n\n  const handleMediaDataChange = useCallback((data: FilePickerResult[]) => {\n    setSelectedMediaData(data);\n  }, []);\n\n  const handleThumbnailSizeChange = useCallback((size: number) => {\n    setThumbnailSize(size);\n  }, []);\n\n  const handleViewModeChange = useCallback((mode: ViewMode) => {\n    setViewMode(mode);\n  }, []);\n\n  const handleDamConfirm = useCallback(\n    (results: FilePickerResult[]) => {\n      onFilesSelected(results);\n      onClose?.();\n    },\n    [onFilesSelected, onClose],\n  );\n\n  const { shareablesClient, toast } = useFilePickerContext();\n\n  const methods: Array<{\n    id: PickerMethod;\n    label: string;\n    icon: React.ComponentType<{ className?: string }>;\n    description: string;\n  }> = useMemo(() => {\n    const allMethods = [\n      {\n        id: \"dam\" as PickerMethod,\n        label: \"Library\",\n        icon: CloudIcon,\n        description: \"Choose from DAM library\",\n      },\n      ...(showMediaTab ||\n      (config.allowedMethods && config.allowedMethods.includes(\"media\"))\n        ? [\n            {\n              id: \"media\" as PickerMethod,\n              label: \"Media\",\n              icon: ImagesIcon,\n              description: \"Choose from existing media\",\n            },\n          ]\n        : []),\n      {\n        id: \"pages\" as PickerMethod,\n        label: \"Pages\",\n        icon: FileTextIcon,\n        description: \"Choose from existing pages\",\n      },\n      {\n        id: \"products\" as PickerMethod,\n        label: \"Products\",\n        icon: PackageIcon,\n        description: \"Choose from existing products\",\n      },\n      {\n        id: \"enrollment_packs\" as PickerMethod,\n        label: \"Enrollment Packs\",\n        icon: GraduationCapIcon,\n        description: \"Choose from existing enrollment packs\",\n      },\n      {\n        id: \"upload\" as PickerMethod,\n        label: \"Local Files\",\n        icon: LaptopIcon,\n        description: \"Upload files from computer or URL\",\n      },\n      {\n        id: \"url\" as PickerMethod,\n        label: \"URL\",\n        icon: LinkIcon,\n        description: \"Upload files from web URLs\",\n      },\n      {\n        id: \"unsplash\" as PickerMethod,\n        label: \"Unsplash\",\n        icon: UnsplashIcon,\n        description: \"Search Unsplash images\",\n      },\n      {\n        id: \"google-drive\" as PickerMethod,\n        label: \"Google Drive\",\n        icon: GoogleIcon,\n        description: \"Import from Google Drive\",\n      },\n      {\n        id: \"instagram\" as PickerMethod,\n        label: \"Instagram\",\n        icon: InstagramIcon,\n        description: \"Import from Instagram\",\n      },\n      {\n        id: \"facebook\" as PickerMethod,\n        label: \"Facebook\",\n        icon: FacebookIcon,\n        description: \"Import from Facebook\",\n      },\n      {\n        id: \"tiktok\" as PickerMethod,\n        label: \"TikTok\",\n        icon: TiktokIcon,\n        description: \"Import from TikTok\",\n      },\n      {\n        id: \"dropbox\" as PickerMethod,\n        label: \"Dropbox\",\n        icon: DropboxIcon,\n        description: \"Import from Dropbox\",\n      },\n    ];\n\n    // Hide content-browser tabs when host hasn't supplied a data source.\n    // This is the contract for \"tab is opt-in per host\" — extension methods\n    // appear only when the host's shareablesClient declares the matching\n    // listing function.\n    const filteredBySource = allMethods.filter((m) => {\n      if (m.id === \"pages\") return shareablesClient?.pages != null;\n      if (m.id === \"products\") return shareablesClient?.products != null;\n      if (m.id === \"enrollment_packs\")\n        return shareablesClient?.enrollment_packs != null;\n      return true;\n    });\n\n    if (config.allowedMethods && config.allowedMethods.length > 0) {\n      return filteredBySource.filter((method) =>\n        config.allowedMethods!.includes(method.id),\n      );\n    }\n\n    return filteredBySource;\n  }, [showMediaTab, config.allowedMethods, shareablesClient]);\n\n  const showPreview = previewAsset !== null;\n\n  // Unified selection API — built once and passed to FilePickerSelectionScope\n  // so descendant tabs can read/write through context. Only relevant when\n  // config.unifiedSelection is true.\n  // Memoized so the FilePickerSelectionScope provider value's identity is\n  // stable when unifiedItems hasn't changed — without this, every state\n  // update in FilePicker (e.g. setActiveMethod) would re-render every\n  // FilePickerSelectionReadContext consumer (the new tab bodies).\n  const unifiedSelectionState = useMemo(\n    () => ({ items: unifiedItems }),\n    [unifiedItems],\n  );\n\n  // Ref-tracked items so the unifiedApi object identity stays stable across\n  // selection changes. isSelected/selectionIndex are only called from event\n  // handlers — never during render — so reading from the ref is safe; the\n  // render path reads selection from unifiedState directly.\n  const unifiedItemsRef = useRef(unifiedItems);\n  useEffect(() => {\n    unifiedItemsRef.current = unifiedItems;\n  }, [unifiedItems]);\n\n  const unifiedApi: UnifiedSelectionApi = useMemo(\n    () => ({\n      add: (item) => {\n        // Decide synchronously against the ref so the limit toast actually\n        // fires — React's functional setter runs the updater later (during\n        // commit), so reading `hitLimit` after `setUnifiedItems(...)` would\n        // always observe the pre-update value. The setter still does its\n        // own dedupe/cap check as a defense against rapid double-clicks.\n        const current = unifiedItemsRef.current;\n        if (current.some((r) => r.asset_code === item.asset_code)) return;\n        if (config.maxFiles && current.length >= config.maxFiles) {\n          toast.error(\n            `You can select up to ${config.maxFiles} items at a time.`,\n          );\n          return;\n        }\n        setUnifiedItems((prev) => {\n          if (prev.some((r) => r.asset_code === item.asset_code)) return prev;\n          if (config.maxFiles && prev.length >= config.maxFiles) return prev;\n          return [...prev, item];\n        });\n      },\n      remove: (assetCode) => {\n        setUnifiedItems((prev) =>\n          prev.filter((r) => r.asset_code !== assetCode),\n        );\n      },\n      clear: () => setUnifiedItems([]),\n      isSelected: (assetCode) =>\n        unifiedItemsRef.current.some((r) => r.asset_code === assetCode),\n      selectionIndex: (assetCode) =>\n        unifiedItemsRef.current.findIndex((r) => r.asset_code === assetCode) +\n        1,\n    }),\n    [config.maxFiles, toast],\n  );\n\n  // Body assembled as a JSX value (not a component type) so the reconciler\n  // doesn't remount the entire subtree on every state update. A nested\n  // `function FilePickerBody()` here would create a new component\n  // identity each render, unmounting ContentBrowserTab and clearing its\n  // search field on every selection change.\n  const body = (\n    <div className=\"flex flex-1 overflow-y-auto\">\n      <FilePickerSidebar\n        currentStep=\"select\"\n        activeMethod={activeMethod}\n        onMethodChange={handleMethodChange}\n        methods={methods}\n      />\n\n      <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n        <FilePickerHeader\n          currentStep=\"select\"\n          activeMethod={activeMethod}\n          methods={methods}\n          onMethodChange={handleMethodChange}\n          onClose={() => {\n            resetPicker();\n            onClose?.();\n          }}\n          damSearchQuery={\n            activeMethod === \"dam\" ? damSearchQuery : mediaSearchQuery\n          }\n          onDamSearchChange={\n            activeMethod === \"dam\" ? setDamSearchQuery : setMediaSearchQuery\n          }\n          damSearching={damSearching}\n          thumbnailSize={thumbnailSize}\n          onThumbnailSizeChange={handleThumbnailSizeChange}\n          viewMode={viewMode}\n          onViewModeChange={handleViewModeChange}\n          showNamesOnMedia={showNamesOnMedia}\n          onShowNamesOnMediaChange={setShowNamesOnMedia}\n          hasSelectedFiles={damSelectionCount > 0}\n          damFolders={damFolders}\n          onAddToNewFolder={() => damLibraryRef.current?.openAddFolderModal()}\n          onAddToExistingFolder={(folderPath) =>\n            damLibraryRef.current?.addToExistingFolder?.(folderPath)\n          }\n          filters={damFilters}\n          onFiltersChange={setDamFilters}\n          onFiltersClear={() => setDamFilters(defaultDamFilters)}\n          sortOption={sortOption}\n          onSortChange={setSortOption}\n          unsplashSearchQuery={unsplashSearchQuery}\n          onUnsplashSearchChange={setUnsplashSearchQuery}\n          unsplashSearching={unsplashSearching}\n          isUnsplashUploading={isUnsplashUploading}\n        />\n        {/* Stacked below `md` so the selection panel docks under the grid\n            instead of taking a fixed rail out of an already narrow screen. */}\n        <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden md:flex-row\">\n          <div className=\"min-h-0 min-w-0 flex-1 overflow-y-auto\">\n            <FilePickerContent\n              activeMethod={activeMethod}\n              config={config}\n              damTypeFilter={damFilters.type ? damFilters.type : undefined}\n              sortOption={sortOption}\n              onFilesSelected={handleFilesSelected}\n              onUploadConfirmAndMaybeCreate={handleUploadConfirm}\n              onSingleFileSelected={handleSingleFileSelected}\n              damLibraryRef={damLibraryRef}\n              onDamConfirmAndMaybeCreate={handleDamConfirm}\n              selectedMediaIds={selectedMediaIds}\n              onMediaIdsChange={setSelectedMediaIds}\n              onMediaSelectionChange={handleMediaSelectionChange}\n              onMediaDataChange={handleMediaDataChange}\n              selectedPageIds={selectedPageIds}\n              onPageIdsChange={setSelectedPageIds}\n              onPageSelectionChange={setPageSelectionCount}\n              onPageDataChange={setSelectedPageData}\n              selectedProductIds={selectedProductIds}\n              onProductIdsChange={setSelectedProductIds}\n              onProductSelectionChange={setProductSelectionCount}\n              onProductDataChange={setSelectedProductData}\n              selectedEnrollmentPackIds={selectedEnrollmentPackIds}\n              onEnrollmentPackIdsChange={setSelectedEnrollmentPackIds}\n              onEnrollmentPackSelectionChange={setEnrollmentPackSelectionCount}\n              onEnrollmentPackDataChange={setSelectedEnrollmentPackData}\n              onDamSelectionChange={handleDamSelectionChange}\n              onDamSearchingChange={setDamSearching}\n              skipCropper={skipCropper}\n              damSearchQuery={damSearchQuery}\n              onDamSearchChange={setDamSearchQuery}\n              mediaSearchQuery={mediaSearchQuery}\n              onMediaSearchChange={setMediaSearchQuery}\n              unsplashSearchQuery={unsplashSearchQuery}\n              onUnsplashSearchChange={setUnsplashSearchQuery}\n              onUnsplashSearchingChange={setUnsplashSearching}\n              onUnsplashUploadingChange={setIsUnsplashUploading}\n              thumbnailSize={thumbnailSize}\n              viewMode={viewMode}\n              showNamesOnMedia={showNamesOnMedia}\n              onDamFoldersChange={setDamFolders}\n              previewContainer={previewContainer}\n              previewAsset={previewAsset}\n              onPreviewAssetChange={setPreviewAsset}\n              uploadSelectionCount={\n                activeMethod === \"upload\" ||\n                activeMethod === \"url\" ||\n                activeMethod === \"unsplash\"\n                  ? selectedResults.length\n                  : undefined\n              }\n            />\n          </div>\n          {activeMethod === \"dam\" && (\n            <SelectionPanel\n              selectedFiles={damSelectedFiles}\n              onRemoveFile={(assetCode) => {\n                damLibraryRef.current?.deselectAssetByCode?.(assetCode);\n              }}\n              onClear={() => {\n                damLibraryRef.current?.clearSelection();\n                setDamSelectionCount(0);\n                setDamSelectedFiles([]);\n                setDamVariantCounts({});\n              }}\n              onConfirm={() => {\n                damLibraryRef.current?.confirmAndClose();\n              }}\n              isVisible={damSelectionCount > 0}\n              hasVariants={(assetCode) =>\n                (damVariantCounts[assetCode] ?? 0) > 1\n              }\n              getAssetWithVariants={(assetCode) =>\n                damLibraryRef.current?.getAssetWithVariants?.(assetCode) ?? null\n              }\n              onVariantChange={(assetCode, variantId) => {\n                damLibraryRef.current?.setVariantForAsset?.(\n                  assetCode,\n                  variantId,\n                );\n              }}\n            />\n          )}\n          {!config.unifiedSelection && activeMethod === \"media\" && (\n            <SelectionPanel\n              selectedFiles={selectedMediaData}\n              onRemoveFile={(assetCode) => {\n                const id = parseInt(assetCode.replace(/^media_/, \"\"), 10);\n                if (!Number.isNaN(id)) {\n                  setSelectedMediaIds((prev) =>\n                    prev.filter((mediaId) => mediaId !== id),\n                  );\n                  setSelectedMediaData((prev) =>\n                    prev.filter((r) => r.asset_code !== assetCode),\n                  );\n                }\n              }}\n              onClear={() => {\n                setSelectedMediaIds([]);\n                setSelectedMediaData([]);\n                setMediaSelectionCount(0);\n              }}\n              onConfirm={() => {\n                onFilesSelected(selectedMediaData);\n                onClose?.();\n              }}\n              isVisible={mediaSelectionCount > 0}\n              hasVariants={() => false}\n            />\n          )}\n          {!config.unifiedSelection && activeMethod === \"pages\" && (\n            <SelectionPanel\n              selectedFiles={selectedPageData}\n              onRemoveFile={(assetCode) => {\n                const id = parseInt(assetCode.replace(/^page_/, \"\"), 10);\n                if (!Number.isNaN(id)) {\n                  setSelectedPageIds((prev) =>\n                    prev.filter((pageId) => pageId !== id),\n                  );\n                  setSelectedPageData((prev) =>\n                    prev.filter((r) => r.asset_code !== assetCode),\n                  );\n                }\n              }}\n              onClear={() => {\n                setSelectedPageIds([]);\n                setSelectedPageData([]);\n                setPageSelectionCount(0);\n              }}\n              onConfirm={() => {\n                onFilesSelected(selectedPageData);\n                onClose?.();\n              }}\n              isVisible={pageSelectionCount > 0}\n              hasVariants={() => false}\n            />\n          )}\n          {!config.unifiedSelection && activeMethod === \"products\" && (\n            <SelectionPanel\n              selectedFiles={selectedProductData}\n              onRemoveFile={(assetCode) => {\n                const id = parseInt(assetCode.replace(/^product_/, \"\"), 10);\n                if (!Number.isNaN(id)) {\n                  setSelectedProductIds((prev) =>\n                    prev.filter((productId) => productId !== id),\n                  );\n                  setSelectedProductData((prev) =>\n                    prev.filter((r) => r.asset_code !== assetCode),\n                  );\n                }\n              }}\n              onClear={() => {\n                setSelectedProductIds([]);\n                setSelectedProductData([]);\n                setProductSelectionCount(0);\n              }}\n              onConfirm={() => {\n                onFilesSelected(selectedProductData);\n                onClose?.();\n              }}\n              isVisible={productSelectionCount > 0}\n              hasVariants={() => false}\n            />\n          )}\n          {!config.unifiedSelection && activeMethod === \"enrollment_packs\" && (\n            <SelectionPanel\n              selectedFiles={selectedEnrollmentPackData}\n              onRemoveFile={(assetCode) => {\n                const id = parseInt(\n                  assetCode.replace(/^enrollment_pack_/, \"\"),\n                  10,\n                );\n                if (!Number.isNaN(id)) {\n                  setSelectedEnrollmentPackIds((prev) =>\n                    prev.filter((packId) => packId !== id),\n                  );\n                  setSelectedEnrollmentPackData((prev) =>\n                    prev.filter((r) => r.asset_code !== assetCode),\n                  );\n                }\n              }}\n              onClear={() => {\n                setSelectedEnrollmentPackIds([]);\n                setSelectedEnrollmentPackData([]);\n                setEnrollmentPackSelectionCount(0);\n              }}\n              onConfirm={() => {\n                onFilesSelected(selectedEnrollmentPackData);\n                onClose?.();\n              }}\n              isVisible={enrollmentPackSelectionCount > 0}\n              hasVariants={() => false}\n            />\n          )}\n          {!config.unifiedSelection &&\n            (activeMethod === \"upload\" ||\n              activeMethod === \"url\" ||\n              activeMethod === \"unsplash\") && (\n              <SelectionPanel\n                selectedFiles={selectedResults}\n                onRemoveFile={(assetCode) => {\n                  setSelectedResults((prev) =>\n                    prev.filter((r) => r.asset_code !== assetCode),\n                  );\n                }}\n                onClear={() => {\n                  setSelectedResults([]);\n                }}\n                onConfirm={() => {\n                  handleUploadConfirm(selectedResults);\n                }}\n                isVisible={selectedResults.length > 0}\n                hasVariants={() => false}\n              />\n            )}\n          {config.unifiedSelection && (\n            <SelectionPanel\n              selectedFiles={unifiedItems}\n              onRemoveFile={(assetCode) => {\n                setUnifiedItems((prev) =>\n                  prev.filter((r) => r.asset_code !== assetCode),\n                );\n              }}\n              onClear={() => {\n                setUnifiedItems([]);\n              }}\n              onConfirm={() => {\n                const selectedItems = [...unifiedItems];\n                onFilesSelected(selectedItems);\n                resetPicker();\n                onClose?.();\n              }}\n              isVisible={unifiedItems.length > 0}\n              hasVariants={() => false}\n            />\n          )}\n        </div>\n      </div>\n    </div>\n  );\n\n  return (\n    <>\n      {typeof document !== \"undefined\" &&\n        createPortal(\n          <div\n            ref={setPreviewContainer}\n            className=\"fixed inset-0\"\n            style={{\n              zIndex: 9999,\n              pointerEvents: showPreview ? \"auto\" : \"none\",\n            }}\n            aria-hidden={!showPreview}\n          />,\n          document.body,\n        )}\n      <Dialog\n        open={open}\n        onOpenChange={(isOpen) => {\n          if (!isOpen) {\n            resetPicker();\n            onClose?.();\n          }\n        }}\n      >\n        <DialogContent\n          // The header carries its own close button, so suppress the dialog's:\n          // both sit top-right, and full-bleed on mobile stacks them.\n          showCloseButton={false}\n          // `w-full` rather than `w-screen`: viewport units are sized as if\n          // scrollbars don't exist, so `100vw` overflows by the scrollbar on a\n          // narrow desktop window. A fixed element's 100% already excludes it.\n          className={`data-[state=closed]:animate-out! data-[state=closed]:fade-out-0! data-[state=closed]:zoom-out-95! data-[state=open]:animate-in! data-[state=open]:fade-in-0! data-[state=open]:zoom-in-95! z-300! flex! h-dvh! max-h-none! w-full! max-w-none! flex-col! gap-0! overflow-y-auto! rounded-none! border-0! bg-white p-0! data-[state=closed]:duration-150! data-[state=open]:duration-200! md:h-[90vh]! md:max-h-[1000px]! md:w-[95vw]! md:max-w-[1600px]! md:rounded-lg! ${className || \"\"}`}\n        >\n          <DialogTitle className=\"sr-only\">File Picker</DialogTitle>\n          {config.unifiedSelection ? (\n            <FilePickerSelectionScope\n              state={unifiedSelectionState}\n              api={unifiedApi}\n            >\n              {body}\n            </FilePickerSelectionScope>\n          ) : (\n            body\n          )}\n        </DialogContent>\n      </Dialog>\n    </>\n  );\n};\n","import { useState, useEffect, useCallback } from \"react\";\n\nexport interface ThumbnailMeta {\n  width: number;\n  height: number;\n  size: string | null;\n}\n\nexport function useThumbnailMeta(src: string | null | undefined) {\n  const [meta, setMeta] = useState<ThumbnailMeta | null>(null);\n  const [loadError, setLoadError] = useState(false);\n\n  const fileName = src?.split(\"/\").pop()?.split(\"?\")[0] ?? \"thumbnail\";\n\n  const handleLoad = useCallback(\n    (e: React.SyntheticEvent<HTMLImageElement>) => {\n      setLoadError(false);\n      const img = e.currentTarget;\n      setMeta((prev) => ({\n        width: img.naturalWidth,\n        height: img.naturalHeight,\n        size: prev?.size ?? null,\n      }));\n    },\n    [],\n  );\n\n  const handleError = useCallback(() => {\n    setLoadError(true);\n  }, []);\n\n  useEffect(() => {\n    if (!src) {\n      setMeta(null);\n      return;\n    }\n    setMeta(null);\n    const controller = new AbortController();\n    fetch(src, { method: \"HEAD\", signal: controller.signal })\n      .then((res) => {\n        if (!res.ok) return;\n        const len = res.headers.get(\"content-length\");\n        if (len) {\n          const bytes = Number(len);\n          const kb = bytes / 1024;\n          const sizeStr =\n            kb >= 1024 ? `${(kb / 1024).toFixed(1)} MB` : `${kb.toFixed(1)} KB`;\n          setMeta((prev) => ({\n            width: prev?.width ?? 0,\n            height: prev?.height ?? 0,\n            size: sizeStr,\n          }));\n        }\n      })\n      .catch((err: unknown) => {\n        if (err instanceof DOMException && err.name === \"AbortError\") return;\n        console.warn(\"[useThumbnailMeta] HEAD failed:\", err);\n      });\n    return () => controller.abort();\n  }, [src]);\n\n  useEffect(() => {\n    setLoadError(false);\n  }, [src]);\n\n  return { meta, fileName, handleLoad, handleError, loadError };\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useEffect } from \"react\";\nimport { useEditor, EditorContent } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Underline from \"@tiptap/extension-underline\";\nimport {\n  AlignLeft,\n  AlignCenter,\n  AlignRight,\n  AlignJustify,\n  List,\n  ListOrdered,\n} from \"lucide-react\";\nimport { cn } from \"@fluid-app/ui-primitives\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\nexport interface RichTextEditorProps {\n  value: string;\n  onChange: (html: string) => void;\n  placeholder?: string;\n  className?: string;\n  editorClassName?: string;\n}\n\nexport function RichTextEditor({\n  value,\n  onChange,\n  placeholder,\n  className,\n  editorClassName,\n}: RichTextEditorProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n\n  const editor = useEditor({\n    extensions: [\n      StarterKit.configure({\n        bulletList: { keepMarks: true, keepAttributes: false },\n        orderedList: { keepMarks: true, keepAttributes: false },\n      }),\n      Placeholder.configure({\n        placeholder: placeholder ?? t(\"common_start_writing_placeholder\"),\n      }),\n      TextAlign.configure({\n        types: [\"paragraph\"],\n        alignments: [\"left\", \"center\", \"right\", \"justify\"],\n      }),\n      Underline,\n    ],\n    content: value || \"\",\n    onUpdate: ({ editor }) => {\n      onChange(editor.getHTML());\n    },\n  });\n\n  useEffect(() => {\n    if (!editor) return;\n    if (editor.getHTML() !== value) {\n      editor.commands.setContent(value || \"\", false);\n    }\n  }, [editor, value]);\n\n  const buttonBase =\n    \"flex h-7 w-7 items-center justify-center rounded text-xs transition-colors\";\n  const buttonActive = \"bg-gray-100 text-primary\";\n  const buttonInactive = \"text-gray-400 hover:bg-gray-50\";\n  const separator = <div className=\"mx-1 h-5 w-px bg-gray-200\" />;\n\n  return (\n    <div\n      className={cn(\n        \"border-border flex flex-col overflow-hidden rounded-lg border\",\n        className,\n      )}\n    >\n      {/* Toolbar */}\n      <div className=\"border-border flex items-center gap-0.5 border-b bg-gray-50 px-2 py-1.5\">\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().toggleBold().run()}\n          disabled={!editor?.can().chain().focus().toggleBold().run()}\n          className={cn(\n            buttonBase,\n            \"font-bold\",\n            editor?.isActive(\"bold\") ? buttonActive : buttonInactive,\n          )}\n          title={t(\"editor_bold\")}\n        >\n          B\n        </button>\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().toggleItalic().run()}\n          disabled={!editor?.can().chain().focus().toggleItalic().run()}\n          className={cn(\n            buttonBase,\n            \"italic\",\n            editor?.isActive(\"italic\") ? buttonActive : buttonInactive,\n          )}\n          title={t(\"editor_italic\")}\n        >\n          I\n        </button>\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().toggleUnderline().run()}\n          disabled={!editor?.can().chain().focus().toggleUnderline().run()}\n          className={cn(\n            buttonBase,\n            \"underline\",\n            editor?.isActive(\"underline\") ? buttonActive : buttonInactive,\n          )}\n          title={t(\"editor_underline\")}\n        >\n          U\n        </button>\n        {separator}\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().setTextAlign(\"left\").run()}\n          className={cn(\n            buttonBase,\n            editor?.isActive({ textAlign: \"left\" })\n              ? buttonActive\n              : buttonInactive,\n          )}\n          title={t(\"editor_align_left\")}\n        >\n          <AlignLeft className=\"size-3.5\" />\n        </button>\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().setTextAlign(\"center\").run()}\n          className={cn(\n            buttonBase,\n            editor?.isActive({ textAlign: \"center\" })\n              ? buttonActive\n              : buttonInactive,\n          )}\n          title={t(\"editor_align_center\")}\n        >\n          <AlignCenter className=\"size-3.5\" />\n        </button>\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().setTextAlign(\"right\").run()}\n          className={cn(\n            buttonBase,\n            editor?.isActive({ textAlign: \"right\" })\n              ? buttonActive\n              : buttonInactive,\n          )}\n          title={t(\"editor_align_right\")}\n        >\n          <AlignRight className=\"size-3.5\" />\n        </button>\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().setTextAlign(\"justify\").run()}\n          className={cn(\n            buttonBase,\n            editor?.isActive({ textAlign: \"justify\" })\n              ? buttonActive\n              : buttonInactive,\n          )}\n          title={t(\"editor_justify\")}\n        >\n          <AlignJustify className=\"size-3.5\" />\n        </button>\n        {separator}\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().toggleBulletList().run()}\n          className={cn(\n            buttonBase,\n            editor?.isActive(\"bulletList\") ? buttonActive : buttonInactive,\n          )}\n          title={t(\"editor_bullet_list\")}\n        >\n          <List className=\"size-3.5\" />\n        </button>\n        <button\n          type=\"button\"\n          onClick={() => editor?.chain().focus().toggleOrderedList().run()}\n          className={cn(\n            buttonBase,\n            editor?.isActive(\"orderedList\") ? buttonActive : buttonInactive,\n          )}\n          title={t(\"editor_ordered_list\")}\n        >\n          <ListOrdered className=\"size-3.5\" />\n        </button>\n      </div>\n\n      {/* Editor area */}\n      <EditorContent\n        editor={editor}\n        className={cn(\"flex-1 overflow-y-auto p-4\", editorClassName)}\n      />\n\n      <style>{`\n        .ProseMirror {\n          outline: none;\n        }\n        .ProseMirror p.is-empty::before {\n          color: #9ca3af;\n          content: attr(data-placeholder);\n          float: left;\n          height: 0;\n          pointer-events: none;\n        }\n        .ProseMirror ul {\n          list-style-type: disc;\n          padding-left: 1.5rem;\n          margin: 0.5rem 0;\n        }\n        .ProseMirror ol {\n          list-style-type: decimal;\n          padding-left: 1.5rem;\n          margin: 0.5rem 0;\n        }\n        .ProseMirror li {\n          margin: 0.25rem 0;\n          display: list-item;\n        }\n        .ProseMirror li > p {\n          margin: 0;\n        }\n      `}</style>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useRef, useCallback, useMemo } from \"react\";\nimport { Button, Input, Spinner } from \"@fluid-app/ui-primitives\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { Package, Plus, Search } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\n\ninterface TaggedProduct {\n  id: number;\n  name?: string;\n  slug?: string | null;\n  image_url?: string | null;\n  price?: string | null;\n  sku?: string | null;\n}\n\ninterface SearchResult {\n  id: number;\n  name?: string;\n  image_url?: string | null;\n  price?: string | null;\n}\n\nexport interface MediaProductTaggingProps {\n  products: TaggedProduct[];\n  onAddProduct: (productId: number) => Promise<void>;\n  onRemoveProduct: (productId: number) => Promise<void>;\n  onSearchProducts: (\n    query: string,\n    options?: { cursor?: string | null; limit?: number },\n  ) => Promise<{\n    products: SearchResult[];\n    nextCursor?: string | null;\n  }>;\n  disabled?: boolean;\n  maxProducts?: number;\n}\n\nconst PAGE_SIZE = 25;\n\nfunction ProductImage({\n  imageUrl,\n  name,\n}: {\n  imageUrl?: string | null;\n  name?: string;\n}) {\n  const { t } = useShareablesTranslation();\n  const [errored, setErrored] = useState(false);\n\n  if (imageUrl && imageUrl.length > 0 && !errored) {\n    return (\n      <img\n        src={imageUrl}\n        alt={name ?? t(\"common_product\")}\n        width={40}\n        height={40}\n        className=\"size-10 shrink-0 rounded object-cover\"\n        onError={() => setErrored(true)}\n      />\n    );\n  }\n\n  return (\n    <div className=\"flex size-10 shrink-0 items-center justify-center rounded bg-gray-100\">\n      <Package className=\"size-5 text-gray-400\" />\n    </div>\n  );\n}\n\nexport function MediaProductTagging({\n  products,\n  onAddProduct,\n  onRemoveProduct,\n  onSearchProducts,\n  disabled = false,\n  maxProducts = 100,\n}: MediaProductTaggingProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n  const { showToast } = useShareablesUI();\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [query, setQuery] = useState(\"\");\n  const [searchResults, setSearchResults] = useState<SearchResult[]>([]);\n  const [searching, setSearching] = useState(false);\n  const [loadingMore, setLoadingMore] = useState(false);\n  const [nextCursor, setNextCursor] = useState<string | null>(null);\n  const [removingId, setRemovingId] = useState<number | null>(null);\n  const [addingId, setAddingId] = useState<number | null>(null);\n  const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n  const loadMoreSentinelRef = useRef<HTMLDivElement | null>(null);\n  const scrollContainerRef = useRef<HTMLDivElement | null>(null);\n\n  const taggedIds = useMemo(\n    () => new Set(products.map((p) => p.id)),\n    [products],\n  );\n  const isAtMaxLimit = products.length >= maxProducts;\n\n  const runSearch = useCallback(\n    async (q: string) => {\n      setSearching(true);\n      try {\n        const { products: results, nextCursor: cursor } =\n          await onSearchProducts(q, { limit: PAGE_SIZE });\n        setSearchResults(results);\n        setNextCursor(cursor ?? null);\n      } catch (error) {\n        setSearchResults([]);\n        setNextCursor(null);\n        showToast({\n          title: t(\"products_load_error\"),\n          type: \"error\",\n          error,\n        });\n      } finally {\n        setSearching(false);\n      }\n    },\n    [onSearchProducts, showToast],\n  );\n\n  const loadMore = useCallback(async () => {\n    if (!nextCursor || loadingMore || searching) return;\n    setLoadingMore(true);\n    try {\n      const { products: results, nextCursor: cursor } = await onSearchProducts(\n        query,\n        { cursor: nextCursor, limit: PAGE_SIZE },\n      );\n      setSearchResults((prev) => [...prev, ...results]);\n      setNextCursor(cursor ?? null);\n    } catch (error) {\n      // Stop further auto-fetch attempts for this query; user can scroll-up\n      // and -back-down to retry or refine the query to reset the cursor.\n      setNextCursor(null);\n      showToast({\n        title: t(\"products_load_more_error\"),\n        type: \"error\",\n        error,\n      });\n    } finally {\n      setLoadingMore(false);\n    }\n  }, [nextCursor, loadingMore, searching, onSearchProducts, query, showToast]);\n\n  useEffect(() => {\n    // Intentionally runs on modal open with an empty query so users see\n    // initial product suggestions (backend returns a default list) rather\n    // than an empty state. Greptile flagged this previously, but product\n    // direction is: show defaults on open, refine as the user types.\n    if (!isModalOpen) return;\n\n    if (debounceRef.current) {\n      clearTimeout(debounceRef.current);\n    }\n\n    debounceRef.current = setTimeout(() => {\n      void runSearch(query);\n    }, 300);\n\n    return () => {\n      if (debounceRef.current) {\n        clearTimeout(debounceRef.current);\n      }\n    };\n  }, [query, isModalOpen, runSearch]);\n\n  // Infinite scroll — load the next page when the sentinel becomes visible\n  // within the scroll container. Must pass `root` explicitly because the\n  // sentinel lives inside an overflow:auto container, not the viewport.\n  useEffect(() => {\n    if (!isModalOpen) return;\n    const sentinel = loadMoreSentinelRef.current;\n    const root = scrollContainerRef.current;\n    if (!sentinel || !root) return;\n    const observer = new IntersectionObserver(\n      (entries) => {\n        if (entries[0]?.isIntersecting) void loadMore();\n      },\n      { root, rootMargin: \"100px\" },\n    );\n    observer.observe(sentinel);\n    return () => observer.disconnect();\n  }, [isModalOpen, loadMore, searchResults.length]);\n\n  function handleOpenModal() {\n    setQuery(\"\");\n    setSearchResults([]);\n    setIsModalOpen(true);\n  }\n\n  async function handleAdd(productId: number) {\n    setAddingId(productId);\n    try {\n      await onAddProduct(productId);\n      void runSearch(query);\n    } catch (error) {\n      // Defensive — host apps are expected to toast from their own handler,\n      // but if they re-throw we still surface a message here so the spinner\n      // doesn't just reset with no explanation.\n      showToast({\n        title: t(\"products_add_error\"),\n        type: \"error\",\n        error,\n      });\n    } finally {\n      setAddingId(null);\n    }\n  }\n\n  async function handleRemove(productId: number) {\n    setRemovingId(productId);\n    try {\n      await onRemoveProduct(productId);\n    } catch (error) {\n      showToast({\n        title: t(\"products_remove_error\"),\n        type: \"error\",\n        error,\n      });\n    } finally {\n      setRemovingId(null);\n    }\n  }\n\n  return (\n    <div className=\"border-border bg-card rounded-lg border p-5\">\n      <h3 className=\"text-foreground mb-4 text-base font-semibold\">\n        {t(\"media_tagged_products_heading\")}\n      </h3>\n\n      <div className=\"space-y-3\">\n        {products.length === 0 ? (\n          /* Empty state — matches admin: dashed border + centered button */\n          <div className=\"rounded-lg border border-dashed border-gray-200 p-4 text-center\">\n            <p className=\"mb-3 text-sm text-gray-500\">\n              {t(\"media_no_products_tagged\")}\n            </p>\n            {!disabled && (\n              <Button\n                type=\"button\"\n                onClick={handleOpenModal}\n                size=\"sm\"\n                className=\"gap-1.5\"\n              >\n                <Plus className=\"size-3\" />\n                {t(\"media_add_product_button\")}\n              </Button>\n            )}\n          </div>\n        ) : (\n          <div className=\"relative space-y-4\">\n            {/* Counter + Add button row */}\n            <div className=\"flex items-center justify-between\">\n              <span className=\"text-xs text-gray-500\">\n                {t(\"media_products_selected_count\", {\n                  current: String(products.length),\n                  max: String(maxProducts),\n                })}\n              </span>\n              {!disabled && !isAtMaxLimit && (\n                <Button\n                  type=\"button\"\n                  onClick={handleOpenModal}\n                  variant=\"outline\"\n                  size=\"sm\"\n                  className=\"gap-1.5 text-xs\"\n                >\n                  <Plus className=\"size-3\" />\n                  {t(\"media_add_products_button\")}\n                </Button>\n              )}\n            </div>\n\n            <p className=\"text-xs text-gray-500\">\n              {t(\"media_products_country_note\")}\n            </p>\n\n            {/* Product list — matches admin: card per product */}\n            <div className=\"max-h-96 space-y-2 overflow-y-auto pb-2\">\n              {products.map((product) => (\n                <div\n                  key={product.id}\n                  className=\"flex items-center justify-between rounded-lg border border-gray-200 bg-white p-3\"\n                >\n                  <div className=\"flex items-center gap-3\">\n                    <ProductImage\n                      imageUrl={product.image_url}\n                      name={product.name}\n                    />\n                    <div>\n                      <p className=\"text-sm font-medium text-gray-900\">\n                        {product.name ??\n                          t(\"media_product_fallback_name\", {\n                            id: String(product.id),\n                          })}\n                      </p>\n                      <p className=\"text-xs text-gray-500\">\n                        {product.price ? `$${product.price}` : t(\"common_na\")}\n                      </p>\n                    </div>\n                  </div>\n                  {!disabled && (\n                    <Button\n                      type=\"button\"\n                      variant=\"outline\"\n                      size=\"sm\"\n                      onClick={() => void handleRemove(product.id)}\n                      disabled={removingId === product.id}\n                      className=\"text-xs text-red-600 hover:bg-red-50 hover:text-red-700\"\n                    >\n                      {removingId === product.id\n                        ? t(\"common_removing\")\n                        : t(\"common_remove\")}\n                    </Button>\n                  )}\n                </div>\n              ))}\n            </div>\n\n            {isAtMaxLimit && (\n              <p className=\"py-2 text-center text-xs text-gray-500\">\n                {t(\"media_max_products_reached\", { max: String(maxProducts) })}\n              </p>\n            )}\n          </div>\n        )}\n      </div>\n\n      {/* Product Selection Modal — matches admin layout */}\n      <ResponsiveDialog\n        open={isModalOpen}\n        onOpenChange={setIsModalOpen}\n        title={t(\"media_select_products_title\")}\n        presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n        size=\"wide\"\n      >\n        <p className=\"text-muted-foreground text-sm\">\n          {t(\"media_products_selected_ratio\", {\n            current: String(products.length),\n            max: String(maxProducts),\n          })}\n        </p>\n\n        {isAtMaxLimit && (\n          <div className=\"rounded-md border border-yellow-200 bg-yellow-50 p-3\">\n            <p className=\"text-sm text-yellow-800\">\n              {t(\"media_max_products_warning\", { max: String(maxProducts) })}\n            </p>\n          </div>\n        )}\n\n        {/* Search */}\n        <div className=\"relative\">\n          {searching ? (\n            <Spinner className=\"absolute top-1/2 left-3 size-4 -translate-y-1/2\" />\n          ) : (\n            <Search className=\"absolute top-1/2 left-3 size-4 -translate-y-1/2 text-gray-400\" />\n          )}\n          <Input\n            placeholder={t(\"products_search_placeholder\")}\n            value={query}\n            onChange={(e) => setQuery(e.target.value)}\n            className=\"pl-10\"\n          />\n        </div>\n\n        {/* Results */}\n        <div ref={scrollContainerRef} className=\"max-h-96 overflow-y-auto\">\n          {searching && searchResults.length === 0 ? (\n            <div className=\"flex items-center justify-center py-8\">\n              <Spinner className=\"size-5\" />\n            </div>\n          ) : searchResults.length === 0 ? (\n            <p className=\"py-8 text-center text-sm text-gray-500\">\n              {query.length > 0\n                ? t(\"products_search_no_results\")\n                : t(\"products_search_start_typing\")}\n            </p>\n          ) : (\n            <div className=\"space-y-2 px-1\">\n              {/* Render an initial slot so the fragment is grouped — the\n                    infinite-scroll sentinel appears after the list. */}\n              {searchResults.map((result) => {\n                const isTagged = taggedIds.has(result.id);\n                const canAdd = !isTagged && !isAtMaxLimit;\n\n                return (\n                  <div\n                    key={result.id}\n                    className={`flex items-center justify-between rounded-lg border p-3 ${\n                      isTagged\n                        ? \"border-green-200 bg-green-50\"\n                        : canAdd\n                          ? \"border-gray-200 hover:border-gray-300\"\n                          : \"border-gray-100 bg-gray-50\"\n                    }`}\n                  >\n                    <div className=\"flex items-center gap-3\">\n                      <ProductImage\n                        imageUrl={result.image_url}\n                        name={result.name}\n                      />\n                      <div>\n                        <p\n                          className={`text-sm font-medium ${\n                            canAdd ? \"text-gray-900\" : \"text-gray-500\"\n                          }`}\n                        >\n                          {result.name ??\n                            t(\"media_product_fallback_name\", {\n                              id: String(result.id),\n                            })}\n                        </p>\n                        {result.price && (\n                          <p className=\"text-xs text-gray-500\">\n                            ${result.price}\n                          </p>\n                        )}\n                      </div>\n                    </div>\n                    <Button\n                      type=\"button\"\n                      variant={isTagged ? \"ghost\" : \"outline\"}\n                      size=\"sm\"\n                      onClick={() => {\n                        if (canAdd) void handleAdd(result.id);\n                      }}\n                      disabled={!canAdd || addingId === result.id}\n                      className={isTagged ? \"text-green-600\" : \"\"}\n                    >\n                      {addingId === result.id\n                        ? t(\"common_adding\")\n                        : isTagged\n                          ? t(\"common_added\")\n                          : canAdd\n                            ? t(\"common_add\")\n                            : t(\"media_limit_reached\")}\n                    </Button>\n                  </div>\n                );\n              })}\n              {/* Infinite-scroll sentinel + loading indicator */}\n              {nextCursor !== null && (\n                <div\n                  ref={loadMoreSentinelRef}\n                  className=\"flex items-center justify-center py-4\"\n                >\n                  {loadingMore && <Spinner className=\"size-5\" />}\n                </div>\n              )}\n            </div>\n          )}\n        </div>\n\n        {/* Done button */}\n        <div className=\"flex justify-end pt-2\">\n          <Button\n            type=\"button\"\n            variant=\"outline\"\n            onClick={() => setIsModalOpen(false)}\n          >\n            {t(\"common_done\")}\n          </Button>\n        </div>\n      </ResponsiveDialog>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useMemo } from \"react\";\nimport {\n  Button,\n  Input,\n  Label,\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n  Switch,\n} from \"@fluid-app/ui-primitives\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { Globe, HelpCircle, Mail, Phone, ShoppingCart } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\ntype CtaType = \"link\" | \"cart\" | \"email\" | \"phone\";\n\ninterface CtaState {\n  enabled: boolean;\n  type: CtaType;\n  buttonText: string;\n  url: string;\n}\n\nexport interface CtaModalProps {\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n  ctaEnabled: boolean;\n  ctaType: CtaType | string;\n  ctaButtonText: string;\n  ctaUrl: string;\n  onDone: (state: CtaState) => void;\n}\n\nexport function CtaModal({\n  open,\n  onOpenChange,\n  ctaEnabled,\n  ctaType,\n  ctaButtonText,\n  ctaUrl,\n  onDone,\n}: CtaModalProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n\n  const CTA_TYPES: { value: CtaType; label: string; icon: React.ReactNode }[] =\n    useMemo(\n      () => [\n        {\n          value: \"link\",\n          label: t(\"cta_type_page\"),\n          icon: <Globe className=\"size-3.5 text-gray-500\" />,\n        },\n        {\n          value: \"cart\",\n          label: t(\"cta_type_cart\"),\n          icon: <ShoppingCart className=\"size-3.5 text-gray-500\" />,\n        },\n        {\n          value: \"email\",\n          label: t(\"cta_type_email\"),\n          icon: <Mail className=\"size-3.5 text-gray-500\" />,\n        },\n        {\n          value: \"phone\",\n          label: t(\"cta_type_phone\"),\n          icon: <Phone className=\"size-3.5 text-gray-500\" />,\n        },\n      ],\n      [t],\n    );\n\n  const [enabled, setEnabled] = useState(ctaEnabled);\n  const [type, setType] = useState<CtaType>((ctaType as CtaType) || \"link\");\n  const [buttonText, setButtonText] = useState(ctaButtonText);\n  const [url, setUrl] = useState(ctaUrl);\n\n  // Sync local state when modal opens\n  useEffect(() => {\n    if (open) {\n      setEnabled(ctaEnabled);\n      setType((ctaType as CtaType) || \"link\");\n      setButtonText(ctaButtonText || t(\"cta_default_button_text\"));\n      setUrl(ctaUrl);\n    }\n  }, [open, ctaEnabled, ctaType, ctaButtonText, ctaUrl]);\n\n  const handleEnable = (checked: boolean) => {\n    setEnabled(checked);\n    if (checked && !buttonText) {\n      setButtonText(t(\"cta_default_button_text\"));\n    }\n  };\n\n  const handleCancel = () => {\n    onOpenChange(false);\n  };\n\n  const handleDone = () => {\n    // Always forward the current url value regardless of type — the backend\n    // uses it only for type=\"link\", but preserving it here means users don't\n    // lose their destination when toggling to email/phone/cart and back.\n    onDone({ enabled, type, buttonText, url });\n    onOpenChange(false);\n  };\n\n  const fieldsDisabled = !enabled;\n\n  return (\n    <ResponsiveDialog\n      open={open}\n      onOpenChange={onOpenChange}\n      title={t(\"cta_dialog_title\")}\n      presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n    >\n      <p className=\"mt-1 text-sm text-gray-500\">\n        {t(\"cta_dialog_description\")}\n      </p>\n\n      {/* Body */}\n      <div className=\"space-y-5\">\n        {/* Enable toggle */}\n        <div className=\"flex items-center justify-between border-b border-gray-200 pb-4\">\n          <span className=\"text-sm font-medium text-gray-700\">\n            {t(\"cta_enable_toggle_label\")}\n          </span>\n          <Switch checked={enabled} onCheckedChange={handleEnable} />\n        </div>\n\n        {/* Action Type + Button Label — side by side */}\n        <div className=\"grid grid-cols-2 items-start gap-4\">\n          <div className=\"flex flex-col gap-1.5\">\n            <Label\n              className={fieldsDisabled ? \"text-gray-400\" : \"text-gray-700\"}\n            >\n              {t(\"cta_action_type_label\")}\n            </Label>\n            <Select\n              value={type}\n              onValueChange={(v) => setType(v as CtaType)}\n              disabled={fieldsDisabled}\n            >\n              <SelectTrigger\n                className={`w-full ${fieldsDisabled ? \"opacity-50\" : \"\"}`}\n              >\n                <SelectValue placeholder={t(\"cta_type_placeholder\")} />\n              </SelectTrigger>\n              <SelectContent>\n                {CTA_TYPES.map((ctaOption) => (\n                  <SelectItem key={ctaOption.value} value={ctaOption.value}>\n                    <span className=\"flex items-center gap-2\">\n                      {ctaOption.icon}\n                      {ctaOption.label}\n                    </span>\n                  </SelectItem>\n                ))}\n              </SelectContent>\n            </Select>\n          </div>\n\n          {/* Button Label — hidden for cart */}\n          {type !== \"cart\" ? (\n            <div className=\"flex flex-col gap-1.5\">\n              <div className=\"flex items-center gap-1.5\">\n                <Label\n                  className={fieldsDisabled ? \"text-gray-400\" : \"text-gray-700\"}\n                >\n                  {t(\"cta_button_label\")}\n                </Label>\n                <HelpCircle className=\"size-3.5 text-gray-400\" />\n              </div>\n              <Input\n                value={buttonText}\n                onChange={(e) => setButtonText(e.target.value)}\n                placeholder={t(\"cta_default_button_text\")}\n                disabled={fieldsDisabled}\n                className={fieldsDisabled ? \"opacity-50\" : \"\"}\n              />\n            </div>\n          ) : (\n            <div />\n          )}\n        </div>\n\n        {/* Link-specific: URL input */}\n        {type === \"link\" && (\n          <div className=\"flex flex-col gap-1.5\">\n            <div className=\"flex items-center gap-1.5\">\n              <Label\n                className={fieldsDisabled ? \"text-gray-400\" : \"text-gray-700\"}\n              >\n                {t(\"cta_url_label\")}\n              </Label>\n              <HelpCircle className=\"size-3.5 text-gray-400\" />\n            </div>\n            <Input\n              value={url}\n              onChange={(e) => setUrl(e.target.value)}\n              placeholder={t(\"cta_url_placeholder\")}\n              type=\"url\"\n              disabled={fieldsDisabled}\n              className={fieldsDisabled ? \"opacity-50\" : \"\"}\n            />\n          </div>\n        )}\n      </div>\n\n      {/* Footer */}\n      <div className=\"-mx-6 -mb-6 flex items-center justify-end gap-3 rounded-b-lg border-t border-gray-200 bg-gray-50 px-6 py-4\">\n        <Button variant=\"outline\" onClick={handleCancel}>\n          {t(\"common_cancel\")}\n        </Button>\n        <Button onClick={handleDone}>{t(\"common_done\")}</Button>\n      </div>\n    </ResponsiveDialog>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useRef, useCallback } from \"react\";\nimport { Button, Spinner } from \"@fluid-app/ui-primitives\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { Camera, ImageIcon, Pause, Play } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport { useThumbnailMeta } from \"../../hooks/use-thumbnail-meta\";\n\nexport interface VideoThumbnailSelectorProps {\n  videoUrl: string;\n  thumbnailUrl?: string | null;\n  onThumbnailCaptured: (blob: Blob) => void;\n  onThumbnailSelected?: () => void;\n  disabled?: boolean;\n}\n\nfunction formatTime(seconds: number): string {\n  const mins = Math.floor(seconds / 60);\n  const secs = Math.floor(seconds % 60);\n  return `${mins}:${secs.toString().padStart(2, \"0\")}`;\n}\n\nexport function VideoThumbnailSelector({\n  videoUrl,\n  thumbnailUrl,\n  onThumbnailCaptured,\n  onThumbnailSelected,\n  disabled = false,\n}: VideoThumbnailSelectorProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n  const { showToast } = useShareablesUI();\n  const [frameSelectorOpen, setFrameSelectorOpen] = useState(false);\n  const [isPlaying, setIsPlaying] = useState(false);\n  const [currentTime, setCurrentTime] = useState(0);\n  const [duration, setDuration] = useState(0);\n  const [capturing, setCapturing] = useState(false);\n\n  const videoRef = useRef<HTMLVideoElement>(null);\n  const canvasRef = useRef<HTMLCanvasElement>(null);\n\n  const handleLoadedMetadata = useCallback(() => {\n    const video = videoRef.current;\n    if (!video) return;\n    setDuration(video.duration);\n    // Seek to 1 second or 10% of video\n    video.currentTime = Math.min(1, video.duration * 0.1);\n  }, []);\n\n  const handleTimeUpdate = useCallback(() => {\n    if (videoRef.current) {\n      setCurrentTime(videoRef.current.currentTime);\n    }\n  }, []);\n\n  const handlePlayPause = useCallback(() => {\n    const video = videoRef.current;\n    if (!video) return;\n    if (video.paused) {\n      void video.play();\n      setIsPlaying(true);\n    } else {\n      video.pause();\n      setIsPlaying(false);\n    }\n  }, []);\n\n  const handleScrub = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n    const video = videoRef.current;\n    if (!video) return;\n    const time = Number(e.target.value);\n    video.currentTime = time;\n    setCurrentTime(time);\n    if (!video.paused) {\n      video.pause();\n      setIsPlaying(false);\n    }\n  }, []);\n\n  const handleCapture = useCallback(() => {\n    const video = videoRef.current;\n    const canvas = canvasRef.current;\n    if (!video || !canvas) return;\n\n    setCapturing(true);\n    try {\n      canvas.width = video.videoWidth;\n      canvas.height = video.videoHeight;\n      const ctx = canvas.getContext(\"2d\");\n      if (!ctx) {\n        setCapturing(false);\n        return;\n      }\n      ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n      canvas.toBlob(\n        (blob) => {\n          if (blob) {\n            onThumbnailCaptured(blob);\n            setFrameSelectorOpen(false);\n          } else {\n            // toBlob can return null on memory/canvas errors — surface it so\n            // the user knows why the dialog didn't produce a thumbnail.\n            showToast({\n              title: t(\"media_frame_capture_error\"),\n              type: \"error\",\n            });\n          }\n          setCapturing(false);\n        },\n        \"image/jpeg\",\n        0.92,\n      );\n    } catch (error) {\n      // Cross-origin or other canvas error — log + surface to the user.\n      showToast({\n        title: t(\"media_frame_capture_error\"),\n        type: \"error\",\n        error,\n      });\n      setCapturing(false);\n    }\n  }, [onThumbnailCaptured, showToast, t]);\n\n  const handleOpenDialog = useCallback(() => {\n    setIsPlaying(false);\n    setCurrentTime(0);\n    setDuration(0);\n    setFrameSelectorOpen(true);\n  }, []);\n\n  const isMetadataLoaded = duration > 0;\n\n  const {\n    meta: imgMeta,\n    fileName: thumbFileName,\n    handleLoad: handleImgLoad,\n    handleError: handleImgError,\n    loadError: imgLoadError,\n  } = useThumbnailMeta(thumbnailUrl);\n\n  return (\n    <div className=\"space-y-3\">\n      {/* Current thumbnail display */}\n      <div>\n        <label className=\"text-foreground mb-1.5 block text-sm font-medium\">\n          {t(\"media_thumbnail_label\")}\n        </label>\n        {thumbnailUrl ? (\n          <div className=\"flex items-start gap-4\">\n            {imgLoadError ? (\n              <div className=\"bg-muted flex h-28 w-48 shrink-0 items-center justify-center rounded-md border\">\n                <ImageIcon className=\"text-muted-foreground size-8\" />\n              </div>\n            ) : (\n              <img\n                src={thumbnailUrl}\n                alt={t(\"media_video_thumbnail_alt\")}\n                className=\"w-48 shrink-0 rounded-md border object-contain\"\n                onLoad={handleImgLoad}\n                onError={handleImgError}\n              />\n            )}\n            <div className=\"min-w-0 flex-1 pt-1\">\n              <p className=\"text-foreground truncate text-sm font-medium\">\n                {thumbFileName}\n              </p>\n              {imgMeta && imgMeta.width > 0 && (\n                <p className=\"text-muted-foreground text-xs\">\n                  {imgMeta.width} &times; {imgMeta.height}px\n                </p>\n              )}\n              {imgMeta?.size && (\n                <p className=\"text-muted-foreground text-xs\">{imgMeta.size}</p>\n              )}\n              {!disabled && (\n                <div className=\"mt-2 flex flex-col items-start gap-2\">\n                  <Button\n                    variant=\"outline\"\n                    size=\"sm\"\n                    onClick={handleOpenDialog}\n                    className=\"gap-1.5\"\n                  >\n                    <Camera className=\"size-3.5\" />\n                    {t(\"media_select_from_video_frame\")}\n                  </Button>\n                  {onThumbnailSelected && (\n                    <Button\n                      variant=\"outline\"\n                      size=\"sm\"\n                      onClick={onThumbnailSelected}\n                      className=\"gap-1.5\"\n                    >\n                      <ImageIcon className=\"size-3.5\" />\n                      {t(\"media_select_new_image\")}\n                    </Button>\n                  )}\n                </div>\n              )}\n            </div>\n          </div>\n        ) : (\n          <div className=\"flex items-center gap-4\">\n            <div className=\"bg-muted flex h-28 w-48 shrink-0 items-center justify-center rounded-md border\">\n              <Camera className=\"text-muted-foreground size-8\" />\n            </div>\n            <div className=\"min-w-0 flex-1\">\n              <p className=\"text-muted-foreground text-sm\">\n                {t(\"media_no_thumbnail\")}\n              </p>\n              {!disabled && (\n                <div className=\"mt-2\">\n                  <Button\n                    variant=\"outline\"\n                    size=\"sm\"\n                    onClick={handleOpenDialog}\n                    className=\"gap-1.5\"\n                  >\n                    <Camera className=\"size-3.5\" />\n                    {t(\"media_select_video_frame\")}\n                  </Button>\n                </div>\n              )}\n            </div>\n          </div>\n        )}\n      </div>\n\n      {/* Frame selector dialog */}\n      <ResponsiveDialog\n        open={frameSelectorOpen}\n        onOpenChange={setFrameSelectorOpen}\n        title={t(\"media_select_video_frame\")}\n        presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n        size=\"wide\"\n      >\n        <div className=\"space-y-4\">\n          {/* Video player */}\n          <div className=\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\">\n            <video\n              ref={videoRef}\n              src={videoUrl}\n              crossOrigin=\"anonymous\"\n              onLoadedMetadata={handleLoadedMetadata}\n              onTimeUpdate={handleTimeUpdate}\n              onEnded={() => setIsPlaying(false)}\n              preload=\"metadata\"\n              muted\n              playsInline\n              className=\"absolute inset-0 h-full w-full object-contain\"\n            />\n            {/* Play/pause overlay */}\n            <button\n              type=\"button\"\n              onClick={handlePlayPause}\n              disabled={!isMetadataLoaded}\n              className=\"absolute inset-0 flex items-center justify-center bg-black/20 opacity-0 transition-opacity hover:opacity-100\"\n            >\n              {isPlaying ? (\n                <Pause className=\"size-12 text-white\" />\n              ) : (\n                <Play className=\"size-12 text-white\" />\n              )}\n            </button>\n          </div>\n\n          {/* Scrub slider + time */}\n          <div className=\"flex items-center gap-3\">\n            <span className=\"text-muted-foreground w-12 text-xs\">\n              {formatTime(currentTime)}\n            </span>\n            <input\n              type=\"range\"\n              min={0}\n              max={duration || 0}\n              step={0.1}\n              value={currentTime}\n              onChange={handleScrub}\n              disabled={!isMetadataLoaded}\n              className=\"h-2 flex-1 cursor-pointer appearance-none rounded-full bg-gray-200 accent-black disabled:cursor-not-allowed disabled:opacity-50\"\n            />\n            <span className=\"text-muted-foreground w-12 text-right text-xs\">\n              {formatTime(duration)}\n            </span>\n          </div>\n\n          {/* Capture button */}\n          <Button\n            onClick={handleCapture}\n            disabled={!isMetadataLoaded || capturing}\n            className=\"w-full gap-2\"\n          >\n            {capturing ? (\n              <Spinner className=\"size-4\" />\n            ) : (\n              <Camera className=\"size-4\" />\n            )}\n            {t(\"media_capture_frame\")}\n          </Button>\n        </div>\n\n        {/* Hidden canvas for frame capture */}\n        <canvas ref={canvasRef} className=\"hidden\" />\n      </ResponsiveDialog>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useCallback, useMemo, useRef } from \"react\";\nimport { useQuery, useQueryClient, useMutation } from \"@tanstack/react-query\";\nimport {\n  useShareablesApi,\n  useRepContext,\n  shareablesKeys,\n} from \"@fluid-app/shareables-core\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Button,\n  DialogFooter,\n  Input,\n  Label,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n  Spinner,\n  Switch,\n  Textarea,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { ImageIcon, MoreVertical, Trash2 } from \"lucide-react\";\nimport {\n  ScreenHeaderActions,\n  ScreenHeaderBreadcrumbs,\n} from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport {\n  FilePicker,\n  FilePickerApiProvider,\n  FilePickerProvider,\n  type FilePickerContextValue,\n} from \"@fluid-app/file-picker-ui\";\nimport type { FilePickerResult } from \"@fluid-app/file-picker-core\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport { useThumbnailMeta } from \"../../hooks/use-thumbnail-meta\";\nimport { stripTags } from \"../../utils/strip-tags\";\nimport { RichTextEditor } from \"../playlists/RichTextEditor\";\nimport { MediaProductTagging } from \"../media/MediaProductTagging\";\nimport { CtaModal } from \"../media/CtaModal\";\nimport { VideoThumbnailSelector } from \"../media/VideoThumbnailSelector\";\n\nexport interface MediaEditScreenProps {\n  mediaId: string;\n  onNavigate?: (screen: string, detailId?: string) => void;\n  onBack?: () => void;\n}\n\ntype CtaType = \"link\" | \"cart\" | \"email\" | \"phone\";\n\nfunction deriveUpdateFieldsFromResult(result: FilePickerResult): {\n  image_url?: string;\n  video_url?: string;\n  pdf_url?: string;\n  kind: string;\n} {\n  const mime = result.metadata.mime_type;\n  if (mime.startsWith(\"video/\")) {\n    return { video_url: result.file_url, kind: \"video\" };\n  }\n  if (mime === \"application/pdf\") {\n    return { pdf_url: result.file_url, kind: \"pdf\" };\n  }\n  return { image_url: result.file_url, kind: \"image\" };\n}\n\ninterface EditState {\n  title: string;\n  description: string;\n  active: boolean;\n  ctaEnabled: boolean;\n  ctaType: CtaType;\n  ctaButtonText: string;\n  ctaUrl: string;\n  seoTitle: string;\n  seoDescription: string;\n  blockCrawler: boolean;\n}\n\nfunction buildEditState(mediaItem: {\n  title: string;\n  status?: \"active\" | \"draft\";\n  description?: { body?: string | null } | null;\n  stripped?: string | null;\n  cta_enabled?: boolean;\n  cta_action_type?: string | null;\n  cta_button_text?: string | null;\n  cta_url?: string | null;\n  cta?: {\n    enabled?: boolean | null;\n    type?: string | null;\n    button_text?: string | null;\n    action_url?: string | null;\n  } | null;\n  seo?: {\n    title?: string | null;\n    description?: string | null;\n    block_crawler?: boolean | null;\n  } | null;\n  settings?: {\n    cta?: {\n      enabled?: boolean;\n      type?: string | null;\n      button_text?: string | null;\n      url?: string | null;\n    } | null;\n    seo?: {\n      title?: string | null;\n      description?: string | null;\n      block_crawler?: boolean | null;\n    } | null;\n  } | null;\n}): EditState {\n  const ctaEnabled =\n    mediaItem.cta?.enabled ??\n    mediaItem.settings?.cta?.enabled ??\n    mediaItem.cta_enabled ??\n    false;\n  const rawCtaType =\n    mediaItem.cta?.type ??\n    mediaItem.settings?.cta?.type ??\n    mediaItem.cta_action_type ??\n    \"link\";\n  const ctaType: CtaType =\n    rawCtaType === \"cart\" || rawCtaType === \"email\" || rawCtaType === \"phone\"\n      ? rawCtaType\n      : \"link\";\n\n  return {\n    title: mediaItem.title ?? \"\",\n    // Prefer HTML body; fall back to legacy `stripped` plain text only when\n    // body is null/undefined (i.e. pre-rich-text items that never had a\n    // stored HTML version). Nullish coalescing keeps intentionally-empty\n    // \"\" from being replaced by stripped content.\n    description: mediaItem.description?.body ?? mediaItem.stripped ?? \"\",\n    active: mediaItem.status !== \"draft\",\n    ctaEnabled,\n    ctaType,\n    ctaButtonText:\n      mediaItem.cta?.button_text ??\n      mediaItem.settings?.cta?.button_text ??\n      mediaItem.cta_button_text ??\n      \"\",\n    ctaUrl:\n      mediaItem.cta?.action_url ??\n      mediaItem.settings?.cta?.url ??\n      mediaItem.cta_url ??\n      \"\",\n    seoTitle: mediaItem.seo?.title ?? mediaItem.settings?.seo?.title ?? \"\",\n    seoDescription:\n      mediaItem.seo?.description ?? mediaItem.settings?.seo?.description ?? \"\",\n    blockCrawler:\n      mediaItem.seo?.block_crawler ??\n      mediaItem.settings?.seo?.block_crawler ??\n      false,\n  };\n}\n\nfunction ThumbnailWithMeta({\n  src,\n  onReplace,\n}: {\n  src: string;\n  onReplace: () => void;\n}) {\n  const { t } = useShareablesTranslation();\n  const { meta, fileName, handleLoad, handleError, loadError } =\n    useThumbnailMeta(src);\n\n  return (\n    <div className=\"flex items-start gap-4\">\n      {loadError ? (\n        <div className=\"bg-muted flex h-28 w-48 shrink-0 items-center justify-center rounded-md border\">\n          <ImageIcon className=\"text-muted-foreground size-8\" />\n        </div>\n      ) : (\n        <img\n          src={src}\n          alt={t(\"media_thumbnail_alt\")}\n          className=\"w-48 shrink-0 rounded-md border object-contain\"\n          onLoad={handleLoad}\n          onError={handleError}\n        />\n      )}\n      <div className=\"min-w-0 flex-1 pt-1\">\n        <p className=\"text-foreground truncate text-sm font-medium\">\n          {fileName}\n        </p>\n        {meta && meta.width > 0 && (\n          <p className=\"text-muted-foreground text-xs\">\n            {meta.width} &times; {meta.height}px\n          </p>\n        )}\n        {meta?.size && (\n          <p className=\"text-muted-foreground text-xs\">{meta.size}</p>\n        )}\n        <div className=\"mt-2\">\n          <Button\n            variant=\"outline\"\n            size=\"sm\"\n            onClick={onReplace}\n            className=\"gap-1.5\"\n          >\n            <ImageIcon className=\"size-3.5\" />\n            {t(\"media_select_new_image\")}\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nfunction CurrentMediaPreview({\n  mediaItem,\n  pendingFileUrl,\n  pendingKind,\n}: {\n  mediaItem: {\n    kind?: string | null;\n    content_format?: string | null;\n    image_url?: string | null;\n    video_url?: string | null;\n    pdf_url?: string | null;\n    title?: string | null;\n  };\n  pendingFileUrl?: string | null;\n  pendingKind?: string | null;\n}) {\n  const { t } = useShareablesTranslation();\n  const effectiveKind =\n    pendingKind ?? mediaItem.content_format ?? mediaItem.kind;\n  const effectiveVideoUrl =\n    pendingKind === \"video\" ? pendingFileUrl : mediaItem.video_url;\n  const effectiveImageUrl =\n    pendingKind === \"image\"\n      ? pendingFileUrl\n      : pendingKind\n        ? null\n        : mediaItem.image_url;\n  const effectivePdfUrl =\n    pendingKind === \"pdf\" ? pendingFileUrl : mediaItem.pdf_url;\n\n  // Video: show video player (thumbnail is handled by the selector section below)\n  if (effectiveKind === \"video\" && effectiveVideoUrl) {\n    return (\n      <div className=\"relative aspect-video w-full overflow-hidden rounded-lg border bg-black\">\n        <video\n          src={effectiveVideoUrl}\n          poster={effectiveImageUrl ?? undefined}\n          controls\n          preload=\"metadata\"\n          className=\"absolute inset-0 h-full w-full object-contain\"\n        />\n      </div>\n    );\n  }\n\n  // PDF: show embedded viewer (thumbnail is handled by the selector section below)\n  if (effectiveKind === \"pdf\" && effectivePdfUrl) {\n    return (\n      <div className=\"relative w-full overflow-hidden rounded-lg border\">\n        <iframe\n          src={`${effectivePdfUrl}#view=FitH`}\n          sandbox=\"allow-same-origin\"\n          className=\"h-auto w-full\"\n          style={{ minHeight: \"50vh\" }}\n          title={mediaItem.title ?? t(\"pdf_document_title\")}\n        />\n      </div>\n    );\n  }\n\n  // Image: show the image\n  if (effectiveImageUrl) {\n    return (\n      <div className=\"relative aspect-video w-full overflow-hidden rounded-lg border\">\n        <img\n          src={effectiveImageUrl}\n          alt={mediaItem.title ?? t(\"media_alt_fallback\")}\n          className=\"absolute inset-0 h-full w-full object-cover\"\n        />\n      </div>\n    );\n  }\n\n  // No media\n  return (\n    <div className=\"border-border text-muted-foreground flex h-40 w-full flex-col items-center justify-center gap-2 rounded-lg border\">\n      <ImageIcon className=\"size-6\" />\n      <span className=\"text-sm\">{t(\"media_no_media_available\")}</span>\n    </div>\n  );\n}\n\nexport function MediaEditScreen({\n  mediaId,\n  onNavigate: _onNavigate,\n  onBack,\n}: MediaEditScreenProps): React.JSX.Element {\n  const { t, locale } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n  const api = useShareablesApi();\n  const repContext = useRepContext();\n  const queryClient = useQueryClient();\n  const {\n    navigate,\n    showToast,\n    filePickerApi,\n    readOnly,\n    mediaProductsApi,\n    searchProducts,\n    uploadThumbnail,\n  } = useShareablesUI();\n\n  // --- Form state ---\n  const [editState, setEditState] = useState<EditState>({\n    title: \"\",\n    description: \"\",\n    active: true,\n    ctaEnabled: false,\n    ctaType: \"link\",\n    ctaButtonText: \"\",\n    ctaUrl: \"\",\n    seoTitle: \"\",\n    seoDescription: \"\",\n    blockCrawler: false,\n  });\n  const [originalState, setOriginalState] = useState<EditState | null>(null);\n  // Locale captured at the moment the form was last (re)initialised. The\n  // mutation targets this — not the live `locale` from useShareablesTranslation\n  // — so a save while the user is editing in locale A but the shell has\n  // since flipped to locale B still writes A-content to A's translation row.\n  const [editingLocale, setEditingLocale] = useState<string | null>(null);\n  const [isDeleteOpen, setIsDeleteOpen] = useState(false);\n  const [isActionsOpen, setIsActionsOpen] = useState(false);\n  const [isPickerOpen, setIsPickerOpen] = useState(false);\n  const [isThumbnailPickerOpen, setIsThumbnailPickerOpen] = useState(false);\n  const [isCtaModalOpen, setIsCtaModalOpen] = useState(false);\n  const [seoExpanded, setSeoExpanded] = useState(false);\n  const [pendingMediaFile, setPendingMediaFile] =\n    useState<FilePickerResult | null>(null);\n  const [pendingThumbnail, setPendingThumbnail] = useState<string | null>(null);\n\n  // --- Data fetching ---\n  const { data: mediaResponse, isLoading } = useQuery({\n    queryKey: shareablesKeys.media.detail(Number(mediaId), repContext, locale),\n    queryFn: () => api.media.getMediaById(Number(mediaId), locale),\n  });\n\n  const mediaItem = mediaResponse?.media;\n\n  // Fetch tagged products\n  const { data: productsData, refetch: refetchProducts } = useQuery({\n    queryKey: shareablesKeys.mediaProducts.list(Number(mediaId), locale),\n    queryFn: () =>\n      mediaProductsApi?.listMediaProducts(Number(mediaId), {\n        language_iso: locale,\n      }),\n    enabled: !!mediaProductsApi,\n  });\n  const taggedProducts = productsData?.media_products ?? [];\n\n  const isDirty = useMemo(() => {\n    if (pendingMediaFile || pendingThumbnail) return true;\n    if (!originalState) return false;\n    return (\n      editState.title !== originalState.title ||\n      editState.description !== originalState.description ||\n      editState.active !== originalState.active ||\n      editState.ctaEnabled !== originalState.ctaEnabled ||\n      editState.ctaType !== originalState.ctaType ||\n      editState.ctaButtonText !== originalState.ctaButtonText ||\n      editState.ctaUrl !== originalState.ctaUrl ||\n      editState.seoTitle !== originalState.seoTitle ||\n      editState.seoDescription !== originalState.seoDescription ||\n      editState.blockCrawler !== originalState.blockCrawler\n    );\n  }, [editState, originalState, pendingMediaFile, pendingThumbnail]);\n\n  // Mirror isDirty into a ref so the init effect can read the latest\n  // dirty signal without re-firing on every keystroke (which would happen\n  // if `isDirty` were in its dep array).\n  const isDirtyRef = useRef(false);\n  isDirtyRef.current = isDirty;\n\n  // Initialise edit state once data arrives. Bail on subsequent fetches\n  // when the user has unsaved edits — otherwise switching locale via the\n  // shell LanguageSelector mid-edit would refetch and silently stomp the\n  // in-progress changes with the new locale's translation row.\n  useEffect(() => {\n    if (!mediaItem) return;\n    if (isDirtyRef.current) return;\n    const initial = buildEditState(mediaItem);\n    setEditState(initial);\n    setOriginalState(initial);\n    setEditingLocale(locale);\n  }, [mediaItem, locale]);\n\n  // --- Mutations ---\n  const { mutate: updateMedia, isPending: isSaving } = useMutation({\n    mutationFn: () =>\n      api.media.updateMedia(\n        Number(mediaId),\n        {\n          title: editState.title,\n          description: editState.description,\n          active: editState.active,\n          ...(pendingMediaFile\n            ? deriveUpdateFieldsFromResult(pendingMediaFile)\n            : {}),\n          ...(pendingThumbnail ? { thumbnail_url: pendingThumbnail } : {}),\n          settings: {\n            cta: {\n              enabled: editState.ctaEnabled,\n              type: editState.ctaType,\n              button_text: editState.ctaButtonText || undefined,\n              url:\n                editState.ctaType === \"link\"\n                  ? editState.ctaUrl || undefined\n                  : undefined,\n            },\n            seo: {\n              title: editState.seoTitle || null,\n              description: editState.seoDescription || null,\n              block_crawler: editState.blockCrawler,\n            },\n          },\n        },\n        editingLocale ?? locale,\n      ),\n    onSuccess: () => {\n      // Invalidate the entire media.all branch so every locale's cached\n      // detail entry refetches — a write against one locale can affect the\n      // default-locale view (or other consumers) in subtle ways.\n      void queryClient.invalidateQueries({\n        queryKey: shareablesKeys.media.all,\n      });\n      setOriginalState(editState);\n      setPendingMediaFile(null);\n      setPendingThumbnail(null);\n      showToast({ title: t(\"media_save_success\"), type: \"success\" });\n    },\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"media_save_error\", { message: error.message }),\n        type: \"error\",\n        error,\n      });\n    },\n  });\n\n  const { mutate: deleteMedia, isPending: isDeleting } = useMutation({\n    mutationFn: () => api.media.deleteMedia(Number(mediaId)),\n    onSuccess: () => {\n      showToast({ title: t(\"media_delete_success\"), type: \"success\" });\n      navigate(\"media\");\n    },\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"media_delete_error\", { message: error.message }),\n        type: \"error\",\n        error,\n      });\n      setIsDeleteOpen(false);\n    },\n  });\n\n  // --- Handlers ---\n  const handleSave = useCallback(() => {\n    updateMedia();\n  }, [updateMedia]);\n\n  const handleDelete = useCallback(() => {\n    deleteMedia();\n  }, [deleteMedia]);\n\n  const handleFilesSelected = useCallback((results: FilePickerResult[]) => {\n    const result = results[0];\n    if (!result) return;\n    setIsPickerOpen(false);\n    setPendingMediaFile(result);\n  }, []);\n\n  // --- File picker context ---\n  const filePickerContextValue = useMemo<FilePickerContextValue | null>(() => {\n    if (!filePickerApi) return null;\n    return {\n      toast: {\n        success: (msg: string) => showToast({ title: msg, type: \"success\" }),\n        error: (msg: string, error?: unknown) =>\n          showToast({\n            title: error instanceof Error ? `${msg}: ${error.message}` : msg,\n            type: \"error\",\n          }),\n        loading: () => \"\",\n        dismiss: () => {},\n      },\n    };\n  }, [filePickerApi, showToast]);\n\n  const displayTitle = mediaItem?.title ?? \"\";\n\n  // --- Loading / empty states ---\n  if (isLoading) {\n    return (\n      <div className=\"flex items-center justify-center py-16\">\n        <Spinner className=\"size-8\" />\n      </div>\n    );\n  }\n\n  if (!mediaItem) {\n    return (\n      <div className=\"flex flex-col items-center justify-center py-16\">\n        <p className=\"text-destructive text-sm\">{t(\"media_not_found\")}</p>\n      </div>\n    );\n  }\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  (onBack ?? (() => navigate(\"media\")))();\n                }}\n              >\n                {t(\"media_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  navigate(`media/${mediaId}`);\n                }}\n                className=\"block max-w-[40vw] truncate align-bottom md:max-w-[60ch]\"\n              >\n                {displayTitle || t(\"media_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {t(\"common_edit\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ScreenHeaderActions>\n        {readOnly || !mediaItem ? null : (\n          <div className=\"flex items-center gap-2\">\n            {isMobile ? (\n              <>\n                <Button\n                  variant=\"outline\"\n                  size=\"sm\"\n                  className=\"size-8 p-0\"\n                  aria-label={t(\"media_actions_aria\")}\n                  onClick={() => setIsActionsOpen(true)}\n                >\n                  <MoreVertical className=\"size-4\" />\n                </Button>\n                <MobileActionSheet\n                  open={isActionsOpen}\n                  onOpenChange={setIsActionsOpen}\n                  title={t(\"media_actions_aria\")}\n                  actions={[\n                    {\n                      id: \"delete\",\n                      label: t(\"common_delete\"),\n                      variant: \"destructive\",\n                      onSelect: () => setIsDeleteOpen(true),\n                    },\n                  ]}\n                />\n              </>\n            ) : (\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button variant=\"outline\" size=\"sm\" className=\"size-8 p-0\">\n                    <MoreVertical className=\"size-4\" />\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem\n                    onClick={() => setIsDeleteOpen(true)}\n                    className=\"text-destructive focus:text-destructive\"\n                  >\n                    <Trash2 className=\"mr-2 size-4\" />\n                    {t(\"common_delete\")}\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            )}\n            <Button\n              onClick={handleSave}\n              disabled={!isDirty || isSaving}\n              size=\"sm\"\n            >\n              {isSaving ? <Spinner className=\"size-4\" /> : t(\"common_save\")}\n            </Button>\n          </div>\n        )}\n      </ScreenHeaderActions>\n      <div className=\"flex flex-col gap-4 px-4 pt-4 pb-24 md:px-10 md:py-6\">\n        <div className=\"mx-auto flex w-full max-w-5xl items-center gap-3\">\n          <h1 className=\"text-foreground text-xl font-semibold break-words\">\n            {editState.title || displayTitle || t(\"media_heading\")}\n          </h1>\n        </div>\n\n        {/* Single column on mobile, 3:1 grid on desktop */}\n        <div className=\"mx-auto grid w-full max-w-5xl grid-cols-1 gap-6 md:grid-cols-[3fr_1fr]\">\n          {/* LEFT COLUMN */}\n          <div className=\"space-y-6\">\n            {/* Card 1: Media */}\n            <div className=\"border-border bg-card rounded-lg border p-4 md:p-5\">\n              <div className=\"mb-4 flex flex-wrap items-center justify-between gap-2\">\n                <h3 className=\"text-foreground text-base font-semibold\">\n                  {t(\"media_heading\")}\n                </h3>\n                <div className=\"flex flex-wrap items-center gap-2\">\n                  {!readOnly && filePickerContextValue && filePickerApi && (\n                    <Button\n                      onClick={() => setIsPickerOpen(true)}\n                      variant=\"outline\"\n                      size=\"sm\"\n                    >\n                      {t(\"media_replace_button\")}\n                    </Button>\n                  )}\n                  {!readOnly && (\n                    <Button\n                      variant=\"outline\"\n                      size=\"sm\"\n                      onClick={() => setIsCtaModalOpen(true)}\n                      className={\n                        editState.ctaEnabled\n                          ? \"border-primary text-primary\"\n                          : \"\"\n                      }\n                    >\n                      {t(\"media_cta_button_label\")}\n                      {editState.ctaEnabled ? t(\"common_on\") : t(\"common_off\")}\n                    </Button>\n                  )}\n                </div>\n              </div>\n\n              <CurrentMediaPreview\n                mediaItem={mediaItem}\n                pendingFileUrl={\n                  pendingMediaFile ? pendingMediaFile.file_url : null\n                }\n                pendingKind={\n                  pendingMediaFile\n                    ? deriveUpdateFieldsFromResult(pendingMediaFile).kind\n                    : null\n                }\n              />\n\n              {/* Thumbnail selector — video gets frame capture + upload,\n                PDF gets upload only */}\n              {(() => {\n                const pendingKind = pendingMediaFile\n                  ? deriveUpdateFieldsFromResult(pendingMediaFile).kind\n                  : null;\n                const rawContentFormat = (\n                  mediaItem as { content_format?: string | null }\n                ).content_format;\n                const effectiveKind =\n                  pendingKind ?? rawContentFormat ?? mediaItem.kind;\n                const effectiveVideoUrl =\n                  pendingKind === \"video\"\n                    ? pendingMediaFile?.file_url\n                    : mediaItem.video_url;\n\n                if (readOnly) return null;\n\n                if (effectiveKind === \"video\" && effectiveVideoUrl) {\n                  return (\n                    <div className=\"border-border mt-4 border-t pt-4\">\n                      <VideoThumbnailSelector\n                        videoUrl={effectiveVideoUrl}\n                        thumbnailUrl={pendingThumbnail ?? mediaItem.image_url}\n                        onThumbnailCaptured={async (blob) => {\n                          if (!uploadThumbnail) {\n                            showToast({\n                              title: t(\"media_thumbnail_capture_unavailable\"),\n                              type: \"error\",\n                            });\n                            return;\n                          }\n                          try {\n                            const url = await uploadThumbnail(\n                              blob,\n                              `thumbnail-${mediaId}.jpg`,\n                            );\n                            setPendingThumbnail(url);\n                          } catch (error) {\n                            showToast({\n                              title: t(\"media_thumbnail_upload_error\"),\n                              type: \"error\",\n                              error,\n                            });\n                          }\n                        }}\n                        onThumbnailSelected={() =>\n                          setIsThumbnailPickerOpen(true)\n                        }\n                      />\n                      {pendingThumbnail && (\n                        <p className=\"text-muted-foreground mt-1.5 text-xs\">\n                          {t(\"media_pending_save\")}\n                        </p>\n                      )}\n                    </div>\n                  );\n                }\n\n                if (effectiveKind === \"pdf\") {\n                  const currentThumbnail =\n                    pendingThumbnail ?? mediaItem.image_url;\n                  return (\n                    <div className=\"border-border mt-4 border-t pt-4\">\n                      <div className=\"space-y-3\">\n                        <label className=\"text-foreground mb-1.5 block text-sm font-medium\">\n                          {t(\"media_thumbnail_label\")}\n                        </label>\n                        {currentThumbnail ? (\n                          <ThumbnailWithMeta\n                            src={currentThumbnail}\n                            onReplace={() => setIsThumbnailPickerOpen(true)}\n                          />\n                        ) : (\n                          <div className=\"flex items-center gap-4\">\n                            <div className=\"bg-muted flex h-28 w-48 shrink-0 items-center justify-center rounded-md border\">\n                              <ImageIcon className=\"text-muted-foreground size-8\" />\n                            </div>\n                            <div className=\"min-w-0 flex-1\">\n                              <p className=\"text-muted-foreground mb-2 text-sm\">\n                                {t(\"media_no_thumbnail\")}\n                              </p>\n                              <Button\n                                variant=\"outline\"\n                                size=\"sm\"\n                                onClick={() => setIsThumbnailPickerOpen(true)}\n                                className=\"gap-1.5\"\n                              >\n                                <ImageIcon className=\"size-3.5\" />\n                                {t(\"media_select_new_image\")}\n                              </Button>\n                            </div>\n                          </div>\n                        )}\n                      </div>\n                      {pendingThumbnail && (\n                        <p className=\"text-muted-foreground mt-1.5 text-xs\">\n                          {t(\"media_pending_save\")}\n                        </p>\n                      )}\n                    </div>\n                  );\n                }\n\n                return null;\n              })()}\n\n              {/* CTA configured via modal */}\n            </div>\n\n            {/* Card 2: Media Details */}\n            <div className=\"border-border bg-card rounded-lg border p-4 md:p-5\">\n              <h3 className=\"text-foreground mb-4 text-base font-semibold\">\n                {t(\"media_details_heading\")}\n              </h3>\n              <div className=\"flex flex-col gap-4\">\n                <div className=\"flex flex-col gap-1.5\">\n                  <Label htmlFor=\"media-title\">\n                    {t(\"common_title_label\")}{\" \"}\n                    <span className=\"text-destructive\">*</span>\n                  </Label>\n                  {readOnly ? (\n                    <p className=\"text-foreground text-sm\">{displayTitle}</p>\n                  ) : (\n                    <Input\n                      id=\"media-title\"\n                      value={editState.title}\n                      onChange={(e) =>\n                        setEditState((s) => ({ ...s, title: e.target.value }))\n                      }\n                      placeholder={t(\"media_title_placeholder\")}\n                    />\n                  )}\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <Label>{t(\"common_description_label\")}</Label>\n                  {readOnly ? (\n                    // Description is stored as HTML from RichTextEditor, so\n                    // strip tags before rendering as plain text — otherwise\n                    // raw <p>/<strong>/etc. would show as visible characters.\n                    <p className=\"text-foreground/70 text-sm leading-relaxed\">\n                      {stripTags(editState.description)}\n                    </p>\n                  ) : (\n                    <RichTextEditor\n                      value={editState.description}\n                      onChange={(val) =>\n                        setEditState((s) => ({ ...s, description: val }))\n                      }\n                      placeholder={t(\"common_start_writing_placeholder\")}\n                    />\n                  )}\n                </div>\n              </div>\n            </div>\n\n            {/* Card 3: Tagged Products */}\n            <MediaProductTagging\n              products={taggedProducts}\n              onAddProduct={async (productId) => {\n                if (!mediaProductsApi) return;\n                try {\n                  await mediaProductsApi.addMediaProduct(Number(mediaId), {\n                    id: productId,\n                  });\n                  await refetchProducts();\n                } catch (error) {\n                  showToast({\n                    title: t(\"media_edit_add_product_failed\", {\n                      message:\n                        error instanceof Error\n                          ? error.message\n                          : t(\"error_unknown\"),\n                    }),\n                    type: \"error\",\n                    error,\n                  });\n                }\n              }}\n              onRemoveProduct={async (productId) => {\n                if (!mediaProductsApi) return;\n                try {\n                  await mediaProductsApi.removeMediaProduct(\n                    Number(mediaId),\n                    productId,\n                  );\n                  await refetchProducts();\n                } catch (error) {\n                  showToast({\n                    title: t(\"media_edit_remove_product_failed\", {\n                      message:\n                        error instanceof Error\n                          ? error.message\n                          : t(\"error_unknown\"),\n                    }),\n                    type: \"error\",\n                    error,\n                  });\n                }\n              }}\n              onSearchProducts={\n                searchProducts ??\n                (async () => ({ products: [], nextCursor: null }))\n              }\n              disabled={readOnly || !mediaProductsApi}\n            />\n\n            {/* Delete is in the header dropdown menu */}\n          </div>\n\n          {/* RIGHT COLUMN */}\n          <div className=\"space-y-6\">\n            {/* SEO And Link Sharing */}\n            <div className=\"border-border bg-card rounded-lg border p-4 md:p-5\">\n              <div className=\"mb-4 flex items-center justify-between\">\n                <h3 className=\"text-foreground text-base font-semibold\">\n                  {t(\"seo_heading\")}\n                </h3>\n                {!readOnly && (\n                  <Button\n                    variant=\"ghost\"\n                    size=\"sm\"\n                    onClick={() => setSeoExpanded((prev) => !prev)}\n                  >\n                    {seoExpanded ? t(\"common_done\") : t(\"common_edit\")}\n                  </Button>\n                )}\n              </div>\n\n              {/* SEO preview card. Thumbnail reflects pending media replacement\n                (new image from file picker, or captured thumbnail) so it\n                stays consistent with CurrentMediaPreview before Save. */}\n              {(() => {\n                const pendingFields = pendingMediaFile\n                  ? deriveUpdateFieldsFromResult(pendingMediaFile)\n                  : null;\n                const seoThumbnailUrl =\n                  pendingFields?.image_url ??\n                  pendingThumbnail ??\n                  mediaItem?.image_url;\n                return (\n                  <div className=\"bg-muted/40 border-border mb-4 rounded-md border p-3\">\n                    <div className=\"mb-2 flex items-center gap-2\">\n                      {seoThumbnailUrl ? (\n                        <img\n                          src={seoThumbnailUrl}\n                          alt={t(\"media_edit_seo_preview_alt\")}\n                          className=\"size-8 shrink-0 rounded object-cover\"\n                        />\n                      ) : (\n                        <div className=\"bg-muted flex size-8 items-center justify-center rounded\">\n                          <ImageIcon className=\"text-muted-foreground size-4\" />\n                        </div>\n                      )}\n                      <div className=\"min-w-0 flex-1\">\n                        <p className=\"text-foreground truncate text-xs font-medium\">\n                          {editState.seoTitle ||\n                            displayTitle ||\n                            t(\"seo_preview_title_fallback\")}\n                        </p>\n                        <p className=\"text-muted-foreground truncate text-xs\">\n                          {mediaItem?.preview_link ??\n                            mediaItem?.canonical_url ??\n                            t(\"seo_preview_url_fallback\")}\n                        </p>\n                      </div>\n                    </div>\n                    {editState.seoDescription && (\n                      <p className=\"text-muted-foreground line-clamp-2 text-xs\">\n                        {editState.seoDescription}\n                      </p>\n                    )}\n                  </div>\n                );\n              })()}\n\n              {seoExpanded && (\n                <div className=\"flex flex-col gap-4\">\n                  <div className=\"flex flex-col gap-1.5\">\n                    <Label htmlFor=\"seo-title\">{t(\"seo_title_label\")}</Label>\n                    <Input\n                      id=\"seo-title\"\n                      value={editState.seoTitle}\n                      onChange={(e) =>\n                        setEditState((s) => ({\n                          ...s,\n                          seoTitle: e.target.value,\n                        }))\n                      }\n                      placeholder={t(\"seo_title_placeholder\")}\n                    />\n                  </div>\n                  <div className=\"flex flex-col gap-1.5\">\n                    <Label htmlFor=\"seo-description\">\n                      {t(\"seo_description_label\")}\n                    </Label>\n                    <Textarea\n                      id=\"seo-description\"\n                      value={editState.seoDescription}\n                      onChange={(e) =>\n                        setEditState((s) => ({\n                          ...s,\n                          seoDescription: e.target.value,\n                        }))\n                      }\n                      placeholder={t(\"seo_description_placeholder\")}\n                      rows={3}\n                    />\n                  </div>\n                  <div className=\"flex items-center justify-between gap-3\">\n                    <div className=\"flex flex-col gap-0.5\">\n                      <span className=\"text-foreground text-sm font-medium\">\n                        {t(\"seo_block_crawlers_label\")}\n                      </span>\n                      <span className=\"text-muted-foreground text-xs\">\n                        {t(\"seo_block_crawlers_description\")}\n                      </span>\n                    </div>\n                    <Switch\n                      checked={editState.blockCrawler}\n                      onCheckedChange={(checked) =>\n                        setEditState((s) => ({ ...s, blockCrawler: checked }))\n                      }\n                      aria-label={t(\"seo_block_crawlers_aria\")}\n                    />\n                  </div>\n                </div>\n              )}\n            </div>\n\n            {/* Status and Countries default — hidden, defaults apply */}\n          </div>\n        </div>\n\n        {/* Delete confirmation */}\n        <ResponsiveDialog\n          open={isDeleteOpen}\n          onOpenChange={setIsDeleteOpen}\n          title={t(\"media_delete_dialog_title\")}\n          description={t(\"media_delete_dialog_description\", {\n            title: mediaItem?.title ?? \"\",\n          })}\n          presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n          role=\"alertdialog\"\n          size=\"compact\"\n        >\n          <DialogFooter>\n            <Button\n              variant=\"secondary\"\n              disabled={isDeleting}\n              onClick={() => setIsDeleteOpen(false)}\n            >\n              {t(\"common_cancel\")}\n            </Button>\n            <Button\n              variant=\"destructive\"\n              onClick={handleDelete}\n              disabled={isDeleting}\n            >\n              {isDeleting ? t(\"common_deleting\") : t(\"common_delete\")}\n            </Button>\n          </DialogFooter>\n        </ResponsiveDialog>\n\n        {/* CTA Modal */}\n        <CtaModal\n          open={isCtaModalOpen}\n          onOpenChange={setIsCtaModalOpen}\n          ctaEnabled={editState.ctaEnabled}\n          ctaType={editState.ctaType}\n          ctaButtonText={editState.ctaButtonText}\n          ctaUrl={editState.ctaUrl}\n          onDone={(ctaState) => {\n            setEditState((s) => ({\n              ...s,\n              ctaEnabled: ctaState.enabled,\n              ctaType: ctaState.type,\n              ctaButtonText: ctaState.buttonText,\n              ctaUrl: ctaState.url,\n            }));\n          }}\n        />\n\n        {/* Replace Media file picker */}\n        {filePickerContextValue && filePickerApi && (\n          <FilePickerApiProvider api={filePickerApi}>\n            <FilePickerProvider value={filePickerContextValue}>\n              <FilePicker\n                open={isPickerOpen}\n                onFilesSelected={handleFilesSelected}\n                onClose={() => setIsPickerOpen(false)}\n                config={{\n                  maxFiles: 1,\n                  allowedMethods: [\"dam\", \"upload\", \"url\"],\n                }}\n              />\n            </FilePickerProvider>\n          </FilePickerApiProvider>\n        )}\n\n        {/* Thumbnail image file picker */}\n        {filePickerContextValue && filePickerApi && (\n          <FilePickerApiProvider api={filePickerApi}>\n            <FilePickerProvider value={filePickerContextValue}>\n              <FilePicker\n                open={isThumbnailPickerOpen}\n                onFilesSelected={(results) => {\n                  const result = results[0];\n                  if (result) {\n                    setPendingThumbnail(result.file_url);\n                  }\n                  setIsThumbnailPickerOpen(false);\n                }}\n                onClose={() => setIsThumbnailPickerOpen(false)}\n                config={{\n                  maxFiles: 1,\n                  allowedMethods: [\"dam\", \"upload\", \"url\"],\n                }}\n              />\n            </FilePickerProvider>\n          </FilePickerApiProvider>\n        )}\n      </div>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useCallback, useMemo } from \"react\";\nimport {\n  useShareablesUser,\n  useCreateMediaMutation,\n} from \"@fluid-app/shareables-core\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Button,\n  Input,\n  Label,\n  Spinner,\n  Switch,\n  Textarea,\n} from \"@fluid-app/ui-primitives\";\nimport { ImageIcon, Upload, Video, FileText } from \"lucide-react\";\nimport {\n  FilePicker,\n  FilePickerApiProvider,\n  FilePickerProvider,\n  type FilePickerContextValue,\n} from \"@fluid-app/file-picker-ui\";\nimport type { FilePickerResult } from \"@fluid-app/file-picker-core\";\nimport {\n  ScreenHeaderActions,\n  ScreenHeaderBreadcrumbs,\n} from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport { RichTextEditor } from \"../playlists/RichTextEditor\";\nimport { CtaModal } from \"../media/CtaModal\";\n\nexport interface MediaCreateScreenProps {\n  onNavigate?: (screen: string, detailId?: string) => void;\n  onBack?: () => void;\n}\n\ntype CtaType = \"link\" | \"cart\" | \"email\" | \"phone\";\n\nfunction deriveMediaType(mimeType: string): \"image\" | \"video\" | \"pdf\" {\n  if (mimeType.startsWith(\"video/\")) return \"video\";\n  if (mimeType === \"application/pdf\") return \"pdf\";\n  return \"image\";\n}\n\nfunction FilePreview({\n  result,\n  mediaType,\n}: {\n  result: FilePickerResult;\n  mediaType: \"image\" | \"video\" | \"pdf\";\n}) {\n  const { t } = useShareablesTranslation();\n  const thumbnailSrc =\n    mediaType === \"image\" ? result.file_url : result.thumbnail_url;\n\n  if (thumbnailSrc) {\n    const Icon =\n      mediaType === \"video\" ? Video : mediaType === \"pdf\" ? FileText : null;\n    return (\n      <div className=\"relative aspect-video w-full overflow-hidden rounded-lg border\">\n        <img\n          src={thumbnailSrc}\n          alt={result.metadata.file_name}\n          className=\"absolute inset-0 h-full w-full object-cover\"\n        />\n        {Icon && (\n          <div className=\"absolute bottom-2 left-2 flex items-center gap-1.5 rounded-md bg-black/60 px-2 py-1 text-white\">\n            <Icon className=\"size-3.5\" />\n            <span className=\"text-xs font-medium\">\n              {mediaType === \"video\"\n                ? t(\"media_type_video\")\n                : t(\"media_type_pdf\")}\n            </span>\n          </div>\n        )}\n      </div>\n    );\n  }\n\n  const Icon = mediaType === \"video\" ? Video : FileText;\n  return (\n    <div className=\"flex items-center gap-3 rounded-lg border p-4\">\n      <Icon className=\"text-muted-foreground size-8 shrink-0\" />\n      <div className=\"min-w-0 flex-1\">\n        <p className=\"text-foreground truncate text-sm font-medium\">\n          {result.metadata.file_name}\n        </p>\n        <p className=\"text-muted-foreground text-xs\">\n          {result.metadata.mime_type}\n        </p>\n      </div>\n    </div>\n  );\n}\n\nexport function MediaCreateScreen({\n  onNavigate,\n  onBack,\n}: MediaCreateScreenProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const { navigate, showToast, filePickerApi } = useShareablesUI();\n  const user = useShareablesUser();\n\n  const [title, setTitle] = useState(\"\");\n  const [description, setDescription] = useState(\"\");\n  const [active] = useState(true);\n  const [selectedResult, setSelectedResult] = useState<FilePickerResult | null>(\n    null,\n  );\n  const [isPickerOpen, setIsPickerOpen] = useState(false);\n  const [isCtaModalOpen, setIsCtaModalOpen] = useState(false);\n\n  // CTA state\n  const [ctaEnabled, setCtaEnabled] = useState(false);\n  const [ctaType, setCtaType] = useState<CtaType>(\"link\");\n  const [ctaButtonText, setCtaButtonText] = useState(\"\");\n  const [ctaUrl, setCtaUrl] = useState(\"\");\n\n  // SEO state\n  const [seoExpanded, setSeoExpanded] = useState(false);\n  const [seoTitle, setSeoTitle] = useState(\"\");\n  const [seoDescription, setSeoDescription] = useState(\"\");\n  const [seoBlockCrawler, setSeoBlockCrawler] = useState(false);\n\n  const mediaType = selectedResult\n    ? deriveMediaType(selectedResult.metadata.mime_type)\n    : null;\n\n  const { mutate: createMedia, isPending: isCreating } = useCreateMediaMutation(\n    {\n      onSuccess: (newMedia: { id: number }) => {\n        showToast({ title: t(\"media_create_success\"), type: \"success\" });\n        onNavigate?.(\"media\", String(newMedia.id));\n      },\n      onError: (error: Error) => {\n        showToast({\n          title: t(\"media_create_error\", { message: error.message }),\n          type: \"error\",\n        });\n      },\n    },\n  );\n\n  const handleSave = useCallback(() => {\n    if (!title.trim()) {\n      showToast({ title: t(\"media_title_required\"), type: \"warning\" });\n      return;\n    }\n    if (!selectedResult) {\n      showToast({ title: t(\"media_file_required\"), type: \"warning\" });\n      return;\n    }\n\n    const mt = deriveMediaType(selectedResult.metadata.mime_type);\n\n    createMedia({\n      title: title.trim(),\n      description: description,\n      active,\n      media_type: \"share\",\n      kind: mt,\n      image_url: mt === \"image\" ? selectedResult.file_url : undefined,\n      video_url: mt === \"video\" ? selectedResult.file_url : undefined,\n      pdf_url: mt === \"pdf\" ? selectedResult.file_url : undefined,\n      user_id: user?.id,\n      settings: {\n        cta: ctaEnabled\n          ? {\n              enabled: true,\n              type: ctaType,\n              button_text: ctaButtonText || null,\n              url: ctaType === \"link\" ? ctaUrl || null : null,\n            }\n          : { enabled: false },\n        seo: {\n          title: seoTitle || null,\n          description: seoDescription || null,\n          block_crawler: seoBlockCrawler,\n        },\n      },\n    });\n  }, [\n    t,\n    title,\n    description,\n    active,\n    selectedResult,\n    user,\n    createMedia,\n    showToast,\n    ctaEnabled,\n    ctaType,\n    ctaButtonText,\n    ctaUrl,\n    seoTitle,\n    seoDescription,\n    seoBlockCrawler,\n  ]);\n\n  const handleFilesSelected = useCallback(\n    (results: FilePickerResult[]) => {\n      const result = results[0];\n      if (!result) return;\n      setSelectedResult(result);\n      setIsPickerOpen(false);\n      if (!title.trim()) {\n        setTitle(result.metadata.file_name.replace(/\\.[^/.]+$/, \"\"));\n      }\n    },\n    [title],\n  );\n\n  const filePickerContextValue = useMemo<FilePickerContextValue | null>(() => {\n    if (!filePickerApi) return null;\n    return {\n      toast: {\n        success: (msg: string) => showToast({ title: msg, type: \"success\" }),\n        error: (msg: string, error?: unknown) =>\n          showToast({\n            title: error instanceof Error ? `${msg}: ${error.message}` : msg,\n            type: \"error\",\n          }),\n        loading: () => \"\",\n        dismiss: () => {},\n      },\n    };\n  }, [filePickerApi, showToast]);\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  (onBack ?? (() => navigate(\"media\")))();\n                }}\n              >\n                {t(\"media_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {t(\"media_create_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ScreenHeaderActions>\n        <Button onClick={handleSave} disabled={isCreating} size=\"sm\">\n          {isCreating ? <Spinner className=\"size-4\" /> : t(\"common_save\")}\n        </Button>\n      </ScreenHeaderActions>\n      <div className=\"flex flex-col gap-4 px-4 py-4 md:px-10 md:py-6\">\n        {/* Title display area */}\n        <div className=\"mx-auto flex w-full max-w-5xl items-center gap-3\">\n          <h1 className=\"text-foreground text-xl font-semibold\">\n            {title.trim() || t(\"media_new_title\")}\n          </h1>\n        </div>\n\n        {/* Two-column grid */}\n        <div className=\"mx-auto grid w-full max-w-5xl gap-6 md:grid-cols-[3fr_1fr]\">\n          {/* LEFT COLUMN */}\n          <div className=\"space-y-6\">\n            {/* Card 1: Media */}\n            <div className=\"border-border bg-card rounded-lg border p-5\">\n              <div className=\"mb-4 flex items-center justify-between\">\n                <h3 className=\"text-foreground text-base font-semibold\">\n                  {t(\"media_heading\")}\n                </h3>\n                <div className=\"flex items-center gap-2\">\n                  <Button\n                    onClick={() => setIsPickerOpen(true)}\n                    variant=\"outline\"\n                    size=\"sm\"\n                    disabled={!filePickerApi}\n                  >\n                    {t(\"media_select_button\")}\n                  </Button>\n                  <Button\n                    variant=\"outline\"\n                    size=\"sm\"\n                    onClick={() => setIsCtaModalOpen(true)}\n                    className={ctaEnabled ? \"border-primary text-primary\" : \"\"}\n                  >\n                    {t(\"media_cta_button_label\")}\n                    {ctaEnabled ? t(\"common_on\") : t(\"common_off\")}\n                  </Button>\n                </div>\n              </div>\n\n              {selectedResult && mediaType ? (\n                <div className=\"flex flex-col gap-3\">\n                  <FilePreview result={selectedResult} mediaType={mediaType} />\n                  <Button\n                    onClick={() => setIsPickerOpen(true)}\n                    variant=\"outline\"\n                    size=\"sm\"\n                    className=\"w-fit\"\n                  >\n                    {t(\"common_replace\")}\n                  </Button>\n                </div>\n              ) : (\n                <button\n                  type=\"button\"\n                  onClick={() => setIsPickerOpen(true)}\n                  disabled={!filePickerApi}\n                  className=\"border-border text-muted-foreground hover:bg-muted/30 flex h-40 w-full flex-col items-center justify-center gap-2 rounded-lg border border-dashed transition-colors disabled:cursor-not-allowed disabled:opacity-50\"\n                >\n                  <Upload className=\"size-6\" />\n                  <span className=\"text-sm\">\n                    {t(\"media_upload_placeholder\")}\n                  </span>\n                </button>\n              )}\n\n              {/* CTA configured via modal */}\n            </div>\n\n            {/* Card 2: Media Details */}\n            <div className=\"border-border bg-card rounded-lg border p-5\">\n              <h3 className=\"text-foreground mb-4 text-base font-semibold\">\n                {t(\"media_details_heading\")}\n              </h3>\n              <div className=\"flex flex-col gap-4\">\n                <div className=\"flex flex-col gap-1.5\">\n                  <Label htmlFor=\"media-title\">\n                    {t(\"common_title_label\")}{\" \"}\n                    <span className=\"text-destructive\">*</span>\n                  </Label>\n                  <Input\n                    id=\"media-title\"\n                    value={title}\n                    onChange={(e) => setTitle(e.target.value)}\n                    placeholder={t(\"media_title_placeholder\")}\n                    required\n                  />\n                </div>\n                <div className=\"flex flex-col gap-1.5\">\n                  <Label>{t(\"common_description_label\")}</Label>\n                  <RichTextEditor\n                    value={description}\n                    onChange={setDescription}\n                    placeholder={t(\"common_start_writing_placeholder\")}\n                  />\n                </div>\n              </div>\n            </div>\n          </div>\n\n          {/* RIGHT COLUMN */}\n          <div className=\"space-y-6\">\n            {/* SEO And Link Sharing */}\n            <div className=\"border-border bg-card rounded-lg border p-5\">\n              <div className=\"mb-4 flex items-center justify-between\">\n                <h3 className=\"text-foreground text-base font-semibold\">\n                  {t(\"seo_heading\")}\n                </h3>\n                <Button\n                  variant=\"ghost\"\n                  size=\"sm\"\n                  onClick={() => setSeoExpanded((prev) => !prev)}\n                >\n                  {seoExpanded ? t(\"common_done\") : t(\"common_edit\")}\n                </Button>\n              </div>\n\n              {/* SEO preview card */}\n              <div className=\"bg-muted/40 border-border mb-4 rounded-md border p-3\">\n                <div className=\"mb-2 flex items-center gap-2\">\n                  <div className=\"bg-muted flex size-8 items-center justify-center rounded\">\n                    <ImageIcon className=\"text-muted-foreground size-4\" />\n                  </div>\n                  <div className=\"min-w-0 flex-1\">\n                    <p className=\"text-foreground truncate text-xs font-medium\">\n                      {seoTitle || t(\"seo_preview_title_fallback\")}\n                    </p>\n                    <p className=\"text-muted-foreground truncate text-xs\">\n                      {t(\"seo_preview_url_fallback\")}\n                    </p>\n                  </div>\n                </div>\n                {seoDescription && (\n                  <p className=\"text-muted-foreground line-clamp-2 text-xs\">\n                    {seoDescription}\n                  </p>\n                )}\n              </div>\n\n              {seoExpanded && (\n                <div className=\"flex flex-col gap-4\">\n                  <div className=\"flex flex-col gap-1.5\">\n                    <Label htmlFor=\"seo-title\">{t(\"seo_title_label\")}</Label>\n                    <Input\n                      id=\"seo-title\"\n                      value={seoTitle}\n                      onChange={(e) => setSeoTitle(e.target.value)}\n                      placeholder={t(\"seo_title_placeholder\")}\n                    />\n                  </div>\n                  <div className=\"flex flex-col gap-1.5\">\n                    <Label htmlFor=\"seo-description\">\n                      {t(\"seo_description_label\")}\n                    </Label>\n                    <Textarea\n                      id=\"seo-description\"\n                      value={seoDescription}\n                      onChange={(e) => setSeoDescription(e.target.value)}\n                      placeholder={t(\"seo_description_placeholder\")}\n                      rows={3}\n                    />\n                  </div>\n                  <div className=\"flex items-center justify-between gap-3\">\n                    <div className=\"flex flex-col gap-0.5\">\n                      <span className=\"text-foreground text-sm font-medium\">\n                        {t(\"seo_block_crawlers_label\")}\n                      </span>\n                      <span className=\"text-muted-foreground text-xs\">\n                        {t(\"seo_block_crawlers_description\")}\n                      </span>\n                    </div>\n                    <Switch\n                      checked={seoBlockCrawler}\n                      onCheckedChange={setSeoBlockCrawler}\n                      aria-label={t(\"seo_block_crawlers_aria\")}\n                    />\n                  </div>\n                </div>\n              )}\n            </div>\n\n            {/* Status defaults to active, countries default to all — hidden from create UI */}\n          </div>\n        </div>\n\n        {/* CTA Modal */}\n        <CtaModal\n          open={isCtaModalOpen}\n          onOpenChange={setIsCtaModalOpen}\n          ctaEnabled={ctaEnabled}\n          ctaType={ctaType}\n          ctaButtonText={ctaButtonText}\n          ctaUrl={ctaUrl}\n          onDone={(ctaState) => {\n            setCtaEnabled(ctaState.enabled);\n            setCtaType(ctaState.type);\n            setCtaButtonText(ctaState.buttonText);\n            setCtaUrl(ctaState.url);\n          }}\n        />\n\n        {/* File Picker Dialog */}\n        {filePickerContextValue && filePickerApi && (\n          <FilePickerApiProvider api={filePickerApi}>\n            <FilePickerProvider value={filePickerContextValue}>\n              <FilePicker\n                open={isPickerOpen}\n                onFilesSelected={handleFilesSelected}\n                onClose={() => setIsPickerOpen(false)}\n                config={{\n                  maxFiles: 1,\n                  allowedMethods: [\"dam\", \"upload\", \"url\"],\n                }}\n              />\n            </FilePickerProvider>\n          </FilePickerApiProvider>\n        )}\n      </div>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState } from \"react\";\nimport {\n  Badge,\n  Checkbox,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n  cn,\n} from \"@fluid-app/ui-primitives\";\nimport { Heart, MoreVertical, Pencil, Trash2 } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { useShareablesUI, useRenderImage } from \"../../context\";\n\nexport interface PlaylistCardProps {\n  title: string;\n  imageUrl?: string | null;\n  href: string;\n  itemCount: number;\n  isFavorited?: boolean;\n  isSelectable?: boolean;\n  isSelected?: boolean;\n  canEdit?: boolean;\n  onSelectionChange?: (selected: boolean) => void;\n  onToggleFavorite?: () => void;\n  onEdit?: () => void;\n  onDelete?: () => void;\n}\n\nconst DEFAULT_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png\";\n\nexport function PlaylistCard({\n  title,\n  imageUrl,\n  href,\n  itemCount,\n  isFavorited = false,\n  isSelectable = false,\n  isSelected = false,\n  canEdit = false,\n  onSelectionChange,\n  onToggleFavorite,\n  onEdit,\n  onDelete,\n}: PlaylistCardProps): React.JSX.Element {\n  const { navigate } = useShareablesUI();\n  const { t } = useShareablesTranslation();\n  const renderImage = useRenderImage();\n  const [imgError, setImgError] = useState(false);\n  const [isActionsOpen, setIsActionsOpen] = useState(false);\n  const isMobile = useIsMobile();\n\n  const hasStack = itemCount > 1;\n  const badgeText =\n    itemCount === 1\n      ? t(\"playlist_item_count_one\", { count: \"1\" })\n      : t(\"playlist_item_count_other\", { count: String(itemCount) });\n\n  return (\n    <button\n      type=\"button\"\n      onClick={() => navigate(href)}\n      className=\"group block w-full cursor-pointer text-left\"\n    >\n      {/* Stack effect container */}\n      <div className=\"relative\">\n        {/* Stack layers */}\n        {hasStack && (\n          <>\n            <div\n              className=\"bg-muted absolute -top-2 right-2 left-2 z-0 h-full rounded-lg shadow-sm transition-transform duration-300 ease-out\"\n              style={{\n                transform: isSelected ? \"rotate(0deg)\" : \"rotate(-4deg)\",\n              }}\n            />\n            <div\n              className=\"bg-muted absolute -top-1 right-1 left-1 z-0 h-full rounded-lg shadow-sm transition-transform duration-300 ease-out\"\n              style={{\n                transform: isSelected ? \"rotate(0deg)\" : \"rotate(7deg)\",\n              }}\n            />\n          </>\n        )}\n\n        {/* Main card */}\n        <div className=\"bg-background relative z-10 rounded-lg p-1 shadow-md\">\n          <div className=\"bg-muted relative aspect-square overflow-hidden rounded-lg\">\n            {renderImage({\n              src: imgError ? DEFAULT_IMAGE : imageUrl || DEFAULT_IMAGE,\n              alt: title,\n              fill: true,\n              className:\n                \"object-cover transition-transform group-hover:scale-105\",\n              onError: () => setImgError(true),\n            })}\n\n            {/* Selection checkbox */}\n            {isSelectable && (\n              <div\n                className={cn(\n                  \"absolute top-2 left-2 z-10 transition-opacity\",\n                  isSelected\n                    ? \"opacity-100\"\n                    : \"opacity-0 group-hover:opacity-100\",\n                )}\n                onClick={(e) => {\n                  e.stopPropagation();\n                }}\n              >\n                <Checkbox\n                  checked={isSelected}\n                  onCheckedChange={() => onSelectionChange?.(!isSelected)}\n                />\n              </div>\n            )}\n\n            {/* Context menu */}\n            {(onToggleFavorite || canEdit) && (\n              <div\n                className={cn(\n                  \"absolute top-2 right-2 z-20 transition-opacity\",\n                  isMobile\n                    ? \"opacity-100\"\n                    : \"opacity-0 group-hover:opacity-100\",\n                )}\n              >\n                {isMobile ? (\n                  <>\n                    <button\n                      type=\"button\"\n                      onClick={(event) => {\n                        event.stopPropagation();\n                        setIsActionsOpen(true);\n                      }}\n                      className=\"bg-background/90 hover:bg-background flex size-8 items-center justify-center rounded-lg shadow-md backdrop-blur-sm transition-all\"\n                      aria-label={t(\"common_more_options_aria\")}\n                    >\n                      <MoreVertical className=\"text-foreground size-4\" />\n                    </button>\n                    <MobileActionSheet\n                      open={isActionsOpen}\n                      onOpenChange={setIsActionsOpen}\n                      title={t(\"common_more_options_aria\")}\n                      actions={[\n                        ...(onToggleFavorite\n                          ? [\n                              {\n                                id: \"favorite\",\n                                label: isFavorited\n                                  ? t(\"common_unfavorite\")\n                                  : t(\"common_favorite\"),\n                                onSelect: onToggleFavorite,\n                              },\n                            ]\n                          : []),\n                        ...(canEdit && onEdit\n                          ? [\n                              {\n                                id: \"edit\",\n                                label: t(\"common_edit\"),\n                                onSelect: onEdit,\n                              },\n                            ]\n                          : []),\n                        ...(canEdit && onDelete\n                          ? [\n                              {\n                                id: \"delete\",\n                                label: t(\"common_delete\"),\n                                onSelect: onDelete,\n                                variant: \"destructive\" as const,\n                              },\n                            ]\n                          : []),\n                      ]}\n                    />\n                  </>\n                ) : (\n                  <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                      <button\n                        type=\"button\"\n                        onClick={(e) => e.stopPropagation()}\n                        className=\"bg-background/90 hover:bg-background flex size-8 items-center justify-center rounded-lg shadow-md backdrop-blur-sm transition-all\"\n                        aria-label={t(\"common_more_options_aria\")}\n                      >\n                        <MoreVertical className=\"text-foreground size-4\" />\n                      </button>\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent\n                      align=\"end\"\n                      onClick={(e) => e.stopPropagation()}\n                    >\n                      {onToggleFavorite && (\n                        <DropdownMenuItem onClick={onToggleFavorite}>\n                          <Heart\n                            className={cn(\n                              \"mr-2 h-4 w-4\",\n                              isFavorited && \"text-destructive fill-current\",\n                            )}\n                          />\n                          {isFavorited\n                            ? t(\"common_unfavorite\")\n                            : t(\"common_favorite\")}\n                        </DropdownMenuItem>\n                      )}\n                      {canEdit && onEdit && (\n                        <DropdownMenuItem onClick={onEdit}>\n                          <Pencil className=\"mr-2 size-4\" />\n                          {t(\"common_edit\")}\n                        </DropdownMenuItem>\n                      )}\n                      {canEdit && onDelete && (\n                        <>\n                          <DropdownMenuSeparator />\n                          <DropdownMenuItem\n                            variant=\"destructive\"\n                            onClick={onDelete}\n                          >\n                            <Trash2 className=\"mr-2 size-4\" />\n                            {t(\"common_delete\")}\n                          </DropdownMenuItem>\n                        </>\n                      )}\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                )}\n              </div>\n            )}\n\n            {/* Radial gradient behind heart for visibility */}\n            {onToggleFavorite && (\n              <div className=\"pointer-events-none absolute -bottom-8 -left-8 z-9 size-24 rounded-full bg-[#00000020] blur-xl\" />\n            )}\n\n            {/* Favorite heart */}\n            {onToggleFavorite && (\n              <button\n                type=\"button\"\n                className=\"absolute bottom-3 left-3 z-10 cursor-pointer transition-transform hover:scale-110\"\n                onClick={(e) => {\n                  e.stopPropagation();\n                  onToggleFavorite();\n                }}\n                aria-label={\n                  isFavorited ? t(\"common_unfavorite\") : t(\"common_favorite\")\n                }\n              >\n                <Heart\n                  className={cn(\n                    \"h-6 w-6 drop-shadow-lg transition-all\",\n                    isFavorited\n                      ? \"fill-destructive text-destructive\"\n                      : \"text-[#ffffff]\",\n                  )}\n                />\n              </button>\n            )}\n\n            {/* Item count badge */}\n            <div className=\"absolute right-2 bottom-2\">\n              <Badge\n                className=\"bg-foreground text-background shadow-lg backdrop-blur-sm\"\n                variant=\"secondary\"\n              >\n                {badgeText}\n              </Badge>\n            </div>\n          </div>\n\n          {/* Title */}\n          <div className=\"px-2 pt-2 pb-4\">\n            <h3 className=\"text-foreground line-clamp-2 text-sm leading-tight font-bold\">\n              {title || t(\"common_untitled\")}\n            </h3>\n          </div>\n        </div>\n      </div>\n    </button>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport { X } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\nexport interface BulkSelectionBarProps {\n  selectedCount: number;\n  totalCount: number;\n  onSelectAll: () => void;\n  onClearSelection: () => void;\n  onBulkFavorite: () => void;\n}\n\nexport function BulkSelectionBar({\n  selectedCount,\n  totalCount,\n  onSelectAll,\n  onClearSelection,\n  onBulkFavorite,\n}: BulkSelectionBarProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n\n  return (\n    <div className=\"bg-foreground flex items-center justify-between rounded-lg px-4 py-3\">\n      <div className=\"flex items-center gap-4\">\n        <button\n          type=\"button\"\n          onClick={onSelectAll}\n          className=\"text-background hover:text-background/80 text-sm font-medium\"\n        >\n          {selectedCount === totalCount\n            ? t(\"common_deselect_all\")\n            : t(\"common_select_all\")}\n        </button>\n        <span className=\"text-background/70 text-sm\">\n          {t(\"common_selected_count\", { count: String(selectedCount) })}\n        </span>\n      </div>\n      <div className=\"flex items-center gap-3\">\n        <Button\n          onClick={onBulkFavorite}\n          disabled={selectedCount === 0}\n          variant=\"secondary\"\n          size=\"sm\"\n          className=\"bg-background text-foreground hover:bg-background/90 rounded-md px-3 py-1.5 text-xs font-medium disabled:cursor-not-allowed disabled:opacity-50\"\n        >\n          {t(\"common_favorite\")}\n        </Button>\n        <button\n          type=\"button\"\n          onClick={onClearSelection}\n          className=\"text-background hover:text-background/80\"\n          aria-label={t(\"common_cancel_selection_aria\")}\n        >\n          <X className=\"size-4\" />\n        </button>\n      </div>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useRef, useCallback, useMemo } from \"react\";\nimport {\n  useInfiniteQuery,\n  useMutation,\n  useQueryClient,\n  keepPreviousData,\n} from \"@tanstack/react-query\";\nimport { useShareablesApi, shareablesKeys } from \"@fluid-app/shareables-core\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport {\n  Badge,\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbPage,\n  Button,\n  DialogFooter,\n  Checkbox,\n  cn,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n  Spinner,\n} from \"@fluid-app/ui-primitives\";\nimport { Heart, MoreVertical, Pencil, Plus, Trash2 } from \"lucide-react\";\nimport {\n  ScreenHeaderActions,\n  ScreenHeaderBreadcrumbs,\n} from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { SearchSort } from \"@fluid-app/ui-components/components/SearchSort\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { useShareablesUI, useCanCuratePlaylists } from \"../../context\";\nimport { PlaylistCard } from \"../playlists/PlaylistCard\";\nimport { BulkSelectionBar } from \"../playlists/BulkSelectionBar\";\nimport {\n  OwnerFilterTabs,\n  getFilteredEmptyMessage,\n  type OwnerFilter,\n} from \"../OwnerFilterTabs\";\nimport { ShareableListLayout } from \"../shared/ShareableListLayout\";\nimport {\n  ShareableListRow,\n  SHAREABLE_LIST_CLASS,\n} from \"../shared/ShareableListRow\";\nimport { ViewModeToggle, type ViewMode } from \"../shared/ViewModeToggle\";\nimport {\n  ShareableFilterBarLayout,\n  SHAREABLE_SEARCH_SORT_CLASS,\n} from \"../shared/ShareableFilterBarLayout\";\n\nconst PAGE_SIZE = 12;\n\n// Playlists use a narrower grid than the default shareable grid.\nconst GRID_CLASS =\n  \"grid grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4\";\n\nexport interface PlaylistsListingScreenProps {}\n\nexport function PlaylistsListingScreen(\n  _props: PlaylistsListingScreenProps,\n): React.JSX.Element {\n  const api = useShareablesApi();\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n  const { navigate, showToast, user, onToggleFavorite, onDeletePlaylist } =\n    useShareablesUI();\n  const canCuratePlaylists = useCanCuratePlaylists();\n  const queryClient = useQueryClient();\n\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [debouncedSearch, setDebouncedSearch] = useState(\"\");\n  const [sortValue, setSortValue] = useState(\"title\");\n  const [ownerFilter, setOwnerFilter] = useState<OwnerFilter>(\"all\");\n  const [viewMode, setViewMode] = useState<ViewMode>(\"grid\");\n  const [selectedIds, setSelectedIds] = useState<Set<number>>(new Set());\n  const [pendingDeleteId, setPendingDeleteId] = useState<number | null>(null);\n  const [actionPlaylistId, setActionPlaylistId] = useState<number | null>(null);\n\n  useEffect(() => {\n    setSelectedIds(new Set());\n  }, [ownerFilter]);\n\n  useEffect(() => {\n    const timer = setTimeout(() => setDebouncedSearch(searchTerm), 300);\n    return () => clearTimeout(timer);\n  }, [searchTerm]);\n  const observerTarget = useRef<HTMLDivElement>(null);\n\n  const queryKey = [\n    ...shareablesKeys.playlists.list(debouncedSearch, sortValue, ownerFilter),\n  ];\n\n  const {\n    data,\n    isLoading,\n    isFetchingNextPage,\n    hasNextPage,\n    fetchNextPage,\n    error,\n  } = useInfiniteQuery({\n    queryKey,\n    queryFn: async ({ pageParam }) => {\n      const response = await api.playlists.getPlaylists({\n        \"filter[title]\": debouncedSearch || undefined,\n        \"filter[ownership]\": ownerFilter !== \"all\" ? ownerFilter : undefined,\n        \"page[cursor]\": pageParam,\n        \"page[limit]\": PAGE_SIZE,\n        sort: sortValue,\n      });\n      return {\n        playlists: response.playlists,\n        nextCursor: response.meta.pagination.next_cursor,\n      };\n    },\n    getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,\n    initialPageParam: undefined as string | undefined,\n    placeholderData: keepPreviousData,\n  });\n\n  const filteredPlaylists = useMemo(\n    () => data?.pages.flatMap((page) => page.playlists) ?? [],\n    [data?.pages],\n  );\n\n  // Infinite scroll\n  useEffect(() => {\n    const target = observerTarget.current;\n    if (!target) return;\n    const observer = new IntersectionObserver(\n      (entries) => {\n        if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n          fetchNextPage();\n        }\n      },\n      { threshold: 0, rootMargin: \"200px\" },\n    );\n    observer.observe(target);\n    return () => observer.disconnect();\n  }, [fetchNextPage, hasNextPage, isFetchingNextPage]);\n\n  // --- Selection ---\n  const hasSelection = selectedIds.size > 0;\n\n  const handleToggleSelection = useCallback((id: number, selected: boolean) => {\n    setSelectedIds((prev) => {\n      const next = new Set(prev);\n      if (selected) next.add(id);\n      else next.delete(id);\n      return next;\n    });\n  }, []);\n\n  const handleSelectAll = useCallback(() => {\n    if (selectedIds.size === filteredPlaylists.length) {\n      setSelectedIds(new Set());\n    } else {\n      setSelectedIds(new Set(filteredPlaylists.map((p) => p.id)));\n    }\n  }, [selectedIds.size, filteredPlaylists]);\n\n  const handleClearSelection = useCallback(() => {\n    setSelectedIds(new Set());\n  }, []);\n\n  // --- Favorites ---\n  const favoriteMutation = useMutation({\n    mutationFn: (playlistId: number) => {\n      if (!onToggleFavorite) {\n        return Promise.reject(new Error(\"Favorite not available\"));\n      }\n      return onToggleFavorite({\n        favoriteableId: playlistId,\n        favoriteableType: \"Library\",\n      });\n    },\n    onMutate: async (playlistId) => {\n      await queryClient.cancelQueries({ queryKey });\n      const previousData = queryClient.getQueryData(queryKey);\n\n      queryClient.setQueryData<typeof data>(queryKey, (oldData) => {\n        if (!oldData) return oldData;\n        return {\n          ...oldData,\n          pages: oldData.pages.map((page) => ({\n            ...page,\n            playlists: page.playlists.map((p) =>\n              p.id === playlistId ? { ...p, is_favorited: !p.is_favorited } : p,\n            ),\n          })),\n        };\n      });\n\n      return { previousData, capturedKey: queryKey };\n    },\n    onError: (_err, _playlistId, context) => {\n      if (context?.previousData) {\n        queryClient.setQueryData(context.capturedKey, context.previousData);\n      }\n      showToast({ title: t(\"playlist_favorite_error\"), type: \"error\" });\n    },\n    onSuccess: (result) => {\n      showToast({\n        title: result.is_favorited\n          ? t(\"playlist_favorite_added\")\n          : t(\"playlist_favorite_removed\"),\n        type: \"success\",\n      });\n    },\n    onSettled: () => {\n      queryClient.invalidateQueries({ queryKey: shareablesKeys.playlists.all });\n    },\n  });\n\n  const handleFavorite = useCallback(\n    (playlistId: number) => {\n      if (!onToggleFavorite) return;\n      favoriteMutation.mutate(playlistId);\n    },\n    [onToggleFavorite, favoriteMutation],\n  );\n\n  const handleBulkFavorite = useCallback(() => {\n    for (const id of selectedIds) {\n      handleFavorite(id);\n    }\n    setSelectedIds(new Set());\n  }, [selectedIds, handleFavorite]);\n\n  // --- Card actions ---\n  const handleEdit = useCallback(\n    (playlistId: number) => {\n      navigate(`playlists/${playlistId}/edit`);\n    },\n    [navigate],\n  );\n\n  const { mutate: deletePlaylist, isPending: isDeleting } = useMutation({\n    mutationFn: (playlistId: number) => {\n      if (!onDeletePlaylist) {\n        return Promise.reject(new Error(\"Delete not available\"));\n      }\n      return onDeletePlaylist(playlistId);\n    },\n    onSuccess: () => {\n      queryClient.invalidateQueries({ queryKey: shareablesKeys.playlists.all });\n      showToast({ title: t(\"playlist_delete_success\"), type: \"success\" });\n      setPendingDeleteId(null);\n    },\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"playlist_delete_error\"),\n        type: \"error\",\n        error,\n      });\n      setPendingDeleteId(null);\n    },\n  });\n\n  const confirmDelete = useCallback(() => {\n    if (pendingDeleteId != null) deletePlaylist(pendingDeleteId);\n  }, [pendingDeleteId, deletePlaylist]);\n\n  const sortOptions = useMemo(\n    () => [\n      { label: t(\"sort_name_asc\"), value: \"title\" },\n      { label: t(\"sort_name_desc\"), value: \"-title\" },\n      { label: t(\"sort_date_newest\"), value: \"-created_at\" },\n      { label: t(\"sort_date_oldest\"), value: \"created_at\" },\n    ],\n    [t],\n  );\n\n  const filterBar = hasSelection ? (\n    <BulkSelectionBar\n      selectedCount={selectedIds.size}\n      totalCount={filteredPlaylists.length}\n      onSelectAll={handleSelectAll}\n      onClearSelection={handleClearSelection}\n      onBulkFavorite={handleBulkFavorite}\n    />\n  ) : (\n    <ShareableFilterBarLayout\n      tabs={\n        <OwnerFilterTabs\n          value={ownerFilter}\n          onValueChange={setOwnerFilter}\n          myLabel={t(\"playlist_my_playlists_tab\")}\n          fullWidthOnMobile\n        />\n      }\n      controls={\n        <>\n          <div className={SHAREABLE_SEARCH_SORT_CLASS}>\n            <SearchSort\n              presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n              searchValue={searchTerm}\n              onSearchChange={setSearchTerm}\n              placeholder={t(\"playlist_search_placeholder\")}\n              sortOptions={sortOptions}\n              sortValue={sortValue}\n              onSortChange={setSortValue}\n            />\n          </div>\n\n          <ViewModeToggle value={viewMode} onChange={setViewMode} />\n        </>\n      }\n    />\n  );\n\n  const footer = (\n    <>\n      {isFetchingNextPage && (\n        <div className=\"flex justify-center py-4\">\n          <div className=\"border-primary size-6 animate-spin rounded-full border-2 border-t-transparent\" />\n        </div>\n      )}\n      {error && (\n        <p className=\"bg-destructive/10 text-destructive rounded-lg px-3 py-2\">\n          Error: {error.message}\n        </p>\n      )}\n    </>\n  );\n\n  const isEmpty =\n    filteredPlaylists.length === 0 && !isFetchingNextPage && !hasNextPage;\n\n  return (\n    <>\n      <ScreenHeaderActions>\n        {canCuratePlaylists ? (\n          <Button onClick={() => navigate(\"playlists/new\")} size=\"sm\">\n            <Plus className=\"mr-1 size-4\" />\n            {t(\"playlist_create_button\")}\n          </Button>\n        ) : null}\n      </ScreenHeaderActions>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {t(\"playlist_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableListLayout\n        isLoading={isLoading}\n        filters={filterBar}\n        isEmpty={isEmpty}\n        emptyMessage={getFilteredEmptyMessage({\n          searchTerm,\n          ownerFilter,\n          entityName: \"playlists\",\n          defaultMessage: t(\"playlist_empty_default\"),\n          t,\n          messages: {\n            filterSearchNoResults: t(\"common_filter_search_no_results\", {\n              entityName: \"playlists\",\n              searchTerm,\n            }),\n            searchNoResults: t(\"common_search_no_results\", {\n              entityName: \"playlists\",\n              searchTerm,\n            }),\n            filterNoResults: t(\"common_filter_no_results\", {\n              entityName: \"playlists\",\n            }),\n          },\n        })}\n        footer={footer}\n        sentinelRef={observerTarget}\n        loadingFilterShape=\"search-view\"\n      >\n        {viewMode === \"grid\" ? (\n          <div className={GRID_CLASS}>\n            {filteredPlaylists.map((playlist) => {\n              const firstItem = playlist.items?.[0];\n              const imageUrl =\n                playlist.image_url ??\n                firstItem?.image_url ??\n                firstItem?.relateable?.image_url ??\n                firstItem?.relateable?.compressed_image_url;\n              const itemCount =\n                playlist.items_count ?? playlist.items?.length ?? 0;\n              const canEdit =\n                canCuratePlaylists && playlist.user_id === user?.id;\n\n              return (\n                <PlaylistCard\n                  key={playlist.id}\n                  title={playlist.title || t(\"playlist_untitled\")}\n                  imageUrl={imageUrl}\n                  href={`playlists/${playlist.id}`}\n                  itemCount={itemCount}\n                  isFavorited={playlist.is_favorited}\n                  isSelectable\n                  isSelected={selectedIds.has(playlist.id)}\n                  canEdit={canEdit}\n                  onSelectionChange={(selected) =>\n                    handleToggleSelection(playlist.id, selected)\n                  }\n                  onToggleFavorite={\n                    onToggleFavorite\n                      ? () => handleFavorite(playlist.id)\n                      : undefined\n                  }\n                  onEdit={() => handleEdit(playlist.id)}\n                  onDelete={\n                    onDeletePlaylist\n                      ? () => setPendingDeleteId(playlist.id)\n                      : undefined\n                  }\n                />\n              );\n            })}\n          </div>\n        ) : (\n          <div className={SHAREABLE_LIST_CLASS}>\n            {filteredPlaylists.map((playlist) => {\n              const firstItem = playlist.items?.[0];\n              const imageUrl =\n                playlist.image_url ??\n                firstItem?.image_url ??\n                firstItem?.relateable?.image_url ??\n                firstItem?.relateable?.compressed_image_url;\n              const itemCount =\n                playlist.items_count ?? playlist.items?.length ?? 0;\n              const canEdit =\n                canCuratePlaylists && playlist.user_id === user?.id;\n              const isSelected = selectedIds.has(playlist.id);\n              const title = playlist.title || t(\"playlist_untitled\");\n\n              return (\n                <ShareableListRow\n                  key={playlist.id}\n                  imageUrl={imageUrl}\n                  title={title}\n                  subtitle={\n                    <Badge\n                      variant=\"secondary\"\n                      className=\"px-1.5 py-0 text-[10px] leading-4\"\n                    >\n                      {itemCount === 1\n                        ? t(\"playlist_item_count_one\", { count: \"1\" })\n                        : t(\"playlist_item_count_other\", {\n                            count: String(itemCount),\n                          })}\n                    </Badge>\n                  }\n                  onClick={() => navigate(`playlists/${playlist.id}`)}\n                  leading={\n                    <Checkbox\n                      checked={isSelected}\n                      onCheckedChange={(checked) =>\n                        handleToggleSelection(playlist.id, checked === true)\n                      }\n                      aria-label={t(\"playlist_select_aria\", { title })}\n                    />\n                  }\n                  trailing={\n                    <>\n                      {onToggleFavorite && (\n                        <button\n                          type=\"button\"\n                          onClick={() => handleFavorite(playlist.id)}\n                          aria-label={\n                            playlist.is_favorited\n                              ? t(\"common_unfavorite\")\n                              : t(\"common_favorite\")\n                          }\n                          className=\"hover:bg-muted-foreground/10 flex size-8 items-center justify-center rounded-md transition-colors\"\n                        >\n                          <Heart\n                            className={cn(\n                              \"h-4 w-4 transition-colors\",\n                              playlist.is_favorited\n                                ? \"fill-destructive text-destructive\"\n                                : \"text-muted-foreground\",\n                            )}\n                          />\n                        </button>\n                      )}\n                      {canEdit &&\n                        (isMobile ? (\n                          <Button\n                            variant=\"ghost\"\n                            size=\"sm\"\n                            className=\"size-8 p-0\"\n                            aria-label={t(\"playlist_actions_aria\")}\n                            onClick={() => setActionPlaylistId(playlist.id)}\n                          >\n                            <MoreVertical className=\"size-4\" />\n                          </Button>\n                        ) : (\n                          <DropdownMenu>\n                            <DropdownMenuTrigger asChild>\n                              <Button\n                                variant=\"ghost\"\n                                size=\"sm\"\n                                className=\"size-8 p-0\"\n                                aria-label={t(\"playlist_actions_aria\")}\n                              >\n                                <MoreVertical className=\"size-4\" />\n                              </Button>\n                            </DropdownMenuTrigger>\n                            <DropdownMenuContent align=\"end\">\n                              <DropdownMenuItem\n                                onClick={() => handleEdit(playlist.id)}\n                              >\n                                <Pencil className=\"mr-2 size-4\" />\n                                {t(\"common_edit\")}\n                              </DropdownMenuItem>\n                              {onDeletePlaylist && (\n                                <>\n                                  <DropdownMenuSeparator />\n                                  <DropdownMenuItem\n                                    variant=\"destructive\"\n                                    onClick={() =>\n                                      setPendingDeleteId(playlist.id)\n                                    }\n                                  >\n                                    <Trash2 className=\"mr-2 size-4\" />\n                                    {t(\"common_delete\")}\n                                  </DropdownMenuItem>\n                                </>\n                              )}\n                            </DropdownMenuContent>\n                          </DropdownMenu>\n                        ))}\n                    </>\n                  }\n                />\n              );\n            })}\n          </div>\n        )}\n      </ShareableListLayout>\n\n      <MobileActionSheet\n        open={actionPlaylistId !== null}\n        onOpenChange={(open) => {\n          if (!open) setActionPlaylistId(null);\n        }}\n        title={t(\"playlist_actions_aria\")}\n        actions={[\n          {\n            id: \"edit\",\n            label: t(\"common_edit\"),\n            onSelect: () => {\n              if (actionPlaylistId !== null) handleEdit(actionPlaylistId);\n            },\n          },\n          ...(onDeletePlaylist\n            ? [\n                {\n                  id: \"delete\",\n                  label: t(\"common_delete\"),\n                  variant: \"destructive\" as const,\n                  onSelect: () => setPendingDeleteId(actionPlaylistId),\n                },\n              ]\n            : []),\n        ]}\n      />\n\n      <ResponsiveDialog\n        open={pendingDeleteId !== null}\n        onOpenChange={(open) => {\n          if (!open && !isDeleting) setPendingDeleteId(null);\n        }}\n        title={t(\"playlist_delete_confirm_title\")}\n        description={t(\"playlist_delete_confirm_description\")}\n        presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n        role=\"alertdialog\"\n        size=\"compact\"\n      >\n        <DialogFooter>\n          <Button\n            variant=\"secondary\"\n            onClick={() => setPendingDeleteId(null)}\n            disabled={isDeleting}\n          >\n            {t(\"common_cancel\")}\n          </Button>\n          <Button\n            variant=\"destructive\"\n            onClick={confirmDelete}\n            disabled={isDeleting}\n          >\n            {isDeleting ? <Spinner className=\"size-4\" /> : t(\"common_delete\")}\n          </Button>\n        </DialogFooter>\n      </ResponsiveDialog>\n    </>\n  );\n}\n","export const NAVIGABLE_RELATEABLE_TYPES = new Set<string>([\n  \"Product\",\n  \"Page\",\n  \"Medium\",\n]);\n","\"use client\";\n\nimport type React from \"react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useRenderImage } from \"../../context\";\nimport { ListMusic, Play, ArrowUpRight } from \"lucide-react\";\nimport type { shareables } from \"@fluid-app/shareables-core\";\nimport { NAVIGABLE_RELATEABLE_TYPES } from \"../../constants\";\n\nconst DEFAULT_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png\";\n\ninterface PlaylistItemsListProps {\n  items: shareables.PlaylistItem[];\n  onSelectItem?: (index: number) => void;\n  selectedItemIndex?: number;\n  /** Called when user clicks to navigate to an item's detail page */\n  onNavigateToItem?: (itemId: number, relateableType?: string | null) => void;\n}\n\nfunction getItemType(\n  type: string | null | undefined,\n  kind: string | null | undefined,\n  labels: {\n    product: string;\n    enrollment: string;\n    page: string;\n    video: string;\n    image: string;\n    media: string;\n  },\n) {\n  if (type === \"Product\") return labels.product;\n  if (type === \"EnrollmentPack\") return labels.enrollment;\n  if (type === \"Page\") return labels.page;\n  if (kind === \"video\") return labels.video;\n  if (kind === \"image\") return labels.image;\n  return labels.media;\n}\n\nfunction formatVideoLength(seconds?: number) {\n  if (seconds == null) return null;\n  const mins = Math.floor(seconds / 60);\n  const secs = seconds % 60;\n  return `${String(mins).padStart(2, \"0\")}:${String(secs).padStart(2, \"0\")}`;\n}\n\nfunction getFileType(mediaFormat?: string | null, imageUrl?: string | null) {\n  if (mediaFormat) {\n    return mediaFormat.toLowerCase();\n  }\n  if (imageUrl) {\n    const urlParts = imageUrl.split(\".\");\n    const extension = urlParts[urlParts.length - 1]?.split(\"?\")[0];\n    if (extension) {\n      return extension.toLowerCase();\n    }\n  }\n  return null;\n}\n\nexport default function PlaylistItemsList({\n  items,\n  onSelectItem,\n  selectedItemIndex = 0,\n  onNavigateToItem,\n}: PlaylistItemsListProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const handleNavigateToItem = (\n    itemId: number,\n    type?: string | null,\n    e?: React.MouseEvent,\n  ) => {\n    e?.stopPropagation();\n    onNavigateToItem?.(itemId, type);\n  };\n\n  const handleCardClick = (index: number) => {\n    onSelectItem?.(index);\n  };\n\n  const renderImage = useRenderImage();\n\n  const renderContent = () => {\n    if (!items || items.length === 0) {\n      return (\n        <div className=\"flex flex-1 items-center justify-center px-6 py-12\">\n          <div className=\"text-center\">\n            <div className=\"mb-2 text-gray-400\">\n              <ListMusic className=\"mx-auto size-12\" />\n            </div>\n            <div className=\"mb-1 text-sm text-gray-500\">\n              {t(\"playlist_no_items\")}\n            </div>\n            <div className=\"text-xs text-gray-400\">\n              {t(\"playlist_no_items_description\")}\n            </div>\n          </div>\n        </div>\n      );\n    }\n\n    return (\n      <div className=\"space-y-3\">\n        {items.map((item, index) => {\n          const relateable = item.relateable;\n          const imageUrl =\n            item.image_url ??\n            relateable?.image_url ??\n            relateable?.compressed_image_url ??\n            DEFAULT_IMAGE;\n          const title = item.title ?? relateable?.title ?? t(\"common_untitled\");\n          const rawPrice = relateable?.display_price || relateable?.price;\n          const price =\n            rawPrice && parseFloat(rawPrice.replace(/[^0-9.-]/g, \"\")) > 0\n              ? rawPrice\n              : null;\n          const kind = item.kind ?? relateable?.kind;\n          const itemType = getItemType(item.relateable_type, kind, {\n            product: t(\"common_product\"),\n            enrollment: t(\"common_enrollment\"),\n            page: t(\"common_page\"),\n            video: t(\"media_type_video\"),\n            image: t(\"media_type_image\"),\n            media: t(\"media_type_default\"),\n          });\n          const isVideo = kind === \"video\";\n          const isImage = kind === \"image\";\n          const isProduct = item.relateable_type === \"Product\";\n          const isNavigable = NAVIGABLE_RELATEABLE_TYPES.has(\n            item.relateable_type ?? \"\",\n          );\n          const videoLength = formatVideoLength(\n            item.duration ?? relateable?.duration,\n          );\n          const fileType = getFileType(\n            item.media_format ?? relateable?.media_format,\n            item.image_url ?? relateable?.image_url,\n          );\n          const isSelected = index === selectedItemIndex;\n\n          return (\n            <div\n              key={item.id}\n              onClick={() => handleCardClick(index)}\n              className={`hover:bg-muted/60 flex w-full cursor-pointer items-start gap-3 rounded-lg p-3 text-left transition-all ${\n                isSelected ? \"bg-muted/60\" : \"bg-muted\"\n              }`}\n            >\n              {/* Thumbnail */}\n              <div className=\"bg-background relative h-[104px] w-[104px] shrink-0 overflow-hidden rounded-lg\">\n                {renderImage({\n                  src: imageUrl,\n                  alt: title,\n                  fill: true,\n                  className: \"object-cover\",\n                })}\n                {/* Play button overlay for videos */}\n                {isVideo && (\n                  <div className=\"absolute inset-0 flex items-center justify-center\">\n                    <div className=\"bg-background/90 flex size-10 items-center justify-center rounded-full shadow-md\">\n                      <Play className=\"text-foreground ml-0.5 size-4\" />\n                    </div>\n                  </div>\n                )}\n              </div>\n\n              {/* Content */}\n              <div className=\"flex min-w-0 flex-1 flex-col gap-1 py-1\">\n                {/* Title - clickable to navigate for supported types */}\n                {isNavigable ? (\n                  <button\n                    onClick={(e) =>\n                      handleNavigateToItem(\n                        relateable?.id ?? item.id,\n                        item.relateable_type,\n                        e,\n                      )\n                    }\n                    className=\"group text-foreground flex items-start gap-1.5 text-left text-[15px] leading-[1.4] font-semibold hover:underline\"\n                  >\n                    <span className=\"line-clamp-2\">{title}</span>\n                    <ArrowUpRight className=\"text-foreground mt-0.5 size-3 shrink-0 opacity-0 transition-opacity group-hover:opacity-100\" />\n                  </button>\n                ) : (\n                  <div className=\"text-foreground text-[15px] leading-[1.4] font-semibold\">\n                    <span className=\"line-clamp-2\">{title}</span>\n                  </div>\n                )}\n\n                {/* Product: Price */}\n                {isProduct && price && (\n                  <div className=\"text-foreground text-[15px] leading-[1.4] font-normal\">\n                    {price}\n                  </div>\n                )}\n\n                {/* Video: Duration */}\n                {isVideo && (\n                  <div className=\"text-muted-foreground text-[13px] leading-[1.4] font-normal\">\n                    {videoLength || t(\"media_type_video\")}\n                  </div>\n                )}\n\n                {/* Image: File type */}\n                {isImage && (\n                  <div className=\"text-muted-foreground text-[13px] leading-[1.4] font-normal\">\n                    {fileType || t(\"file_type_image_fallback\")}\n                  </div>\n                )}\n\n                {/* Badge */}\n                <div className=\"mt-1\">\n                  <span className=\"bg-background text-foreground inline-flex items-center rounded-md px-2.5 py-1 text-[13px] leading-[1.4] font-medium\">\n                    {itemType}\n                  </span>\n                </div>\n              </div>\n            </div>\n          );\n        })}\n      </div>\n    );\n  };\n\n  return (\n    <div className=\"hide-scrollbar flex h-full flex-col\">\n      {/* Header */}\n      <div className=\"mb-4 px-4 pt-4\">\n        <h2 className=\"text-foreground text-[15px] leading-[1.4] font-semibold\">\n          {t(\"playlist_items_in_playlist_count\", {\n            count: String(items.length),\n          })}\n        </h2>\n      </div>\n\n      {/* Content */}\n      <div className=\"flex-1 overflow-y-auto px-4 pb-4\">{renderContent()}</div>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { NAVIGABLE_RELATEABLE_TYPES } from \"../../constants\";\nimport {\n  useShareablesApi,\n  useShareLink,\n  shareablesKeys,\n} from \"@fluid-app/shareables-core\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Button,\n  Separator,\n} from \"@fluid-app/ui-primitives\";\nimport { Pencil } from \"lucide-react\";\nimport SharePageImageDisplay from \"../SharePage/SharePageImageDisplay\";\nimport AssetActions from \"../SharePage/AssetActions\";\nimport TaggedProductsList from \"../SharePage/TaggedProductsList\";\nimport PlaylistItemsList from \"../SharePage/PlaylistItemsList\";\nimport {\n  ScreenHeaderActions,\n  ScreenHeaderBreadcrumbs,\n} from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { useShareablesUI, useCanCuratePlaylists } from \"../../context\";\nimport type { ShareablesParentBreadcrumb } from \"../shareables-parent-breadcrumb-types\";\nimport { ShareableDetailLayout } from \"../shared/ShareableDetailLayout\";\n\nconst DEFAULT_IMAGE =\n  \"https://ik.imagekit.io/fluid/tr:w-1500,h-1500,cm-pad_resize,bg-FFFFFF/980191006/images/WJHL8V/WeCommerce_Logotype-Black_NcO-MzatB.png\";\n\nexport interface PlaylistDetailScreenProps {\n  playlistId: string;\n  onNavigate?: (screen: string, detailId?: string) => void;\n  onBack?: () => void;\n  parentBreadcrumb?: ShareablesParentBreadcrumb | null;\n}\n\nexport function PlaylistDetailScreen({\n  playlistId,\n  onNavigate,\n  onBack,\n  parentBreadcrumb,\n}: PlaylistDetailScreenProps): React.JSX.Element {\n  const api = useShareablesApi();\n  const { t, locale } = useShareablesTranslation();\n  const { navigate, user } = useShareablesUI();\n  const canCuratePlaylists = useCanCuratePlaylists();\n  const [selectedPlaylistItemIndex, setSelectedPlaylistItemIndex] = useState(0);\n\n  // Fetch playlist\n  const { data: playlistResponse, isLoading } = useQuery({\n    queryKey: shareablesKeys.playlists.detail(Number(playlistId), locale),\n    queryFn: () => api.playlists.getPlaylistById(Number(playlistId), locale),\n  });\n\n  // Share link — relateableType for playlist is \"Library\"\n  const {\n    shareLink,\n    loading: shareLinkLoading,\n    error: shareLinkError,\n  } = useShareLink({ id: Number(playlistId) }, \"Library\", undefined, locale);\n\n  const playlist = playlistResponse?.playlist;\n\n  const canEdit = canCuratePlaylists && playlist?.user_id === user?.id;\n  const displayTitle = playlist?.title || \"\";\n\n  // Tagged products section: Product + EnrollmentPack — mirrors the\n  // editor's \"Tagged Products\" bucket so the detail page groups items\n  // the same way authors organize them.\n  const taggedProducts =\n    playlist?.items\n      ?.filter(\n        (item) =>\n          item.relateable_type === \"Product\" ||\n          item.relateable_type === \"EnrollmentPack\",\n      )\n      .map((item) => item.relateable)\n      .filter((p): p is NonNullable<typeof p> => !!p) || [];\n\n  // Playlist items section: Medium + Page only — the rest belong to the\n  // tagged-products bucket above. Filter at the call site instead of in\n  // PlaylistItemsList so the component stays type-agnostic.\n  const playableItems =\n    playlist?.items?.filter(\n      (item) =>\n        item.relateable_type === \"Medium\" || item.relateable_type === \"Page\",\n    ) ?? [];\n\n  // Selected item drives the hero image/video — index into `playableItems`\n  // since that's what PlaylistItemsList renders. Falls back to the first\n  // item when the index is out of range (e.g. after a filter shrinks the\n  // list).\n  const selectedPlaylistItem =\n    playableItems[selectedPlaylistItemIndex] ?? playableItems[0];\n\n  // Derive display values\n  const displayImage =\n    selectedPlaylistItem?.image_url ??\n    selectedPlaylistItem?.relateable?.image_url ??\n    selectedPlaylistItem?.relateable?.compressed_image_url ??\n    DEFAULT_IMAGE;\n  const displayDescription =\n    playlist?.description ||\n    playlist?.search_engine_optimizer?.description ||\n    \"\";\n\n  // Handle video display for playlist items\n  const selectedKind =\n    selectedPlaylistItem?.kind ?? selectedPlaylistItem?.relateable?.kind;\n  const displayVideo =\n    selectedKind === \"video\"\n      ? (selectedPlaylistItem?.video_url ??\n        selectedPlaylistItem?.relateable?.video_url ??\n        undefined)\n      : undefined;\n  const isVideo = selectedKind === \"video\" && !!displayVideo;\n\n  return (\n    <>\n      <ScreenHeaderActions>\n        {canEdit ? (\n          <div className=\"flex items-center gap-2\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={() => navigate(`playlists/${playlistId}/edit`)}\n            >\n              <Pencil className=\"mr-1 size-3.5\" />\n              {t(\"common_edit\")}\n            </Button>\n          </div>\n        ) : null}\n      </ScreenHeaderActions>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  (\n                    parentBreadcrumb?.onClick ??\n                    onBack ??\n                    (() => navigate(\"playlists\"))\n                  )();\n                }}\n              >\n                {t(\"playlist_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"block max-w-[60vw] truncate align-bottom font-semibold md:max-w-[60ch]\">\n                {displayTitle || t(\"playlist_breadcrumb_fallback\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableDetailLayout\n        isLoading={isLoading}\n        notFound={!playlist}\n        notFoundMessage={t(\"playlist_not_found\")}\n        title={displayTitle}\n        description={displayDescription}\n        image={\n          <div className=\"relative h-full overflow-hidden rounded-2xl\">\n            <SharePageImageDisplay\n              displayImage={displayImage}\n              displayTitle={displayTitle}\n              displayVideo={displayVideo}\n              isVideo={isVideo}\n              badgeLabel={t(\"playlist_badge_label\")}\n              pdfPrevAriaLabel={t(\"pdf_previous_page_aria\")}\n              pdfNextAriaLabel={t(\"pdf_next_page_aria\")}\n              pdfDocumentTitle={t(\"pdf_document_title\")}\n            />\n          </div>\n        }\n        actions={\n          <AssetActions\n            downloadUrl={null}\n            displayTitle={displayTitle}\n            shareLink={shareLinkError ? null : shareLink || null}\n            shareLinkLoading={shareLinkLoading}\n            isVideo={isVideo}\n            relateableId={Number(playlistId)}\n            relateableType=\"Library\"\n          />\n        }\n      >\n        <Separator className=\"border-foreground my-4\" />\n\n        <div className=\"bg-background rounded-lg\">\n          {/* Tagged Products Section */}\n          <TaggedProductsList\n            products={taggedProducts}\n            onProductClick={(productId) =>\n              onNavigate?.(\"product\", String(productId))\n            }\n          />\n\n          {/* Playlist Items Section */}\n          <PlaylistItemsList\n            items={playableItems}\n            onSelectItem={setSelectedPlaylistItemIndex}\n            selectedItemIndex={selectedPlaylistItemIndex}\n            onNavigateToItem={(itemId, relateableType) => {\n              if (!NAVIGABLE_RELATEABLE_TYPES.has(relateableType ?? \"\")) return;\n              if (relateableType === \"Product\") {\n                onNavigate?.(\"product\", String(itemId));\n              } else if (relateableType === \"Page\") {\n                onNavigate?.(\"page\", String(itemId));\n              } else if (relateableType === \"Medium\") {\n                onNavigate?.(\"media\", String(itemId));\n              }\n            }}\n          />\n        </div>\n      </ShareableDetailLayout>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport {\n  createContext,\n  use,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\n\nexport type PlaylistSearchEngineOptimizer = {\n  id?: number;\n  title: string;\n  description: string;\n  image_url: string;\n  image_path: string;\n  block_crawler: boolean;\n};\n\nexport type PlaylistFormState = {\n  id?: number;\n  title: string;\n  description: string | null;\n  image_url: string | null;\n  slug: string | null;\n  custom_slug: boolean | null;\n  category_id: number | null;\n  application_theme_template_id: number | null;\n  active: boolean;\n  company_library: boolean | null;\n  indexed_for_seo: boolean;\n  countries: string[];\n  search_engine_optimizer: PlaylistSearchEngineOptimizer | null;\n};\n\nexport type PlaylistLike = {\n  id: number;\n  title?: string | null;\n  description?: string | null;\n  image_url?: string | null;\n  slug?: string | null;\n  custom_slug?: boolean | null;\n  category_id?: number | null;\n  application_theme_template_id?: number | null;\n  active?: boolean;\n  company_library?: boolean | null;\n  indexed_for_seo?: boolean;\n  countries?: Array<{ iso: string }> | null;\n  search_engine_optimizer?: PlaylistSearchEngineOptimizer | null;\n  canonical_url?: string | null;\n  preview_link?: string | null;\n  items?: Array<unknown> | null;\n};\n\ntype ValidationErrors = {\n  [K in keyof PlaylistFormState]?: string;\n};\n\ninterface PlaylistFormContextValue {\n  form: PlaylistFormState;\n  validationErrors: ValidationErrors;\n  isDirty: boolean;\n  updateField: <K extends keyof PlaylistFormState>(\n    field: K,\n    value: PlaylistFormState[K],\n  ) => void;\n  updateSeo: (\n    updates: Partial<PlaylistSearchEngineOptimizer> & {\n      slug?: string | null;\n    },\n  ) => void;\n  validateForm: () => boolean;\n  clearFieldError: (field: keyof PlaylistFormState) => void;\n  resetForm: (nextPlaylist?: PlaylistLike) => void;\n}\n\nconst PlaylistFormContext = createContext<PlaylistFormContextValue | undefined>(\n  undefined,\n);\n\nconst createDefaultSeo = (title: string): PlaylistSearchEngineOptimizer => ({\n  title: title || \"\",\n  description: \"\",\n  image_url: \"\",\n  image_path: \"\",\n  block_crawler: false,\n});\n\nconst mapPlaylistToForm = (playlist?: PlaylistLike): PlaylistFormState => ({\n  id: playlist?.id,\n  title: playlist?.title ?? \"\",\n  description: playlist?.description ?? null,\n  image_url: playlist?.image_url ?? null,\n  slug: playlist?.slug ?? \"\",\n  custom_slug: playlist?.custom_slug ?? false,\n  category_id: playlist?.category_id ?? null,\n  application_theme_template_id:\n    playlist?.application_theme_template_id ?? null,\n  active: playlist?.active ?? false,\n  company_library: playlist?.company_library ?? true,\n  indexed_for_seo: playlist?.indexed_for_seo ?? false,\n  countries: playlist?.countries?.map((country) => country.iso) ?? [],\n  search_engine_optimizer: playlist?.search_engine_optimizer ?? null,\n});\n\nexport function PlaylistFormProvider({\n  children,\n  playlist,\n}: {\n  children: React.ReactNode;\n  playlist?: PlaylistLike;\n}): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const initialForm = useMemo(() => mapPlaylistToForm(playlist), [playlist]);\n  const [form, setForm] = useState<PlaylistFormState>(initialForm);\n  const [validationErrors, setValidationErrors] = useState<ValidationErrors>(\n    {},\n  );\n\n  const isDirty = useMemo(() => {\n    return JSON.stringify(form) !== JSON.stringify(initialForm);\n  }, [form, initialForm]);\n\n  const prevPlaylistRef = useRef<string>(JSON.stringify(playlist));\n\n  useEffect(() => {\n    const serialized = JSON.stringify(playlist);\n    if (serialized === prevPlaylistRef.current) return;\n    prevPlaylistRef.current = serialized;\n    setForm(mapPlaylistToForm(playlist));\n  }, [playlist]);\n\n  const updateField = useCallback(\n    <K extends keyof PlaylistFormState>(\n      field: K,\n      value: PlaylistFormState[K],\n    ) => {\n      setForm((prev) => ({ ...prev, [field]: value }));\n      if (validationErrors[field]) {\n        setValidationErrors((prev) => {\n          const next = { ...prev };\n          delete next[field];\n          return next;\n        });\n      }\n    },\n    [validationErrors],\n  );\n\n  const updateSeo = useCallback(\n    (\n      updates: Partial<PlaylistSearchEngineOptimizer> & {\n        slug?: string | null;\n      },\n    ) => {\n      setForm((prev) => {\n        const currentSeo =\n          prev.search_engine_optimizer ?? createDefaultSeo(prev.title);\n        const nextSeo = { ...currentSeo };\n\n        if (updates.title !== undefined) nextSeo.title = updates.title ?? \"\";\n        if (updates.description !== undefined)\n          nextSeo.description = updates.description ?? \"\";\n        if (updates.image_url !== undefined)\n          nextSeo.image_url = updates.image_url ?? \"\";\n        if (updates.image_path !== undefined)\n          nextSeo.image_path = updates.image_path ?? \"\";\n        if (updates.block_crawler !== undefined)\n          nextSeo.block_crawler = updates.block_crawler ?? false;\n\n        const nextSlug =\n          updates.slug !== undefined ? (updates.slug ?? null) : prev.slug;\n\n        return {\n          ...prev,\n          slug: nextSlug,\n          search_engine_optimizer: nextSeo,\n        };\n      });\n    },\n    [],\n  );\n\n  const validateForm = useCallback(() => {\n    const errors: ValidationErrors = {};\n    if (!form.title || !form.title.trim()) {\n      errors.title = t(\"playlist_title_required\");\n    }\n    setValidationErrors(errors);\n    return Object.keys(errors).length === 0;\n  }, [form.title, t]);\n\n  const clearFieldError = useCallback((field: keyof PlaylistFormState) => {\n    setValidationErrors((prev) => {\n      const next = { ...prev };\n      delete next[field];\n      return next;\n    });\n  }, []);\n\n  const resetForm = useCallback(\n    (nextPlaylist?: PlaylistLike) => {\n      setForm(mapPlaylistToForm(nextPlaylist ?? playlist));\n      setValidationErrors({});\n    },\n    [playlist],\n  );\n\n  const value = useMemo(\n    () => ({\n      form,\n      validationErrors,\n      isDirty,\n      updateField,\n      updateSeo,\n      validateForm,\n      clearFieldError,\n      resetForm,\n    }),\n    [\n      form,\n      validationErrors,\n      isDirty,\n      updateField,\n      updateSeo,\n      validateForm,\n      clearFieldError,\n      resetForm,\n    ],\n  );\n\n  return (\n    <PlaylistFormContext.Provider value={value}>\n      {children}\n    </PlaylistFormContext.Provider>\n  );\n}\n\nexport function usePlaylistForm() {\n  const context = use(PlaylistFormContext);\n  if (!context) {\n    throw new Error(\"usePlaylistForm must be used within PlaylistFormProvider\");\n  }\n  return context;\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport {\n  createContext,\n  use,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from \"react\";\n\nexport interface PlaylistItemLike {\n  id: number;\n  order?: number;\n  relateable_type?: string | null;\n  // Flat fields from BFF (preferred over relateable nested fields)\n  title?: string | null;\n  image_url?: string | null;\n  kind?: string | null;\n  relateable?: {\n    id?: number;\n    title?: string | null;\n    image_url?: string | null;\n    compressed_image_url?: string | null;\n    kind?: string | null;\n    video_url?: string | null;\n    price?: string | null;\n    sku?: string | null;\n    description?: { body?: string | null } | null;\n    [key: string]: unknown;\n  };\n}\n\nexport interface PlaylistItemsContextValue {\n  items: PlaylistItemLike[];\n  setItems: (items: PlaylistItemLike[]) => void;\n  addItem: (item: PlaylistItemLike) => void;\n  removeItem: (itemId: number) => void;\n  updateItems: (\n    items:\n      | PlaylistItemLike[]\n      | ((prev: PlaylistItemLike[]) => PlaylistItemLike[]),\n  ) => void;\n  isDirty: boolean;\n}\n\nconst PlaylistItemsContext = createContext<\n  PlaylistItemsContextValue | undefined\n>(undefined);\n\nexport function usePlaylistItems() {\n  const context = use(PlaylistItemsContext);\n  if (!context) {\n    throw new Error(\n      \"usePlaylistItems must be used within PlaylistItemsProvider\",\n    );\n  }\n  return context;\n}\n\nexport function PlaylistItemsProvider({\n  children,\n  initialItems = [],\n}: {\n  children: React.ReactNode;\n  initialItems?: PlaylistItemLike[];\n}): React.JSX.Element {\n  const [items, setItems] = useState<PlaylistItemLike[]>(initialItems);\n  const [initialSnapshot, setInitialSnapshot] =\n    useState<PlaylistItemLike[]>(initialItems);\n\n  const prevInitialRef = useRef<string>(JSON.stringify(initialItems));\n\n  useEffect(() => {\n    const serialized = JSON.stringify(initialItems);\n    if (serialized === prevInitialRef.current) return;\n    prevInitialRef.current = serialized;\n    setItems(initialItems);\n    setInitialSnapshot(initialItems);\n  }, [initialItems]);\n\n  const isDirty = useMemo(\n    () => JSON.stringify(items) !== JSON.stringify(initialSnapshot),\n    [items, initialSnapshot],\n  );\n\n  const addItem = useCallback((item: PlaylistItemLike) => {\n    setItems((prev) => [...prev, item]);\n  }, []);\n\n  const removeItem = useCallback((itemId: number) => {\n    setItems((prev) => prev.filter((item) => item.id !== itemId));\n  }, []);\n\n  const updateItems = useCallback(\n    (\n      newItems:\n        | PlaylistItemLike[]\n        | ((prev: PlaylistItemLike[]) => PlaylistItemLike[]),\n    ) => {\n      setItems((prev) =>\n        typeof newItems === \"function\" ? newItems(prev) : newItems,\n      );\n    },\n    [],\n  );\n\n  const value: PlaylistItemsContextValue = useMemo(\n    () => ({\n      items,\n      setItems,\n      addItem,\n      removeItem,\n      updateItems,\n      isDirty,\n    }),\n    [items, addItem, removeItem, updateItems, isDirty],\n  );\n\n  return (\n    <PlaylistItemsContext.Provider value={value}>\n      {children}\n    </PlaylistItemsContext.Provider>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useMemo, useState } from \"react\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Button,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n  Spinner,\n  DialogFooter,\n} from \"@fluid-app/ui-primitives\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { ResponsiveDialog } from \"@fluid-app/ui-components/components/ResponsiveDialog\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { MoreVertical, Trash2 } from \"lucide-react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport {\n  ScreenHeaderActions,\n  ScreenHeaderBreadcrumbs,\n} from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { usePlaylistForm } from \"./PlaylistFormProvider\";\nimport { usePlaylistItems } from \"./PlaylistItemsContext\";\nimport { useShareablesUI } from \"../../../context\";\n\ninterface PlaylistFormHeaderProps {\n  playlistId?: string;\n  isEditMode: boolean;\n  onSubmit: () => Promise<void>;\n  isSaving: boolean;\n  onBack?: () => void;\n}\n\nexport function PlaylistFormHeader({\n  playlistId,\n  isEditMode,\n  onSubmit,\n  isSaving,\n}: PlaylistFormHeaderProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const { form, isDirty: formIsDirty } = usePlaylistForm();\n  const { isDirty: itemsIsDirty } = usePlaylistItems();\n  const { onDeletePlaylist, showToast, navigate } = useShareablesUI();\n  const isMobile = useIsMobile();\n  const [isDeleteOpen, setIsDeleteOpen] = useState(false);\n  const [isActionsOpen, setIsActionsOpen] = useState(false);\n  const [isDeleting, setIsDeleting] = useState(false);\n\n  const isFormValid = useMemo(() => {\n    return !!(form.title && form.title.trim());\n  }, [form.title]);\n\n  const isDirty = formIsDirty || itemsIsDirty;\n  const isMutating = isDeleting || isSaving;\n\n  const handleDelete = async () => {\n    if (!playlistId || !onDeletePlaylist) return;\n    setIsDeleting(true);\n    try {\n      await onDeletePlaylist(Number(playlistId));\n      showToast({ title: t(\"playlist_delete_success_full\"), type: \"success\" });\n      navigate(\"playlists\");\n    } catch (error) {\n      showToast({\n        title: t(\"playlist_delete_error\"),\n        type: \"error\",\n        error,\n      });\n    } finally {\n      setIsDeleting(false);\n      setIsDeleteOpen(false);\n    }\n  };\n\n  return (\n    <>\n      <ScreenHeaderActions>\n        <div className=\"flex items-center gap-2\">\n          {playlistId &&\n            onDeletePlaylist &&\n            (isMobile ? (\n              <>\n                <Button\n                  variant=\"outline\"\n                  size=\"sm\"\n                  className=\"size-8 p-0\"\n                  aria-label={t(\"playlist_actions_aria\")}\n                  disabled={isMutating}\n                  onClick={() => setIsActionsOpen(true)}\n                >\n                  <MoreVertical className=\"size-4\" />\n                </Button>\n                <MobileActionSheet\n                  open={isActionsOpen}\n                  onOpenChange={setIsActionsOpen}\n                  title={t(\"playlist_actions_aria\")}\n                  actions={[\n                    {\n                      id: \"delete\",\n                      label: t(\"common_delete\"),\n                      variant: \"destructive\",\n                      onSelect: () => setIsDeleteOpen(true),\n                    },\n                  ]}\n                />\n              </>\n            ) : (\n              <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                  <Button\n                    variant=\"outline\"\n                    size=\"sm\"\n                    className=\"size-8 p-0\"\n                    aria-label={t(\"playlist_actions_aria\")}\n                    disabled={isMutating}\n                  >\n                    <MoreVertical className=\"size-4\" />\n                  </Button>\n                </DropdownMenuTrigger>\n                <DropdownMenuContent align=\"end\">\n                  <DropdownMenuItem\n                    onClick={() => setIsDeleteOpen(true)}\n                    className=\"text-destructive focus:text-destructive\"\n                  >\n                    <Trash2 className=\"mr-2 size-4\" />\n                    {t(\"common_delete\")}\n                  </DropdownMenuItem>\n                </DropdownMenuContent>\n              </DropdownMenu>\n            ))}\n          <Button\n            onClick={() => {\n              onSubmit().catch(() => {});\n            }}\n            disabled={isMutating || !isDirty || !isFormValid}\n            size=\"sm\"\n          >\n            {isSaving ? <Spinner className=\"size-4\" /> : t(\"common_save\")}\n          </Button>\n        </div>\n      </ScreenHeaderActions>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  navigate(\"playlists\");\n                }}\n              >\n                {t(\"playlist_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {isEditMode\n                  ? t(\"playlist_edit_breadcrumb\")\n                  : t(\"playlist_create_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ResponsiveDialog\n        open={isDeleteOpen}\n        onOpenChange={(open) => {\n          if (!open && !isDeleting) setIsDeleteOpen(false);\n        }}\n        title={t(\"playlist_delete_confirm_title\")}\n        description={t(\"playlist_delete_confirm_description\")}\n        presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n        role=\"alertdialog\"\n        size=\"compact\"\n      >\n        <DialogFooter>\n          <Button\n            variant=\"secondary\"\n            disabled={isDeleting}\n            onClick={() => setIsDeleteOpen(false)}\n          >\n            {t(\"common_cancel\")}\n          </Button>\n          <Button\n            variant=\"destructive\"\n            onClick={(e) => {\n              e.preventDefault();\n              void handleDelete();\n            }}\n            disabled={isDeleting}\n          >\n            {isDeleting ? <Spinner className=\"size-4\" /> : t(\"common_delete\")}\n          </Button>\n        </DialogFooter>\n      </ResponsiveDialog>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { Input, Label, cn } from \"@fluid-app/ui-primitives\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { usePlaylistForm } from \"./PlaylistFormProvider\";\nimport { RichTextEditor } from \"../RichTextEditor\";\n\nexport function PlaylistFormDetails(): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const { form, updateField, validationErrors } = usePlaylistForm();\n\n  return (\n    <div className=\"border-border bg-card w-full rounded-lg border p-4 shadow-xs\">\n      <div className=\"space-y-6\">\n        <div>\n          <h2 className=\"text-md text-foreground font-semibold\">\n            {t(\"playlist_form_heading\")}\n          </h2>\n          <p className=\"text-muted-foreground text-sm\">\n            {t(\"playlist_form_description\")}\n          </p>\n        </div>\n\n        <div className=\"space-y-4\">\n          <div className=\"space-y-1\">\n            <Label className=\"text-foreground font-medium\">\n              {t(\"playlist_name_label\")}\n            </Label>\n            <Input\n              name=\"title\"\n              placeholder={t(\"playlist_name_placeholder\")}\n              value={form.title}\n              onChange={(e) => updateField(\"title\", e.target.value)}\n              required\n              className={cn(\n                validationErrors.title && \"ring-destructive ring-1\",\n              )}\n            />\n            {validationErrors.title && (\n              <p className=\"text-destructive text-xs\">\n                {validationErrors.title}\n              </p>\n            )}\n          </div>\n\n          <div className=\"flex flex-col gap-2\">\n            <Label className=\"text-foreground font-medium\">\n              {t(\"common_description_label\")}\n            </Label>\n            <div className=\"border-border rounded-[6px] border shadow-xs\">\n              <RichTextEditor\n                value={form.description || \"\"}\n                onChange={(value) => updateField(\"description\", value)}\n                className=\"h-48 border-0\"\n                editorClassName=\"h-36 overflow-auto\"\n                placeholder={t(\"playlist_description_placeholder\")}\n              />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\ninterface SortableRowProps {\n  children: React.ReactNode;\n  id: string;\n  enableReordering?: boolean;\n}\n\nexport function SortableRow({\n  children,\n  id,\n  enableReordering = true,\n}: SortableRowProps): React.JSX.Element {\n  const {\n    attributes,\n    listeners,\n    setNodeRef,\n    transform,\n    transition,\n    isDragging,\n  } = useSortable({ id, disabled: !enableReordering });\n\n  const style = {\n    transform: CSS.Transform.toString(transform),\n    transition,\n    opacity: isDragging ? 0.5 : 1,\n  };\n\n  return (\n    <tr ref={setNodeRef} style={style} {...attributes}>\n      {React.Children.map(children, (child, index) => {\n        if (index === 0 && enableReordering) {\n          return React.cloneElement(child as React.ReactElement, {\n            ...listeners,\n          });\n        }\n        return child;\n      })}\n    </tr>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState } from \"react\";\nimport {\n  Button,\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuTrigger,\n} from \"@fluid-app/ui-primitives\";\nimport type { LucideIcon } from \"lucide-react\";\nimport {\n  MoreHorizontal,\n  Trash2,\n  GripVertical,\n  Image,\n  ShoppingBag,\n  FileText,\n  Package,\n  Video,\n} from \"lucide-react\";\nimport {\n  DndContext,\n  closestCenter,\n  KeyboardSensor,\n  PointerSensor,\n  useSensor,\n  useSensors,\n  type DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n  arrayMove,\n  SortableContext,\n  sortableKeyboardCoordinates,\n  verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { MobileActionSheet } from \"@fluid-app/ui-components/components/MobileActionSheet\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport type { PlaylistItemLike } from \"./PlaylistItemsContext\";\nimport { SortableRow } from \"./SortableRow\";\n\nfunction typeBadgeIcon(relateableType: string, kind?: string): LucideIcon {\n  const k = kind?.toLowerCase() ?? \"\";\n  if (relateableType === \"Medium\") {\n    if (k === \"video\" || k.includes(\"video\")) return Video;\n    return Image;\n  }\n  if (relateableType === \"Page\") return FileText;\n  if (relateableType === \"Product\") return ShoppingBag;\n  if (relateableType === \"EnrollmentPack\") return Package;\n  return ShoppingBag;\n}\n\nfunction getTypeDisplay(\n  relateableType: string,\n  relateableKind: string | undefined,\n  t: ReturnType<typeof useShareablesTranslation>[\"t\"],\n) {\n  switch (relateableType) {\n    case \"Product\":\n      return t(\"common_product\");\n    case \"EnrollmentPack\":\n      return t(\"common_enrollment_pack\");\n    case \"Medium\": {\n      const kind = relateableKind?.toLowerCase() ?? \"\";\n      if (kind === \"video\" || kind.includes(\"video\"))\n        return t(\"media_type_video\");\n      if (kind === \"image\" || kind.includes(\"image\"))\n        return t(\"media_type_image\");\n      return relateableKind || t(\"media_type_default\");\n    }\n    case \"Page\":\n      return t(\"common_page\");\n    default:\n      return relateableType?.replace(/_/g, \" \") || t(\"common_unknown\");\n  }\n}\n\nfunction getItemIcon(relateableType: string) {\n  switch (relateableType) {\n    case \"Medium\":\n      return <Image className=\"text-muted-foreground size-4\" />;\n    case \"Page\":\n      return <FileText className=\"text-muted-foreground size-4\" />;\n    case \"Product\":\n      return <ShoppingBag className=\"text-muted-foreground size-4\" />;\n    case \"EnrollmentPack\":\n      return <Package className=\"text-muted-foreground size-4\" />;\n    default:\n      return <Image className=\"text-muted-foreground size-4\" />;\n  }\n}\n\ntype TableRow = {\n  id: number | string;\n  relateable_type?: string | null;\n  relateable_id?: number;\n  relateable?: PlaylistItemLike[\"relateable\"];\n  order: number;\n  title: string;\n  image_url?: string | null;\n  kind?: string | null;\n};\n\ninterface SortableTableProps {\n  items: PlaylistItemLike[];\n  setItems?: (items: PlaylistItemLike[]) => void;\n  onDeleteItem: (itemId: number) => void;\n  isDeletePending: boolean;\n  enableReordering?: boolean;\n}\n\nexport function SortableTable({\n  items,\n  setItems,\n  onDeleteItem,\n  isDeletePending,\n  enableReordering = true,\n}: SortableTableProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n  const [actionItemId, setActionItemId] = useState<number | null>(null);\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter: sortableKeyboardCoordinates,\n    }),\n  );\n\n  const handleDragEnd = (event: DragEndEvent) => {\n    const { active, over } = event;\n    if (active.id !== over?.id && setItems) {\n      const oldIndex = items.findIndex(\n        (item) => item.id?.toString() === active.id,\n      );\n      const newIndex = items.findIndex(\n        (item) => item.id?.toString() === over?.id,\n      );\n      setItems(arrayMove(items, oldIndex, newIndex));\n    }\n  };\n\n  const tableData: TableRow[] = items.map((item, index) => ({\n    id: item.id || `item-${index}`,\n    relateable_type: item.relateable_type,\n    relateable_id: item.relateable?.id,\n    relateable: item.relateable,\n    order: index + 1,\n    title:\n      item.title ??\n      item.relateable?.title ??\n      `${item.relateable_type} #${item.relateable?.id}`,\n    image_url: item.image_url ?? item.relateable?.image_url ?? null,\n    kind: item.kind ?? item.relateable?.kind ?? null,\n  }));\n\n  const tableContent = (\n    <div className=\"border-border w-full overflow-x-auto rounded-lg border\">\n      <table className=\"w-full min-w-max\">\n        <thead className=\"bg-muted\">\n          <tr>\n            <th className=\"text-muted-foreground px-6 py-3 text-left text-xs font-medium tracking-wider uppercase\">\n              {t(\"playlist_table_order\")}\n            </th>\n            <th className=\"text-muted-foreground px-6 py-3 text-left text-xs font-medium tracking-wider uppercase\">\n              {t(\"playlist_table_item\")}\n            </th>\n            <th className=\"text-muted-foreground px-6 py-3 text-left text-xs font-medium tracking-wider uppercase\">\n              {t(\"playlist_table_type\")}\n            </th>\n            <th className=\"text-muted-foreground px-6 py-3 text-left text-xs font-medium tracking-wider uppercase\">\n              {t(\"playlist_table_actions\")}\n            </th>\n          </tr>\n        </thead>\n        <tbody className=\"divide-border bg-card divide-y\">\n          {tableData.map((row) => (\n            <SortableRow\n              key={row.id}\n              id={row.id.toString()}\n              enableReordering={enableReordering}\n            >\n              <td className=\"px-6 py-4 whitespace-nowrap\">\n                <div className=\"flex items-center gap-2\">\n                  <div className={enableReordering ? \"cursor-move\" : \"\"}>\n                    <GripVertical\n                      className={`h-4 w-4 ${enableReordering ? \"text-muted-foreground\" : \"text-muted-foreground/50\"}`}\n                    />\n                  </div>\n                  <div className=\"text-foreground text-sm font-medium\">\n                    {row.order}\n                  </div>\n                </div>\n              </td>\n              <td className=\"max-w-xs px-6 py-4 lg:max-w-md\">\n                <div className=\"flex min-w-0 items-center gap-3\">\n                  <div className=\"bg-muted flex size-8 shrink-0 items-center justify-center overflow-hidden rounded\">\n                    {row.image_url ? (\n                      <img\n                        src={String(row.image_url)}\n                        alt={String(row.title)}\n                        className=\"h-full w-full object-cover\"\n                      />\n                    ) : (\n                      getItemIcon(row.relateable_type || \"\")\n                    )}\n                  </div>\n                  <div className=\"min-w-0 flex-1\">\n                    <div className=\"text-foreground truncate text-sm font-medium\">\n                      {row.title || t(\"common_untitled\")}\n                    </div>\n                  </div>\n                </div>\n              </td>\n              <td className=\"px-6 py-4 whitespace-nowrap\">\n                <div className=\"bg-muted text-foreground inline-flex items-center gap-1 rounded-full px-2 py-1 text-xs\">\n                  {(() => {\n                    const Icon = typeBadgeIcon(\n                      row.relateable_type || \"\",\n                      row.kind || \"\",\n                    );\n                    return (\n                      <>\n                        <Icon className=\"size-3 shrink-0\" />\n                        {getTypeDisplay(\n                          row.relateable_type || \"\",\n                          row.kind || \"\",\n                          t,\n                        )}\n                      </>\n                    );\n                  })()}\n                </div>\n              </td>\n              <td className=\"px-6 py-4 text-right text-sm font-medium whitespace-nowrap\">\n                {isMobile ? (\n                  <Button\n                    variant=\"ghost\"\n                    size=\"sm\"\n                    className=\"flex size-8 items-center justify-center p-0\"\n                    disabled={isDeletePending}\n                    onClick={() => {\n                      const itemId =\n                        typeof row.id === \"number\"\n                          ? row.id\n                          : parseInt(String(row.id).replace(\"item-\", \"\"));\n                      setActionItemId(itemId);\n                    }}\n                  >\n                    <MoreHorizontal className=\"size-4\" />\n                  </Button>\n                ) : (\n                  <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                      <Button\n                        variant=\"ghost\"\n                        size=\"sm\"\n                        className=\"flex size-8 items-center justify-center p-0\"\n                        disabled={isDeletePending}\n                      >\n                        <MoreHorizontal className=\"size-4\" />\n                      </Button>\n                    </DropdownMenuTrigger>\n                    <DropdownMenuContent align=\"end\">\n                      <DropdownMenuItem\n                        onClick={() => {\n                          const itemId =\n                            typeof row.id === \"number\"\n                              ? row.id\n                              : parseInt(String(row.id).replace(\"item-\", \"\"));\n                          onDeleteItem(itemId);\n                        }}\n                        variant=\"destructive\"\n                      >\n                        <Trash2 className=\"mr-2 size-4\" />\n                        {t(\"playlist_delete_item\")}\n                      </DropdownMenuItem>\n                    </DropdownMenuContent>\n                  </DropdownMenu>\n                )}\n              </td>\n            </SortableRow>\n          ))}\n        </tbody>\n      </table>\n    </div>\n  );\n\n  const mobileActions = (\n    <MobileActionSheet\n      open={actionItemId !== null}\n      onOpenChange={(open) => {\n        if (!open) setActionItemId(null);\n      }}\n      title={t(\"playlist_table_actions\")}\n      actions={[\n        {\n          id: \"delete\",\n          label: t(\"playlist_delete_item\"),\n          variant: \"destructive\",\n          disabled: isDeletePending,\n          onSelect: () => {\n            if (actionItemId !== null) onDeleteItem(actionItemId);\n          },\n        },\n      ]}\n    />\n  );\n\n  if (enableReordering) {\n    return (\n      <>\n        <DndContext\n          sensors={sensors}\n          collisionDetection={closestCenter}\n          onDragEnd={handleDragEnd}\n        >\n          <SortableContext\n            items={tableData.map((item) => item.id.toString())}\n            strategy={verticalListSortingStrategy}\n          >\n            {tableContent}\n          </SortableContext>\n        </DndContext>\n        {mobileActions}\n      </>\n    );\n  }\n\n  return (\n    <>\n      {tableContent}\n      {mobileActions}\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport { Plus } from \"lucide-react\";\nimport {\n  FilePicker,\n  FilePickerApiProvider,\n  FilePickerProvider,\n  type FilePickerContextValue,\n} from \"@fluid-app/file-picker-ui\";\nimport type { FilePickerResult } from \"@fluid-app/file-picker-core\";\nimport {\n  useAddItemToPlaylistMutation,\n  useRemoveItemsFromPlaylistMutation,\n  useReorderPlaylistItemsMutation,\n  useShareablesApi,\n} from \"@fluid-app/shareables-core\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport type { shareables } from \"@fluid-app/shareables-core\";\nimport { useShareablesUI } from \"../../../context\";\nimport {\n  usePlaylistItems,\n  type PlaylistItemLike,\n} from \"./PlaylistItemsContext\";\nimport { SortableTable } from \"./SortableTable\";\n\nconst REORDER_DEBOUNCE_MS = 500;\n\n// Single source of truth: each content type maps a polymorphic playlist\n// item's BFF discriminator (`content_type`, used in the picker's prefixed\n// `asset_code`) to the legacy admin shape's `relateable_type` (still the\n// canonical key in PlaylistItemLike). Adding or renaming a type means\n// updating this one table; the picker tabs, the section bucketing, and\n// the prefix-aware result handler all derive from it.\nconst CONTENT_TYPES = [\n  { prefix: \"media_\", relateableType: \"Medium\", section: \"primary\" },\n  { prefix: \"page_\", relateableType: \"Page\", section: \"primary\" },\n  { prefix: \"product_\", relateableType: \"Product\", section: \"tagged\" },\n  {\n    prefix: \"enrollment_pack_\",\n    relateableType: \"EnrollmentPack\",\n    section: \"tagged\",\n  },\n] as const satisfies ReadonlyArray<{\n  prefix: string;\n  relateableType: string;\n  section: \"primary\" | \"tagged\";\n}>;\n\nconst PRIMARY_CONTENT_TYPES = new Set<string>(\n  CONTENT_TYPES.filter((c) => c.section === \"primary\").map(\n    (c) => c.relateableType,\n  ),\n);\nconst TAGGED_CONTENT_TYPES = new Set<string>(\n  CONTENT_TYPES.filter((c) => c.section === \"tagged\").map(\n    (c) => c.relateableType,\n  ),\n);\nconst PLAYLIST_CONTENT_TYPES = new Set<string>(\n  CONTENT_TYPES.map((c) => c.relateableType),\n);\n\nfunction deriveRelateableType(assetCode: string): string | null {\n  for (const entry of CONTENT_TYPES) {\n    if (assetCode.startsWith(entry.prefix)) return entry.relateableType;\n  }\n  return null;\n}\n\nfunction computeOrderedItems(items: PlaylistItemLike[]): PlaylistItemLike[] {\n  const required: PlaylistItemLike[] = [];\n  const optional: PlaylistItemLike[] = [];\n\n  items.forEach((item) => {\n    const type = item.relateable_type;\n    if (type && PRIMARY_CONTENT_TYPES.has(type)) {\n      required.push(item);\n    } else if (type && TAGGED_CONTENT_TYPES.has(type)) {\n      optional.push(item);\n    }\n  });\n\n  const result: PlaylistItemLike[] = [];\n  required.forEach((item, index) => {\n    if (item.id) {\n      result.push({ ...item, order: index + 1 });\n    }\n  });\n  optional.forEach((item, index) => {\n    if (item.id) {\n      result.push({ ...item, order: required.length + index + 1 });\n    }\n  });\n  return result;\n}\n\ninterface PlaylistItemsSectionProps {\n  playlistId?: number;\n}\n\ninterface SectionConfig {\n  /** Section UI heading. */\n  heading: string;\n  /** Subheading copy under the heading. */\n  description: string;\n  /** Allowed picker methods scoped to this section. */\n  allowedMethods: (\"media\" | \"pages\" | \"products\" | \"enrollment_packs\")[];\n  /** relateable_type values this section accepts (defensive filter for picker output). */\n  allowedRelateableTypes: Set<string>;\n}\n\nfunction useSections(t: ReturnType<typeof useShareablesTranslation>[\"t\"]): {\n  primary: SectionConfig;\n  tagged: SectionConfig;\n} {\n  return useMemo(\n    () => ({\n      primary: {\n        heading: t(\"playlist_items_heading\"),\n        description: t(\"playlist_items_description\"),\n        allowedMethods: [\"media\", \"pages\"],\n        allowedRelateableTypes: PRIMARY_CONTENT_TYPES,\n      },\n      tagged: {\n        heading: t(\"playlist_tagged_products_heading\"),\n        description: t(\"playlist_tagged_products_description\"),\n        allowedMethods: [\"products\", \"enrollment_packs\"],\n        allowedRelateableTypes: TAGGED_CONTENT_TYPES,\n      },\n    }),\n    [t],\n  );\n}\n\nexport function PlaylistItemsSection({\n  playlistId,\n}: PlaylistItemsSectionProps): React.JSX.Element {\n  const { t, locale } = useShareablesTranslation();\n  const { showToast, filePickerApi, pickerSources } = useShareablesUI();\n  const api = useShareablesApi();\n  const SECTIONS = useSections(t);\n  const [openSection, setOpenSection] = useState<\"primary\" | \"tagged\" | null>(\n    null,\n  );\n\n  const {\n    items: contextItems,\n    updateItems,\n    addItem,\n    removeItem,\n  } = usePlaylistItems();\n\n  const tableItems = contextItems;\n\n  const { primaryItems, taggedItems } = useMemo(() => {\n    const primary: PlaylistItemLike[] = [];\n    const tagged: PlaylistItemLike[] = [];\n    tableItems.forEach((item) => {\n      if (\n        item.relateable_type &&\n        PRIMARY_CONTENT_TYPES.has(item.relateable_type)\n      ) {\n        primary.push(item);\n      } else if (\n        item.relateable_type &&\n        TAGGED_CONTENT_TYPES.has(item.relateable_type)\n      ) {\n        tagged.push(item);\n      }\n    });\n    return { primaryItems: primary, taggedItems: tagged };\n  }, [tableItems]);\n\n  const addItemMutation = useAddItemToPlaylistMutation({\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"playlist_add_item_error\"),\n        type: \"error\",\n        error,\n      });\n    },\n  });\n\n  const removeItemMutation = useRemoveItemsFromPlaylistMutation({\n    onSuccess: () => {\n      showToast({\n        title: t(\"playlist_remove_item_success\"),\n        type: \"success\",\n      });\n    },\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"playlist_remove_item_error\"),\n        type: \"error\",\n        error,\n      });\n    },\n  });\n\n  const reorderItemsMutation = useReorderPlaylistItemsMutation();\n\n  const reorderTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n  // Snapshot taken at the start of a debounce cycle so we can revert if\n  // the eventual server call fails. Cleared on success/error.\n  const reorderRollbackRef = useRef<PlaylistItemLike[] | null>(null);\n\n  useEffect(\n    () => () => {\n      if (reorderTimerRef.current) clearTimeout(reorderTimerRef.current);\n    },\n    [],\n  );\n\n  const canPersistReorder = !!api.playlists.reorderPlaylistItems;\n\n  // Reorder handler — accepts a single section's reordered list, merges with\n  // the other section's items, recomputes global order numbers, persists.\n  const mergeAndOrder = useCallback(\n    (reordered: PlaylistItemLike[], whichSection: \"primary\" | \"tagged\") => {\n      const merged =\n        whichSection === \"primary\"\n          ? [...reordered, ...taggedItems]\n          : [...primaryItems, ...reordered];\n      const ordered = computeOrderedItems(merged);\n\n      if (\n        playlistId &&\n        canPersistReorder &&\n        reorderTimerRef.current === null &&\n        reorderRollbackRef.current === null\n      ) {\n        reorderRollbackRef.current = tableItems;\n      }\n\n      updateItems(ordered);\n\n      if (!playlistId || !canPersistReorder) return;\n\n      if (reorderTimerRef.current) clearTimeout(reorderTimerRef.current);\n      reorderTimerRef.current = setTimeout(() => {\n        reorderTimerRef.current = null;\n        const rollback = reorderRollbackRef.current;\n        reorderItemsMutation.mutate(\n          {\n            playlistId,\n            data: {\n              items: ordered\n                .filter(\n                  (\n                    item,\n                  ): item is PlaylistItemLike & {\n                    id: number;\n                    order: number;\n                  } =>\n                    Number.isInteger(item.id) && typeof item.order === \"number\",\n                )\n                .map((item) => ({ id: item.id, order: item.order })),\n            },\n          },\n          {\n            onSuccess: () => {\n              if (reorderTimerRef.current === null) {\n                reorderRollbackRef.current = null;\n              } else {\n                reorderRollbackRef.current = ordered;\n              }\n            },\n            onError: (error) => {\n              if (rollback) updateItems(rollback);\n              reorderRollbackRef.current = null;\n              showToast({\n                title: t(\"playlist_reorder_error\"),\n                type: \"error\",\n                error,\n              });\n            },\n          },\n        );\n      }, REORDER_DEBOUNCE_MS);\n    },\n    [\n      primaryItems,\n      taggedItems,\n      tableItems,\n      updateItems,\n      playlistId,\n      canPersistReorder,\n      reorderItemsMutation.mutate,\n      showToast,\n      t,\n    ],\n  );\n\n  const handleDeleteItem = (itemId: number) => {\n    removeItem(itemId);\n    if (playlistId) {\n      removeItemMutation.mutate({\n        playlistId,\n        itemIds: [itemId],\n      });\n    }\n  };\n\n  // Per-section picker result handler: each result's asset_code prefix\n  // determines its relateable_type. Items not matching the section's\n  // allowed types are silently skipped (defensive — picker is scoped, but\n  // we don't want a misconfigured host to corrupt the playlist).\n  const buildResultsHandler = useCallback(\n    (section: SectionConfig) => async (results: FilePickerResult[]) => {\n      setOpenSection(null);\n      if (results.length === 0) {\n        showToast({\n          title: t(\"playlist_no_items_selected\"),\n          type: \"warning\",\n        });\n        return;\n      }\n\n      let nextOrder = tableItems.length + 1;\n\n      for (const result of results) {\n        const relateableType = deriveRelateableType(result.asset_code);\n        if (!relateableType) continue;\n        if (!section.allowedRelateableTypes.has(relateableType)) continue;\n\n        const relateableId = result.asset_id;\n        const label =\n          result.metadata?.file_name || `${relateableType} #${relateableId}`;\n\n        const itemExists = tableItems.some(\n          (existing) =>\n            existing.relateable_type === relateableType &&\n            existing.relateable?.id === relateableId,\n        );\n        if (itemExists) {\n          showToast({\n            title: t(\"playlist_item_already_exists\"),\n            type: \"error\",\n          });\n          continue;\n        }\n\n        const order = nextOrder++;\n\n        const newItem: PlaylistItemLike = {\n          id: Date.now() + Math.random(),\n          order,\n          relateable_type: relateableType,\n          relateable: {\n            id: relateableId,\n            title: label,\n            image_url: result.thumbnail_url ?? result.file_url ?? null,\n          },\n        };\n\n        if (playlistId) {\n          try {\n            await addItemMutation.mutateAsync({\n              playlistId,\n              newItem,\n              data: {\n                relateable_type: relateableType,\n                relateable_id: relateableId,\n                order,\n              },\n            });\n            showToast({\n              title: t(\"playlist_add_item_success\"),\n              type: \"success\",\n            });\n          } catch {\n            // Error already handled by mutation onError\n          }\n        } else {\n          addItem(newItem);\n        }\n      }\n    },\n    [tableItems, playlistId, addItemMutation, addItem, showToast, t],\n  );\n\n  const filePickerContextValue = useMemo<FilePickerContextValue | null>(() => {\n    if (!filePickerApi) return null;\n    return {\n      toast: {\n        success: (msg: string) => showToast({ title: msg, type: \"success\" }),\n        error: (msg: string, error?: unknown) =>\n          showToast({\n            title: error instanceof Error ? `${msg}: ${error.message}` : msg,\n            type: \"error\",\n          }),\n        loading: () => \"\",\n        dismiss: () => {},\n      },\n      shareablesClient: {\n        media: {\n          cacheKey: `locale:${locale}`,\n          list: (filters: unknown) =>\n            api.media.getMedia({\n              ...((filters ?? {}) as shareables.MediaFilters),\n              language_iso: locale,\n            }),\n        },\n        // Wire content-browser tabs only when the host supplies a source.\n        // Missing entries cause the picker to hide the corresponding tab.\n        ...(pickerSources?.pages\n          ? {\n              pages: {\n                ...pickerSources.pages,\n                cacheKey: `${pickerSources.pages.cacheKey ?? \"source\"}|locale:${locale}`,\n              },\n            }\n          : {}),\n        ...(pickerSources?.products\n          ? {\n              products: {\n                ...pickerSources.products,\n                cacheKey: `${pickerSources.products.cacheKey ?? \"source\"}|locale:${locale}`,\n              },\n            }\n          : {}),\n        ...(pickerSources?.enrollment_packs\n          ? {\n              enrollment_packs: {\n                ...pickerSources.enrollment_packs,\n                cacheKey: `${pickerSources.enrollment_packs.cacheKey ?? \"source\"}|locale:${locale}`,\n              },\n            }\n          : {}),\n      },\n    };\n  }, [filePickerApi, showToast, api, pickerSources, locale]);\n\n  // Always render the two sections (and their tables of existing items).\n  // The picker tree is only mounted when the host supplies a FilePickerApi —\n  // missing-host scenarios (tests, Storybook, hosts without DAM) get a\n  // disabled Add Item button instead of an empty editor.\n  const pickerAvailable = !!filePickerApi && !!filePickerContextValue;\n\n  return (\n    <div className=\"space-y-8\">\n      <PlaylistItemsSubsection\n        section={SECTIONS.primary}\n        items={primaryItems}\n        onAdd={() => setOpenSection(\"primary\")}\n        onReorder={(reordered) => mergeAndOrder(reordered, \"primary\")}\n        onDeleteItem={handleDeleteItem}\n        isPending={addItemMutation.isPending}\n        isDeletePending={removeItemMutation.isPending}\n        disableAdd={!pickerAvailable}\n      />\n      <PlaylistItemsSubsection\n        section={SECTIONS.tagged}\n        items={taggedItems}\n        onAdd={() => setOpenSection(\"tagged\")}\n        onReorder={(reordered) => mergeAndOrder(reordered, \"tagged\")}\n        onDeleteItem={handleDeleteItem}\n        isPending={addItemMutation.isPending}\n        isDeletePending={removeItemMutation.isPending}\n        disableAdd={!pickerAvailable}\n      />\n\n      {pickerAvailable && (\n        <FilePickerApiProvider api={filePickerApi}>\n          <FilePickerProvider value={filePickerContextValue}>\n            <FilePicker\n              open={openSection === \"primary\"}\n              onClose={() => setOpenSection(null)}\n              onFilesSelected={(selected) =>\n                void buildResultsHandler(SECTIONS.primary)(selected)\n              }\n              config={{\n                maxFiles: 50,\n                allowedMethods: SECTIONS.primary.allowedMethods,\n                unifiedSelection: true,\n              }}\n            />\n            <FilePicker\n              open={openSection === \"tagged\"}\n              onClose={() => setOpenSection(null)}\n              onFilesSelected={(selected) =>\n                void buildResultsHandler(SECTIONS.tagged)(selected)\n              }\n              config={{\n                maxFiles: 50,\n                allowedMethods: SECTIONS.tagged.allowedMethods,\n                unifiedSelection: true,\n              }}\n            />\n          </FilePickerProvider>\n        </FilePickerApiProvider>\n      )}\n    </div>\n  );\n}\n\ninterface SubsectionProps {\n  section: SectionConfig;\n  items: PlaylistItemLike[];\n  onAdd: () => void;\n  onReorder: (reordered: PlaylistItemLike[]) => void;\n  onDeleteItem: (itemId: number) => void;\n  isPending: boolean;\n  isDeletePending: boolean;\n  /**\n   * When true the Add Item button is disabled — used when the host hasn't\n   * supplied a FilePickerApi, so existing items remain visible/editable but\n   * the picker can't open.\n   */\n  disableAdd?: boolean;\n}\n\nfunction PlaylistItemsSubsection({\n  section,\n  items,\n  onAdd,\n  onReorder,\n  onDeleteItem,\n  isPending,\n  isDeletePending,\n  disableAdd = false,\n}: SubsectionProps) {\n  const { t } = useShareablesTranslation();\n\n  return (\n    <div className=\"border-border bg-card rounded-lg border p-4\">\n      <div className=\"space-y-4\">\n        <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n          <div className=\"min-w-0\">\n            <h3 className=\"text-md text-foreground font-semibold\">\n              {section.heading}\n            </h3>\n            <p className=\"text-muted-foreground text-sm\">\n              {section.description}\n            </p>\n          </div>\n          <div className=\"flex shrink-0 flex-wrap items-center justify-end gap-2\">\n            <Button\n              type=\"button\"\n              disabled={isPending || disableAdd}\n              variant=\"default\"\n              size=\"sm\"\n              className=\"flex min-w-25 items-center gap-2\"\n              onClick={onAdd}\n            >\n              <Plus className=\"size-4\" />\n              {t(\"playlist_add_item_button\")}\n            </Button>\n          </div>\n        </div>\n\n        <SortableTable\n          items={items}\n          setItems={(reordered) => onReorder(reordered)}\n          onDeleteItem={onDeleteItem}\n          isDeletePending={isDeletePending}\n          enableReordering\n        />\n      </div>\n    </div>\n  );\n}\n\nexport { PLAYLIST_CONTENT_TYPES };\n","\"use client\";\n\nimport type React from \"react\";\nimport { useMemo } from \"react\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { usePlaylistForm, type PlaylistLike } from \"./PlaylistFormProvider\";\nimport {\n  usePlaylistItems,\n  type PlaylistItemLike,\n} from \"./PlaylistItemsContext\";\n\nconst OG_PLACEHOLDER_IMAGE =\n  \"https://ik.imagekit.io/fluid/s3/placeholders/image.jpg?w=1200&q=75\";\n\nconst PLAYLIST_PREVIEW_CONTENT_TYPES = new Set<string>([\n  \"Medium\",\n  \"Page\",\n  \"Product\",\n  \"EnrollmentPack\",\n]);\n\nfunction getImageFromRelateable(\n  item: PlaylistItemLike | undefined,\n): string | null {\n  const r = item?.relateable;\n  if (!r) return null;\n  const url = r.image_url || r.compressed_image_url;\n  const t = url?.trim();\n  return t || null;\n}\n\nfunction getFirstOrderedContentItem(\n  items: PlaylistItemLike[],\n): PlaylistItemLike | undefined {\n  const content = items.filter(\n    (item) =>\n      item.relateable_type &&\n      PLAYLIST_PREVIEW_CONTENT_TYPES.has(item.relateable_type),\n  );\n  if (content.length === 0) return undefined;\n  return content.toSorted(\n    (a, b) =>\n      (a.order ?? Number.POSITIVE_INFINITY) -\n      (b.order ?? Number.POSITIVE_INFINITY),\n  )[0];\n}\n\nfunction stripHtml(html: string): string {\n  if (!html) return \"\";\n  const doc = new DOMParser().parseFromString(html, \"text/html\");\n  return doc.body.textContent || \"\";\n}\n\nfunction buildPlaylistUrl(options: {\n  playlist?: PlaylistLike | null;\n  formSlug?: string | null;\n  baseUrl?: string;\n  preview?: boolean;\n}): string {\n  const { playlist, formSlug, baseUrl, preview = false } = options;\n\n  if (playlist?.canonical_url) {\n    return preview\n      ? `${playlist.canonical_url}?preview=true`\n      : playlist.canonical_url;\n  }\n  if (playlist?.preview_link) {\n    return preview\n      ? playlist.preview_link\n      : playlist.preview_link.replace(\"?preview=true\", \"\");\n  }\n  const slug = formSlug || playlist?.slug;\n  if (baseUrl && slug) {\n    const cleanBaseUrl = baseUrl.replace(/\\/$/, \"\");\n    const url = `${cleanBaseUrl}/playlists/${slug}`;\n    return preview ? `${url}?preview=true` : url;\n  }\n  return \"\";\n}\n\nexport interface PlaylistOpenGraphPreviewProps {\n  playlist?: PlaylistLike | null;\n  playlistShareBaseUrl?: string;\n}\n\nexport function PlaylistOpenGraphPreview({\n  playlist,\n  playlistShareBaseUrl,\n}: PlaylistOpenGraphPreviewProps): React.JSX.Element {\n  const { t } = useShareablesTranslation();\n  const { form } = usePlaylistForm();\n  const { items } = usePlaylistItems();\n  const seo = form.search_engine_optimizer;\n\n  const firstContentItem = useMemo(\n    () => getFirstOrderedContentItem(items),\n    [items],\n  );\n\n  const firstItemImageUrl = useMemo(\n    () => getImageFromRelateable(firstContentItem),\n    [firstContentItem],\n  );\n\n  const title =\n    (seo?.title || form.title || \"\").trim() || t(\"playlist_og_title_fallback\");\n\n  const rawDescription =\n    (seo?.description || \"\").trim() || stripHtml(form.description || \"\") || \"\";\n  const description = rawDescription || t(\"playlist_og_description_fallback\");\n\n  const imageUrl =\n    firstItemImageUrl ||\n    (seo?.image_url || \"\").trim() ||\n    (form.image_url || \"\").trim();\n\n  const shareUrl = useMemo(\n    () =>\n      buildPlaylistUrl({\n        playlist,\n        formSlug: form.slug,\n        baseUrl: playlistShareBaseUrl,\n        preview: false,\n      }),\n    [playlist, form.slug, playlistShareBaseUrl],\n  );\n\n  const hostname = useMemo(() => {\n    if (!shareUrl) return \"\";\n    try {\n      return new URL(shareUrl).hostname;\n    } catch {\n      return shareUrl.replace(/^https?:\\/\\//, \"\").split(\"/\")[0] ?? \"\";\n    }\n  }, [shareUrl]);\n\n  return (\n    <div className=\"border-border bg-card rounded-lg border p-4 shadow-xs\">\n      <h3 className=\"text-foreground mb-2 text-sm font-semibold\">\n        {t(\"playlist_preview_heading\")}\n      </h3>\n      <div className=\"border-border bg-card overflow-hidden rounded-lg border\">\n        <div className=\"bg-muted aspect-[1200/630] w-full\">\n          <img\n            key={imageUrl || \"placeholder\"}\n            src={imageUrl || OG_PLACEHOLDER_IMAGE}\n            alt=\"\"\n            className=\"h-full w-full object-cover\"\n          />\n        </div>\n        <div className=\"space-y-1 p-3\">\n          <p className=\"text-muted-foreground text-[11px] tracking-wide uppercase\">\n            {hostname || t(\"common_site_hostname_fallback\")}\n          </p>\n          <p className=\"text-foreground line-clamp-2 text-base font-semibold\">\n            {title}\n          </p>\n          <p className=\"text-muted-foreground line-clamp-3 text-sm leading-snug\">\n            {description}\n          </p>\n        </div>\n      </div>\n    </div>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useEffect, useCallback } from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n  useShareablesApi,\n  useCreatePlaylistMutation,\n  useUpdatePlaylistMutation,\n  shareablesKeys,\n} from \"@fluid-app/shareables-core\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Skeleton,\n} from \"@fluid-app/ui-primitives\";\nimport { ScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { useShareablesUI } from \"../../context\";\nimport {\n  PlaylistFormProvider,\n  usePlaylistForm,\n  type PlaylistLike,\n} from \"../playlists/form/PlaylistFormProvider\";\nimport {\n  PlaylistItemsProvider,\n  usePlaylistItems,\n  type PlaylistItemLike,\n} from \"../playlists/form/PlaylistItemsContext\";\nimport { PlaylistFormHeader } from \"../playlists/form/PlaylistFormHeader\";\nimport { PlaylistFormDetails } from \"../playlists/form/PlaylistFormDetails\";\nimport { PlaylistItemsSection } from \"../playlists/form/PlaylistItemsSection\";\nimport { PlaylistOpenGraphPreview } from \"../playlists/form/PlaylistOpenGraphPreview\";\n\nexport interface PlaylistCreateScreenProps {\n  playlistId?: string;\n  onBack?: () => void;\n  /** Hide the built-in header (use when the host app provides its own header chrome) */\n  hideHeader?: boolean;\n  /** Render custom children inside the form providers (e.g. portal shell header wiring) */\n  renderHeaderSlot?: (props: {\n    onSubmit: () => Promise<void>;\n    isSaving: boolean;\n    playlistId?: string;\n    isEditMode: boolean;\n  }) => React.ReactNode;\n}\n\nfunction PlaylistFormContent({\n  playlistId,\n  playlist,\n  isEditMode,\n  onBack,\n  hideHeader,\n  renderHeaderSlot,\n}: {\n  playlistId?: string;\n  playlist?: PlaylistLike | null;\n  isEditMode: boolean;\n  onBack?: () => void;\n  hideHeader?: boolean;\n  renderHeaderSlot?: PlaylistCreateScreenProps[\"renderHeaderSlot\"];\n}) {\n  const api = useShareablesApi();\n  const { t } = useShareablesTranslation();\n  const { showToast, navigate, user } = useShareablesUI();\n  const { items: contextItems } = usePlaylistItems();\n  const { form, updateField, validateForm } = usePlaylistForm();\n\n  const playlistTitle = form.title || \"\";\n  const slugValue = form.slug ?? \"\";\n\n  // Auto-generate slug from title\n  useEffect(() => {\n    const isCustomSlug = form.custom_slug || playlist?.custom_slug || false;\n    if (playlistTitle && !isCustomSlug) {\n      const generatedSlug = playlistTitle\n        .toLowerCase()\n        .replace(/[^a-z0-9\\s-]/g, \"\")\n        .replace(/\\s+/g, \"-\")\n        .replace(/-+/g, \"-\")\n        .replace(/^-+|-+$/g, \"\");\n\n      if (generatedSlug !== slugValue) {\n        updateField(\"slug\", generatedSlug);\n      }\n    }\n  }, [\n    playlistTitle,\n    form.custom_slug,\n    playlist?.custom_slug,\n    slugValue,\n    updateField,\n  ]);\n\n  const createMutation = useCreatePlaylistMutation({\n    onSuccess: (createdPlaylist) => {\n      showToast({ title: t(\"playlist_create_success\"), type: \"success\" });\n      const newId = createdPlaylist.playlist.id;\n      navigate(`playlists/${newId}/edit`);\n    },\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"playlist_create_error\"),\n        type: \"error\",\n        error,\n      });\n    },\n  });\n\n  const updateMutation = useUpdatePlaylistMutation({\n    onSuccess: () => {\n      showToast({ title: t(\"playlist_update_success\"), type: \"success\" });\n    },\n    onError: (error: Error) => {\n      showToast({\n        title: t(\"playlist_update_error\"),\n        type: \"error\",\n        error,\n      });\n    },\n  });\n\n  const itemsForSubmission = contextItems;\n\n  const onSaveForm = useCallback(async (): Promise<number> => {\n    if (!validateForm()) {\n      showToast({\n        title: t(\"common_fill_required_fields\"),\n        type: \"error\",\n      });\n      return Promise.reject(new Error(\"Validation failed\"));\n    }\n\n    const formData = {\n      title: form.title,\n      description: form.description ?? null,\n      image_url: form.image_url ?? null,\n      slug: form.slug || null,\n      custom_slug: form.custom_slug ?? false,\n      category_id: form.category_id ?? null,\n      application_theme_template_id: form.application_theme_template_id\n        ? Number(form.application_theme_template_id)\n        : null,\n      active: isEditMode ? (form.active ?? false) : true,\n      company_library: true,\n      indexed_for_seo: form.indexed_for_seo ?? false,\n      available_countries: form.countries ?? [],\n      search_engine_optimizer_attributes:\n        form.search_engine_optimizer ?? undefined,\n    };\n\n    if (isEditMode && playlistId) {\n      await updateMutation.mutateAsync({\n        playlistId: parseInt(playlistId),\n        data: {\n          playlist: {\n            ...formData,\n            library_items_attributes: itemsForSubmission?.map((item) => ({\n              id: item.id,\n              order: item.order,\n            })),\n          },\n        },\n      });\n      return parseInt(playlistId);\n    }\n\n    let searchEngineOptimizer = form.search_engine_optimizer;\n    if (!searchEngineOptimizer) {\n      searchEngineOptimizer = {\n        title: form.title || \"\",\n        description: \"\",\n        image_url: \"\",\n        image_path: \"\",\n        block_crawler: false,\n      };\n    }\n\n    const createdPlaylist = await createMutation.mutateAsync({\n      playlist: {\n        ...formData,\n        search_engine_optimizer_attributes: searchEngineOptimizer,\n        ...(user?.id ? { user_id: user.id } : {}),\n      },\n    });\n    const newPlaylistId = createdPlaylist.playlist.id;\n\n    if (itemsForSubmission.length > 0) {\n      try {\n        const itemsData = itemsForSubmission\n          .filter(\n            (\n              item,\n            ): item is PlaylistItemLike & {\n              relateable_type: string;\n              relateable: { id: number };\n            } =>\n              !!item.relateable_type && typeof item.relateable?.id === \"number\",\n          )\n          .map((item, index) => ({\n            relateable_type: item.relateable_type,\n            relateable_id: item.relateable.id,\n            order: index + 1,\n          }));\n\n        await api.playlists.addItemToPlaylist(newPlaylistId, {\n          items: itemsData,\n        });\n      } catch (itemError) {\n        console.error(\"Error adding items to playlist:\", itemError);\n        showToast({\n          title: t(\"playlist_create_items_partial_error\"),\n          type: \"warning\",\n        });\n      }\n    }\n\n    return newPlaylistId;\n  }, [\n    validateForm,\n    form,\n    isEditMode,\n    playlistId,\n    itemsForSubmission,\n    createMutation,\n    updateMutation,\n    showToast,\n    api,\n    user?.id,\n    t,\n  ]);\n\n  const isSaving = createMutation.isPending || updateMutation.isPending;\n  const handleSubmit = async () => {\n    await onSaveForm();\n  };\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  (onBack ?? (() => navigate(\"playlists\")))();\n                }}\n              >\n                {t(\"playlist_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            {isEditMode ? (\n              <>\n                <BreadcrumbSeparator />\n                <BreadcrumbItem>\n                  <BreadcrumbLink\n                    href=\"#\"\n                    onClick={(e) => {\n                      e.preventDefault();\n                      navigate(`playlists/${playlistId}`);\n                    }}\n                    className=\"block max-w-[40vw] truncate align-bottom md:max-w-[60ch]\"\n                  >\n                    {playlistTitle || t(\"playlist_breadcrumb_fallback\")}\n                  </BreadcrumbLink>\n                </BreadcrumbItem>\n                <BreadcrumbSeparator />\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"font-semibold\">\n                    {t(\"common_edit\")}\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </>\n            ) : (\n              <>\n                <BreadcrumbSeparator />\n                <BreadcrumbItem>\n                  <BreadcrumbPage className=\"font-semibold\">\n                    {t(\"playlist_create_breadcrumb\")}\n                  </BreadcrumbPage>\n                </BreadcrumbItem>\n              </>\n            )}\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      {renderHeaderSlot?.({\n        onSubmit: handleSubmit,\n        isSaving,\n        playlistId,\n        isEditMode,\n      })}\n      {!hideHeader && !renderHeaderSlot && (\n        <PlaylistFormHeader\n          playlistId={playlistId}\n          isEditMode={isEditMode}\n          onSubmit={handleSubmit}\n          isSaving={isSaving}\n          onBack={onBack}\n        />\n      )}\n      <div className=\"mx-auto w-full max-w-7xl space-y-6 px-6 pt-6 pb-8 md:px-10 md:py-8\">\n        <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n          <div className=\"space-y-6 lg:col-span-2\">\n            <PlaylistFormDetails />\n            <PlaylistItemsSection\n              playlistId={playlistId ? parseInt(playlistId, 10) : undefined}\n            />\n          </div>\n          <div className=\"space-y-6 lg:col-span-1\">\n            <PlaylistOpenGraphPreview playlist={playlist} />\n          </div>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport function PlaylistCreateScreen({\n  playlistId,\n  onBack,\n  hideHeader,\n  renderHeaderSlot,\n}: PlaylistCreateScreenProps): React.JSX.Element {\n  const api = useShareablesApi();\n  const { locale } = useShareablesTranslation();\n  const isEditMode = !!playlistId;\n\n  const { data: playlistResponse, isLoading } = useQuery({\n    queryKey: playlistId\n      ? shareablesKeys.playlists.detail(parseInt(playlistId, 10), locale)\n      : [\"playlists\", \"detail\", null, locale],\n    queryFn: () =>\n      api.playlists.getPlaylistById(parseInt(playlistId!, 10), locale),\n    enabled: isEditMode,\n  });\n\n  const playlist = playlistResponse?.playlist as PlaylistLike | undefined;\n  const itemsToUse: PlaylistItemLike[] =\n    (playlist?.items as PlaylistItemLike[] | undefined) ?? [];\n\n  if (isEditMode && isLoading) {\n    return (\n      <div className=\"mx-auto max-w-7xl space-y-6 px-6 pt-6 pb-8 md:px-10 md:py-8\">\n        <Skeleton className=\"h-8 w-48\" />\n        <Skeleton className=\"h-64 w-full\" />\n      </div>\n    );\n  }\n\n  return (\n    <PlaylistFormProvider playlist={playlist}>\n      <PlaylistItemsProvider initialItems={itemsToUse}>\n        <PlaylistFormContent\n          playlistId={playlistId}\n          playlist={playlist}\n          isEditMode={isEditMode}\n          onBack={onBack}\n          hideHeader={hideHeader}\n          renderHeaderSlot={renderHeaderSlot}\n        />\n      </PlaylistItemsProvider>\n    </PlaylistFormProvider>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useMemo } from \"react\";\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport { useShareablesApi } from \"@fluid-app/shareables-core\";\nimport {\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbPage,\n  Card,\n  Badge,\n} from \"@fluid-app/ui-primitives\";\nimport { SearchSort } from \"@fluid-app/ui-components/components/SearchSort\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { CirclePlay } from \"lucide-react\";\nimport { ScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useRenderImage } from \"../../context\";\nimport { useInfiniteListSentinel } from \"../../hooks/use-infinite-list-sentinel\";\nimport {\n  ShareableListLayout,\n  SHAREABLE_GRID_CLASS,\n} from \"../shared/ShareableListLayout\";\n\nconst PAGE_SIZE = 24;\n\nfunction formatFileSize(\n  bytes: number,\n  labels: { b: string; kb: string; mb: string; gb: string },\n): string {\n  if (bytes < 1024) return `${bytes} ${labels.b}`;\n  if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} ${labels.kb}`;\n  if (bytes < 1024 * 1024 * 1024)\n    return `${(bytes / (1024 * 1024)).toFixed(1)} ${labels.mb}`;\n  return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} ${labels.gb}`;\n}\n\nexport interface FilesListingScreenProps {\n  onNavigate?: (screen: string, detailId?: string) => void;\n}\n\nconst DEFAULT_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png\";\n\nexport function FilesListingScreen({\n  onNavigate: _onNavigate,\n}: FilesListingScreenProps): React.JSX.Element {\n  const api = useShareablesApi();\n  const renderImage = useRenderImage();\n  const { t } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [debouncedSearch, setDebouncedSearch] = useState(\"\");\n\n  // Debounce search input\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      setDebouncedSearch(searchTerm);\n    }, 300);\n    return () => clearTimeout(timer);\n  }, [searchTerm]);\n\n  const {\n    data,\n    isLoading,\n    isFetchingNextPage,\n    hasNextPage,\n    fetchNextPage,\n    error,\n  } = useInfiniteQuery({\n    queryKey: [\"shareables-files\", debouncedSearch],\n    queryFn: async ({ pageParam = 1 }) => {\n      const response = await api.fileResources.getFileResources({\n        search_query: debouncedSearch || undefined,\n        pageParam: pageParam.toString(),\n        pageSize: PAGE_SIZE.toString(),\n      });\n      return response;\n    },\n    getNextPageParam: (lastPage) => {\n      const { current_page, total_pages } = lastPage.meta;\n      return current_page < total_pages ? current_page + 1 : undefined;\n    },\n    initialPageParam: 1,\n  });\n\n  const files = useMemo(\n    () => data?.pages.flatMap((page) => page.file_resources) ?? [],\n    [data?.pages],\n  );\n\n  const sentinelRef = useInfiniteListSentinel({\n    hasNextPage,\n    isFetchingNextPage,\n    fetchNextPage,\n    error,\n  });\n\n  const footer = (\n    <>\n      {isFetchingNextPage && (\n        <div className=\"flex justify-center py-4\">\n          <div className=\"border-primary size-6 animate-spin rounded-full border-2 border-t-transparent\" />\n        </div>\n      )}\n      {error && (\n        <p className=\"bg-destructive/10 text-destructive rounded-lg px-3 py-2\">\n          {t(\"files_load_error\")}\n        </p>\n      )}\n    </>\n  );\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {t(\"files_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableListLayout\n        isLoading={isLoading}\n        isEmpty={\n          !error && files.length === 0 && !isFetchingNextPage && !hasNextPage\n        }\n        emptyMessage={\n          debouncedSearch\n            ? t(\"files_search_no_results\", { search: debouncedSearch })\n            : t(\"files_empty_default\")\n        }\n        filters={\n          <div className=\"flex justify-end\">\n            <div className=\"w-full max-w-sm\">\n              <SearchSort\n                presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n                searchValue={searchTerm}\n                onSearchChange={setSearchTerm}\n                placeholder={t(\"files_search_placeholder\")}\n              />\n            </div>\n          </div>\n        }\n        footer={footer}\n        sentinelRef={sentinelRef}\n      >\n        <div className={SHAREABLE_GRID_CLASS}>\n          {files.map((file) => {\n            const isVideo = file.content_type?.startsWith(\"video/\");\n            const fileUrl = file.url || \"#\";\n\n            return (\n              <Card\n                key={file.id}\n                role=\"button\"\n                tabIndex={0}\n                onClick={() => window.open(fileUrl, \"_blank\")}\n                onKeyDown={(e) => {\n                  if (e.key === \"Enter\" || e.key === \" \") {\n                    e.preventDefault();\n                    window.open(fileUrl, \"_blank\");\n                  }\n                }}\n                className=\"group hover:bg-muted cursor-pointer gap-0 overflow-hidden rounded-lg border-0 p-0 shadow-none transition-colors\"\n              >\n                <div className=\"bg-muted relative aspect-square overflow-hidden rounded-lg\">\n                  {renderImage({\n                    src: file.preview_image_url || DEFAULT_IMAGE,\n                    alt: file.filename || t(\"files_untitled\"),\n                    fill: true,\n                    className:\n                      \"object-cover transition-transform group-hover:scale-105\",\n                  })}\n                  {isVideo && (\n                    <div className=\"absolute inset-0 flex items-center justify-center\">\n                      <div className=\"bg-foreground/50 flex size-16 items-center justify-center rounded-full backdrop-blur-sm\">\n                        <CirclePlay className=\"text-background size-12\" />\n                      </div>\n                    </div>\n                  )}\n                  {!isVideo && (\n                    <Badge\n                      className=\"absolute top-2 right-2 shadow-lg\"\n                      variant=\"default\"\n                    >\n                      {formatFileSize(file.content_size, {\n                        b: t(\"files_size_b\"),\n                        kb: t(\"files_size_kb\"),\n                        mb: t(\"files_size_mb\"),\n                        gb: t(\"files_size_gb\"),\n                      })}\n                    </Badge>\n                  )}\n                </div>\n                <div className=\"px-2 pt-2 pb-4\">\n                  <h3 className=\"text-foreground line-clamp-2 text-sm leading-tight font-bold\">\n                    {file.filename || t(\"files_untitled\")}\n                  </h3>\n                  <p className=\"text-muted-foreground mt-1 text-xs\">\n                    {file.content_type || t(\"files_type_default\")}\n                  </p>\n                </div>\n              </Card>\n            );\n          })}\n        </div>\n      </ShareableListLayout>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useState, useEffect, useRef, useMemo } from \"react\";\nimport { useInfiniteQuery, keepPreviousData } from \"@tanstack/react-query\";\nimport { useShareablesApi, shareablesKeys } from \"@fluid-app/shareables-core\";\nimport {\n  Badge,\n  Breadcrumb,\n  BreadcrumbList,\n  BreadcrumbItem,\n  BreadcrumbPage,\n  Card,\n} from \"@fluid-app/ui-primitives\";\nimport { SearchSort } from \"@fluid-app/ui-components/components/SearchSort\";\nimport { useIsMobile } from \"@fluid-app/portal-react/shell/use-mobile\";\nimport { ScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useRenderImage } from \"../../context\";\nimport {\n  ShareableListLayout,\n  SHAREABLE_GRID_CLASS,\n} from \"../shared/ShareableListLayout\";\n\nconst PAGE_SIZE = 24;\n\nconst DEFAULT_IMAGE =\n  \"https://assets.fluid.app/fluid-admin/images/we-commerce/we-commerce.png\";\n\ntype SortValue = \"newest\" | \"title_asc\" | \"title_desc\";\n\nfunction toApiSort(value: SortValue): \"title_asc\" | \"title_desc\" | undefined {\n  return value === \"newest\" ? undefined : value;\n}\n\nexport interface PagesListingScreenProps {\n  onNavigate?: (screen: string, detailId?: string) => void;\n}\n\nexport function PagesListingScreen({\n  onNavigate,\n}: PagesListingScreenProps): React.JSX.Element {\n  const api = useShareablesApi();\n  const renderImage = useRenderImage();\n  const { t, locale } = useShareablesTranslation();\n  const isMobile = useIsMobile();\n\n  const [searchTerm, setSearchTerm] = useState(\"\");\n  const [debouncedSearch, setDebouncedSearch] = useState(\"\");\n  const [sortValue, setSortValue] = useState<SortValue>(\"newest\");\n  const observerTarget = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    const timer = setTimeout(() => setDebouncedSearch(searchTerm), 300);\n    return () => clearTimeout(timer);\n  }, [searchTerm]);\n\n  const queryKey = shareablesKeys.pages.list(\n    debouncedSearch,\n    sortValue,\n    locale,\n  );\n\n  const {\n    data,\n    isLoading,\n    isFetchingNextPage,\n    hasNextPage,\n    fetchNextPage,\n    error,\n  } = useInfiniteQuery({\n    queryKey,\n    queryFn: async ({ pageParam }) => {\n      const response = await api.pages.listPages({\n        cursor: pageParam,\n        limit: PAGE_SIZE,\n        \"filter[title]\": debouncedSearch || undefined,\n        sort: toApiSort(sortValue),\n        language_iso: locale,\n      });\n      return {\n        pages: response.pages,\n        nextCursor: response.meta.pagination?.next_cursor ?? null,\n      };\n    },\n    getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,\n    initialPageParam: undefined as string | undefined,\n    placeholderData: keepPreviousData,\n  });\n\n  const sortOptions = useMemo(\n    () => [\n      { label: t(\"sort_newest_first\"), value: \"newest\" },\n      { label: t(\"sort_title_asc\"), value: \"title_asc\" },\n      { label: t(\"sort_title_desc\"), value: \"title_desc\" },\n    ],\n    [t],\n  );\n\n  const allPages = useMemo(\n    () => data?.pages.flatMap((p) => p.pages) ?? [],\n    [data?.pages],\n  );\n\n  useEffect(() => {\n    const target = observerTarget.current;\n    if (!target) return;\n    const observer = new IntersectionObserver(\n      (entries) => {\n        if (entries[0]?.isIntersecting && hasNextPage && !isFetchingNextPage) {\n          fetchNextPage();\n        }\n      },\n      { threshold: 0, rootMargin: \"200px\" },\n    );\n    observer.observe(target);\n    return () => observer.disconnect();\n  }, [fetchNextPage, hasNextPage, isFetchingNextPage]);\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"font-semibold\">\n                {t(\"pages_breadcrumb\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableListLayout\n        isLoading={isLoading}\n        error={error}\n        errorMessage={t(\"pages_load_error\")}\n        isEmpty={allPages.length === 0 && !isFetchingNextPage}\n        emptyMessage={\n          debouncedSearch\n            ? t(\"pages_search_no_results\", { search: debouncedSearch })\n            : t(\"pages_empty_default\")\n        }\n        filters={\n          <div className=\"flex justify-end\">\n            <div className=\"w-full max-w-sm\">\n              <SearchSort\n                presentation={isMobile ? \"bottom-sheet\" : \"dialog\"}\n                searchValue={searchTerm}\n                onSearchChange={setSearchTerm}\n                placeholder={t(\"pages_search_placeholder\")}\n                sortOptions={sortOptions}\n                sortValue={sortValue}\n                onSortChange={(v) => setSortValue(v as SortValue)}\n              />\n            </div>\n          </div>\n        }\n        footer={\n          isFetchingNextPage && (\n            <div className=\"flex justify-center py-4\">\n              <div className=\"border-primary size-6 animate-spin rounded-full border-2 border-t-transparent\" />\n            </div>\n          )\n        }\n        sentinelRef={observerTarget}\n      >\n        <div className={SHAREABLE_GRID_CLASS}>\n          {allPages.map((page) => {\n            const title = page.title || t(\"pages_untitled\");\n            const openDetail = () => onNavigate?.(\"pages\", String(page.id));\n            return (\n              <Card\n                key={page.id}\n                role=\"button\"\n                tabIndex={0}\n                onClick={openDetail}\n                onKeyDown={(e) => {\n                  if (e.key === \"Enter\" || e.key === \" \") {\n                    e.preventDefault();\n                    openDetail();\n                  }\n                }}\n                className=\"group hover:bg-muted cursor-pointer gap-0 overflow-hidden rounded-lg border-0 p-0 shadow-none transition-colors\"\n              >\n                <div className=\"bg-muted relative aspect-square overflow-hidden rounded-lg\">\n                  {renderImage({\n                    src: page.image_url || DEFAULT_IMAGE,\n                    alt: title,\n                    fill: true,\n                    className:\n                      \"object-cover transition-transform group-hover:scale-105\",\n                  })}\n                  <Badge\n                    className=\"absolute top-2 right-2 shadow-lg\"\n                    variant={\n                      page.status === \"published\" ? \"default\" : \"secondary\"\n                    }\n                  >\n                    {page.status === \"published\"\n                      ? t(\"pages_status_published\")\n                      : t(\"pages_status_unpublished\")}\n                  </Badge>\n                </div>\n                <div className=\"px-2 pt-2 pb-4\">\n                  <h3 className=\"text-foreground line-clamp-2 text-sm leading-tight font-bold\">\n                    {title}\n                  </h3>\n                  {page.description && (\n                    <p className=\"text-muted-foreground mt-1 line-clamp-2 text-xs\">\n                      {page.description}\n                    </p>\n                  )}\n                </div>\n              </Card>\n            );\n          })}\n        </div>\n      </ShareableListLayout>\n    </>\n  );\n}\n","\"use client\";\n\nimport type React from \"react\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n  useShareablesApi,\n  useShareLink,\n  shareablesKeys,\n} from \"@fluid-app/shareables-core\";\nimport {\n  Breadcrumb,\n  BreadcrumbItem,\n  BreadcrumbLink,\n  BreadcrumbList,\n  BreadcrumbPage,\n  BreadcrumbSeparator,\n  Badge,\n} from \"@fluid-app/ui-primitives\";\nimport { ScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport SharePageImageDisplay from \"../SharePage/SharePageImageDisplay\";\nimport AssetActions from \"../SharePage/AssetActions\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport { useShareablesUI } from \"../../context\";\nimport type { ShareablesParentBreadcrumb } from \"../shareables-parent-breadcrumb-types\";\nimport { ShareableDetailLayout } from \"../shared/ShareableDetailLayout\";\n\nexport interface PageDetailScreenProps {\n  pageId: string;\n  onBack?: () => void;\n  parentBreadcrumb?: ShareablesParentBreadcrumb | null;\n}\n\nexport function PageDetailScreen({\n  pageId,\n  onBack,\n  parentBreadcrumb,\n}: PageDetailScreenProps): React.JSX.Element {\n  const api = useShareablesApi();\n  const { navigate } = useShareablesUI();\n  const { t, locale } = useShareablesTranslation();\n\n  const { data: pageResponse, isLoading } = useQuery({\n    queryKey: shareablesKeys.pages.detail(Number(pageId), locale),\n    queryFn: () => api.pages.getPage(Number(pageId), locale),\n  });\n\n  const page = pageResponse?.page;\n  const displayTitle = page?.title || \"\";\n  const displayImage = page?.image_url || \"\";\n  const description = page?.description ?? \"\";\n\n  const {\n    shareLink,\n    loading: shareLinkLoading,\n    error: shareLinkError,\n  } = useShareLink(\n    {\n      id: page?.id,\n      share_link: pageResponse?.share_link ?? undefined,\n    },\n    \"Page\",\n    undefined,\n    locale,\n  );\n\n  return (\n    <>\n      <ScreenHeaderBreadcrumbs>\n        <Breadcrumb>\n          <BreadcrumbList className=\"text-lg\">\n            <BreadcrumbItem>\n              <BreadcrumbLink\n                href=\"#\"\n                onClick={(e) => {\n                  e.preventDefault();\n                  (\n                    parentBreadcrumb?.onClick ??\n                    onBack ??\n                    (() => navigate(\"pages\"))\n                  )();\n                }}\n              >\n                {t(\"pages_breadcrumb\")}\n              </BreadcrumbLink>\n            </BreadcrumbItem>\n            <BreadcrumbSeparator />\n            <BreadcrumbItem>\n              <BreadcrumbPage className=\"block max-w-[60vw] truncate align-bottom font-semibold md:max-w-[60ch]\">\n                {displayTitle || t(\"pages_breadcrumb_fallback\")}\n              </BreadcrumbPage>\n            </BreadcrumbItem>\n          </BreadcrumbList>\n        </Breadcrumb>\n      </ScreenHeaderBreadcrumbs>\n      <ShareableDetailLayout\n        isLoading={isLoading}\n        notFound={!page && !isLoading}\n        notFoundMessage={t(\"pages_not_found\")}\n        title={displayTitle}\n        description={description}\n        containerHeightClass=\"md:h-[calc(95vh-140px)]\"\n        image={\n          <div className=\"relative h-full overflow-hidden\">\n            <SharePageImageDisplay\n              displayImage={displayImage}\n              displayTitle={displayTitle}\n              isVideo={false}\n              badgeLabel={t(\"pages_badge_label\")}\n              rounded\n              showBadge={false}\n              pdfPrevAriaLabel={t(\"pdf_previous_page_aria\")}\n              pdfNextAriaLabel={t(\"pdf_next_page_aria\")}\n              pdfDocumentTitle={t(\"pdf_document_title\")}\n            />\n            {page && (\n              <Badge\n                variant={page.status === \"published\" ? \"default\" : \"secondary\"}\n                className=\"bg-background/80 text-foreground absolute top-3 right-3 z-0 inline-flex h-8 items-center rounded-full px-3 text-xs font-medium shadow-md backdrop-blur-sm\"\n              >\n                {page.status === \"published\"\n                  ? t(\"pages_status_published\")\n                  : t(\"pages_status_unpublished\")}\n              </Badge>\n            )}\n          </div>\n        }\n        actions={\n          page && (\n            <AssetActions\n              downloadUrl={null}\n              displayTitle={displayTitle}\n              shareLink={shareLinkError ? null : shareLink || null}\n              shareLinkLoading={shareLinkLoading}\n              isVideo={false}\n              relateableId={page.id}\n              relateableType=\"Page\"\n            />\n          )\n        }\n      />\n    </>\n  );\n}\n","import type React from \"react\";\nimport { ProductsScreen } from \"./screens/ProductsScreen\";\nimport { ProductDetailScreen } from \"./screens/ProductDetailScreen\";\nimport { MediaListingScreen } from \"./screens/MediaListingScreen\";\nimport { MediaDetailScreen } from \"./screens/MediaDetailScreen\";\nimport { MediaEditScreen } from \"./screens/MediaEditScreen\";\nimport { MediaCreateScreen } from \"./screens/MediaCreateScreen\";\nimport { PlaylistsListingScreen } from \"./screens/PlaylistsListingScreen\";\nimport { PlaylistDetailScreen } from \"./screens/PlaylistDetailScreen\";\nimport { PlaylistCreateScreen } from \"./screens/PlaylistCreateScreen\";\nimport { FilesListingScreen } from \"./screens/FilesListingScreen\";\nimport { PagesListingScreen } from \"./screens/PagesListingScreen\";\nimport { PageDetailScreen } from \"./screens/PageDetailScreen\";\nimport { useShareablesUI, useCanCuratePlaylists } from \"../context\";\nimport type {\n  PortalProductsResponse,\n  PortalProductResponse,\n} from \"./portal-product-types\";\nimport type { ShareablesParentBreadcrumb } from \"./shareables-parent-breadcrumb-types\";\n\nexport type { ShareablesParentBreadcrumb } from \"./shareables-parent-breadcrumb-types\";\n\nexport interface ShareablesAppProps {\n  /** Current sub-route: \"products\" | \"media\" | \"playlists\" | \"files\" | \"pages\" | null */\n  screen?: string | null;\n  /** Detail ID when viewing a specific item */\n  detailId?: string | null;\n  /** Action for detail pages (e.g., \"edit\") */\n  action?: string | null;\n  /** Company logo URL for image fallbacks */\n  companyLogoUrl?: string | null;\n  /** Country code for product pricing */\n  countryCode?: string;\n  /** Portal-tenant products list fetcher */\n  fetchProducts?: (\n    search: string,\n    cursor?: string,\n    limit?: number,\n    sort?: string,\n  ) => Promise<PortalProductsResponse>;\n  /** Portal-tenant single product fetcher */\n  fetchProduct?: (id: string | number) => Promise<PortalProductResponse>;\n  /** Called when navigating to a sub-screen */\n  onNavigate?: (screen: string, detailId?: string) => void;\n  /** Called when navigating back */\n  onBack?: () => void;\n  /** Opt-in product-led carousel for media listing screens. */\n  showProductSharablesCarousel?: boolean;\n  /**\n   * Optional in-session breadcrumb source for detail screens. When `label` is\n   * set, the screen renders it instead of its default breadcrumb text (for\n   * example, the source product title). When `null`, detail screens fall back\n   * to their default structural breadcrumbs.\n   */\n  parentBreadcrumb?: ShareablesParentBreadcrumb | null;\n}\n\nexport function ShareablesApp({\n  screen,\n  detailId,\n  action,\n  onNavigate,\n  onBack,\n  countryCode,\n  fetchProducts,\n  fetchProduct,\n  showProductSharablesCarousel = false,\n  parentBreadcrumb,\n}: ShareablesAppProps): React.JSX.Element {\n  const { readOnly } = useShareablesUI();\n  // Media create/edit is content authoring and stays behind `readOnly`.\n  // Playlist create/edit is curation, which every member type gets.\n  const canCuratePlaylists = useCanCuratePlaylists();\n  let content: React.JSX.Element;\n\n  switch (screen) {\n    case \"media\":\n      if (detailId === \"new\" && !readOnly) {\n        content = <MediaCreateScreen onBack={onBack} onNavigate={onNavigate} />;\n      } else if (\n        detailId &&\n        detailId !== \"new\" &&\n        action === \"edit\" &&\n        !readOnly\n      ) {\n        content = (\n          <MediaEditScreen\n            mediaId={detailId}\n            onNavigate={onNavigate}\n            onBack={onBack}\n          />\n        );\n      } else if (detailId && detailId !== \"new\") {\n        content = (\n          <MediaDetailScreen\n            mediaId={detailId}\n            onNavigate={onNavigate}\n            onBack={onBack}\n            parentBreadcrumb={parentBreadcrumb}\n          />\n        );\n      } else {\n        content = (\n          <MediaListingScreen\n            onNavigate={onNavigate}\n            showProductSharablesCarousel={showProductSharablesCarousel}\n          />\n        );\n      }\n      break;\n    case \"playlists\":\n    case \"playlist\":\n      if (detailId === \"new\" && canCuratePlaylists) {\n        content = <PlaylistCreateScreen onBack={onBack} />;\n      } else if (detailId && action === \"edit\" && canCuratePlaylists) {\n        content = (\n          <PlaylistCreateScreen playlistId={detailId} onBack={onBack} />\n        );\n      } else if (detailId && detailId !== \"new\") {\n        content = (\n          <PlaylistDetailScreen\n            playlistId={detailId}\n            onNavigate={onNavigate}\n            onBack={onBack}\n            parentBreadcrumb={parentBreadcrumb}\n          />\n        );\n      } else {\n        content = <PlaylistsListingScreen />;\n      }\n      break;\n    case \"files\":\n      content = <FilesListingScreen onNavigate={onNavigate} />;\n      break;\n    case \"pages\":\n    case \"page\":\n      content =\n        detailId && detailId !== \"new\" ? (\n          <PageDetailScreen\n            pageId={detailId}\n            onBack={onBack}\n            parentBreadcrumb={parentBreadcrumb}\n          />\n        ) : (\n          <PagesListingScreen onNavigate={onNavigate} />\n        );\n      break;\n    case \"products\":\n    default:\n      content = detailId ? (\n        <ProductDetailScreen\n          productId={detailId}\n          countryCode={countryCode}\n          fetchProduct={fetchProduct}\n          onNavigate={onNavigate}\n          onBack={onBack}\n          parentBreadcrumb={parentBreadcrumb}\n        />\n      ) : (\n        <ProductsScreen\n          countryCode={countryCode}\n          fetchProducts={fetchProducts}\n          onNavigate={onNavigate}\n        />\n      );\n      break;\n  }\n\n  return content;\n}\n","import { useMemo, type ReactNode } from \"react\";\nimport { useActiveLocale } from \"@fluid-app/i18n/locale-context\";\nimport { useDomainDict } from \"@fluid-app/i18n/use-domain-dict\";\nimport {\n  shareablesDomain,\n  createShareablesTranslationAdapter,\n} from \"@fluid-app/shareables-core/translation-adapter\";\nimport { ShareablesTranslationProvider } from \"@fluid-app/shareables-core/translation-api-context\";\n\nexport function ShareablesTranslationBridge({\n  children,\n}: {\n  children: ReactNode;\n}): React.JSX.Element {\n  const { locale } = useActiveLocale();\n  const dict = useDomainDict(shareablesDomain, locale);\n  const api = useMemo(\n    () => createShareablesTranslationAdapter(locale, dict),\n    [locale, dict],\n  );\n  return (\n    <ShareablesTranslationProvider value={api}>\n      {children}\n    </ShareablesTranslationProvider>\n  );\n}\n","export interface ShareablesRoute {\n  screen: string | null;\n  detailId: string | null;\n  action: string | null;\n}\n\n/**\n * Parse the current shareables sub-route from the full slug.\n *\n * System nav slugs are \"share/products\", \"share/media\", \"share/playlists\".\n * Detail pages append an ID: \"share/products/123\", \"share/media/456\".\n *\n *   \"share/products\"        -> screen=\"products\", detailId=null\n *   \"share/products/123\"    -> screen=\"products\", detailId=\"123\"\n *   \"share/media/456\"       -> screen=\"media\",    detailId=\"456\"\n *   \"share/playlists\"       -> screen=\"playlists\", detailId=null\n *   \"share/playlists/789\"   -> screen=\"playlists\", detailId=\"789\"\n *   \"share/files\"           -> screen=\"files\",    detailId=null\n *   \"share\"                 -> screen=null (default to products)\n */\nexport function parseShareablesRoute(currentSlug: string): ShareablesRoute {\n  const slugWithoutPrefix = currentSlug.replace(/^share\\/?/, \"\");\n  if (!slugWithoutPrefix) {\n    return { screen: null, detailId: null, action: null };\n  }\n\n  const parts = slugWithoutPrefix.split(\"/\");\n  const screen = parts[0] || null;\n  const detailId = parts[1] || null;\n  const action = parts[2] || null;\n  return { screen, detailId, action };\n}\n\n/**\n * Resolve the product the user navigated through to reach a media detail page.\n *\n * Returns a product id only when the current route is a plain media detail\n * route and the previous in-session route was a plain product detail route.\n * `null` means the caller should skip fetching a source product. Routes with\n * an `action` segment are rejected because edit/create sub-routes are not\n * stable source-detail breadcrumbs.\n */\nexport function getSourceProductIdForMediaDetail(\n  currentRoute: ShareablesRoute,\n  parentSlug: string | null | undefined,\n): string | null {\n  if (\n    currentRoute.screen !== \"media\" ||\n    !currentRoute.detailId ||\n    currentRoute.action\n  ) {\n    return null;\n  }\n\n  if (!parentSlug) {\n    return null;\n  }\n\n  const parentRoute = parseShareablesRoute(parentSlug);\n  if (\n    parentRoute.screen !== \"products\" ||\n    !parentRoute.detailId ||\n    parentRoute.action\n  ) {\n    return null;\n  }\n\n  return parentRoute.detailId;\n}\n","import { useCallback, useMemo, useRef, type ComponentProps } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { fluidToast } from \"@fluid-app/ui-primitives\";\nimport { PORTAL_MYSITE_KEYS } from \"@fluid-app/mysite-ui/portal/hooks/use-mysite-portal\";\nimport { usePortalProduct } from \"@fluid-app/products-core/hooks/use-portal-products\";\nimport type {\n  BackgroundValue,\n  BorderRadiusOptions,\n  ColorOptions,\n  PaddingOptions,\n} from \"../types\";\nimport type { WidgetPropertySchema } from \"../registries/property-schema-types\";\nimport { ShareablesCoreProvider } from \"@fluid-app/shareables-core\";\nimport type { media } from \"@fluid-app/shareables-core/media-api\";\nimport { ShareablesUIProvider, ShareablesApp } from \"@fluid-app/shareables-ui\";\nimport type { PickerListParams } from \"@fluid-app/shareables-ui\";\nimport { useFilePickerApi } from \"@fluid-app/file-picker-core\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { useNavigationParent } from \"../shell/use-navigation-parent\";\nimport { useAccount } from \"../hooks/use-account\";\nimport { deniesRepSurfaces } from \"@fluid-app/portal-core/member-permissions\";\nimport { useStore } from \"../hooks/use-store\";\nimport { ShareablesTranslationBridge } from \"../providers/ShareablesTranslationBridge\";\nimport { useShareablesTranslation } from \"@fluid-app/shareables-core/translation-api-context\";\nimport {\n  PortalContentApiProvider,\n  usePortalContentContext,\n} from \"../content/PortalContentApiProvider\";\nimport { toggleFavorite } from \"../adapters/content-api-adapter\";\nimport { usePortalTenantContentClient } from \"../providers/PortalTenantContentClientProvider\";\nimport {\n  getSourceProductIdForMediaDetail,\n  parseShareablesRoute,\n} from \"./shareables-source-context\";\n\ntype ShareablesScreenProps = ComponentProps<\"div\"> & {\n  background?: BackgroundValue;\n  textColor?: ColorOptions;\n  accentColor?: ColorOptions;\n  padding?: PaddingOptions;\n  borderRadius?: BorderRadiusOptions;\n  showProductSharablesCarousel?: boolean;\n};\n\nexport function ShareablesScreen({\n  /* eslint-disable @typescript-eslint/no-unused-vars -- destructured to exclude from divProps spread */\n  background,\n  textColor,\n  accentColor,\n  padding,\n  borderRadius,\n  showProductSharablesCarousel = false,\n  /* eslint-enable @typescript-eslint/no-unused-vars */\n  ...divProps\n}: ShareablesScreenProps): React.JSX.Element {\n  return (\n    <div {...divProps} className={`h-full ${divProps.className ?? \"\"}`}>\n      <ShareablesTranslationBridge>\n        <PortalContentApiProvider>\n          <ShareablesScreenContent\n            showProductSharablesCarousel={showProductSharablesCarousel}\n          />\n        </PortalContentApiProvider>\n      </ShareablesTranslationBridge>\n    </div>\n  );\n}\n\n/** Inner component rendered inside providers so hooks can access context. */\nfunction ShareablesScreenContent({\n  showProductSharablesCarousel,\n}: {\n  showProductSharablesCarousel: boolean;\n}): React.JSX.Element {\n  const { t, locale } = useShareablesTranslation();\n  // Keep a ref to the latest `t` so callbacks inside uiConfig can use\n  // translations without forcing useMemo to recreate the entire config\n  // object every time the locale changes.  Recreating uiConfig causes\n  // ShareablesUIProvider to get a new value, which unmounts/remounts all\n  // children — including in-flight TanStack Query hooks — breaking\n  // media loading when the user switches language.\n  const tRef = useRef(t);\n  tRef.current = t;\n  const localeRef = useRef(locale);\n  localeRef.current = locale;\n  const shareablesCtx = usePortalContentContext();\n  const { productsApi: portalProductsApi } = shareablesCtx;\n  const filePickerApi = useFilePickerApi();\n  const { data: account } = useAccount();\n  const { data: store } = useStore();\n  const { currentSlug, navigate } = useAppNavigation();\n  const parentBreadcrumb = useNavigationParent();\n  // Restricted (read-only) when the member type is not rep-eligible. Named\n  // `isCustomer` historically; now derived from the rep_eligible permission\n  // so company-custom non-rep types are restricted the same as customers.\n  const isCustomer = deniesRepSurfaces(account);\n  const client = usePortalTenantContentClient();\n  const queryClient = useQueryClient();\n\n  const fetchProducts = useCallback(\n    async (search: string, cursor?: string, limit?: number, sort?: string) => {\n      if (search) {\n        return portalProductsApi.searchProducts(search, { cursor, limit });\n      }\n      return portalProductsApi.listProducts({ cursor, limit, sort });\n    },\n    [portalProductsApi],\n  );\n\n  const fetchProduct = useCallback(\n    async (id: string | number) => portalProductsApi.getProduct(id),\n    [portalProductsApi],\n  );\n\n  const { screen, detailId, action } = parseShareablesRoute(currentSlug);\n  const sourceProductId = getSourceProductIdForMediaDetail(\n    { screen, detailId, action },\n    parentBreadcrumb?.slug,\n  );\n\n  const { data: sourceProductResponse } = usePortalProduct(\n    sourceProductId ?? \"\",\n    {\n      enabled: !!sourceProductId,\n    },\n  );\n\n  const sourceProductTitle = sourceProductResponse?.product.name;\n  const shareablesParentBreadcrumb = useMemo(() => {\n    if (!parentBreadcrumb) {\n      return null;\n    }\n\n    return sourceProductTitle\n      ? { ...parentBreadcrumb, label: sourceProductTitle }\n      : parentBreadcrumb;\n  }, [parentBreadcrumb, sourceProductTitle]);\n\n  const handleNavigate = useCallback(\n    (subScreen: string, id?: string) => {\n      const path = id ? `share/${subScreen}/${id}` : `share/${subScreen}`;\n      navigate(path);\n    },\n    [navigate],\n  );\n\n  const handleBack = useCallback(() => {\n    if (detailId && screen) {\n      navigate(`share/${screen}`);\n    } else {\n      navigate(\"share/products\");\n    }\n  }, [navigate, detailId, screen]);\n\n  const coreConfig = useMemo(\n    () => ({\n      user: account ? { id: account.id } : null,\n      repContext: true,\n    }),\n    [account],\n  );\n\n  const uiConfig = useMemo(\n    () => ({\n      user: account\n        ? {\n            id: account.id,\n            company: { logo_url: store?.logo_url ?? null },\n          }\n        : undefined,\n      // TODO(portal-tenant): affiliate_id not available from /api/account\n      affiliateId: null,\n      basePath: \"\",\n      navigate: (path: string) => {\n        const cleanPath = path.replace(/^\\//, \"\");\n        const prefixed = cleanPath.startsWith(\"share/\")\n          ? cleanPath\n          : `share/${cleanPath}`;\n        navigate(prefixed);\n      },\n      showToast: (opts: {\n        title: string;\n        type: \"success\" | \"error\" | \"warning\";\n        error?: unknown;\n      }) => {\n        fluidToast({ title: opts.title, type: opts.type });\n        if (opts.error) console.error(\"[Shareables]\", opts.error);\n      },\n      filePickerApi,\n      onToggleFavorite: async (params: {\n        favoriteableId: number;\n        favoriteableType: string;\n      }) => {\n        const result = await toggleFavorite(\n          client,\n          params.favoriteableId,\n          params.favoriteableType,\n        );\n        void queryClient.invalidateQueries({\n          queryKey: PORTAL_MYSITE_KEYS.favorites(),\n        });\n        return result;\n      },\n      onMySiteShare: async (params: {\n        shareLink: string;\n        relateable_id: number;\n        relateable_type: string;\n      }) => {\n        await toggleFavorite(\n          client,\n          params.relateable_id,\n          params.relateable_type,\n        );\n        void queryClient.invalidateQueries({\n          queryKey: PORTAL_MYSITE_KEYS.favorites(),\n        });\n      },\n      // Playlist curation is open to every member type, including customers —\n      // the API refuses any playlist the member doesn't own, so the worst a\n      // customer can reach is their own. Deliberately not gated on\n      // `isCustomer` like the content-authoring capabilities below.\n      onDeletePlaylist: async (playlistId: number) => {\n        await shareablesCtx.playlistsAdapter.deletePlaylist(playlistId);\n      },\n      mediaProductsApi: isCustomer\n        ? undefined\n        : {\n            ...shareablesCtx.mediaProductsAdapter,\n            listMediaProducts: (\n              mediumId: number,\n              params?: media.MediaProductsListParams,\n            ) =>\n              shareablesCtx.mediaProductsAdapter.listMediaProducts(mediumId, {\n                ...params,\n                language_iso: params?.language_iso ?? localeRef.current,\n              }),\n          },\n      searchProducts: isCustomer\n        ? undefined\n        : async (\n            query: string,\n            options?: { cursor?: string | null; limit?: number },\n          ) => {\n            // Empty query → listProducts so the tag modal opens with\n            // suggestions instead of a blank state. Non-empty → real search.\n            // Both APIs forward cursor/limit so the tag modal can paginate.\n            const limit = options?.limit ?? 25;\n            const cursor = options?.cursor ?? undefined;\n            const result =\n              query.trim().length > 0\n                ? await portalProductsApi.searchProducts(query, {\n                    cursor,\n                    limit,\n                  })\n                : await portalProductsApi.listProducts({ cursor, limit });\n            // Filter out products without an id — mapping an id-less record\n            // to `id: 0` would let a subsequent add/remove tag operation\n            // silently run on id=0 (confusing 404/422 at best, incorrect\n            // mutation at worst).\n            const mapped = (result.products ?? [])\n              .map(\n                (p: {\n                  id?: number;\n                  title?: string;\n                  name?: string;\n                  image_url?: string | null;\n                  images?: Array<{ url?: string | null }>;\n                  price?: string | null;\n                }) =>\n                  p.id != null\n                    ? {\n                        id: p.id,\n                        name:\n                          p.name ?? p.title ?? tRef.current(\"common_untitled\"),\n                        image_url: p.image_url ?? p.images?.[0]?.url ?? null,\n                        price: p.price ?? null,\n                      }\n                    : null,\n              )\n              .filter((p): p is NonNullable<typeof p> => p !== null);\n            return {\n              products: mapped,\n              nextCursor: result.meta?.pagination?.next_cursor ?? null,\n            };\n          },\n      // `readOnly` covers content authoring only: creating and editing media,\n      // tagging products, uploading thumbnails. Playlist curation is answered\n      // by `canCuratePlaylists`, which stays open to everyone.\n      readOnly: isCustomer,\n      canCuratePlaylists: true,\n      // pickerSources powers the playlist editor's content browser tabs.\n      // All four content types are wired here: Media via the existing media\n      // adapter, Pages via pagesAdapter, Products via portalProductsApi, and\n      // Enrollment Packs via enrollmentPacksAdapter. Each tab is also gated\n      // on the host supplying its source — see FilePicker's methods filter\n      // for the runtime check.\n      pickerSources: {\n        pages: {\n          cacheKey: `locale:${locale}`,\n          list: async ({ search, cursor, limit }: PickerListParams) => {\n            const response = await shareablesCtx.pagesAdapter.listPages({\n              cursor: cursor ?? undefined,\n              limit,\n              \"filter[title]\":\n                search && search.trim().length > 0 ? search : undefined,\n              language_iso: localeRef.current,\n            });\n            return {\n              items: response.pages.map((p) => ({\n                id: p.id,\n                title:\n                  p.title ??\n                  tRef.current(\"pages_fallback_name\", { id: String(p.id) }),\n                image_url: p.image_url ?? null,\n              })),\n              nextCursor: response.meta.pagination?.next_cursor ?? null,\n            };\n          },\n        },\n        products: {\n          cacheKey: `locale:${locale}`,\n          list: async ({ search, cursor, limit }: PickerListParams) => {\n            const trimmedSearch = search?.trim() ?? \"\";\n            const result =\n              trimmedSearch.length > 0\n                ? await portalProductsApi.searchProducts(trimmedSearch, {\n                    cursor: cursor ?? undefined,\n                    limit,\n                  })\n                : await portalProductsApi.listProducts({\n                    cursor: cursor ?? undefined,\n                    limit,\n                  });\n            // PortalProductsApi.Product is { id?, name?, images?, price?, ... }\n            // — no top-level `title` or `image_url`. The thumbnail comes\n            // from the first entry of `images`.\n            const mapped = (result.products ?? [])\n              .map((p) =>\n                p.id != null\n                  ? {\n                      id: p.id,\n                      name: p.name ?? tRef.current(\"common_untitled\"),\n                      image_url: p.images?.[0]?.url ?? null,\n                      price: p.price ?? null,\n                    }\n                  : null,\n              )\n              .filter((p): p is NonNullable<typeof p> => p !== null);\n            return {\n              items: mapped,\n              nextCursor: result.meta?.pagination?.next_cursor ?? null,\n            };\n          },\n        },\n        enrollment_packs: {\n          cacheKey: `locale:${locale}`,\n          // /api/enrollment_packs takes cursor/limit only — no title\n          // filter — so we hide the picker's search input rather than\n          // surface a non-functional one. Flip to true once the\n          // backend ships filter[title] support.\n          supportsSearch: false,\n          list: async ({ cursor, limit }: PickerListParams) => {\n            const response =\n              await shareablesCtx.enrollmentPacksAdapter.listEnrollmentPacks({\n                cursor: cursor ?? undefined,\n                limit,\n              });\n            const items = response.enrollment_packs.map((pack) => ({\n              id: pack.id,\n              title:\n                pack.title ||\n                tRef.current(\"enrollment_pack_fallback_name\", {\n                  id: String(pack.id),\n                }),\n              image_url: pack.images[0]?.url ?? null,\n            }));\n            return {\n              items,\n              nextCursor: response.meta.pagination?.next_cursor ?? null,\n            };\n          },\n        },\n      },\n      uploadThumbnail: isCustomer\n        ? undefined\n        : async (blob: Blob, filename: string) => {\n            const response = await filePickerApi.createDamAsset({\n              file: new File([blob], filename, { type: blob.type }),\n              name: filename,\n            });\n            const url = response.asset?.default_variant_url;\n            if (!url) {\n              // DAM accepted the upload but didn't return a playable URL.\n              // Throwing here lets the caller (MediaEditScreen catch handler)\n              // surface a toast and keeps the pending thumbnail state clean —\n              // returning \"\" silently would corrupt the save payload with an\n              // empty thumbnail URL.\n              throw new Error(\"Thumbnail upload succeeded but no URL returned\");\n            }\n            return url;\n          },\n    }),\n    [\n      account,\n      store,\n      locale,\n      navigate,\n      filePickerApi,\n      isCustomer,\n      shareablesCtx.playlistsAdapter,\n      shareablesCtx.pagesAdapter,\n      shareablesCtx.enrollmentPacksAdapter,\n      shareablesCtx.mediaProductsAdapter,\n      portalProductsApi,\n      client,\n      queryClient,\n    ],\n  );\n\n  return (\n    <ShareablesCoreProvider config={coreConfig}>\n      <ShareablesUIProvider config={uiConfig}>\n        <ShareablesApp\n          screen={screen}\n          detailId={detailId}\n          action={action}\n          companyLogoUrl={undefined}\n          countryCode={undefined}\n          fetchProducts={fetchProducts}\n          fetchProduct={fetchProduct}\n          onNavigate={handleNavigate}\n          onBack={handleBack}\n          showProductSharablesCarousel={showProductSharablesCarousel}\n          parentBreadcrumb={shareablesParentBreadcrumb}\n        />\n      </ShareablesUIProvider>\n    </ShareablesCoreProvider>\n  );\n}\n\nexport const shareablesScreenPropertySchema: WidgetPropertySchema = {\n  widgetType: \"ShareablesScreen\",\n  displayName: \"Shareables Screen\",\n  tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n  fields: [\n    {\n      key: \"showProductSharablesCarousel\",\n      label: \"Show product sharables carousel\",\n      type: \"boolean\",\n      description:\n        \"Display product-led sharable kits above the media list. Disabled by default so existing portals keep their current media page.\",\n      defaultValue: false,\n      tab: \"styling\",\n      group: \"Display\",\n    },\n  ],\n} as const satisfies WidgetPropertySchema;\n"],"x_google_ignoreList":[4,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;EAeb,QAda;EAeZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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BAAN,cAAuC,YAAY;EACjD,YAAa,SAAS;AACpB,SAAM,QAAQ;AACd,QAAK,OAAO;AACZ,QAAK,UAAU,WAAW;AAC1B,QAAK,OAAO;;EAGd,QAAQ,OAAO,aAAc,UAAU;AACrC,UAAO,YAAY,SAAS,+BAA+B;;EAG7D,KAAK,6BAA8B;AACjC,UAAO;;;AAIX,QAAO,UAAU;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;;;;;;;;CCvdD,MAAM,uBAA6C;EACjD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;;CAGD,MAAM,6BAA6B,EAAE;AAGrC,QAAO,eAAe,4BAA4B,KAAK;;;;CAKvD,MAAM,6BAA6B,EAAE;AAGrC,QAAO,eAAe,4BAA4B,KAAK;;;;;CAMvD,SAAS,sBAAuB,QAAQ;EACtC,IAAI,SAAS,2BAA2B;AAExC,MAAI,WAAW,KAAA,EACb,UAAS,OAAO,KAAK,OAAO;AAG9B,SAAO;;AAGT,MAAK,IAAI,IAAI,GAAG,IAAI,qBAAqB,QAAQ,EAAE,GAAG;EACpD,MAAM,MAAM,qBAAqB;EACjC,MAAM,gBAAgB,IAAI,aAAa;AACvC,6BAA2B,OAAO,2BAA2B,iBAC3D;;AAGJ,QAAO,UAAU;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7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAC7C;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAA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QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEnDjB,QAAO,UAFD,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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X,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,gCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,kCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,mCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB;IAClB;IACA;IACA;IACD;GACF,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB;IAClB;IACA;IACA;IACD;GACF,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB;IAClB;IACA;IACA;IACD;GACF,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB;IAClB;IACA;IACA;IACD;GACF,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB;IAClB;IACA;IACA;IACD;GACF,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,iCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,iCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,gCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,iCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,gCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,sCACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB;IAClB;IACA;IACA;IACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,OACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,MACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,0BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,8BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,yBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,yBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,+BACA,4BACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,8BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gCACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,yBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,kCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kCACA,6BACD;GACD,UAAU;GACX,CACF;EACD,CACE,oCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oCACA,+BACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gCACA,4BACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,gCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,gCACA,4BACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,iCACA,6BACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,0BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,wBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,yBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,0BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,OACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,MACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,MACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,KACD;GACD,UAAU;GACX,CACF;EACD,CACE,MACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,KACD;GACD,UAAU;GACX,CACF;EACD,CACE,KACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,IACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,0BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,2BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,2BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,0BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,2BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,OACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,MACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,8BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACA,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,kCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,kCACA,6BACD;GACD,UAAU;GACX,CACF;EACD,CACE,oCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,oCACA,+BACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,+BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,+BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,mCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,mCACA,8BACD;GACD,UAAU;GACX,CACF;EACD,CACE,qCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,qCACA,gCACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,SAAS;GACT,oBAAoB,CAClB,6BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,SAAS;GACT,oBAAoB,CAClB,8BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,SAAS;GACT,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,SAAS;GACT,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,0BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,KACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,IACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,WACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,WACA,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,2BACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,sBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,wBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,+BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,iCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iCACA,4BACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,QACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,OACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,MACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,KACD;GACD,UAAU;GACX,CACF;EACD,CACE,MACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,KACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,2BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,+BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,8BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,+BACA,4BACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,qBAAkB;GAClB,cAAc;GACd,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,qBAAkB;GAClB,cAAc;GACd,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,qBAAkB;GAClB,cAAc;GACd,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,qBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,YACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACA,UACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,4BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,4BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,yBACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,+BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,6BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,6BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,0BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,qBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,2BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,+BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,+BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,mCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,mCACA,8BACD;GACD,UAAU;GACX,CACF;EACD,CACE,qCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,qCACA,gCACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,0BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,0BACA,uBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,8BACA,0BACD;GACD,UAAU;GACX,CACF;EACD,CACE,gCACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gCACA,4BACD;GACD,UAAU;GACX,CACF;EACD,CACE,2BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,2BACA,wBACD;GACD,UAAU;GACX,CACF;EACD,CACE,OACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,MACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,mBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,aAAa;GACb,oBAAoB,CAClB,mBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,kBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,8BACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,8BACA,2BACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,SAAS;GACT,iBAAiB;GACjB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,iBAAiB;GACjB,kBAAkB;GAClB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,uBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,uBACA,oBACD;GACD,UAAU;GACX,CACF;EACD,CACE,sBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,sBACA,mBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,yBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,yBACA,sBACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,SAAS;GACT,oBAAoB,CAClB,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,iBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,iBACA,eACD;GACD,UAAU;GACX,CACF;EACD,CACE,kBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,kBACA,gBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,oBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,oBACA,iBACD;GACD,UAAU;GACX,CACF;EACD,CACE,UACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,SACD;GACD,UAAU;GACX,CACF;EACD,CACE,SACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,wBAAwB;GACxB,oBAAoB,CAClB,QACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,wBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,wBACA,qBACD;GACD,UAAU;GACX,CACF;EACD,CACE,gBACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,gBACA,cACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,cACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,cACA,YACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;GACD,UAAU;GACX,CACF;EACD,CACE,aACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,aACA,WACD;GACD,UAAU;GACX,CACF;EACD,CACE,eACA;GACE,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,aAAa;GACb,aAAa;GACb,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;GACjB,oBAAoB,CAClB,eACA,aACD;G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AAE;EAAC,CAAC,GAAE,EAAE;EAAC,CAAC,GAAE,EAAE;EAAC,CAAC,GAAE,EAAE;EAAC,CAAC,GAAE,IAAI;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,GAAE,EAAE;EAAC,CAAC,GAAE,EAAE;EAAC,CAAC,GAAE,EAAE;EAAC,CAAC,GAAE,EAAE;EAAC,CAAC,GAAE,IAAI;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,GAAE,GAAG;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,IAAI;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,IAAI;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,IAAI;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,EAAE;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,IAAG,IAAI;EAAC,CAAC,IAAG,GAAG;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,EAAE;EAAC,CAAC,KAAI,IAAI;EAAC,CAAC,KAAI,GAAG;EAAC,CAAC,KAAI,G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IAAM,wBAAN,MAA4B;EAC1B,6BAA6B;AAC3B,QAAK,kBAAkB;AACvB,QAAK,SAAS,IAAI,SAAS,qBAAoB,eAAc;AAC3D,QAAI,CAAC,KAAK,iBAAiB;AACzB,UAAK,kBAAkB;AACvB,UAAK,eAAe,MAAM,SAAS,WAAW;AAC9C,UAAK,kBAAkB;;KAEzB;;EAEJ,IAAI,QAAQ;AACV,UAAO,KAAK;;;AAIhB,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;ACjBD,SAAQ,4BAA4B,IAAI,IAAI;EAC1C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,SAAQ,4BAA4B,IAAI,IAAI;EAC1C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;;;;;CChHF,MAAM,EAAE,eAAe,wBAAA,+BAAA;CACvB,MAAM,EAAE,2BAA2B,8BAAA,oBAAA;CAInC,MAAM,oCAAoC,IAAI,IAAI;EAAC;EAAQ;EAAS;EAAS;EAAQ;EAAU;EAAS,CAAC;CAEzG,IAAM,0BAAN,MAA8B;EAC5B,oBAAoB;AAClB,QAAK,sCAAsB,IAAI,KAAK;AACpC,QAAK,iBAAiB,OAAO,OAAO,KAAK;;EAG3C,uBAAuB,OAAO;AAI5B,OAAI,KAAK,eAAe,UAAU,KAAK,eAAe,WACpD,QAAO;AAIT,OAAI,CAAC,0BAA0B,IAAI,MAAM,IAAI,CAAC,kCAAkC,IAAI,MAAM,CACxF,QAAO;AAKT,UADe,KAAK,eAAe,gBAClB;;EAGnB,oBAAoB,OAAO;GACzB,MAAM,SAAS,KAAK,uBAAuB,MAAM;AACjD,OAAI,CAAC,OACH,QAAO;AAGT,UAAO,OAAO,eAAe;;EAG/B,oBAAoB,OAAO,SAAS;GAClC,MAAM,SAAS,KAAK,uBAAuB,MAAM;AACjD,OAAI,CAAC,OACH;AAGF,OAAI,CAAC,OAAO,oBAAoB,IAAI,MAAM,IAAI,YAAY,MAAM;AAC9D,WAAO,oBAAoB,IAAI,MAAM;AACrC,kBAAc,QAAQ,MAAM;;AAE9B,UAAO,eAAe,SAAS;;EAGjC,oBAAoB,OAAO;GACzB,MAAM,WAAW,OAAO;AACxB,OAAI,EAAE,YAAY,MAChB;AAMF,QADmB,iBAAiB,OAAO,KAAK,eAAe,KAAK,eAAe,gBAAgB,EAAE,EAAE,iBACpF,cACjB;GAGF,MAAM,MAAM,KAAK,eAAe,MAAM,SAAS;GAC/C,MAAM,UAAU,QAAQ,OAAO,OAAO,EAAE,MAAM,KAAK;AACnD,QAAK,oBAAoB,OAAO,QAAQ;;;AAI5C,MAAK,MAAM,SAAS,0BAClB,qBAAoB,wBAAwB,WAAW,MAAM;AAG/D,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CC/ED,MAAM,EAAE,4BAAA,mBAAA;CACR,MAAM,EAAE,YAAA,oBAAA;AAGR,SAAQ,6BAA4B,mBAAkB;EACpD,MAAM,SAAS,eAAe;AAC9B,MAAI,WAAW,KACb,QAAO;AAET,MAAI,OAAO,eAAe,aAAa,OAAO,kBAAkB,QAC9D,QAAO;AAET,SAAO,wBAAwB,QAAQ,UAAU,KAAK;;;;;;ACXpC,gBAAA;AACN,kBAAA;CAEd,MAAM,cAAA,qBAAA;CACN,MAAM,cAAA,qBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,cAAY,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAEhE;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,QAAQ,cAAc,OAAO,EAAE,SAAS,UAAU,oCAAoC,CAAC;AAE7G,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCjCT,MAAM,cAAA,sBAAA,CAAwC;CAE9C,MAAM,iBAAA,wBAAA;CAEN,IAAM,iBAAN,cAA6B,YAAY;AACzC,gBAAe,cAAc,eAAe,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEzE,SAAQ,iBAAiB;;;;;CCNzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,iBAAA,wBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,UAAA,iBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,UAAQ,eAAe,SAAS,aAAa;;AAG/C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mBAAmB,aAAa,QAAQ;GAC5C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mEAAmE,UAAU,OAAO,WACrF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,eAAe,QAAQ,cAAc,QAAQ,EACpD,SAAS,iDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;;AAGxE,SAAO,iBAAiB,WAAW,WAAW;GAC5C,eAAe,EAAE,YAAY,MAAM;IAClC,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GAClE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;CC9IN,MAAM,EAAE,WAAA,oBAAA;CAGR,MAAM,wBAAwB,IAAI,IAAI;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAGF,SAAQ,qBAAoB,WAAU;AACpC,MAAI,sBAAsB,IAAI,OAAO,WAAW,CAC9C,QAAO;AAUT,MAAI,CAAC,OAAO,YACV,QAAO;AAKT,MAAI,OAAO,iBAAiB,OAAO,cAAc,kBAAkB,UACvC,CAAC,QAAQ,kBAAkB,OAAO,WAAW,CACvE,QAAO;AAGT,SAAO;;;;;;CC3CT,MAAM,aAAA,oBAAA;CACN,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,eAAA,uBAAA;CACR,MAAM,EAAE,4BAAA,mBAAA;CACR,MAAM,EAAE,kBAAA,gBAAA;CACR,MAAM,EAAE,SAAS,WAAA,oBAAA;CACjB,MAAM,EAAE,sBAAA,gBAAA;CAER,MAAM,wBAAwB,IAAI,IAAI;EAAC;EAAS;EAAU;EAAY;EAAS,CAAC;AAKhF,SAAQ,0BAAyB,WAAU;AAKzC,MAAI,OAAO,kBAAkB,SAAS;AACpC,OAAI,CAAC,OAAO,eAAe,aACzB,QAAO;AAGT,OAAI,CAAC,OAAO,YACV,QAAO;AAGT,OAAI,CAAC,OAAO,MAAM,SAAS,OAAO,eAAe,MAAM,WAAW,CAAC,CAAC,CAClE,QAAO;AAGT,OAAI,OAAO,eAAe,SACxB,QAAO;AAGT,OAAI,OAAO,eAAe,OAAO,OAAO,eAAe,MAAM,OAAO,CAClE,QAAO;AAGT,OAAI,OAAO,eAAe,aAAa,OAAO,cAC1C,OAAO,WAAW,eAAe,aACjC,WAAW,wBAAwB,OAAO,YAAY,UAAU,CAClE,QAAO;AAGT,OAAI,sBAAsB,IAAI,OAAO,WAAW,IAAI,CAAC,WAAW,OAAO,EAAE;AACvE,QAAI,OAAO,eAAe,WAAW,OAAO,SAAS,SACnD,QAAO;AAGT,WAAO;;AAGT,OAAI,OAAO,eAAe,MAAM,kBAAkB,CAChD,QAAO;AAGT,UAAO;;AAOT,MAAI,OAAO,kBAAkB,QAAQ;AACnC,OAAI,CAAC,OAAO,MAAM,SAAS,OAAO,eAAe,MAAM,WAAW,CAAC,CAAC,IAAI,kBAAkB,OAAO,CAC/F,QAAO;AAGT,OAAI,OAAO,eAAe,OAAO,OAAO,eAAe,MAAM,OAAO,CAClE,QAAO;AAGT,UAAO;;AAGT,SAAO;;AAOT,SAAQ,sCAAsC,MAAM,QAAQ,eAAe,EAAE,UAAU,UAAU,EAAE,KAAK;AACtG,MAAI,WAAW,KAEb;EAGF,MAAM,QAAQ,cAAc,MAAM,OAAO,eAAe,YAAY;GAClE;GACA,UAAU;GACV;GACA,MAAM,OAAO,eAAe;GAC5B,QAAQ;GACT,CAAC;AAEF,MAAI,OAAO,aACT,UAAS,SAAS,eAAe,OAAO,aAAa;AAGvD,SAAO,UAAU,MAAM;;;;;;CCpGzB,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,mBAAmB,0BAAA,sBAAA;CAC3B,MAAM,eAAA,wBAAA,CAAoD;CAC1D,MAAM,eAAA,sBAAA;CAEN,MAAM,aAAa;CAEnB,SAAS,cAAc,MAAM;AAC3B,SAAO,KAAK,QAAQ,cAAc,OAAO,UAAU,MAAM,aAAa,CAAC;;CAGzE,SAAS,cAAc,MAAM;AAC3B,SAAO,KAAK,QAAQ,WAAU,UAAS,IAAI,MAAM,aAAa,GAAG;;AAGnE,SAAQ,iBAAiB,MAAM,iBAAiB;EAC9C,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,gBAAgB;AACrB,QAAK,WAAW,YAAY;;EAE9B,KAAK,SAAS,0BAA0B;GACtC,MAAM,yBAAS,IAAI,KAAK;GACxB,MAAM,EAAE,eAAe,KAAK;AAC5B,QAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;IAC1C,MAAM,OAAO,WAAW,KAAK,EAAE;IAC/B,MAAM,UAAU,WAAW,KAAK,KAAK,UAAU;AAC/C,QAAI,QACF,QAAO,IAAI,cAAc,QAAQ,GAAG,CAAC;;AAGzC,UAAO;;EAET,CAAC,SAAS,UAAU,MAAM;GACxB,MAAM,EAAE,eAAe,KAAK;AAC5B,QAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;IAC1C,MAAM,OAAO,WAAW,KAAK,EAAE;IAC/B,MAAM,UAAU,WAAW,KAAK,KAAK,UAAU;AAC/C,QAAI,WAAW,cAAc,QAAQ,GAAG,KAAK,KAC3C,QAAO,KAAK;;;EAKlB,CAAC,SAAS,aAAa,MAAM,OAAO;AAClC,OAAI,SAAS,KAAK,KAAK,CACrB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,IAAI,KAAK,iCACT,cACD,CAAC;AAEJ,UAAO,QAAQ,cAAc,KAAK;AAClC,gBAAa,KAAK,eAAe,KAAK;AACtC,qBAAkB,KAAK,UAAU,MAAM,MAAM;;EAE/C,CAAC,SAAS,kBAAkB,MAAM,OAAO;AACvC,QAAK,SAAS,aAAa,MAAM,MAAM;;EAEzC,CAAC,SAAS,aAAa,MAAM;AAC3B,UAAO,QAAQ,cAAc,KAAK;AAClC,yBAAsB,KAAK,UAAU,KAAK;;;;;;;CC3D9C,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,iCAAiC;;CAG/E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,gBAAgB;AAG3D,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,aAAa;GACjB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,aAAa,WAAW,GAC7C,OAAO,cAAc;GAAE,OAAO;GAAgB,cAAc;GAAM,EACpE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,wBACzC,KAAI,CAAC,OAAO,OAAO,QAAQ,IAAI,CAC7B,MAAK,IAAI,GAAG,MAAM;AAItB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;GAIpD,MAAM,aAAa,OAAO,YAAY,MAAM,UAAU,EAAE;AAExD,OAAI,eAAe,KAAA,KAAa,CAAC,OAAO,OAAO,QAAQ,EAAE,IAAI,KAC3D,QAAO;IACL,UAAU;IACV,YAAY;IACZ,cAAc;IACd,OAAO,MAAM,kBAAkB,WAAW;IAC3C;AAGH,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,UAAU;IACxD,MAAM,eAAe,KAAK;AAE1B,QAAI,OAAO,MAAM,UAAU;KACzB,IAAI,aAAa;AAEjB,kBAAa,YAAY,aAAa,YAAY;MAChD,SAAS,wBAAwB,IAAI;MACrC,SAAS;MACV,CAAC;AAEF,8DAAyD,aAAa;AACtE,SAAI;AAEF,UADiB,EAAE,OAAO,YAAY,MAAM,UAAU,EAAE,KAAK,KAAA,GAE3D,QAAO,YAAY,MAAM,aAAa,GAAG,WAAW;UAEpD,QAAO,YAAY,MAAM,kBAAkB,GAAG,WAAW;eAEnD;AACR,gEAA0D,aAAa;;AAGzE,YAAO;;;GAGX,IAAI;AAEJ,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;GAGhD,MAAM,eAAe,KAAK;AAE1B,OAAI,KAAK,OAAO,KAAK,IACnB,QAAO;GAGT,IAAI,aAAa,KAAK;AAEtB,gBAAa,YAAY,aAAa,YAAY;IAChD,SAAS,wBAAwB,IAAI;IACrC,SAAS;IACV,CAAC;AAEF,4DAAyD,aAAa;AACtE,OAAI;AAEF,QADiB,EAAE,OAAO,YAAY,MAAM,UAAU,EAAE,KAAK,KAAA,GAE3D,QAAO,YAAY,MAAM,aAAa,GAAG,WAAW;QAEpD,QAAO,YAAY,MAAM,kBAAkB,GAAG,WAAW;aAEnD;AACR,8DAA0D,aAAa;;AAGzE,UAAO;;EAGT,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;GAG1C,MAAM,eAAe,KAAK;AAE1B,OAAI,OAAO,YAAY,MAAM,UAAU,EAAE,KAAK,KAAA,KAAa,CAAC,OAAO,OAAO,QAAQ,EAAE,EAAE;AACpF,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,YAAY,MAAM,aAAa,EAAE;AACxC,YAAO;cACC;AACR,+DAA0D,aAAa;;;AAI3E,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,2BAAA;;;;;CCxSN,MAAM,cAAA,eAAA;CACN,MAAM,EAAE,8BAAA,iBAAA;CACR,MAAM,WAAA,kBAAA;CACN,MAAM,EAAE,SAAS,WAAA,oBAAA;CACjB,MAAM,eAAA,sBAAA;CAEN,MAAM,qCAAqC,IAAI,IAAI;EACjD;EAAK;EAAQ;EAAU;EAAS;EAChC;EAAS;EAAU;EAAU;EAC9B,CAAC;CAEF,IAAM,uBAAN,MAA2B;EACzB,wBAAwB;AACtB,QAAK,YAAY;AACjB,QAAK,WAAW;;EAGlB,IAAI,UAAU;AACZ,OAAI,CAAC,KAAK,SACR,MAAK,WAAW,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE,EAAE,SAAS,MAAM,CAAC;AAEpF,UAAO,KAAK;;EAId,IAAI,WAAW;AACb,OAAI,CAAC,KAAK,eAAe,MAAM,WAAW,EAAE;AAC1C,QAAK,KAAK,iBAAiB,YAAY,mCAAmC,IAAI,KAAK,WAAW,IACtD,KAAK,eAAe,aAAa,0BAA0B,KAAK,KACnG,KAAK,iBAAiB,UAAU,KAAK,eAAe,IACvD,QAAO;AAET,WAAO;;AAET,UAAO,YAAY,KAAK,KAAK,eAAe,MAAM,WAAW,CAAC;;EAGhE,IAAI,SAAS,OAAO;AAClB,QAAK,eAAe,MAAM,YAAY,OAAO,MAAM,CAAC;;EAGtD,QAAQ;AACN,OAAI,CAAC,SAAS,uBAAuB,KAAK,CACxC;GAEF,MAAM,gBAAgB,KAAK;GAC3B,MAAM,WAAW,cAAc;AAE/B,OAAI,aAAa,KACf;AAGF,iBAAc,sBAAsB;AACpC,OAAI,UAAU;AACZ,aAAS,mCAAmC,QAAQ,UAAU,KAAK;AACnE,aAAS,mCAAmC,YAAY,UAAU,MAAM,EAAE,SAAS,MAAM,CAAC;UACrF;IACL,MAAM,eAAe,cAAc,aAAa;AAChD,QAAI,cAAc;KAChB,MAAM,0BAA0B,aAAa,cAAc;AAC3D,kBAAa,cAAc,sBAAsB;AACjD,cAAS,mCAAmC,QAAQ,yBAAyB,KAAK;AAClF,cAAS,mCAAmC,YAAY,yBAAyB,MAAM,EAAE,SAAS,MAAM,CAAC;AACzG,kBAAa,cAAc,sBAAsB;;;AAIrD,iBAAc,sBAAsB;AACpC,YAAS,mCAAmC,SAAS,MAAM,SAAS;AACpE,YAAS,mCAAmC,WAAW,MAAM,UAAU,EAAE,SAAS,MAAM,CAAC;AACzF,iBAAc,cAAc,CAAC,SAAS,MAAM,EAAE;;EAGhD,OAAO;AACL,OAAI,KAAK,eAAe,wBAAwB,QAAQ,CAAC,SAAS,uBAAuB,KAAK,CAC5F;AAGF,QAAK,eAAe,sBAAsB;AAC1C,YAAS,mCAAmC,QAAQ,MAAM,KAAK;AAC/D,YAAS,mCAAmC,YAAY,MAAM,MAAM,EAAE,SAAS,MAAM,CAAC;AACtF,QAAK,eAAe,cAAc,CAAC,OAAO;;;AAI9C,SAAQ,iBAAiB;;;;;CCtFzB,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,cAAA,sBAAA,CAAwC;CAC9C,MAAM,eAAA,sBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,mBAAA,0BAAA;CACN,MAAM,4BAAA,oCAAA,CAAoE;CAC1E,MAAM,0BAAA,kCAAA,CAAgE;CACtE,MAAM,uBAAA,+BAAA,CAA0D;CAChE,MAAM,EAAE,4BAAA,mBAAA;CACR,MAAM,EAAE,eAAA,uBAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,mBAAA,iBAAA;CACR,MAAM,EAAE,uBAAA,yBAAA;CAER,IAAM,kBAAN,cAA8B,YAAY;EACxC,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,uBAAuB;AAC5B,QAAK,4BAA4B;AACjC,QAAK,mBAAmB;AAExB,QAAK,mBAAmB;AAGxB,QAAK,yBAAyB,KAAK,eAAe;AAGlD,QAAK,qBAAqB;;EAG5B,sBAAsB;GACpB,MAAM,SAAS,KAAK;AACpB,OAAI,UAAU,OAAO,eAAe,aAChC,SAAS,wBAAwB,QAAQ,UAAU,CACrD,KAAI,OAAO,eAAe,MAAM,OAAO,CACrC,QAAO,kBAAkB,MAAM,OAAO;OAEtC,QAAO,eAAe,MAAM,QAAQ,GAAG;;EAM7C,IAAI,YAAY;GACd,MAAM,gBAAgB,KAAK,eAAe,MAAM,YAAY;GAC5D,MAAM,sBAAsB,eAAe,iBAAiB,GAAG;AAE/D,OAAI,wBAAwB,SAAU,iBAAiB,wBAAwB,GAC7E,QAAO;YACE,wBAAwB,KACjC,QAAO;AAGT,OAAI,SAAS,KAAK,cAAc,gBAC9B,QAAO;AAGT,UAAO,KAAK,iBAAiB,KAAK,cAAc;;EAElD,IAAI,UAAU,OAAO;AACnB,OAAI,UAAU,KACZ,MAAK,eAAe,MAAM,aAAa,MAAM;OAE7C,MAAK,eAAe,MAAM,aAAa,KAAK;;EAIhD,QAAQ;AAIN,OAAI,WAAW,KAAK,CAClB;AAGF,OAAI,KAAK,iBACP;AAGF,QAAK,mBAAmB;AAIxB,eAAY,SAAS,MAAM,cAAc;IACvC,SAAS;IACT,YAAY;IACZ,UAAU;IACV,WAAW;IACX,WAAW;IACX,MAAM,KAAK,cAAc;IAC1B,CAAC;AAEF,QAAK,mBAAmB;;EAG1B,IAAI,YAAY;GACd,MAAM,iBAAiB,eAAe,KAAK,eAAe,MAAM,YAAY,IAAI,GAAG;AAEnF,OAAI,mBAAmB,OACrB,QAAO;YACE,mBAAmB,QAC5B,QAAO;AAGT,UAAO,KAAK,eAAe,SAAU,KAAK,eAAe,OAAO,KAAK,eAAe,MAAM,OAAO;;EAEnG,IAAI,UAAU,OAAO;AACnB,QAAK,eAAe,MAAM,aAAa,OAAO,MAAM,CAAC;;EAGvD,IAAI,MAAM;GACR,IAAI,WAAW,KAAK,eAAe,MAAM,MAAM;AAC/C,OAAI,aAAa,MAAM;AACrB,eAAW,SAAS,aAAa;AAEjC,QAAI;KAAC;KAAO;KAAO;KAAO,CAAC,SAAS,SAAS,CAC3C,QAAO;;AAGX,UAAO;;EAET,IAAI,IAAI,OAAO;AACb,QAAK,eAAe,MAAM,OAAO,MAAM;;EAIzC,kBAAkB;AAChB,OAAI,KAAK,aAAa,KACpB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,uEACA,oBACD,CAAC;GAGJ,MAAM,aAAa,mBAAmB,KAAK,gBAAgB,KAAK,eAAe,KAAK,YAAY,KAAK;AAErG,OAAI,eAAe,KACjB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,6DACA,oBACD,CAAC;AAGJ,OAAI,WAAW,qBAAqB,KAClC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,iEACA,oBACD,CAAC;AAGJ,OAAI,KAAK,uBAAuB,KAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,oEACA,oBACD,CAAC;AAGJ,OAAI,KAAK,aAAa,mBAAmB,KAAK,aAAa,SACzD,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,6GACA,oBACD,CAAC;AAGJ,QAAK,qBAAqB,iBAAiB,WAAW,KAAK,eAAe,EAAE,EAAE,EAAE,eAAe,MAAM,CAAC;AAEtG,UAAO,KAAK;;EAId,cAAc,MAAM,OAAO,UAAU;AACnC,OAAI,SAAS,WAAW,UAAU,YAAY,CAAC,KAAK,iBAAiB;AACnE,SAAK,kBAAkB;AACvB,SAAK,OAAO,UAAU;AACtB,SAAK,kBAAkB;cACd,KAAK,WAAW,KAAK,CAC9B,MAAK,oBAAoB,KAAK,UAAU,EAAE,CAAC;AAG7C,SAAM,cAAc,MAAM,OAAO,SAAS;;EAG5C,IAAI,eAAe;AACjB,UAAO;;EAGT,IAAI,YAAY;AACd,UAAO;;EAGT,IAAI,aAAa;AACf,UAAO;;EAGT,IAAI,cAAc;AAChB,UAAO;;EAGT,IAAI,eAAe;AACjB,UAAO;;;AAIX,OAAM,gBAAgB,WAAW,0BAA0B,UAAU;AACrE,OAAM,gBAAgB,WAAW,wBAAwB,UAAU;AACnE,OAAM,gBAAgB,WAAW,qBAAqB,UAAU;AAEhE,QAAO,UAAU,EACf,gBAAgB,iBACjB;;;;;CChND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,sBAAA,6BAAA;CACN,MAAM,6BAAA,oCAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,UAAA,iBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,UAAQ,eAAe,SAAS,aAAa;;AAG/C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,oBAAoB,aAAa,QAAQ;GAC7C,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY,OAAO;;GAGpC,kBAAkB;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB,CAAC;;GAGvE,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY,OAAO;;GAGpC,OAAO;IACL,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,WAAO,QAAQ,YAAY,MAAM;;GAGnC,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,eAAe;cAC3B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,SAAS;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,SAAS,KAAK;cAChE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,UAAU,GAAG;SAEhE,SAAQ,YAAY,kCAAkC,SAAS;cAEzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC7E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,aAAa,EAAE;cAC1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,eAAe;cAC3B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,cAAc,MAAM,eAAe;AAC9C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;MAC5D;;GAGJ,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;IAGH,MAAM,IAAI,QAAQ;AAClB,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,OAAM,IAAI,aAAa,UAAU,oCAAoC;AAEvE,YAAQ,IAAI,GAAG,WAAW,EAAE;;GAG9B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,qBAAqB;;GAG1E,IAAI,kBAAkB,GAAG;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,uBAAuB;;GAG7C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;GAG9D,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,WAAW;;GAGjC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,2BAA2B,QAAQ,cAAc,GAAG,EACtD,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,4BAA4B;IAC9B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,6BAA6B;;GAGlF,IAAI,0BAA0B,GAAG;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+FACV,CAAC;AAEJ,YAAQ,YAAY,+BAA+B;;GAGrD,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,6BAA6B;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,8BAA8B;;GAGnF,IAAI,2BAA2B,GAAG;IAChC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gGACV,CAAC;AAEJ,YAAQ,YAAY,gCAAgC;;GAGtD,IAAI,yBAAyB;IAC3B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,0BAA0B;;GAG/E,IAAI,uBAAuB,GAAG;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4FACV,CAAC;AAEJ,YAAQ,YAAY,4BAA4B;;GAGlD,IAAI,wBAAwB;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,yBAAyB;;GAG9E,IAAI,sBAAsB,GAAG;IAC3B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2FACV,CAAC;AAEJ,YAAQ,YAAY,2BAA2B;;GAGjD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,gBAAgB,GAAG;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,qBAAqB;;GAG3C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,sBAAsB;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,uBAAuB;;GAG5E,IAAI,oBAAoB,GAAG;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yFACV,CAAC;AAEJ,YAAQ,YAAY,yBAAyB;;GAG/C,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;IAGH,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,WAAO,UAAU,OAAO,KAAK;;GAG/B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,+BAA+B,SAAS,EAAE;;GAGhE,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,YAAY,WAAW;GAC7C,OAAO,EAAE,YAAY,MAAM;GAC3B,iBAAiB,EAAE,YAAY,MAAM;GACrC,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,cAAc,EAAE,YAAY,MAAM;GAClC,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,kBAAkB,EAAE,YAAY,MAAM;GACtC,UAAU,EAAE,YAAY,MAAM;GAC9B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;GACjC,OAAO,EAAE,YAAY,MAAM;GAC3B,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,kBAAkB,EAAE,YAAY,MAAM;GACtC,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,kBAAkB,EAAE,YAAY,MAAM;GACtC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,cAAc,EAAE,YAAY,MAAM;GAClC,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,aAAa,EAAE,YAAY,MAAM;GACjC,2BAA2B,EAAE,YAAY,MAAM;GAC/C,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,gBAAgB,EAAE,YAAY,MAAM;GACpC,WAAW,EAAE,YAAY,MAAM;GAC/B,sBAAsB,EAAE,YAAY,MAAM;GAC1C,4BAA4B,EAAE,YAAY,MAAM;GAChD,wBAAwB,EAAE,YAAY,MAAM;GAC5C,uBAAuB,EAAE,YAAY,MAAM;GAC3C,SAAS,EAAE,YAAY,MAAM;GAC7B,cAAc,EAAE,YAAY,MAAM;GAClC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,oBAAoB,EAAE,YAAY,MAAM;GACxC,aAAa,EAAE,YAAY,MAAM;GACjC,iBAAiB,EAAE,YAAY,MAAM;GACrC,cAAc,EAAE,YAAY,MAAM;GAClC,gBAAgB,EAAE,YAAY,MAAM;GACpC,qBAAqB,EAAE,YAAY,MAAM;GACzC,sBAAsB,EAAE,YAAY,MAAM;GAC1C,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAe,cAAc;IAAM;GACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;;;;;;;;;;;;;;;;;;;;AC/3GN,EAAC,SAAS,OAAO,QAAQ,SAAS;AAChC;AACA,SAAO,UAAU;aACV,SAAS,QAAQ,QAAQ,QAAQ;EACxC,MAAM,UAAU;EAEhB,IAAI,MAAM,OAAO;;;;;;;;;EAUjB,SAAS,0BAA0B,QAAQ,GAAG;GAC5C,MAAM,MAAM,gBAAgB,OAAO,MAAM,GAAG,kBAAkB,gBAAgB,OAAO,MAAM;AAE3F,UAAO,IAAI,MAAM,GAAG,IAAI,SAAS,EAAE;;EAGrC,MAAM,MAAM;GAEV,WAAW;GACX,aAAa;GACd;EAED,MAAM,MAAM;GAEV,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;GACZ;EAED,MAAM,MAAM;GAEV,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY,OAAO,4BAA4B,IAAI,YAAY,IAAI,WAAW,IAAI;GAClF,YAAY;GACZ,YAAY;GACZ,YAAY,OAAO,eAAe,IAAI,YAAY,IAAI,WAAW,IAAI;GACrE,YAAY,OAAO,yBAAyB,IAAI,YAAY,IAAI,WAAW,IAAI;GAC/E,YAAY,OAAO,+BAA+B,IAAI,WAAW,IAAI;GACtE;EAED,MAAM,MAAM;GACV,YAAY;GACZ,YAAY;GACZ,YAAY;GACb;EAED,MAAM,SAAS;GAEb,YAAY,4CAA4C,0BAA0B,EAAE,GAAG;GACvF,YAAY;GAEZ,YAAY;GACZ,YAAY;GACZ,YAAY;GACZ,YAAY;GAEZ,WAAW;GAEX,WAAW;GAEX,WAAW;GACZ;EAED,MAAM,WAAW;GAEf,YAAY,OAAO,UAAU,OAAO,aAAa,SAAS,IAAI;GAC9D,YAAY,OAAO,UAAU,OAAO,aAAa,SAAS,IAAI;GAC9D,YAAY,OAAO,UAAU,OAAO,aAAa,SAAS,IAAI;GAC9D,YAAY,OAAO,UAAU,OAAO,aAAa,SAAS,IAAI;GAC9D,YAAY,OAAO,UAAU,OAAO,aAAa,SAAS,IAAI;GAC9D,YAAY,OAAO,UAAU,OAAO,aAAa,SAAS,IAAI;GAC9D,WAAW,OAAO,UAAU,OAAO,YAAY,SAAS,IAAI;GAC5D,WAAW,OAAO,UAAU,OAAO,YAAY,SAAS,IAAI;GAC5D,WAAW,OAAO,UAAU,OAAO,YAAY,SAAS,IAAI;GAE5D,UAAU;GACV,UAAU;GACV,UAAU;GACV,UAAU;GAEV,WAAW;GACX,WAAW;GACZ;EAGD,MAAM,YAAY;EAClB,MAAM,YAAY;EAGlB,MAAM,YAAY;EAClB,MAAM,YAAY;EAGlB,IAAI;EACJ,IAAI;EAGJ,MAAM,SAAS;GACb,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;GACZ;EAED,IAAI;EACJ,IAAI;EACJ,IAAI;EAEJ,MAAM,eAAe;GACnB,KAAK;GACL,MAAM;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACP;EAED,MAAM,aAAa;GACjB,QAAQ;GACR,kBAAkB;GAClB,OAAO;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,SAAS;GACT,SAAS;GACT,OAAO;GACP,UAAU;GACV,OAAO;GACP,SAAS;GACT,SAAS;GACT,OAAO;GACP,KAAK;GACL,WAAW;GACX,UAAU;GACV,SAAS;GACT,MAAM;GACN,OAAO;GACP,UAAU;GACV,cAAc;GACd,MAAM;GACN,UAAU;GACV,MAAM;GACN,OAAO;GACP,QAAQ;GACR,UAAU;GACV,QAAQ;GACR,UAAU;GACV,SAAS;GACT,QAAQ;GACR,UAAU;GACV,KAAK;GACL,KAAK;GACL,OAAO;GACP,OAAO;GACP,WAAW;GACX,UAAU;GACV,OAAO;GACP,QAAQ;GACR,MAAM;GACN,MAAM;GACN,QAAQ;GACR,WAAW;GACX,OAAO;GACR;EAED,MAAM,cAAc,EAAE;EAEtB,MAAM,YAAY,EAAE;EAEpB,MAAM,YAAY;GAChB,KAAK;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACL;GACD,MAAM;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL;GACD,MAAM;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL;GACD,MAAM;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL;GACD,MAAM;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL;GACD,MAAM;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL;GACF;EAED,MAAM,aAAa,SAAU,OAAO,UAAU;GAC5C,IAAI,IAAI;GACR,MAAM,IAAI,MAAM;GAChB,MAAM,OAAO,MAAM,EAAE;AACrB,UAAO,IAAI,GAAG;AACZ,QAAI,SAAS,KAAK,KAAK,MAAM,GAAG,KAAK,MACnC;AAEF,MAAE;;AAEJ,UAAO;;EAGT,MAAM,aAAa,SAAU,MAAM,OAAO;GACxC,IAAI,IAAI;GACR,IAAI,IAAI,MAAM;AACd,UAAO,IACL,MAAK,KAAK,UAAU,MAAM,EAAE;AAE9B,UAAO;;EAGT,IAAI,WAAW;EAEf,MAAM,gBAAgB,SAAU,GAAG,GAAG;AACpC,OAAI,CAAC,YAAY,MAAM,GAAG;AACxB,eAAW;AACX,WAAO;;AAET,UAAO,EAAE,wBAAwB,EAAE,GAAG,IAAI,KAAK;;EAGjD,MAAM,SAAS,SAAU,OAAO;GAC9B,IAAI,IAAI;GACR,IAAI,IAAI;GACR,IAAI,IAAI,MAAM,SAAS;GACvB,MAAM,OAAO,EAAE;AACf,UAAO,EAAE,GAAG;AACV,QAAI,MAAM,SAAS,MAAM,GACvB;AAEF,SAAK,EAAE,KAAK,MAAM,IAAI;;AAExB,cAAW;AACX,UAAO;;EAIT,MAAM,uBAAuB,SAAU,SAAS;GAC9C,MAAM,MAAM;AAGZ,aAAU,QAAQ,iBAAiB;GAGnC,MAAM,KAAK,QAAQ,mBAAmB,QAAQ,gBAAgB,eACzD,QAAQ,gBAAgB,eACxB;AAGL,UAAQ,QAAQ,KAAK,KAAK,IAAI,CAAC,SAAS,QAAQ,KAAK,IAAI,IAAI,CAAC,SAAU;;EAI1E,MAAM,SAAS,SAAU,MAAM;GAC7B,MAAM,MAAM,KAAK,iBAAiB;AAClC,UAAO,IAAI,aAAa,KAAK,IAAI,gBAAgB;;EAInD,MAAM,mBAAmB,SAAU,WAAW;AAE5C,OAAI,YAAY,KAAK,YAAY,WAC5B,YAAY,SAAU,YAAY,MACrC,QAAO;AAGT,OAAI,YAAY,OAAS;IACvB,MAAM,SAAS,QAAQ,UAAU,SAAS,GAAG;AAC7C,WAAO,QAAQ,OAAO,OAAO,OAAO,SAAS,EAAE;;AAGjD,UAAO,UAAW,YAAY,SAAY,MAAQ,OAAQ,SAAS,GAAG,GAC/D,UAAW,YAAY,SAAW,OAAS,OAAQ,SAAS,GAAG;;EAIxE,MAAM,sBAAsB,SAAU,WAAW;AAE/C,OAAI,YAAY,KAAK,YAAY,WAC5B,YAAY,SAAU,YAAY,MACrC,QAAO;AAET,OAAI,YAAY,MACd,QAAO,OAAO,aAAa,UAAU;AAEvC,UAAO,OAAO,cAAc,UAAU;;EAKxC,MAAM,iBAAiB,SAAU,KAAK;AACpC,UAAO,IAAI,WAAW,KAAK,IAAI,GAC3B,IAAI,QAAQ,IAAI,YAAY,SAAU,WAAW,IAAI,IAAI;AAEzD,WAAO,KACH,OAAO,KAEP,IAAI,WAAW,KAAK,GAAG,GACrB,iBAAiB,SAAS,IAAI,GAAG,CAAC,GAElC,IAAI,WAAW,KAAK,GAAG,GACrB,YAEA;KACR,GACA;;EAKN,MAAM,qBAAqB,SAAU,KAAK;AACxC,UAAO,IAAI,WAAW,KAAK,IAAI,GAC3B,IAAI,QAAQ,IAAI,YAAY,SAAU,WAAW,IAAI,IAAI;AAEzD,WAAO,OAAO,IAAI,WAAW,KAAK,GAAG,GACjC,oBAAoB,SAAS,IAAI,GAAG,CAAC,GAErC,IAAI,WAAW,KAAK,GAAG,GACrB,YAEA;KACN,GACA;;EAIN,MAAM,OAAO,EAAE;EAGf,MAAM,eAAe,EAAE;EACvB,MAAM,gBAAgB,EAAE;EAGxB,IAAI,iBAAiB,EAAE;EACvB,IAAI,kBAAkB,EAAE;EAExB,MAAM,SAAS;GACb,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACN;EAGD,MAAM,UAAU,SAAU,IAAI,SAAS;GACrC,IAAI,OAAO;GACX,MAAM,QAAQ,EAAE;GAChB,IAAI,OAAO,KAAK;AAChB,UAAQ,OAAO,MAAO;AACpB,SAAK,OAAO,MAAM,MAAM,KAAK,KAAK;AAClC,QAAK,OAAO,KAAK,qBAAqB,KAAK,mBACzC;AAEF,WAAO,CAAC,SAAS,OAAO,KAAK,kBAAkB,SAAS,QACtD,QAAO,KAAK;;AAGhB,UAAO;;EAIT,MAAM,OAAO,SAAU,IAAI,SAAS;GAClC,IAAI;GACJ,MAAM,MAAM,OAAO;AAGnB,OAAI,OAAO,cAAc;QACnB,OAAO,SAAS;AAClB,SAAI,QAAQ,KAAK,GAAG;AACpB,YAAO,IAAI,CAAC,EAAE,GAAG;;cAEV,SAAS,QAClB,KAAK,IAAI,QAAQ,IAAI,KAAM;AACzB,QAAI,EAAE,aAAa,EACjB,QAAO,EAAE,aAAa,KAAK,KAAK,KAAK,EAAE,GAAG,CAAC,EAAE;aACpC,OAAO,UAAU;AAC1B,SAAI,QAAQ,KAAK,GAAG;AACpB,YAAO,IAAI,CAAC,EAAE,GAAG;;IAEnB,MAAM,QAAQ,EAAE;AAChB,SAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,EAAE,EACrC,KAAI,EAAE,GAAG,OAAO,GACd,OAAM,KAAK,EAAE,GAAG;AAGpB,WAAO,MAAM,SAAS,QAAQ;SAE9B,QAAO;AAIX,UAAO,QAAQ,IAAI,QAAQ;;EAI7B,MAAM,QAAQ,SAAU,KAAK,SAAS;GACpC,IAAI;GACJ,IAAI;GACJ,MAAM,MAAM,OAAO;AAGnB,OAAI,OAAO,QACT,QAAO,MAAM,UAAU,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;QAC/C;AACL,UAAM,IAAI,aAAa;AAEvB,QAAK,IAAI,QAAQ,kBACf,KAAI,EAAE,EAAE,sBAAsB,QAAQ,OAAO,EAAE,cAAc,KAC3D,QAAO,MAAM,UAAU,MAAM,KAAK,EAAE,KAAK,IAAI,CAAC;SACzC;AACL,aAAQ,EAAE;AACV,QAAG;AACD,UAAI,QAAQ,OAAO,EAAE,cAAc,IACjC,OAAM,KAAK,EAAE;AAEf,iBAAW,OAAO,EAAE,KAAK,IAAI,CAAC;cACtB,IAAI,EAAE;;QAGlB,SAAQ;;AAGZ,UAAO;;EAIT,MAAM,UAAU,SAAU,KAAK,SAAS;GACtC,IAAI;GACJ,IAAI;GACJ,MAAM,MAAM,OAAO;GACnB,IAAI;AAEJ,OAAI,OAAO,QACT,QAAO,MAAM,UAAU,MAAM,KAAK,QAAQ,KAAK,IAAI,CAAC;YAG/C,IAAI,QAAQ,mBAAoB;AACnC,YAAQ,OAAO,YAAY,MAAM,WAAW,cAAc,MAAM,GAAG;AACnE,QAAI,EAAE,EAAE,sBAAsB,MAAM,KAAK,EAAE,UAAU,EACnD,QAAO,MAAM,UAAU,MAAM,KAAK,EAAE,KAAK,IAAI,CAAC;SACzC;AACL,aAAQ,EAAE;AACV,QAAG;AACD,UAAI,MAAM,KAAK,EAAE,UAAU,CACzB,OAAM,KAAK,EAAE;AAEf,iBAAW,OAAO,EAAE,KAAK,IAAI,CAAC;cACtB,IAAI,EAAE;;SAEb,SAAQ;AAEjB,UAAO;;EAGT,MAAM,SAAS;GACb,KAAK,SAAU,GAAG,GAAG;AACnB,QAAI,WAAW,KAAK,EAAE,KAAK,IAAI,mBAAmB,EAAE;AACpD,WAAO,SAAU,GAAG,GAAG;AACrB,YAAO,KAAK,GAAG,EAAE;;;GAGrB,KAAK,SAAU,GAAG,GAAG;AACnB,QAAI,WAAW,KAAK,EAAE,KAAK,IAAI,mBAAmB,EAAE;AACpD,WAAO,SAAU,GAAG,GAAG;AACrB,YAAO,MAAM,GAAG,EAAE;;;GAGtB,KAAK,SAAU,GAAG,GAAG;AACnB,QAAI,WAAW,KAAK,EAAE,KAAK,IAAI,mBAAmB,EAAE;AACpD,WAAO,SAAU,GAAG,GAAG;AACrB,YAAO,MAAM,GAAG,EAAE;;;GAGtB,KAAK,SAAU,GAAG,GAAG;AACnB,QAAI,WAAW,KAAK,EAAE,KAAK,IAAI,mBAAmB,EAAE;AACpD,WAAO,SAAU,GAAG,GAAG;AACrB,YAAO,QAAQ,GAAG,EAAE;;;GAGzB;EAID,MAAM,iBAAiB,SAAU,GAAG,MAAM;GACxC,IAAI;GACJ,IAAI;GACJ,MAAM,OAAO,EAAE,mBAAmB;AAClC,UAAO,OAAO,OAAO,OAAO,KAAK,gBAAgB,MAAM,GAAG;AAC1D,QAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,EACpC,KAAI,KAAK,KAAK,KAAK,GAAG,CACpB,QAAO;AAGX,UAAO;;EAIT,MAAM,cAAc,WAAY;GAC9B,IAAI,MAAM;GACV,IAAI,MAAM;GACV,IAAI,MAAM;GACV,IAAI;GACJ,IAAI,UAAU,EAAE;GAChB,IAAI,QAAQ,EAAE;AACd,UAAO,SAAU,SAAS,KAAK;AAE7B,QAAI,QAAQ,GAAG;AACb,WAAM;AAAG,WAAM;AAAG,WAAM;AAAG,aAAQ,EAAE;AAAE,eAAU,EAAE;AAAE,cAAS,KAAA;AAC9D,YAAO;;IAET,IAAI,GAAG,GAAG,GAAG,GAAG;AAChB,QAAI,WAAW,QAAQ,eAAe;AACpC,SAAI;AAAK,SAAI;AAAK,SAAI;WACjB;AACL,SAAI,QAAQ;AACZ,cAAS,QAAQ;AACjB,UAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9C,UAAI,QAAQ,OAAO,QAAQ;AACzB,WAAI;AACJ;;AAEF,UAAI,QAAQ,OAAO,QAAQ;AACzB,WAAI;AACJ;;;AAGJ,SAAI,IAAI,GAAG;AACT,cAAQ,IAAI,KAAK;AACjB,UAAI;AAAG,YAAM,KAAK,EAAE;AACpB,UAAK,UAAU,OAAO,qBAAsB;AAC5C,aAAO,GAAG;AACR,aAAM,GAAG,KAAK;AACd,WAAI,MAAM,QACR,KAAI;AAEN,WAAI,EAAE;AACN,SAAE;;AAEJ,YAAM;AAAG,YAAM;AAAG,YAAM;AACxB,UAAI,IAAI,EACN,QAAO;YAEJ;AACL,UAAI,MAAM,GAAG;AACb,YAAM;;;AAGV,QAAI,YAAY,MAAM,GAAG,MAAM,YAAY,MAAM,GAAG,IAAI,GACtD,MAAK,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG;AACpD,SAAI,EAAE,OAAO,QACX;AAEF,SAAI,EAAE,OAAO,SAAS;AACpB,UAAI;AACJ;;;AAIN,UAAM,IAAI;AAAG,UAAM;AACnB,WAAO,MAAM,IAAI,IAAI;;MAErB;EAGJ,MAAM,aAAa,WAAY;GAC7B,IAAI,MAAM;GACV,IAAI,MAAM;GACV,IAAI,MAAM;GACV,IAAI;GACJ,IAAI,UAAU,EAAE;GAChB,IAAI,QAAQ,EAAE;AACd,UAAO,SAAU,SAAS,KAAK;AAE7B,QAAI,QAAQ,GAAG;AACb,WAAM;AAAG,WAAM;AAAG,WAAM;AAAG,aAAQ,EAAE;AAAE,eAAU,EAAE;AAAE,cAAS,KAAA;AAC9D,YAAO;;IAET,MAAM,OAAO,QAAQ;IACrB,MAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU,gCAAgC;AAC5C,WAAM;AAAG,WAAM;AAAG,WAAM;AAAG,aAAQ,EAAE;AAAE,eAAU,EAAE;AAAE,cAAS,KAAA;;IAEhE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;AACJ,QAAI,MAAM,QAAQ,MAAM,KAAK,SAAS,WAAW,QAAQ,eAAe;AACtE,SAAI;AACJ,SAAI;AACJ,SAAI;WACC;AACL,SAAI,QAAQ;AACZ,cAAS,QAAQ;AACjB,UAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9C,UAAI,QAAQ,OAAO,QAAQ;AACzB,WAAI;AACJ;;AAEF,UAAI,QAAQ,OAAO,QAAQ;AACzB,WAAI;AACJ;;;AAGJ,SAAI,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO;AAC5B,cAAQ,IAAI,KAAK;AACjB,YAAM,OAAO,MAAM,KAAK,QAAQ;AAChC,UAAI;AAAG,YAAM,GAAG,QAAQ,EAAE;AAC1B,UAAK,UAAU,OAAO,qBAAsB;AAC5C,aAAO,GAAG;AACR,WAAI,MAAM,QACR,KAAI;AAEN,WAAI,EAAE,cAAc,QAAQ,EAAE,iBAAiB,OAAO;AACpD,cAAM,GAAG,MAAM,KAAK;AACpB,UAAE;;AAEJ,WAAI,EAAE;;AAER,YAAM;AAAG,YAAM;AAAG,YAAM;AACxB,UAAI,IAAI,EACN,QAAO;YAEJ;AACL,UAAI,MAAM,GAAG,MAAM;AACnB,YAAM;;;AAGV,QAAI,YAAY,MAAM,GAAG,MAAM,MAAM,YAAY,MAAM,GAAG,MAAM,IAAI,GAClE,MAAK,IAAI,GAAG,IAAI,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG;AAC1D,SAAI,EAAE,OAAO,QACX;AAEF,SAAI,EAAE,OAAO,SAAS;AACpB,UAAI;AACJ;;;AAIN,UAAM,IAAI;AAAG,UAAM;AACnB,WAAO,MAAM,IAAI,IAAI;;MAErB;EAGJ,MAAM,WAAW,SAAU,MAAM;GAC/B,MAAM,MAAM,KAAK,iBAAiB;GAClC,MAAM,EAAE,SAAS,IAAI,IAAI,IAAI,IAAI;AACjC,OAAI,KAAK,MAAM,SAAS,IAAI,KAAK,QAAQ,IAAI,SAAS,KAAK,CACzD,QAAO;AAET,UAAO;;EAIT,MAAM,kBAAkB,SAAU,MAAM;AACtC,OAAK,KAAK,iBAAiB,KAAK,cAAc,WACzC,KAAK,SAAS,cACd,KAAK,cAAc,cAAc,CAAC,KAAK,aAAa,QAAQ,CAC/D,QAAO;AAET,OAAI,KAAK,cAAc,WAAW,KAAK,SAAS,WAC5C,CAAC,KAAK,aAAa,UAAU,EAAE;IACjC,MAAM,WAAW,KAAK;IACtB,IAAI,SAAS,KAAK;AAClB,WAAO,QAAQ;AACb,SAAI,OAAO,cAAc,OACvB;AAEF,cAAS,OAAO;;AAElB,QAAI,CAAC,OAEH,UADY,KAAK,cACJ;IAEf,MAAM,QAAQ,OAAO,qBAAqB,QAAQ;IAClD,MAAM,IAAI,MAAM;IAChB,IAAI;AACJ,SAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;KAC1B,MAAM,OAAO,MAAM;AACnB,SAAI,KAAK,aAAa,OAAO,KAAK,SAAS;AACzC,UAAI;WACE,KAAK,aAAa,OAAO,KAAK,SAChC,WAAU,CAAC,CAAC,KAAK;iBAEV,CAAC,KAAK,aAAa,OAAO,CACnC,WAAU,CAAC,CAAC,KAAK;AAEnB,UAAI,QACF;;;AAIN,QAAI,CAAC,QACH,QAAO;;AAGX,UAAO;;EAIT,MAAM,oBAAoB,SAAU,MAAM;GACxC,IAAI,YAAY;AAChB,OAAI,KAAK,aAAa,kBAAkB,CACtC,aAAY,KAAK,aAAa,kBAAkB;AAElD,WAAQ,WAAR;IACE,KAAK;IACL,KAAK;IACL,KAAK,OACH,QAAO;IACT,KAAK,QACH,QAAO;IACT;AACE,SAAI,KAAK,cAAc,KAAK,WAAW,aAAa,EAClD,QAAO,kBAAkB,KAAK,WAAW;AAE3C,YAAO;;;EAKb,MAAM,sBAAsB,WAAY;GAqBtC,MAAM,aACJ;GAIF,MAAM,cAAc;GAIpB,MAAM,aAAa,aAAa;GAEhC,MAAM,aAAa;GAEnB,MAAM,aACJ,wBAEuB,aAAa,sLACzB,IAAI,YAAY;GAK7B,MAAM,cAAc,WAAW,QAAQ,YAAY,WAAW;GAE9D,MAAM,cACJ,oBACU,cAAc,sQAOZ,aAAa;GAQ3B,MAAM,oBACJ,2CAKe,aAAa,WAClB,aAAa,qBACI,cAAc,cAC3B,IAAI,cAAc;AASlC,iBAAc,OACZ,kBAAkB,aAAa,kEAEzB,IAAI;AAGZ,iBAAc,OAAO,mBAAmB,KAAK;AAE7C,YAAS,KAAK,OAAO,QAAQ,aAAa,SAAS,IAAI;AACvD,YAAS,UAAU,OAAO,OAAO,aAAa,SAAS,IAAI;AAC3D,YAAS,YAAY,OAAO,UAAU,aAAa,SAAS,IAAI;AAChE,YAAS,YAAY,OAAO,SAAS,cAAc,QAAQ;;EAI7D,MAAM,YAAY,SAAU,QAAQ,OAAO;AACzC,OAAI,OAAO,WAAW,SACpB,QAAO,CAAC,CAAC,OAAO;AAElB,OAAI,OAAO,WAAW,SACpB,QAAO;AAET,QAAK,MAAM,KAAK,OACd,QAAO,KAAK,CAAC,CAAC,OAAO;AAGvB,OAAI,OAAO;AACT,qBAAiB,EAAE;AACnB,sBAAkB,EAAE;;AAEtB,wBAAqB;AACrB,UAAO;;EAIT,MAAM,OAAO,SAAU,SAAS,OAAO;GACrC,IAAI;AACJ,OAAI,OAAO,WAAW;AACpB,QAAI,OAAO,OACT,OAAM,IAAI,OAAO,OAAO,QAAQ;QAEhC,OAAM,IAAI,OAAO,aAAa,SAAS,cAAc;AAEvD,UAAM;;AAER,OAAI,OAAO,aAAa,WAAW,QAAQ,IACzC,SAAQ,IAAI,QAAQ;;EAKxB,MAAM,WAAW;GACf,KAAK;GACL,MAAM;GACN,OAAO;GACP,OAAO;GACP,OAAO;GACP,UAAU;GACV,WAAW;GACX,YAAY;GACZ,gBAAgB;GAChB,UAAU;GACV,iBAAiB;GACjB,mBAAmB;GACpB;EAGD,IAAI;EAEJ,MAAM,gBAAgB,SAAU,SAAS,OAAO;GAC9C,MAAM,SAAS;AACf,SAAM,QAAQ,iBAAiB;AAC/B,OAAI,SAAS,WAAW,KAAK;AAG3B,oBAAgB,OAAO,IAAI;AAC3B,kBAAc,iBAAiB,IAAI,WAAW,QAAQ,MAAM,GAAG;AAC/D,gBAAY,IAAI,mBAAmB,IAAI,gBAAgB;AACvD,aAAS,MAAM;;AAEjB,YAAS,OAAO;AAChB,UAAO;;EAIT,IAAI;EACJ,IAAI;EAEJ,MAAM,SAAS;EAEf,MAAM,SAAS;EACf,MAAM,SAAS;EAEf,MAAM,SAAS;EACf,MAAM,SAAS;EACf,MAAM,SAAS;EAEf,MAAM,SAAS;EACf,MAAM,SAAS;EACf,MAAM,SAAS;EAEf,MAAM,SAAS;EACf,MAAM,SAAS;EAEf,MAAM,SAAS;EACf,MAAM,SAAS;EACf,MAAM,SAAS;EAEf,IAAI,SAAS,EAAE;EACf,IAAI,SAAS,EAAE;EAGf,MAAM,kBAAkB,SAAU,YAAY,QAAQ,MAAM,UAAU;GAGpE,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM,IAAI;GACV,MAAM,IAAI;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI,WAAW;GACf,IAAI;GAGJ,MAAM,iBAAiB,OAAO,eAAe;AAG7C,cAAW,SAAS,QAAQ,IAAI,YAAY,KAAK;GAEjD,IAAI,oBAAoB;AACxB,UAAO,UAAU;AAEf,aAAS,IAAI,WAAW,KAAK,SAAS,GAAG,MAAM,SAAS;AAExD,YAAQ,QAAR;KAEE,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,UAAU;AAC1C,UAAI,MAAM,IACR,UAAS,QAAQ,IAAI,WAAgB,SAAS;AAEhD;KAEF,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,GAAG;AACnC,eAAS,QAAQ,IAAI,QAAQ,MAAM,KAAK,uCAC9B,SAAS;AACnB;KAEF,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,UAAU;AAC1C,gBAAU,cAAc,MAAM,MAAM;AACpC,eAAS,QAAQ,IAAI,cAAc,MAAM,KAAK,aAAa,SACzD,QAAQ,SAAS;AACnB;KAEF,KAAM,UAAU,KAAK,OAAO,GAAG,SAAS,KAAA;AACtC,cAAQ,SAAS,MAAM,SAAS,QAAQ;AACxC,eAAS,QAAQ,IAAI,kBAClB,OAAO,aAAa,qBAAqB,IAAI,GAC1C,SAAQ,MAAM,GAAG,aAAa,GAAG,OACjC,SAAQ,MAAM,GAAG,aAAa,GAAG,QACrC,QAAQ,SAAS;AACnB;KAEF,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,UAAU;AAC1C,UAAI,MAAM,OAAO,IACf,UAAS,QAAQ,IAAI,WAAW,SAAS;eAChC,CAAC,MAAM,GAChB,UAAS,QAAQ,IAAI,wBAAwB,SAAS;eAC7C,OAAO,MAAM,OAAO,YAAY,IAAI,mBACpC,IAAI,gBAAgB,WAAW,MAAM,GAC9C,UAAS,QAAQ,IAAI,wBAAuB,YAAY,UAAS,SAAS;UAE1E,MAAK,MAAO,iBAAiB,4BAAiB;AAEhD;KAEF,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,UAAU;AAC1C,WAAK,MAAM,GAAG,MAAM,IAAI,WAAW;AACnC,aAAO,MAAM;AACb,aAAO,KAAK,MAAM,IAAI;AACtB,aAAO,KAAK,WAAW,IAAI,KAAK,KAAK,KAAK;AAC1C,UAAI,MAAM,MAAM,EAAE,OAAO,UAAU,MAAM,MAAM;AAC7C,YAAK,MAAO,iBAAiB,4BAAiB;AAC9C,cAAO;;AAET,UAAI,MAAM,OAAO,GACf,QAAO,MAAM,OAAO,OAChB;OAAE,IAAI;OAAQ,IAAI;OAAM,IAAI;OAAQ,GACpC,MAAM,MAAM,gBAAgB,MAAM,OAAO,OACvC;OAAE,IAAI;OAAK,IAAI;OAAK,IAAI;OAAQ,GAChC;eACG,MAAM,OAAO,QAAQ,MAAM,GAAG,SAAS,IAAI,EAAE;AAEtD,gBAAS,QAAQ,IAAI,YAAY,SAAS;AAC1C;iBACS,MAAM,GACf,OAAM,KAAK,eAAe,MAAM,GAAG,CAAC,QAAQ,IAAI,YAAY,OAAO;AAErE,aAAO,MAAM,OAAO,OAAQ,iBAAiB,WAAW,KAAK,aAAa,IACtE,MACA;AACJ,eACE,QAAQ,IAAI,OACT,CAAC,MAAM,KACH,KAAK,0BAAyB,OAAO,QAAO,sCAAqC,OAAO,QACzF,CAAC,MAAM,MAAM,aAAa,MAAM,OAAO,MAAM,OAAO,OAClD,sCAAqC,OAAO,cAC5C,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,OAAO,6CAA4C,OAAO,WAAU,KAAK,MAC7H,QAAQ,SAAS;AACnB;KAGF,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,SAAS;AACzC,eAAS,6CAA6C,SAAS;AAC/D;KAGF,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,SAAS;AACzC,eAAS,0CAA0C,SAAS;AAC5D;KAGF,KAAK;KACL,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,SAAS;AACzC,eAAS,oCAAoC,SAAS;AACtD;KAGF,KAAK;AACH,cAAQ,SAAS,MAAM,SAAS,SAAS;AACzC,eAAS,iCAAiC,SAAS;AACnD;KAEF,KAAM,UAAU,cAAc,SAAS,KAAA;AAErC,YAAM,MAAM,SAAS,KAAK;AAC1B,eAAS,YAAY,QAAQ,MAAM,GAAG;AACtC;KAGF,KAAK;AACH,UAAK,QAAQ,SAAS,MAAM,SAAS,WAAW,EAAG;AACjD,aAAM,KAAK,MAAM,GAAG,aAAa;AACjC,eAAQ,MAAM,IAAd;QACE,KAAK;AAEH,kBAAS,QAAQ,IAAI,kCAAkC,UAAU,OAAO,gBAAgB,MAAM;AAC9F;QACF,KAAK;AAEH,kBAAS,2EAA2E,IAAI,QAAQ,SAAS;AACzG;QAGF,KAAK;AACH,kBAAS,QAAQ,IAAI,yDAAyD,SAAS;AACvF;QACF,KAAK;AACH,kBAAS,QAAQ,IAAI,8BAA8B,SAAS;AAC5D;QACF,KAAK;AACH,kBAAS,QAAQ,IAAI,kCAAkC,SAAS;AAChE;QAGF,KAAK;AACH,kBAAS,0IAE0D,IAAI,QAAQ,SAAS;AACxF;QACF,KAAK;AACH,kBAAS,0EAA0E,IAAI,QAAQ,SAAS;AACxG;QACF,KAAK;AACH,kBAAS,8EAA8E,IAAI,QAAQ,SAAS;AAC5G;QACF,QACE,MAAK,MAAO,iBAAiB,4BAAiB;;iBAIxC,QAAQ,SAAS,MAAM,SAAS,WAAW,EAAG;AACxD,aAAM,KAAK,MAAM,GAAG,aAAa;AACjC,eAAQ,MAAM,IAAd;QACE,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;AACH,gBAAO,YAAY,KAAK,MAAM,GAAG;AACjC,aAAI,MAAM,MAAM,MAAM,IAAI;AACxB,iBAAO,QAAQ,KAAK,MAAM,GAAG;AAC7B,cAAI,MAAM,OAAO,KAAK;AACpB,oBAAS,QAAQ,IAAI,WAAW,SAAS;AACzC;qBACS,MAAM,OAAO,KAAK;AAC3B,kBAAO,OAAO,SAAS;AACvB,oBAAS,OACL,kCACkB,OAAO,6CAAqD,SAAS,MACvF,QAAQ,IAAI,QAAQ,OAAO,qBAAqB,SAAS;AAC7D;qBACS,MAAM,OAAO,UAAU,MAAM,OAAO,SAAS,MAAM,OAAO,UAAU,MAAM,OAAO,KAC1F,QAAO;mBACE,MAAM,OAAO,SAAS,MAAM,OAAO,SAAS,MAAM,OAAO,OAClE,QAAO;eACF;AACL,eAAI,KAAK,KAAK,MAAM,GAAG;AACvB,eAAI,MAAM,GAAG,MAAM,IAAI;AACvB,eAAI,SAAS,EAAE,IAAI,GAAG,IAAI;AAC1B,eAAI,SAAS,EAAE,IAAI,GAAG,IAAI;AAC1B,eAAI,EAAE,OAAO,IACX,KAAI;AAEN,eAAI,EAAE,OAAO,IACX,KAAI;AAEN,mBAAQ,IAAI,QAAQ,IAAI,IAAI,MAAM,OAAO,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,MAAM,IAAI;AAC9E,kBAAO,KAAK,IACP,IACG,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,IAChC,OAAO,OACP,MACF,QAAQ,IACZ,KAAK,KACF,IACG,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,KAAK,IAChC,OAAO,OACP,MACF,QAAQ,IACZ,MAAM,IACH,EAAE,KACC,QAAQ,IACR,QAAQ,IAAI,KAChB;;AAEV,iBAAO,OAAO,WAAW;AACzB,iBAAO,OAAO,SAAS;AACvB,mBAAS,YAAY,OAAO,QAAQ,OAAO,WAAoB,OAAO,QAAQ,SAAS;eAEvF,MAAK,MAAO,iBAAiB,4BAAiB;AAEhD;QACF,QACE,MAAK,MAAO,iBAAiB,4BAAiB;;iBAIxC,QAAQ,SAAS,MAAM,SAAS,WAAW,EAAG;AACxD,aAAM,KAAK,MAAM,GAAG,aAAa;AACjC,cAAO,MAAM,GAAG,QAAQ,IAAI,YAAY,IAAI,CAAC,QAAQ,IAAI,YAAY,GAAG;AACxE,eAAQ,MAAM,IAAd;QAEE,KAAK;QACL,KAAK;QACL,KAAK;AACH,kBAAS,kBAAiB,KAAK,QAAQ,SAAS,OAAM,GAAG,YAAW,SAAS;AAC7E;QAEF,KAAK;AACH,kBAAS,mBAAkB,KAAK,QAAQ,SAAS,OAAM,GAAG,YAAW,SAAS;AAC9E;QAEF,KAAK;AAEH,0BAAiB,EAAE;AACnB,kBAAS,iCAAgC,KAAK,QAAQ,SAAS,OAAM,GAAG,UAAS,SAAS;AAC1F;QACF,QACE,MAAK,MAAO,iBAAiB,4BAAiB;;iBAIxC,QAAQ,SAAS,MAAM,SAAS,WAAW,EAAG;AACxD,aAAM,KAAK,MAAM,GAAG,aAAa;AACjC,eAAQ,MAAM,IAAd;QACE,KAAK;AACH,kBAAS,QAAQ,IAAI,2EAAyE,SAAS;AACvG;QACF,KAAK;AACH,kBAAS,QAAQ,IAAI,gEAA8D,SAAS;AAC5F;QAEF,KAAK;AACH,kBAAS,QAAQ,IAAI,2EAAyE,SAAS;AACvG;QACF,KAAK;AACH,kBAAS,uBAAuB,SAAS;AACzC;QACF,QACE,MAAK,MAAO,iBAAiB,4BAAiB;;iBAIxC,QAAQ,SAAS,MAAM,SAAS,WAAW,EAAG;AACxD,aAAM,KAAK,MAAM,GAAG,aAAa;AACjC,eAAQ,MAAM,IAAd;QAEE,KAAK;AACH,kBAAS,oGACC,SAAS;AACnB;QAEF,KAAK;AAEH,kBAAS,kZAuB6B,SAAS;AAC/C;QACF,KAAK;AACH,kBACE,gUAIO,SAAS;AAClB;QACF,KAAK;AACH,kBACE,yTAIO,SAAS;AAClB;QAEF,KAAK;AACH,kBACE,uMAIQ,SAAS;AACnB;QAEF,KAAK;AACH,kBACE,wbAaQ,SAAS;AACnB;QACF;AACE,cAAK,MAAO,kBAAkB,4BAAiB;AAC/C;;iBAIM,QAAQ,SAAS,MAAM,SAAS,WAAW,EAAG;AACxD,aAAM,KAAK,MAAM,GAAG,aAAa;AACjC,eAAQ,MAAM,IAAd;QACE,KAAK;AACH,kBAAS,QAAQ,IAAI,+JAGX,SAAS;AACnB;QACF,KAAK;AACH,kBAAS,8BAA8B,SAAS;AAChD;QAEF,KAAK;AACH,kBACE,QAAQ,IACN,iEACK,SAAS;AAClB;QAEF,KAAK;AACH,kBACE,QAAQ,IACN,kEACK,SAAS;AAClB;QAEF,KAAK;AACH,kBACE,QAAQ,IAAI,4KAIL,SAAS;AAClB;QAEF,KAAK;AACH,kBACE,QAAQ,IAAI,yKAIL,SAAS;AAClB;QAEF,KAAK;AACH,kBACE,QAAQ,IACN,iSAKK,SAAS;AAClB;QAEF,KAAK;AACH,kBACE,QAAQ,IACN,+RAKK,SAAS;AAClB;QACF,QACE,MAAK,MAAO,iBAAiB,4BAAiB;;iBAKxC,QAAQ,SAAS,MAAM,SAAS,UAAU,CACpD,UAAS,4CACD,MAAM,GAAG,aAAa,GAAG,qBAAoB,SAAS;eAIpD,QAAQ,SAAS,MAAM,SAAS,UAAU,CACpD,UAAS,2CACP,MAAM,GAAG,aAAa,GAAG,qBAAoB,SAAS;eAE9C,QAAQ,SAAS,MAAM,SAAS,UAAU,CACpD,UAAS,QAAQ,IAAI,YAAiB,SAAS;WAC1C;AAEL,cAAO;AACP,gBAAS;AAET,YAAK,QAAQ,UACX,KAAK,QAAQ,SAAS,MAAM,UAAU,MAAM,WAAW,EAAG;AACxD,iBAAS,UAAU,MAAM,SAAS,OAAO,QAAQ,MAAM,SAAS;AAChE,YAAI,WAAW,OACb,SAAQ,OAAO;AAEjB,eAAO,OAAO;AACd,YAAI,KAEF,SAAQ,CAAC,OAAO,SAAS,KAAK,IAAI,OAAO,KAAK,KAAK;YAGnD,SAAQ,OAAO,SAAS,KAAK,IAAI,OAAO,KAAK,KAAK;AAGpD,iBAAS,OAAO;AAEhB,iBAAS,OAAO;AAEhB,YAAI,OAAU;;AAGlB,WAAI,CAAC,QAAQ;AACX,aAAK,oCAAqC,WAAW,IAAK;AAC1D,eAAO;;AAET,WAAI,CAAC,MAAM;AACT,aAAK,gCAAiC,WAAW,IAAK;AACtD,eAAO;;;AAGX;KACF;AACE,0BAAoB;AACpB,WAAK,MAAO,iBAAiB,4BAAiB;;AAGlD,QAAI,CAAC,kBACH;AAEF,QAAI,CAAC,OAAO;AACV,UAAK,MAAO,iBAAiB,4BAAiB;AAC9C,YAAO;;AAIT,eAAW,MAAM,KAAK;;AAIxB,UAAO;;EAKT,MAAM,UAAU,SAAU,UAAU,MAAM,UAAU;GAClD,IAAI,OAAO;GAAI,IAAI,OAAO;GAAI,IAAI,QAAQ;GAAI,IAAI,SAAS;GAAI,IAAI,OAAO;AAK1E,WAAQ,MAAR;IACE,KAAK;AACH,SAAI,cAAc,UAChB,QAAO,cAAc;AAEvB,aAAQ,UAAU,WAAW,SAAS,MAAM;AAC5C,YAAO;AACP,YAAO;AACP;IACF,KAAK;AACH,SAAI,aAAa,UACf,QAAO,aAAa;AAEtB,aAAQ,UAAU,WAAW,SAAS,MAAM;AAC5C,YAAO;AACP,YAAO;AACP;IACF,KAAK;AACH,SAAI,cAAc,UAChB,QAAO,cAAc;AAEvB,aAAQ,UAAU,WAAW,SAAS,MAAM;AAC5C,YAAO;AACP,YAAO;AACP;IACF;;AAGF,YAAS,gBAAgB,UAAU,OAAO,MAAM,SAAS;AAEzD,WAAS,QAAQ,SAAS,OAAQ,MAAM,SAAS,MAAM;AAEvD,QAAK,QAAQ,SAAS,SAAS,SAAS,SAAS,OAAO,EAAE;AACxD,YAAQ,UAAU,KAAK,SAAS,GAAG,2BAA2B;AAC9D,YAAQ,UAAU,KAAK,SAAS,GAAG,0BAA0B;;AAG/D,OAAI,OAAO,MAAM,OAAO,IAAI;AAC1B,WAAO,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;AAClD,aAAS,EAAE;AACX,aAAS,EAAE;;GAGb,MAAM,UAAU,SAAS,KAAK,SAAS,MAAM,OAAO,OAAO,MAAM,OAAO,aAAa,CAAC,SAAS;AAE/F,UAAO,QAAQ,SAAS,OAAQ,cAAc,YAAY,UAAY,aAAa,YAAY;;EAIjG,MAAM,WAAW,SAAU,UAAU,OAAO;GAC1C,MAAM,QAAQ,MAAM;GACpB,MAAM,SAAS,MAAM,GAAG,SAAS,MAAM,GAAG;AAC1C,UAAO,SAAS,MAAM,GAAG,MAAM,IAC5B,OAAO,QAAQ,SAAS,OAAO,QAAQ,EAAE,CAAC,GAAG,KACzC,KAAK,QAAQ,SAAS,OAAO,QAAQ,SAAS,EAAE,CAAC,GAAG,KACjD,MACA,KACJ,MAAM,SAAS,MAAM,QAAQ,UAAU,MAAM,OAAO,MAAM,IAAI,GAAG;;EAIzE,MAAM,UAAU,SAAU,WAAW,SAAS,UAAU;GACtD,IAAI;GACJ,IAAI;GACJ,MAAM,OAAO,EAAG;GAChB,IAAI,QAAQ;IAAC;IAAI;IAAK;IAAI;GAC1B,MAAM,YAAY;GAClB,MAAM,UAAU,EAAE;GAClB,MAAM,UAAU,EAAE;GAClB,MAAM,UAAU,EAAE;GAClB,IAAI,UAAU,EAAE;GAChB,IAAI;AAEJ,QAAK,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC5C,QAAI,CAAC,KAAK,UAAU,QAAQ,KAAK,UAAU,MAAM,OAAO;AACtD,YAAO,UAAU,GAAG,MAAM,YAAY;AACtC,SAAI,QAAQ,KAAK,OAAO,QAAQ,QAAQ,OAAO;AAC7C,YAAM,OAAO,MAAM,KAAK;AACxB,gBAAU,KAAK,SAAS,UAAU,IAAI,MAAM;WAE5C,SAAQ;MAAC;MAAI;MAAK;MAAI;;AAI1B,YAAQ,KAAK,MAAM,KAAK,MAAM;AAC9B,YAAQ,KAAK,OAAO,MAAM,IAAI,SAAS,MAAM,GAAG;AAChD,YAAQ,KAAK,QAAQ,UAAU,IAAI,MAAM,KAAK;AAE9C,YAAQ,KACJ,QAAQ,GAAG,QAAQ,IAAI,EAAE,UAAU,SAAS,QAAQ,GACpD,QAAQ,OAAO,QAAQ,IAAI,CAAC;;AAGlC,OAAI,IAAI,GAAG;AACT,YAAQ,KAAK,cAAc;AAC3B,iBAAa,UAAU,OAAO,QAAQ;;AAGxC,UAAO;IACL;IACA;IACA;IACA;IACA;IACA;IACD;;EAIH,MAAM,UAAU,SAAU,WAAW,SAAS;AAE5C,OAAI,QAAQ,aAAa,EACvB,WAAU,QAAQ;AAGpB,UAAO,UAAU,QAAQ,YACvB,QAAQ,aACL,QAAQ,KAAK,MAAM,QAAQ,KAAK,OAChC,QAAQ,YAAY,MAAM,QAAQ,UAAU,KAAK,IAAI;;EAG5D,MAAM,cAAc,SAAU,GAAG,SAAS,UAAU;GAClD,IAAI,IAAI;AACR,QAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,EAAE,EACrC,GAAE,GAAG,SAAS,UAAU,MAAM,MAAM,KAAK,IAAI;AAE/C,UAAO;;EAGT,MAAM,eAAe,SAAU,WAAW,UAAU;GAClD,MAAM,IAAI,EAAE;AACZ,QAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,EAAE,EAC7C,GAAE,KAAK,QAAQ,UAAU,IAAI,OAAO,SAAS;AAE/C,UAAO,EAAE,SAAS,GAAG;;EAIvB,MAAM,QAAQ,SAAS,SAAS,WAAW,SAAS,UAAU;GAC5D,IAAI;AAEJ,OAAI,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,eAAe,WACzD,QAAO,YAAY,eAAe,WAAW,SAAS,SAAS,SAAS;AAG1E,iBAAc;AAGd,OAAI,UAAU,WAAW,GAAG;AAC1B,SAAK,WAAW,YAAY;AAC5B,WAAO,OAAO,YAAY,KAAA,IAAY;cAC7B,UAAU,OAAO,IAAI;AAC9B,SAAK,OAAS,UAAU;AACxB,WAAO,OAAO,YAAY,KAAA,IAAY;;AAIxC,OAAI,OAAO,cAAc,SACvB,aAAY,KAAK;AAGnB,OAAK,UAAW,KAAK,UAAU,CAC7B,aAAY,QAAQ,WAAW,QAAQ;GAIzC,MAAM,SAAS,UACZ,QAAQ,WAAW,IAAS,CAC5B,QAAQ,IAAI,YAAY,IAAO,CAC/B,QAAQ,IAAI,YAAY,KAAK,CAC7B,QAAQ,IAAI,YAAY,IAAK,CAC7B,QAAQ,IAAI,YAAY,IAAI,CAC5B,QAAQ,IAAI,YAAY,GAAG;AAG9B,QAAK,cAAc,OAAO,MAAM,YAAY,KAAK,YAAY,KAAK,GAAG,KAAK,QAAQ;AAChF,kBAAc,OAAO,MAAM,IAAI,WAAW;AAC1C,QAAI,OAAO,OAAO,SAAS,OAAO,KAAK;AACrC,UAAK,UAAU;AACf,YAAO,OAAO,YAAY,KAAA,IAAY;;UAEnC;AACL,SAAK,MAAO,YAAY,4BAAiB;AACzC,WAAO,OAAO,YAAY,KAAA,IAAY;;AAGxC,kBAAe,aAAa,aAAa,aAAa,SAAS;AAE/D,UAAO,YAAY,eAAe,WAAW,SAAS,SAAS,SAAS;;EAI1E,MAAM,WAAW,SAAS,SAAS,WAAW,SAAS,UAAU;AAC/D,OAAK,UAAW,KAAK,UAAU,CAC7B,aAAY,QAAQ,WAAW,QAAQ;AAGzC,UAAO,SAAS;AACd,QAAI,MAAM,WAAW,SAAS,SAAS,CAAE;AACzC,cAAU,QAAQ;;AAEpB,UAAO;;EAIT,MAAM,SAAS,SAAS,kBAAkB,WAAW,SAAS,UAAU;GACtE,IAAI;GAAa,IAAI,QAAQ,EAAE;GAAE,IAAI;AAErC,eAAY,UAAU;AAEtB,OAAI;QACG,WAAW,gBAAgB;SAC1B,SAAS,YAAY,WAAW,SAAS,aAAa,UAAU;MAClE,MAAM,IAAI,SAAS;MACnB,MAAM,IAAI,SAAS;MACnB,MAAM,IAAI,SAAS;AACnB,UAAI,EAAE,SAAS,GAAG;OAChB,MAAM,IAAI,EAAE;AACZ,YAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG;AAC9C,eAAO,OAAO,EAAE,GAAG,IAAI,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE;AAChD,YAAI,EAAE,OAAO,KACX,GAAE,GAAG,MAAM,UAAU,SAAS,MAAM;YAEpC,SAAQ,MAAM,OAAO,KAAK;;AAG9B,WAAI,IAAI,KAAK,MAAM,SAAS,GAAG;AAC7B,cAAM,KAAK,cAAc;AACzB,qBAAa,QAAQ,OAAO,MAAM;;iBAGhC,EAAE,GACJ,SAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,SAAS,MAAM;UAE9C,SAAQ,EAAE,IAAI;AAGlB,aAAO,OAAO,aAAa,aACvB,WAAW,OAAO,SAAS,GAC3B;;;;AAKV,kBAAe;AAGf,OAAI,UAAU,WAAW,GAAG;AAC1B,SAAK,WAAW,YAAY;AAC5B,WAAO,OAAO,YAAY,KAAA,IAAY;cAC7B,UAAU,OAAO,IAAI;AAC9B,SAAK,OAAS,UAAU;AACxB,WAAO,OAAO,YAAY,KAAA,IAAY;cAC7B,gBAAgB,QACzB,eAAc,cAAc,QAAQ;AAItC,OAAI,OAAO,cAAc,SACvB,aAAY,KAAK;AAGnB,OAAK,UAAW,KAAK,UAAU,CAC7B,aAAY,QAAQ,WAAW,QAAQ;GAIzC,MAAM,SAAS,UACZ,QAAQ,WAAW,IAAS,CAC5B,QAAQ,IAAI,YAAY,IAAO,CAC/B,QAAQ,IAAI,YAAY,KAAK,CAC7B,QAAQ,IAAI,YAAY,IAAK,CAC7B,QAAQ,IAAI,YAAY,IAAI,CAC5B,QAAQ,IAAI,YAAY,GAAG;AAG9B,QAAK,cAAc,OAAO,MAAM,YAAY,KAAK,YAAY,KAAK,GAAG,KAAK,QAAQ;AAChF,kBAAc,OAAO,MAAM,IAAI,WAAW;AAC1C,QAAI,OAAO,OAAO,SAAS,OAAO,KAAK;AACrC,UAAK,UAAU;AACf,YAAO,OAAO,YAAY,KAAA,IAAY;;UAEnC;AACL,SAAK,MAAO,YAAY,4BAAiB;AACzC,WAAO,OAAO,YAAY,KAAA,IAAY;;AAIxC,mBAAgB,aAAa,QAAQ,aAAa,SAAS,SAAS;AAEpE,WAAQ,gBAAgB,WAAW;AAEnC,UAAO,OAAO,aAAa,aACvB,WAAW,OAAO,SAAS,GAC3B;;EAIN,MAAM,QAAQ,SAAS,eAAe,WAAW,SAAS,UAAU;AAClE,OAAI,UAAU,WAAW,EACvB,MAAK,WAAW,YAAY;AAE9B,UAAO,OAAO,WAAW,SAAS,OAAO,aAAa,aAClD,SAAS,WAAW,SAAS;AAC7B,aAAS,QAAQ;AACjB,WAAO;OAEP,SAAS,aAAa;AACtB,WAAO;KAEV,CAAC,MAAM;;EAIV,MAAM,aAAa,SAAU,GAAG;AAC9B,wBAAqB;AACrB,iBAAc,cAAc,GAAG,KAAK;AACpC,YAAS,MAAM;AACf,YAAS,OAAO;AAChB,YAAS,QAAQ;AACjB,YAAS,QAAQ;AACjB,YAAS,QAAQ;AACjB,YAAS,WAAW;AACpB,YAAS,YAAY;AACrB,YAAS,aAAa;AACtB,YAAS,iBAAiB;AAC1B,YAAS,WAAW;AACpB,YAAS,kBAAkB;AAC3B,YAAS,oBAAoB;;AAG/B,aAAW,IAAI;AAaf,SAVY;GAEV,SAAS;GACT;GACA;GACA,SAAS;GACT;GACA;GACD;GAGD;;;;;AC9zDF,EAAC,SAAU,QAAQ,SAAS;AAC1B,SAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,SAAS,GACzF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,QAAQ,IAC3D,SAAS,OAAO,eAAe,cAAc,aAAa,UAAU,MAAM,OAAO,UAAU,SAAS;cAC9F,WAAY;AAAE;EAErB,SAAS,cAAc;AAu+BvB,UAt+BY,SAAU,WAAS;IAG7B,IAAI,OAAO;KACT,KAAK;KACL,MAAM;KACN,MAAM;KACN,MAAM;KACN,MAAM;KACN,MAAM;KACN,KAAK;KACL,KAAK;KACL,MAAM;KACN,MAAM;KACN,MAAM;KACN,OAAO;KACP,MAAM;KACN,OAAO;KACP,OAAO;KACP,OAAO;KACP,OAAO;KACP,OAAO;KACP,OAAO;KACP,OAAO;KACP,OAAO;KACP,OAAO;KACR;IAED,IAAI,QAAQ,EAAE;IACd,IAAI,iBAAiB,EAAE;AACvB,UAAM,IAAI;AACV,mBAAe,KAAK;AACpB,WAAO,KAAK,KAAK,CAAC,QAAQ,SAAU,MAAM,GAAG;AAC3C,WAAM,QAAQ,KAAM,IAAI;AACxB,oBAAe,MAAM,SAAS;MAC9B;AACF,WAAO,OAAO,MAAM;IAEpB,IAAI,qBAAqB,MAAM,MAAM,MAAM,MAAM,MAAM;IACvD,IAAI,eAAe,MAAM,IAAI,MAAM,IAAI,MAAM;IAC7C,IAAI,wBAAwB,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM;IAChH,IAAI,gBAAgB,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM;IACrF,IAAI,iBAAiB,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,qBAAqB,MAAM,MAAM;IAErF,IAAI,MAAM;IAEV,SAAS,YAAa;AACpB,SAAI,CAAC,KAAK;AAER,4BAAM,IAAI,KAAK;MACf,IAAI,OAAO,SAAW,MAAO;AAC3B,WAAI,KAAK,eAAe,KAAK,EAAE;QAC7B,IAAI,WAAW;AACf,aAAK,MAAM,MAAM,IAAI,CAAC,QAAQ,SAAU,OAAO;SAC7C,IAAI,MAAM,MAAM,MAAM,IAAI;SAC1B,IAAI,OAAO,IAAI;SACf,IAAI,OAAO,IAAI;AACf,gBAAO,SAAS,MAAM,GAAG;AACzB,gBAAO,OAAO,SAAS,MAAM,GAAG,GAAG;AACnC,aAAI,IAAI,YAAY,MAAM,MAAM,MAAM;AACtC,cAAK,IAAI,IAAI,GAAG,IAAI,MAAM,IACxB,KAAI,IAAI,EAAE,UAAU,MAAM,MAAM;UAElC;;;AAIN,WAAK,IAAI,QAAQ,KAAM,MAAM,KAAM;;;;;;;IASvC,SAAS,gBAAiB,MAAM;AAC9B,gBAAW;AACX,YAAO,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC,IAAI,MAAM;;IAG/C,SAAS,oBAAoB,MAAM;AACjC,YAAO,eAAe,gBAAgB,KAAK;;IAI7C,IAAI,SAAS;KACX,SAAS;KACT,aAAa;KACd;;;;;;;;;IAUD,SAAS,kBAAmB,eAAe,gBAAgB;KACzD,IAAI,QAAQ;KACZ,IAAI,WAAW;KACf,IAAI,sBAAM,IAAI,KAAK;KACnB,IAAI,aAAa,kCAAkB,IAAI,KAAK;KAC5C,IAAI;AACJ,mBAAc,MAAM,IAAI,CAAC,QAAQ,SAAS,MAAM,OAAO;AACrD,UAAI,MAAM,QAAQ,IAAI,KAAK,GACzB,MAAK,IAAI,IAAI,CAAC,OAAO,KACnB,OAAM,SAAS;WAEZ;AACL,kBAAW;OACX,IAAI,MAAM,MAAM,MAAM,IAAI;OAC1B,IAAI,IAAI,IAAI;OACZ,IAAI,IAAI,IAAI;AACZ,WAAI,OAAO,cAAc,YAAY,SAAS,GAAG,MAAM,CAAC;AACxD,WAAI,OAAO,cAAc,YAAY,SAAS,GAAG,MAAM,CAAC;AACxD,WAAI,IAAI,GAAG,EAAE;AACb,yBAAkB,WAAW,IAAI,GAAG,EAAE;;OAExC;AACF,YAAO;MAAO;MAAiB;MAAY;;IAG7C,IAAI,aAAa,aAAa;IAE9B,SAAS,UAAW;AAClB,SAAI,CAAC,aAAa;MAEhB,IAAI,MAAM,kBAAkB,OAAO,OAAO,KAAK;MAC/C,IAAI,MAAM,IAAI;MACd,IAAI,aAAa,IAAI;AACrB,oBAAc;AACd,oBAAc;AACd,kBAAY,kBAAkB,OAAO,WAAW,MAAM,CAAC;;;IAK3D,SAAS,wBAAyB,MAAM;AACtC,cAAS;AACT,YAAO,YAAY,IAAI,KAAK,IAAI;;IAGlC,SAAS,wBAAyB,MAAM;AACtC,cAAS;AACT,YAAO,YAAY,IAAI,KAAK,IAAI;;IAGlC,SAAS,oBAAqB,MAAM;AAClC,cAAS;AACT,YAAO,UAAU,IAAI,KAAK,IAAI;;IAIhC,IAAI,SAAS,MAAM;IACnB,IAAI,SAAS,MAAM;IACnB,IAAI,UAAU,MAAM;IACpB,IAAI,UAAU,MAAM;IACpB,IAAI,UAAU,MAAM;IACpB,IAAI,UAAU,MAAM;IACpB,IAAI,UAAU,MAAM;IACpB,IAAI,SAAS,MAAM;IACnB,IAAI,SAAS,MAAM;IACnB,IAAI,UAAU,MAAM;IACpB,IAAI,UAAU,MAAM;IACpB,IAAI,WAAW,MAAM;IACrB,IAAI,UAAU,MAAM;IACpB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;IACrB,IAAI,WAAW,MAAM;;;;;;;;;;;;;;;;IAkBrB,SAAS,mBAAoB,QAAQ,eAAe;KAClD,IAAI,YAAY;KAGhB,IAAI,YAAY,IAAI,YAAY,OAAO,OAAO;AAC9C,UAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,IACjC,WAAU,KAAK,gBAAgB,OAAO,GAAG;KAG3C,IAAI,iCAAiB,IAAI,KAAK;KAC9B,SAAS,eAAe,GAAG,MAAM;MAC/B,IAAI,UAAU,UAAU;AACxB,gBAAU,KAAK;AACf,qBAAe,IAAI,SAAS,eAAe,IAAI,QAAQ,GAAG,EAAE;AAC5D,UAAI,UAAU,sBACZ,gBAAe,IAAI,uBAAuB,eAAe,IAAI,sBAAsB,GAAG,EAAE;AAE1F,qBAAe,IAAI,OAAO,eAAe,IAAI,KAAK,IAAI,KAAK,EAAE;AAC7D,UAAI,OAAO,sBACT,gBAAe,IAAI,wBAAwB,eAAe,IAAI,sBAAsB,IAAI,KAAK,EAAE;;KAInG,IAAI,cAAc,IAAI,WAAW,OAAO,OAAO;KAC/C,IAAI,iCAAiB,IAAI,KAAK;KAI9B,IAAI,aAAa,EAAE;KACnB,IAAI,YAAY;AAChB,UAAK,IAAI,MAAM,GAAG,MAAM,OAAO,QAAQ,OAAO;AAC5C,UAAI,CAAC,UACH,YAAW,KAAK,YAAY;OAC1B,OAAO;OACP,KAAK,OAAO,SAAS;OAErB,OAAO,kBAAkB,QAAQ,IAAI,kBAAkB,QAAQ,IAAI,wBAAwB,KAAK,MAAM;OACvG,CAAC;AAEJ,UAAI,UAAU,OAAO,QAAQ;AAC3B,iBAAU,MAAM;AAChB,mBAAY;;;KAIhB,IAAI,mBAAmB,WAAW,WAAW,WAAW,WAAW,qBAAqB,WAAW,WAAW;KAC9G,IAAI,WAAW,SAAU,GAAG;AAAE,aAAO,KAAM,IAAI,IAAK,IAAI;;KACxD,IAAI,UAAU,SAAU,GAAG;AAAE,aAAO,KAAM,IAAI,IAAK,IAAI;;AAGvD,UAAK,IAAI,UAAU,GAAG,UAAU,WAAW,QAAQ,WAAW;AAC5D,kBAAY,WAAW;MACvB,IAAI,cAAc,CAAC;OACjB,QAAQ,UAAU;OAClB,WAAW;OACX,UAAU;OACX,CAAC;MACF,IAAI,WAAY,KAAK;MACrB,IAAI,uBAAuB;MAC3B,IAAI,yBAAyB;MAC7B,IAAI,oBAAoB;AACxB,qBAAe,OAAO;AAGtB,WAAK,IAAI,MAAM,UAAU,OAAO,OAAO,UAAU,KAAK,OAAO;OAC3D,IAAI,WAAW,UAAU;AACzB,kBAAW,YAAY,YAAY,SAAS;AAG5C,sBAAe,IAAI,WAAW,eAAe,IAAI,SAAS,IAAI,KAAK,EAAE;AACrE,WAAI,WAAW,sBACb,gBAAe,IAAI,wBAAwB,eAAe,IAAI,sBAAsB,IAAI,KAAK,EAAE;AAIjG,WAAI,WAAW;YACT,YAAY,WAAW,WAAW;AACpC,qBAAY,OAAO,SAAS;SAC5B,IAAI,SAAS,aAAa,WAAW,UAAU,UAAU,SAAS,OAAO;AACzE,aAAI,SAAS,aAAa,CAAC,wBAAwB,CAAC,uBAClD,aAAY,KAAK;UACf,QAAQ;UACR,WAAW;UACX,UAAU;UACX,CAAC;kBACO,CAAC,qBACV;mBAKK,YAAY,WAAW,WAAW;AACzC,qBAAY,OAAO,SAAS;SAC5B,IAAI,WAAW,aAAa,WAAW,UAAU,UAAU,SAAS,OAAO;AAC3E,aAAI,WAAW,aAAa,CAAC,wBAAwB,CAAC,uBACpD,aAAY,KAAK;UACf,QAAQ;UACR,WAAY,WAAW,WAAY,SAAS;UAC5C,UAAU;UACX,CAAC;kBACO,CAAC,qBACV;mBAKK,WAAW,oBAAoB;AAEtC,aAAI,WAAW,SACb,YAAW,wBAAwB,MAAM,GAAG,KAAK,KAAK,IAAI,WAAW;AAGvE,qBAAY,OAAO,SAAS;AAC5B,aAAI,SAAS,UACX,gBAAe,KAAK,SAAS,UAAU;SAEzC,IAAI,WAAW,aAAa,WAAW,UAAU,UAAU,SAAS,OAAO;AAC3E,aAAI,WAAW,aAAa,yBAAyB,KAAK,2BAA2B,GAAG;AACtF;AACA,sBAAY,KAAK;WACf,QAAQ;WACR,WAAW;WACX,UAAU;WACV,gBAAgB;WACjB,CAAC;eAEF;mBAKK,WAAW,UAAU;AAC5B,aAAI,uBAAuB,EACzB;kBACS,oBAAoB,GAAG;AAChC,mCAAyB;AACzB,iBAAO,CAAC,YAAY,YAAY,SAAS,GAAG,SAC1C,aAAY,KAAK;UAGnB,IAAI,gBAAgB,YAAY,YAAY,SAAS,GAAG;AACxD,cAAI,iBAAiB,MAAM;AACzB,0BAAe,IAAI,eAAe,IAAI;AACtC,0BAAe,IAAI,KAAK,cAAc;;AAExC,sBAAY,KAAK;AACjB;;AAEF,oBAAW,YAAY,YAAY,SAAS;AAC5C,qBAAY,OAAO,SAAS;AAC5B,aAAI,SAAS,UACX,gBAAe,KAAK,SAAS,UAAU;mBAMlC,WAAW,UAAU;AAC5B,aAAI,yBAAyB;cACvB,yBAAyB,EAC3B;mBACS,CAAC,SAAS,YAAY,YAAY,SAAS,GAAG;AACvD,uBAAY,KAAK;AACjB,sBAAW,YAAY,YAAY,SAAS;;;AAGhD,qBAAY,OAAO,SAAS;mBAIrB,WAAW,OAClB,aAAY,OAAO,UAAU;cAK5B;AACH,oBAAY,OAAO,SAAS;AAE5B,YAAI,SAAS,aAAa,aAAa,QACrC,gBAAe,KAAK,SAAS,UAAU;;;MAa7C,IAAI,YAAY,EAAE;MAClB,IAAI,aAAa;AACjB,WAAK,IAAI,MAAM,UAAU,OAAO,OAAO,UAAU,KAAK,OAAO;OAC3D,IAAI,aAAa,UAAU;AAC3B,WAAI,EAAE,aAAa,gBAAgB;QACjC,IAAI,MAAM,YAAY;QACtB,IAAI,aAAa,aAAa;QAC9B,IAAI,QAAQ,eAAe;AAC3B,YAAI,cAAc,QAAQ,WAAW,QAAQ;AAC3C,oBAAW,OAAO;AAClB,oBAAW,oBAAoB;cAE/B,WAAU,KAAK,aAAa;SAC1B,QAAQ;SACR,MAAM;SACN,QAAQ;SACR,gBAAgB;SAChB,mBAAmB;SACpB,CAAC;;;MAIR,IAAI,mBAAmB,EAAE;AACzB,WAAK,IAAI,SAAS,GAAG,SAAS,UAAU,QAAQ,UAAU;OACxD,IAAI,MAAM,UAAU;AACpB,WAAI,CAAC,IAAI,kBAAmB,IAAI,kBAAkB,CAAC,eAAe,IAAI,IAAI,OAAO,EAAG;QAClF,IAAI,UAAU,CAAC,aAAa,IAAI;AAChC,aAAK,IAAI,WAAY,KAAK,GAAI,cAAc,WAAW,sBAAsB,WAAW,eAAe,IAAI,WAAW,KAAK,KAAK,MAC9H,MAAK,IAAI,MAAM,SAAS,GAAG,MAAM,UAAU,QAAQ,MACjD,KAAI,UAAU,KAAK,WAAW,UAAU;AACtC,iBAAQ,KAAK,aAAa,UAAU,KAAK;AACzC;;QAKN,IAAI,aAAa,EAAE;AACnB,aAAK,IAAI,MAAM,GAAG,MAAM,QAAQ,QAAQ,OAAO;SAC7C,IAAI,QAAQ,QAAQ;AACpB,cAAK,IAAI,IAAI,MAAM,QAAQ,KAAK,MAAM,MAAM,IAC1C,YAAW,KAAK,EAAE;;QAItB,IAAI,aAAa,YAAY,WAAW;QACxC,IAAI,YAAY,UAAU;AAC1B,aAAK,IAAI,MAAM,WAAW,KAAK,GAAG,OAAO,GAAG,MAC1C,KAAI,EAAE,UAAU,OAAO,gBAAgB;AACrC,qBAAY,YAAY;AACxB;;QAGJ,IAAI,YAAY,WAAW,WAAW,SAAS;QAC/C,IAAI,YAAY,YAAY;QAC5B,IAAI,YAAY,UAAU;AAC1B,YAAI,EAAE,UAAU,aAAa;cACtB,IAAI,MAAM,YAAY,GAAG,OAAO,UAAU,KAAK,MAClD,KAAI,EAAE,UAAU,OAAO,gBAAgB;AACrC,sBAAY,YAAY;AACxB;;;AAIN,yBAAiB,KAAK;SACpB,aAAa;SACb,UAAU,KAAK,IAAI,WAAW,WAAW,GAAG,IAAI,SAAS;SACzD,UAAU,KAAK,IAAI,WAAW,UAAU,GAAG,IAAI,SAAS;SACzD,CAAC;;;AAKN,WAAK,IAAI,SAAS,GAAG,SAAS,iBAAiB,QAAQ,UAAU;OAC/D,IAAI,MAAM,iBAAiB;OAC3B,IAAI,eAAe,IAAI;OACvB,IAAI,UAAU,IAAI;OAClB,IAAI,UAAU,IAAI;;;;;;OAMlB,IAAI,iBAAmB,YAAY,aAAa,MAAO,IAAK,SAAS;AAOrE,WAAI,eAAe,IAAI,SAAS,CAC9B,MAAK,IAAI,KAAK,GAAG,KAAK,aAAa,QAAQ,MAAM;QAC/C,IAAI,MAAM,aAAa;AACvB,YAAI,UAAU,OAAO,UAAU;SAC7B,IAAI,WAAW;AACf,cAAK,IAAI,KAAK,KAAK,GAAG,MAAM,GAAG,KAC7B,KAAI,EAAE,UAAU,aAAa,OAAO,gBAAgB;AAClD,qBAAW,UAAU,aAAa;AAClC;;AAGJ,wBAAe,KAAM,YAAY,qBAAqB,YAAa,UAAU,SAAS;;;AAO5F,WAAI,eAAe,IAAI,QAAQ,CAC7B,MAAK,IAAI,OAAO,GAAG,OAAO,aAAa,QAAQ,QAAQ;QACrD,IAAI,MAAM,aAAa;AACvB,YAAI,UAAU,OAAO,QACnB,MAAK,IAAI,OAAO,OAAO,GAAG,QAAQ,IAAI,QAAQ;SAC5C,IAAI,eAAe,SAAS,KAAK,UAAU,UAAU,aAAa;AAClE,aAAI,eAAe,cAAc;AAC/B,cAAI,iBAAiB,QACnB,gBAAe,KAAK,QAAQ;AAE9B;;;;AAQV,WAAI,eAAe,IAAI,QAAQ,CAC7B,MAAK,IAAI,OAAO,GAAG,OAAO,aAAa,QAAQ,QAAQ;QACrD,IAAI,OAAO,aAAa;AACxB,YAAI,UAAU,QAAQ,QACpB,gBAAe,MAAM,OAAO;;AAOlC,WAAI,eAAe,IAAI,QAAQ,IAAI,eAAe,IAAI,QAAQ,CAC5D,MAAK,IAAI,OAAO,GAAG,OAAO,aAAa,SAAS,GAAG,QAAQ;QACzD,IAAI,OAAO,aAAa;AACxB,YAAI,UAAU,SAAS,UAAU,UAAU;SACzC,IAAI,aAAa,GAAG,WAAW;AAC/B,cAAK,IAAI,OAAO,OAAO,GAAG,QAAQ,GAAG,QAAQ;AAC3C,uBAAa,UAAU,aAAa;AACpC,cAAI,EAAE,aAAa,eACjB;;AAGJ,cAAK,IAAI,OAAO,OAAO,GAAG,OAAO,aAAa,QAAQ,QAAQ;AAC5D,qBAAW,UAAU,aAAa;AAClC,cAAI,EAAE,WAAW,eACf;;AAGJ,aAAI,eAAe,aAAa,UAAU,UAAU,UAAU,eAAe,UAAW,cAAc,UAAU,UAC9G,gBAAe,MAAM,WAAW;;;AAOxC,WAAI,eAAe,IAAI,QAAQ;aACxB,IAAI,OAAO,GAAG,OAAO,aAAa,QAAQ,OAE7C,KAAI,UADO,aAAa,SACF,SAAS;AAC7B,cAAK,IAAI,OAAO,OAAO,GAAG,QAAQ,KAAM,UAAU,aAAa,UAAU,UAAU,gBAAiB,OAClG,gBAAe,aAAa,OAAO,QAAQ;AAE7C,cAAK,QAAQ,OAAO,aAAa,UAAW,UAAU,aAAa,UAAU,UAAU,gBAAgB,UAAW,OAChH,KAAI,UAAU,aAAa,WAAW,QACpC,gBAAe,aAAa,OAAO,QAAQ;;;AAQrD,WAAI,eAAe,IAAI,QAAQ,IAAI,eAAe,IAAI,QAAQ,IAAI,eAAe,IAAI,QAAQ,CAC3F,MAAK,IAAI,OAAO,GAAG,OAAO,aAAa,QAAQ,QAAQ;QACrD,IAAI,OAAO,aAAa;AACxB,YAAI,UAAU,SAAS,UAAU,UAAU,UAAU;AACnD,wBAAe,MAAM,QAAQ;AAE7B,cAAK,IAAI,OAAO,OAAO,GAAG,QAAQ,KAAM,UAAU,aAAa,SAAS,eAAgB,OACtF,gBAAe,aAAa,OAAO,QAAQ;AAE7C,cAAK,IAAI,OAAO,OAAO,GAAG,OAAO,aAAa,UAAW,UAAU,aAAa,SAAS,eAAgB,OACvG,gBAAe,aAAa,OAAO,QAAQ;;;AASnD,WAAI,eAAe,IAAI,QAAQ,CAC7B,MAAK,IAAI,OAAO,GAAG,iBAAiB,SAAS,OAAO,aAAa,QAAQ,QAAQ;QAC/E,IAAI,OAAO,aAAa;QACxB,IAAI,OAAO,UAAU;AACrB,YAAI,OAAO;aACL,mBAAmB,OACrB,gBAAe,MAAM,OAAO;mBAErB,OAAO,aAChB,kBAAiB;;AAOvB,WAAI,eAAe,IAAI,sBAAsB,EAAE;QAI7C,IAAI,sBAAuB,SAAS,UAAU;QAC9C,IAAI,2BAA2B,sBAAsB;QAGrD,IAAI,eAAe,EAAE;QAEnB,IAAI,cAAc,EAAE;AACpB,aAAK,IAAI,OAAO,GAAG,OAAO,aAAa,QAAQ,OAI7C,KAAI,UAAU,aAAa,SAAS,uBAAuB;SACzD,IAAI,OAAO,OAAO,aAAa;SAC/B,IAAI,kBAAmB,KAAK;AAE5B,aAAI,wBAAwB,KAAK,KAAK,KACpC,KAAI,YAAY,SAAS,GACvB,aAAY,KAAK;UAAQ;UAAM,UAAU;UAAM,CAAC;aAEhD;mBAIM,kBAAkB,wBAAwB,KAAK,MAAM,KAC7D,MAAK,IAAI,WAAW,YAAY,SAAS,GAAG,YAAY,GAAG,YAAY;UACrE,IAAI,YAAY,YAAY,UAAU;AACtC,cAAI,cAAc,mBAChB,cAAc,wBAAwB,oBAAoB,KAAK,CAAC,IAChE,wBAAwB,oBAAoB,UAAU,CAAC,KAAK,MAC5D;AACA,wBAAa,KAAK,CAAC,YAAY,UAAU,UAAU,KAAK,CAAC;AACzD,uBAAY,SAAS;AACrB;;;;AAMV,qBAAa,KAAK,SAAU,GAAG,GAAG;AAAE,gBAAO,EAAE,KAAK,EAAE;UAAM;AAG5D,aAAK,IAAI,UAAU,GAAG,UAAU,aAAa,QAAQ,WAAW;SAC9D,IAAI,QAAQ,aAAa;SACzB,IAAI,aAAa,MAAM;SACvB,IAAI,cAAc,MAAM;SAIxB,IAAI,kBAAkB;SACtB,IAAI,gBAAgB;AACpB,cAAK,IAAI,OAAO,aAAa,GAAG,OAAO,aAAa,QAAQ;UAC1D,IAAI,OAAO,aAAa;AACxB,cAAI,UAAU,QAAQ,0BAA0B;AAC9C,6BAAkB;WAClB,IAAI,KAAM,UAAU,QAAQ,sBAAuB,SAAS;AAC5D,eAAI,OAAO,gBAAgB;AACzB,4BAAgB;AAChB;;;;AAUN,aAAI,mBAAmB,CAAC,eAAe;AACrC,0BAAgB;AAChB,eAAK,IAAI,OAAO,aAAa,GAAG,QAAQ,GAAG,QAAQ;WACjD,IAAI,OAAO,aAAa;AACxB,eAAI,UAAU,QAAQ,0BAA0B;YAC9C,IAAI,OAAQ,UAAU,QAAQ,sBAAuB,SAAS;AAC9D,gBAAI,SAAS,eACX,iBAAgB;gBAEhB,iBAAgB;AAElB;;;;AAIN,aAAI,eAAe;AACjB,oBAAU,aAAa,eAAe,UAAU,aAAa,gBAAgB;AAI7E,cAAI,kBAAkB;gBACf,IAAI,QAAQ,aAAa,GAAG,QAAQ,aAAa,QAAQ,QAC5D,KAAI,EAAE,UAAU,aAAa,UAAU,gBAAgB;AACrD,gBAAI,gBAAgB,OAAO,aAAa,QAAQ,GAAG,SACjD,WAAU,aAAa,UAAU;AAEnC;;;AAIN,cAAI,kBAAkB;gBACf,IAAI,QAAQ,cAAc,GAAG,QAAQ,aAAa,QAAQ,QAC7D,KAAI,EAAE,UAAU,aAAa,UAAU,gBAAgB;AACrD,gBAAI,gBAAgB,OAAO,aAAa,QAAQ,GAAG,SACjD,WAAU,aAAa,UAAU;AAEnC;;;;;AAUV,aAAK,IAAI,QAAQ,GAAG,QAAQ,aAAa,QAAQ,QAC/C,KAAI,UAAU,aAAa,UAAU,uBAAuB;SAC1D,IAAI,aAAa,OAAO,WAAW;SACnC,IAAI,aAAa;AACjB,cAAK,IAAI,MAAM,QAAQ,GAAG,OAAO,GAAG,MAClC,KAAI,UAAU,aAAa,QAAQ,cACjC,cAAa;cACR;AACL,uBAAc,UAAU,aAAa,QAAQ,sBAAuB,SAAS;AAC7E;;SAGJ,IAAI,aAAa;AACjB,cAAK,IAAI,QAAQ,QAAQ,GAAG,QAAQ,aAAa,QAAQ,QACvD,KAAI,UAAU,aAAa,WAAW,wBAAwB,eAC5D,YAAW;cACN;AACL,uBAAc,UAAU,aAAa,UAAU,sBAAuB,SAAS;AAC/E;;AAGJ,cAAK,IAAI,OAAO,YAAY,QAAQ,UAAU,OAC5C,WAAU,aAAa,SAAS,eAAe,aAAa,aAAa;AAE3E,iBAAQ;;;;AAQhB,WAAK,IAAI,OAAO,UAAU,OAAO,QAAQ,UAAU,KAAK,QAAQ;OAC9D,IAAI,UAAU,YAAY;OAC1B,IAAI,SAAS,UAAU;AAEvB,WAAI,UAAU;YACR,UAAU,SAAS,UAAU,SAC/B,aAAY;kBAMV,SAAS,OACX,aAAY;gBACH,UAAU,UAAU,SAC7B,aAAY,SAAS;AAMzB,WAAI,SAAS,cACX,aAAY,QAAQ,SAAS,IAAI,UAAU,QAAQ,YAAY,OAAO;AAMxE,WAAI,SAAS,UAAU,OAAO,gBAAgB,OAAO,MAAM,IAAI,SAAS,QACtE,MAAK,IAAI,MAAM,MAAM,OAAO,KAAM,gBAAgB,OAAO,KAAK,GAAG,gBAAiB,MAChF,aAAY,OAAO,UAAU;;;AAQrC,YAAO;MACL,QAAQ;MACI;MACb;KAED,SAAS,wBAAyB,OAAO,OAAO;AAE9C,WAAK,IAAI,IAAI,OAAO,IAAI,OAAO,QAAQ,KAAK;OAC1C,IAAI,WAAW,UAAU;AACzB,WAAI,YAAY,SAAS,SACvB,QAAO;AAET,WAAK,YAAY,SAAS,WAAa,SAAS,aAAa,SAC3D,QAAO;AAET,WAAI,WAAW,oBAAoB;QACjC,IAAI,MAAM,mBAAmB,EAAE;AAC/B,YAAI,QAAQ,KAAK,OAAO,SAAS;;;AAGrC,aAAO;;KAGT,SAAS,mBAAoB,cAAc;MAEzC,IAAI,iBAAiB;AACrB,WAAK,IAAI,IAAI,eAAe,GAAG,IAAI,OAAO,QAAQ,KAAK;OACrD,IAAI,WAAW,UAAU;AACzB,WAAI,WAAW,OACb;AAEF,WAAI,WAAW;YACT,EAAE,mBAAmB,EACvB,QAAO;kBAEA,WAAW,mBACpB;;AAGJ,aAAO;;;IAKX,IAAI,OAAO;IAEX,IAAI;IAEJ,SAAS,QAAS;AAChB,SAAI,CAAC,WAAW;MAEd,IAAI,MAAM,kBAAkB,MAAM,KAAK;MACvC,IAAI,MAAM,IAAI;AACG,UAAI,WAEV,QAAQ,SAAU,OAAO,KAAK;AACvC,WAAI,IAAI,KAAK,MAAM;QACnB;AACF,kBAAY;;;IAKhB,SAAS,qBAAsB,MAAM;AACnC,YAAO;AACP,YAAO,UAAU,IAAI,KAAK,IAAI;;;;;;;;;;;IAYhC,SAAS,yBAAyB,QAAQ,iBAAiB,OAAO,KAAK;KACrE,IAAI,SAAS,OAAO;AACpB,aAAQ,KAAK,IAAI,GAAG,SAAS,OAAO,IAAI,CAAC,MAAM;AAC/C,WAAM,KAAK,IAAI,SAAS,GAAG,OAAO,OAAO,SAAS,IAAI,CAAC,IAAI;KAE3D,IAAI,sBAAM,IAAI,KAAK;AACnB,UAAK,IAAI,IAAI,OAAO,KAAK,KAAK,IAC5B,KAAI,gBAAgB,KAAK,GAAG;MAC1B,IAAI,SAAS,qBAAqB,OAAO,GAAG;AAC5C,UAAI,WAAW,KACb,KAAI,IAAI,GAAG,OAAO;;AAIxB,YAAO;;;;;;;;;;;IAYT,SAAS,mBAAmB,QAAQ,uBAAuB,OAAO,KAAK;KACrE,IAAI,SAAS,OAAO;AACpB,aAAQ,KAAK,IAAI,GAAG,SAAS,OAAO,IAAI,CAAC,MAAM;AAC/C,WAAM,KAAK,IAAI,SAAS,GAAG,OAAO,OAAO,SAAS,IAAI,CAAC,IAAI;KAE3D,IAAI,WAAW,EAAE;AACjB,2BAAsB,WAAW,QAAQ,SAAU,WAAW;MAC5D,IAAI,YAAY,KAAK,IAAI,OAAO,UAAU,MAAM;MAChD,IAAI,UAAU,KAAK,IAAI,KAAK,UAAU,IAAI;AAC1C,UAAI,YAAY,SAAS;OAEvB,IAAI,aAAa,sBAAsB,OAAO,MAAM,WAAW,UAAU,EAAE;AAI3E,YAAK,IAAI,IAAI,SAAS,KAAK,aAAc,gBAAgB,OAAO,GAAG,GAAG,gBAAiB,IACrF,YAAW,KAAK,UAAU;OAK5B,IAAI,WAAW,UAAU;OACzB,IAAI,cAAc;AAClB,YAAK,IAAI,MAAM,GAAG,MAAM,WAAW,QAAQ,OAAO;QAChD,IAAI,QAAQ,WAAW;AACvB,YAAI,QAAQ,SAAY,YAAW;AACnC,YAAI,QAAQ,YAAe,eAAc,QAAQ;;AAEnD,YAAK,IAAI,MAAM,UAAU,OAAO,aAAa,MAC3C,MAAK,IAAI,MAAM,GAAG,MAAM,WAAW,QAAQ,MACzC,KAAI,WAAW,QAAQ,KAAK;QAC1B,IAAI,WAAW;AACf,eAAO,MAAM,IAAI,WAAW,UAAU,WAAW,MAAM,MAAM,IAC3D;AAEF,YAAI,MAAM,SACR,UAAS,KAAK,CAAC,WAAW,WAAW,MAAM,UAAU,CAAC;;;OAMhE;AACF,YAAO;;;;;;;;;IAUT,SAAS,mBAAmB,QAAQ,mBAAmB,OAAO,KAAK;KACjE,IAAI,UAAU,oBAAoB,QAAQ,mBAAmB,OAAO,IAAI;KACxE,IAAI,QAAQ,EAAE,CAAC,OAAQ,OAAQ;AAC/B,aAAQ,QAAQ,SAAU,WAAW,GAAG;AACtC,YAAM,MACH,kBAAkB,OAAO,aAAa,IAAK,qBAAqB,OAAO,WAAW,GAAG,SACnF,OAAO;OACZ;AACF,YAAO,MAAM,KAAK,GAAG;;;;;;;;;IAUvB,SAAS,oBAAoB,QAAQ,mBAAmB,OAAO,KAAK;KAClE,IAAI,WAAW,mBAAmB,QAAQ,mBAAmB,OAAO,IAAI;KAExE,IAAI,UAAU,EAAE;AAChB,UAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,IACjC,SAAQ,KAAK;AAGf,cAAS,QAAQ,SAAU,KAAK;MAC9B,IAAI,QAAQ,IAAI;MAChB,IAAI,MAAM,IAAI;MAEd,IAAI,QAAQ,QAAQ,MAAM,OAAO,MAAM,EAAE;AACzC,WAAK,IAAI,IAAI,MAAM,QAAQ,KACzB,SAAQ,MAAM,KAAK,MAAM;OAE3B;AACF,YAAO;;AAGT,cAAQ,0BAA0B;AAClC,cAAQ,kBAAkB;AAC1B,cAAQ,sBAAsB;AAC9B,cAAQ,sBAAsB;AAC9B,cAAQ,qBAAqB;AAC7B,cAAQ,uBAAuB;AAC/B,cAAQ,2BAA2B;AACnC,cAAQ,qBAAqB;AAC7B,cAAQ,sBAAsB;AAC9B,cAAQ,qBAAqB;AAC7B,cAAQ,0BAA0B;AAElC,WAAO,eAAeC,WAAS,cAAc,EAAE,OAAO,MAAM,CAAC;AAE7D,WAAOA;KAEP,EAAE,CAAC;;AAGL,SAAO;IAEN;;;;;CCj/BH,IAAI,WAAW,OAAO;CACtB,IAAI,YAAY,OAAO;CACvB,IAAI,mBAAmB,OAAO;CAC9B,IAAI,oBAAoB,OAAO;CAC/B,IAAI,eAAe,OAAO;CAC1B,IAAI,eAAe,OAAO,UAAU;CACpC,IAAI,YAAY,QAAQ,QAAQ;AAC9B,OAAK,IAAI,QAAQ,IACf,WAAU,QAAQ,MAAM;GAAE,KAAK,IAAI;GAAO,YAAY;GAAM,CAAC;;CAEjE,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;AAC5C,MAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS;QACjD,IAAI,OAAO,kBAAkB,KAAK,CACrC,KAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,QAAQ,OACzC,WAAU,IAAI,KAAK;IAAE,WAAW,KAAK;IAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,IAAI,KAAK,KAAK;IAAY,CAAC;;AAExH,SAAO;;CAET,IAAI,WAAW,KAAK,YAAY,YAAY,SAAS,OAAO,OAAO,SAAS,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,YAKnG,cAAc,CAAC,OAAO,CAAC,IAAI,aAAa,UAAU,QAAQ,WAAW;EAAE,OAAO;EAAK,YAAY;EAAM,CAAC,GAAG,QACzG,IACD;CACD,IAAI,gBAAgB,QAAQ,YAAY,UAAU,EAAE,EAAE,cAAc,EAAE,OAAO,MAAM,CAAC,EAAE,IAAI;CAG1F,IAAI,gBAAgB,EAAE;AACtB,UAAS,eAAe,EACtB,mBAAmB,aACpB,CAAC;AACF,QAAO,UAAU,aAAa,cAAc;CAC5C,IAAI,mBAAA,mBAAA;CAGJ,IAAI,WAAW,QAAA,eAAA,EAA6B,EAAE;CAG9C,IAAI,gBAAgB,QAAA,gBAAA,EAAuC,EAAE;CAC7D,IAAI,iBAAiB,QAAA,cAAA,EAA4B,EAAE;CACnD,IAAI,UAAU,QAAA,eAAA,EAA6B,EAAE;CAC7C,IAAI,0CAA0C,QAAA,0CAAA,EAAqD,EAAE;CAGrG,IAAI,gBAAgB;CACpB,IAAI,iBAAiB;CACrB,IAAI,aAAa;CACjB,IAAI,QAAQ;CACZ,IAAI,cAAc;CAClB,IAAI,oBAAoB;CACxB,IAAI,MAAM;CACV,IAAI,oBAAoB;CACxB,IAAI,sBAAsB;CAC1B,IAAI,WAAW;CACf,IAAI,SAAS;CACb,IAAI,aAAa;CACjB,IAAI,aAAa;CACjB,IAAI,eAAe;CACnB,IAAI,gBAAgB;CACpB,IAAI,cAAc;CAClB,IAAI,gBAAgB;CACpB,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,WAAW;CACf,IAAI,MAAM;CACV,IAAI,MAAM;CACV,IAAI,YAAY;CAChB,IAAI,UAAU;CACd,IAAI,eAAe;CACnB,IAAI,YAAY;CAChB,IAAI,gBAAgB;CACpB,IAAI,yBAAyB;CAC7B,IAAI,8BAA8B;CAClC,IAAI,6BAA6B;CACjC,IAAI,WAAW;CACf,IAAI,iBAAiB;CACrB,IAAI,YAAY;CAChB,IAAI,YAAY;CAChB,IAAI,QAAQ;CACZ,IAAI,YAAY,OAAO,UAAU;CACjC,IAAI,eAAe,iBAAiB,UAAU;CAC9C,IAAI,MAAM,WAAW,MAAM,gBAAgB,MAAM,iBAAiB;CAClE,IAAI,QAAQ;CACZ,IAAI,UAAU;CACd,IAAI,UAAU;CACd,IAAI,WAAW;CACf,IAAI,OAAO,qDAAqD,IAAI;CACpE,IAAI,WAAW;CACf,IAAI,qBAAqB;CACzB,IAAI,WAAW;CACf,IAAI,aAAa;CACjB,IAAI,WAAW,MAAM,SAAS,MAAM,SAAS,OAAO,SAAS;CAC7D,IAAI,aAAa,MAAM,SAAS,MAAM,SAAS,OAAO,SAAS,GAAG,SAAS;CAC3E,IAAI,aAAa,MAAM,WAAW,MAAM,WAAW,OAAO,SAAS;CACnE,IAAI,qBAAqB,MAAM,SAAS,MAAM,SAAS,OAAO,mBAAmB;AACnE,IAAG,WAAc,QAAQ;CACvC,IAAI,YAAY,GAAG,WAAW,KAAK,QAAQ,WAAW;CACtD,IAAI,eAAe,oBAAoB,mBAAmB;CAC1D,IAAI,iBAAiB,oBAAoB,WAAW,cAAc,WAAW;CAC7E,IAAI,gBAAgB,oBAAoB,UAAU,cAAc,UAAU;CAC1E,IAAI,aAAa,OAAO,OAAO;EAC7B;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,eAAe,OAAO,OAAO;EAAC;EAAU;EAAS;EAAS,CAAC;CAC/D,IAAI,cAAc,OAAO,OAAO,CAAC,YAAY,QAAQ,CAAC;CACtD,IAAI,aAAa,OAAO,OAAO;EAC7B;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,aAAa,OAAO,OAAO;EAC7B;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,aAAa,OAAO,OAAO;EAC7B,GAAG;EACH,GAAG;EACH;EACD,CAAC;CACF,IAAI,YAAY,OAAO,OAAO;EAC5B,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,+BAA+B,IAAI,IAAI;EAAC;EAAO;EAAM;EAAO;EAAQ,CAAC;CAGzE,IAAI,gCAAgC,IAAI,IAAI;EAAC,GAAG;EAAc,GAAG;EAAY;EAAS,CAAC;CACvF,IAAI,eAAe,IAAI,IAAI,UAAU;CACrC,IAAI,kBAAkB,IAAI,IAAI,WAAW;CACzC,IAAI,wCAAwC,IAAI,IAAI;EAAC;EAAO;EAAU;EAAS;EAAW,CAAC;CAC3F,IAAI,sCAAsC,IAAI,IAAI;EAAC;EAAU;EAAU;EAAW,CAAC;CACnF,IAAI,0CAA0C,IAAI,IAAI;EACpD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,oBAAoB;CACxB,IAAI,cAAc,IAAI,OAAO,GAAG,aAAa,QAAQ,cAAc,IAAI;CACvE,IAAI,cAAc,IAAI,OAAO,GAAG,aAAa,UAAU,cAAc,IAAI;CACzE,IAAI,cAAc,IAAI,OAAO,GAAG,aAAa,UAAU,cAAc,IAAI;CACzE,IAAI,oBAAoB,IAAI,OAC1B,OAAO,aAAa,GAAG,KAAK,GAAG,cAAc,GAC9C;CACD,IAAI,qBAAqB,IAAI,OAC3B,OAAO,aAAa,GAAG,KAAK,GAAG,eAAe,GAC/C;CACD,IAAI,yBAAyB,IAAI,OAC/B,OAAO,aAAa,GAAG,KAAK,GAAG,eAAe,GAAG,aAAa,GAC/D;CACD,IAAI,mBAAmB,IAAI,OAAO,IAAI,aAAa,GAAG;CACtD,IAAI,iBAAiB,IAAI,OAAO,OAAO,aAAa,GAAG,KAAK,GAAG;CAC/D,IAAI,cAAc;CAClB,IAAI,aAAa;CACjB,IAAI,WAAW,MAAM,OAAO,UAAU,SAAS,KAAK,EAAE,CAAC,MAAM,WAAW,QAAQ;CAChF,IAAI,qBAAqB,KAAK,MAAM,eAAe,eAAe;AAChE,SAAO,IAAI,aAAa,aAAa,KAAK,KAAK;;CAEjD,IAAI,iBAAiB,SAAS;AAC5B,SAAO,KAAK,SAAS;;CAEvB,IAAI,4BAA4B,SAAS;AACvC,MAAI,aAAa,IAAI,KAAK,KAAK,IAAI,QAAQ,KAAK,MAAM,cAAc,CAClE,QAAO;AAET,SAAO;;CAET,IAAI,oBAAoB,OAAO,QAAQ;EACrC,MAAM,EAAE,GAAG,GAAG,YAAY;EAC1B,MAAM,iBAAiB,UAAU,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG;EACxD,MAAM,IAAI,MAAM;EAChB,MAAM,UAAU,EAAE;AAClB,MAAI,MAAM,GAAG;AACX,OAAI,IAAI,KAAK,KAAK,EAChB,SAAQ,KAAK,eAAe,IAAI,GAAG;AAErC,UAAO;;EAET,IAAI,aAAa,IAAI;AACrB,MAAI,IAAI,GAAG;AACT,UAAO,aAAa,EAClB,eAAc;AAEhB,QAAK,IAAI,IAAI,YAAY,IAAI,GAAG,KAAK,EACnC,SAAQ,KAAK,eAAe,GAAG;aAExB,cAAc,GAAG;AAC1B,QAAK,IAAI,IAAI,YAAY,KAAK,GAAG,KAAK,EACpC,SAAQ,KAAK,eAAe,GAAG;AAEjC,UAAO,QAAQ,SAAS;;AAE1B,SAAO;;CAET,IAAI,kBAAkB,SAAS;AAC7B,MAAI,CAAC,MAAM,SACT,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;EAEzD,IAAI;EACJ,IAAI;EACJ,IAAI;AACJ,UAAQ,KAAK,UAAb;GACE,KAAK;AACH,eAAW;AACX,WAAO;AACP;GAEF,KAAK,wBAAwB;IAC3B,MAAM,EAAE,MAAM,MAAM,kBAAkB;AACtC,eAAW;AACX,WAAO;AACP,aAAS,SAAS,SAAS,WAAW,SAAS;AAC/C;;GAEF,KAAK,cAAc;AACjB,eAAW,KAAK;IAChB,IAAI,UAAU;AACd,WAAO,SAAS;KACd,MAAM,EAAE,MAAM,MAAM,UAAU,eAAe;AAC7C,SAAI,aAAa,wBAAwB;AACvC,eAAS,SAAS,SAAS,WAAW,SAAS;AAC/C;gBACS,WACT,WAAU;SAEV;;AAGJ,WAAO;AACP;;GAEF,QACE,OAAM,IAAI,UAAU,mBAAmB,KAAK,WAAW;;AAG3D,SAAO;GAAC;GAAU;GAAM,CAAC,CAAC;GAAO;;CAEnC,IAAI,gBAAgB,MAAM,QAAQ,QAAQ,UAAU;AAClD,MAAI,CAAC,MAAM,SACT,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AAEzD,MAAI,CAAC,OACH,QAAO;EAET,IAAI,UAAU,OAAO;AACrB,MAAI,YAAY,KACd,QAAO;WACE,SAAS,QAAQ,SAAS,KAAK,EAAE;AAC1C,aAAU,OAAO,UAAU;AAC3B,UAAO,SAAS;AACd,QAAI,YAAY,KACd;AAEF,cAAU,OAAO,UAAU;;AAE7B,UAAO;SACF;AACL,OAAI,YAAY,OAAO,MAAM;IAC3B,IAAI;AACJ,WAAO,SAAS;AACd,SAAI,YAAY,MAAM;AACpB,aAAO;AACP;gBACS,YAAY,OAAO,QAAQ,QAAQ,SAAS,KAAK,CAC1D;AAEF,eAAU,OAAO,YAAY;;AAE/B,QAAI,KACF,QAAO;;AAGX,OAAI,KAAK,aAAa,cAAc;IAClC,IAAI;AACJ,WAAO,SAAS;AACd,SAAI,YAAY,MAAM;AACpB,aAAO;AACP;;AAEF,eAAU,OAAO,UAAU;;AAE7B,QAAI,KACF,QAAO;;;AAIb,SAAO;;CAET,IAAI,mBAAmB,MAAM,MAAM,EAAE,KAAK;AACxC,MAAI,CAAC,MAAM,SACT,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AAEzD,MAAI,KAAK,aAAa,aACpB,QAAO;EAET,MAAM,EAAE,WAAW,kBAAkB;EACrC,MAAM,EAAE,mBAAmB;EAC3B,MAAM,SAAS,cAAc;EAC7B,IAAI;EACJ,MAAM,OAAO,KAAK,aAAa,KAAK;AACpC,MAAI,KACF,mBAAkB,GAAG,wCAAwC,SAAS,KAAK,IAAI,OAAO,eAAe,IAAI,KAAK;MAE9G,mBAAkB,GAAG,wCAAwC,SAAS,UAAU,IAAI,OAAO,eAAe,IAAI,UAAU;AAE1H,MAAI,gBAAgB;AAClB,OAAI,eACF,QAAO,CAAC,CAAC,eAAe;AAE1B,UAAO;;AAET,SAAO;;CAET,IAAI,yBAAyB,SAAS;AACpC,MAAI,CAAC,MAAM,SACT,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AAEzD,MAAI,OAAO,KAAK,kBAAkB,WAChC,QAAO;EAET,MAAM,QAAQ,KAAK,eAAe;AAClC,MAAI,MAAM,QAAQ;GAChB,IAAI,OAAO;GACX,MAAM,IAAI,MAAM;AAChB,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AAE1B,WADa,MAAM,GACP,YAAY,MAAM;AAC9B,QAAI,KACF;;AAGJ,UAAO;;AAET,SAAO,KAAK,YAAY,MAAM;;CAEhC,IAAI,qBAAqB,SAAS;AAChC,MAAI,CAAC,MAAM,SACT,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AAEzD,MAAI,KAAK,aAAa,aACpB,QAAO;EAET,MAAM,EAAE,KAAK,SAAS,WAAW,eAAe;EAChD,MAAM,EAAE,wBAAwB,GAAG,eAAe,UAAU;AAC5D,MAAI,YAAY,SAAS,YAAY,MACnC,QAAO;WACE,YAAY,QAAQ;GAC7B,IAAI,OAAO;AACX,WAAQ,WAAR;IACE,KAAK;AACH,SAAI,CAAC,KAAK,QAAQ,cAAc,IAAI,KAAK,KAAK,CAC5C,QAAO,KAAK;cACH,aAAa,IAAI,KAAK,KAAK,CACpC,QAAO;AAET;IAEF,KAAK;AACH,YAAO,sBAAsB,KAAK;AAClC;IAEF,KAAK;AACH,YAAO,KAAK;AACZ;IAEF,SAAS;KACP,MAAM,QAAQ,EAAE,CAAC,MAAM,KAAK,KAAK,WAAW;AAC5C,UAAK,MAAM,QAAQ,OAAO;MACxB,MAAM,EACJ,KAAK,SACL,WAAW,eACX,UAAU,cACV,aAAa,oBACX;AACJ,UAAI,iBAAiB,UACnB,QAAO,gBAAgB,MAAM;eACpB,iBAAiB,gBAAgB,CAAC,sBAAsB,IAAI,cAAc,KAAK,CAAC,WAAW,YAAY,SAAS,YAAY,OACrI,KAAI,kBAAkB,OACpB,QAAO,sBAAsB,KAAK;UAElC,QAAO,gBAAgB,MAAM;AAGjC,UAAI,KACF;;;;AAKR,OAAI,MAAM;IACR,MAAM,EACJ,YAAY,CAAC,EAAE,aACb,mBAAmB,KAAK;AAC5B,QAAI,QAAQ,MAAM,EAChB,QAAO;cAEA,YAAY;IACrB,MAAM,EAAE,UAAU,mBAAmB;AACrC,QAAI,mBAAmB,aACrB,QAAO,kBAAkB,WAAW;;aAG/B,cAAc,WAAW,KAAK,SAAS,MAChD,QAAO;WACE,cAAc,OAAO;GAC9B,MAAM,OAAO,KAAK,YAAY,MAAM;AACpC,OAAI,MAAM;IACR,MAAM,EACJ,YAAY,CAAC,EAAE,aACb,mBAAmB,KAAK;AAC5B,QAAI,QAAQ,MAAM,EAChB,QAAO;;aAGF,YAAY;AACrB,OAAI,cAAc,QAAQ;IACxB,MAAM,OAAO,sBAAsB,KAAK;AACxC,QAAI,MAAM;KACR,MAAM,EACJ,YAAY,CAAC,EAAE,aACb,mBAAmB,KAAK;AAC5B,SAAI,QAAQ,MAAM,EAChB,QAAO;AAET,YAAO;;;GAGX,MAAM,EAAE,UAAU,mBAAmB;AACrC,OAAI,mBAAmB,aACrB,QAAO,kBAAkB,WAAW;;AAGxC,SAAO;;CAET,IAAI,wBAAwB,SAAS;AACnC,MAAI,CAAC,MAAM,SACT,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AAEzD,MAAI,KAAK,aAAa,aACpB,QAAO;EAET,MAAM,EAAE,gBAAgB,KAAK;EAC7B,MAAM,SAAS,YAAY,KAAK,YAAY;EAC5C,MAAM,QAAQ,WAAW,KAAK,YAAY;EAC1C,IAAI,WAAW;EACf,IAAI,UAAU;AACd,SAAO,SAAS;AACd,WAAQ,QAAQ,UAAhB;IACE,KAAK;AACH,SAAI,UAAU,QAAQ,aAAa,OAAO,CACxC,QAAO,QAAQ,aAAa,OAAO;cAC1B,SAAS,QAAQ,aAAa,WAAW,CAClD,QAAO,QAAQ,aAAa,WAAW;AAEzC;IAEF,KAAK;AACH,SAAI,QAAQ,KACV,YAAW;AAEb;IAEF,KAAK;IACL,QACE,QAAO;;AAGX,OAAI,UAAU;AACZ,cAAU,QAAQ;AAClB,eAAW;cACF,QAAQ,WACjB,WAAU,QAAQ;OAElB;;AAGJ,SAAO;;CAET,IAAI,qBAAqB,SAAS;AAChC,MAAI,CAAC,MAAM,SACT,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AAEzD,MAAI,KAAK,aAAa,aACpB,QAAO;AAET,MAAI,OAAO,KAAK,sBAAsB,UACpC,QAAO,KAAK;WACH,KAAK,cAAc,eAAe,KAC3C,QAAO;OACF;GACL,IAAI;AACJ,OAAI,KAAK,aAAa,kBAAkB,CACtC,QAAO,KAAK,aAAa,kBAAkB;OAE3C,QAAO;AAET,WAAQ,MAAR;IACE,KAAK;IACL,KAAK,OACH,QAAO;IAET,KAAK,iBACH,QAAO;IAET,KAAK,QACH,QAAO;IAET;AACE,SAAI,MAAM,YAAY,aAAa,aACjC,QAAO,kBAAkB,KAAK,WAAW;AAE3C,YAAO;;;;CAKf,IAAI,aAAa,SAAS;AACxB,MAAI,MAAM,aAAa,aACrB,QAAO;EAGT,MAAM,EAAE,SAAS,eADF,KAAK,cAAc,YACK,iBAAiB,KAAK;AAC7D,MAAI,YAAY,UAAU,eAAe,UACvC,QAAO;AAET,SAAO;;CAET,IAAI,kBAAkB,SAAS;AAC7B,MAAI,MAAM,aAAa,aACrB,QAAO;EAET,MAAM,EAAE,WAAW,SAAS;AAC5B,UAAQ,WAAR;GACE,KAAK;AACH,QAAI,CAAC,QAAQ,gBAAgB,IAAI,KAAK,CACpC,QAAO;AAET,WAAO;GAET,KAAK,WACH,QAAO;GAET,QACE,QAAO,kBAAkB,KAAK;;;CAIpC,IAAI,mBAAmB,SAAS;AAC9B,MAAI,MAAM,aAAa,aACrB,QAAO;AAET,MAAI,CAAC,KAAK,YACR,QAAO;EAET,MAAM,SAAS,KAAK,cAAc;AAClC,MAAI,gBAAgB,OAAO,aAAa;AACtC,OAAI,OAAO,UAAU,SAAS,KAAK,aAAa,WAAW,CAAC,CAAC,CAC3D,QAAO;AAET,OAAI,kBAAkB,KAAK,CACzB,QAAO;GAET,MAAM,EAAE,WAAW,eAAe;AAClC,WAAQ,WAAR;IACE,KAAK;AACH,SAAI,KAAK,QAAQ,KAAK,aAAa,OAAO,CACxC,QAAO;AAET,YAAO;IAET,KAAK,SACH,QAAO;IAET,KAAK;AACH,SAAI,KAAK,YAAY,KAAK,aAAa,WAAW,IAAI,KAAK,UAAU,KAAK,aAAa,SAAS,CAC9F,QAAO;AAET,YAAO;IAET,KAAK;AACH,SAAI,WAAW,cAAc,WAAW;MACtC,IAAI,QAAQ,WAAW;MACvB,IAAI,OAAO;AACX,aAAO,OAAO;AACZ,WAAI,MAAM,cAAc,WAAW;AACjC,eAAO,UAAU;AACjB;;AAEF,eAAQ,MAAM;;AAEhB,aAAO;;AAET,YAAO;IAET,QACE,KAAI,oBAAoB,IAAI,UAAU,IAAI,EAAE,KAAK,YAAY,KAAK,aAAa,WAAW,EACxF,QAAO;;aAIJ,gBAAgB,OAAO,YAAY;AAC5C,OAAI,OAAO,UAAU,SAAS,KAAK,eAAe,MAAM,WAAW,CAAC,CAAC,EAAE;IACrE,MAAM,KAAK;IACX,IAAI;IACJ,IAAI,UAAU;AACd,WAAO,QAAQ,iBAAiB,IAAI;AAClC,YAAO,wBAAwB,IAAI,QAAQ,UAAU;AACrD,SAAI,KACF;AAEF,SAAI,SAAS,YAAY,iBAAiB,GACxC,WAAU,QAAQ;SAElB;;AAGJ,QAAI,KACF,QAAO;AAET,WAAO;;AAET,OAAI,KAAK,cAAc,QAAQ,KAAK,QAAQ,KAAK,eAAe,MAAM,OAAO,EAC3E,QAAO;;AAGX,SAAO;;CAET,IAAI,mBAAmB,IAAI,SAAS;AAClC,MAAI,OAAO,OAAO,SAChB,OAAM,IAAI,UAAU,mBAAmB,QAAQ,GAAG,GAAG;WAC5C,CAAC,MAAM,SAChB,OAAM,IAAI,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AAEzD,MAAI,CAAC,MAAM,KAAK,aAAa,aAC3B,QAAO;EAET,MAAM,EAAE,eAAe;EACvB,IAAI;AACJ,OAAK,MAAM,QAAQ,YAAY;GAC7B,MAAM,EAAE,MAAM,cAAc,QAAQ,UAAU;AAC9C,OAAI,SAAS,SAAS,KACpB,OAAM;YACG,WAAW,GACpB,OAAM;AAER,OAAI,IACF;;AAGJ,SAAO,OAAO;;CAEhB,IAAI,uBAAuB,KAAK,IAAI,OAAO,EAAE,KAAK;AAChD,MAAI,CAAC,MAAM,OAAO,OAAO,YAAY,MAAM,aAAa,aACtD,QAAO;AAET,MAAI,KAAK,mBAAmB,GAAG,CAC7B,QAAO;EAET,MAAM,OAAO,KAAK,cAAc;EAChC,IAAI,SAAS;EACb,IAAI;AACJ,SAAO,QAAQ;AACb,SAAM,gBAAgB,IAAI,OAAO;AACjC,OAAI,OAAO,WAAW,KACpB;AAEF,YAAS,OAAO;;AAElB,SAAO,CAAC,CAAC;;CAEX,IAAI,eAAe,OAAO,UAAU;AAClC,MAAI,CAAC,OAAO,SACV,OAAM,IAAI,UAAU,mBAAmB,QAAQ,MAAM,GAAG;WAC/C,CAAC,OAAO,SACjB,OAAM,IAAI,UAAU,mBAAmB,QAAQ,MAAM,GAAG;AAE1D,MAAI,MAAM,aAAa,gBAAgB,MAAM,aAAa,aACxD,QAAO;EAET,MAAM,SAAS,MAAM,wBAAwB,MAAM;AAEnD,SAAO,CAAC,EADI,SAAS,+BAA+B,SAAS;;CAG/D,IAAI,gBAAgB,GAAG,MAAM;AAC3B,MAAI,YAAY,GAAG,EAAE,CACnB,QAAO;AAET,SAAO;;CAET,IAAI,aAAa,QAAQ,EAAE,KAAK;EAC9B,MAAM,MAAM,CAAC,GAAG,MAAM;AACtB,MAAI,IAAI,SAAS,EACf,KAAI,KAAK,aAAa;AAExB,SAAO;;CAET,IAAI,cAAc,QAAQ,aAAa;AACrC,MAAI,CAAC,QAAQ,aACX,OAAM,IAAI,UAAU,4BAA4B,QAAQ,OAAO,GAAG;AAEpE,MAAI,UAAU,aAAa,cACzB,YAAW,OAAO;EAEpB,MAAM,MAAM,GAAG,cAAc,SAAS;GACpC;GACA,cAAc,OAAO;GACtB,CAAC;AACF,KAAG,UAAU,EACX,WAAW,OACZ,CAAC;AACF,SAAO;;CAET,IAAI,kBAAkB,UAAU,WAAW;EACzC,MAAM,sBAAsB,WAAW,gBAAgB,WAAW;AAClE,MAAI,CAAC,YAAY,OAAO,aAAa,YAAY,iBAAiB,KAAK,SAAS,CAC9E,QAAO;AAET,MAAI,SAAS,SAAS,IAAI,EAAE;GAC1B,MAAM,QAAQ,SAAS,YAAY,IAAI;AAEvC,OADY,SAAS,UAAU,MAAM,CAC7B,QAAQ,IAAI,GAAG,EACrB,QAAO;;AAGX,MAAI,SAAS,SAAS,IAAI,IAAI,kBAAkB,KAAK,SAAS,CAC5D,QAAO;AAET,MAAI,SAAS,SAAS,IAAI,EAAE;GAC1B,IAAI,UAAU;AACd,OAAI,WAAW,oBACb,WAAU,YAAY,KAAK,SAAS;AAEtC,OAAI,uBAAuB,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,KAAK,SAAS,CAClF,QAAO;YACE,CAAC,uBAAuB,SAAS,KAAK,SAAS,EAAE;AAC1D,QAAI,CAAC,WAAW,uBAAuB,KAAK,SAAS,CACnD,QAAO;AAET,WAAO,iBAAiB,KAAK,SAAS;cAC7B,gBAAgB,KAAK,SAAS,CACvC,KAAI,QACF,QAAO,CAAC,kBAAkB,KAAK,SAAS;OAExC,QAAO,CAAC,mBAAmB,KAAK,SAAS;OAG3C,QAAO,CAAC,eAAe,KAAK,SAAS;;AAGzC,SAAO;;CAIT,IAAI,kBAAA,eAAA;CACJ,IAAI,iCAAiC,IAAI,IAAI;EAC3C,CAAC,qBAAqB,OAAO;EAC7B,CAAC,aAAa,OAAO;EACrB,CAAC,gBAAgB,OAAO;EACxB,CAAC,eAAe,OAAO;EACvB,CAAC,eAAe,OAAO;EACvB,CAAC,mBAAmB,OAAO;EAC5B,CAAC;CACF,IAAI,sCAAsC,IAAI,IAAI;EAChD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,mCAAmC,IAAI,IAAI,CAAC,QAAQ,eAAe,CAAC;CACxE,IAAI,oBAAoB;CACxB,IAAI,wBAAwB;CAC5B,IAAI,SAAS;CACb,IAAI,oBAAoB,WAAW,OAAO;AACxC,MAAI,OAAO,aAAa,YAAY,SAAS,QAAQ,MAAM,EAAE,IAAI,GAAG;GAClE,MAAM,MAAM,SAAS,MAAM,KAAK;GAChC,MAAM,gBAAgB,CAAC,IAAI,GAAG;GAC9B,MAAM,IAAI,IAAI;AACd,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,MAAM,OAAO,IAAI;AACjB,QAAI,SAAS,MAAM,MAAM,IAAI,EAC3B,eAAc,KAAK,OAAO;SACrB;KACL,MAAM,YAAY,sBAAsB,KAAK,KAAK;AAClD,SAAI,WAAW;MACb,MAAM,GAAG,OAAO;MAChB,IAAI;AACJ,UAAI;OACF,MAAM,MAAM,SAAS,QAAQ,IAAI;OACjC,MAAM,OAAO,SAAS,QAAQ,IAAI;OAClC,MAAM,OAAO,SAAS,KAAK,IAAI;AAC/B,WAAI,SAAS,KAAK,QAAQ,OAAO,QAAQ,KACvC,OAAM;WAEN,OAAM,OAAO,cAAc,KAAK;eAE3B,GAAG;AACV,aAAM;;MAER,IAAI,UAAU;AACd,UAAI,KAAK,SAAS,IAAI,OACpB,WAAU,KAAK,UAAU,IAAI,OAAO;AAEtC,oBAAc,KAAK,GAAG,MAAM,UAAU;gBAC7B,YAAY,KAAK,KAAK,CAC/B,eAAc,KAAK,KAAK,OAAO;SAE/B,eAAc,KAAK,KAAK;;;AAI9B,UAAO,cAAc,KAAK,GAAG;;AAE/B,SAAO;;CAET,IAAI,cAAc,UAAU;AAC1B,MAAI,OAAO,UAAU,SACnB,KAAI,UAAU,KAAK,KAAK,UAAU,KAChC,QAAO,QAAQ,MAAM,CAAC,aAAa;WAC1B,MAAM,QAAQ,MAAM,CAC7B,QAAO,MAAM,KAAK,IAAI;WACb,OAAO,OAAO,OAAO,WAAW,CACzC,QAAO,MAAM,UAAU;MAEvB,OAAM,IAAI,aAAa,oBAAoB,SAAS,WAAW;EAGnE,IAAI,WAAW;EACf,IAAI,QAAQ;AACZ,SAAO,SAAS,GAAG;AACjB,WAAQ,SAAS,QAAQ,KAAK,MAAM;AACpC,OAAI,QAAQ,EACV;GAEF,MAAM,UAAU,SAAS,UAAU,GAAG,QAAQ,EAAE;GAChD,IAAI,WAAW,SAAS,UAAU,QAAQ,EAAE;GAC5C,MAAM,YAAY,SAAS,YAAY,EAAE;AACzC,OAAI,YAAY,UAAU;IACxB,MAAM,MAAM,KAAK,UAAU,SAAS,IAAI,CAAC;AACzC,QAAI,SAAS,WAAW,IACtB,YAAW;QAEX,YAAW,GAAG,MAAM,SAAS,UAAU,IAAI;;AAG/C,cAAW,GAAG,UAAU;AACxB;;AAEF,aAAW,SAAS,QAAQ,aAAa,KAAK,CAAC,QAAQ,0BAA0B,OAAO;AACxF,MAAI,aAAa,IACf,QAAO;AAET,SAAO,SAAS,QAAQ,SAAS,SAAS;;CAE5C,IAAI,iBAAiB,QAAQ;EAC3B,MAAM,WAAW,WAAW,IAAI;AAChC,MAAI,iBAAiB,KAAK,SAAS,CACjC,OAAM,IAAI,aAAa,oBAAoB,YAAY,WAAW;AAEpE,MAAI;AACF,UAAO,SAAS,MAAM,UAAU;IAC9B,SAAS;IACT,qBAAqB;IACtB,CAAC;WACK,GAAG;GACV,MAAM,EAAE,YAAY;AACpB,OAAI,2DAA2D,KAC7D,QACD,IAAI,CAAC,SAAS,SAAS,IAAI,EAAE;IAC5B,MAAM,QAAQ,SAAS,YAAY,IAAI;IACvC,MAAM,UAAU,SAAS,UAAU,MAAM;AACzC,QAAI,QAAQ,SAAS,KAAI,EAAE;AAEzB,SADe,QAAQ,MAAM,KAAK,CAAC,SACtB,EACX,QAAO,cAAc,GAAG,SAAS,IAAI;AAEvC,YAAO,cAAc,GAAG,SAAS,GAAG;;AAEtC,WAAO,cAAc,GAAG,SAAS,GAAG;cAC3B,YAAY,oBACrB,KAAI,kBAAkB,KAAK,SAAS,CAClC,QAAO,cAAc,GAAG,SAAS,WAAW,mBAAmB,KAAK,GAAG;YAC9D,CAAC,SAAS,SAAS,IAAI,CAChC,QAAO,cAAc,GAAG,SAAS,GAAG;OAEpC,OAAM,IAAI,aAAa,oBAAoB,YAAY,WAAW;OAGpE,OAAM,IAAI,aAAa,oBAAoB,YAAY,WAAW;;;CAIxE,IAAI,WAAW,MAAM,EAAE,EAAE,WAAW,UAAU;EAC5C,MAAM,2BAA2B,IAAI,KAAK;EAC1C,MAAM,OAAO;GACX,uBAAuB;GACvB,kBAAkB;GAClB,sBAAsB;GACtB,kBAAkB;GAClB,uBAAuB;GACvB,mBAAmB;GACnB,qBAAqB;GACtB;EACD,MAAM,MAAM,EACV,MAAM,MAAM;AACV,WAAQ,KAAK,MAAb;IACE,KAAK;AACH,SAAI,QAAQ,KAAK,KAAK,KAAK,CACzB,OAAM,IAAI,aACR,qBAAqB,KAAK,QAC1B,WACD;AAEH;IAEF,KAAK;AACH,SAAI,QAAQ,KAAK,KAAK,KAAK,CACzB,OAAM,IAAI,aACR,qBAAqB,KAAK,QAC1B,WACD;AAEH;IAEF,KAAK;AACH,SAAI,aAAa,IAAI,KAAK,KAAK,EAAE;AAC/B,WAAK,oBAAoB;AACzB,WAAK,uBAAuB;AAC5B,UAAI,KAAK,SAAS,MAChB,MAAK,mBAAmB;eACf,KAAK,SAAS,MACvB,MAAK,mBAAmB;UAExB,MAAK,wBAAwB;gBAEtB,oBAAoB,IAAI,KAAK,KAAK,CAC3C,MAAK,sBAAsB;cAClB,iBAAiB,IAAI,KAAK,KAAK,IAAI,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS,OAC1F,MAAK,oBAAoB;AAE3B;IAEF,KAAK;AACH,SAAI,sBAAsB,KAAK,KAAK,KAAK,CACvC,MAAK,oBAAoB;AAE3B;IAEF,KAAK;AACH,SAAI,KAAK,UAAU;AACjB,WAAK,oBAAoB;AACzB,WAAK,wBAAwB;;AAE/B;IAEF,KAAK;AACH,cAAS,IAAI,KAAK,SAAS;AAC3B;IAEF;;KAGL;EACD,MAAM,YAAY,SAAS,MAAM,IAAI;AACrC,WAAS,KAAK,WAAW,SAAS,cAAc,UAAU,GAAG,WAAW,IAAI;AAC5E,MAAI,KAAK,sBAAsB,KAC7B,UAAS,QAAQ,YAAY,MAAM,MAAM,SAAS;AAChD,OAAI;QACE,KAAK,SAAS,qBAAqB,aAAa,IAAI,KAAK,KAAK,EAAE;KAClE,MAAM,WAAW,KAAK,QAAQ,MAAM;MAClC,MAAM,EAAE,MAAM,SAAS;AACvB,aAAO,SAAS,qBAAqB,aAAa,IAAI,KAAK;OAC3D;AACF,UAAK,MAAM,EAAE,cAAc,SACzB,MAAK,MAAM,EAAE,UAAU,mBAAmB,SACxC,MAAK,MAAM,EAAE,UAAU,wBAAwB,cAC7C,KAAI,SAAS,IAAI,mBAAmB,CAClC,UAAS,OAAO,mBAAmB;eAKlC,KAAK,SAAS,qBAAqB,iBAAiB,IAAI,KAAK,KAAK,IAAI,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS,QAAQ;KACrI,MAAM,WAAW,KAAK,QAAQ,MAAM;MAClC,MAAM,EAAE,UAAU,MAAM,SAAS;AAEjC,aADY,SAAS,qBAAqB,iBAAiB,IAAI,KAAK,IAAI,MAAM,QAAQ,SAAS,IAAI,SAAS;OAE5G;AACF,UAAK,MAAM,EAAE,cAAc,SACzB,MAAK,MAAM,EAAE,UAAU,mBAAmB,SACxC,KAAI,SAAS,IAAI,cAAc,CAC7B,UAAS,OAAO,cAAc;eAI3B,KAAK,SAAS,uBAAuB,sBAAsB,KAAK,KAAK,KAAK,EAAE;KACrF,MAAM,WAAW,KAAK,QAAQ,MAAM;MAClC,MAAM,EAAE,MAAM,SAAS;AAEvB,aADY,SAAS,uBAAuB,sBAAsB,KAAK,KAAK;OAE5E;AACF,UAAK,MAAM,EAAE,cAAc,SACzB,MAAK,MAAM,EAAE,UAAU,mBAAmB,SACxC,KAAI,SAAS,IAAI,cAAc,CAC7B,UAAS,OAAO,cAAc;eAI3B,KAAK,SAAS,OAAO,KAAK,UAAU;KAC7C,MAAM,WAAW,KAAK,QAAQ,MAAM;MAClC,MAAM,EAAE,UAAU,SAAS;AAE3B,aADY,SAAS,OAAO;OAE5B;AACF,UAAK,MAAM,EAAE,cAAc,UAAU;MACnC,MAAM,EAAE,aAAa;AACrB,WAAK,MAAM,EAAE,UAAU,mBAAmB,SACxC,KAAI,SAAS,IAAI,cAAc,CAC7B,UAAS,OAAO,cAAc;;;;IAMxC;AAEJ,SAAO;GACL;GACA,UAAU,CAAC,GAAG,SAAS;GACxB;;CAEH,IAAI,mBAAmB,GAAG,MAAM;EAC9B,MAAM,OAAO,eAAe,IAAI,EAAE,KAAK;EACvC,MAAM,OAAO,eAAe,IAAI,EAAE,KAAK;AACvC,MAAI,SAAS,KACX,QAAO;WACE,OAAO,KAChB,QAAO;MAEP,QAAO;;CAGX,IAAI,WAAW,SAAS;EACtB,MAAM,MAAM,CAAC,GAAG,KAAK;AACrB,MAAI,IAAI,SAAS,EACf,KAAI,KAAK,gBAAgB;AAE3B,SAAO;;CAET,IAAI,gBAAgB,aAAa;EAC/B,IAAI;EACJ,IAAI;AACJ,MAAI,YAAY,OAAO,aAAa,SAClC,KAAI,SAAS,QAAQ,IAAI,GAAG,GAC1B,EAAC,QAAQ,aAAa,SAAS,MAAM,IAAI;OACpC;AACL,YAAS;AACT,eAAY;;MAGd,OAAM,IAAI,aAAa,oBAAoB,YAAY,WAAW;AAEpE,SAAO;GACL;GACA;GACD;;CAIH,IAAI,wCAAwC,IAAI,IAAI;EAClD,GAAG;EACH;EACA;EACA;EACD,CAAC;CACF,IAAI,mBAAmB,IAAI,IAAI,WAAW;CAC1C,IAAI,iBAAiB,IAAI,OAAO,aAAa,YAAY,UAAU,IAAI,IAAI;CAC3E,IAAI,eAAe;CACnB,IAAI,8BAA8B,SAAS,SAAS,MAAM,EAAE,KAAK;EAC/D,MAAM,EAAE,SAAS,cAAc,SAAS;AACxC,MAAI,YAAY,oBACd,OAAM,IAAI,UAAU,uBAAuB,QAAQ,QAAQ,GAAG;AAEhE,UAAQ,SAAR;GACE,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;AACH,QAAI,KACF,OAAM,kBACJ,gCAAgC,WAChC,mBACA,aACD;AAEH;GAEF,KAAK;GACL,KAAK;AACH,QAAI,KACF,OAAM,kBACJ,gCAAgC,QAAQ,KACxC,mBACA,aACD;AAEH;GAEF,QACE,KAAI,QAAQ,WAAW,WAAW;QAC5B,KACF,OAAM,kBACJ,gCAAgC,WAChC,mBACA,aACD;cAEM,CAAC,QACV,OAAM,kBACJ,4BAA4B,WAC5B,YACA,aACD;;;CAKT,IAAI,6BAA6B,KAAK,SAAS;EAC7C,MAAM,EAAE,SAAS;AACjB,MAAI,CAAC,MAAM;GACT,MAAM,OAAO,SAAS,KAAK,mBAAmB,QAAQ,KAAK;AAC3D,SAAM,IAAI,UAAU,uBAAuB,OAAO;;AAGpD,SAAO,SADK,kBAAkB,KAAK;;CAGrC,IAAI,4BAA4B,KAAK,SAAS;EAC5C,MAAM,EAAE,MAAM,MAAM,UAAU;EAC9B,IAAI;AACJ,MAAI,SAAS,UAAU,MACrB,eAAc;WACL,SAAS,SAAS,KAC3B,eAAc,iBAAiB,KAAK;AAEtC,MAAI,OAAO,gBAAgB,SACzB,QAAO;EAET,MAAM,cAAc,qBAAqB,KAAK;AAC9C,MAAI,gBAAgB,KAClB,QAAO;AAET,MAAI,gBAAgB,IAClB,QAAO,gBAAgB;AAEzB,MAAI,CAAC,eAAe,KAAK,YAAY,CACnC,QAAO;EAET,IAAI;AACJ,MAAI,YAAY,QAAQ,IAAI,GAAG,IAAI;GACjC,MAAM,CAAC,UAAU,SAAS,GAAG,YAAY,YAAY,MAAM,IAAI;GAC/D,MAAM,eAAe,aAAa,MAAM,GAAG,YAAY,cAAc,GAAG,WAAW;GACnF,MAAM,cAAc,IAAI,UAAU;GAClC,IAAI,eAAe;AACnB,QAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,IACnC,iBAAgB,IAAI,SAAS,KAAK;AAEpC,kBAAe,IAAI,OACjB,IAAI,eAAe,cAAc,aAAa,IAC9C,IACD;QAED,gBAAe,IAAI,OAAO,IAAI,cAAc,UAAU,IAAI,IAAI;AAEhE,SAAO,aAAa,KAAK,YAAY;;CAEvC,IAAI,4BAA4B,SAAS,SAAS;EAChD,MAAM,EAAE,WAAW,eAAe;AAClC,MAAI,CAAC,sBAAsB,IAAI,UAAU,IAAI,CAAC,gBAAgB,MAAM,EAAE,gBAAgB,MAAM,CAAC,CAC3F,QAAO;EAET,IAAI,aAAa;AACjB,MAAI,KAAK,YAAY,KAAK,aAAa,WAAW,CAChD,cAAa;WACJ,cAAc;OACnB,cAAc,WAAW,cAAc,eAAe,WAAW,YAAY,WAAW,aAAa,WAAW,EAClH,cAAa;aAEN,cAAc,YAAY;GACnC,IAAI,UAAU;AACd,UAAO,SAAS;AACd,QAAI,QAAQ,cAAc,eAAe,QAAQ,YAAY,QAAQ,aAAa,WAAW,GAAG;KAC9F,IAAI;KACJ,IAAI,UAAU,QAAQ;AACtB,YAAO,SAAS;AACd,UAAI,QAAQ,cAAc,UAAU;AAClC,gBAAS;AACT;;AAEF,gBAAU,QAAQ;;AAEpB,SAAI,CAAC,UAAU,CAAC,OAAO,SAAS,KAAK,CACnC,cAAa;AAEf;;AAEF,cAAU,QAAQ;;;AAGtB,MAAI,YAAY,WACd,QAAO;AAET,SAAO,CAAC;;CAEV,IAAI,4BAA4B,SAAS,SAAS;EAChD,MAAM,EAAE,cAAc;EACtB,IAAI,aAAa;AACjB,UAAQ,WAAR;GACE,KAAK;GACL,KAAK,SAAS;IACZ,MAAM,kBAAkB,CAAC,KAAK,QAAQ,iBAAiB,IAAI,KAAK,KAAK;AACrE,QAAI,cAAc,cAAc,gBAC9B,cAAa,KAAK,YAAY,KAAK,aAAa,WAAW,IAAI,KAAK,YAAY,KAAK,aAAa,WAAW;QAE7G,cAAa;AAEf;;GAEF,QACE,cAAa,CAAC,kBAAkB,KAAK;;AAGzC,MAAI,YAAY,YACd,QAAO;AAET,SAAO,CAAC;;CAEV,IAAI,0BAA0B,KAAK,MAAM,MAAM,EAAE,KAAK;EACpD,MAAM,EACJ,OAAO,UACP,SAAS,YACT,MAAM,SACN,OAAO,aACL;EACJ,MAAM,EAAE,OAAO,SAAS,iBAAiB;AACzC,MAAI,OAAO,aAAa,YAAY,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,QAEhE,OAAM,kBACJ,qBAFW,GAAG,gBAAgB,UAAU,IAAI,IAG5C,YACA,aACD;EAEH,MAAM,EAAE,eAAe;AACvB,MAAI,CAAC,cAAc,CAAC,WAAW,OAC7B,QAAO;EAET,MAAM,cAAc,KAAK,cAAc;EACvC,IAAI;AACJ,MAAI,gBAAgB,YAClB,KAAI,OAAO,aAAa,YAAY,OAAO,KAAK,SAAS,CACvD,mBAAkB;MAElB,mBAAkB;WAEX,OAAO,aAAa,YAAY,OAAO,KAAK,SAAS,CAC9D,mBAAkB;MAElB,mBAAkB;EAEpB,IAAI,cAAc,iBAAiB,QAAQ,KAAK;AAChD,MAAI,gBACF,eAAc,YAAY,aAAa;EAEzC,MAAM,6BAA6B,IAAI,KAAK;AAC5C,MAAI,YAAY,QAAQ,IAAI,GAAG,IAAI;GACjC,MAAM,EAAE,QAAQ,WAAW,WAAW,iBAAiB,aAAa,YAAY;AAChF,QAAK,MAAM,QAAQ,YAAY;IAC7B,IAAI,EAAE,MAAM,UAAU,OAAO,cAAc;AAC3C,QAAI,iBAAiB;AACnB,gBAAW,SAAS,aAAa;AACjC,iBAAY,UAAU,aAAa;;AAErC,YAAQ,WAAR;KACE,KAAK;AACH,UAAI,iBAAiB,SACnB,YAAW,IAAI,UAAU;AAE3B;KAEF,KAAK;AACH,UAAI,SAAS,QAAQ,IAAI,GAAG,IAAI;OAC9B,MAAM,GAAG,GAAG,gBAAgB,SAAS,MAAM,IAAI;AAE/C,WADsB,aAAa,KAAK,IAAI,CAAC,QAAQ,MAAM,GAAG,KACxC,aACpB,YAAW,IAAI,UAAU;iBAElB,iBAAiB,SAC1B,YAAW,IAAI,UAAU;AAE3B;KAEF;AACE,UAAI,CAAC,OAAO;AACV,WAAI,QACF,QAAO;AAGT,aAAM,kBACJ,qBAFW,GAAG,gBAAgB,UAAU,IAAI,IAG5C,YACA,aACD;;AAEH,UAAI,SAAS,QAAQ,IAAI,GAAG,IAAI;OAC9B,MAAM,CAAC,YAAY,GAAG,gBAAgB,SAAS,MAAM,IAAI;OACzD,MAAM,gBAAgB,aAAa,KAAK,IAAI,CAAC,QAAQ,MAAM,GAAG;AAC9D,WAAI,eAAe,SAAS,kBAAkB,OAC5C;gBACS,cAAc,cAAc,iBAAiB;YAC5B,oBAAoB,WAAW,KAAK,CAE5D,YAAW,IAAI,UAAU;;;;;QAQrC,MAAK,IAAI,EAAE,MAAM,UAAU,OAAO,eAAe,YAAY;AAC3D,OAAI,iBAAiB;AACnB,eAAW,SAAS,aAAa;AACjC,gBAAY,UAAU,aAAa;;AAErC,OAAI,SAAS,QAAQ,IAAI,GAAG,IAAI;IAC9B,MAAM,CAAC,YAAY,GAAG,gBAAgB,SAAS,MAAM,IAAI;IACzD,MAAM,gBAAgB,aAAa,KAAK,IAAI,CAAC,QAAQ,MAAM,GAAG;AAC9D,QAAI,CAAC,cAAc,gBAAgB,IAAI,gBACrC,YAAW,IAAI,UAAU;aAChB,eAAe,SAAS,kBAAkB,OACnD;aACS,gBAAgB,cACzB,YAAW,IAAI,UAAU;cAElB,gBAAgB,SACzB,YAAW,IAAI,UAAU;;AAI/B,MAAI,CAAC,WAAW,KACd,QAAO;EAET,MAAM,EAAE,MAAM,eAAe,OAAO,mBAAmB,YAAY,EAAE;EACrE,IAAI;AACJ,MAAI,cACF,KAAI,gBACF,aAAY,cAAc,aAAa;MAEvC,aAAY;WAEL,eACT,KAAI,gBACF,aAAY,eAAe,aAAa;MAExC,aAAY;WAEL,mBAAmB,GAC5B,aAAY;AAEd,UAAQ,YAAR;GACE,KAAK,IACH,QAAO,OAAO,cAAc,YAAY,WAAW,IAAI,UAAU;GAEnE,KAAK;AACH,QAAI,aAAa,OAAO,cAAc;UAC/B,MAAM,SAAS,WAElB,KADa,IAAI,IAAI,MAAM,MAAM,MAAM,CAAC,CAC/B,IAAI,UAAU,CACrB,QAAO;;AAIb,WAAO;GAET,KAAK;AACH,QAAI,aAAa,OAAO,cAAc;UAC/B,MAAM,SAAS,WAClB,KAAI,UAAU,aAAa,MAAM,WAAW,GAAG,UAAU,GAAG,CAC1D,QAAO;;AAIb,WAAO;GAET,KAAK;AACH,QAAI,aAAa,OAAO,cAAc;UAC/B,MAAM,SAAS,WAClB,KAAI,MAAM,WAAW,GAAG,YAAY,CAClC,QAAO;;AAIb,WAAO;GAET,KAAK;AACH,QAAI,aAAa,OAAO,cAAc;UAC/B,MAAM,SAAS,WAClB,KAAI,MAAM,SAAS,GAAG,YAAY,CAChC,QAAO;;AAIb,WAAO;GAET,KAAK;AACH,QAAI,aAAa,OAAO,cAAc;UAC/B,MAAM,SAAS,WAClB,KAAI,MAAM,SAAS,GAAG,YAAY,CAChC,QAAO;;AAIb,WAAO;GAGT,QACE,QAAO;;;CAIb,IAAI,qBAAqB,KAAK,MAAM,MAAM,EAAE,KAAK;EAC/C,MAAM,UAAU,iBAAiB,IAAI,KAAK;EAC1C,MAAM,EAAE,WAAW,cAAc,WAAW;EAC5C,MAAM,EAAE,OAAO,SAAS,iBAAiB;EACzC,IAAI,EAAE,QAAQ,WAAW,WAAW,iBAAiB,aACnD,SACA,KACD;AACD,MAAI,KAAK,cAAc,gBAAgB,gBAAgB,CAAC,gBAAgB,iBAAiB,mCAAmC,aAAa,KAAK,UAAU,EAAE;AACxJ,eAAY,UAAU,aAAa;AACnC,kBAAe,aAAa,aAAa;;EAE3C,IAAI;EACJ,IAAI;AACJ,MAAI,UAAU,QAAQ,IAAI,GAAG,GAC3B,EAAC,YAAY,iBAAiB,UAAU,MAAM,IAAI;OAC7C;AACL,gBAAa,UAAU;AACvB,mBAAgB;;AAElB,UAAQ,WAAR;GACE,KAAK;AACH,QAAI,CAAC,cAAc,CAAC,iBAAiB,iBAAiB,OAAO,iBAAiB,eAC5E,QAAO;AAET,WAAO;GAET,KAAK;AACH,QAAI,iBAAiB,OAAO,iBAAiB,cAC3C,QAAO;AAET,WAAO;GAET,SAAS;AACP,QAAI,CAAC,OAAO;AACV,SAAI,QACF,QAAO;AAGT,WAAM,kBACJ,qBAFW,GAAG,gBAAgB,UAAU,IAAI,IAG5C,YACA,aACD;;IAEH,MAAM,QAAQ,KAAK,mBAAmB,UAAU;AAEhD,QAAI,UADW,KAAK,mBAAmB,WAAW,IAC1B,cAAc,YAAY;AAChD,SAAI,iBAAiB,OAAO,iBAAiB,cAC3C,QAAO;AAET,YAAO;eACE,CAAC,WAAW,CAAC,MACtB,OAAM,kBACJ,wBAAwB,aACxB,YACA,aACD;AAEH,WAAO;;;;CAMb,IAAI,WAAW;CACf,IAAI,WAAW;CACf,IAAI,4BAA4B,IAAI,IAAI;EAAC,GAAG;EAAY;EAAY;EAAO,CAAC;CAC5E,IAAI,qCAAqC,IAAI,IAAI,CAAC,GAAG,YAAY,OAAO,CAAC;CACzE,IAAI,mBAAmB,IAAI,IAAI,YAAY;CAC3C,IAAI,yCAAyC,IAAI,IAAI,CAAC,GAAG,YAAY,SAAS,CAAC;CAC/E,IAAI,mCAAmC,IAAI,IAAI;EAAC,GAAG;EAAY;EAAU;EAAQ,CAAC;CAClF,IAAI,sCAAsC,IAAI,IAAI;EAAC,GAAG;EAAa,GAAG;EAAY;EAAO,CAAC;CAC1F,IAAI,mCAAmC,IAAI,IAAI,CAAC,UAAU,QAAQ,CAAC;CACnE,IAAI,oCAAoC,IAAI,IAAI,CAAC,SAAS,SAAS,CAAC;CACpE,IAAI,gCAAgC,IAAI,IAAI;EAC1C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,kCAAkC,IAAI,IAAI;EAC5C;EACA;EACA;EACA;EACA;EACD,CAAC;CACF,IAAI,sCAAsC,IAAI,IAAI;EAChD;EACA;EACA;EACD,CAAC;CACF,IAAI,SAAS,MAAM;EAEjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;EAKA,YAAY,QAAQ;AAClB,SAAA,SAAe;AACf,SAAA,2BAAiC,IAAI,SAAS;AAC9C,SAAA,gCAAsC,IAAI,SAAS;AACnD,SAAA,QAAc;AACd,SAAA,QAAc;AACd,SAAA,mBAAyB;AACzB,SAAA,gCAAsC,IAAI,IAAI;IAC5C;KACE,MAAM,CAAC,SAAS,UAAU;KAC1B,SAAS,KAAK;KACf;IACD;KACE,MAAM,CAAC,WAAW,QAAQ;KAC1B,SAAS,KAAK;KACf;IACD;KACE,MAAM;MAAC;MAAa;MAAa;MAAW;MAAS;MAAW;KAChE,SAAS,KAAK;KACf;IACF,CAAC;AACF,QAAK,yBAAyB;AAC9B,QAAK,aAAa,KAAK;;;;;;;;;;EAUzB,WAAW,GAAG,MAAM,EAAE,KAAK;AAEzB,OADiB,IAAI,YAAY,MAAA,SAE/B;AAGF,OADuB,aAAa,gBAAgB,aAAa,MAAA,OAAa,cAC1D;AAClB,QAAI,EAAE,SAAS,mBAAmB;AAChC,SAAI,MAAA,KACF,SAAQ,KAAK,EAAE,QAAQ;AAEzB;;AAEF,UAAM,IAAI,MAAA,OAAa,aAAa,EAAE,SAAS,EAAE,KAAK;;AAExD,OAAI,EAAE,QAAQ,MAAA,OACZ,OAAM,IAAI,MAAA,OAAa,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,CAAC;AAEzD,SAAM;;;;;;;;;;;;EAYR,SAAS,UAAU,MAAM,MAAM,EAAE,KAAK;GACpC,MAAM,EAAE,OAAO,UAAU,SAAS;AAClC,SAAA,QAAc,CAAC,CAAC;AAChB,SAAA,WAAiB,CAAC,CAAC;AACnB,SAAA,OAAa,CAAC,CAAC;AACf,IAAC,MAAA,UAAgB,MAAA,MAAY,MAAA,UAAgB,eAAe,KAAK;AACjE,SAAA,cAAoB;AACpB,SAAA,OAAa;AACb,SAAA,SAAe,MAAA,SAAe,MAAA,QAAc,MAAA,KAAW,aAAa;AACpE,SAAA,WAAiB;AACjB,IAAC,MAAA,KAAW,MAAA,SAAe,KAAK,YAAY,SAAS;AACrD,SAAA,gBAAsB,EAAE;AACxB,SAAA,0BAAgC,IAAI,SAAS;AAC7C,SAAA,aAAmB;AACnB,SAAA,aAAmB;AACnB,SAAA,mBAAyB;AACzB,QAAK,cAAc;AACnB,UAAO;;;;;;;EAOT,gBAAgB,MAAM,UAAU;AAC9B,SAAA,oCAA0C,IAAI,SAAS;AACvD,OAAI,IACF,OAAA,0BAAgC,IAAI,SAAS;;;;;;;;EASjD,qBAAqB,QAAQ;AAC3B,SAAA,QAAc;;;;;;;;EAQhB,wBAAwB,QAAQ;GAC9B,MAAM,EAAE,QAAQ;AAChB,OAAI,CAAC,cAAc,IAAI,IAAI,CACzB,OAAA,QAAc;;;;;;;;EASlB,qBAAqB,QAAQ;AAC3B,SAAA,QAAc;;;;;;;EAOhB,gCAAgC;GAC9B,MAAM,MAAM;IACV,SAAS;IACT,SAAS;IACV;GACD,MAAM,OAAO,EAAE;AACf,QAAK,MAAM,gBAAgB,MAAA,eAAqB;IAC9C,MAAM,EAAE,MAAM,YAAY;IAC1B,MAAM,IAAI,KAAK;AACf,SAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;KAC1B,MAAM,MAAM,KAAK;AACjB,UAAK,KAAK,MAAA,OAAa,iBAAiB,KAAK,SAAS,IAAI,CAAC;;;AAG/D,UAAO;;;;;;;;;;EAUT,4BAA4B,UAAU,aAAa;GACjD,IAAI,aAAa;GACjB,MAAM,MAAM,EAAE;GACd,MAAM,IAAI,SAAS;AACnB,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,MAAM,QAAQ,CAAC,GAAG,SAAS,GAAG;IAC9B,MAAM,SAAS,EAAE;IACjB,IAAI,OAAO,MAAM,OAAO;AACxB,QAAI,QAAQ,KAAK,SAAS,YAAY;KACpC,MAAM,yBAAyB,IAAI,KAAK;AACxC,YAAO,MAAM;AACX,UAAI,KAAK,SAAS,YAAY;OAC5B,MAAM,CAAC,YAAY;AACnB,WAAI,CAAC,YAAY,SAAS,SAAS,YAAY;QAC7C,MAAM,MAAM,oBAAoB;AAChC,aAAK,QAAQ,kBAAkB,KAAK,YAAY,MAAA,OAAa,CAAC;AAC9D,eAAO;SAAE,KAAK,EAAE;SAAE,YAAY;SAAO,YAAY;SAAO;;AAE1D,WAAI,KAAK,SAAS,OAAO,KAAK,SAAS,IACrC,cAAa;AAEf,cAAO,KAAK;QAAE,OAAO;QAAM,QAAQ,QAAQ,OAAO;QAAE,CAAC;AACrD,cAAO,OAAO;aACT;AACL,WAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,UAAU;QAC9C,MAAM,gBAAgB,iBAAiB,KAAK,KAAK;AACjD,YAAI,kBAAkB,KAAK,KACzB,MAAK,OAAO;AAEd,YAAI,OAAO,KAAK,cAAc,CAC5B,MAAK,YAAY;;AAGrB,cAAO,IAAI,KAAK;;AAElB,UAAI,MAAM,OACR,QAAO,MAAM,OAAO;WACf;AACL,cAAO,KAAK;QAAE,OAAO;QAAM,QAAQ,QAAQ,OAAO;QAAE,CAAC;AACrD,cAAO,OAAO;AACd;;;;AAIN,QAAI,KAAK;KAAE;KAAQ,KAAK;KAAM,UAAU;KAAO,MAAM;KAAO,CAAC;;AAE/D,UAAO;IAAE;IAAK;IAAY;;;;;;;;EAQ5B,eAAe,aAAa;GAC1B,MAAM,QAAQ,EAAE;AAChB,SAAA,aAAmB;AACnB,SAAA,aAAmB;GACnB,IAAI;AACJ,OAAI,MAAA,cAAoB,IAAI,MAAA,SAAe,EAAE;IAC3C,MAAM,aAAa,MAAA,cAAoB,IAAI,MAAA,SAAe;AAC1D,QAAI,cAAc,WAAW,IAAI,GAAG,WAAW,EAAE;KAC/C,MAAM,OAAO,WAAW,IAAI,GAAG,WAAW;AAC1C,WAAM,KAAK;AACX,WAAA,aAAmB,KAAK;AACxB,WAAA,aAAmB,KAAK;;;AAG5B,OAAI,KAAK;IACP,MAAM,IAAI,IAAI;AACd,SAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,SAAI,GAAG,MAAM;AACb,SAAI,GAAG,WAAW;AAClB,SAAI,GAAG,OAAO;AACd,WAAM,KAAK,EAAE;;UAEV;AACL,QAAI;AACF,WAAA,cAAoB,cAAc,SAAS;aACpC,GAAG;AACV,WAAA,cAAoB;AACpB,YAAO,KAAK,QAAQ,EAAE;;IAExB,MAAM,EAAE,UAAU,SAAS,QAAQ,MAAA,aAAmB,KAAK;IAC3D,MAAM,EACJ,kBACA,sBACA,uBACA,wBACE;AACJ,UAAA,aAAmB,oBAAoB,uBAAuB,CAAC,EAAE,wBAAwB;IACzF,MAAM,YAAY,KAAK,yBAAyB,UAAU,SAAS;AACnE,UAAM,UAAU;AAChB,UAAA,aAAmB,UAAU;IAC7B,IAAI;AACJ,QAAI,MAAA,cAAoB,IAAI,MAAA,SAAe,CACzC,cAAa,MAAA,cAAoB,IAAI,MAAA,SAAe;QAEpD,8BAA6B,IAAI,KAAK;AAExC,eAAW,IAAI,GAAG,YAAY;KAC5B;KACA,YAAY,MAAA;KACZ,YAAY,MAAA;KACb,CAAC;AACF,UAAA,cAAoB,IAAI,MAAA,UAAgB,WAAW;AACnD,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,IAC9B,OAAM,KAAK,EAAE;;AAGjB,UAAO,CAAC,KAAK,MAAM;;;;;;;;;;;EAWrB,qBAAqB,MAAM,MAAM,EAAE,KAAK;GACtC,MAAM,EAAE,QAAQ,OAAO,aAAa,mBAAmB;AACvD,OAAI,MACF,QAAO,MAAA,SAAe,iBAAiB,MAAM,WAAW;YAC/C,MAAA,QAAc,IAAI,KAAK,CAChC,QAAO,MAAA,QAAc,IAAI,KAAK;GAEhC,MAAM,SAAS,MAAA,SAAe,iBAAiB,MAAM,WAAW;AAChE,SAAA,QAAc,IAAI,MAAM,OAAO;AAC/B,UAAO;;;;;;;;EAQT,wBAAwB,aAAa;AACnC,OAAI,MAAA,SAAe,IAAI,SAAS,CAC9B,QAAO,MAAA,SAAe,IAAI,SAAS;GAErC,MAAM,EAAE,aAAa,QAAQ,SAAS;AACtC,SAAA,SAAe,IAAI,UAAU,SAAS;AACtC,UAAO;;;;;;;;;;EAUT,wBAAwB,YAAY,kBAAkB,MAAM,EAAE,KAAK;GACjE,MAAM,WAAW,EAAE;GACnB,MAAM,SAAS,KAAK,kBAAkB,YAAY,EAAE,OAAO,MAAM,CAAC;GAClE,IAAI,YAAY,OAAO,YAAY;AACnC,UAAO,WAAW;AAChB,QAAI;SACE,UAAU,UAAU,EAAE;MACxB,IAAI,UAAU;MACd,MAAM,IAAI,iBAAiB;AAC3B,WAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;OAC1B,MAAM,SAAS,iBAAiB;AAChC,WAAI,KAAK,aAAa,QAAQ,WAAW,IAAI,EAAE;AAC7C,kBAAU;AACV;;;AAGJ,UAAI,QACF,UAAS,KAAK,UAAU;;UAI5B,UAAS,KAAK,UAAU;AAE1B,gBAAY,OAAO,aAAa;;AAElC,UAAO;;;;;;;;;;;;;;EAcT,oBAAoB,KAAK,MAAM,MAAM,EAAE,KAAK;GAC1C,MAAM,EAAE,GAAG,GAAG,aAAa;GAC3B,MAAM,EAAE,eAAe;AACvB,OAAI,CAAC,YAAY;IACf,MAAM,8BAA8B,IAAI,KAAK;AAC7C,QAAI,SAAS,MAAA,QAAc,IAAI,IAAI,IAAI,MAAM,EAC3C,KAAI,UAAU;KACZ,MAAM,oBAAoB,KAAK,qBAAqB,SAAS;KAC7D,MAAM,IAAI,kBAAkB;AAC5B,UAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;MAC1B,MAAM,SAAS,kBAAkB;AACjC,UAAI,KAAK,aAAa,QAAQ,MAAM,IAAI,EAAE;AACxC,mBAAY,IAAI,KAAK;AACrB;;;UAIJ,aAAY,IAAI,KAAK;AAGzB,WAAO;;GAET,MAAM,mBAAmB,WAAW,KAAK,qBAAqB,SAAS,GAAG;GAM1E,MAAM,eAAe,iBALJ,KAAK,qBACpB,YACA,kBACA,IACD,EAC+C,IAAI;AACpD,UAAO,IAAI,IAAI,aAAa;;;;;;;;;;;;EAY9B,qBAAqB,KAAK,SAAS;GACjC,MAAM,EAAE,eAAe;AACvB,OAAI,CAAC,YAAY;AACf,QAAI,SAAS,MAAA,QAAc,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,EACnD,wBAAuB,IAAI,IAAI,CAAC,KAAK,CAAC;AAExC,2BAAuB,IAAI,KAAK;;GAElC,MAAM,gBAAgB,EAAE;GACxB,MAAM,SAAS,KAAK,kBAAkB,YAAY,EAAE,OAAO,MAAM,CAAC;GAClE,IAAI,UAAU,OAAO,YAAY;AACjC,UAAO,SAAS;AACd,QAAI,QAAQ,cAAc,KAAK,aAAa,QAAQ,iBAAiB,KAAK,gBAAgB,QAAQ,WAAW,KAAK,OAChH,eAAc,KAAK,QAAQ;AAE7B,cAAU,OAAO,aAAa;;GAEhC,MAAM,eAAe,iBAAiB,eAAe,IAAI;AACzD,UAAO,IAAI,IAAI,aAAa;;;;;;;;;;;EAW9B,iBAAiB,KAAK,MAAM,SAAS,MAAM,EAAE,KAAK;GAChD,MAAM,EACJ,KAAK,EAAE,GAAG,GAAG,MAAM,gBACnB,aACE;GACJ,MAAM,yBAAyB,IAAI,KAAK;AACxC,OAAI,cAAc;AAChB,QAAI,iBAAiB,QAAQ;AAC3B,YAAO,IAAI,KAAK,EAAE;AAClB,YAAO,IAAI,KAAK,EAAE;eACT,iBAAiB,OAAO;AACjC,YAAO,IAAI,KAAK,EAAE;AAClB,YAAO,IAAI,KAAK,EAAE;;AAEpB,QAAI,QAAQ,QAAQ,OAAO,GAAG,GAC5B,QAAO,IAAI,WAAW,KAAK;UAExB;AACL,QAAI,OAAO,MAAM,YAAY,QAAQ,KAAK,EAAE,CAC1C,QAAO,IAAI,KAAK,IAAI,EAAE;QAEtB,QAAO,IAAI,KAAK,EAAE;AAEpB,QAAI,OAAO,MAAM,YAAY,QAAQ,KAAK,EAAE,CAC1C,QAAO,IAAI,KAAK,IAAI,EAAE;QAEtB,QAAO,IAAI,KAAK,EAAE;AAEpB,QAAI,QAAQ,QAAQ,OAAO,GAAG,GAC5B,QAAO,IAAI,WAAW,KAAK;;AAG/B,OAAI,YAAY,eAAe,YAAY,kBAAkB;AAC3D,QAAI,SACF,QAAO,IAAI,YAAY,SAAS;IAElC,MAAM,MAAM,OAAO,YAAY,OAAO;AAEtC,WADc,KAAK,iBAAiB,KAAK,MAAM,IAAI;cAE1C,YAAY,iBAAiB,YAAY,oBAAoB;IACtE,MAAM,MAAM,OAAO,YAAY,OAAO;AAEtC,WADc,KAAK,kBAAkB,KAAK,KAAK;;AAGjD,0BAAuB,IAAI,KAAK;;;;;;;;;;EAUlC,uBAAuB,WAAW,MAAM,MAAM,EAAE,KAAK;AACnD,OAAI,MAAM,QAAQ,UAAU,IAAI,UAAU,QAAQ;IAChD,MAAM,SAAS,CAAC,GAAG,UAAU;IAC7B,MAAM,CAAC,QAAQ;IACf,MAAM,EAAE,MAAM,aAAa;IAC3B,IAAI;AACJ,QAAI,aAAa,WACf,SAAQ,OAAO,OAAO;QAEtB,SAAQ;KACN,MAAM;KACN,MAAM;KACP;IAEH,MAAM,aAAa,EAAE;AACrB,WAAO,OAAO,QAAQ;KACpB,MAAM,CAAC,QAAQ;KACf,MAAM,EAAE,MAAM,aAAa;AAC3B,SAAI,aAAa,WACf;SAEA,YAAW,KAAK,OAAO,OAAO,CAAC;;IAGnC,MAAM,OAAO;KACX;KACA,QAAQ;KACT;AACD,QAAI,MAAM;IACV,MAAM,QAAQ,KAAK,iBAAiB,MAAM,MAAM,IAAI;AACpD,QAAI,MAAM,MAAM;AACd,SAAI,OAAO,QAAQ;MACjB,IAAI,OAAO;AACX,WAAK,MAAM,YAAY,OAAO;AAC5B,cAAO,KAAK,oBAAoB,QAAQ,UAAU,IAAI;AACtD,WAAI,KACF;;AAGJ,aAAO;;AAET,YAAO;;;AAGX,UAAO;;;;;;;;;;EAUT,sBAAsB,SAAS,MAAM,QAAQ;GAC3C,MAAM,EAAE,aAAa;GACrB,IAAI,OAAO;GACX,MAAM,IAAI,SAAS;AACnB,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,MAAM,SAAS,SAAS;AACxB,WAAO,KAAK,oBAAoB,QAAQ,MAAM,IAAI;AAClD,QAAI,KACF;;AAGJ,OAAI,CAAC,KACH,QAAO;AAET,QAAK,IAAI,gBAAgB,MAAA,WAAiB,KAAK,aAAa,uBAC1D,QAAO,MAAA,mBAAyB,OAAO;AAEzC,UAAO;;;;;;;;;;EAUT,2BAA2B,SAAS,MAAM,MAAM,EAAE,KAAK;GACrD,MAAM,EAAE,SAAS,UAAU,iBAAiB;AAC5C,OAAI,YAAY,MACd,QAAO,KAAK,mBAAmB,SAAS,MAAM,IAAI;AAGpD,QADsB,IAAI,gBAAgB,MAAA,WAAiB,KAAK,aAAa,wBAC3D;IAChB,IAAI,UAAU;AACd,SAAK,MAAM,UAAU,SACnB,KAAI,OAAO,SAAS,GAAG;AACrB,eAAU;AACV;eACS,YAAY,OAAO;KAC5B,MAAM,CAAC,EAAE,MAAM,kBAAkB;AACjC,SAAI,iBAAiB,mBAAmB;AACtC,gBAAU;AACV;;;AAIN,QAAI,QACF,QAAO;;AAGX,OAAI,UAAU,YAAY,QAAQ,YAAY;GAC9C,MAAM,IAAI,aAAa;GACvB,IAAI;AACJ,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,MAAM,SAAS,aAAa;IAC5B,MAAM,YAAY,OAAO,SAAS;IAClC,MAAM,EAAE,WAAW,OAAO;AAC1B,WAAO,KAAK,aAAa,QAAQ,MAAM,IAAI;AAC3C,QAAI,QAAQ,YAAY,GAAG;KACzB,IAAI,4BAA4B,IAAI,IAAI,CAAC,KAAK,CAAC;AAC/C,UAAK,IAAI,IAAI,YAAY,GAAG,KAAK,GAAG,KAAK;MACvC,MAAM,OAAO,OAAO;MACpB,MAAM,MAAM,EAAE;AACd,UAAI,MAAM;AACV,WAAK,MAAM,YAAY,WAAW;OAChC,MAAM,IAAI,KAAK,iBAAiB,MAAM,UAAU,IAAI;AACpD,WAAI,EAAE,KACJ,KAAI,KAAK,GAAG,EAAE;;AAGlB,UAAI,IAAI,OACN,KAAI,MAAM,EACR,QAAO;UAEP,aAAY,IAAI,IAAI,IAAI;WAErB;AACL,cAAO;AACP;;;;AAIN,QAAI,KACF;;AAGJ,OAAI,YAAY,OAAO;AACrB,QAAI,KACF,QAAO;AAET,WAAO;cACE,KACT,QAAO;AAET,UAAO;;;;;;;;;;;EAWT,0BAA0B,KAAK,MAAM,MAAM,EAAE,EAAE;GAC7C,MAAM,EAAE,UAAU,aAAa,MAAM,YAAY;GACjD,MAAM,EAAE,WAAW,eAAe;GAClC,MAAM,EAAE,SAAS,OAAO,MAAA,SAAe;GACvC,MAAM,0BAA0B,IAAI,KAAK;AACzC,OAAI,MAAM,QAAQ,YAAY,IAAI,aAAa,IAAI,QAAQ,EAAE;AAC3D,QAAI,CAAC,YAAY,UAAU,YAAY,QAAQ,YAAY,SAAS;KAElE,MAAM,MAAM,qBADC,GAAG,gBAAgB,UAAU,IAAI;AAE9C,YAAO,KAAK,QAAQ,kBAAkB,KAAK,YAAY,MAAA,OAAa,CAAC;;IAEvE,IAAI;AACJ,QAAI,MAAA,SAAe,IAAI,IAAI,CACzB,WAAU,MAAA,SAAe,IAAI,IAAI;SAC5B;KACL,MAAM,EAAE,aAAa,QAAQ,IAAI;AACjC,SAAI,YAAY,OAAO;MACrB,IAAI,WAAW;MACf,MAAM,IAAI,YAAY;AACtB,WAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;OAC1B,MAAM,QAAQ,YAAY;OAC1B,MAAM,QAAQ,GAAG,gBAAgB,MAAM,OAAO,yBAAyB;AACvE,WAAI,MAAM;QACR,MAAM,WAAW,KAAK;AACtB,YAAI,aAAa,QAAQ,aAAa,SAAS;AAC7C,oBAAW;AACX;eACK;SAEL,MAAM,MAAM,qBADC,GAAG,gBAAgB,UAAU,IAAI;AAE9C,gBAAO,KAAK,QACV,kBAAkB,KAAK,YAAY,MAAA,OAAa,CACjD;;;;AAIP,UAAI,SACF,QAAO;AAET,gBAAU;OACR;OACA;OACD;YACI;MACL,MAAM,eAAe,EAAE;MACvB,MAAM,IAAI,SAAS;AACnB,WAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;OAC1B,MAAM,EAAC,GAAG,UAAU,SAAS;OAC7B,MAAM,SAAS,EAAE;OACjB,MAAM,4BAA4B,IAAI,KAAK;OAC3C,IAAI,OAAO,OAAO,OAAO;AACzB,cAAO,MAAM;AACX,YAAI,KAAK,SAAS,YAAY;AAC5B,gBAAO,KAAK;UACV,OAAO;UACP,QAAQ,CAAC,GAAG,UAAU;UACvB,CAAC;AACF,mBAAU,OAAO;mBACR,KACT,WAAU,IAAI,KAAK;AAErB,YAAI,OAAO,OACT,QAAO,OAAO,OAAO;aAChB;AACL,gBAAO,KAAK;UACV,OAAO;UACP,QAAQ,CAAC,GAAG,UAAU;UACvB,CAAC;AACF,mBAAU,OAAO;AACjB;;;AAGJ,oBAAa,KAAK,OAAO;;AAE3B,gBAAU;OACR;OACA;OACA;OACD;AACD,YAAA,SAAe,IAAI,KAAK,QAAQ;;;IAGpC,MAAM,MAAM,KAAK,wBAAwB,SAAS,MAAM,IAAI;AAC5D,QAAI,IACF,SAAQ,IAAI,IAAI;cAET,MAAM,QAAQ,YAAY,CACnC,KAAI,oCAAoC,KAAK,QAAQ,EAAE;AACrD,QAAI,YAAY,WAAW,GAAG;KAC5B,MAAM,OAAO,GAAG,gBAAgB,UAAU,IAAI;AAC9C,YAAO,KAAK,QACV,kBACE,oBAAoB,OACpB,YACA,MAAA,OACD,CACF;;IAEH,MAAM,CAAC,UAAU;AAEjB,WADc,KAAK,cAAc,QAAQ,MAAM,SAAS,IAAI;SAG5D,SAAQ,SAAR;IAEE,KAAK,OAAO;AACV,SAAI,YAAY,WAAW,GAAG;MAC5B,MAAM,OAAO,GAAG,gBAAgB,UAAU,IAAI;AAC9C,aAAO,KAAK,QACV,kBACE,oBAAoB,OACpB,YACA,MAAA,OACD,CACF;;KAEH,MAAM,CAAC,YAAY;AAEnB,SADY,0BAA0B,UAAU,KAAK,CAEnD,SAAQ,IAAI,KAAK;AAEnB;;IAGF,KAAK,QAAQ;AACX,SAAI,CAAC,YAAY,QAAQ;MACvB,MAAM,OAAO,GAAG,gBAAgB,UAAU,IAAI;AAC9C,aAAO,KAAK,QACV,kBACE,oBAAoB,OACpB,YACA,MAAA,OACD,CACF;;KAEH,IAAI;AACJ,UAAK,MAAM,YAAY,aAAa;AAClC,aAAO,yBAAyB,UAAU,KAAK;AAC/C,UAAI,KACF;;AAGJ,SAAI,KACF,SAAQ,IAAI,KAAK;AAEnB;;IAGF,KAAK;AACH,SAAI,gBAAgB,KAAK,EAAE;MACzB,MAAM,CAAC,EAAE,OAAO,gBAAgB;AAChC,UAAI,WACF,KAAI,KAAK,YACP,SAAQ,IAAI,KAAK;UAEjB,MAAK,MAAM,KAAK,MAAM;OACpB,MAAM,OAAO,KAAK;AAClB,WAAI,gBAAgB,MAAA,OAAa,kBAAkB;AACjD,YAAI,MAAM,QAAQ,IAAI,WAAW,CAC/B,SAAQ,IAAI,KAAK;AAEnB;;;;AAMV;IAEF,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACH,SAAI,KACF,MAAK,QACH,kBACE,6BAA6B,QAAQ,KACrC,mBACA,MAAA,OACD,CACF;AAEH;IAGF,KAAK;IACL,KAAK,eACH;IAGF,KAAK;AACH,SAAI,KACF,MAAK,QACH,kBACE,yBAAyB,QAAQ,KACjC,mBACA,MAAA,OACD,CACF;AAEH;IAEF,QACE,KAAI,CAAC,QACH,MAAK,QACH,kBACE,yBAAyB,QAAQ,KACjC,YACA,MAAA,OACD,CACF;;YAKA,oBAAoB,IAAI,QAAQ;QACrC,SAAS,MAAA,KACX,SAAQ,IAAI,KAAK;aACR,WACT,SAAQ,SAAR;KACE,KAAK,iBAAiB;MACpB,MAAM,CAAC,SAAS,KAAK,kBACnB;OACE,GAAG;OACH,GAAG;OACJ,EACD,KACD;AACD,UAAI,MACF,SAAQ,IAAI,MAAM;AAEpB;;KAEF,KAAK,gBAAgB;MACnB,MAAM,CAAC,SAAS,KAAK,kBACnB;OACE,GAAG;OACH,GAAG;OACH,SAAS;OACV,EACD,KACD;AACD,UAAI,MACF,SAAQ,IAAI,MAAM;AAEpB;;KAGF,SAAS;MACP,MAAM,CAAC,SAAS,KAAK,kBACnB;OACE,GAAG;OACH,GAAG;OACJ,EACD,KACD;AACD,UAAI,UAAU,MAAM;OAClB,MAAM,CAAC,SAAS,KAAK,kBACnB;QACE,GAAG;QACH,GAAG;QACH,SAAS;QACV,EACD,KACD;AACD,WAAI,UAAU,KACZ,SAAQ,IAAI,KAAK;;;;SAO3B,SAAQ,SAAR;IACE,KAAK;IACL,KAAK;AAEH,SADgB,yBAAyB,SAAS,KAAK,CAErD,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;IACL,KAAK;AAEH,SADgB,yBAAyB,SAAS,KAAK,CAErD,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;IACL,KAAK;AACH,UAAK,cAAc,OAAO,cAAc,WAAW,KAAK,aAAa,OAAO,CAC1E,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,UAAK,cAAc,OAAO,cAAc,WAAW,KAAK,aAAa,OAAO,EAAE;AAC5E,UAAI,CAAC,MAAA,YACH,OAAA,cAAoB,IAAI,IAAI,MAAA,SAAe,IAAI;MAEjD,MAAM,EAAE,MAAM,QAAQ,aAAa,MAAA;MACnC,MAAM,UAAU,IAAI,IAAI,KAAK,aAAa,OAAO,EAAE,KAAK;AACxD,UAAI,QAAQ,WAAW,UAAU,QAAQ,aAAa,SACpD,SAAQ,IAAI,KAAK;;AAGrB;IAEF,KAAK,UACH;IAEF,KAAK,SAAS;KACZ,MAAM,EAAE,QAAQ,SAAS,MAAA,SAAe,EAAE;AAC1C,SAAI,oCAAoC,KAAK,KAAK,IAAI,KAAK,SAAS,OAAO,CACzE,SAAQ,IAAI,KAAK;AAEnB;;IAEF,KAAK,UAAU;KACb,MAAM,EAAE,SAAS,QAAQ,SAAS,MAAA,SAAe,EAAE;AACnD,SAAI,SAAS,eAAe,UAAU,KAAK,KAAK,SAAS,OAAO,CAC9D,SAAQ,IAAI,KAAK;AAEnB;;IAEF,KAAK,UAAU;AACb,SAAI,CAAC,MAAA,YACH,OAAA,cAAoB,IAAI,IAAI,MAAA,SAAe,IAAI;KAEjD,MAAM,EAAE,SAAS,MAAA;AACjB,SAAI,KAAK,MAAM,SAAS,IAAI,KAAK,QAAQ,MAAA,SAAe,SAAS,KAAK,CACpE,SAAQ,IAAI,KAAK;AAEnB;;IAEF,KAAK,iBAAiB;AACpB,SAAI,CAAC,MAAA,YACH,OAAA,cAAoB,IAAI,IAAI,MAAA,SAAe,IAAI;KAEjD,MAAM,EAAE,SAAS,MAAA;AACjB,SAAI,MAAM;MACR,MAAM,KAAK,KAAK,QAAQ,MAAM,GAAG;MACjC,IAAI,UAAU,MAAA,SAAe,eAAe,GAAG;AAC/C,aAAO,SAAS;AACd,WAAI,YAAY,MAAM;AACpB,gBAAQ,IAAI,KAAK;AACjB;;AAEF,iBAAU,QAAQ;;;AAGtB;;IAEF,KAAK;AACH,SAAI,MAAA,KAAW,aAAa;UACtB,CAAC,MAAA,UAAgB,SAAS,MAAA,KAC5B,SAAQ,IAAI,KAAK;gBAEV,SAAS,MAAA,SAAe,gBACjC,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK,SAAS;KACZ,MAAM,gBAAgB,MAAA,SAAe;AACrC,SAAI,SAAS,iBAAiB,gBAAgB,KAAK,CACjD,SAAQ,IAAI,KAAK;cACR,cAAc,YAAY;MAEnC,IAAI,UADwB,cAAc,WAAW;AAErD,aAAO,QACL,KAAI,QAAQ,aAAa,wBAAwB;OAC/C,MAAM,EAAE,SAAS;AACjB,WAAI,SAAS,cACX,KAAI,gBAAgB,KAAK,CACvB,SAAQ,IAAI,KAAK;WAEjB,SAAQ,IAAI,KAAK;AAGrB;YAEA,WAAU,QAAQ;;AAIxB;;IAEF,KAAK;AACH,SAAI,SAAS,MAAA,SAAe,iBAAiB,gBAAgB,KAAK,EAAE;MAClE,IAAI;AACJ,UAAI,eAAe,KAAK,CACtB,QAAO;eACE,MAAA,OAAa;OACtB,MAAM,EAAE,eAAe,QAAQ,gBAAgB,MAAA;AAC/C,WAAI,gBAAgB;YACd,eAAe,cAAc,CAC/B,QAAO;iBACE,MAAA,OAAa;SACtB,MAAM,EACJ,QAAQ,aACR,SAAS,cACT,KAAK,UACL,SAAS,cACT,QAAQ,aACR,MAAM,cACJ,MAAA;AACJ,aAAI,gBAAgB;cACd,MAAA,qBAA2B,KAC7B,QAAO;mBACE,gBAAgB,MAAA,iBACzB,QAAO;oBAEA,aAAa;cAClB,cAAc,aAAa,gBAAgB,QAAQ,cAAc,WAAW,gBAAgB,KAC9F,KAAI,gBAAgB;eACd,MAAA,qBAA2B,KAC7B,QAAO;oBACE,gBAAgB,MAAA,oBAA0B,kBAAkB,KACrE,QAAO;gBAGT,QAAO;oBAGF;eACJ,cAAc,aAAa,cAAc,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,gBAAgB,KAC1H,QAAO;;mBAGF,kBAAkB,QAAQ,kBAAkB,MAAA,iBACrD,QAAO;;;AAIb,UAAI,MAAM;AACR,aAAA,mBAAyB;AACzB,eAAQ,IAAI,KAAK;iBACR,MAAA,qBAA2B,KACpC,OAAA,mBAAyB;;AAG7B;IAEF,KAAK,gBAAgB;KACnB,MAAM,gBAAgB,MAAA,SAAe;AACrC,SAAI,KAAK,SAAS,cAAc,IAAI,gBAAgB,cAAc,CAChE,SAAQ,IAAI,KAAK;cACR,cAAc,YAAY;MACnC,MAAM,sBAAsB,cAAc,WAAW;AACrD,UAAI,KAAK,SAAS,oBAAoB,CACpC,SAAQ,IAAI,KAAK;WACZ;OACL,IAAI,UAAU;AACd,cAAO,QACL,KAAI,QAAQ,aAAa,wBAAwB;QAC/C,MAAM,EAAE,SAAS;AACjB,YAAI,SAAS,iBAAiB,KAAK,SAAS,KAAK,CAC/C,SAAQ,IAAI,KAAK;AAEnB;aAEA,WAAU,QAAQ;;;AAK1B;;IAEF,KAAK;IACL,KAAK;AACH,SAAI,cAAc,aAAa,cAAc;UACvC,KAAK,aAAa,OAAO;WACvB,YAAY,OACd,SAAQ,IAAI,KAAK;iBAEV,YAAY,SACrB,SAAQ,IAAI,KAAK;;AAGrB;IAEF,KAAK,qBAAqB;KACxB,IAAI;AACJ,SAAI,KAAK,YACP,eAAc,KAAK;cACV,KAAK,aAAa,cAAc,CACzC,eAAc,KAAK,aAAa,cAAc;AAEhD,SAAI,OAAO,gBAAgB,YAAY,CAAC,SAAS,KAAK,YAAY,EAAE;MAClE,IAAI;AACJ,UAAI,cAAc,WAChB,cAAa;eACJ,cAAc,QACvB,KAAI,KAAK,aAAa,OAAO;WACvB,uBAAuB,IAAI,KAAK,aAAa,OAAO,CAAC,CACvD,cAAa;YAGf,cAAa;AAGjB,UAAI,cAAc,KAAK,UAAU,GAC/B,SAAQ,IAAI,KAAK;;AAGrB;;IAEF,KAAK,WAAW;KACd,MAAM,WAAW,KAAK,aAAa,OAAO;AAC1C,SAAI,KAAK,WAAW,cAAc,YAAY,aAAa,cAAc,aAAa,YAAY,KAAK,YAAY,cAAc,SAC/H,SAAQ,IAAI,KAAK;AAEnB;;IAEF,KAAK;AACH,SAAI,KAAK,iBAAiB,cAAc,WAAW,KAAK,SAAS,cAAc,cAAc,cAAc,CAAC,KAAK,aAAa,QAAQ,CACpI,SAAQ,IAAI,KAAK;cACR,cAAc,WAAW,KAAK,SAAS,WAAW,CAAC,KAAK,aAAa,UAAU,EAAE;MAC1F,MAAM,WAAW,KAAK;MACtB,IAAI,SAAS,KAAK;AAClB,aAAO,QAAQ;AACb,WAAI,OAAO,cAAc,OACvB;AAEF,gBAAS,OAAO;;AAElB,UAAI,CAAC,OACH,UAAS,MAAA,SAAe;MAE1B,MAAM,SAAS,KAAK,kBAAkB,OAAO;MAC7C,IAAI,UAAU,aAAa,QAAQ,OAAO;AAC1C,gBAAU,OAAO,YAAY;MAC7B,IAAI;AACJ,aAAO,SAAS;AACd,WAAI,QAAQ,cAAc,WAAW,QAAQ,aAAa,OAAO,KAAK,SAAS;AAC7E,YAAI,QAAQ,aAAa,OAAO;aAC1B,QAAQ,aAAa,OAAO,KAAK,SACnC,WAAU,CAAC,CAAC,QAAQ;cAGtB,WAAU,CAAC,CAAC,QAAQ;AAEtB,YAAI,QACF;;AAGJ,iBAAU,OAAO,UAAU;;AAE7B,UAAI,CAAC,QACH,SAAQ,IAAI,KAAK;;AAGrB;IAEF,KAAK,WAAW;KACd,MAAM,WAAW,KAAK,aAAa,OAAO;AAC1C,SAAI,cAAc,YAAY,EAAE,KAAK,aAAa,OAAO,IAAI,iBAAiB,IAAI,SAAS,KAAK,cAAc,WAAW,KAAK,aAAa,OAAO,IAAI,kBAAkB,IAAI,SAAS,EAAE;MACrL,IAAI,OAAO,KAAK;AAChB,aAAO,MAAM;AACX,WAAI,KAAK,cAAc,OACrB;AAEF,cAAO,KAAK;;AAEd,UAAI,MAAM;OACR,MAAM,SAAS,KAAK,kBAAkB,KAAK;OAC3C,IAAI,UAAU,aAAa,MAAM,OAAO;AACxC,iBAAU,OAAO,YAAY;AAC7B,cAAO,SAAS;QACd,MAAM,WAAW,QAAQ;QACzB,MAAM,eAAe,QAAQ,aAAa,OAAO;QACjD,IAAI;AACJ,YAAI,aAAa,SACf,KAAI,EAAE,QAAQ,aAAa,OAAO,IAAI,iBAAiB,IAAI,aAAa;iBAC/D,aAAa,QACtB,KAAI,QAAQ,aAAa,OAAO,IAAI,kBAAkB,IAAI,aAAa;AAEzE,YAAI,GAAG;AACL,aAAI,YAAY,KACd,SAAQ,IAAI,KAAK;AAEnB;;AAEF,kBAAU,OAAO,UAAU;;;gBAGtB,cAAc,WAAW,KAAK,aAAa,OAAO,IAAI,KAAK,aAAa,UAAU,IAAI,iBAAiB,IAAI,SAAS,CAC7H,SAAQ,IAAI,KAAK;cACR,cAAc,YAAY,KAAK,aAAa,WAAW,CAChE,SAAQ,IAAI,KAAK;AAEnB;;IAEF,KAAK;IACL,KAAK;AACH,SAAI,mBAAmB,IAAI,UAAU,EAAE;MACrC,IAAI;AACJ,UAAI,KAAK,eAAe,CACtB,KAAI,KAAK,aAAa;WAChB,KAAK,aAAa,KAAK,MAAM,OAC/B,SAAQ;YAGV,SAAQ;AAGZ,UAAI;WACE,YAAY,QACd,SAAQ,IAAI,KAAK;iBAEV,YAAY,UACrB,SAAQ,IAAI,KAAK;gBAEV,cAAc,YAAY;MACnC,MAAM,SAAS,KAAK,kBAAkB,KAAK;MAC3C,IAAI,UAAU,aAAa,MAAM,OAAO;AACxC,gBAAU,OAAO,YAAY;MAC7B,IAAI;AACJ,UAAI,CAAC,QACH,SAAQ;UAER,QAAO,SAAS;AACd,WAAI,mBAAmB,IAAI,QAAQ,UAAU,EAAE;AAC7C,YAAI,QAAQ,eAAe,CACzB,KAAI,QAAQ,aAAa,EACvB,SAAQ,QAAQ,aAAa,QAAQ,MAAM;YAE3C,SAAQ;YAGV,SAAQ;AAEV,YAAI,CAAC,MACH;;AAGJ,iBAAU,OAAO,UAAU;;AAG/B,UAAI;WACE,YAAY,QACd,SAAQ,IAAI,KAAK;iBAEV,YAAY,UACrB,SAAQ,IAAI,KAAK;;AAGrB;IAEF,KAAK;IACL,KAAK,gBAAgB;KACnB,MAAM,WAAW,KAAK,aAAa,OAAO;AAC1C,SAAI,cAAc,WAAW,EAAE,KAAK,YAAY,KAAK,aAAa,WAAW,KAAK,EAAE,KAAK,YAAY,KAAK,aAAa,WAAW,KAAK,iBAAiB,IAAI,SAAS,EAAE;MACrK,MAAM,SAAS,KAAK,SAAS,kBAAkB,KAAK,SAAS;AAC7D,UAAI,YAAY,kBAAkB,OAChC,SAAQ,IAAI,KAAK;eACR,YAAY,cAAc,CAAC,WAAW,KAAK,aAAa,MAAM,IAAI,KAAK,aAAa,MAAM,IAAI,aAAa,SACpH,SAAQ,IAAI,KAAK;;AAGrB;;IAEF,KAAK;IACL,KAAK,YAAY;KACf,IAAI;KACJ,IAAI;AACJ,SAAI,cAAc,YAAY,cAAc,WAC1C,KAAI,KAAK,YAAY,KAAK,aAAa,WAAW,CAChD,YAAW;SAEX,YAAW;cAEJ,cAAc,QACvB,KAAI,KAAK,aAAa,OAAO,EAAE;MAC7B,MAAM,WAAW,KAAK,aAAa,OAAO;AAC1C,UAAI,oBAAoB,IAAI,SAAS,CACnC,KAAI,KAAK,YAAY,KAAK,aAAa,WAAW,CAChD,YAAW;UAEX,YAAW;UAGb,YAAW;gBAEJ,KAAK,YAAY,KAAK,aAAa,WAAW,CACvD,YAAW;SAEX,YAAW;AAGf,SAAI,YAAY,cAAc,SAC5B,SAAQ,IAAI,KAAK;cACR,YAAY,cAAc,SACnC,SAAQ,IAAI,KAAK;AAEnB;;IAEF,KAAK;AACH,SAAI,SAAS,MAAA,SAAe,gBAC1B,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,KAAK,eAAe,EAAE;MACxB,MAAM,SAAS,KAAK,kBAAkB,MAAM;OAC1C,OAAO;OACP,YAAY;OACb,CAAC;MACF,IAAI,UAAU,OAAO,YAAY;MACjC,IAAI;AACJ,aAAO,SAAS;AACd,cAAO,QAAQ,aAAa,gBAAgB,QAAQ,aAAa;AACjE,WAAI,CAAC,KACH;AAEF,iBAAU,OAAO,aAAa;;AAEhC,UAAI,KACF,SAAQ,IAAI,KAAK;WAGnB,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,cAAc,SAAS,WAAW,qBAAqB,SAAS,MAAA,KAClE,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,cAAc,SAAS,WAAW,oBAAoB,SAAS,MAAA,KACjE,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,cAAc,SAAS,WAAW,qBAAqB,SAAS,WAAW,oBAAoB,SAAS,MAAA,KAC1G,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,KAAK,aAAa,KAAK,IAAI,UAAU,SAAS,IAAI;UAChD,gBAAgB,KAAK,CACvB,SAAQ,IAAI,KAAK;gBAEV,gBAAgB,MAAA,OAAa,eAAe,gBAAgB,MAAA,OAAa,WAClF,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,KAAK,WAAW,UAAU,KAAK,CACjC,SAAQ,IAAI,KAAK;AAEnB;IAGF,KAAK,OACH;IAGF,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACH,SAAI,KACF,MAAK,QACH,kBACE,gCAAgC,WAChC,mBACA,MAAA,OACD,CACF;AAEH;IAGF,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;AACH,SAAI,KACF,MAAK,QACH,kBACE,6BAA6B,WAC7B,mBACA,MAAA,OACD,CACF;AAEH;IAEF,QACE,KAAI,QAAQ,WAAW,WAAW;SAC5B,KACF,MAAK,QACH,kBACE,6BAA6B,WAC7B,mBACA,MAAA,OACD,CACF;eAEM,CAAC,QACV,MAAK,QACH,kBACE,yBAAyB,WACzB,YACA,MAAA,OACD,CACF;;AAKT,UAAO;;;;;;;;;;EAUT,uBAAuB,QAAQ,MAAM,QAAQ;GAC3C,MAAM,IAAI,OAAO;AACjB,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,MAAM,OAAO,OAAO;AACpB,QAAI,KAAK,SAAS,YAAY;KAE5B,MAAM,MAAM,qBADC,GAAG,gBAAgB,UAAU,IAAI;AAE9C,UAAK,QAAQ,kBAAkB,KAAK,YAAY,MAAA,OAAa,CAAC;AAC9D,YAAO;;AAET,QAAI,CAAC,KAAK,eAAe,MAAM,KAAK,CAAC,IAAI,KAAK,CAC5C,QAAO;;AAGX,UAAO;;;;;;;;;;EAUT,8BAA8B,QAAQ,MAAM,QAAQ;GAClD,IAAI,SAAS;AACb,UAAO,QAAQ;IACb,IAAI;IACJ,MAAM,IAAI,OAAO;AACjB,SAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;KAC1B,MAAM,OAAO,OAAO;AACpB,SAAI,KAAK,SAAS,YAAY;MAE5B,MAAM,MAAM,qBADC,GAAG,gBAAgB,UAAU,IAAI;AAE9C,WAAK,QAAQ,kBAAkB,KAAK,YAAY,MAAA,OAAa,CAAC;AAC9D,aAAO;;AAET,YAAO,KAAK,eAAe,MAAM,OAAO,CAAC,IAAI,OAAO;AACpD,SAAI,CAAC,KACH;;AAGJ,QAAI,KACF,QAAO;AAET,aAAS,OAAO;;AAElB,UAAO;;;;;;;;;EAST,+BAA+B,KAAK,SAAS;GAC3C,MAAM,EAAE,UAAU,aAAa,MAAM,YAAY;AACjD,OAAI,CAAC,MAAM,QAAQ,YAAY,EAAE;AAC/B,QAAI,YAAY,OACd,QAAO;IAET,MAAM,MAAM,qBAAqB;AACjC,WAAO,KAAK,QAAQ,kBAAkB,KAAK,YAAY,MAAA,OAAa,CAAC;;AAEvE,OAAI,YAAY,UAAU,YAAY,gBAAgB;IACpD,MAAM,MAAM,qBAAqB,QAAQ;AACzC,WAAO,KAAK,QAAQ,kBAAkB,KAAK,YAAY,MAAA,OAAa,CAAC;;AAEvE,OAAI,YAAY,WAAW,GAAG;IAE5B,MAAM,MAAM,qBADC,GAAG,gBAAgB,UAAU,IAAI;AAE9C,WAAO,KAAK,QAAQ,kBAAkB,KAAK,YAAY,MAAA,OAAa,CAAC;;GAEvE,MAAM,EAAE,SAAS;GACjB,MAAM,EAAE,aAAa,QAAQ,YAAY,GAAG;GAC5C,MAAM,CAAC,UAAU;GACjB,MAAM,EAAC,GAAG,UAAU;GACpB,IAAI,UAAU;AACd,OAAI,YAAY,OACd,WAAU,KAAK,oBAAoB,QAAQ,MAAM,IAAI;OAErD,WAAU,KAAK,2BAA2B,QAAQ,MAAM,IAAI;AAE9D,UAAO,UAAU,OAAO;;;;;;;;;;EAU1B,4BAA4B,KAAK,MAAM,MAAM,EAAE,KAAK;GAClD,MAAM,EAAE,MAAM,YAAY;GAC1B,MAAM,UAAU,iBAAiB,IAAI,KAAK;GAC1C,MAAM,0BAA0B,IAAI,KAAK;AACzC,WAAQ,SAAR;IACE,KAAK;AACH,SAAI,uBAAuB,KAAK,MAAM,IAAI,CACxC,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,KAAK,OAAO,QACd,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK;AACH,SAAI,KAAK,UAAU,SAAS,QAAQ,CAClC,SAAQ,IAAI,KAAK;AAEnB;IAEF,KAAK,kBACH,QAAO,KAAK,0BAA0B,KAAK,MAAM,IAAI;IAEvD,KAAK;AACH,SAAI,kBAAkB,KAAK,MAAM,IAAI,CACnC,SAAQ,IAAI,KAAK;AAEnB;IAGF,QACE,KAAI;AACF,SAAI,IAAI,OAAO;MACb,MAAM,OAAO,GAAG,gBAAgB,UAAU,IAAI;AAC9C,YAAA,cAAoB,KAAK,IAAI;AAC7B,cAAQ,IAAI,KAAK;WAEjB,4BAA2B,SAAS,SAAS,IAAI;aAE5C,GAAG;AACV,UAAK,QAAQ,EAAE;;;AAIrB,UAAO;;;;;;;;;;EAUT,+BAA+B,KAAK,MAAM,MAAM,EAAE,KAAK;GACrD,MAAM,EAAE,MAAM,YAAY;AAC1B,OAAI,aAAa,IAAI,QAAQ,EAAE;AAC7B,QAAI,eAAe;AACnB,WAAO,KAAK,0BAA0B,KAAK,MAAM,IAAI;;GAEvD,MAAM,0BAA0B,IAAI,KAAK;AACzC,OAAI,YAAY,UAAU,YAAY,gBAAgB;IACpD,MAAM,MAAM,KAAK,4BAA4B,KAAK,MAAM,IAAI;AAC5D,QAAI,KAAK;AACP,WAAA,mBAAyB;AACzB,aAAQ,IAAI,IAAI;;;AAGpB,UAAO;;;;;;;;;;EAUT,kBAAkB,KAAK,MAAM,MAAM,EAAE,KAAK;AACxC,OAAI,KAAK,aAAa,aACpB,QAAO,KAAK,yBAAyB,KAAK,MAAM,IAAI;AAEtD,OAAI,MAAA,UAAgB,KAAK,aAAa,0BAA0B,IAAI,SAAS,kBAC3E,QAAO,KAAK,4BAA4B,KAAK,MAAM,IAAI;AAEzD,0BAAuB,IAAI,KAAK;;;;;;;;;;EAUlC,gBAAgB,QAAQ,MAAM,MAAM,EAAE,KAAK;GACzC,MAAM,UAAU,MAAA,aAAmB,MAAA,oBAA0B,MAAA;GAC7D,IAAI,SAAS,QAAQ,IAAI,OAAO;AAChC,OAAI,UAAU,OAAO,IAAI,KAAK,EAAE;IAC9B,MAAM,EAAE,YAAY,OAAO,IAAI,KAAK;AACpC,WAAO;;GAET,IAAI,YAAY;AAChB,OAAI,KAAK,aAAa,gBAAgB,UAAU,IAAI,KAAK,UAAU,CACjE,aAAY;GAEd,IAAI;GACJ,MAAM,IAAI,OAAO;AACjB,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,MAAM,OAAO,OAAO;AACpB,YAAQ,KAAK,MAAb;KACE,KAAK;KACL,KAAK;AACH,kBAAY;AACZ;KAEF,KAAK;AACH,UAAI,gBAAgB,IAAI,KAAK,KAAK,CAChC,aAAY;AAEd;KAEF;;AAGF,WAAO,KAAK,eAAe,MAAM,MAAM,IAAI,CAAC,IAAI,KAAK;AACrD,QAAI,CAAC,KACH;;AAGJ,OAAI,WAAW;AACb,QAAI,CAAC,OACH,0BAAyB,IAAI,SAAS;AAExC,WAAO,IAAI,MAAM,EACf,SAAS,MACV,CAAC;AACF,YAAQ,IAAI,QAAQ,OAAO;;AAE7B,UAAO;;;;;;;;;;EAUT,2BAA2B,UAAU,QAAQ,MAAM,EAAE,KAAK;GACxD,MAAM,SAAS,KAAK,kBAAkB,SAAS;AAC/C,gBAAa,UAAU,OAAO;GAC9B,IAAI,cAAc,OAAO,YAAY;GACrC,MAAM,wBAAwB,IAAI,KAAK;AACvC,UAAO,aAAa;AAClB,QAAI,KAAK,aAAa,QAAQ,aAAa,IAAI,CAC7C,OAAM,IAAI,YAAY;AAExB,kBAAc,OAAO,UAAU;;AAEjC,UAAO;;;;;;;;;;EAUT,wBAAwB,QAAQ,UAAU,MAAM,EAAE,KAAK;GACrD,MAAM,CAAC,MAAM,GAAG,gBAAgB;GAChC,MAAM,EAAE,MAAM,aAAa;AAC3B,WAAQ,UAAR;IACE,KAAK;AAEH,SAD6B,CAAC,MAAA,UAAgB,SAAS,aAAa,gBAAgB,MAAA,KAAW,aAAa,cAClF;MACxB,MAAM,WAAW,iBAAiB,KAAK,KAAK;MAC5C,MAAM,wBAAwB,IAAI,KAAK;MACvC,MAAM,YAAY,MAAA,KAAW,eAAe,SAAS;AACrD,UAAI,aAAa,cAAc,YAAY,SAAS,SAAS,UAAU;WAEjE,EADuB,aAAa,SAAS,MACtB,KAAK,aAAa,cAAc,WAAW,IAAI,CACxE,OAAM,IAAI,UAAU;;AAGxB,aAAO;;AAET,YAAO,KAAK,wBAAwB,UAAU,QAAQ,IAAI;IAE5D,KAAK;AAEH,gCADiB,iBAAiB,KAAK,KAAK,EACP,UAAU,IAAI;AACnD,4BAAuB,IAAI,KAAK;IAElC,QACE,QAAO,KAAK,wBAAwB,UAAU,QAAQ,IAAI;;;;;;;;;;;EAYhE,8BAA8B,MAAM,MAAM,MAAM,EAAE,KAAK;GACrD,MAAM,EAAE,WAAW;GACnB,MAAM,EAAE,eAAe;GACvB,MAAM,EAAE,QAAQ;AAChB,OAAI,QAAQ,SACV,QAAO,KAAK,qBAAqB,QAAQ,MAAM,IAAI;GAErD,MAAM,YAAY,EAAE;GACpB,IAAI,UAAU;AACd,UAAO,SAAS;AACd,QAAI,KAAK,aAAa,QAAQ,SAAS,IAAI,CACzC,WAAU,KAAK,QAAQ;AAEzB,cAAU,QAAQ;;AAEpB,OAAI,UAAU,OACZ,QAAO,IAAI,IAAI,UAAU,SAAS,CAAC;AAErC,0BAAuB,IAAI,KAAK;;;;;;;;;;EAUlC,yBAAyB,MAAM,MAAM,MAAM,EAAE,KAAK;GAChD,MAAM,EAAE,WAAW;GACnB,MAAM,EAAE,QAAQ;GAChB,MAAM,EAAE,eAAe;GACvB,MAAM,0BAA0B,IAAI,KAAK;AACzC,OAAI,QAAQ,UAAU;IACpB,IAAI,UAAU,KAAK;AACnB,WAAO,SAAS;AACd,SAAI,KAAK,aAAa,QAAQ,SAAS,IAAI,CACzC,SAAQ,IAAI,QAAQ;AAEtB,eAAU,QAAQ;;cAGhB,cAAc,KAAK,aAAa,QAAQ,YAAY,IAAI,CAC1D,SAAQ,IAAI,WAAW;AAG3B,UAAO;;;;;;;;;;EAUT,mCAAmC,MAAM,MAAM,MAAM,EAAE,KAAK;GAC1D,MAAM,EAAE,WAAW;GACnB,MAAM,EAAE,QAAQ;GAChB,MAAM,0BAA0B,IAAI,KAAK;GACzC,MAAM,UAAU,QAAQ,WAAW,KAAK,qBAAqB,KAAK;AAClE,OAAI,WAAW,KAAK,aAAa,QAAQ,SAAS,IAAI,CACpD,SAAQ,IAAI,QAAQ;AAEtB,UAAO;;;;;;;;;;EAUT,kCAAkC,MAAM,MAAM,MAAM,EAAE,KAAK;GACzD,MAAM,EAAE,WAAW;GACnB,MAAM,EAAE,QAAQ;GAChB,MAAM,0BAA0B,IAAI,KAAK;GACzC,IAAI,UAAU,QAAQ,WAAW,KAAK,qBAAqB,KAAK;AAChE,UAAO,SAAS;AACd,QAAI,KAAK,aAAa,QAAQ,SAAS,IAAI,CACzC,SAAQ,IAAI,QAAQ;AAEtB,cAAU,QAAQ,WAAW,QAAQ,qBAAqB,QAAQ;;AAEpE,UAAO;;;;;;;;;;EAUT,oBAAoB,MAAM,MAAM,MAAM,EAAE,KAAK;GAC3C,MAAM,EACJ,OAAO,EAAE,MAAM,gBACb;AACJ,WAAQ,WAAR;IACE,KAAK,IACH,QAAO,KAAK,gCAAgC,MAAM,MAAM,IAAI;IAE9D,KAAK,IACH,QAAO,KAAK,+BAA+B,MAAM,MAAM,IAAI;IAE7D,KAAK,IACH,QAAO,KAAK,sBAAsB,MAAM,MAAM,IAAI;IAGpD,QACE,QAAO,KAAK,2BAA2B,MAAM,MAAM,IAAI;;;;;;;;;;;;;;;EAgB7D,4BAA4B,QAAQ,QAAQ,YAAY;GACtD,MAAM,EAAE,cAAc,OAAO,WAAW,eAAe;GACvD,MAAM,iBAAiB,EAAE;GACzB,IAAI,cAAc,aAAa,WAAW,QAAQ,CAAC,CAAC,MAAM;AAC1D,OAAI,CAAC,YACH,QAAO,EAAE;AAEX,OAAI,YAAY,aAAa,aAC3B,eAAc,OAAO,UAAU;YACtB,gBAAgB,aAAa,gBAAgB,MAAA,KACtD,eAAc,OAAO,UAAU;GAEjC,MAAM,WAAW,EACf,MAAM,MAAA,MACP;AACD,UAAO,aAAa;AAClB,QAAI;SACE,gBAAgB,aAClB;cACS,eAAe,cAAc,CAAC,aAAa,SAAS,YAAY,CACzE;;AAGJ,QAAI,KAAK,aAAa,QAAQ,aAAa,SAAS,IAAI,gBAAgB,MAAA,MAAY;AAClF,oBAAe,KAAK,YAAY;AAChC,SAAI,eAAe,WACjB;;AAGJ,kBAAc,OAAO,UAAU;;AAEjC,UAAO;;;;;;;;;;;;EAYT,gBAAgB,QAAQ,MAAM,MAAM,EAAE,KAAK;GACzC,MAAM,EAAE,OAAO,eAAe;AAC9B,OAAI,CAAC,MAAA,WACH,OAAA,aAAmB,KAAK,kBAAkB,MAAA,KAAW;AAEvD,UAAO,KAAK,yBAAyB,MAAA,YAAkB,QAAQ;IAC7D;IACA;IACA,cAAc,MAAA;IACd,WAAW;IACZ,CAAC;;;;;;;;;;;EAWJ,mBAAmB,QAAQ,MAAM,MAAM,EAAE,KAAK;GAC5C,MAAM,EAAE,SAAS,GAAG,kBAAkB;AACtC,OAAI,SAAS;IACX,MAAM,eAAe,KAAK,aAAa,QAAQ,MAAA,MAAY,IAAI;AAC/D,QAAI,aAAa,OACf,QAAO;;AAGX,OAAI,CAAC,MAAA,WACH,OAAA,aAAmB,KAAK,kBAAkB,MAAA,KAAW;AAEvD,UAAO,KAAK,yBAAyB,MAAA,YAAkB,QAAQ;IAC7D,WAAW;IACX,GAAG;IACJ,CAAC;;;;;;;;;EASJ,cAAc,QAAQ,QAAQ,UAAU;GACtC,MAAM,UAAU;IAAE;IAAO,MAAM,MAAA;IAAY;GAC3C,MAAM,UAAU,KAAK,aAAa,QAAQ,MAAA,MAAY,QAAQ;AAE9D,UAAO;IADO,UAAU,CAAC,MAAA,KAAW,GAAG,EAAE;IAC1B;IAAS,MAAA;IAAoB;;;;;;;;;EAS9C,eAAe,QAAQ,QAAQ;GAC7B,MAAM,EAAE,YAAY;GACpB,MAAM,QAAQ,EAAE;GAChB,MAAM,UAAU,EAAE,MAAM,MAAA,MAAY;GACpC,MAAM,cAAc,KAAK,aAAa,QAAQ,MAAA,MAAY,QAAQ;AAClE,OAAI,YACF,OAAM,KAAK,MAAA,KAAW;AAExB,OAAI,CAAC,eAAe,SAAS;IAC3B,IAAI,cAAc,MAAA,KAAW;AAC7B,WAAO,aAAa;AAClB,SAAI,KAAK,aAAa,QAAQ,aAAa,QAAQ,CACjD,OAAM,KAAK,YAAY;AAEzB,mBAAc,YAAY;;;AAI9B,UAAO,CAAC,OADS,MAAM,SAAS,EACR;;;;;;;;;;EAU1B,mCAAmC,MAAM,cAAc,eAAe;GACpE,IAAI,QAAQ,EAAE;GACd,IAAI,WAAW;AACf,OAAI,eAAe,eAAe,MAAA,OAAa;IAC7C,MAAM,OAAO,GAAG,gBAAgB,UAAU,KAAK;AAC/C,UAAA,cAAoB,KAAK,IAAI;AAC7B,QAAI,aAAa,OACf,EAAC,OAAO,YAAY,KAAK,WAAW,cAAc,MAAA,MAAY;SACzD;AACL,WAAM,KAAK,MAAA,KAAW;AACtB,gBAAW;;SAGb,4BAA2B,KAAK,MAAM,KAAK,MAAM,EAAE,MAAM,MAAA,MAAY,CAAC;AAExE,UAAO;IAAE;IAAO;IAAU,SAAS;IAAO;;;;;;;;;;EAU5C,wBAAwB,MAAM,YAAY,QAAQ;GAChD,MAAM,EAAE,WAAW;GACnB,MAAM,CAAC,MAAM,GAAG,gBAAgB;GAChC,MAAM,EAAE,SAAS,YAAY;GAC7B,IAAI,QAAQ,EAAE;GACd,IAAI,WAAW;AACf,OAAI,eAAe,YACjB,EAAC,OAAO,YAAY,KAAK,WAAW,OAAO;YAClC,eAAe,cACxB,EAAC,OAAO,YAAY,KAAK,YAAY,QAAQ,EAAE,SAAS,CAAC;YAChD,eAAe,gBAAgB,MAAA,KAAW,aAAa,cAAc;IAC9E,MAAM,OAAO,MAAA,KAAW,eAAe,KAAK,KAAK;AACjD,QAAI,KACF,KAAI,aAAa;SACX,KAAK,aAAa,cAAc,MAAM,EAAE,MAAM,MAAA,MAAY,CAAC,EAAE;AAC/D,YAAM,KAAK,KAAK;AAChB,iBAAW;;WAER;AACL,WAAM,KAAK,KAAK;AAChB,gBAAW;;UAGV;AACL,YAAQ,KAAK,gBAAgB,QAAQ,MAAA,MAAY;KAAE;KAAS;KAAY,CAAC;AACzE,eAAW,MAAM,SAAS;;AAE5B,UAAO;IAAE;IAAO;IAAU,SAAS;IAAO;;;;;;;;;;EAU5C,2BAA2B,QAAQ,YAAY,QAAQ;GACrD,MAAM,EAAE,SAAS,YAAY;GAC7B,IAAI,QAAQ,EAAE;GACd,IAAI,WAAW;AACf,OAAI,eAAe,YACjB,EAAC,OAAO,YAAY,KAAK,WAAW,OAAO;YAClC,eAAe,cACxB,EAAC,OAAO,YAAY,KAAK,YAAY,QAAQ,EAAE,SAAS,CAAC;QACpD;AACL,YAAQ,KAAK,gBAAgB,QAAQ,MAAA,MAAY;KAAE;KAAS;KAAY,CAAC;AACzE,eAAW,MAAM,SAAS;;AAE5B,UAAO;IAAE;IAAO;IAAU,SAAS;IAAO;;;;;;;;;;EAU5C,0BAA0B,QAAQ,YAAY,QAAQ;GACpD,MAAM,EAAE,SAAS,YAAY;GAC7B,IAAI,QAAQ,EAAE;GACd,IAAI,WAAW;AACf,OAAI,eAAe,YACjB,EAAC,OAAO,YAAY,KAAK,WAAW,OAAO;YAClC,eAAe,cACxB,EAAC,OAAO,YAAY,KAAK,YAAY,QAAQ,EAAE,SAAS,CAAC;QACpD;AACL,YAAQ,KAAK,gBAAgB,QAAQ,MAAA,MAAY;KAAE;KAAS;KAAY,CAAC;AACzE,eAAW,MAAM,SAAS;;AAE5B,UAAO;IAAE;IAAO;IAAU,SAAS;IAAO;;;;;;;;;;EAU5C,2BAA2B,MAAM,YAAY,QAAQ;GACnD,MAAM,EAAE,WAAW;GACnB,MAAM,CAAC,MAAM,GAAG,gBAAgB;GAChC,MAAM,EAAE,SAAS,YAAY;GAC7B,IAAI,QAAQ,EAAE;GACd,IAAI,WAAW;GACf,IAAI,UAAU;AACd,OAAI,eAAe,iBAAiB,oBAAoB,KAAK,KAAK,KAAK,EAAE;IACvE,IAAI,aAAa;AACjB,QAAI,MAAA,UAAgB,MAAA,KAAW,aAAa,uBAC1C,cAAa,KAAK,4BAA4B,MAAM,MAAA,KAAW;aACtD,aAAa,UAAU,MAAA,KAAW,aAAa,aACxD,cAAa,KAAK,4BAChB,MACA,MAAA,KAAW,WACZ;AAEH,QAAI,YAAY;KACd,IAAI,OAAO;KACX,MAAM,IAAI,aAAa;AACvB,UAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;MAC1B,MAAM,aAAa,aAAa;AAChC,cAAQ,WAAW,MAAnB;OACE,KAAK;OACL,KAAK;AAKH,eAJoB,KAAK,4BACvB,YACA,WACD,KACsB;AACvB;OAEF,KAAK;AACH,eAAO,KAAK,0BACV,YACA,YACA,EAAE,CACH,CAAC,IAAI,WAAW;AACjB;OAEF,QACE,QAAO;;AAGX,UAAI,CAAC,KACH;;AAGJ,SAAI,MAAM;AACR,YAAM,KAAK,WAAW;AACtB,iBAAW;;;cAGN,eAAe,YACxB,EAAC,OAAO,YAAY,KAAK,WAAW,OAAO;YAClC,eAAe,cACxB,EAAC,OAAO,YAAY,KAAK,YAAY,QAAQ,EAAE,SAAS,CAAC;YAChD,eAAe,cAAc;AACtC,YAAQ,KAAK,gBAAgB,QAAQ,MAAA,MAAY;KAAE;KAAS;KAAY,CAAC;AACzE,eAAW,MAAM,SAAS;SAE1B,WAAU;AAEZ,UAAO;IAAE;IAAO;IAAU;IAAS;;;;;;;;;;;;EAYrC,mBAAmB,MAAM,YAAY,MAAM,EAAE,KAAK;GAChD,MAAM,EAAE,WAAW;GACnB,MAAM,CAAC,MAAM,GAAG,gBAAgB;GAChC,MAAM,EAAE,UAAU,OAAO,MAAM,aAAa;GAC5C,MAAM,UAAU,QAAQ,YAAY,MAAA,KAAW,aAAa,gBAAgB,MAAA,SAAe,MAAA;GAC3F,IAAI;AACJ,WAAQ,KAAK,MAAb;IACE,KAAK;AACH,cAAS,KAAK,gCACZ,MACA,cACA,WACD;AACD;IAEF,KAAK;AACH,cAAS,KAAK,qBAAqB,MAAM,YAAY;MACnD;MACA;MACD,CAAC;AACF;IAEF,KAAK;AACH,cAAS,KAAK,wBAAwB,QAAQ,YAAY;MACxD;MACA;MACD,CAAC;AACF;IAEF,KAAK;AACH,cAAS,KAAK,uBAAuB,QAAQ,YAAY;MACvD;MACA;MACD,CAAC;AACF;IAEF,QACE,UAAS,KAAK,wBAAwB,MAAM,YAAY;KACtD;KACA;KACD,CAAC;;AAGN,UAAO;IACL,UAAU,aAAa,SAAS;IAChC,UAAU,OAAO;IACjB,OAAO,OAAO;IACd,SAAS,OAAO;IACjB;;;;;;;;;EASH,+BAA+B,QAAQ,eAAe;GACpD,MAAM,YAAY,OAAO;GACzB,MAAM,YAAY,OAAO;GACzB,MAAM,WAAW,OAAO,YAAY;AACpC,OAAI,cAAc,EAChB,QAAO;IAAE,KAAK;IAAU,MAAM;IAAW;GAE3C,MAAM,EACJ,QAAQ,CAAC,EAAE,MAAM,WAAW,MAAM,iBAChC;GACJ,MAAM,EACJ,QAAQ,CAAC,EAAE,MAAM,UAAU,MAAM,gBAC/B;GACJ,MAAM,EAAE,OAAO,eAAe;AAC9B,OAAI,MAAA,SAAe,SAAS,SAAS,IAAI,aAAa,uBAAuB,aAAa,YACxF,QAAO;IAAE,KAAK;IAAU,MAAM;IAAU;AAE1C,OAAI,cAAc,YAChB,QAAO;IAAE,KAAK;IAAU,MAAM;IAAW;AAE3C,OAAI,cAAc,OAAO,cAAc,cACrC,QAAO;IAAE,KAAK;IAAU,MAAM;IAAU;AAE1C,OAAI,aAAa,OAAO,aAAa,cACnC,QAAO;IAAE,KAAK;IAAU,MAAM;IAAW;AAE3C,OAAI,cAAc,GAAG;AACnB,QAAI,eAAe,aACjB,QAAO;KAAE,KAAK;KAAU,MAAM;KAAU;IAE1C,MAAM,EAAE,MAAM,cAAc;AAC5B,QAAI,cAAc,OAAO,cAAc,IACrC,QAAO;KAAE,KAAK;KAAU,MAAM;KAAU;cAEjC,YAAY,KAAK,MAAA,UAAgB,eAAe,cAAc;AACvE,QAAI,aAAa,cACf,QAAO;KAAE,KAAK;KAAU,MAAM;KAAU;IAE1C,IAAI,sBAAsB;AAC1B,SAAK,MAAM,EAAE,WAAW,OACtB,KAAI,OAAO;KACT,MAAM,EAAE,MAAM,cAAc;AAC5B,2BAAsB,cAAc,OAAO,cAAc;AACzD,SAAI,CAAC,oBACH;;AAIN,QAAI,oBACF,QAAO;KAAE,KAAK;KAAU,MAAM;KAAU;;AAG5C,UAAO;IAAE,KAAK;IAAU,MAAM;IAAW;;;;;;;EAO3C,wBAAwB,iBAAiB;AACvC,OAAI,CAAC,aAAa,KAChB;AAEF,OAAI,CAAC,MAAA,WACH,OAAA,aAAmB,KAAK,kBAAkB,MAAA,KAAW;GAEvD,MAAM,SAAS,MAAA;GACf,IAAI,OAAO,MAAA;AACX,OAAI,MAAA,OACF,QAAO,MAAA;GAET,IAAI,WAAW,aAAa,MAAM,OAAO;AACzC,UAAO,UAAU;AAEf,QADsB,MAAA,KAAW,aAAa,gBAAgB,aAAa,MAAA,QAAc,MAAA,KAAW,SAAS,SAAS,CAEpH,MAAK,MAAM,eAAe,cAAc;KACtC,MAAM,EAAE,WAAW,YAAY,IAAI,OAAO;AAC1C,SAAI,KAAK,aAAa,QAAQ,UAAU,EAAE,MAAM,MAAA,MAAY,CAAC,EAAE;MAC7D,MAAM,QAAQ,YAAY,IAAI,QAAQ;AACtC,YAAA,IAAU,OAAO,WAAW;AAC5B,YAAA,IAAU,OAAO,OAAO;AACxB,YAAA,MAAY,OAAO,KAAK,SAAS;;;aAG5B,MAAA,OACT;AAEF,eAAW,OAAO,UAAU;;;;;;;;;EAShC,iBAAiB,eAAe;GAC9B,MAAM,MAAM,MAAA,IAAU,QAAQ;AAC9B,OAAI,eAAe,cAAc,eAAe,cAAc;IAC5D,MAAM,+BAA+B,IAAI,KAAK;IAC9C,IAAI,IAAI;AACR,SAAK,MAAM,EAAE,YAAY,KAAK;KAC5B,MAAM,UAAU,OAAO,SAAS;KAChC,MAAM,EAAE,KAAK,SAAS,KAAK,4BACzB,QACA,WACD;KACD,MAAM,EAAE,UAAU,UAAU,OAAO,YAAY,KAAK,gBAClD,MACA,YACA;MAAE;MAAS;MAAK,CACjB;AACD,SAAI,MAAM,QAAQ;AAChB,YAAA,IAAU,GAAG,OAAO;AACpB,YAAA,MAAY,KAAK;gBACR,QACT,cAAa,oBACK,IAAI,IAAI,CACtB,CAAC,SAAS,EAAE,EACZ,CAAC,QAAQ,KAAK,CACf,CAAC,CACH;AAEH,WAAA,IAAU,GAAG,MAAM;AACnB,WAAA,IAAU,GAAG,WAAW,YAAY,CAAC;AACrC;;AAEF,SAAK,qBAAqB,aAAa;UAClC;IACL,IAAI,IAAI;AACR,SAAK,MAAM,EAAE,YAAY,KAAK;KAC5B,MAAM,OAAO,OAAO,OAAO,SAAS;KACpC,MAAM,UAAU,OAAO,SAAS;KAChC,MAAM,MAAM;KACZ,MAAM,EAAE,UAAU,UAAU,UAAU,KAAK,gBACzC,MACA,YACA;MAAE;MAAS;MAAK,CACjB;AACD,SAAI,MAAM,QAAQ;AAChB,YAAA,IAAU,GAAG,OAAO;AACpB,YAAA,MAAY,KAAK;;AAEnB,WAAA,IAAU,GAAG,MAAM;AACnB,WAAA,IAAU,GAAG,WAAW,YAAY,CAAC;AACrC;;;AAGJ,UAAO,CAAC,MAAA,KAAW,MAAA,MAAY;;;;;;;;;;EAUjC,qBAAqB,MAAM,OAAO,QAAQ;GACxC,MAAM,MAAM,EAAE;GACd,MAAM,UAAU;IACd;IACA,MAAM,MAAA;IACP;AACD,QAAK,MAAM,QAAQ,OAAO;IACxB,MAAM,UAAU,KAAK,iBAAiB,MAAM,MAAM,QAAQ;AAC1D,QAAI,QAAQ,KACV,KAAI,KAAK,GAAG,QAAQ;;AAGxB,UAAO;;;;;;;;;;;;EAYT,kBAAkB,QAAQ,OAAO,QAAQ;GACvC,MAAM,EAAE,OAAO,UAAU;GACzB,MAAM,EAAE,OAAO,WAAW,WAAW,OAAO;GAC5C,MAAM,OAAO;IACX;IACA;IACD;GACD,MAAM,YAAY,IAAI,IAAI,KAAK,kBAAkB,MAAM,OAAO,SAAS,CAAC;AACxE,OAAI,UAAU,MAAM;AAClB,QAAI,UAAU,OAAO,SAAS,GAAG;KAC/B,MAAM,CAAC,YAAY,UAAU,UAAU;AACvC,YAAO;;AAET,WAAO,KAAK,eAAe,QAAQ,WAAW;KAC5C,OAAO;KACP,OAAO,QAAQ;KAChB,CAAC;;AAEJ,UAAO;;;;;;;;;;;EAWT,kBAAkB,QAAQ,MAAM,QAAQ;GACtC,MAAM,EAAE,UAAU;GAClB,MAAM,OAAO,OAAO;GACpB,MAAM,wBAAwB,IAAI,IAAI,CAAC,KAAK,CAAC;GAC7C,MAAM,YAAY,IAAI,IAAI,KAAK,kBAAkB,MAAM,OAAO,SAAS,CAAC;AACxE,OAAI,UAAU,MAAM;AAClB,QAAI,UAAU,EACZ,QAAO;IAET,IAAI;AACJ,SAAK,MAAM,YAAY,WAAW;AAChC,eAAU,KAAK,eAAe,QAAQ,UAAU,EAC9C,OAAO,QAAQ,GAChB,CAAC;AACF,SAAI,QACF;;AAGJ,QAAI,QACF,QAAO;;AAGX,UAAO;;;;;;;;;;EAUT,4BAA4B,QAAQ,YAAY,QAAQ;GACtD,MAAM,+BAA+B,IAAI,KAAK;GAC9C,MAAM,YAAY,OAAO;GACzB,MAAM,YAAY,YAAY;AAC9B,OAAI,QAAQ,UAAU;IACpB,MAAM,EAAE,OAAO,eAAe,OAAO;AACrC,SAAK,MAAM,QAAQ,YAAY;KAC7B,IAAI,QAAQ;KACZ,IAAI,4BAA4B,IAAI,IAAI,CAAC,KAAK,CAAC;AAC/C,UAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAAK;MAClC,MAAM,EAAE,OAAO,WAAW,WAAW,OAAO;MAC5C,MAAM,OAAO;OAAE;OAAO;OAAQ;MAC9B,MAAM,WAAW,KAAK,kBAAkB,MAAM,WAAW,IAAI;AAC7D,UAAI,SAAS,QAAQ;AACnB,WAAI,MAAM,UACR,MAAK,MAAM,YAAY,SACrB,cAAa,IAAI,SAAS;AAG9B,eAAQ;AACR,mBAAY,IAAI,IAAI,SAAS;aACxB;AACL,iBAAU,OAAO;AACjB;;;;SAKN,MAAK,MAAM,QAAQ,YAAY;IAC7B,IAAI,4BAA4B,IAAI,IAAI,CAAC,KAAK,CAAC;AAC/C,SAAK,IAAI,IAAI,YAAY,GAAG,KAAK,GAAG,KAAK;KACvC,MAAM,OAAO,OAAO;KACpB,MAAM,WAAW,KAAK,kBAAkB,MAAM,WAAW,IAAI;AAC7D,SAAI,SAAS,QAAQ;AACnB,UAAI,MAAM,EACR,cAAa,IAAI,KAAK;AAExB,kBAAY,IAAI,IAAI,SAAS;YACxB;AACL,gBAAU,OAAO;AACjB;;;;AAKR,UAAO;;;;;;;;;;;EAWT,8BAA8B,QAAQ,YAAY,KAAK,eAAe;GAEpE,MAAM,YADY,OAAO,SACK;AAC9B,OAAI,QAAQ,UAAU;IACpB,MAAM,EAAE,OAAO,eAAe,OAAO;AACrC,SAAK,MAAM,QAAQ,YAAY;KAC7B,MAAM,cAAc,KAAK,eAAe,wBAAwB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;MAC/E,OAAO;MACP,OAAO;MACR,CAAC;AACF,SAAI,YACF,KAAI,MAAA,KAAW,aAAa;UACtB,gBAAgB,MAAA,QAAc,MAAA,KAAW,SAAS,YAAY,CAChE,QAAO;WAGT,QAAO;;IAIb,MAAM,EAAE,QAAQ,gBAAgB,OAAO;IACvC,MAAM,CAAC,aAAa;AACpB,QAAI,MAAA,KAAW,SAAS,UAAU,EAAE;KAClC,IAAI,CAAC,WAAW,KAAK,gBAAgB,aAAa,WAAW,EAC3D,YACD,CAAC;AACF,YAAO,SAAS;MACd,MAAM,cAAc,KAAK,eAAe,wBAAwB,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;OAClF,OAAO;OACP,OAAO;OACR,CAAC;AACF,UAAI,YACF,KAAI,MAAA,KAAW,aAAa;WACtB,gBAAgB,MAAA,QAAc,MAAA,KAAW,SAAS,YAAY,CAChE,QAAO;YAGT,QAAO;AAGX,OAAC,WAAW,KAAK,gBAAgB,aAAa,SAAS;OACrD;OACA,OAAO;OACR,CAAC;;;UAGD;AACL,SAAK,MAAM,QAAQ,YAAY;KAC7B,MAAM,cAAc,KAAK,eAAe,QAAQ,MAAM,EACpD,OAAO,YAAY,GACpB,CAAC;AACF,SAAI,YACF,QAAO;;AAGX,QAAI,eAAe,cAAc;KAC/B,MAAM,EAAE,QAAQ,gBAAgB,OAAO;KACvC,MAAM,CAAC,aAAa;KACpB,IAAI,CAAC,WAAW,KAAK,gBAAgB,aAAa,WAAW,EAC3D,YACD,CAAC;AACF,YAAO,SAAS;AAId,UAHoB,KAAK,eAAe,QAAQ,SAAS,EACvD,OAAO,YAAY,GACpB,CAAC,CAEA,QAAO;AAET,OAAC,WAAW,KAAK,gBAAgB,aAAa,SAAS;OACrD;OACA,OAAO;OACR,CAAC;;;;AAIR,UAAO;;;;;;;EAOT,QAAQ,eAAe;GACrB,MAAM,CAAC,EAAC,GAAG,WAAW,kBAAkB,KAAK,cAAc,WAAW;GACtE,MAAM,IAAI,SAAS;GACnB,IAAI,OAAO,IAAI,KAAK,eAAe,cAAc,MAAA,SAAe,SAAS,SAAS;GAClF,IAAI,wBAAwB,IAAI,KAAK;AACrC,QAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1B,MAAM,EAAE,QAAQ,KAAK,MAAM,UAAU,SAAS;AAC9C,QAAI,CAAC,OAAO,UAAU,CAAC,MACrB;IAEF,MAAM,aAAa,eAAe;AAElC,QADkB,OAAO,SAAS,MAChB;UACX,eAAe,cAAc,eAAe,iBAAiB,MAAA,KAAW,aAAa;WACnF,MAAM,QAAQ,WACjB,KAAI,SAAS,MAAA,QAAc,MAAA,KAAW,SAAS,KAAK,EAAE;AACpD,aAAM,IAAI,KAAK;AACf,WAAI,eAAe,aACjB;;gBAIG,eAAe,WACxB,KAAI,MAAM,MAAM;AACd,WAAK,MAAM,QAAQ,WACjB,OAAM,IAAI,KAAK;AAEjB,aAAO;WAEP,SAAQ,IAAI,IAAI,WAAW;cAGzB,WAAW,OACb,OAAM,IAAI,WAAW,GAAG;eAIxB,eAAe,YAAY;KAC7B,MAAM,WAAW,KAAK,yBACpB,QACA,YACA,IACD;AACD,SAAI,MAAM,MAAM;AACd,WAAK,MAAM,WAAW,SACpB,OAAM,IAAI,QAAQ;AAEpB,aAAO;WAEP,SAAQ;WAEL;KACL,MAAM,cAAc,KAAK,2BACvB,QACA,YACA,KACA,WACD;AACD,SAAI,YACF,OAAM,IAAI,YAAY;;;AAK9B,OAAI,MAAA,OAAa;IACf,MAAM,QAAQ,CAAC,CAAC,MAAM;IACtB,IAAI;AACJ,QAAI,MAAA,cAAoB,OACtB,iBAAgB,MAAA,cAAoB,KAAK,GAAG;QAE5C,iBAAgB;AAElB,WAAO;KACL;KACA;KACA,KAAK,MAAA;KACN;;AAEH,OAAI,eAAe,gBAAgB,eAAe,WAChD,OAAM,OAAO,MAAA,KAAW;AAE1B,QAAK,QAAQ,eAAe,iBAAiB,MAAM,OAAO,EACxD,QAAO,IAAI,IAAI,UAAU,MAAM,CAAC;AAElC,UAAO;;;;;;;EAOT,UAAU,aAAa;AACrB,OAAI,aAAa,MAAA,SACf,QAAO,MAAA;AAET,UAAO,cAAc,SAAS;;;CAKlC,IAAI,YAAY;CAChB,IAAI,cAAc,MAAM;EAEtB;EACA;EACA;EACA;EACA;EACA;;;;;;;EAOA,YAAY,QAAQ,UAAU,MAAM,EAAE,EAAE;GACtC,MAAM,EAAE,aAAa;AACrB,SAAA,SAAe;AACf,SAAA,WAAiB,YAAY,OAAO;AACpC,SAAA,SAAe,IAAI,OAAO,OAAO;AACjC,SAAA,WAAiB;AACjB,SAAA,SAAe,WAAW,QAAQ,SAAS;AAC3C,SAAA,QAAc,IAAI,iBAAiB,SAAS,EAC1C,KAAK,WACN,CAAC;;;;;;EAMJ,cAAc;AACZ,SAAA,OAAa,aAAa,KAAK;;;;;;;;;EASjC,SAAS,UAAU,MAAM,MAAM,EAAE,KAAK;AACpC,OAAI,CAAC,MAAM,UAAU;IACnB,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;cAC1B,KAAK,aAAa,cAAc;IACzC,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,KAAK,WAAW;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;;GAErC,MAAM,WAAW,KAAK;AACtB,OAAI,aAAa,MAAA,YAAkB,SAAS,gBAAgB,eAAe,SAAS,mBAAmB,KAAK,YAAY;IACtH,MAAM,WAAW,SAAS;IAC1B,IAAI,gBAAgB;AACpB,QAAI,MAAA,MAAY,IAAI,SAAS,CAC3B,iBAAgB,MAAA,MAAY,IAAI,SAAS;SACpC;AACL,qBAAgB,eAAe,UAAU,YAAY;AACrD,WAAA,MAAY,IAAI,UAAU,cAAc;;AAE1C,QAAI,cACF,KAAI;KACF,MAAM,IAAI,MAAA,WAAiB,MAAA,SAAe,eAAe,KAAK,GAAG;KACjE,MAAM,QAAQ,MAAA,OAAa,MAAM,UAAU,EAAE;KAC7C,IAAI,MAAM;AACV,SAAI,OAAO;MACT,MAAM,cAAc,aAAa;AACjC,UAAI,MAAA,MAAY,IAAI,YAAY,CAC9B,OAAM,MAAA,MAAY,IAAI,YAAY;WAC7B;AACL,aAAM,MAAA,OAAa,OAAO,SAAS;AACnC,aAAA,MAAY,IAAI,aAAa,IAAI;;;AAGrC,YAAO;MACL;MACA;MACA,eAAe;MAChB;aACM,GAAG;;GAIhB,IAAI;AACJ,OAAI;AACF,QAAI,MAAA,SACF,QAAO,MAAA,SAAe,eAAe,KAAK;AAE5C,QAAI,QAAQ;AACZ,QAAI,UAAU;AACd,QAAI,OAAO;AACX,UAAA,OAAa,MAAM,UAAU,MAAM,IAAI;AACvC,UAAM,MAAA,OAAa,KAAK,YAAY;YAC7B,GAAG;AACV,UAAA,OAAa,QAAQ,GAAG,IAAI;;AAE9B,UAAO;;;;;;;;;EAST,WAAW,UAAU,MAAM,MAAM,EAAE,KAAK;AACtC,OAAI,CAAC,MAAM,UAAU;IACnB,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;cAC1B,KAAK,aAAa,cAAc;IACzC,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,KAAK,WAAW;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;;GAErC,MAAM,WAAW,KAAK;AACtB,OAAI,aAAa,MAAA,YAAkB,SAAS,gBAAgB,eAAe,SAAS,mBAAmB,KAAK,YAAY;IACtH,MAAM,WAAW,WAAW;IAC5B,IAAI,gBAAgB;AACpB,QAAI,MAAA,MAAY,IAAI,SAAS,CAC3B,iBAAgB,MAAA,MAAY,IAAI,SAAS;SACpC;AACL,qBAAgB,eAAe,UAAU,YAAY;AACrD,WAAA,MAAY,IAAI,UAAU,cAAc;;AAE1C,QAAI,cACF,KAAI;KACF,MAAM,IAAI,MAAA,WAAiB,MAAA,SAAe,eAAe,KAAK,GAAG;AAEjE,YADa,MAAA,OAAa,MAAM,UAAU,EAAE;aAErC,GAAG;;GAIhB,IAAI;AACJ,OAAI;AACF,QAAI,MAAA,SACF,QAAO,MAAA,SAAe,eAAe,KAAK;AAE5C,UAAA,OAAa,MAAM,UAAU,MAAM,IAAI;AAEvC,UADc,MAAA,OAAa,KAAK,YAAY,CAChC;YACL,GAAG;AACV,UAAA,OAAa,QAAQ,GAAG,IAAI;;AAE9B,UAAO,CAAC,CAAC;;;;;;;;;EASX,WAAW,UAAU,MAAM,MAAM,EAAE,KAAK;AACtC,OAAI,CAAC,MAAM,UAAU;IACnB,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;cAC1B,KAAK,aAAa,cAAc;IACzC,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,KAAK,WAAW;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;;GAErC,MAAM,WAAW,KAAK;AACtB,OAAI,aAAa,MAAA,YAAkB,SAAS,gBAAgB,eAAe,SAAS,mBAAmB,KAAK,YAAY;IACtH,MAAM,WAAW,WAAW;IAC5B,IAAI,gBAAgB;AACpB,QAAI,MAAA,MAAY,IAAI,SAAS,CAC3B,iBAAgB,MAAA,MAAY,IAAI,SAAS;SACpC;AACL,qBAAgB,eAAe,UAAU,cAAc;AACvD,WAAA,MAAY,IAAI,UAAU,cAAc;;AAE1C,QAAI,cACF,KAAI;KACF,MAAM,IAAI,MAAA,WAAiB,MAAA,SAAe,eAAe,KAAK,GAAG;AAEjE,YADa,MAAA,OAAa,QAAQ,UAAU,EAAE;aAEvC,GAAG;;GAIhB,IAAI;AACJ,OAAI;AACF,QAAI,MAAA,SACF,QAAO,MAAA,SAAe,eAAe,KAAK;AAE5C,UAAA,OAAa,MAAM,UAAU,MAAM,IAAI;IACvC,MAAM,QAAQ,MAAA,OAAa,KAAK,cAAc;AAC9C,QAAI,MAAM,MAAM;KACd,IAAI,UAAU;AACd,YAAO,SAAS;AACd,UAAI,MAAM,IAAI,QAAQ,EAAE;AACtB,aAAM;AACN;;AAEF,gBAAU,QAAQ;;;YAGf,GAAG;AACV,UAAA,OAAa,QAAQ,GAAG,IAAI;;AAE9B,UAAO,OAAO;;;;;;;;;EAShB,iBAAiB,UAAU,MAAM,MAAM,EAAE,KAAK;AAC5C,OAAI,CAAC,MAAM,UAAU;IACnB,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;;GAErC,IAAI;AACJ,OAAI;AACF,QAAI,MAAA,SACF,QAAO,MAAA,SAAe,eAAe,KAAK;AAE5C,UAAA,OAAa,MAAM,UAAU,MAAM,IAAI;IACvC,MAAM,QAAQ,MAAA,OAAa,KAAK,aAAa;AAC7C,QAAI,MAAM,KACR,EAAC,OAAO,CAAC,GAAG,MAAM;YAEb,GAAG;AACV,UAAA,OAAa,QAAQ,GAAG,IAAI;;AAE9B,UAAO,OAAO;;;;;;;;;;EAUhB,oBAAoB,UAAU,MAAM,MAAM,EAAE,KAAK;AAC/C,OAAI,CAAC,MAAM,UAAU;IACnB,MAAM,IAAI,IAAI,MAAA,OAAa,UAAU,mBAAmB,QAAQ,KAAK,GAAG;AACxE,WAAO,MAAA,OAAa,QAAQ,GAAG,IAAI;;GAErC,MAAM,WAAW,KAAK,aAAa,gBAAgB,OAAO,KAAK;AAC/D,OAAI,aAAa,MAAA,YAAkB,SAAS,gBAAgB,eAAe,SAAS,oBAAoB,KAAK,aAAa,0BAA0B,CAAC,KAAK,OAAO;IAC/J,MAAM,WAAW,oBAAoB;IACrC,IAAI,gBAAgB;AACpB,QAAI,MAAA,MAAY,IAAI,SAAS,CAC3B,iBAAgB,MAAA,MAAY,IAAI,SAAS;SACpC;AACL,qBAAgB,eAAe,UAAU,WAAW;AACpD,WAAA,MAAY,IAAI,UAAU,cAAc;;AAE1C,QAAI,cACF,KAAI;KACF,MAAM,IAAI,MAAA,WAAiB,MAAA,SAAe,eAAe,KAAK,GAAG;AAEjE,YADa,MAAA,OAAa,OAAO,UAAU,EAAE;aAEtC,GAAG;;GAIhB,IAAI;AACJ,OAAI;AACF,QAAI,MAAA,SACF,QAAO,MAAA,SAAe,eAAe,KAAK;AAE5C,UAAA,OAAa,MAAM,UAAU,MAAM,IAAI;IACvC,MAAM,QAAQ,MAAA,OAAa,KAAK,WAAW;AAC3C,QAAI,MAAM,KACR,OAAM,CAAC,GAAG,MAAM;YAEX,GAAG;AACV,UAAA,OAAa,QAAQ,GAAG,IAAI;;AAE9B,UAAO,OAAO,EAAE;;;;;;;;;;;;;CC7hJpB,MAAM,WAAA,iBAAA;AAEN,SAAQ,iBAAiB,MAAM,eAAe;EAC5C,cAAc;AACZ,QAAK,QAAQ,EAAE;;EAGjB,IAAI,SAAS;AACX,UAAO,KAAK,MAAM;;EAGpB,KAAK,OAAO;GACV,MAAM,SAAS,KAAK,MAAM;AAC1B,UAAO,WAAW,KAAA,IAAY,SAAS;;EAGzC,KAAK,SAAS,4BAA4B;AACxC,UAAO,KAAK,MAAM,MAAM;;EAG1B,KAAK,OAAO;GACV,MAAM,EAAE,UAAU;AAClB,OAAI,CAAC,MAAM,SAAS,MAAM,CACxB,OAAM,KAAK,MAAM;;EAIrB,QAAQ,OAAO;GACb,MAAM,EAAE,UAAU;GAElB,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAClC,OAAI,SAAS,EACX,OAAM,OAAO,OAAO,EAAE;;;;;;;CChC5B,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,eAAe;GACnB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,KAAK,OAAO;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+EAA+E,UAAU,OAAO,WACjG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,KAAK,GAAG,KAAK,CAAC;;GAGnE,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,eAAe,WAAW;GAChD,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAkB,cAAc;IAAM;IACpE,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,6BAAA;;;;;CC1SN,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,oBAAoB,cAAA,mBAAA;AAK5B,SAAQ,oBAAmB,SAAQ;EACjC,IAAI,SAAS;EACb,MAAM,WAAW,cAAc,iBAAiB,KAAK;AACrD,OAAK,MAAM,SAAS,SAClB,KAAI,MAAM,aAAa,aAEnB,MAAM,aAAa,mBACrB,WAAU,MAAM;AAGpB,SAAO;;;;;;CChBT,MAAM,eAAA,sBAAA;CACN,MAAM,EAAE,iBAAA,oBAAA;AAGR,SAAQ,iBAAiB,MAAM,YAAY;EACzC,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,UAAU,YAAY;AAC3B,QAAK,YAAY,YAAY;AAC7B,QAAK,+BAA+B,YAAY;AAChD,QAAK,SAAS;AAEd,QAAK,gBAAgB;;EAGvB,iCAAiC;AAC/B,OAAI,CAAC,KAAK,QACR,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,0EACA,gBACD,CAAC;;EAIN,IAAI,SAAS;AACX,QAAK,gCAAgC;AAErC,UAAO,KAAK,QAAQ,gBAAgB;;EAGtC,IAAI,QAAQ;AACV,QAAK,gCAAgC;AAErC,UAAO,KAAK;;EAGd,GAAG,OAAO;AACR,QAAK,gCAAgC;AAErC,OAAI,UAAU,EAGZ,MAAK,8BAA8B;OAGnC,MAAK,QAAQ,gBAAgB,gBAAgB,MAAM;;EAIvD,OAAO;AACL,QAAK,GAAG,GAAG;;EAGb,UAAU;AACR,QAAK,GAAG,EAAG;;EAGb,UAAU,MAAM,QAAQ,KAAK;AAC3B,QAAK,2BAA2B,MAAM,KAAK,OAAO;;EAEpD,aAAa,MAAM,QAAQ,KAAK;AAC9B,QAAK,2BAA2B,MAAM,KAAK,UAAU;;EAIvD,2BAA2B,MAAM,KAAK,iBAAiB;AACrD,QAAK,gCAAgC;GAIrC,IAAI,SAAS,KAAK,UAAU;AAC5B,OAAI,QAAQ,QAAQ,IAAI,SAAS,GAAG;AAClC,aAAS,KAAK,UAAU,kBAAkB,IAAI;AAE9C,QAAI,WAAW,KACb,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,iCAAiC,IAAI,OAAO,gBAAgB,4BACxD,KAAK,UAAU,mBAAmB,CAAC,KACvC,gBACD,CAAC;AAGJ,QAAI,CAAC,uBAAuB,KAAK,WAAW,OAAO,CACjD,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,GAAG,gBAAgB,2CAA2C,aAAa,OAAO,CAAC,IACnF,gBACD,CAAC;;AAON,OAAI,oBAAoB,QAAQ;AAC9B,SAAK,QAAQ,gBAAgB,mCAAmC;AAEhE,SAAK,QAAQ,gBAAgB,4BAA4B;IAEzD,MAAM,WAAW;KACf,UAAU,KAAK;KACf,aAAa;KACb,KAAK;KACN;AACD,SAAK,QAAQ,gBAAgB,0BAA0B,SAAS;AAChE,SAAK,QAAQ,gBAAgB,mBAAmB,SAAS;UACpD;IACL,MAAM,EAAE,iBAAiB,KAAK,QAAQ;AACtC,iBAAa,cAAc;AAC3B,iBAAa,MAAM;;AAOrB,QAAK,UAAU,OAAO;AACtB,QAAK,UAAU,oBAAoB;AAInC,QAAK,SAAS;AACd,QAAK,UAAU,eAAe,KAAK,QAAQ,gBAAgB;;;CAI/D,SAAS,uBAAuB,UAAU,WAAW;EACnD,MAAM,cAAc,SAAS;AAE7B,MAAI,UAAU,WAAW,YAAY,UAAU,UAAU,aAAa,YAAY,YAC9E,UAAU,aAAa,YAAY,YAAY,UAAU,SAAS,YAAY,QAC9E,UAAU,SAAS,YAAY,KACjC,QAAO;AAGT,MAAI,UAAU,WAAW,WAAW,UAAU,WAAW,OACvD,QAAO;AAGT,MAAI,UAAU,WAAW,UAAU,UAAU,SAAS,YAAY,KAChE,QAAO;AAGT,MAAI,UAAU,KAAK,KAAK,IAAI,KAAK,YAAY,KAAK,KAAK,IAAI,IAAI,UAAU,UAAU,YAAY,MAC7F,QAAO;AAGT,SAAO;;;;;;CChJT,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4BAA4B;;CAG1E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,WAAW;AAGtD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,QAAQ;GACZ,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,KAAK;IACH,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,oEAAoE;IAEvG,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,GAAG,GAAG,KAAK;;GAGxC,OAAO;IACL,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,sEAAsE;AAGzG,WAAO,QAAQ,YAAY,MAAM;;GAGnC,UAAU;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,WAAO,QAAQ,YAAY,SAAS;;GAGtC,UAAU,MAAM,OAAO;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8EAA8E,UAAU,OAAO,WAChG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,OAAO,QAAQ;MAClC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,UAAU,GAAG,KAAK;;GAG/C,aAAa,MAAM,OAAO;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,OAAO,QAAQ;MAClC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,aAAa,GAAG,KAAK;;GAGlD,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,QAAQ,WAAW;GACzC,IAAI,EAAE,YAAY,MAAM;GACxB,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;GAC/B,cAAc,EAAE,YAAY,MAAM;GAClC,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAW,cAAc;IAAM;GAC/D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,sBAAA;;;;;CC/PN,MAAM,UAAU,IAAI,aAAa;CACjC,MAAM,UAAU,IAAI,YAAY,SAAS;EAAE,WAAW;EAAO,OAAO;EAAO,CAAC;CAC5E,MAAM,oBAAoB,IAAI,YAAY,SAAS;EAAE,WAAW;EAAM,OAAO;EAAO,CAAC;CACrF,MAAM,0BAA0B,IAAI,YAAY,SAAS;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;;;;;;;;AAS1F,SAAQ,cAAa,UAAS;AAC5B,SAAO,QAAQ,OAAO,MAAM;;;;;;;;;AAU9B,SAAQ,wBAAuB,UAAS;AACtC,SAAO,kBAAkB,OAAO,MAAM;;;;;;;;;AAUxC,SAAQ,8BAA6B,UAAS;AAC5C,SAAO,wBAAwB,OAAO,MAAM;;;;;;;;;;;AAY9C,SAAQ,cAAa,WAAU;AAC7B,SAAO,QAAQ,OAAO,OAAO;;;;;;CCzD/B,MAAM,YAAA,oBAAA;CACN,MAAM,EAAE,mBAAA,yBAAA;CACR,MAAM,kBAAA,+BAAA;CACN,MAAM,EAAE,eAAA,kBAAA;CACR,MAAM,WAAA,iBAAA;AAGN,SAAQ,yBAAyB,QAAQ,cAAc;EACrD,MAAM,YAAY,UAAU,aAAa,UAAU;EACnD,MAAM,sBAAsB,UAAU,UAAU,GAAqB;EACrE,MAAM,eAAe,WAAW,UAAU,oBAAoB,oBAAoB,CAAC;AACnF,MAAI,OAAO,gBAAgB,cACzB,KAAI;AACF,UAAO,OAAO,KAAK,aAAa;WACzB,GAAG;AACV,mBAAgB,QAAQ,GAAG,UAAU;;;AAO3C,SAAQ,YAAY,QAAQ,QAAQ,UAAU;AAI5C,MAAI,CAAC,OAAO,UACV;EAIF,MAAM,aADW,SAAS,eAAe,OAAO,UAAU,CAC9B;AAE5B,MAAI,CAAC,MAAM,mBAAmB,UAAU,YAAY,QAAQ,EAAE,kBAAkB,MAAM,CAAC,EAAE;AACvF,OAAI,OAAO,aAAa,WAAW,SACjC,oBAAmB,QAAQ,QAAQ,MAAM;AAE3C;;AASF,MAAI,OAAO,WAAW,cAAc;AAClC,oBAAiB;AAEf,QAAI,OADW,QAAQ,sBAAsB,QAAQ,OAAO,KACtC,SACpB,gBAAe,QAAQ,yCAAyC;MAEjE,EAAE;AACL;;AAEF,gBAAc,OAAO;;CAIvB,SAAS,mBAAmB,QAAQ,QAAQ,OAAO;EACjD,MAAM,WAAW,SAAS,eAAe,OAAO,UAAU;AAE1D,SAAO,gBAAgB,4BAA4B;AAEnD,MAAI,CAAC,MAAM,YAGT,QAAO,gBAAgB,mCAAmC;EAE5D,MAAM,WAAW;GAAE;GAAU,KAAK;GAAQ;AAC1C,SAAO,gBAAgB,0BAA0B,SAAS;AAC1D,SAAO,gBAAgB,gBAAgB,UAAU;GAAE,mBAAmB;GAAM,aAAa,MAAM;GAAa,CAAC;;CAI/G,SAAS,cAAc,QAAQ;AAE7B,iBAAe,QAAQ,iCAAiC;;CAI1D,SAAS,UAAU,GAAG,GAAG,OAAO;AAG9B,SAFoB,UAAU,aAAa,GAAG,MAAM,iBAAiB,KACjD,UAAU,aAAa,GAAG,MAAM,iBAAiB;;;;;;CCnFvE,MAAM,YAAA,oBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,EAAE,aAAA,oBAAA;AAKR,SAAQ,iBAAiB,MAAM,aAAa;EAC1C,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,oBAAoB,YAAY;AACrC,QAAK,MAAM;AAEX,QAAK,gBAAgB;;EAGvB,IAAI,OAAO;AACT,UAAO,KAAK,kBAAkB;;EAGhC,8BAA8B,KAAK;AAGjC,UAAO,KAAK,wBAAwB,IAAI;;EAG1C,wBAAwB,KAAK,EAAE,cAAc,UAAU,EAAE,EAAE;AAGzD,YAAS,KAAK,kBAAkB,cAAc,KAAK;IAAE;IAAa,mBAAmB;IAAM,CAAC;;EAG9F,WAAW;AACT,UAAO,KAAK;;EAGd,IAAI,OAAO;AACT,UAAO,UAAU,aAAa,KAAK,KAAK;;EAE1C,IAAI,KAAK,GAAG;GACV,MAAM,SAAS,UAAU,SAAS,GAAG,EAAE,SAAS,KAAK,kBAAkB,SAAS,EAAE,CAAC;AACnF,OAAI,WAAW,KACb,OAAM,IAAI,UAAU,oBAAoB,EAAE,YAAY;AAGxD,QAAK,8BAA8B,OAAO;;EAG5C,IAAI,SAAS;AACX,UAAO,UAAU,mBAAmB,KAAK,KAAK;;EAGhD,IAAI,WAAW;AACb,UAAO,KAAK,KAAK,SAAS;;EAE5B,IAAI,SAAS,GAAG;GACd,MAAM,UAAU,EAAE,GAAG,KAAK,MAAM;AAGhC,OADwB,UAAU,cAAc,IAAI,KAAK;IAAE,KAAK;IAAS,eAAe;IAAgB,CAAC,KACjF,KACtB,OAAM,IAAI,UAAU,wDAAwD,EAAE,GAAG;AAGnF,OAAI,QAAQ,WAAW,UAAU,QAAQ,WAAW,QAClD;AAGF,QAAK,8BAA8B,QAAQ;;EAG7C,IAAI,OAAO;GACT,MAAM,MAAM,KAAK;AAEjB,OAAI,IAAI,SAAS,KACf,QAAO;AAET,OAAI,IAAI,SAAS,KACf,QAAO,UAAU,cAAc,IAAI,KAAK;AAG1C,UAAO,UAAU,cAAc,IAAI,KAAK,GAAG,MAAM,UAAU,iBAAiB,IAAI,KAAK;;EAEvF,IAAI,KAAK,GAAG;GACV,MAAM,UAAU,EAAE,GAAG,KAAK,MAAM;AAEhC,OAAI,UAAU,gBAAgB,QAAQ,CACpC;AAGF,aAAU,cAAc,GAAG;IAAE,KAAK;IAAS,eAAe;IAAQ,CAAC;AAEnE,QAAK,8BAA8B,QAAQ;;EAG7C,IAAI,WAAW;AACb,OAAI,KAAK,KAAK,SAAS,KACrB,QAAO;AAGT,UAAO,UAAU,cAAc,KAAK,KAAK,KAAK;;EAEhD,IAAI,SAAS,GAAG;GACd,MAAM,UAAU,EAAE,GAAG,KAAK,MAAM;AAEhC,OAAI,UAAU,gBAAgB,QAAQ,CACpC;AAGF,aAAU,cAAc,GAAG;IAAE,KAAK;IAAS,eAAe;IAAY,CAAC;AAEvE,QAAK,8BAA8B,QAAQ;;EAG7C,IAAI,OAAO;AACT,OAAI,KAAK,KAAK,SAAS,KACrB,QAAO;AAGT,UAAO,UAAU,iBAAiB,KAAK,KAAK,KAAK;;EAEnD,IAAI,KAAK,GAAG;GACV,MAAM,UAAU,EAAE,GAAG,KAAK,MAAM;AAEhC,OAAI,UAAU,gCAAgC,QAAQ,CACpD;AAGF,aAAU,cAAc,GAAG;IAAE,KAAK;IAAS,eAAe;IAAQ,CAAC;AAEnE,QAAK,8BAA8B,QAAQ;;EAG7C,IAAI,WAAW;AACb,UAAO,UAAU,cAAc,KAAK,KAAK;;EAE3C,IAAI,SAAS,GAAG;GACd,MAAM,UAAU,EAAE,GAAG,KAAK,MAAM;AAEhC,OAAI,UAAU,gBAAgB,QAAQ,CACpC;AAGF,WAAQ,OAAO,EAAE;AACjB,aAAU,cAAc,GAAG;IAAE,KAAK;IAAS,eAAe;IAAc,CAAC;AAEzE,QAAK,8BAA8B,QAAQ;;EAG7C,IAAI,SAAS;AACX,OAAI,KAAK,KAAK,UAAU,QAAQ,KAAK,KAAK,UAAU,GAClD,QAAO;AAGT,UAAO,MAAM,KAAK,KAAK;;EAEzB,IAAI,OAAO,GAAG;GACZ,MAAM,UAAU,EAAE,GAAG,KAAK,MAAM;AAEhC,OAAI,MAAM,GACR,SAAQ,QAAQ;QACX;IACL,MAAM,QAAQ,EAAE,OAAO,MAAM,EAAE,UAAU,EAAE,GAAG;AAC9C,YAAQ,QAAQ;AAChB,cAAU,cAAc,OAAO;KAC7B,KAAK;KACL,eAAe;KACf,kBAAkB,KAAK,kBAAkB;KAC1C,CAAC;;AAGJ,QAAK,8BAA8B,QAAQ;;EAG7C,IAAI,OAAO;AACT,OAAI,KAAK,KAAK,aAAa,QAAQ,KAAK,KAAK,aAAa,GACxD,QAAO;AAGT,UAAO,MAAM,KAAK,KAAK;;EAEzB,IAAI,KAAK,GAAG;GACV,MAAM,UAAU,EAAE,GAAG,KAAK,MAAM;GAEhC,MAAM,QAAQ,EAAE,OAAO,MAAM,EAAE,UAAU,EAAE,GAAG;AAC9C,WAAQ,WAAW;AACnB,aAAU,cAAc,OAAO;IAAE,KAAK;IAAS,eAAe;IAAY,CAAC;AAE3E,OAAI,QAAQ,aAAa,KAAK,KAAK,SACjC;AAGF,QAAK,8BAA8B,QAAQ;;EAG7C,OAAO,KAAK;GAEV,MAAM,YAAY,KAAK,kBAAkB,kBAAkB,IAAI;AAE/D,OAAI,cAAc,KAChB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,uCAAuC,IAAI,8BAA8B,KAAK,kBAAkB,IAAI,IACpG,cACD,CAAC;AAGJ,QAAK,wBAAwB,UAAU;;EAGzC,QAAQ,KAAK;GAEX,MAAM,YAAY,KAAK,kBAAkB,kBAAkB,IAAI;AAE/D,OAAI,cAAc,KAChB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,uCAAuC,IAAI,8BAA8B,KAAK,kBAAkB,IAAI,IACpG,cACD,CAAC;AAGJ,QAAK,wBAAwB,WAAW,EAAE,aAAa,MAAM,CAAC;;EAGhE,SAAS;AAEP,YAAS,KAAK,kBAAkB,cAAc,KAAK,MADrC;IAAE,SAAS;IAAM,iBAAiB;IAAM,mBAAmB;IAAM,CAChB;;;;;;;CC9NnE,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,6BAA6B;;CAG3E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,YAAY;AAGvD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;CAGtC,SAAS,gBAAgB,cAAc;EACrC,IAAI,eAAe,gBAAgB,IAAI,aAAa;AACpD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,OAAO,OAAO,KAAK;AAClC,SAAM,OAAO,cAAc;IACzB,OAAO,KAAK;KACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,SAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2EAA2E,UAAU,OAAO,WAC7F;KAEH,MAAM,OAAO,EAAE;KACf;MACE,IAAI,SAAS,UAAU;AACvB,eAAS,YAAY,aAAa,QAAQ;OACxC,SAAS;OACT,SAAS;OACV,CAAC;AACF,WAAK,KAAK,OAAO;;AAEnB,YAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;IAE5C,QAAQ,KAAK;KACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,SAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;KAEH,MAAM,OAAO,EAAE;KACf;MACE,IAAI,SAAS,UAAU;AACvB,eAAS,YAAY,aAAa,QAAQ;OACxC,SAAS;OACT,SAAS;OACV,CAAC;AACF,WAAK,KAAK,OAAO;;AAEnB,YAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;;IAE7C,SAAS;KACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,YAAO,QAAQ,YAAY,QAAQ;;IAErC,IAAI,OAAO;KACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,YAAO,QAAQ,YAAY;;IAE7B,IAAI,KAAK,GAAG;KACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,UAAU;;IAEhC,WAAW;KACT,MAAM,UAAU;AAChB,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,YAAO,QAAQ,YAAY;;IAE7B,IAAI,SAAS;KACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6EACD;AAGH,YAAO,QAAQ,YAAY;;IAE7B,IAAI,WAAW;KACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,YAAO,QAAQ,YAAY;;IAE7B,IAAI,SAAS,GAAG;KACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,cAAc;;IAEpC,IAAI,OAAO;KACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,YAAO,QAAQ,YAAY;;IAE7B,IAAI,KAAK,GAAG;KACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,UAAU;;IAEhC,IAAI,WAAW;KACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,YAAO,QAAQ,YAAY;;IAE7B,IAAI,SAAS,GAAG;KACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,cAAc;;IAEpC,IAAI,OAAO;KACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,YAAO,QAAQ,YAAY;;IAE7B,IAAI,KAAK,GAAG;KACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,UAAU;;IAEhC,IAAI,WAAW;KACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,YAAO,QAAQ,YAAY;;IAE7B,IAAI,SAAS,GAAG;KACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,cAAc;;IAEpC,IAAI,SAAS;KACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6EACD;AAGH,YAAO,QAAQ,YAAY;;IAE7B,IAAI,OAAO,GAAG;KACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6EACD;AAGH,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,YAAY;;IAElC,IAAI,OAAO;KACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,YAAO,QAAQ,YAAY;;IAE7B,IAAI,KAAK,GAAG;KACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,SAAI,YAAY,aAAa,GAAG;MAC9B,SAAS;MACT,SAAS;MACV,CAAC;AAEF,aAAQ,YAAY,UAAU;;IAEjC,CAAC;AACF,UAAO,iBAAiB,cAAc;IACpC,QAAQ;KAAE,cAAc;KAAO,UAAU;KAAO;IAChD,SAAS;KAAE,cAAc;KAAO,UAAU;KAAO;IACjD,QAAQ;KAAE,cAAc;KAAO,UAAU;KAAO;IAChD,MAAM,EAAE,cAAc,OAAO;IAC7B,UAAU;KAAE,cAAc;KAAO,UAAU;KAAO;IAClD,QAAQ,EAAE,cAAc,OAAO;IAC/B,UAAU,EAAE,cAAc,OAAO;IACjC,MAAM,EAAE,cAAc,OAAO;IAC7B,UAAU,EAAE,cAAc,OAAO;IACjC,MAAM,EAAE,cAAc,OAAO;IAC7B,UAAU,EAAE,cAAc,OAAO;IACjC,QAAQ,EAAE,cAAc,OAAO;IAC/B,MAAM,EAAE,cAAc,OAAO;IAC9B,CAAC;AACF,mBAAgB,IAAI,cAAc,aAAa;;AAEjD,SAAO;;AAGT,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,OAAO,SAAS,gBAAgB,aAAa,CAAC;;AAGtD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,kCAAkB,IAAI,SAAS;CACrC,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,SAAS;GACb,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,SAAS,WAAW,GAAG,OAAO,cAAc;GAAE,OAAO;GAAY,cAAc;GAAM,EAAE,CAAC;AAChH,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,uBAAA;;;;;AC/YN,QAAO,UAAU,MAAM,gBAAgB;EACrC,cAAc;AACZ,QAAK,0BAAU,IAAI,KAAK;AACxB,QAAK,0BAAU,IAAI,SAAS;AAC5B,QAAK,wBAAwB,IAAI,sBAAsB,EAAE,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC;;EAG1F,IAAI,OAAO;AACT,OAAI,CAAC,KAAK,QAAQ,IAAI,MAAM,EAAE;IAC5B,MAAM,MAAM,IAAI,QAAQ,MAAM;AAC9B,SAAK,QAAQ,IAAI,OAAO,IAAI;AAC5B,SAAK,QAAQ,IAAI,IAAI;AACrB,SAAK,sBAAsB,SAAS,OAAO;KAAE;KAAK,KAAK,KAAK;KAAS,EAAE,IAAI;;AAG7E,UAAO;;EAGT,OAAO,OAAO;GACZ,MAAM,MAAM,KAAK,QAAQ,IAAI,MAAM;AACnC,OAAI,CAAC,IACH,QAAO;AAGT,QAAK,QAAQ,OAAO,MAAM;AAC1B,QAAK,QAAQ,OAAO,IAAI;AACxB,QAAK,sBAAsB,WAAW,IAAI;AAC1C,UAAO;;EAGT,IAAI,OAAO;AACT,UAAO,KAAK,QAAQ,IAAI,MAAM;;EAGhC,EAAG,OAAO,YAAY;AACpB,QAAK,MAAM,OAAO,KAAK,SAAS;IAC9B,MAAM,QAAQ,IAAI,OAAO;AACzB,QAAI,UAAU,KAAA,EACZ;AAEF,UAAM;;;;;;;;CC3CZ,MAAM,eAAA,sBAAA;CACN,MAAM,cAAA,eAAA;AAEN,SAAQ,gBAAgB;AACxB,SAAQ,gBAAgB;AACxB,SAAQ,cAAc;AAEtB,SAAQ,UAAU,8BAA8B,aAAa;AAC3D,MAAI,6BAA6B,QAC/B,OAAM,aAAa,OAAO,6BAA6B,eAAe,CACpE,4BACA,oBACD,CAAC;AAKJ,MAAI,EAAG,KAFG,SAAS,WAAW,IAEb,6BAA6B,YAC5C,QAAO,QAAQ;EAIjB,MAAM,EAAE,WAAW;AAEnB,MAAI,WAAW,KACb,QAAO,QAAQ;AAGjB,+BAA6B,UAAU;EAEvC,IAAI;AAGJ,MAAI;AACF,YAAS,OAAO,SAAS;YACjB;AACR,gCAA6B,UAAU;;AAGzC,WAAS,YAAY,kBAAkB,OAAO;AAE9C,SAAO;;;;;;CCxCT,MAAM,eAAA,sBAAA;CACN,MAAM,EAAE,QAAQ,eAAe,eAAe,gBAAA,iBAAA;CAE9C,MAAM,QAAQ;CACd,MAAM,OAAO;CACb,MAAM,OAAO;CACb,MAAM,WAAW;AAEjB,SAAQ,iBAAiB,MAAM,eAAe;EAC5C,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,UAAU;AACf,QAAK,OAAO,YAAY;AACxB,QAAK,cAAc,KAAK;AACxB,QAAK,aAAa,YAAY;AAC9B,QAAK,SAAS,YAAY;AAE1B,QAAK,gBAAgB;;EAGvB,IAAI,cAAc;AAChB,UAAO,KAAK;;EAGd,IAAI,YAAY,MAAM;AACpB,OAAI,SAAS,KACX,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,kCAAkC,oBAAoB,CAAC;AAGxG,QAAK,eAAe;;EAGtB,aAAa;GACX,IAAI,OAAO,KAAK;AAChB,UAAO,SAAS,QAAQ,SAAS,KAAK,MAAM;AAC1C,WAAO,KAAK;AAEZ,QAAI,SAAS,QAAQ,OAAO,MAAM,KAAK,KAAK,cAC1C,QAAQ,KAAK,eAAe;;AAGhC,UAAO;;EAGT,aAAa;AACX,UAAO,KAAK,kBAAkB,MAAM;;EAGtC,YAAY;AACV,UAAO,KAAK,kBAAkB,KAAK;;EAGrC,kBAAkB;AAChB,UAAO,KAAK,kBAAkB,SAAS;;EAGzC,cAAc;AACZ,UAAO,KAAK,kBAAkB,KAAK;;EAGrC,eAAe;GACb,IAAI,OAAO,KAAK;AAEhB,UAAO,SAAS,KAAK,MAAM;IACzB,IAAI,UAAU,KAAK;AAEnB,WAAO,YAAY,MAAM;AACvB,YAAO;KACP,IAAI,SAAS,OAAO,MAAM,KAAK;AAE/B,YAAO,WAAW,iBAAiB,KAAK,eAAe,EAAE;AACvD,aAAO,KAAK;AACZ,eAAS,OAAO,MAAM,KAAK;;AAG7B,SAAI,WAAW,cACb,QAAQ,KAAK,eAAe;AAG9B,eAAU,KAAK;;AAGjB,QAAI,SAAS,KAAK,QAAQ,KAAK,eAAe,KAC5C,QAAO;AAGT,WAAO,KAAK;AAEZ,QAAI,OAAO,MAAM,KAAK,KAAK,cACzB,QAAQ,KAAK,eAAe;;AAIhC,UAAO;;EAGT,WAAW;GACT,IAAI,OAAO,KAAK;GAChB,IAAI,SAAS;AAEb,YAAS;AACP,WAAO,WAAW,iBAAiB,KAAK,eAAe,EAAE;AACvD,YAAO,KAAK;AACZ,cAAS,OAAO,MAAM,KAAK;AAC3B,SAAI,WAAW,cACb,QAAQ,KAAK,eAAe;;AAIhC,OAAG;AACD,SAAI,SAAS,KAAK,KAChB,QAAO;KAGT,MAAM,UAAU,KAAK;AAErB,SAAI,YAAY,MAAM;AACpB,aAAO;AACP;;AAGF,YAAO,KAAK;aACL,SAAS;AAElB,QAAI,SAAS,KACX,QAAO;AAGT,aAAS,OAAO,MAAM,KAAK;AAE3B,QAAI,WAAW,cACb,QAAQ,KAAK,eAAe;;;EAKlC,kBAAkB,MAAM;GACtB,IAAI,OAAO,KAAK;AAChB,UAAO,SAAS,QAAQ,KAAK,aAAa,KAAK;AAE/C,OAAI,SAAS,KACX,QAAO;AAGT,QAAM,UAAS;IACb,MAAM,SAAS,OAAO,MAAM,KAAK;AAEjC,QAAI,WAAW,cACb,QAAQ,KAAK,eAAe;AAG9B,QAAI,WAAW,aAAa;KAC1B,MAAM,QAAQ,SAAS,QAAQ,KAAK,aAAa,KAAK;AAEtD,SAAI,UAAU,MAAM;AAClB,aAAO;AACP;;;AAIJ,aAAS;KACP,MAAM,UAAU,SAAS,QAAQ,KAAK,cAAc,KAAK;AAEzD,SAAI,YAAY,MAAM;AACpB,aAAO;AACP,eAAS;;KAGX,MAAM,SAAS,KAAK;AAEpB,SAAI,WAAW,QAAQ,WAAW,KAAK,QAAQ,WAAW,KAAK,aAC7D,QAAO;AAGT,YAAO;;;;EAKb,kBAAkB,MAAM;GACtB,IAAI,OAAO,KAAK;AAEhB,OAAI,SAAS,KAAK,KAChB,QAAO;AAGT,YAAS;IACP,IAAI,UAAU,SAAS,OAAO,KAAK,cAAc,KAAK;AAEtD,WAAO,YAAY,MAAM;AACvB,YAAO;KACP,MAAM,SAAS,OAAO,MAAM,KAAK;AAEjC,SAAI,WAAW,cACb,QAAQ,KAAK,eAAe;AAG9B,eAAU,SAAS,OAAO,KAAK,aAAa,KAAK;AAEjD,SAAI,WAAW,iBAAiB,YAAY,KAC1C,WAAU,SAAS,OAAO,KAAK,cAAc,KAAK;;AAItD,WAAO,KAAK;AAEZ,QAAI,SAAS,QAAQ,SAAS,KAAK,KACjC,QAAO;AAGT,QAAI,OAAO,MAAM,KAAK,KAAK,cACzB,QAAO;;;;;;;;AClNK,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,OAAA,cAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,WAAW;GACf,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,aAAa;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY,CAAC;;GAGlE,aAAa;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY,CAAC;;GAGlE,YAAY;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW,CAAC;;GAGjE,kBAAkB;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB,CAAC;;GAGvE,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,CAAC;;GAGnE,eAAe;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,CAAC;;GAGpE,WAAW;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU,CAAC;;GAGhE,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,cAAc,MAAM,cAAc;AAC7C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;MAC3D;;GAGJ,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,KAAK,QAAQ,cAAc,GAAG,EAChC,SAAS,gFACV,CAAC;AAEF,YAAQ,YAAY,iBAAiB;;;AAGzC,SAAO,iBAAiB,WAAW,WAAW;GAC5C,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,WAAW,EAAE,YAAY,MAAM;GAC/B,iBAAiB,EAAE,YAAY,MAAM;GACrC,aAAa,EAAE,YAAY,MAAM;GACjC,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GAClE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;CC7PN,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,QAAQ,kBAAA,iBAAA;AAEhB,SAAQ,iBAAiB,MAAM,iBAAiB;EAC9C,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,UAAU;AACf,QAAK,OAAO,YAAY;AACxB,QAAK,aAAa,YAAY;AAC9B,QAAK,SAAS,YAAY;AAE1B,QAAK,iBAAiB,KAAK;AAC3B,QAAK,8BAA8B;AAEnC,QAAK,gBAAgB;;EAGvB,IAAI,gBAAgB;AAClB,UAAO,KAAK;;EAGd,IAAI,6BAA6B;AAC/B,UAAO,KAAK;;EAGd,WAAW;AACT,UAAO,KAAK,UAAU,OAAO;;EAG/B,eAAe;AACb,UAAO,KAAK,UAAU,WAAW;;EAGnC,SAAS;EAKT,kBAAkB,iBAAiB;AAEjC,OAAI,CAAC,gBAAgB,SAAS,KAAK,eAAe,IAAI,oBAAoB,KAAK,KAC7E;AAGF,OAAI,KAAK,6BAA6B;IACpC,IAAI,OAAO;IACX,IAAI,mBAAmB,cAAc,UAAU,iBAAiB,EAAE,cAAc,MAAM,CAAC;AACvF,WAAO,qBAAqB,MAAM;AAChC,SAAI,KAAK,KAAK,SAAS,iBAAiB,EAAE;AACxC,aAAO;AACP;;AAEF,wBAAmB,cAAc,UAAU,kBAAkB,EAAE,cAAc,MAAM,CAAC;;AAGtF,QAAI,SAAS,MAAM;AACjB,UAAK,iBAAiB;AACtB;;AAGF,SAAK,8BAA8B;;GAGrC,MAAM,EAAE,oBAAoB;AAC5B,QAAK,iBAAiB,oBAAoB,OACpB,gBAAgB,aAChB,cAAc,wBAAwB,gBAAgB,gBAAgB;;EAG9F,UAAU,WAAW;GACnB,IAAI,OAAO,KAAK;GAChB,IAAI,aAAa,KAAK;AAEtB,UAAO,MAAM;AACX,QAAI,cAAc,QAAQ;AACxB,SAAI,CAAC,YAAY;AACf,aAAO,cAAc,UAAU,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAEzD,UAAI,CAAC,KACH,QAAO;;AAIX,kBAAa;eACJ,cAAc,YAAY;AACnC,SAAI,YAAY;AACd,aAAO,cAAc,UAAU,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAEzD,UAAI,CAAC,KACH,QAAO;;AAIX,kBAAa;;AAIf,QADe,OAAO,MAAM,KAAK,KAClB,cACb;;AAIJ,QAAK,iBAAiB;AACtB,QAAK,8BAA8B;AACnC,UAAO;;;;;;;ACtGS,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,iCAAiC;;CAG/E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,gBAAgB;AAG3D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,aAAa;GACjB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,WAAW;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU,CAAC;;GAGhE,eAAe;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,CAAC;;GAGpE,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY,QAAQ;;GAGrC,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,cAAc,MAAM,cAAc;AAC7C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;MAC3D;;GAGJ,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,6BAA6B;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;;AAGjE,SAAO,iBAAiB,aAAa,WAAW;GAC9C,UAAU,EAAE,YAAY,MAAM;GAC9B,cAAc,EAAE,YAAY,MAAM;GAClC,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;GAC1B,eAAe,EAAE,YAAY,MAAM;GACnC,4BAA4B,EAAE,YAAY,MAAM;GAChD,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAgB,cAAc;IAAM;GACpE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,2BAAA;;;;;CC3MN,IAAM,oBAAN,MAAwB;EACtB,YAAY,cAAc,MAAM,aAAa;GAC3C,MAAM,EAAE,OAAO,QAAQ;AAEvB,QAAK,SAAS;AACd,QAAK,OAAO;AAEZ,QAAK,gBAAgB;;EAIvB,IAAI,iBAAiB;AACnB,UAAO,KAAK,OAAO;;EAIrB,IAAI,cAAc;AAChB,UAAO,KAAK,OAAO;;EAIrB,IAAI,eAAe;AACjB,UAAO,KAAK,KAAK;;EAInB,IAAI,YAAY;AACd,UAAO,KAAK,KAAK;;EAInB,IAAI,YAAY;GACd,MAAM,EAAE,QAAQ,SAAS;AACzB,UAAO,OAAO,SAAS,KAAK,QAAQ,OAAO,WAAW,KAAK;;;AAI/D,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;ACxCmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,cAAc;GAClB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,cAAc,WAAW;GAC/C,gBAAgB,EAAE,YAAY,MAAM;GACpC,aAAa,EAAE,YAAY,MAAM;GACjC,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CCxKN,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,UAAU,aAAa,wBAAA,gBAAA;CAI/B,SAAS,8BAA8B,KAAK,KAAK;EAC/C,MAAM,EAAE,MAAM,OAAO,QAAQ,YAAY;EACzC,MAAM,EAAE,MAAM,OAAO,QAAQ,YAAY;AAEzC,MAAI,SAAS,MAAM,KAAK,SAAS,MAAM,CACrC,OAAM,IAAI,MAAM,6DAA6D;AAG/E,MAAI,UAAU,OAAO;AACnB,OAAI,YAAY,QACd,QAAO;YACE,UAAU,QACnB,QAAO;AAGT,UAAO;;AAGT,MAAI,YAAY,OAAO,MAAM,CAC3B,QAAO,8BAA8B,KAAK,IAAI,KAAK,KAAK,IAAI;AAG9D,MAAI,oBAAoB,OAAO,MAAM,EAAE;GACrC,IAAI,QAAQ;AAEZ,UAAO,cAAc,OAAO,MAAM,KAAK,MACrC,SAAQ,cAAc,OAAO,MAAM;AAGrC,OAAI,cAAc,MAAM,MAAM,GAAG,QAC/B,QAAO;;AAIX,SAAO;;AAGT,QAAO,UAAU,EACf,+BACD;;;;;CC5CD,MAAM,eAAA,sBAAA;CAEN,MAAM,EAAE,UAAA,cAAA;CACR,MAAM,YAAA,mBAAA;CACN,MAAM,EAAE,kBAAA,kBAAA;CAER,MAAM,EAAE,YAAA,oBAAA;CACR,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,kCAAA,wBAAA;CACR,MAAM,EAAE,UAAU,YAAY,wBAAA,gBAAA;CAC9B,MAAM,EAAE,kBAAA,wBAAA;CAER,MAAM,oBAAA,4BAAA,CAAoD;CAE1D,MAAM,QAAA,eAAA;CACN,MAAM,mBAAA,0BAAA;CACN,MAAM,EAAE,mBAAA,iBAAA;CAER,MAAM,wBAAwB;EAC5B,gBAAgB;EAChB,cAAc;EACd,YAAY;EACZ,cAAc;EACf;CAED,IAAM,YAAN,cAAwB,kBAAkB;EACxC,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAKtC,QAAK,WAAW,IAAI,QAAQ,KAAK;GAEjC,MAAM,uBAAuB;IAC3B,MAAM,eAAe,aAAa,UAAU;IAC5C,QAAQ;IACT;GAED,MAAM,EACJ,QAAQ,sBACR,MAAM,yBACJ;AAEJ,QAAK,mBAAmB,MAAM,MAAM,MAAM,OAAO;AACjD,QAAK,iBAAiB,IAAI,MAAM,IAAI,OAAO;;EAI7C,IAAI,0BAA0B;GAC5B,MAAM,EAAE,QAAQ,SAAS;AAEzB,QAAK,MAAM,aAAa,cAAc,kBAAkB,OAAO,KAAK,CAClE,KAAI,oBAAoB,WAAW,KAAK,KAAK,CAC3C,QAAO;AAIX,UAAO;;EAIT,SAAS,MAAM,QAAQ;AACrB,yBAAsB,MAAM,MAAM,OAAO;;EAI3C,OAAO,MAAM,QAAQ;AACnB,uBAAoB,MAAM,MAAM,OAAO;;EAIzC,eAAe,MAAM;GACnB,MAAM,SAAS,cAAc,OAAO,KAAK;AAEzC,OAAI,CAAC,OACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,iCAAiC,uBAAuB,CAAC;AAG1G,yBAAsB,MAAM,QAAQ,cAAc,MAAM,KAAK,CAAC;;EAIhE,cAAc,MAAM;GAClB,MAAM,SAAS,cAAc,OAAO,KAAK;AAEzC,OAAI,CAAC,OACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,iCAAiC,uBAAuB,CAAC;AAG1G,yBAAsB,MAAM,QAAQ,cAAc,MAAM,KAAK,GAAG,EAAE;;EAIpE,aAAa,MAAM;GACjB,MAAM,SAAS,cAAc,OAAO,KAAK;AAEzC,OAAI,CAAC,OACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,iCAAiC,uBAAuB,CAAC;AAG1G,uBAAoB,MAAM,QAAQ,cAAc,MAAM,KAAK,CAAC;;EAI9D,YAAY,MAAM;GAChB,MAAM,SAAS,cAAc,OAAO,KAAK;AAEzC,OAAI,CAAC,OACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,iCAAiC,uBAAuB,CAAC;AAG1G,uBAAoB,MAAM,QAAQ,cAAc,MAAM,KAAK,GAAG,EAAE;;EAIlE,SAAS,SAAS;AAChB,OAAI,QACF,MAAK,iBAAiB,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO;OAE3D,MAAK,mBAAmB,KAAK,KAAK,MAAM,KAAK,KAAK,OAAO;;EAK7D,WAAW,MAAM;AACf,yBAAsB,MAAM,KAAK;;EAInC,mBAAmB,MAAM;AACvB,OAAI,KAAK,aAAa,UAAU,mBAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,sDACA,uBACD,CAAC;GAGJ,MAAM,SAAS,WAAW,KAAK;AAE/B,QAAK,mBAAmB,MAAM,EAAE;AAChC,QAAK,iBAAiB,MAAM,OAAO;;EAIrC,sBAAsB,KAAK,aAAa;AACtC,OACE,QAAQ,sBAAsB,kBAC9B,QAAQ,sBAAsB,gBAC9B,QAAQ,sBAAsB,cAC9B,QAAQ,sBAAsB,aAI9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAF9B,oHAEwC,oBAAoB,CAAC;AAG/E,OAAI,KAAK,UAAU,YAAY,MAC7B,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,4CAA4C,qBAAqB,CAAC;GAGnH,IAAI,WAAW;AACf,OAAI,QAAQ,sBAAsB,gBAAgB;AAChD,gBAAY,KAAK;AACjB,iBAAa,YAAY;cAChB,QAAQ,sBAAsB,cAAc;AACrD,gBAAY,KAAK;AACjB,iBAAa,YAAY;cAChB,QAAQ,sBAAsB,YAAY;AACnD,gBAAY,KAAK;AACjB,iBAAa,YAAY;UACpB;AACL,gBAAY,KAAK;AACjB,iBAAa,YAAY;;AAG3B,UAAO,8BAA8B,WAAW,WAAW;;EAI7D,iBAAiB;AACf,OAAI,KAAK,UACP;GAGF,MAAM,EAAE,QAAQ,eAAe,MAAM,gBAAgB;AAErD,OACE,cAAc,SAAS,YAAY,SAEjC,cAAc,KAAK,aAAa,UAAU,aAC1C,cAAc,KAAK,aAAa,UAAU,+BAC1C,cAAc,KAAK,aAAa,UAAU,eAE5C;AACA,kBAAc,KAAK,YAAY,cAAc,QAAQ,YAAY,SAAS,cAAc,QAAQ,GAAG;AACnG;;GAGF,MAAM,gBAAgB,EAAE;GACxB,IAAI,cAAc,KAAK,OAAO;GAC9B,MAAM,UAAU,mBAAmB,KAAK,KAAK,KAAK;AAClD,UAAO,eAAe,gBAAgB,SAAS;AAC7C,QACE,YAAY,aAAa,KAAK,IAC9B,CAAC,YAAY,cAAc,OAAO,YAAY,EAAE,KAAK,CAErD,eAAc,KAAK,YAAY;AAGjC,kBAAc,cAAc,UAAU,YAAY;;GAGpD,IAAI,SAAS;AACb,OAAI,oBAAoB,cAAc,MAAM,YAAY,KAAK,EAAE;AAC7D,cAAU,cAAc;AACxB,gBAAY,cAAc;UACrB;IACL,IAAI,gBAAgB,cAAc;AAElC,WACE,iBACA,CAAC,oBAAoB,cAAc,OAAO,cAAc,EAAE,YAAY,KAAK,CAE3E,iBAAgB,cAAc,OAAO,cAAc;AAGrD,cAAU,cAAc,OAAO,cAAc;AAC7C,gBAAY,cAAc,MAAM,cAAc,GAAG;;AAGnD,OACE,cAAc,KAAK,aAAa,UAAU,aAC1C,cAAc,KAAK,aAAa,UAAU,+BAC1C,cAAc,KAAK,aAAa,UAAU,aAE1C,eAAc,KAAK,YAAY,cAAc,QAAQ,WAAW,cAAc,KAAK,GAAG,cAAc,QAAQ,GAAG;AAGjH,QAAK,MAAM,QAAQ,cACF,eAAc,OAAO,KAAK,CAClC,YAAY,KAAK;AAG1B,OACE,YAAY,KAAK,aAAa,UAAU,aACxC,YAAY,KAAK,aAAa,UAAU,+BACxC,YAAY,KAAK,aAAa,UAAU,aAExC,aAAY,KAAK,YAAY,GAAG,YAAY,QAAQ,GAAG;AAGzD,QAAK,mBAAmB,SAAS,UAAU;AAC3C,QAAK,iBAAiB,SAAS,UAAU;;EAI3C,kBAAkB;AAChB,UAAO,aAAa,KAAK;;EAI3B,gBAAgB;AACd,UAAO,WAAW,KAAK;;EAIzB,WAAW,MAAM;AACf,qBAAkB,MAAM,KAAK;;EAI/B,iBAAiB,WAAW;GAC1B,IAAI,OAAO,KAAK;GAChB,MAAM,UAAU,mBAAmB,KAAK;AACxC,UAAO,SAAS,SAAS;AACvB,QAAI,KAAK,aAAa,UAAU,aAAa,qBAAqB,MAAM,KAAK,CAC3E,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,qDACA,oBACD,CAAC;AAGJ,WAAO,cAAc,UAAU,KAAK;;AAGtC,OACE,UAAU,aAAa,UAAU,iBACjC,UAAU,aAAa,UAAU,sBACjC,UAAU,aAAa,UAAU,uBAEjC,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,yBAAyB,uBAAuB,CAAC;GAGlG,MAAM,WAAW,aAAa,KAAK;AAEnC,UAAO,cAAc,WAAW,UAAU,CACxC,WAAU,YAAY,cAAc,WAAW,UAAU,CAAC;AAG5D,qBAAkB,WAAW,KAAK;AAElC,aAAU,YAAY,SAAS;AAE/B,yBAAsB,WAAW,KAAK;;EAIxC,aAAa;GACX,MAAM,EAAE,QAAQ,MAAM,kBAAkB;AAExC,UAAO,MAAM,WAAW,eAAe,EAAE,EAAE;IACzC,OAAO;KAAE,MAAM,OAAO;KAAM,QAAQ,OAAO;KAAQ;IACnD,KAAK;KAAE,MAAM,KAAK;KAAM,QAAQ,KAAK;KAAQ;IAC9C,CAAC;;EAIJ,SAAS;EAKT,eAAe,MAAM,QAAQ;AAC3B,OAAI,SAAS,KAAK,KAAK,KAAK,MAC1B,QAAO;AAGT,4BAAyB,MAAM,OAAO;GAEtC,MAAM,KAAK;IAAE;IAAM;IAAQ;AAE3B,OACE,8BAA8B,IAAI,KAAK,OAAO,KAAK,MACnD,8BAA8B,IAAI,KAAK,KAAK,KAAK,EAEjD,QAAO;AAGT,UAAO;;EAIT,aAAa,MAAM,QAAQ;AACzB,OAAI,SAAS,KAAK,KAAK,KAAK,MAC1B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,0DACA,qBACD,CAAC;AAGJ,4BAAyB,MAAM,OAAO;GAEtC,MAAM,KAAK;IAAE;IAAM;IAAQ;AAC3B,OAAI,8BAA8B,IAAI,KAAK,OAAO,KAAK,GACrD,QAAO;YACE,8BAA8B,IAAI,KAAK,KAAK,KAAK,EAC1D,QAAO;AAGT,UAAO;;EAIT,eAAe,MAAM;AACnB,OAAI,SAAS,KAAK,KAAK,KAAK,MAC1B,QAAO;GAGT,MAAM,SAAS,cAAc,OAAO,KAAK;AACzC,OAAI,CAAC,OACH,QAAO;GAGT,MAAM,SAAS,cAAc,MAAM,KAAK;AAExC,UACE,8BAA8B;IAAE,MAAM;IAAQ;IAAQ,EAAE,KAAK,KAAK,KAAK,MACvE,8BAA8B;IAAE,MAAM;IAAQ,QAAQ,SAAS;IAAG,EAAE,KAAK,OAAO,KAAK;;EAKzF,WAAW;GACT,IAAI,IAAI;GACR,MAAM,EAAE,QAAQ,SAAS;AAEzB,OAAI,OAAO,SAAS,KAAK,QAAQ,OAAO,KAAK,aAAa,UAAU,UAClE,QAAO,OAAO,KAAK,KAAK,MAAM,OAAO,QAAQ,KAAK,OAAO;AAG3D,OAAI,OAAO,KAAK,aAAa,UAAU,UACrC,MAAK,OAAO,KAAK,KAAK,MAAM,OAAO,OAAO;GAG5C,IAAI,cAAc,OAAO;GACzB,MAAM,UAAU,mBAAmB,KAAK,KAAK;AAC7C,UAAO,eAAe,gBAAgB,SAAS;AAC7C,QAAI,YAAY,aAAa,UAAU,aAAa,YAAY,aAAa,KAAK,CAChF,MAAK,YAAY;AAGnB,kBAAc,cAAc,UAAU,YAAY;;AAGpD,OAAI,KAAK,KAAK,aAAa,UAAU,UACnC,MAAK,KAAK,KAAK,KAAK,MAAM,GAAG,KAAK,OAAO;AAG3C,UAAO;;EAIT,yBAAyB,UAAU;GACjC,MAAM,EAAE,SAAS,KAAK;GAEtB,IAAI;AACJ,WAAQ,KAAK,UAAb;IACE,KAAK,UAAU;IACf,KAAK,UAAU;AACb,eAAU;AACV;IAEF,KAAK,UAAU;AACb,eAAU;AACV;IAEF,KAAK,UAAU;IACf,KAAK,UAAU;AACb,eAAU,KAAK;AACf;IAEF,QACE,OAAM,IAAI,MAAM,2CAA2C;;AAG/D,OACE,YAAY,QACV,QAAQ,eAAe,iBAAiB,UACxC,QAAQ,eAAe,UACvB,QAAQ,kBAAkB,QAG5B,WAAU,cAAc,KAAK,gBAAgB,QAAQ,QAAQ;AAG/D,UAAO,cAAc,UAAU,QAAQ;;EAIzC,IAAI,QAAQ;AACV,UAAO,SAAS,KAAK,OAAO,KAAK;;EAGnC,mBAAmB,MAAM,QAAQ;AAC/B,OACE,KAAK,UACL,KAAK,OAAO,SAAS,QACrB,KAAK,OAAO,SAAS,KAAK,KAAK,KAE/B,MAAK,OAAO,KAAK,kBAAkB,OAAO,KAAK,SAAS;AAG1D,OAAI,CAAC,KAAK,kBAAkB,IAAI,KAAK,SAAS,CAC5C,MAAK,kBAAkB,IAAI,KAAK,SAAS;AAG3C,QAAK,SAAS;IACZ;IACA;IACD;;EAGH,iBAAiB,MAAM,QAAQ;AAC7B,OACE,KAAK,QACL,KAAK,KAAK,SAAS,QACnB,KAAK,KAAK,SAAS,KAAK,OAAO,KAE/B,MAAK,KAAK,KAAK,kBAAkB,OAAO,KAAK,SAAS;AAGxD,OAAI,CAAC,KAAK,kBAAkB,IAAI,KAAK,SAAS,CAC5C,MAAK,kBAAkB,IAAI,KAAK,SAAS;AAG3C,QAAK,OAAO;IACV;IACA;IACD;;;CAKL,SAAS,mBAAmB,MAAM;AAChC,SAAO,QAAQ,CAAC,cAAc,YAAY,KAAK,CAC7C,QAAO,cAAc,OAAO,KAAK;AAGnC,MAAI,CAAC,KACH,QAAO;AAGT,SAAO,cAAc,YAAY,KAAK;;CAIxC,SAAS,yBAAyB,MAAM,QAAQ;AAC9C,MAAI,KAAK,aAAa,UAAU,mBAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,sDACA,uBACD,CAAC;AAGJ,MAAI,SAAS,WAAW,KAAK,CAC3B,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,wBAAwB,iBAAiB,CAAC;;CAG7F,SAAS,sBAAsB,OAAO,MAAM,QAAQ;AAClD,2BAAyB,MAAM,OAAO;EAEtC,MAAM,KAAK;GAAE;GAAM;GAAQ;AAC3B,MACE,SAAS,KAAK,KAAK,MAAM,SACzB,8BAA8B,IAAI,MAAM,KAAK,KAAK,EAElD,OAAM,iBAAiB,MAAM,OAAO;AAGtC,QAAM,mBAAmB,MAAM,OAAO;;CAExC,SAAS,oBAAoB,OAAO,MAAM,QAAQ;AAChD,2BAAyB,MAAM,OAAO;EAEtC,MAAM,KAAK;GAAE;GAAM;GAAQ;AAC3B,MACE,SAAS,KAAK,KAAK,MAAM,SACzB,8BAA8B,IAAI,MAAM,OAAO,KAAK,GAEpD,OAAM,mBAAmB,MAAM,OAAO;AAGxC,QAAM,iBAAiB,MAAM,OAAO;;CAItC,SAAS,sBAAsB,MAAM,OAAO;EAC1C,MAAM,SAAS,cAAc,OAAO,KAAK;AAEzC,MAAI,CAAC,OACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,iCAAiC,uBAAuB,CAAC;EAG1G,MAAM,QAAQ,cAAc,MAAM,KAAK;AAEvC,QAAM,mBAAmB,QAAQ,MAAM;AACvC,QAAM,iBAAiB,QAAQ,QAAQ,EAAE;;CAI3C,SAAS,YAAY,MAAM,OAAO;EAChC,MAAM,EAAE,QAAQ,SAAS;AACzB,SACE,8BAA8B;GAAE;GAAM,QAAQ;GAAG,EAAE,OAAO,KAAK,KAC/D,8BAA8B;GAAE;GAAM,QAAQ,WAAW,KAAK;GAAE,EAAE,KAAK,KAAK;;CAKhF,SAAS,qBAAqB,MAAM,OAAO;EACzC,MAAM,EAAE,QAAQ,SAAS;AACzB,SACG,oBAAoB,MAAM,OAAO,KAAK,IAAI,CAAC,oBAAoB,MAAM,KAAK,KAAK,IAC/E,CAAC,oBAAoB,MAAM,OAAO,KAAK,IAAI,oBAAoB,MAAM,KAAK,KAAK;;CAKpF,SAAS,kBAAkB,MAAM,OAAO;EACtC,MAAM,EAAE,MAAM,WAAW,QAAQ,gBAAgB,MAAM;AAEvD,MACE,UAAU,aAAa,UAAU,+BACjC,UAAU,aAAa,UAAU,gBAChC,UAAU,aAAa,UAAU,aAAa,CAAC,cAAc,OAAO,UAAU,IAC/E,SAAS,UAET,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,uBAAuB,wBAAwB,CAAC;EAGjG,IAAI,gBAAgB,UAAU,aAAa,UAAU,YACnD,YACA,cAAc,gBAAgB,UAAU,CAAC,gBAAgB;EAC3D,MAAM,SAAS,CAAC,gBACd,YACA,cAAc,OAAO,cAAc;AAErC,SAAO,mBAAmB,MAAM,cAAc;AAE9C,MAAI,UAAU,aAAa,UAAU,UACnC,iBAAgB,UAAU,UAAU,YAAY;AAGlD,MAAI,SAAS,cACX,iBAAgB,cAAc,YAAY,cAAc;EAG1D,MAAM,aAAa,cAAc,OAAO,KAAK;AAC7C,MAAI,WACF,YAAW,YAAY,KAAK;EAG9B,IAAI,YAAY,CAAC,gBAAgB,WAAW,OAAO,GAAG,cAAc,MAAM,cAAc;AACxF,eAAa,KAAK,aAAa,UAAU,yBAAyB,WAAW,KAAK,GAAG;AAErF,SAAO,aAAa,MAAM,cAAc;AAExC,MAAI,MAAM,UACR,OAAM,iBAAiB,QAAQ,UAAU;;CAK7C,SAAS,WAAW,OAAO;EACzB,MAAM,EAAE,QAAQ,eAAe,MAAM,aAAa,kBAAkB;EAEpE,MAAM,WAAW,iBAAiB,WAAW,eAAe,EAAE,EAAE,EAC9D,eAAe,cAAc,KAAK,gBACnC,CAAC;AAEF,MAAI,MAAM,UACR,QAAO;AAGT,MACE,cAAc,SAAS,YAAY,SAEjC,cAAc,KAAK,aAAa,UAAU,aAC1C,cAAc,KAAK,aAAa,UAAU,+BAC1C,cAAc,KAAK,aAAa,UAAU,eAE5C;GACA,MAAM,SAAS,MAAM,cAAc,KAAK;AACxC,UAAO,QAAQ,OAAO,cAAc,cAAc,QAAQ,YAAY,SAAS,cAAc,OAAO;AAEpG,YAAS,YAAY,OAAO;AAE5B,UAAO;;EAGT,IAAI,iBAAiB,cAAc;AACnC,SAAO,CAAC,oBAAoB,gBAAgB,YAAY,KAAK,CAC3D,kBAAiB,cAAc,OAAO,eAAe;EAGvD,IAAI,6BAA6B;AACjC,MAAI,CAAC,oBAAoB,cAAc,MAAM,YAAY,KAAK,EAAE;GAC9D,IAAI,YAAY,cAAc,WAAW,eAAe;AACxD,UAAO,CAAC,4BAA4B;AAClC,QAAI,qBAAqB,WAAW,MAAM,CACxC,8BAA6B;AAG/B,gBAAY,cAAc,YAAY,UAAU;;;EAIpD,IAAI,8BAA8B;AAClC,MAAI,CAAC,oBAAoB,YAAY,MAAM,cAAc,KAAK,EAAE;GAC9D,IAAI,YAAY,cAAc,UAAU,eAAe;AACvD,UAAO,CAAC,6BAA6B;AACnC,QAAI,qBAAqB,WAAW,MAAM,CACxC,+BAA8B;AAGhC,gBAAY,cAAc,gBAAgB,UAAU;;;EAIxD,MAAM,oBAAoB,cAAc,gBAAgB,eAAe,CACpE,QAAO,SAAQ,YAAY,MAAM,MAAM,CAAC;AAG3C,MAD2B,kBAAkB,MAAK,SAAQ,KAAK,aAAa,UAAU,mBAAmB,CAEvG,OAAM,aAAa,OAAO,MAAM,eAAe,CAAC,kCAAkC,wBAAwB,CAAC;AAG7G,MACE,+BAA+B,SAE7B,2BAA2B,aAAa,UAAU,aAClD,2BAA2B,aAAa,UAAU,+BAClD,2BAA2B,aAAa,UAAU,eAEpD;GACA,MAAM,SAAS,MAAM,cAAc,KAAK;AACxC,UAAO,QAAQ,OAAO,cAAc,cAAc,QAAQ,WAAW,cAAc,KAAK,GAAG,cAAc,OAAO;AAEhH,YAAS,YAAY,OAAO;aACnB,+BAA+B,MAAM;GAC9C,MAAM,SAAS,MAAM,2BAA2B;AAChD,YAAS,YAAY,OAAO;GAO5B,MAAM,cAAc,WALH,MAAM,WAAW,eAAe,EAAE,EAAE;IACnD,OAAO;KAAE,MAAM,cAAc;KAAM,QAAQ,cAAc;KAAQ;IACjE,KAAK;KAAE,MAAM;KAA4B,QAAQ,WAAW,2BAA2B;KAAE;IAC1F,CAAC,CAEsC;AACxC,UAAO,YAAY,YAAY;;AAGjC,OAAK,MAAM,kBAAkB,mBAAmB;GAC9C,MAAM,SAAS,MAAM,gBAAgB,KAAA,GAAW,KAAK;AACrD,YAAS,YAAY,OAAO;;AAG9B,MACE,gCAAgC,SAE9B,4BAA4B,aAAa,UAAU,aACnD,4BAA4B,aAAa,UAAU,+BACnD,4BAA4B,aAAa,UAAU,eAErD;GACA,MAAM,SAAS,MAAM,YAAY,KAAK;AACtC,UAAO,QAAQ,OAAO,cAAc,GAAG,YAAY,OAAO;AAE1D,YAAS,YAAY,OAAO;aACnB,gCAAgC,MAAM;GAC/C,MAAM,SAAS,MAAM,4BAA4B;AACjD,YAAS,YAAY,OAAO;GAO5B,MAAM,cAAc,WALH,MAAM,WAAW,eAAe,EAAE,EAAE;IACnD,OAAO;KAAE,MAAM;KAA6B,QAAQ;KAAG;IACvD,KAAK;KAAE,MAAM,YAAY;KAAM,QAAQ,YAAY;KAAQ;IAC5D,CAAC,CAEsC;AACxC,UAAO,YAAY,YAAY;;AAGjC,SAAO;;CAIT,SAAS,aAAa,OAAO;EAC3B,MAAM,EAAE,QAAQ,eAAe,MAAM,aAAa,kBAAkB;EAEpE,MAAM,WAAW,iBAAiB,WAAW,eAAe,EAAE,EAAE,EAC9D,eAAe,cAAc,KAAK,gBACnC,CAAC;AAEF,MAAI,MAAM,UACR,QAAO;AAGT,MACE,cAAc,SAAS,YAAY,SAEjC,cAAc,KAAK,aAAa,UAAU,aAC1C,cAAc,KAAK,aAAa,UAAU,+BAC1C,cAAc,KAAK,aAAa,UAAU,eAE5C;GACA,MAAM,SAAS,MAAM,cAAc,KAAK;AACxC,UAAO,QAAQ,OAAO,cAAc,cAAc,QAAQ,YAAY,SAAS,cAAc,OAAO;AAEpG,YAAS,YAAY,OAAO;AAC5B,iBAAc,KAAK,YAAY,cAAc,QAAQ,YAAY,SAAS,cAAc,QAAQ,GAAG;AAEnG,UAAO;;EAGT,IAAI,iBAAiB,cAAc;AACnC,SAAO,CAAC,oBAAoB,gBAAgB,YAAY,KAAK,CAC3D,kBAAiB,cAAc,OAAO,eAAe;EAGvD,IAAI,6BAA6B;AACjC,MAAI,CAAC,oBAAoB,cAAc,MAAM,YAAY,KAAK,EAAE;GAC9D,IAAI,YAAY,cAAc,WAAW,eAAe;AACxD,UAAO,CAAC,4BAA4B;AAClC,QAAI,qBAAqB,WAAW,MAAM,CACxC,8BAA6B;AAG/B,gBAAY,cAAc,YAAY,UAAU;;;EAIpD,IAAI,8BAA8B;AAClC,MAAI,CAAC,oBAAoB,YAAY,MAAM,cAAc,KAAK,EAAE;GAC9D,IAAI,YAAY,cAAc,UAAU,eAAe;AACvD,UAAO,CAAC,6BAA6B;AACnC,QAAI,qBAAqB,WAAW,MAAM,CACxC,+BAA8B;AAGhC,gBAAY,cAAc,gBAAgB,UAAU;;;EAIxD,MAAM,oBAAoB,cAAc,gBAAgB,eAAe,CACpE,QAAO,SAAQ,YAAY,MAAM,MAAM,CAAC;AAG3C,MAD2B,kBAAkB,MAAK,SAAQ,KAAK,aAAa,UAAU,mBAAmB,CAEvG,OAAM,aAAa,OAAO,MAAM,eAAe,CAAC,kCAAkC,wBAAwB,CAAC;EAG7G,IAAI,SAAS;AACb,MAAI,oBAAoB,cAAc,MAAM,YAAY,KAAK,EAAE;AAC7D,aAAU,cAAc;AACxB,eAAY,cAAc;SACrB;GACL,IAAI,gBAAgB,cAAc;AAElC,UACE,iBACA,CAAC,oBAAoB,cAAc,OAAO,cAAc,EAAE,YAAY,KAAK,CAE3E,iBAAgB,cAAc,OAAO,cAAc;AAGrD,aAAU,cAAc,OAAO,cAAc;AAC7C,eAAY,cAAc,MAAM,cAAc,GAAG;;AAGnD,MACE,+BAA+B,SAE7B,2BAA2B,aAAa,UAAU,aAClD,2BAA2B,aAAa,UAAU,+BAClD,2BAA2B,aAAa,UAAU,eAEpD;GACA,MAAM,SAAS,MAAM,cAAc,KAAK;AACxC,UAAO,QAAQ,OAAO,cAAc,cAAc,QAAQ,WAAW,cAAc,KAAK,GAAG,cAAc,OAAO;AAEhH,YAAS,YAAY,OAAO;AAE5B,iBAAc,KAAK,YAAY,cAAc,QAAQ,WAAW,cAAc,KAAK,GAAG,cAAc,QAAQ,GAAG;aACtG,+BAA+B,MAAM;GAC9C,MAAM,SAAS,MAAM,2BAA2B;AAChD,YAAS,YAAY,OAAO;GAO5B,MAAM,cAAc,aALH,MAAM,WAAW,eAAe,EAAE,EAAE;IACnD,OAAO;KAAE,MAAM,cAAc;KAAM,QAAQ,cAAc;KAAQ;IACjE,KAAK;KAAE,MAAM;KAA4B,QAAQ,WAAW,2BAA2B;KAAE;IAC1F,CAAC,CAEwC;AAC1C,UAAO,YAAY,YAAY;;AAGjC,OAAK,MAAM,kBAAkB,kBAC3B,UAAS,YAAY,eAAe;AAGtC,MACE,gCAAgC,SAE9B,4BAA4B,aAAa,UAAU,aACnD,4BAA4B,aAAa,UAAU,+BACnD,4BAA4B,aAAa,UAAU,eAErD;GACA,MAAM,SAAS,MAAM,YAAY,KAAK;AACtC,UAAO,QAAQ,OAAO,cAAc,GAAG,YAAY,OAAO;AAE1D,YAAS,YAAY,OAAO;AAE5B,eAAY,KAAK,YAAY,GAAG,YAAY,QAAQ,GAAG;aAC9C,gCAAgC,MAAM;GAC/C,MAAM,SAAS,MAAM,4BAA4B;AACjD,YAAS,YAAY,OAAO;GAO5B,MAAM,cAAc,aALH,MAAM,WAAW,eAAe,EAAE,EAAE;IACnD,OAAO;KAAE,MAAM;KAA6B,QAAQ;KAAG;IACvD,KAAK;KAAE,MAAM,YAAY;KAAM,QAAQ,YAAY;KAAQ;IAC5D,CAAC,CAEwC;AAC1C,UAAO,YAAY,YAAY;;AAGjC,QAAM,mBAAmB,SAAS,UAAU;AAC5C,QAAM,iBAAiB,SAAS,UAAU;AAE1C,SAAO;;AAGT,QAAO,UAAU;EACf,gBAAgB;EAEhB;EACA;EACD;;;;;CCn4BD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,OAAA,cAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,gBAAA,uBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,0BAA0B;;CAGxE,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,SAAS;AAGpD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,gBAAc,eAAe,SAAS,aAAa;;AAGrD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,cAAc,aAAa,cAAc;GAC7C,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,SAAS,MAAM,QAAQ;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAG3G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2EAA2E,UAAU,OAAO,WAC7F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,wDACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,SAAS,GAAG,KAAK;;GAG9C,OAAO,MAAM,QAAQ;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,sEAAsE;AAGzG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yEAAyE,UAAU,OAAO,WAC3F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAAE,SAAS,sDAAsD,CAAC;AAC9G,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,eAAe,MAAM;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,gFAAgF,UAAU,OAAO,WAClG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,8DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,eAAe,GAAG,KAAK;;GAGpD,cAAc,MAAM;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+EAA+E,UAAU,OAAO,WACjG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,6DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,cAAc,GAAG,KAAK;;GAGnD,aAAa,MAAM;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8EAA8E,UAAU,OAAO,WAChG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,4DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,aAAa,GAAG,KAAK;;GAGlD,YAAY,MAAM;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,6EAA6E,UAAU,OAAO,WAC/F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,2DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,YAAY,GAAG,KAAK;;GAGjD,WAAW;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;IAE3G,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,SAAS,GAAG,KAAK;;GAG9C,WAAW,MAAM;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,0DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;;GAGhD,mBAAmB,MAAM;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,kEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,mBAAmB,GAAG,KAAK;;GAGxD,sBAAsB,KAAK,aAAa;IACtC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wFAAwF,UAAU,OAAO,WAC1G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,kBAAkB,QAAQ;MAC7C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,QAAQ,QAAQ,cAAc,QAAQ,EAC7C,SAAS,qEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,sBAAsB,GAAG,KAAK;;GAG3D,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,gBAAgB;cACnC;AACR,+DAA0D,aAAa;;;GAI3E,kBAAkB;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB,CAAC;cAC7D;AACR,+DAA0D,aAAa;;;GAI3E,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe,CAAC;cAC3D;AACR,+DAA0D,aAAa;;;GAI3E,WAAW,MAAM;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,0DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;cACtC;AACR,+DAA0D,aAAa;;;GAI3E,iBAAiB,WAAW;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kFAAkF,UAAU,OAAO,WACpG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,gEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;cAC5C;AACR,+DAA0D,aAAa;;;GAI3E,aAAa;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY,CAAC;;GAGlE,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,sEAAsE;AAGzG,WAAO,QAAQ,YAAY,QAAQ;;GAGrC,eAAe,MAAM,QAAQ;IAC3B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,8DACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,eAAe,GAAG,KAAK;;GAGpD,aAAa,MAAM,QAAQ;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+EAA+E,UAAU,OAAO,WACjG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,4DACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,aAAa,GAAG,KAAK;;GAGlD,eAAe,MAAM;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,gFAAgF,UAAU,OAAO,WAClG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,8DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,eAAe,GAAG,KAAK;;GAGpD,WAAW;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAG3G,WAAO,QAAQ,YAAY,UAAU;;GAGvC,yBAAyB,UAAU;IACjC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,0FAA0F,UAAU,OAAO,WAC5G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,yBAAyB,GAAG,KAAK,CAAC;cAC7E;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,0BAA0B;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,2BAA2B;;;AAGlF,SAAO,iBAAiB,MAAM,WAAW;GACvC,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,gBAAgB,EAAE,YAAY,MAAM;GACpC,eAAe,EAAE,YAAY,MAAM;GACnC,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,YAAY,EAAE,YAAY,MAAM;GAChC,oBAAoB,EAAE,YAAY,MAAM;GACxC,uBAAuB,EAAE,YAAY,MAAM;GAC3C,gBAAgB,EAAE,YAAY,MAAM;GACpC,iBAAiB,EAAE,YAAY,MAAM;GACrC,eAAe,EAAE,YAAY,MAAM;GACnC,YAAY,EAAE,YAAY,MAAM;GAChC,kBAAkB,EAAE,YAAY,MAAM;GACtC,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,gBAAgB,EAAE,YAAY,MAAM;GACpC,cAAc,EAAE,YAAY,MAAM;GAClC,gBAAgB,EAAE,YAAY,MAAM;GACpC,UAAU,EAAE,YAAY,MAAM;GAC9B,0BAA0B,EAAE,YAAY,MAAM;GAC9C,yBAAyB,EAAE,YAAY,MAAM;IAC5C,OAAO,cAAc;IAAE,OAAO;IAAS,cAAc;IAAM;GAC5D,gBAAgB;IAAE,OAAO;IAAG,YAAY;IAAM;GAC9C,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5C,YAAY;IAAE,OAAO;IAAG,YAAY;IAAM;GAC1C,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC7C,CAAC;AACF,SAAO,iBAAiB,OAAO;GAC7B,gBAAgB;IAAE,OAAO;IAAG,YAAY;IAAM;GAC9C,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5C,YAAY;IAAE,OAAO;IAAG,YAAY;IAAM;GAC1C,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC7C,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,oBAAA;;;;;CChoBN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,cAAA,qBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,cAAY,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAEhE;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KAAE,SAAS,UAAU;KAA2B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC5BT,MAAM,cAAA,sBAAA,CAAwC;CAC9C,MAAM,uBAAA,8BAAA;CAEN,IAAM,uBAAN,cAAmC,YAAY;EAC7C,qBAAqB,MAAM,SAAS,YAAY,MAAM,MAAM;AAC1D,OAAI,KAAK,cACP;AAGF,QAAK,YAAY,MAAM,SAAS,YAAY,MAAM,EAAE;AACpD,QAAK,OAAO;;;AAGhB,sBAAqB,cAAc,qBAAqB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAErF,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCjBD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,uBAAA,8BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,UAAA,iBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,UAAQ,eAAe,SAAS,aAAa;;AAG/C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,QAAQ;GAClD,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yEAAyE,UAAU,OAAO,WAC3F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,qBAAqB,QAAQ,cAAc,QAAQ,EAC1D,SAAS,uDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,qBAAqB,SAAS;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iGAAiG,UAAU,OAAO,WACnH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,MAAM,kBAAkB,OAAO;SAG1C,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,qBAAqB,GAAG,KAAK;;GAG1D,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,sBAAsB,EAAE,YAAY,MAAM;GAC1C,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCxNN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,OAAO,OAAO;KAAE,SAAS,UAAU;KAA6B,SAAS;KAAc,CAAC;AAE5G,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC5BT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,kBAAA,yBAAA;CAEN,IAAM,kBAAN,cAA8B,UAAU;EACtC,gBAAgB,MAAM,SAAS,YAAY,QAAQ;AACjD,OAAI,KAAK,cACP;AAGF,QAAK,UAAU,MAAM,SAAS,WAAW;AACzC,QAAK,SAAS;;;AAGlB,iBAAgB,cAAc,gBAAgB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE3E,QAAO,UAAU,EACf,gBAAgB,iBACjB;;;;;CClBD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,kBAAA,yBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,oBAAoB,aAAa,MAAM;GAC3C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oEAAoE,UAAU,OAAO,WACtF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,gBAAgB,QAAQ,cAAc,QAAQ,EACrD,SAAS,kDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,gBAAgB,MAAM;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,OAAO,QAAQ;MAClC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,gBAAgB,GAAG,KAAK;;GAGrD,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,YAAY,WAAW;GAC7C,iBAAiB,EAAE,YAAY,MAAM;GACrC,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAe,cAAc;IAAM;GACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CC3MN,MAAM,cAAA,eAAA;AACQ,kBAAA;AAEd,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAAwB,SAAS;KAAc,CAAC;AAE5G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAAwB,SAAS;KAAc,CAAC;AAE5G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAAwB,SAAS;KAAc,CAAC;AAE5G,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCzDT,MAAM,cAAA,eAAA;AACQ,kBAAA;AAEd,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA4B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA2B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA4B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCzDT,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,oCAAA,2CAAA;CACN,MAAM,oCAAA,2CAAA;CACN,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,kCAAkC,QAAQ,cAAc,OAAO,EACrE,SAAS,UAAU,mCACpB,CAAC;AAEF,QAAI,OAAO;;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,kCAAkC,QAAQ,cAAc,OAAO,EACrE,SAAS,UAAU,mDACpB,CAAC;AAEF,QAAI,OAAO;;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA+B,SAAS;KAAc,CAAC;AAEjH,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,kCAAkC,QAAQ,cAAc,OAAO,EACrE,SAAS,UAAU,mCACpB,CAAC;AAEF,QAAI,OAAO;;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CClET,IAAM,oCAAN,MAAwC;AAExC,QAAO,UAAU,EACf,gBAAgB,mCACjB;;;;;CCJD,IAAM,oCAAN,MAAwC;AAExC,QAAO,UAAU,EACf,gBAAgB,mCACjB;;;;;CCJD,MAAM,YAAA,oBAAA,CAAoC;CAC1C,MAAM,EAAE,gBAAgB,sCAAA,4CAAA;CAExB,MAAM,EAAE,gBAAgB,sCAAA,4CAAA;CAGxB,IAAM,wBAAN,cAAoC,UAAU;EAC5C,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;GAEtC,MAAM,gBAAgB,KAAK;AAE3B,QAAK,eAAe;AACpB,OAAI,eAAe,cAAc;IAC/B,MAAM,YAAY,IAAI,kCAAkC,cAAc,EAAE,EAAE,EAAE,CAAC;AAC7E,cAAU,IAAI,cAAc,aAAa;AACzC,cAAU,IAAI,cAAc,aAAa;AACzC,cAAU,IAAI,cAAc,aAAa;AACzC,SAAK,eAAe;;AAGtB,QAAK,+BAA+B;AACpC,OAAI,eAAe,8BAA8B;IAC/C,MAAM,aAAa,IAAI,kCAAkC,cAAc,EAAE,EAAE,EAAE,CAAC;AAC9E,eAAW,IAAI,cAAc,6BAA6B;AAC1D,eAAW,IAAI,cAAc,6BAA6B;AAC1D,eAAW,IAAI,cAAc,6BAA6B;AAC1D,SAAK,+BAA+B;;AAGtC,QAAK,eAAe;AACpB,OAAI,eAAe,cAAc;IAC/B,MAAM,UAAU,IAAI,kCAAkC,cAAc,EAAE,EAAE,EAAE,CAAC;AAC3E,YAAQ,QAAQ,cAAc,aAAa;AAC3C,YAAQ,OAAO,cAAc,aAAa;AAC1C,YAAQ,QAAQ,cAAc,aAAa;AAC3C,SAAK,eAAe;;AAGtB,QAAK,WAAW,eAAe,YAAY;;;AAG/C,uBAAsB,cAAc,OAAO,OAAO,KAAK;AAEvD,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CC9CD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wBAAA,+BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,MAAM;GACjD,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,0EAA0E,UAAU,OAAO,WAC5F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,sBAAsB,QAAQ,cAAc,QAAQ,EAC3D,SAAS,wDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,+BAA+B;IACjC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4GACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gCAAgC;;GAGrF,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,cAAc,EAAE,YAAY,MAAM;GAClC,8BAA8B,EAAE,YAAY,MAAM;GAClD,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CCpLN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA4B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA2B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA4B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC7ET,MAAM,YAAA,oBAAA,CAAoC;CAC1C,MAAM,6BAAA,oCAAA;CAEN,IAAM,6BAAN,cAAyC,UAAU;AACnD,4BAA2B,cAAc,2BAA2B,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEjG,QAAO,UAAU,EACf,gBAAgB,4BACjB;;;;;CCPD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,6BAAA,oCAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,2CAA2C;;CAGzF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,0BAA0B;AAGrE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,+BAA+B,aAAa,MAAM;GACtD,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+EAA+E,UAAU,OAAO,WACjG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,2BAA2B,QAAQ,cAAc,QAAQ,EAChE,SAAS,6DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,uBAAuB,WAAW;GACxD,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAA0B,cAAc;IAAM;GAC9E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,qCAAA;;;;;CCpLN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC9CT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,sBAAA,6BAAA;CAEN,IAAM,sBAAN,cAAkC,UAAU;AAG5C,qBAAoB,cAAc,oBAAoB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEnF,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCXD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,sBAAA,6BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,MAAM;GAC/C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wEAAwE,UAAU,OAAO,WAC1F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,oBAAoB,QAAQ,cAAc,QAAQ,EACzD,SAAS,sDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC1JN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,oBAAA,2BAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,oBAAkB,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAEtE;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,iBAAiB,OAAO;KAC1C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KAAE,SAAS,UAAU;KAA2B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KAAE,SAAS,UAAU;KAA0B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,iBAAiB,OAAO;KAC1C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,iBAAiB,OAAO;KAC1C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KAAE,SAAS,UAAU;KAA6B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CChHT,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,yBAAA,iCAAA,CAA8D;CACpE,MAAM,cAAA,sBAAA,CAAwC;CAE9C,MAAM,oBAAA,2BAAA;CAEN,IAAM,oBAAN,cAAgC,YAAY;EAC1C,kBAAkB,MAAM,SAAS,YAAY,MAAM,KAAK,UAAU,SAAS,QAAQ,UAAU,SAAS;AACpG,OAAI,KAAK,cACP;AAGF,QAAK,YAAY,MAAM,SAAS,YAAY,MAAM,EAAE;AACpD,QAAK,MAAM;AACX,QAAK,WAAW;AAChB,QAAK,UAAU;AACf,QAAK,SAAS;AACd,QAAK,WAAW;AAChB,QAAK,UAAU;;;AAGnB,OAAM,kBAAkB,WAAW,uBAAuB,UAAU;AACpE,mBAAkB,cAAc,kBAAkB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE/E,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;CC1BD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,oBAAA,2BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,UAAA,iBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,UAAQ,eAAe,SAAS,aAAa;;AAG/C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,QAAQ;GAC/C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sEAAsE,UAAU,OAAO,WACxF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,kBAAkB,QAAQ,cAAc,QAAQ,EACvD,SAAS,oDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,iBAAiB,QAAQ;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,0FAA0F,UAAU,OAAO,WAC5G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;;GAGtD,kBAAkB,SAAS;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2FAA2F,UAAU,OAAO,WAC7G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,MAAM,kBAAkB,OAAO;SAG1C,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,cAAc,WAAW;GAC/C,kBAAkB,EAAE,YAAY,MAAM;GACtC,mBAAmB,EAAE,YAAY,MAAM;GACvC,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACpE,2BAA2B;IAAE,OAAO;IAAM,YAAY;IAAM;GAC5D,uBAAuB;IAAE,OAAO;IAAM,YAAY;IAAM;GACxD,wBAAwB;IAAE,OAAO;IAAM,YAAY;IAAM;GACzD,yBAAyB;IAAE,OAAO;IAAM,YAAY;IAAM;GAC3D,CAAC;AACF,SAAO,iBAAiB,eAAe;GACrC,2BAA2B;IAAE,OAAO;IAAM,YAAY;IAAM;GAC5D,uBAAuB;IAAE,OAAO;IAAM,YAAY;IAAM;GACxD,wBAAwB;IAAE,OAAO;IAAM,YAAY;IAAM;GACzD,yBAAyB;IAAE,OAAO;IAAM,YAAY;IAAM;GAC3D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CC1bN,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,OAAO,OAAO;KAAE,SAAS,UAAU;KAA2B,SAAS;KAAc,CAAC;AAE1G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,CAAC,MAAM,SAAS,MAAM,CACxB,OAAM,IAAI,aAAa,UAAU,UAAU,sDAA2D;SACjG;KACL,MAAM,IAAI,EAAE;KACZ,MAAM,MAAM;AACZ,UAAK,IAAI,YAAY,KAAK;AACxB,iBAAW,MAAM,kBAAkB,SAAS;AAE5C,QAAE,KAAK,SAAS;;AAElB,aAAQ;;AAGV,QAAI,OAAO;SAEX,KAAI,OAAO,EAAE;;EAIjB;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,MAAM,kBAAkB,MAAM;AAExC,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CChGT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,mBAAA,0BAAA;CAEN,IAAM,mBAAN,cAA+B,UAAU;EACvC,iBAAiB,MAAM,SAAS,YAAY,MAAM,QAAQ,aAAa,QAAQ,OAAO;AACpF,OAAI,KAAK,cACP;AAGF,QAAK,UAAU,MAAM,SAAS,WAAW;AACzC,QAAK,OAAO;AACZ,QAAK,SAAS;AACd,QAAK,cAAc;AACnB,QAAK,SAAS;AACd,QAAK,QAAQ;;;AAGjB,kBAAiB,cAAc,iBAAiB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE7E,QAAO,UAAU,EACf,gBAAgB,kBACjB;;;;;CCtBD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,mBAAA,0BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,iCAAiC;;CAG/E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,gBAAgB;AAG3D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI;EAAC;EAAU;EAAU;EAAe,CAAC;AAE7D,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,qBAAqB,aAAa,MAAM;GAC5C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,qEAAqE,UAAU,OAAO,WACvF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,iBAAiB,QAAQ,cAAc,QAAQ,EACtD,SAAS,mDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,iBAAiB,MAAM;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,OAAO,QAAQ;MAClC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,MAAM,kBAAkB,OAAO;SAG1C,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,CAAC,MAAM,SAAS,OAAO,CACzB,OAAM,IAAI,aAAa,UACrB,iGACD;UACI;MACL,MAAM,IAAI,EAAE;MACZ,MAAM,MAAM;AACZ,WAAK,IAAI,YAAY,KAAK;AACxB,kBAAW,MAAM,kBAAkB,SAAS;AAE5C,SAAE,KAAK,SAAS;;AAElB,eAAS;;SAGX,UAAS,EAAE;AAEb,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;;GAGtD,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;;AAGhE,SAAO,iBAAiB,aAAa,WAAW;GAC9C,kBAAkB,EAAE,YAAY,MAAM;GACtC,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAgB,cAAc;IAAM;GACpE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,2BAAA;;;;;CC1TN,MAAM,eAAA,sBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,gBAAA,gBAAA;CAGR,IAAM,cAAN,MAAkB;EAChB,YAAY,cAAc,MAAM,aAAa;GAC3C,MAAM,EAAE,kBAAkB,aAAa,KAAK,MAAM,iBAAiB;AAEnE,QAAK,oBAAoB;AACzB,QAAK,SAAS;AACd,QAAK,OAAO;AACZ,QAAK,QAAQ;AACb,QAAK,SAAS;AAEd,QAAK,gBAAgB;;EAGvB,sBAAsB,KAAK,UAAU,UAAU;AAC7C,UAAO,KAAK,kBAAkB,mBAAmB,oBAC9C,QAAO,WAAU,WAAW,KAAK,kBAAkB,CACnD,SAAQ,WAAU,YAAY,WAAW,QAAQ,cAAc;IAC9D;IACA;IACA;IACA,KAAK,KAAK;IACV,aAAa,OAAO,MAAM,KAAK;IAChC,CAAC,CAAC;;EAGP,IAAI,SAAS;AACX,UAAO,KAAK,OAAO;;EAGrB,IAAI,GAAG;AACL,OAAI,KAAK,KAAK,OAAO,KACnB,QAAO;AAET,UAAO,CAAC,GAAG,KAAK,OAAO,MAAM,CAAC,CAAC;;EAGjC,QAAQ,KAAK;AACX,OAAI,KAAK,OAAO,IAAI,IAAI,CACtB,QAAO,KAAK,OAAO,IAAI,IAAI;AAE7B,UAAO;;EAGT,QAAQ,KAAK,OAAO;GAClB,MAAM,WAAW,KAAK,OAAO,IAAI,IAAI,IAAI;AAEzC,OAAI,aAAa,MACf;GAIF,IAAI,mBAAmB,IAAI,SAAS,MAAM;AAC1C,QAAK,MAAM,CAAC,QAAQ,aAAa,KAAK,OAEpC,KAAI,QAAQ,OACV,qBAAoB,OAAO,SAAS,SAAS;AAGjD,OAAI,mBAAmB,KAAK,OAC1B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,OAAO,KAAK,OAAO,8CACnB,qBACD,CAAC;AAGJ,cAAW,KAAK,sBAAsB,KAAK,KAAK,EAAE,GAAG,KAAK,UAAU,MAAM;AAE1E,QAAK,OAAO,IAAI,KAAK,MAAM;;EAG7B,WAAW,KAAK;AACd,OAAI,KAAK,OAAO,IAAI,IAAI,EAAE;AACxB,eAAW,KAAK,sBAAsB,KAAK,KAAK,EAAE,GAAG,KAAK,KAAK,OAAO,IAAI,IAAI,EAAE,KAAK;AAErF,SAAK,OAAO,OAAO,IAAI;;;EAI3B,QAAQ;AACN,OAAI,KAAK,OAAO,OAAO,GAAG;AACxB,eAAW,KAAK,sBAAsB,KAAK,KAAK,EAAE,GAAG,MAAM,MAAM,KAAK;AAEtE,SAAK,OAAO,OAAO;;;EAIvB,KAAK,SAAS,0BAA0B;AACtC,UAAO,KAAK,OAAO,MAAM;;;AAI7B,QAAO,UAAU,EACf,gBAAgB,aACjB;;;;;CCnGD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4BAA4B;;CAG1E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,WAAW;AAGtD,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,QAAQ;GACZ,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,qEAAqE;AAGxG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uEAAuE,UAAU,OAAO,WACzF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;;GAGzC,QAAQ,KAAK;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2EAA2E,UAAU,OAAO,WAC7F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;;GAG7C,QAAQ,KAAK,OAAO;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;;GAG7C,WAAW,KAAK;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8EAA8E,UAAU,OAAO,WAChG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;;GAGhD,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY,OAAO;;GAGpC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,QAAQ,WAAW;GACzC,KAAK,EAAE,YAAY,MAAM;GACzB,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAW,cAAc;IAAM;GAC/D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,wBACzC,KAAI,EAAE,OAAO,QACX,MAAK,IAAI,GAAG,MAAM;AAItB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;GAIpD,MAAM,aAAa,OAAO,YAAY,QAAQ,EAAE;AAEhD,OAAI,eAAe,QAAQ,EAAE,KAAK,WAAW,KAC3C,QAAO;IACL,UAAU;IACV,YAAY;IACZ,cAAc;IACd,OAAO,MAAM,kBAAkB,WAAW;IAC3C;AAGH,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,UAAU;IACxD,MAAM,eAAe,KAAK;AAE1B,QAAI,OAAO,MAAM,UAAU;KACzB,IAAI,aAAa;AAEjB,kBAAa,YAAY,aAAa,YAAY;MAChD,SAAS,wBAAwB,IAAI;MACrC,SAAS;MACV,CAAC;AAEF,YAAO,YAAY,QAAQ,GAAG,WAAW;AAEzC,YAAO;;;GAGX,IAAI;AAEJ,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;GAGhD,MAAM,eAAe,KAAK;AAC1B,OAAI,CAAC,OAAO,OAAO,QAAQ,EAAE,EAAE;AAC7B,QAAI,KAAK,OAAO,KAAK,IACnB,QAAO;IAGT,IAAI,aAAa,KAAK;AAEtB,iBAAa,YAAY,aAAa,YAAY;KAChD,SAAS,wBAAwB,IAAI;KACrC,SAAS;KACV,CAAC;AAEF,WAAO,YAAY,QAAQ,GAAG,WAAW;AAEzC,WAAO;;AAET,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,OAAO,YAAY,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS;AAC5D,WAAO,YAAY,WAAW,EAAE;AAChC,WAAO;;AAGT,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,sBAAA;;;;;CC1YN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,UAAA,iBAAA;CACN,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,aAAa,OAAO;KAAE,SAAS,UAAU;KAA0B,SAAS;KAAc,CAAC;AAEjH,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEJ,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEJ,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,QAAQ,QAAQ,cAAc,OAAO,EAAE,SAAS,UAAU,kCAAkC,CAAC;AAEvG,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KAAE,SAAS,UAAU;KAA0B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC/FT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,mBAAA,0BAAA;CAGN,IAAM,mBAAN,cAA+B,UAAU;EACvC,iBAAiB,MAAM,SAAS,YAAY,KAAK,UAAU,UAAU,KAAK,aAAa;AACrF,OAAI,KAAK,cACP;AAGF,QAAK,UAAU,MAAM,SAAS,WAAW;AACzC,QAAK,MAAM;AACX,QAAK,WAAW;AAChB,QAAK,WAAW;AAChB,QAAK,MAAM;AACX,QAAK,cAAc;;;AAGvB,kBAAiB,cAAc,iBAAiB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE7E,QAAO,UAAU,EACf,gBAAgB,kBACjB;;;;;CCvBD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,mBAAA,0BAAA;CACN,MAAM,UAAA,iBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,iCAAiC;;CAG/E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,gBAAgB;AAG3D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,qBAAqB,aAAa,MAAM;GAC5C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,qEAAqE,UAAU,OAAO,WACvF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,iBAAiB,QAAQ,cAAc,QAAQ,EACtD,SAAS,mDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,iBAAiB,MAAM;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,QAAQ,QAAQ,cAAc,QAAQ,EAC7C,SAAS,uEACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;;GAGtD,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;;AAGtE,SAAO,iBAAiB,aAAa,WAAW;GAC9C,kBAAkB,EAAE,YAAY,MAAM;GACtC,KAAK,EAAE,YAAY,MAAM;GACzB,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,KAAK,EAAE,YAAY,MAAM;GACzB,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAgB,cAAc;IAAM;GACpE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,2BAAA;;;;;AC3Tc,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,oBAAA,2BAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,oBAAkB,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAEtE;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,CAAC,MAAM,SAAS,MAAM,CACxB,OAAM,IAAI,aAAa,UAAU,UAAU,+DAAoE;SAC1G;KACL,MAAM,IAAI,EAAE;KACZ,MAAM,MAAM;AACZ,UAAK,IAAI,YAAY,KAAK;AACxB,iBAAW,MAAM,kBAAkB,SAAS;AAE5C,QAAE,KAAK,SAAS;;AAElB,aAAQ;;AAGV,QAAI,OAAO;SAEX,KAAI,OAAO,EAAE;;EAIjB;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,CAAC,MAAM,SAAS,MAAM,CACxB,OAAM,IAAI,aAAa,UAAU,UAAU,8DAAmE;SACzG;KACL,MAAM,IAAI,EAAE;KACZ,MAAM,MAAM;AACZ,UAAK,IAAI,YAAY,KAAK;AACxB,iBAAW,MAAM,kBAAkB,SAAS;AAE5C,QAAE,KAAK,SAAS;;AAElB,aAAQ;;AAGV,QAAI,OAAO;SAEX,KAAI,OAAO,EAAE;;EAIjB;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,CAAC,MAAM,SAAS,MAAM,CACxB,OAAM,IAAI,aAAa,UAAU,UAAU,wDAA6D;SACnG;KACL,MAAM,IAAI,EAAE;KACZ,MAAM,MAAM;AACZ,UAAK,IAAI,YAAY,KAAK;AACxB,iBAAW,MAAM,kBAAkB,SAAS;AAE5C,QAAE,KAAK,SAAS;;AAElB,aAAQ;;AAGV,QAAI,OAAO;SAEX,KAAI,OAAO,EAAE;;;AAKnB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCrFT,MAAM,cAAA,sBAAA,CAAwC;CAE9C,MAAM,iBAAA,wBAAA;CAEN,IAAM,iBAAN,cAA6B,YAAY;AAGzC,gBAAe,cAAc,eAAe,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEzE,QAAO,UAAU,EACf,gBAAgB,gBACjB;;;;;CCXD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,iBAAA,wBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,UAAA,iBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,UAAQ,eAAe,SAAS,aAAa;;AAG/C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mBAAmB,aAAa,QAAQ;GAC5C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mEAAmE,UAAU,OAAO,WACrF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,eAAe,QAAQ,cAAc,QAAQ,EACpD,SAAS,iDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,WAAW,WAAW;GAC5C,SAAS,EAAE,YAAY,MAAM;GAC7B,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GAClE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;;;;;ACvNN,QAAO,UAAU,MAAM,eAAe;EACpC,cAAc;AACZ,QAAK,iBAAiB,EAAE;;EAG1B,IAAI,KAAK;AACP,QAAK,eAAe,KAAK,IAAI;;EAG/B,OAAO,KAAK;GACV,MAAM,MAAM,KAAK,eAAe,QAAQ,IAAI;AAC5C,OAAI,QAAQ,GACV,MAAK,eAAe,OAAO,KAAK,EAAE;;EAItC,QAAQ;AACN,QAAK,MAAM,iBAAiB,KAAK,eAC/B,eAAc,OAAO;AAEvB,QAAK,iBAAiB,EAAE;;EAG1B,OAAO;AACL,UAAO,KAAK,eAAe;;;;;;;CC5B/B,IAAM,YAAN,MAAgB;EACd,YAAY,QAAQ,SAAS,eAAe;AAC1C,QAAK,SAAS;AACd,QAAK,UAAU;AACf,QAAK,OAAO;AACZ,QAAK,QAAQ;AACb,QAAK,gBAAgB;;;;;;;AAQzB,QAAO,UAAU,MAAM,mBAAmB;EACxC,cAAc;AACZ,QAAK,wBAAQ,IAAI,KAAK;AACtB,QAAK,iCAAiB,IAAI,KAAK;;EAGjC,QAAQ;AACN,UAAO,KAAK,MAAM,OAAO,KAAK,eAAe;;EAG/C,UAAU;AACR,OAAI,KAAK,UACP,MAAK,WAAW;;EAIpB,OAAO,MAAM;GACX,IAAI;AAEJ,OAAI,KAAK,WAAW,KAAK,MACvB,WAAU,KAAK,QAAQ,KAAK,MAAM;YACzB,KAAK,UAAU,KAAK,KAC7B,WAAU,KAAK,OAAO,KAAK,KAAK;AAGlC,WACG,WAAW;AACV,SAAK,MAAM,OAAO,KAAK;AACvB,SAAK,eAAe,OAAO,KAAK;AAEhC,QAAI,KAAK,OAAO,KAAK,EACnB,MAAK,SAAS;KAEhB;;EAGN,YAAY,UAAU;AACpB,QAAK,YAAY;;EAGnB,KAAK,SAAS,QAAQ,SAAS,eAAe;GAC5C,MAAM,IAAI;GAEV,MAAM,OAAO,IAAI,UAAU,QAAQ,SAAS,cAAc;AAE1D,KAAE,MAAM,IAAI,KAAK;AAEjB,UAAO,QACJ,MAAK,SAAQ;AACZ,SAAK,OAAO;AAEZ,QAAI,iBAAiB,CAAC,cAAc,UAAU;AAC5C,OAAE,eAAe,IAAI,KAAK;AAC1B,YAAO,EAAE,MAAM,OAAO,KAAK;;AAG7B,QAAI,OACF,QAAO,EAAE,OAAO,KAAK;AAGvB,MAAE,MAAM,OAAO,KAAK;AAEpB,QAAI,EAAE,OAAO,KAAK,EAChB,GAAE,SAAS;AAGb,WAAO;KACP,CACD,OAAM,QAAO;AACZ,SAAK,QAAQ;AAEb,QAAI,iBAAiB,CAAC,cAAc,UAAU;AAC5C,OAAE,eAAe,IAAI,KAAK;AAC1B,YAAO,EAAE,MAAM,OAAO,KAAK;;AAG7B,QAAI,QACF,QAAO,EAAE,OAAO,KAAK;AAGvB,MAAE,MAAM,OAAO,KAAK;AAEpB,QAAI,EAAE,OAAO,KAAK,EAChB,GAAE,SAAS;AAGb,WAAO;KACP;;EAGN,WAAW,UAAU;AACnB,QAAK,MAAM,QAAQ,KAAK,eACtB,KAAI,KAAK,kBAAkB,SACzB,MAAK,OAAO,KAAK;;;;;;;;;;;ACvGzB,QAAO,UAAU,MAAM,cAAc;EACnC,YAAY,EAAE,QAAQ,eAAe,EAAE,EAAE;AACvC,QAAK,SAAS,QAAQ,OAAO;AAC7B,QAAK,cAAc;;EAGrB,gBAAgB;GACd,IAAI,OAAO,KAAK;AAEhB,UAAO,MAAM;AACX,QAAI,KAAK,SACP,QAAO;AAET,WAAO,KAAK;;AAGd,UAAO;;EAGT,eAAe;GACb,IAAI,QAAQ;GAEZ,IAAI,OAAO,KAAK;AAChB,UAAO,QAAQ,CAAC,OAAO;AACrB,YAAQ,KAAK;AACb,WAAO,KAAK;;AAGd,UAAO;;EAGT,UAAU;AACR,OAAI,KAAK,UACP,MAAK,WAAW;;EAIpB,YAAY,UAAU;AACpB,QAAK,YAAY;;EAGnB,KAAK,SAAS,QAAQ,SAAS,UAAU,SAAS;GAChD,MAAM,WAAW,UAAU,QAAQ,cAAc,WAAW;AAE5D,OAAI,CAAC,SAAS;AACZ,QAAI,YAAY,CAAC,KAAK,cAAc,CAClC,QAAO,QAAQ;AAGjB,cAAU,QAAQ,SAAS;;GAE7B,MAAM,IAAI;GACV,MAAM,OAAO;IACX;IACA,KAAK;IACL;IACA,OAAO;IACP,MAAM;IACN;IACA,MAAM,EAAE;IACR,QAAQ;AACN,SAAI,CAAC,EAAE,UAAU,CAAC,KAAK,QAAQ,KAAK,OAAO;MACzC,IAAI;AAEJ,UAAI,KAAK,OAAO,QACd,WAAU,QAAQ,KAAK,IAAI;AAG7B,UAAI,CAAC,KAAK,OAAO,OACf,WAAU,OAAO,KAAK,KAAK;AAG7B,cAAQ,QAAQ,QAAQ,CACrB,WAAW;AACV,WAAI,KAAK,MAAM;AACb,aAAK,KAAK,OAAO;AACjB,aAAK,KAAK,OAAO;cACZ;AACL,UAAE,OAAO;AACT,UAAE,SAAS;;AAGb,YAAK,WAAW;AAEhB,WAAI,EAAE,YACJ,GAAE,YAAY,WAAW,KAAK;QAEhC;;;IAGT;AACD,OAAI,EAAE,KACJ,KAAI,EAAE,KAAK,UAAU;AAGnB,QAAI,EAAE,KAAK,KACT,GAAE,KAAK,KAAK,OAAO;AAErB,SAAK,OAAO,EAAE,KAAK;AACnB,MAAE,KAAK,OAAO;AACd,SAAK,OAAO,EAAE;UACT;AACL,MAAE,KAAK,OAAO;AACd,MAAE,OAAO;;OAGX,GAAE,OAAO;AAEX,UAAO,QACJ,MAAK,SAAQ;AACZ,SAAK,QAAQ;AACb,SAAK,OAAO;AACZ,SAAK,OAAO;KACZ,CACD,OAAM,QAAO;AACZ,SAAK,QAAQ;AACb,SAAK,MAAM;AACX,SAAK,OAAO;KACZ;;EAGN,SAAS;AACP,OAAI,CAAC,KAAK,OACR;AAEF,QAAK,SAAS;GAEd,IAAI,OAAO,KAAK;AAChB,UAAO,QAAQ,KAAK,KAClB,QAAO,KAAK;AAEd,OAAI,KACF,MAAK,OAAO;;;;;;;ACxIlB,SAAQ,0CAAyC,WAAU;AACzD,SAAO,OAAO,QAAQ,kBAAkB,GAAG,CAAC,QAAQ,kBAAkB,GAAG;;AAG3E,SAAQ,oBAAmB,UAAS;AAClC,SAAO,MAAM,KAAK,QAAO,SAAQ,OAAO,cAAc,KAAK,CAAC,CAAC,KAAK,GAAG;;AAGvE,SAAQ,yBAAwB,SAAQ;EACtC,IAAI;AACJ,MAAI;AACF,cAAW,KAAK,KAAK;UACf;AACN,UAAO;;AAGT,SAAO,WAAW,KAAK,WAAU,MAAK,EAAE,YAAY,EAAE,CAAC;;;;;;CCjBzD,MAAM,EAAE,aAAA,eAAA;CACR,MAAM,EAAE,UAAU,cAAc,wBAAA,oBAAA;CAChC,MAAM,EAAE,wCAAwC,kBAAkB,0BAAA,eAAA;AAElE,QAAO,WAAU,gBAAe;EAC9B,MAAM,YAAY,SAAS,YAAY;AAEvC,MAAI,cAAc,KAChB,QAAO;AAGT,SAAO,OAAO,QAAQ,cAAc,UAAU;;AAGhD,QAAO,QAAQ,iBAAgB,cAAa;AAC1C,MAAI,UAAU,WAAW,OACvB,QAAO;EAGT,MAAM,QAAQ,aAAa,WAAW,KAAK,CAAC,UAAU,EAAe;EAErE,IAAI,WAAW;EAEf,IAAI,WAAW;AACf,SAAO,WAAW,MAAM,UAAU,MAAM,cAAc,KAAK;AACzD,eAAY,MAAM;AAClB,KAAE;;AAEJ,aAAW,uCAAuC,SAAS;AAE3D,MAAI,aAAa,MAAM,OACrB,QAAO;AAGT,IAAE;EAIF,IAAI,OAAO,oBAFS,MAAM,UAAU,SAAS,CAEF;EAG3C,MAAM,4BAA4B,8BAA8B,KAAK,SAAS;AAC9E,MAAI,2BAA2B;AAE7B,UAAO,sBADY,iBAAiB,KAAK,CACD;AAExC,OAAI,SAAS,KACX,QAAO;AAET,cAAW,0BAA0B;;AAGvC,MAAI,SAAS,WAAW,IAAI,CAC1B,YAAW,aAAa;EAG1B,IAAI;AACJ,MAAI;AACF,oBAAiB,IAAI,SAAS,SAAS;UACjC;AACN,oBAAiB,IAAI,SAAS,8BAA8B;;AAG9D,SAAO;GACL,UAAU;GACV;GACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCzBH,SAAS,mBAAmB,SAAS,QAAQ,EAAE,QAAQ,aAAa,IAAI,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI;EACpG,MAAM,aAAa;GACjB,SAAS;AACP,WAAO,QAAQ;;GAEjB,QAAQ;AACN,WAAO,OAAO;;GAEhB,IAAI,SAAS;AACX,WAAO,OAAO,UAAU;;GAE1B,IAAI,UAAU;AACZ,WAAO,OAAO,YAAY;;GAE5B,IAAI,SAAS;AACX,WAAO,OAAO;;GAEhB,MAAM,QAAQ;AACZ,WAAO,QAAQ,OAAO;;GAEzB;AAED,SACG,GAAG,UAAS,QAAO;AAClB,OAAI,CAAC,OAAO,cACV,SAAQ,kBAAkB,YAAY,IAAI;IAE5C,CACD,GAAG,eAAe;AACjB,OAAI,CAAC,OAAO,QACV,SAAQ,gBAAgB,YAAY,EAAE,CAAC;IAEzC,CACD,GAAG,SAAQ,UAAS;AACnB,WAAQ,iBAAiB,YAAY,MAAM;IAC3C;AAEJ,UAAQ,iBAAiB,YAAY,QAAQ;AAE7C,MAAI,OAAO,UACT;AAGF,UAAQ,kBAAkB,YAAY,QAAQ,SAAS,WAAW;;AAGpE,QAAO,UAAU,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CEvFvC,MAAMkC,OAAK,QAAQ,KAAK;CACxB,MAAM,EAAE,UAAA,eAAa,QAAQ,SAAS;CACtC,MAAM,EAAE,kBAAkB,QAAQ,MAAM;CACxC,MAAM,EAAE,UAAU,cAAc,oBAAoB,kBAAA,oBAAA;CACpD,MAAM,oBAAA,gBAAA,CAAyC;CAC/C,MAAM,EAAE,eAAA,gBAAA;CACR,MAAM,cAAA,sBAAA;CACN,MAAM,gBAAA,wBAAA;CACN,MAAM,EAAE,cAAA,aAAA,EAAA,cAAA,aAAA,eAAA;CACR,MAAM,EAAE,eAAA,kBAAA;CACR,MAAM,EAAE,uBAAA,wBAAA;CAER,MAAM,iBAAA,iBAAA,CAAqD;CAE3D,MAAM,qBAAqB,gBAAgB,QAAQ,YAAY,aAAa,iDACpB;CACxD,MAAM,gBAAgB;;;;;;;;;;;;CAatB,IAAM,kBAAN,MAAM,wBAAwB,WAAW;EACvC;EACA;EACA;EACA;EAEA,YAAY,EAAE,gBAAgB,WAAW,WAAW,mBAAmB,EAAE,IAAI;AAC3E,UAAO;AACP,SAAA,iBAAuB;AACvB,SAAA,YAAkB;AAClB,SAAA,YAAkB,aAAa;AAC/B,SAAA,mBAAyB;;;;;;;;;;;;;;;;;;;;;;;EAwB3B,SAAS,MAAM,SAAS;GAMtB,MAAM,iBAAiB,YAAY,KAAK,QAAQ;GAIhD,MAAM,YAAY,KAAK,QAAQ,OAAQ,KAAK,SAAS,KAAK;GAC1D,MAAM,YAAY,SAAS,UAAU;AAErC,OAAI,cAAc,MAAM;AACtB,mBAAe,kBAAkB,sBAAM,IAAI,UAAU,gBAAgB,YAAY,CAAC;AAClF,WAAO;;AAGT,OAAI,UAAU,WAAW,OACvB,QAAO,MAAA,gBAAsB,WAAW,eAAe;AAGzD,OAAI,UAAU,WAAW,OACvB,QAAO,MAAA,gBAAsB,WAAW,eAAe;AAOzD,SAAA,aAAmB,WAAW,gBAAgB,KAAK,CAAC,OAAM,QAAO;AAC/D,mBAAe,kBAAkB,MAAM,IAAI;KAC3C;AACF,UAAO;;;;;;;EAQT,iBAAiB,WAAW,SAAS;GACnC,MAAM,UAAU,kBAAkB,UAAU;AAC5C,OAAI,YAAY,MAAM;IACpB,MAAM,wBAAQ,IAAI,UAAU,oBAAoB;AAChD,YAAQ,kBAAkB,MAAM,MAAM;AACtC,WAAO;;AAKT,sBAAmB,SAFJQ,WAAS,KAAK,CAAC,QAAQ,KAAK,CAAC,EAER;IAClC,QAAQ;IACR,YAAY;IACZ,SAAS,EAAE,gBAAgB,QAAQ,SAAS,UAAU,EAAE;IACxD,SAAS,EAAE,UAAU,WAAW;IACjC,CAAC;AAEF,UAAO;;;;;;;EAQT,iBAAiB,WAAW,SAAS;GACnC,MAAM,WAAW,cAAc,aAAa,UAAU,CAAC;AAGvD,sBAAmB,SAFJR,KAAG,iBAAiB,SAAS,EAER;IAClC,QAAQ;IACR,YAAY;IACZ,SAAS,EAAE,UAAU,WAAW;IACjC,CAAC;AAEF,UAAO;;;;;;;;EAST,OAAA,aAAoB,WAAW,SAAS,MAAM;GAC5C,MAAM,EAAE,UAAU,QAAQ,iBAAiB,MAAM,cAAc,KAAK,UAAU,EAAE;GAChF,MAAM,kBAAkB,UAAU;GAClC,IAAI,aAAa;GACjB,IAAI,gBAAgB,KAAK,UAAU;GACnC,IAAI,cAAc,KAAK,QAAQ;GAC/B,MAAM,iBAAiB,EAAE,GAAG,MAAA,yBAA+B,KAAK,QAAQ,EAAE;GAC1E,IAAI,kBAAkB;GACtB,IAAI,wBAAwB;GAC5B,MAAM,MAAM,EAAE,UAAU,MAAM;GAI9B,IAAI;GACJ,IAAI,uBAAuB;GAC3B,MAAM,kBAAkB;IACtB,MAAM,QAAQ;AACZ,uBAAkB,MAAM,OAAO;;IAEjC,QAAQ;AACN,uBAAkB,OAAO;;IAE3B,SAAS;AACP,uBAAkB,QAAQ;;IAE5B,IAAI,SAAS;AACX,YAAO,kBAAkB;;IAE3B,IAAI,UAAU;AACZ,YAAO,kBAAkB;;IAE3B,IAAI,SAAS;AACX,YAAO,kBAAkB;;IAE5B;GAGD,SAAS,kBAAkB,YAAY;AACrC,wBAAoB;AACpB,QAAI,CAAC,sBAAsB;AACzB,4BAAuB;AACvB,aAAQ,iBAAiB,iBAAiB,IAAI;;;AAKlD,OAAI,WAAW;IACb,MAAM,mBAAmB,EACvB,QAAQ,QACT;AACD,qBAAiB,mCAAmC;AACpD,QAAI,UAAU,eAAe,SAAS,EACpC,kBAAiB,oCAAoC,UAAU,cAAc,KAAK,KAAK;IAGzF,MAAM,kBAAkB,MAAM,MAAA,gBAC5B,YACA,WACA,kBACA,MACA;KAAE,GAAG,KAAK;KAAQ;KAAQ;KAAiB,EAC3C,KAAA,GACA,MACA,kBACD;AAED,QAAI,gBAAgB,OAAO;AACzB,aAAQ,kBAAkB,MAAM,gBAAgB,MAAM;AACtD;;AAIF,QAAI,gBAAgB,SAAS,OAAO,gBAAgB,SAAS,KAAK;AAChE,aAAQ,kBAAkB,sBAAM,IAAI,MAClC,yDAAyD,gBAAgB,OAC1E,CAAC;AACF;;IAIF,MAAM,OAAO,gBAAgB,QAAQ;AACrC,QAAI,SAAS,OAAO,SAAS,QAAQ;AACnC,aAAQ,kBAAkB,sBAAM,IAAI,MAAM,kBAAkB,SAAS,aAAa,CAAC;AACnF;;AAEF,QAAI;SACW,gBAAgB,QAAQ,wCACxB,QAAQ;AACnB,cAAQ,kBAAkB,sBAAM,IAAI,MAAM,wBAAwB,CAAC;AACnE;;;IAKJ,MAAM,UAAU,gBAAgB,QAAQ;IACxC,MAAM,OAAO,IAAI,IAAI,UAAU,QAAQ,aAAa,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACxE,QAAI,CAAC,KAAK,IAAI,IAAI;UACX,MAAM,gBAAgB,UAAU,iBAAiB,EAAE,CACtD,KAAI,CAAC,KAAK,IAAI,aAAa,aAAa,CAAC,EAAE;AACzC,cAAQ,kBAAkB,sBAAM,IAAI,MAAM,YAAY,eAAe,aAAa,CAAC;AACnF;;;;AAOR,QAAK,IAAI,gBAAgB,GAAG,iBAAiB,eAAe,iBAAiB;AAC3E,QAAI,WAAW;IACf,MAAM,gBAAgB,mBAAmB,WAAW;IAGpD,MAAM,iBAAiB,EAAE,GAAG,gBAAgB;AAG5C,QAAI,yBAAyB,KAE3B,gBAAe,gBAAgB,WAAW,SAAS,WADhC,GAAG,KAAK,QAAQ,GAAG,GAAG,KAAK,QAAQ,KACmB,CAAC;IAG5E,MAAM,SAAS,MAAM,MAAA,gBACnB,YACA,eACA,gBACA,aACA;KAAE,GAAG,KAAK;KAAQ;KAAQ;KAAiB,EAC3C,KAAK,SACL,MACA,kBACD;AAGD,QAAI,OAAO,UAAU;AACnB,aAAQ,mBAAmB,iBAAiB,OAAO,YAAY,OAAO,SAAS,OAAO,OAAO;AAC7F;;AAGF,QAAI,OAAO,OAAO;AAChB,aAAQ,kBAAkB,MAAM,OAAO,MAAM;AAC7C;;AAIF,QAAI,OAAO,WAAW,OAAO,QAAQ,CAAC,uBAAuB;KAC3D,MAAM,UAAU,OAAO,QAAQ,uBAAuB;AACtD,SAAI,WAAW,KAAK,QAAQ,EAAE;AAC5B,8BAAwB;AACxB;;;IAKJ,MAAM,EAAE,aAAa,OAAO;AAC5B,QAAI,OAAO,UAAU,OAAO,OAAO,SAAS,OAAO,UAAU;KAC3D,MAAM,YAAY,SAAS,UAAU,EAAE,SAAS,YAAY,CAAC;AAC7D,SAAI,CAAC,WAAW;AACd,cAAQ,kBAAkB,sBAAM,IAAI,UAAU,uBAAuB,CAAC;AACtE;;AAIF,SAAI,UAAU,aAAa,KACzB,WAAU,WAAW;AAIvB,SAAI,UAAU,WAAW,UAAU,UAAU,WAAW,SAAS;AAC/D,cAAQ,kBAAkB,sBAAM,IAAI,MAAM,qCAAqC,CAAC;AAChF;;AAKF,UAAM,OAAO,WAAW,OAAO,OAAO,WAAW,QAAQ,kBAAkB,UACtE,OAAO,WAAW,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,SAAS,cAAc,EAAG;AACvE,sBAAgB;AAChB,oBAAc;AACd,YAAA,oBAA0B,gBAAgB,mBAAmB;AAC7D,YAAA,oBAA0B,gBAAgB,mBAAmB;AAC7D,YAAA,oBAA0B,gBAAgB,mBAAmB;AAC7D,YAAA,oBAA0B,gBAAgB,eAAe;;KAG3D,MAAM,eAAe,mBAAmB,UAAU;AAGlD,SAAI,kBAAkB,aACpB,OAAA,oBAA0B,gBAAgB,gBAAgB;KAI5D,MAAM,sBAAsB,WAAW,KAAA,KAAa,WAAW;AAC/D,SAAI,YAAY,qBAAqB;AAEnC,UAAI,WAAW,eAAe;OAC5B,MAAM,OAAO,OAAO,QAAQ;AAC5B,WAAI,SAAS,OAAO,SAAS,QAAQ;AACnC,gBAAQ,kBAAkB,sBAAM,IAAI,MAAM,kBAAkB,SAAS,aAAa,CAAC;AACnF;;AAEF,WAAI;YACW,OAAO,QAAQ,wCACf,QAAQ;AACnB,iBAAQ,kBAAkB,sBAAM,IAAI,MAAM,wBAAwB,CAAC;AACnE;;;AAIJ,WAAI,UAAU,YAAY,UAAU,UAAU;AAC5C,gBAAQ,kBAAkB,sBAAM,IAAI,MAAM,sCAAsC,CAAC;AACjF;;AAGF,WAAI,kBAAkB,aACpB,mBAAkB;;AAKtB,UAAI,uBAAuB,oBAAoB,OAC7C,gBAAe,SAAS;;AAI5B,kBAAa;AACb;;AAIF,QAAI,WAAW,KAAA,MAAc,WAAW,iBAAiB,oBAAoB,SAAS;KACpF,MAAM,OAAO,OAAO,QAAQ;AAC5B,SAAI,SAAS,OAAO,SAAS,iBAAiB;AAC5C,cAAQ,kBAAkB,sBAAM,IAAI,MAAM,kBAAkB,kBAAkB,aAAa,CAAC;AAC5F;;AAEF,SAAI;UACW,OAAO,QAAQ,wCACf,QAAQ;AACnB,eAAQ,kBAAkB,sBAAM,IAAI,MAAM,wBAAwB,CAAC;AACnE;;;;AAMN,YAAQ,kBAAkB,iBAAiB,OAAO,QAAQ,OAAO,SAAS,OAAO,WAAW;AAG5F,WAAO,cAAc,QAAQ;AAC7B;;AAGF,WAAQ,kBAAkB,sBAAM,IAAI,MAAM,2BAA2B,cAAc,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;EAqBzF,OAAA,gBAAuB,KAAK,QAAQ,SAAS,MAAM,QAAQ,SAAS,cAAc,mBAAmB;GACnG,MAAM,EAAE,QAAQ,eAAe,oBAAoB,UAAU,EAAE;GAG/D,MAAM,iBAAiB,EAAE,GAAG,SAAS;AACrC,SAAA,kBAAwB,eAAe;AAEvC,OAAI,SAAS,SAAS,WAAW,UAAU,WAAW,OACpD,gBAAe,oBAAoB;YAC1B,SAAS,QAAQ,KAAK,eAAe,KAAA,EAG9C,gBAAe,oBAAoB,OAAO,KAAK,WAAW;GAI5D,MAAM,YAAY,mBAAmB,IAAI;GACzC,MAAM,cAAc,kBAAkB,KAAA,KAAa,kBAAkB;GAIrE,MAAM,cAAc,WAAW,aAC7B,MAAA,iBAAuB,SAAS,gCAAgC;GAClE,MAAM,uBAAuB,CAAC,eAAe,oBAAoB,CAAC;GAElE,MAAM,gBAAgB,aAAa,IAAI;AAEvC,OAAI,qBAAqB;IACvB,MAAM,eAAe,MAAA,UAAgB,oBAAoB,cAAc;AACvE,QAAI,aACF,gBAAe,SAAS;;GAQ5B,MAAM,eAAe,QAAQ,QAAQ,KAAA;GACrC,MAAM,eAAe;IACnB,GAAG;IACH,QAAQ,eAAe,YAAY,aAAa;IAChD,MAAM,eAAe,uBAAuB,IAAI,GAAG,aAAa;IAChE,OAAO,eAAe,OAAO,aAAa;IAC1C;IACA,SAAS;IACT;IACA;IACA,QAAQ;KAAE,GAAG;KAAQ,KAAK;KAAe;IAC1C;GAED,MAAM,gBAAgB,MAAA,oBAA0B;AAEhD,UAAO,IAAI,SAAQ,YAAW;IAC5B,IAAI,iBAAiB;IACrB,IAAI,cAAc;IAClB,IAAI,gBAAgB,EAAE;IACtB,IAAI,QAAQ;IACZ,IAAI,kBAAkB;AAEtB,kBAAc,cAAc;KAC1B,iBAAgB,eAAc;AAC5B,wBAAkB,WAAW;;KAE/B,mBAAmB,YAAY,YAAY,YAAY,WAAW;AAChE,UAAI,WAAW,SAAS;AACtB,eAAQ,EAAE,OAAO,WAAW,QAAQ,CAAC;AACrC;;AAEF,UAAI,oBACF,OAAA,wBAA8B,YAAY,cAAc;AAE1D,cAAQ;OAAE,UAAU;OAAM;OAAY;OAAY,SAAS;OAAY;OAAQ,CAAC;;KAElF,kBAAkB,YAAY,YAAY,YAAY,eAAe;AACnE,UAAI,WAAW,SAAS;AACtB,eAAQ,EAAE,OAAO,WAAW,QAAQ,CAAC;AACrC;;AAGF,wBAAkB;AAClB,wBAAkB;MAGlB,SAAS,cAAc,YAAY;AACjC,qBAAc;AAEd,YAAK,MAAM,SAAS,cAClB,YAAW,iBAAiB,YAAY,MAAM;AAEhD,uBAAgB;AAChB,WAAI,YACF,YAAW,kBAAkB,YAAY,YAAY;gBAC5C,MACT,YAAW,gBAAgB,YAAY,EAAE,CAAC;;AAI9C,cAAQ;OACN,QAAQ;OACR,YAAY,cAAc;OAC1B,SAAS;OACT;OACA;OACD,CAAC;;KAEJ,iBAAiB,YAAY,UAAU;AACrC,UAAI,WAAW,QACb;AAEF,UAAI,YACF,aAAY,iBAAiB,YAAY,MAAM;UAE/C,eAAc,KAAK,MAAM;;KAG7B,gBAAgB,YAAY,aAAa;AACvC,UAAI,WAAW,SAAS;AACtB,WAAI,YACF,aAAY,kBAAkB,YAAY,WAAW,OAAO;WAE5D,eAAc,WAAW;AAE3B;;AAEF,UAAI,oBACF,OAAA,wBAA8B,iBAAiB,cAAc;AAE/D,UAAI,YACF,aAAY,gBAAgB,YAAY,SAAS;UAEjD,SAAQ;;KAGZ,kBAAkB,YAAY,QAAQ;AACpC,UAAI,gBAEF,KAAI,YACF,aAAY,kBAAkB,YAAY,IAAI;UAE9C,eAAc;UAGhB,SAAQ,EAAE,OAAO,KAAK,CAAC;;KAG5B,CAAC;KACF;;;;;EAMJ,sBAAsB;GAKpB,IAAI,iBAAiB,MAAM,MAAM;AAC/B,WAAO,MAAA,eAAqB,SAAS,MAAM,cAAc,OAAO,EAAE,CAAC;;AAIrE,QAAK,IAAI,IAAI,MAAA,iBAAuB,SAAS,GAAG,KAAK,GAAG,KAAK;IAC3D,MAAM,cAAc,MAAA,iBAAuB;IAC3C,MAAM,eAAe;AACrB,qBAAiB,MAAM,MAAM,YAAY,aAAa,CAAC,MAAM,EAAE;;AAGjE,UAAO;;;;;;EAOT,0BAA0B,SAAS;AACjC,OAAI,CAAC,QACH,QAAO,EAAE;AAIX,OAAI,OAAO,QAAQ,OAAO,cAAc,YAAY;IAClD,MAAM,MAAM,EAAE;AACd,SAAK,MAAM,CAAC,MAAM,UAAU,QAC1B,KAAI,QAAQ;AAEd,WAAO;;AAGT,UAAO,EAAE,GAAG,SAAS;;;;;;EAOvB,kBAAkB,gBAAgB,MAAM;GACtC,MAAM,YAAY,KAAK,aAAa;AACpC,UAAO,OAAO,KAAK,eAAe,CAAC,MAAK,QAAO,IAAI,aAAa,KAAK,UAAU;;;;;;EAOjF,qBAAqB,gBAAgB,MAAM;GACzC,MAAM,YAAY,KAAK,aAAa;AACpC,QAAK,MAAM,OAAO,OAAO,KAAK,eAAe,CAC3C,KAAI,IAAI,aAAa,KAAK,UACxB,QAAO,eAAe;;;;;;EAS5B,mBAAmB,gBAAgB;AACjC,OAAI,CAAC,MAAA,iBAAuB,gBAAgB,aAAa,CACvD,gBAAe,gBAAgB,MAAA;AAEjC,OAAI,CAAC,MAAA,iBAAuB,gBAAgB,kBAAkB,CAC5D,gBAAe,qBAAqB;AAEtC,OAAI,CAAC,MAAA,iBAAuB,gBAAgB,SAAS,CACnD,gBAAe,SAAS;AAE1B,OAAI,CAAC,MAAA,iBAAuB,gBAAgB,kBAAkB,CAC5D,gBAAe,qBAAqB;;;;;EAOxC,yBAAyB,SAAS,KAAK;AACrC,OAAI,CAAC,QAAQ,cACX;GAEF,MAAM,UAAU,MAAM,QAAQ,QAAQ,cAAc,GAClD,QAAQ,gBACR,CAAC,QAAQ,cAAc;AACzB,QAAK,MAAM,UAAU,QACnB,OAAA,UAAgB,cAAc,QAAQ,KAAK,EAAE,aAAa,MAAM,CAAC;;EAMrE,MAAM,GAAG,MAAM;AACb,UAAO,MAAA,eAAqB,MAAM,GAAG,KAAK;;EAG5C,QAAQ,GAAG,MAAM;AACf,UAAO,MAAA,eAAqB,QAAQ,GAAG,KAAK;;;;;;EAO9C,QAAQ,GAAG,wBAAwB;AACjC,UAAO,IAAI,gBAAgB;IACzB,gBAAgB,MAAA;IAChB,WAAW,MAAA;IACX,WAAW,MAAA;IACX,kBAAkB,CAAC,GAAG,wBAAwB,GAAG,MAAA,iBAAuB;IACzE,CAAC;;EAGJ,IAAI,SAAS;AACX,UAAO,MAAA,eAAqB;;EAG9B,IAAI,YAAY;AACd,UAAO,MAAA,eAAqB;;;;;;;;;;;;;;CAehC,eAAe,eAAe,YAAY,EAAE,KAAK,SAAS,QAAQ,UAAU,QAAQ;EAClF,MAAM,YAAY,SAAS,IAAI;AAC/B,MAAI,CAAC,UACH,OAAM,IAAI,UAAU,gBAAgB,MAAM;EAG5C,MAAM,WAAW,MAAM,WAAW,QAAQ;GACxC,QAAQ,mBAAmB,UAAU;GACrC,MAAM,uBAAuB,UAAU;GACvC,QAAQ;GACR;GACA;GACA,QAAQ;IAAE;IAAS;IAAK;GACzB,CAAC;EAEF,MAAM,OAAO,MAAM,SAAS,KAAK,OAAO;EAGxC,MAAM,WAAW,aAAa,SAAS,QAAQ,SAAS;AAExD,SAAO;GACL,QAAQ,SAAS;GACjB,SAAS,SAAS;GAClB;GACA,KAAK;GACL,IAAI,SAAS,cAAc,OAAO,SAAS,aAAa;GACzD;;;;;CAMH,SAAS,uBAAuB,WAAW;AACzC,SAAO,cAAc,UAAU,IAAI,UAAU,QAAQ,MAAM,UAAU,QAAQ;;AAG/E,QAAO,UAAU;EACf;EACA;EACA;EACD;;;;;CClvBD,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,mBAAA,0BAAA;AAER,QAAO,UAAU,MAAM,0BAA0B;EAC/C,YAAY,UAAU;AACpB,QAAK,YAAY;AACjB,QAAK,mBAAmB,SAAS;GACjC,MAAM,cAAc,SAAS;AAC7B,QAAK,cAAc,cAAc,YAAY,cAAc;AAC3D,QAAK,oBAAoB,cAAc,YAAY,oBAAoB;AACvE,QAAK,kBAAkB,SAAS;AAChC,QAAK,SAAS,SAAS;AACvB,QAAK,cAAc,SAAS;AAC5B,QAAK,cAAc,SAAS;;EAG9B,MAAM,KAAK,EAAE,SAAS,QAAQ,WAAW;AACvC,OAAI,CAAC,KAAK,kBACR,QAAO;GAGT,MAAM,kBAAkB,IAAI,iBAAiB;AAQ7C,QAAK,gBAAgB,IAAI,gBAAgB;GAEzC,MAAM,eAAe,eAAe,KAAK,aAAa;IACpD;IACA,SAAS,EAAE,SAAS,KAAK,UAAU,KAAK;IACxC,QAAQ,gBAAgB;IACxB,SAAS,SAAS,eAAe,QAAQ;IAC1C,CAAC;GAEF,MAAM,kBAAiB,UAAS;AAC9B,SAAK,gBAAgB,OAAO,gBAAgB;AAG5C,QAAI,SAAS,MAAM,SAAS,aAC1B,QAAO,QAAQ,SAAS;AAG1B,QAAI,QACF,SAAQ,MAAM;AAGhB,gBAAY,SAAS,QAAQ;IAE7B,MAAM,YAAY,IAAI,MAAM,kBAAkB,QAAQ,UAAU,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC;AACvF,cAAU,OAAO;AACjB,cAAU,MAAM;AAEhB,SAAK,UAAU,aAAa,gBAAgB,KAAK,cAAc,UAAU;AAEzE,WAAO,QAAQ,SAAS;;GAG1B,MAAM,iBAAgB,aAAY;AAChC,SAAK,gBAAgB,OAAO,gBAAgB;IAG5C,MAAM,EAAE,MAAM,MAAM,QAAQ,SAAS,KAAK,gBAAgB;IAC1D,MAAM,cAAc;KAClB,IAAI,UAAU,OAAO,SAAS;KAC9B;KACA,SAAS,EACP,IAAI,MAAM;AACR,aAAO,QAAQ,KAAK,aAAa,KAAK;QAEzC;KACD,KAAK;KACN;AAED,QAAI;KACF,MAAM,SAAS,SAAS,OAAO,MAAM,YAAY,GAAG,KAAA;AAEpD,YAAO,QAAQ,QAAQ,OAAO,CAC3B,WAAW;AACV,kBAAY,QAAQ,QAAQ;AAE5B,aAAO,QAAQ,SAAS;OACxB,CACD,OAAM,QAAO;AACZ,aAAO,eAAe,IAAI;OAC1B;aACG,KAAK;AACZ,YAAO,eAAe,IAAI;;;GAK9B,MAAM,UAAU;IACd,OAAO,aAAa,eAAe,aAAa,KAAK,aAAa,WAAW;IAC7E,QAAO,eAAc,aAAa,MAAM,WAAW;IACpD;AAED,OAAI,QAAQ,cAAc,YAAY,QAAQ,eAAe,MAAM,QAAQ,CACzE,MAAK,YAAY,KAAK,SAAS,eAAe,gBAAgB,KAAK,OAAO,eAAe,CAAC;YAE1F,QAAQ,cAAc,YACpB,QAAQ,eAAe,MAAM,QAAQ,IACrC,KAAK,UAAU,eAAe,cAChC,MAAK,YAAY,KAAK,SAAS,eAAe,gBAAgB,OAAO,QAAQ;OAE7E,MAAK,OAAO,KAAK,SAAS,eAAe,gBAAgB,OAAO,QAAQ;AAG1E,UAAO;;;;;;;CC/GX,MAAM,YAAA,mBAAA;CACN,MAAM,EAAE,kBAAA,4BAAA;AAMR,QAAO,UAAU,MAAM,UAAU;EAC/B,YAAY,MAAM;AAChB,QAAK,QAAQ;AAOb,QAAK,uBAAO,IAAI,KAAK;;EAGvB,IAAI,IAAI,SAAS;GACf,MAAM,QAAQ,KAAK,KAAK,IAAI,GAAG;AAC/B,OAAI,CAAC,MACH,MAAK,KAAK,IAAI,IAAI;IAAE;IAAS,OAAO;IAAG,CAAC;QACnC;AACL,UAAM,UAAU;AAChB,MAAE,MAAM;;;EAIZ,OAAO,IAAI,SAAS;GAClB,MAAM,QAAQ,KAAK,KAAK,IAAI,GAAG;AAC/B,OAAI,CAAC,MACH;AAGF,KAAE,MAAM;AACR,OAAI,MAAM,UAAU,EAClB,MAAK,KAAK,OAAO,GAAG;YACX,MAAM,YAAY,QAC3B,OAAM,UAAU;;EAIpB,IAAI,IAAI;GACN,MAAM,QAAQ,KAAK,KAAK,IAAI,GAAG;AAC/B,OAAI,CAAC,MACH,QAAO;AAGT,OAAI,MAAM,QACR,QAAO,MAAM;AAGf,QAAK,MAAM,cAAc,cAAc,aAAa,KAAK,MAAM,CAC7D,KAAI,WAAW,aAAa,UAAU,gBAAgB,WAAW,eAAe,MAAM,KAAK,KAAK,IAAI;AAClG,UAAM,UAAU;AAChB,WAAO;;AAKX,QAAK,KAAK,OAAO,GAAG;AACpB,UAAO;;;;;;;CC9DX,MAAM,EAAE,cAAA,gBAAA;CACR,MAAM,EAAE,gBAAA,aAAA;CAER,MAAM,WAAA,mBAAA,CAAkC;CACxC,MAAM,WAAA,iBAAA;CACN,MAAM,YAAA,mBAAA;CACN,MAAM,EAAE,OAAO,iBAAA,iBAAA;CACf,MAAM,EAAE,yBAAyB,0BAA0B,iCAAA,mBAAA;CAE3D,MAAM,YAAA,oBAAA;CACN,MAAM,iBAAA,wBAAA;CACN,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,iBAAA,+BAAA;CACN,MAAM,EAAE,gBAAgB,oCAAA,iBAAA;CACxB,MAAM,EAAE,qBAAA,cAAA;CACR,MAAM,EAAE,SAAS,WAAA,oBAAA;CACjB,MAAM,eAAA,sBAAA;CACN,MAAM,EAAE,sBAAA,kBAAA;CACR,MAAM,UAAA,iBAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,iBAAA,wBAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,eAAA,wBAAA,CAAoD;CAC1D,MAAM,EAAE,uBAAA,wBAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,gDAAA,oBAAA;CACR,MAAM,EAAE,8BAAA,yBAAA;CACR,MAAM,EAAE,eAAe,iCAAA,wBAAA;CACvB,MAAM,kBAAA,2BAAA;CAEN,MAAM,2BAAA,mCAAA,CAAkE;CACxE,MAAM,0BAAA,kCAAA,CAAgE;CACtE,MAAM,2BAAA,mCAAA,CAAkE;CACxE,MAAM,iBAAA,yBAAA,CAA8C;CAEpD,MAAM,EAAE,OAAO,iCAAiC,yCAC9C,iCAAA,cAAA;CACF,MAAM,gBAAA,cAAA;CACN,MAAM,UAAA,iBAAA;CACN,MAAM,wBAAA,+BAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,mBAAA,0BAAA;CACN,MAAM,oBAAA,2BAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,QAAA,eAAA;CACN,MAAM,YAAA,mBAAA;CAEN,MAAM,oBAAA,2BAAA;CACN,MAAM,mBAAA,0BAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,oBAAA,2BAAA;CACN,MAAM,yBAAA,gCAAA;CACN,MAAM,QAAA,eAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,kBAAA,yBAAA;CACN,MAAM,gBAAA,uBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,UAAA,iBAAA;CAEN,MAAM,iBAAA,yBAAA;CACN,MAAM,qBAAA,8BAAA;CACN,MAAM,gBAAA,wBAAA;CACN,MAAM,4BAAA,sCAAA;CACN,MAAM,YAAA,qBAAA;CAEN,SAAS,gBAAgB,MAAM;AAC7B,OAAK,IAAI,QAAQ,cAAc,WAAW,KAAK,EAAE,OAAO,QAAQ,cAAc,WAAW,KAAK,CAC5F,MAAK,YAAY,MAAM;;CAI3B,SAAS,IAAI,QAAQ;AACnB,MAAI,SAAS,GACX,QAAO,MAAM;AAEf,SAAO;;CAGT,SAAS,qBAAqB,MAAM;AAClC,SAAO,IAAI,KAAK,UAAU,GAAG,EAAE,GAC7B,MAAM,IAAI,KAAK,SAAS,CAAC,GACzB,MAAM,KAAK,aAAa,GACxB,MAAM,IAAI,KAAK,UAAU,CAAC,GAC1B,MAAM,IAAI,KAAK,YAAY,CAAC,GAC5B,MAAM,IAAI,KAAK,YAAY,CAAC;;CAGhC,MAAM,sBAAsB;EAC1B,mBAAmB;EACnB,kBAAkB;EAClB,aAAa;EACb,mBAAmB;EACnB,wBAAwB;EACxB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,iBAAiB;EACjB,YAAY;EACZ,eAAe;EACf,cAAc;EACd,YAAY;EACZ,aAAa;EACb,cAAc;EACd,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACX;CAED,IAAM,eAAN,cAA2B,SAAS;EAClC,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,mBAAmB;AAExB,QAAK,iBAAiB;AACtB,QAAK,WAAW,UAAU;AAC1B,OAAI,CAAC,YAAY,QACf,aAAY,UAAU,EAAE;AAE1B,OAAI,CAAC,YAAY,QAAQ,YACvB,aAAY,QAAQ,cAAc;AAEpC,OAAI,CAAC,YAAY,QAAQ,SACvB,aAAY,QAAQ,WAAW;AAEjC,OAAI,CAAC,YAAY,QAAQ,YACvB,aAAY,QAAQ,cAAc,YAAY,QAAQ,gBAAgB,QAAQ,oBAAoB;AAGpG,QAAK,eAAe,YAAY,QAAQ;AAExC,QAAK,kBAAkB,kBAAkB,WAAW,KAAK,eAAe,EAAE,EAAE,EAC1E,eAAe,MAChB,CAAC;AAEF,QAAK,eAAe,YAAY,QAAQ,eAAe;AACvD,QAAK,UAAU,YAAY,QAAQ;AACnC,QAAK,aAAa,IAAI,UAAU,KAAK;AACrC,QAAK,YAAY;AACjB,QAAK,iBAAiB;AACtB,QAAK,mBAAmB;AACxB,QAAK,aAAa,YAAY,QAAQ;AACtC,QAAK,gBAAgB,YAAY,QAAQ,gBAAgB,EAAE;AAC3D,QAAK,qBAAqB,YAAY,QAAQ;AAC9C,OAAI,KAAK,eAAe,KAAA,EACtB,MAAK,aAAa,IAAI,UAAU,MAAM,EAAE,WAAW,MAAM,CAAC;AAG5D,OAAI,KAAK,mBACP,MAAK,cAAc,mBAAmB;AAGxC,QAAK,cAAc,YAAY,QAAQ;AACvC,QAAK,YAAY,YAAY,QAAQ;GAErC,MAAM,YAAY,YAAY,QAAQ,QAAQ,KAAA,IAAY,gBAAgB,YAAY,QAAQ;GAC9F,MAAM,SAAS,UAAU,SAAS,UAAU;AAC5C,OAAI,WAAW,KACb,OAAM,IAAI,UAAU,oBAAoB,UAAU,YAAY;AAGhE,QAAK,OAAO;AACZ,QAAK,UAAU,cAAc,iBAAiB,YAAY,QAAQ,eAChE,YAAY,QAAQ,eACpB,UAAU,mBAAmB,KAAK,KAAK;AAEzC,QAAK,YAAY,SAAS,WAAW,KAAK,eAAe,EAAE,EAAE,EAAE,kBAAkB,MAAM,CAAC;AACxF,QAAK,WAAW,QAAQ,WAAW,KAAK,eAAe,EAAE,EAAE;IACzD,QAAQ,KAAK;IACb,UAAU;IACV,mCAAmC,KAAK,UAAU,QAAQ;IAC3D,CAAC;AAEF,QAAK,wBAAwB,IAAI,iBAAiB;AAElD,QAAK,YAAY,YAAY,QAAQ,YAAY;AACjD,QAAK,gBAAgB,qBAAqB,YAAY,QAAQ,gCAAgB,IAAI,MAAM,CAAC;AACzF,QAAK,cAAc,IAAI,oBAAoB;AAC3C,QAAK,SAAS,IAAI,cAAc;IAAE,YAAY,KAAK;IAAa,QAAQ;IAAO,CAAC;AAChF,QAAK,cAAc,IAAI,cAAc,EAAE,QAAQ,MAAM,CAAC;AACtD,QAAK,kBAAkB,IAAI,gBAAgB;AAC3C,QAAK,4BAA4B,YAAY,QAAQ,cAAc;AAEnE,QAAK,sBAAsB;AAE3B,QAAK,kBAAkB,IAAI,0BAA0B,KAAK;AAK1D,QAAK,eAAe;AAGpB,QAAK,wCAAwC;AAG7C,QAAK,eAAe,IAAI,YAAY,KAAK,eAAe,KAAK,gBAAgB;IAC3E;IACA;IACD,CAAC;AAGF,QAAK,8BAAc,IAAI,SAAS;AAGhC,QAAK,gBAAgB;AACrB,QAAK,0BAA0B;;EAGjC,qBAAqB;AACnB,QAAK,gBAAgB;AACrB,QAAK,0BAA0B;;EAIjC,UAAU;AACR,OAAI,KAAK,cACP,QAAO,KAAK;GAGd,MAAM,YAAY,KAAK,cAAc,aAAa;AAElD,QAAK,gBAAgB,cAAc,OACjC,KAAK,kBAAkB,GACvB,KAAK,eAAe,WAAW,KAAK,kBAAkB,CAAC;AACzD,UAAO,KAAK;;EAGd,oBAAoB;AAClB,OAAI,KAAK,wBACP,QAAO,KAAK;GAGd,MAAM,SAAS,UAAU,aAAa,KAAK,SAAS,CAAC;AACrD,QAAK,0BAA0B;AAC/B,UAAO;;EAIT,kBAAkB,KAAK;AACrB,UAAO,UAAU,SAAS,KAAK;IAAE,SAAS,KAAK,SAAS;IAAE,UAAU,KAAK;IAAW,CAAC;;EAIvF,eAAe,aAAa,iBAAiB;GAY3C,MAAM,oBAAoB,YAAY,eAAe,MAAM,OAAO;GAClE,MAAM,SAAS,UAAU,SAAS,mBAAmB,EAAE,SAAS,iBAAiB,CAAC;AAClF,UAAO,WAAW,OAAO,kBAAkB;;EAI7C,mBAAmB;AACjB,OAAI,KAAK,QAAQ,iBAAiB,KAAK,gBACrC,KAAK,aAAa,YAAY,KAAK,aAEnC,QADuB,SAAS,eAAe,KAAK,aAAa,QAAQ,UAAU,CAC7D,SAAS;AAGjC,UAAO,KAAK;;EAGd,cAAc,OAAO;AACnB,OAAI,MAAM,SAAS,UAAU,CAAC,KAAK,aACjC,QAAO;AAGT,UAAO,SAAS,eAAe,KAAK,aAAa;;EAGnD,IAAI,aAAa;AACf,UAAO,KAAK,iBAAiB,SAAS,KAAK,UAAU,eAAe;;EAEtE,IAAI,UAAU;AACZ,UAAO,KAAK;;EAEd,IAAI,eAAe;AACjB,UAAO,KAAK;;EAEd,IAAI,gBAAgB;AAClB,UAAO,KAAK;;EAEd,IAAI,UAAU;AACZ,QAAK,MAAM,aAAa,cAAc,iBAAiB,KAAK,CAC1D,KAAI,UAAU,aAAa,UAAU,mBACnC,QAAO;AAGX,UAAO;;EAET,IAAI,MAAM;AACR,UAAO,UAAU,aAAa,KAAK,KAAK;;EAE1C,IAAI,cAAc;AAChB,UAAO,UAAU,aAAa,KAAK,KAAK;;EAE1C,IAAI,WAAW;AACb,UAAO,KAAK,eAAe,KAAK,YAAY;;EAI9C,IAAI,kBAAkB;AACpB,QAAK,MAAM,aAAa,cAAc,iBAAiB,KAAK,CAC1D,KAAI,UAAU,aAAa,UAAU,aACnC,QAAO;AAIX,UAAO;;EAGT,IAAI,iBAAiB;AACnB,UAAO,KAAK;;EAEd,IAAI,eAAe,gBAAgB;AACjC,QAAK,kBAAkB;;EAGzB,IAAI,cAAc;AAChB,UAAO,KAAK;;EAGd,IAAI,gBAAgB;AAClB,UAAO,KAAK;;EAGd,IAAI,aAAa;AACf,UAAO,KAAK;;EAGd,IAAI,WAAW,OAAO;AACpB,QAAK,4BAA4B;AACjC,eAAY,oBAAoB,KAAK;;EAGvC,WAAW;AACT,UAAO,QAAQ,KAAK,oBAAoB;;EAG1C,mBAAmB,QAAQ,OAAO;AAChC,OAAI,MAAM,YAAY,QACpB,MAAK,YAAY,QAAQ,MAAM,MAAM;AAGvC,SAAM,mBAAmB,QAAQ,MAAM;;EAGzC,MAAM,GAAG,MAAM;GACb,IAAI,OAAO;AACX,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,EACjC,SAAQ,KAAK;AAGf,OAAI,KAAK,iBAAiB,MACxB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,8CACA,oBACD,CAAC;AAGJ,OAAI,KAAK,wCAAwC,EAC/C,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,6DACA,oBACD,CAAC;AAGJ,OAAI,KAAK,oBAAoB;IAG3B,MAAM,UAAU,KAAK,cAAc,MAAM;AACzC,YAAQ,YAAY;IAEpB,IAAI,QAAQ,QAAQ;IACpB,IAAI,WAAW,KAAK;IACpB,MAAM,SAAS,KAAK,mBAAmB;AAEvC,WAAO,OAAO;KACZ,MAAM,OAAO;AACb,aAAQ,MAAM;AAEd,UAAK,8BAA8B;AACnC,YAAO,aAAa,MAAM,SAAS,YAAY;AAC/C,UAAK,8BAA8B;AAEnC,gBAAW;;cAEJ,KAAK,eAAe,UAG7B,KAAI,KAAK,WAAW;IAClB,IAAI,OAAO;AACX,WAAO,KAAK,aAAa,KAAK,UAAU,aAAa,UAAU,aAC7D,QAAO,KAAK;AAEd,SAAK,YAAY;UACZ;AACL,oBAAgB,KAAK;AACrB,sBAAkB,MAAM,KAAK;;YAEtB,MAAM;AACf,oBAAgB,KAAK;AACrB,sBAAkB,MAAM,KAAK;;;EAIjC,QAAQ,GAAG,MAAM;AACf,QAAK,MAAM,GAAG,MAAM,KAAK;;EAI3B,eAAe,IAAI;AACjB,UAAO,KAAK,WAAW,IAAI,GAAG;;EAGhC,IAAI,WAAW;AACb,UAAO,KAAK,aAAa;;EAE3B,IAAI,eAAe;AACjB,UAAO,KAAK;;EAEd,IAAI,SAAS;AACX,UAAO,KAAK,qBAAqB,MAAM;;EAEzC,IAAI,SAAS;AACX,UAAO,KAAK,qBAAqB,QAAQ;;EAE3C,IAAI,UAAU;AACZ,UAAO,KAAK;;EAEd,IAAI,QAAQ;AACV,UAAO,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IACvD,SAAS;IACT,aAAa,cAAc,YAAY,MAAM,EAC3C,SAAQ,UAAS,KAAK,eAAe,OAAO,KAAK,eAAe,WAChD,KAAK,eAAe,MAAM,OAAO,IACjC,KAAK,kBAAkB,SACxC,CAAC;IACH,CAAC;;EAEJ,IAAI,QAAQ;AACV,UAAO,KAAK,qBAAqB,OAAO;;EAE1C,IAAI,UAAU;AACZ,UAAO,KAAK,qBAAqB,SAAS;;EAE5C,IAAI,UAAU;AACZ,UAAO,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IACvD,SAAS;IACT,aAAa,cAAc,YAAY,MAAM,EAC3C,SAAQ,SAAQ,KAAK,eAAe,OACpB,KAAK,eAAe,MAAM,OAAO,IACjC,KAAK,kBAAkB,SACxC,CAAC;IACH,CAAC;;EAOJ,IAAI,UAAU;AACZ,UAAO,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IACvD,SAAS;IACT,aAAa,EAAE;IAChB,CAAC;;EAGJ,OAAO;GACL,IAAI,QAAQ,cAAc,WAAW,KAAK;AAC1C,UAAO,OAAO;AACZ,SAAK,YAAY,MAAM;AACvB,YAAQ,cAAc,WAAW,KAAK;;AAExC,QAAK,WAAW;AAChB,UAAO;;EAET,MAAM,SAAS;AAGb,OAAI,SAAS;AACX,SAAK,aAAa;AAElB,gBAAY,oBAAoB,MAAM,KAAA,GAAW,EAAE,SAAS,MAAM,CAAC;AACnE,gBAAY,QAAQ,KAAK;AAEzB;;AAEF,QAAK,OAAO,QAAQ;GAEpB,MAAM,eAAe,QAAQ,SAAS;GAEtC,MAAM,yBAAyB;IAC7B,MAAM,MAAM;IACZ,SAAS,gBAAgB;AAEvB,SAAI,aAAa;AACjB,iBAAY,oBAAoB,KAAK,KAAA,GAAW,EAAE,SAAS,MAAM,CAAC;;AAGpE,WAAO,IAAI,SAAQ,YAAW;AAC5B,SAAI,CAAC,KAAK,YAAY,MAAM;AAC1B,qBAAe;AACf,eAAS;AACT;;AAGF,UAAK,YAAY,kBAAkB;AACjC,qBAAe;AACf,eAAS;OACT;AAEF,UAAK,YAAY,QAAQ;MACzB;;GAGJ,MAAM,eAAe;IACnB,MAAM,MAAM;IACZ,SAAS,gBAAgB;AACvB,SAAI,aAAa;AACjB,iBAAY,QAAQ,IAAI;;AAG1B,WAAO,IAAI,SAAQ,YAAW;AAC5B,SAAI,KAAK,YAAY,OAAO,KAAK,GAAG;AAClC,qBAAe;AACf,eAAS;AACT;;AAGF,UAAK,YAAY,kBAAkB;AACjC,qBAAe;AACf,eAAS;OACT;MACF;;AAGJ,QAAK,OAAO,KAAK,cAAc,kBAAkB,KAAK;AAGtD,QAAK,OAAO,KAAK,cAAc,QAAQ,MAAM,KAAK;;EAGpD,kBAAkB,aAAa;AAC7B,UAAO,SAAS,WAAW,KAAK,eAAe,EAAE,EAAE;IACjD,SAAS;IACT,aAAa,cAAc,YAAY,MAAM,EAC3C,SAAQ,SAAQ,KAAK,kBAAkB,KAAK,eAAe,MAAM,OAAO,KAAK,aAC9E,CAAC;IACH,CAAC;;EAGJ,IAAI,QAAQ;GACV,MAAM,EAAE,oBAAoB;GAC5B,IAAI,QAAQ;AAEZ,OAAI,mBAAmB,gBAAgB,eAAe,OAAO;IAC3D,MAAM,kBAAkB,wBAAwB,iBAAiB,SAAS,OAAO;AAEjF,QAAI,gBACF,SAAQ,iBAAiB,gBAAgB;UAEtC;IACL,MAAM,eAAe,6BAA6B,MAAM,QAAQ;AAEhE,QAAI,aACF,SAAQ,iBAAiB,aAAa;;AAI1C,WAAQ,gCAAgC,MAAM;AAE9C,UAAO;;EAGT,IAAI,MAAM,OAAO;GACf,MAAM,EAAE,oBAAoB;GAC5B,IAAI;AAEJ,OAAI,mBAAmB,gBAAgB,eAAe,OAAO;AAC3D,cAAU,wBAAwB,iBAAiB,SAAS,OAAO;AAEnE,QAAI,CAAC,SAAS;AACZ,eAAU,KAAK,gBAAgB,QAAQ,QAAQ;AAE/C,UAAK,QAAQ,SAAS,gBAAgB,WAAW;;AAGnD,YAAQ,cAAc;cACb,mBAAmB,gBAAgB,kBAAkB,SAAS;IACvE,MAAM,eAAe,6BAA6B,MAAM,QAAQ;IAChE,MAAM,cAAc,KAAK;AAEzB,QAAI,iBAAiB,QAAQ,gBAAgB,KAC3C;AAGF,QAAI,iBAAiB,KACnB,WAAU;SACL;AACL,eAAU,KAAK,cAAc,QAAQ;AACrC,iBAAY,QAAQ,QAAQ;;AAG9B,YAAQ,cAAc;;;EAI1B,IAAI,MAAM;AACR,UAAO,KAAK,kBAAkB,KAAK,gBAAgB,MAAM;;EAE3D,IAAI,IAAI,OAAO;AACb,OAAI,KAAK,gBACP,MAAK,gBAAgB,MAAM;;EAI/B,IAAI,OAAO;AACT,UAAO,KAAK,kBAAkB,wBAAwB,KAAK,iBAAiB,OAAO,GAAG;;EAGxF,IAAI,OAAO;GACT,MAAM,EAAE,oBAAoB;AAC5B,OAAI,CAAC,mBAAmB,gBAAgB,eAAe,UACnD,gBAAgB,kBAAkB,QACpC,QAAO;AAGT,UAAO,yBAAyB,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,WAAW,CAAC,CAAC;;EAGtF,IAAI,KAAK,OAAO;AACd,OAAI,UAAU,QACV,MAAM,kBAAkB,WACvB,MAAM,eAAe,UAAU,MAAM,eAAe,WACvD,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,8DACA,wBACD,CAAC;GAGJ,MAAM,cAAc,KAAK;AACzB,OAAI,UAAU,YACZ;AAGF,OAAI,gBAAgB,MAAM;AACxB,gBAAY,WAAW,SAAS,OAAO,YAAY;AACnD;;GAGF,MAAM,EAAE,oBAAoB;AAC5B,OAAI,oBAAoB,KACtB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,yDACA,wBACD,CAAC;AAGJ,mBAAgB,QAAQ,MAAM;;EAGhC,qBAAqB,SAAS;AAE5B,OAAI,YAAY,KAAK,cACnB,MAAK,sBAAsB,KAAK;AAElC,QAAK,MAAM,sBAAsB,KAAK,sBACpC,oBAAmB,kBAAkB,QAAQ;;EAIjD,YAAY,MAAM;GAEhB,MAAM,eAAe,oBADH,KAAK,aAAa,KACmB;AAEvD,OAAI,CAAC,aACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,gCAAgC,OAAO,kBACvC,oBACD,CAAC;GAGJ,MAAM,OAAO,aAAa,WAAW,KAAK,eAAe,CAAC,GAAG,CAAC;AAC9D,QAAK,mBAAmB;AACxB,UAAO;;EAGT,cAAc;AACZ,UAAO,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9C,OAAO;KAAE,MAAM;KAAM,QAAQ;KAAG;IAChC,KAAK;KAAE,MAAM;KAAM,QAAQ;KAAG;IAC/B,CAAC;;EAGJ,4BAA4B,QAAQ,MAAM;AACxC,gBAAa,KAAK,eAAe,OAAO;AAExC,OAAI,KAAK,SAAS,KAAK,CACrB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,gEACA,wBACD,CAAC;AAGJ,UAAO,sBAAsB,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9D,eAAe;IACf;IACA;IACD,CAAC;;EAIJ,mBAAmB,MAAM;AACvB,OAAI,KAAK,iBAAiB,OACxB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,kDACA,oBACD,CAAC;AAGJ,OAAI,KAAK,SAAS,MAAM,CACtB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,wDACA,wBACD,CAAC;AAGJ,UAAO,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IACrD,eAAe;IACf;IACD,CAAC;;EAGJ,eAAe,MAAM;AACnB,UAAO,KAAK,WAAW,KAAK,eAAe,EAAE,EAAE;IAC7C,eAAe;IACf;IACD,CAAC;;EAGJ,cAAc,MAAM;AAClB,UAAO,QAAQ,WAAW,KAAK,eAAe,EAAE,EAAE;IAChD,eAAe;IACf;IACD,CAAC;;EAIJ,cAAc,WAAW,SAAS;AAChC,gBAAa,KAAK,eAAe,UAAU;AAE3C,OAAI,KAAK,iBAAiB,OACxB,aAAY,eAAe,UAAU;GAGvC,IAAI,UAAU;AACd,OAAI,WAAW,QAAQ,OAAO,KAAA,EAC5B,WAAU,QAAQ;GAGpB,MAAM,YAAY,KAAK,iBAAiB,UAAU,KAAK,gBAAgB,0BAA0B,UAAU;AAE3G,UAAO,cAAc,MAAM,WAAW,WAAW,MAAM,SAAS,KAAK;;EAIvE,gBAAgB,WAAW,eAAe,SAAS;AACjD,UAAO,6BAA6B,MAAM,WAAW,eAAe,QAAQ;;EAG9E,yBAAyB;AACvB,UAAO,iBAAiB,WAAW,KAAK,eAAe,EAAE,EAAE,EAAE,eAAe,MAAM,CAAC;;EAGrF,gBAAgB,WAAW;AACzB,gBAAa,KAAK,eAAe,UAAU;AAE3C,OAAI,KAAK,iBAAiB,OACxB,aAAY,eAAe,UAAU;AAGvC,UAAO,KAAK,iBAAiB,EAAE,WAAW,CAAC;;EAG7C,kBAAkB,WAAW,MAAM;AACjC,OAAI,cAAc,KAAA,EAChB,aAAY;AAEd,eAAY,cAAc,OAAO,OAAO,UAAU,GAAG;GAErD,MAAM,YAAY,mBAAmB,KAAK,eAAe,WAAW,KAAK;AACzE,UAAO,KAAK,iBAAiB;IAC3B,WAAW,UAAU;IACrB,iBAAiB,UAAU;IAC3B,WAAW,UAAU;IACtB,CAAC;;EAKJ,iBAAiB,EACf,WACA,OACA,WACA,mBACC;AACD,UAAO,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE;IACtD;IACA;IACA;IACA;IACA,eAAe;IAChB,CAAC;;EAGJ,iBAAiB,MAAM,YAAY,QAAQ;AACzC,UAAO,WAAW,WAAW,KAAK,eAAe,EAAE,EAAE;IAAE;IAAM;IAAY;IAAQ,CAAC;;EAGpF,mBAAmB,MAAM,YAAY,QAAQ;GAC3C,MAAM,eAAe,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IAAE;IAAM;IAAY;IAAQ,CAAC;AAClG,QAAK,sBAAsB,IAAI,aAAa;AAC5C,UAAO;;EAGT,WAAW,MAAM,MAAM;AACrB,OAAI,KAAK,aAAa,UAAU,cAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,iCACA,oBACD,CAAC;YACO,WAAW,OAAO,KAAK,CAChC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,8BACA,oBACD,CAAC;AAGJ,UAAO,MAAM,MAAM,MAAM,KAAK;;EAIhC,UAAU,MAAM;AACd,OAAI,KAAK,aAAa,UAAU,cAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,gCACA,oBACD,CAAC;YACO,WAAW,OAAO,KAAK,CAChC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,8BACA,wBACD,CAAC;AAGJ,QAAK,WAAW,KAAK;AAErB,UAAO;;EAIT,WAAW,MAAM;GACf,MAAM,cAAc;GACpB,MAAM,cAAc,KAAK;GAEzB,MAAM,SAAS,cAAc,OAAO,KAAK;AACzC,OAAI,OACF,QAAO,QAAQ,KAAK;AAGtB,OAAI,gBAAgB,aAAa;AAC/B,SAAK,MAAM,uBAAuB,4CAA4C,KAAK,CACjF,qBAAoB,iBAAiB;AAGvC,SAAK,MAAM,uBAAuB,4CAA4C,KAAK,CACjF,KAAI,oBAAoB,aAAa,SACnC,2BAA0B,qBAAqB,mBAAmB,CAChE,SAAS,eAAe,YAAY,EACpC,SAAS,eAAe,YAAY,CACrC,CAAC;AAIN,SAAK,MAAM,uBAAuB,4CAA4C,KAAK,CACjF,KAAI,oBAAoB,eACtB,qBAAoB,eAAe,YAAY;;;EAMvD,IAAI,SAAS;AACX,UAAO,KAAK,WAAW,oBAAoB,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;;EAEvE,IAAI,OAAO,WAAW;AACpB,eAAY,OAAO,UAAU;AAC7B,QAAK,WAAW,cAAc,WAAW,KAAK,KAAK;IACjD,MAAM;IACN,aAAa;IACd,CAAC;;EAIJ,QAAQ;EAER,gBAAgB;EAEhB,gBAAgB;EAEhB,IAAI,cAAc;AAChB,OAAI,CAAC,KAAK,aACR,MAAK,eAAe,eAAe,WAAW,KAAK,cAAc;AAKnE,UAAO,KAAK;;EAGd,IAAI,SAAS;AACX,OAAI,KAAK,gBAAgB,KAAK,aAAa,mBACzC,QAAO;AAGT,UAAO;;EAGT,IAAI,kBAAkB;AACpB,OAAI,KAAK,gBAAgB,KAAK,aAAa,mBACzC,QAAO;AAGT,UAAO;;EAIT,eAAe;AACb,UAAO,KAAK,eAAe,KAAK,aAAa,aAAa;;EAK5D,iBAAiB;GACf,MAAM,OAAO,UAAU,WACrB,KAAK,eACL;IACE,aAAa,KAAK;IAClB,UAAU,KAAK;IACf,aAAa,KAAK;IACnB,CACF;AAED,QAAK,OAAO,KAAK;AACjB,QAAK,UAAU,KAAK;AACpB,UAAO;;;AAIX,gBAAe,oBAAoB,aAAa,WAAW,mBAAmB;AAC9E,OAAM,aAAa,WAAW,yBAAyB,UAAU;AACjE,OAAM,aAAa,WAAW,wBAAwB,UAAU;AAChE,OAAM,aAAa,WAAW,yBAAyB,UAAU;AACjE,OAAM,aAAa,WAAW,eAAe,UAAU;AAEvD,cAAa,UAAU,uBAAuB,aAAa,SAAU,eAAe;AAClF,SAAO,gCAAgC,eAAe,KAAK;GAC3D;AAEF,cAAa,UAAU,yBAAyB,aAAa,SAAU,WAAW,WAAW;AAC3F,SAAO,wCAAwC,WAAW,WAAW,KAAK;GAC1E;AAEF,cAAa,UAAU,yBAAyB,aAAa,SAAS,uBAAuB,YAAY;AACvG,SAAO,6BAA6B,YAAY,KAAK;GACrD;AAEF,QAAO,UAAU,EACf,gBAAgB,cACjB;;;;;CCr+BD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,yBAAA,gCAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,OAAA,cAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,sBAAA,6BAAA;CACN,MAAM,6BAAA,oCAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,6BAA6B;;CAG3E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,YAAY;AAGvD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;CAGtC,SAAS,gBAAgB,cAAc;EACrC,IAAI,eAAe,gBAAgB,IAAI,aAAa;AACpD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,OAAO,OAAO,KAAK;AAClC,SAAM,OAAO,cAAc;IACzB,IAAI,WAAW;KACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,YAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;IAEjE,IAAI,SAAS,GAAG;KACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;KAGH,MAAM,IAAI,QAAQ;AAClB,SAAI,CAAC,MAAM,SAAS,EAAE,CACpB,OAAM,IAAI,aAAa,UAAU,uCAAuC;AAE1E,aAAQ,IAAI,GAAG,QAAQ,EAAE;;IAE5B,CAAC;AACF,UAAO,iBAAiB,cAAc,EACpC,UAAU,EAAE,cAAc,OAAO,EAClC,CAAC;AACF,mBAAgB,IAAI,cAAc,aAAa;;AAEjD,SAAO;;AAGT,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,OAAK,eAAe,SAAS,aAAa;AAE1C,QAAM,OAAO,SAAS,gBAAgB,aAAa,CAAC;;AAGtD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,kCAAkB,IAAI,SAAS;CACrC,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,iBAAiB,aAAa,KAAK;GACvC,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,qBAAqB,eAAe;IAClC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,qBAAqB,GAAG,KAAK,CAAC;;GAGnF,uBAAuB,WAAW,WAAW;IAC3C,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4FAA4F,UAAU,OAAO,WAC9G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,uBAAuB,GAAG,KAAK,CAAC;;GAGrF,uBAAuB,YAAY;IACjC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2FAA2F,UAAU,OAAO,WAC7G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,uBAAuB,GAAG,KAAK,CAAC;;GAGrF,cAAc,WAAW;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kFAAkF,UAAU,OAAO,WACpG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS,uBAAuB,QAAQ,cAAc,QAAQ,EAC5D,SAAS,gEACV,CAAC;cACO,MAAM,SAAS,OAAO,CAC/B,UAAS,uBAAuB,QAAQ,cAAc,QAAQ,EAC5D,SAAS,2EACV,CAAC;SAEF,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAGN,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,GAAG,KAAK,CAAC;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,gBAAgB,WAAW,eAAe;IACxC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,qFAAqF,UAAU,OAAO,WACvG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS,uBAAuB,QAAQ,cAAc,QAAQ,EAC5D,SAAS,kEACV,CAAC;cACO,MAAM,SAAS,OAAO,CAC/B,UAAS,uBAAuB,QAAQ,cAAc,QAAQ,EAC5D,SAAS,6EACV,CAAC;SAEF,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAGN,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB,GAAG,KAAK,CAAC;cACpE;AACR,+DAA0D,aAAa;;;GAI3E,yBAAyB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB,CAAC;;GAG9E,eAAe,MAAM;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mFAAmF,UAAU,OAAO,WACrG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe,GAAG,KAAK,CAAC;;GAG7E,mBAAmB,MAAM;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB,GAAG,KAAK,CAAC;;GAGjF,cAAc,MAAM;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kFAAkF,UAAU,OAAO,WACpG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,GAAG,KAAK,CAAC;;GAG5E,4BAA4B,QAAQ,MAAM;IACxC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iGAAiG,UAAU,OAAO,WACnH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,4BAA4B,GAAG,KAAK,CAAC;;GAG1F,WAAW,MAAM;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+EAA+E,UAAU,OAAO,WACjG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,6DACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW,GAAG,KAAK,CAAC;cAC/D;AACR,+DAA0D,aAAa;;;GAI3E,UAAU,MAAM;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8EAA8E,UAAU,OAAO,WAChG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,4DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU,GAAG,KAAK,CAAC;cAC9D;AACR,+DAA0D,aAAa;;;GAI3E,gBAAgB,WAAW;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB,GAAG,KAAK,CAAC;;GAG9E,kBAAkB,WAAW,eAAe;IAC1C,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB,GAAG,KAAK,CAAC;;GAGhF,YAAY,YAAY;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,gFAAgF,UAAU,OAAO,WAClG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY,GAAG,KAAK,CAAC;;GAG1E,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,CAAC;;GAGnE,mBAAmB,MAAM;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,qEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,WAAW,QAAQ,cAAc,QAAQ,EAChD,SAAS,qEACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB,GAAG,KAAK,CAAC;;GAGjF,iBAAiB,MAAM;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,qFAAqF,UAAU,OAAO,WACvG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,mEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,WAAW,QAAQ,cAAc,QAAQ,EAChD,SAAS,mEACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB,GAAG,KAAK,CAAC;;GAG/E,kBAAkB,aAAa;IAC7B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sFAAsF,UAAU,OAAO,WACxG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB,GAAG,KAAK,CAAC;;GAGhF,OAAO;IACL,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;IAE1G,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,KAAK,GAAG,KAAK,CAAC;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAG3G,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,OAAO;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;IAE3G,MAAM,OAAO,EAAE;AACf,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;KACzC,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS,yDAAyD,IAAI;MACtE,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,MAAM,GAAG,KAAK;cACjC;AACR,+DAA0D,aAAa;;;GAI3E,UAAU;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;IAE7G,MAAM,OAAO,EAAE;AACf,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;KACzC,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS,2DAA2D,IAAI;MACxE,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;cACnC;AACR,+DAA0D,aAAa;;;GAI3E,WAAW;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY,UAAU;;GAGvC,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAG3G,WAAO,QAAQ,YAAY,OAAO;;GAGpC,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,eAAe;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,CAAC;;GAGpE,eAAe,WAAW;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mFAAmF,UAAU,OAAO,WACrG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe,GAAG,KAAK,CAAC;;GAG7E,UAAU;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;IAE7G,MAAM,OAAO,EAAE;AACf,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;KACzC,IAAI,SAAS,UAAU;AACvB,SAAI,KAAK,GAAG,OAAO,CACjB,UAAS,MAAM,eAAe,OAAO;SAErC,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS,2DAA2D,IAAI;MACxE,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;cACnC;AACR,+DAA0D,aAAa;;;GAI3E,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;IAE5G,MAAM,OAAO,EAAE;AACf,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;KACzC,IAAI,SAAS,UAAU;AACvB,SAAI,KAAK,GAAG,OAAO,CACjB,UAAS,MAAM,eAAe,OAAO;SAErC,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS,0DAA0D,IAAI;MACvE,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;cAClC;AACR,+DAA0D,aAAa;;;GAI3E,kBAAkB;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;IAEH,MAAM,OAAO,EAAE;AACf,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;KACzC,IAAI,SAAS,UAAU;AACvB,SAAI,KAAK,GAAG,OAAO,CACjB,UAAS,MAAM,eAAe,OAAO;SAErC,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS,mEAAmE,IAAI;MAChF,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,gBAAgB,GAAG,KAAK;cAC3C;AACR,+DAA0D,aAAa;;;GAI3E,cAAc,WAAW;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kFAAkF,UAAU,OAAO,WACpG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,GAAG,KAAK,CAAC;;GAG5E,iBAAiB,WAAW;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,qFAAqF,UAAU,OAAO,WACvG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB,GAAG,KAAK,CAAC;;GAG/E,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,cAAc,MAAM,wBAAwB;AACvD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;MACrE;;GAGJ,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,YAAY;;GAGlC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,SAAS;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;cACnD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,QAAQ,cAAc,GAAG,EACvC,SAAS,uEACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,cAAc,MAAM,gBAAgB;AAC/C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;MAC7D;;GAGJ,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,cAAc,MAAM,gBAAgB;AAC/C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;MAC7D;;GAGJ,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,MAAM,cAAc,MAAM,eAAe;AAC9C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;MAC5D;;GAGJ,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,MAAM,cAAc,MAAM,eAAe;AAC9C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;MAC5D;;GAGJ,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,cAAc,MAAM,qBAAqB;AACpD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;MAClE;;GAGJ,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yEACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,qBAAqB;;GAG1E,IAAI,kBAAkB,GAAG;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,uBAAuB;;GAG7C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yEACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;GAG9D,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wEACV,CAAC;AAEJ,YAAQ,YAAY,WAAW;;GAGjC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yEACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yEACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,2BAA2B,QAAQ,cAAc,GAAG,EACtD,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yEACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yEACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,4BAA4B;IAC9B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,6BAA6B;;GAGlF,IAAI,0BAA0B,GAAG;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4FACV,CAAC;AAEJ,YAAQ,YAAY,+BAA+B;;GAGrD,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,6BAA6B;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,8BAA8B;;GAGnF,IAAI,2BAA2B,GAAG;IAChC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6FACV,CAAC;AAEJ,YAAQ,YAAY,gCAAgC;;GAGtD,IAAI,yBAAyB;IAC3B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,0BAA0B;;GAG/E,IAAI,uBAAuB,GAAG;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yFACV,CAAC;AAEJ,YAAQ,YAAY,4BAA4B;;GAGlD,IAAI,wBAAwB;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,yBAAyB;;GAG9E,IAAI,sBAAsB,GAAG;IAC3B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,2BAA2B;;GAGjD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,gBAAgB,GAAG;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,qBAAqB;;GAG3C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,sBAAsB;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,uBAAuB;;GAG5E,IAAI,oBAAoB,GAAG;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,yBAAyB;;GAG/C,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,cAAc,MAAM,kBAAkB;AACjD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;MAC/D;;GAGJ,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,qBAAqB;;GAG1E,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,SAAS,WAAW;GAC1C,sBAAsB,EAAE,YAAY,MAAM;GAC1C,wBAAwB,EAAE,YAAY,MAAM;GAC5C,wBAAwB,EAAE,YAAY,MAAM;GAC5C,eAAe,EAAE,YAAY,MAAM;GACnC,iBAAiB,EAAE,YAAY,MAAM;GACrC,wBAAwB,EAAE,YAAY,MAAM;GAC5C,gBAAgB,EAAE,YAAY,MAAM;GACpC,oBAAoB,EAAE,YAAY,MAAM;GACxC,eAAe,EAAE,YAAY,MAAM;GACnC,6BAA6B,EAAE,YAAY,MAAM;GACjD,YAAY,EAAE,YAAY,MAAM;GAChC,WAAW,EAAE,YAAY,MAAM;GAC/B,iBAAiB,EAAE,YAAY,MAAM;GACrC,mBAAmB,EAAE,YAAY,MAAM;GACvC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,oBAAoB,EAAE,YAAY,MAAM;GACxC,kBAAkB,EAAE,YAAY,MAAM;GACtC,mBAAmB,EAAE,YAAY,MAAM;GACvC,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,OAAO,EAAE,YAAY,MAAM;GAC3B,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,cAAc,EAAE,YAAY,MAAM;GAClC,gBAAgB,EAAE,YAAY,MAAM;GACpC,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,iBAAiB,EAAE,YAAY,MAAM;GACrC,eAAe,EAAE,YAAY,MAAM;GACnC,kBAAkB,EAAE,YAAY,MAAM;GACtC,gBAAgB,EAAE,YAAY,MAAM;GACpC,KAAK,EAAE,YAAY,MAAM;GACzB,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,SAAS,EAAE,YAAY,MAAM;GAC7B,eAAe,EAAE,YAAY,MAAM;GACnC,aAAa,EAAE,YAAY,MAAM;GACjC,SAAS,EAAE,YAAY,MAAM;GAC7B,iBAAiB,EAAE,YAAY,MAAM;GACrC,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,YAAY,EAAE,YAAY,MAAM;GAChC,OAAO,EAAE,YAAY,MAAM;GAC3B,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,eAAe,EAAE,YAAY,MAAM;GACnC,aAAa,EAAE,YAAY,MAAM;GACjC,oBAAoB,EAAE,YAAY,MAAM;GACxC,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,iBAAiB,EAAE,YAAY,MAAM;GACrC,oBAAoB,EAAE,YAAY,MAAM;GACxC,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,kBAAkB,EAAE,YAAY,MAAM;GACtC,UAAU,EAAE,YAAY,MAAM;GAC9B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;GACjC,OAAO,EAAE,YAAY,MAAM;GAC3B,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,kBAAkB,EAAE,YAAY,MAAM;GACtC,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,kBAAkB,EAAE,YAAY,MAAM;GACtC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,cAAc,EAAE,YAAY,MAAM;GAClC,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,aAAa,EAAE,YAAY,MAAM;GACjC,2BAA2B,EAAE,YAAY,MAAM;GAC/C,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,gBAAgB,EAAE,YAAY,MAAM;GACpC,WAAW,EAAE,YAAY,MAAM;GAC/B,sBAAsB,EAAE,YAAY,MAAM;GAC1C,4BAA4B,EAAE,YAAY,MAAM;GAChD,wBAAwB,EAAE,YAAY,MAAM;GAC5C,uBAAuB,EAAE,YAAY,MAAM;GAC3C,SAAS,EAAE,YAAY,MAAM;GAC7B,cAAc,EAAE,YAAY,MAAM;GAClC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,oBAAoB,EAAE,YAAY,MAAM;GACxC,aAAa,EAAE,YAAY,MAAM;GACjC,iBAAiB,EAAE,YAAY,MAAM;GACrC,cAAc,EAAE,YAAY,MAAM;GAClC,gBAAgB,EAAE,YAAY,MAAM;GACpC,qBAAqB,EAAE,YAAY,MAAM;GACzC,sBAAsB,EAAE,YAAY,MAAM;GAC1C,eAAe,EAAE,YAAY,MAAM;GACnC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;GACvC,kBAAkB,EAAE,YAAY,MAAM;GACtC,mBAAmB,EAAE,YAAY,MAAM;IACtC,OAAO,cAAc;IAAE,OAAO;IAAY,cAAc;IAAM;IAC9D,OAAO,cAAc;IACpB,OAAO;KAAE,SAAS;KAAM,QAAQ;KAAM,iBAAiB;KAAM,WAAW;KAAM;IAC9E,cAAc;IACf;GACF,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,uBAAA;;;;;CC75IN,MAAM,eAAA,uBAAA,CAA0C;AAEhD,SAAQ,iBAAiB,MAAM,wBAAwB,aAAa;;;;;ACDhD,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,WAAA,kBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,WAAS,eAAe,SAAS,aAAa;;AAGhD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,oBAAoB,aAAa,SAAS;GAC9C,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,YAAY,WAAW,GAC5C,OAAO,cAAc;GAAE,OAAO;GAAe,cAAc;GAAM,EACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CC3GN,MAAM,cAAA,qBAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,EAAE,mBAAA,iBAAA;AAER,SAAQ,cAAc,cAAc,SAAS,EAAE,yBAAyB,UAAU,EAAE,KAAK;AACvF,MAAI,QAAQ,gBAAgB,SAAS,CAAC,uBACpC,QAAO,YAAY,WAAW,cAAc,EAAE,EAAE,EAAE,SAAS,CAAC;AAE9D,SAAO,SAAS,WAAW,cAAc,EAAE,EAAE,EAAE,SAAS,CAAC;;AAG3D,SAAQ,iBAAiB,GAAG,SAAS;AACnC,SAAO,eAAe,QAAQ,WAAW,GAAG,KAAK,CAAC;;;;;;CCXpD,MAAM,gBAAA,wBAAA;CACN,MAAM,EAAE,SAAS,WAAA,oBAAA;CACjB,MAAM,EAAE,eAAe,iCAAA,wBAAA;CACvB,MAAM,eAAA,sBAAA;CACN,MAAM,YAAA,mBAAA;CAEN,IAAM,wBAAN,MAA4B;EAC1B,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,gBAAgB;AACrB,QAAK,iBAAiB,YAAY;;EAGpC,aAAa;AACX,UAAO;;EAGT,mBAAmB,eAAe,UAAU,UAAU;AACpD,iBAAc,MAAM,KAAK,eAAe,cAAc;AAEtD,UAAO,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IACrD,eAAe,KAAK;IACpB,MAAM;IACN;IACA;IACD,CAAC;;EAIJ,eAAe,WAAW,eAAe,SAAS;GAChD,IAAI,cAAc;AAElB,OAAI,cAAc,QAChB,eAAc;YACL,cAAc,OACvB,eAAc;GAGhB,MAAM,WAAW,UAAU,WAAW,KAAK,eAAe;IACxD;IACA,aAAa;IACb,UAAU;IACX,CAAC;GAEF,IAAI,UAAU;AACd,OAAI,kBAAkB,GACpB,WAAU,6BAA6B,UAAU,WAAW,eAAe,EAAE,CAAC;AAGhF,OAAI,YAAY,KACd,UAAS,YAAY,QAAQ;AAG/B,OAAI,YAAY,KACd,UAAS,YAAY,QAAQ;AAG/B,YAAS,UAAU,KAAK,eAAe;AAEvC,UAAO;;EAIT,mBAAmB,OAAO;GAGxB,MAAM,WAAW,UAAU,WAAW,KAAK,eAAe;IACxD,aAAa;IACb,UAAU;IACX,CAAC;GAIF,MAAM,UAAU,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9D,eAAe;IACf,MAAM;IACN,UAAU;IACV,UAAU;IACX,CAAC;AAEF,YAAS,YAAY,QAAQ;GAG7B,MAAM,cAAc,cAAc,UAAU,QAAQ,QAAQ;AAC5D,YAAS,YAAY,YAAY;GAIjC,MAAM,cAAc,cAAc,UAAU,QAAQ,QAAQ;AAC5D,eAAY,YAAY,YAAY;AAGpC,OAAI,UAAU,KAAA,GAAW;IAGvB,MAAM,eAAe,cAAc,UAAU,SAAS,QAAQ;AAC9D,gBAAY,YAAY,aAAa;AAIrC,iBAAa,YAAY,SAAS,eAAe,MAAM,CAAC;;GAK1D,MAAM,cAAc,cAAc,UAAU,QAAQ,QAAQ;AAC5D,eAAY,YAAY,YAAY;AAMpC,UAAO;;;AAIX,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCrHD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,eAAA,sBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,kBAAkB;GACtB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,mBAAmB,eAAe,UAAU,UAAU;IACpD,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iGAAiG,UAAU,OAAO,WACnH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB,GAAG,KAAK,CAAC;;GAGjF,eAAe,WAAW,eAAe;IACvC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,6FAA6F,UAAU,OAAO,WAC/G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACT,wBAAwB;MACzB,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,aAAa,QAAQ,cAAc,QAAQ,EAClD,SAAS,0EACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe,GAAG,KAAK,CAAC;;GAG7E,qBAAqB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB,GAAG,KAAK,CAAC;;GAGjF,aAAa;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY,YAAY;;;AAG3C,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,oBAAoB,EAAE,YAAY,MAAM;GACxC,gBAAgB,EAAE,YAAY,MAAM;GACpC,oBAAoB,EAAE,YAAY,MAAM;GACxC,YAAY,EAAE,YAAY,MAAM;IAC/B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CC1ON,MAAM,eAAA,uBAAA,CAA0C;CAEhD,IAAM,oBAAN,cAAgC,aAAa;EAK3C,IAAI,QAAQ;AACV,QAAK,SAAS;GAEd,MAAM,UAAU,KAAK,MAAM,MAAK,MAAK,EAAE,eAAe,WAAW,EAAE,SAAS,WAAW,EAAE,QAAQ;AACjG,OAAI,YAAY,KAAA,EACd,QAAO;AAGT,OAAI,CAAC,QAAQ,eAAe,MAAM,QAAQ,CACxC,QAAO;AAGT,UAAO,QAAQ,eAAe,MAAM,QAAQ;;EAG9C,IAAI,MAAM,OAAO;GACf,IAAI;AACJ,OAAI,UAAU,KACZ,WAAU,KAAK,MAAM,MACnB,MAAK,EAAE,eAAe,WACjB,EAAE,SAAS,YACV,CAAC,EAAE,eAAe,MAAM,QAAQ,IAAI,EAAE,eAAe,MAAM,QAAQ,KAAK,OAC/E;OAED,WAAU,KAAK,MAAM,MACnB,MAAK,EAAE,eAAe,WACjB,EAAE,SAAS,WACV,EAAE,eAAe,MAAM,QAAQ,IAAI,EAAE,eAAe,MAAM,QAAQ,KAAK,MAC9E;AAGH,OAAI,QACF,SAAQ,UAAU;;;AAKxB,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;CC9CD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,WAAA,kBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,WAAS,eAAe,SAAS,aAAa;;AAGhD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,SAAS;GAChD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,WAAW;;;AAGnC,SAAO,iBAAiB,cAAc,WAAW;GAC/C,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;IACnE,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,4BAAA;;;;;CCrSN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,YAAA,mBAAA;CACN,MAAM,EAAE,oCAAA,iBAAA;CACR,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,SAAS,WAAA,oBAAA;CACjB,MAAM,EAAE,YAAA,mBAAA;CACR,MAAM,EAAE,cAAA,uBAAA;CAER,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAItC,QAAK,gBAAgB;AACrB,QAAK,aAAa;;EAGpB,2BAA2B;GAEzB,MAAM,SAAS,KAAK;AAEpB,OAAI,UAAU,CAAC,OAAO,eAAe,MAAM,WAAW;SAC/C,MAAM,UAAU,OAAO,QAC1B,KAAI,WAAW,KACb,QAAO,gBAAgB;;;EAM/B,gBAAgB;GACd,MAAM,SAAS,KAAK;AACpB,OAAI,OACF,QAAO,iBAAiB;;EAI5B,cAAc,MAAM,OAAO,UAAU;AACnC,OAAI,CAAC,KAAK,cAAc,SAAS,YAAY;AAC3C,SAAK,gBAAgB,KAAK,eAAe,MAAM,WAAW;AAC1D,QAAI,KAAK,cACP,MAAK,0BAA0B;AAEjC,SAAK,eAAe;;AAEtB,SAAM,cAAc,MAAM,OAAO,SAAS;;EAG5C,IAAI,cAAc;GAChB,IAAI,SAAS,cAAc,OAAO,KAAK;AACvC,OAAI,CAAC,OACH,QAAO;AAGT,OAAI,OAAO,eAAe,UAAU;AAClC,aAAS,cAAc,OAAO,OAAO;AACrC,QAAI,CAAC,UAAU,OAAO,eAAe,SACnC,QAAO;;AAGX,UAAO;;EAGT,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,OAAO;AACT,UAAO,gCAAgC,6CAA6C,KAAK,CAAC;;EAE5F,IAAI,KAAK,OAAO;AACd,QAAK,cAAc;;EAIrB,YAAY;AACV,OAAI,KAAK,eAAe,MAAM,QAAQ,CACpC,QAAO,KAAK,eAAe,MAAM,QAAQ;AAG3C,UAAO,KAAK;;EAGd,IAAI,QAAQ;AACV,UAAO,KAAK,WAAW;;EAEzB,IAAI,MAAM,OAAO;AACf,QAAK,eAAe,MAAM,SAAS,MAAM;;EAG3C,IAAI,QAAQ;GACV,MAAM,SAAS,QAAQ,MAAM,SAAS;AACtC,OAAI,WAAW,KACb,QAAO;AAGT,UAAO,OAAO,QAAQ,QAAQ,KAAK;;EAGrC,IAAI,WAAW;AACb,UAAO,KAAK;;EAEd,IAAI,SAAS,GAAG;AACd,QAAK,aAAa;AAClB,QAAK,gBAAgB,QAAQ,EAAE;AAC/B,OAAI,KAAK,cACP,MAAK,0BAA0B;AAEjC,QAAK,eAAe;AACpB,QAAK,WAAW;;EAGlB,IAAI,QAAQ;AACV,OAAI,KAAK,eAAe,MAAM,QAAQ,CACpC,QAAO,KAAK,eAAe,MAAM,QAAQ;AAG3C,UAAO,KAAK;;EAEd,IAAI,MAAM,OAAO;AACf,QAAK,eAAe,MAAM,SAAS,MAAM;;;CAI7C,SAAS,6CAA6C,MAAM;EAC1D,IAAI,OAAO;AACX,OAAK,MAAM,SAAS,cAAc,iBAAiB,KAAK,EAAE;AACxD,OAAI,MAAM,eAAe,aAAa,MAAM,kBAAkB,WAAW,MAAM,kBAAkB,QAC/F;AAGF,OAAI,MAAM,aAAa,UAAU,aAAa,MAAM,aAAa,UAAU,mBACzE,SAAQ,MAAM;OAEd,SAAQ,6CAA6C,MAAM;;AAG/D,SAAO;;AAGT,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CC/ID,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,gBAAgB,GAAG;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,cAAc;;GAGpC,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,iBAAiB,EAAE,YAAY,MAAM;GACrC,UAAU,EAAE,YAAY,MAAM;GAC9B,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CCxXN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,0BAAN,cAAsC,gBAAgB;AAEtD,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,UAAU,EAAE,YAAY,MAAM;GAC9B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CCrMN,MAAM,WAAA,iBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,EAAE,4BAA4B,mCAAA,gCAAA;CACpC,MAAM,UAAA,iBAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,qBAAA,6BAAA,CAAsD;AAE5D,SAAQ,iBAAiB,MAAM,kCAAkC,mBAAmB;EAElF,IAAI,SAAS;AACX,QAAK,SAAS;AACd,UAAO,KAAK,MAAM;;EAEpB,IAAI,OAAO,OAAO;AAChB,QAAK,SAAS;AACd,OAAI,QAAQ,KAAK,MAAM,QAAQ;IAC7B,MAAM,MAAM,KAAK,SAAS;AAC1B,SAAK,IAAI,IAAI,KAAK,MAAM,QAAQ,IAAI,OAAO,KAAK;KAC9C,MAAM,KAAK,IAAI,cAAc,SAAS;AACtC,UAAK,SAAS,YAAY,GAAG;;cAEtB,QAAQ,KAAK,MAAM,OAC5B,MAAK,IAAI,IAAI,KAAK,MAAM,SAAS,GAAG,KAAK,OAAO,KAAK;IACnD,MAAM,KAAK,KAAK,MAAM;AACtB,SAAK,SAAS,YAAY,GAAG;;;EAKnC,KAAK,SAAS,0BAA0B;AACtC,QAAK,SAAS;GACd,MAAM,yBAAS,IAAI,KAAK;AACxB,QAAK,MAAM,WAAW,KAAK,OAAO;AAChC,WAAO,IAAI,QAAQ,eAAe,MAAM,KAAK,CAAC;AAC9C,WAAO,IAAI,QAAQ,eAAe,MAAM,OAAO,CAAC;;AAElD,UAAO;;EAET,CAAC,SAAS,eAAe,OAAO,OAAO;AACrC,OAAI,UAAU,MAAM;AAClB,SAAK,OAAO,MAAM;AAClB;;AAEF,QAAK,SAAS;GACd,MAAM,EAAE,WAAW,KAAK;GACxB,MAAM,IAAI,QAAQ;AAClB,OAAI,IAAI,GAAG;IACT,MAAM,MAAM,KAAK,SAAS;IAC1B,MAAM,OAAO,IAAI,wBAAwB;AAEzC,SAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;KAC1B,MAAM,KAAK,IAAI,cAAc,SAAS;AACtC,UAAK,YAAY,GAAG;;AAEtB,SAAK,SAAS,QAAQ,KAAK;;AAE7B,OAAI,KAAK,EACP,MAAK,SAAS,QAAQ,MAAM;OAE5B,MAAK,SAAS,SAAS,OAAO,KAAK,MAAM,OAAO;;EAGpD,CAAC,SAAS,oBAAoB,OAAO,OAAO;AAC1C,UAAO,KAAK,SAAS,eAAe,OAAO,MAAM;;EAEnD,IAAI,SAAS,QAAQ;AACnB,OAAI,KAAK,SAAS,wBAAwB,QAAQ,GAAG,2BACnD,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,qDACA,wBACD,CAAC;AAEJ,OAAI,QAAQ,OAAO,OAAO,IAAI,EAAE,KAAK,SAAS,wBAAwB,OAAO,GAAG,gCAC9E,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,qCAAqC,gBAAgB,CAAC;AAEvG,OAAI,YAAY,OACd;GAGF,IAAI,YAAY;AAChB,OAAI,KAAK,OAAO,OAAO,CACrB,aAAY;YACH,OAAO,WAAW,UAAU;AACrC,SAAK,SAAS;AACd,gBAAY,KAAK,MAAM,WAAW;;AAIpC,IADe,cAAc,OAAO,UAAU,aAAa,KAAK,UACzD,WAAW,SAAS,UAAU;;EAEvC,OAAO,OAAO;AACZ,QAAK,SAAS;AACd,OAAI,KAAK,MAAM,WAAW,EACxB;AAEF,OAAI,QAAQ,KAAK,SAAS,KAAK,MAAM,OACnC;GAEF,MAAM,UAAU,KAAK,MAAM;AAC3B,WAAQ,WAAW,QAAQ,QAAQ;;EAErC,IAAI,gBAAgB;AAClB,UAAO,KAAK,SAAS;;EAEvB,IAAI,cAAc,OAAO;AACvB,QAAK,SAAS,gBAAgB;;;;;;;CCzGlC,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,oBAAA,2BAAA;CACN,MAAM,sBAAA,6BAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,iBAAA,wBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,0CAA0C;;CAGxF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,yBAAyB;AAGpE,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,iBAAe,eAAe,SAAS,aAAa;;AAGtD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,8BAA8B,aAAa,eAAe;GAC9D,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,qFAAqF,UAAU,OAAO,WACvG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,kBAAkB,GAAG,OAAO,IAAI,oBAAoB,GAAG,OAAO,CAChE,UAAS,MAAM,eAAe,OAAO;SAErC,OAAM,IAAI,aAAa,UACrB,gGACD;AAEH,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;cAEL,YAAY,GAAG,OAAO,CACxB,UAAS,MAAM,eAAe,OAAO;cAC5B,OAAO,WAAW,SAC3B,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAIN,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;cAC/B;AACR,+DAA0D,aAAa;;;GAI3E,OAAO,OAAO;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wFAAwF,UAAU,OAAO,WAC1G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;cAClC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,mBAAmB;;;AAG3C,SAAO,iBAAiB,sBAAsB,WAAW;GACvD,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,eAAe,EAAE,YAAY,MAAM;IAClC,OAAO,cAAc;IAAE,OAAO;IAAyB,cAAc;IAAM;IAC3E,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,wBACzC,KAAI,EAAE,OAAO,QACX,MAAK,IAAI,GAAG,MAAM;AAItB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;GAEpD,IAAI,mBAAmB;AAEvB,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;AAEH,uBAAmB;;GAGrB,MAAM,aAAa,OAAO,YAAY,UAAU,EAAE;AAElD,OAAI,eAAe,QAAQ,EAAE,KAAK,WAAW,CAAC,iBAC5C,QAAO;IACL,UAAU;IACV,YAAY;IACZ,cAAc;IACd,OAAO,MAAM,kBAAkB,WAAW;IAC3C;AAGH,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,UAAU;IACxD,MAAM,eAAe,KAAK;AAE1B,QAAI,MAAM,qBAAqB,EAAE,EAAE;KACjC,MAAM,QAAQ,MAAM;KACpB,IAAI,eAAe;AAEnB,SAAI,iBAAiB,QAAQ,iBAAiB,KAAA,EAC5C,gBAAe;SAEf,gBAAe,kBAAkB,QAAQ,cAAc,cAAc,EACnE,SAAS,uBAAuB,QAAQ,4DACzC,CAAC;AAGJ,8DAAyD,aAAa;AACtE,SAAI;AAEF,UADiB,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK,MAEpD,QAAO,YAAY,MAAM,eAAe,OAAO,aAAa;UAE5D,QAAO,YAAY,MAAM,oBAAoB,OAAO,aAAa;eAE3D;AACR,gEAA0D,aAAa;;AAGzE,YAAO;;;GAGX,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;GAGhD,MAAM,eAAe,KAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;AACjC,QAAI,KAAK,OAAO,KAAK,IACnB,QAAO;IAGT,MAAM,QAAQ,MAAM;IACpB,IAAI,eAAe,KAAK;AAExB,QAAI,iBAAiB,QAAQ,iBAAiB,KAAA,EAC5C,gBAAe;QAEf,gBAAe,kBAAkB,QAAQ,cAAc,cAAc,EACnE,SAAS,uBAAuB,QAAQ,4DACzC,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AAEF,SADiB,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK,MAEpD,QAAO,YAAY,MAAM,eAAe,OAAO,aAAa;SAE5D,QAAO,YAAY,MAAM,oBAAoB,OAAO,aAAa;cAE3D;AACR,+DAA0D,aAAa;;AAGzE,WAAO;;AAET,OAAI,CAAC,OAAO,OAAO,QAAQ,EAAE;QAEvB,CADa,EAAE,OAAO,YAAY,UAAU,EAAE,KAAK,MAErD,QAAO;;AAGX,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,OAAI,OAAO,YAAY,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,QACrD,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,oCAAA;;;;;CC9fN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;;AAGzG,SAAO,iBAAiB,gBAAgB,WAAW,GAChD,OAAO,cAAc;GAAE,OAAO;GAAmB,cAAc;GAAM,EACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC5GN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,qBAAA,cAAA;CAER,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,IAAI,OAAO;AACT,UAAO,iBAAiB,KAAK;;EAG/B,IAAI,KAAK,OAAO;AACd,QAAK,cAAc;;;AAIvB,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCfD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCzJN,MAAM,YAAA,oBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;EAChD,IAAI,OAAO;GACT,MAAM,WAAW,KAAK;GAEtB,MAAM,MAAM,KAAK,eAAe,MAAM,OAAO,GAAG,KAAK,eAAe,MAAM,OAAO,GAAG;GACpF,MAAM,SAAS,UAAU,SAAS,KAAK,EAAE,SAAS,SAAS,kBAAkB,EAAE,CAAC;AAEhF,OAAI,WAAW,KACb,QAAO;AAGT,UAAO,UAAU,aAAa,OAAO;;EAGvC,IAAI,KAAK,OAAO;AACd,QAAK,eAAe,MAAM,QAAQ,MAAM;;EAG1C,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAI,SAAS,OACX,MAAK,eAAe,oBAAoB;;EAI5C,UAAU;AACR,SAAM,SAAS;AACf,QAAK,eAAe,oBAAoB;;EAG1C,UAAU;AACR,SAAM,SAAS;AACf,QAAK,eAAe,oBAAoB;;;AAI5C,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCzCD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CClMN,MAAM,QAAA,aAAA;CACN,MAAM,EAAE,sBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;CACR,MAAM,YAAA,oBAAA;CACN,MAAM,EAAE,yBAAA,qBAAA;AAIR,SAAQ,mBAAmB,aAAa,WAAW,eAAe;EAChE,MAAM,WAAW,YAAY;EAC7B,IAAI,uBAAuB,SAAS;EACpC,MAAM,iBAAiB,SAAS;AAEhC,MAAI,YAAY,cAAc,UAAU,YAAY,eAAe,MAAM,UAAU,CACjF,wBAAuB,YAAY,eAAe,MAAM,UAAU;EAGpE,SAAS,iBAAiB,MAAM,UAAU;AACxC,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,kBAAkB,SAAS,OAAO;AAIpD,OAAI,CAAC,YAAY,UACf;GAGF,MAAM,MAAM,iBAAiB,MAAM,qBAAqB;AAGxD,OAAI,CAAC,cAAc,YAAY,MAC7B,SAAQ,iBAAiB,YAAY,OAAO,YAAY;AAG1D,OAAI,WAGF,SAAQ,iBAAiB,KAAK,aAAa,WAAW;IACpD,WAAW;IACX,YAAY,WAAW;IACxB,CAAC;QACG;IACL,MAAM,eAAe,QAAQ,iBAAiB,KAAK,aAAa,WAAW,EACzE,WAAW,aACZ,CAAC;AACF,YAAQ,cAAc,cAAc,YAAY;;;AAIpD,iBAAe,MAAM,WAAW;GAC9B,SAAS;GACT,QAAQ;GACT,CAAC;;AAIJ,SAAQ,oBAAoB,OAAO,gBAAgB;EACjD,MAAM,EAAE,gBAAgB,YAAY;AACpC,cAAY,QAAQ,MAAM;AAG1B,cAAY,QAAQ;AAEpB,uBAAqB,YAAY;;AAanC,SAAQ,oBAAoB,WAAW,aAAa,eAAe,kBAAkB;EACnF,MAAM,QAAQ,MAAM,MAAM,WAAW;GACnC,cAAc,YAAY;GAC1B,GAAG;GACJ,GAAE,QAAO;AACR,OAAI,YAAY,eAAe,cAAc;IAC3C,MAAM,QAAQ,IAAI,MAAM,kCAAkC,EAAE,OAAO,KAAK,CAAC;AACzE,UAAM,YAAY;AAClB,UAAM,OAAO;AAEb,gBAAY,eAAe,aAAa,gBAAgB,KAAK,cAAc,MAAM;;IAEnF;AAEF,qBAAmB,aAAa,MAAM,UAAU,cAAc;AAE9D,SAAO;;AAIT,SAAQ,iBAAiB,OAAO,gBAAgB;AAC9C,cAAY,eAAe,YAAY,KAAK,MAAM;AAGlD,cAAY,QAAQ;AAEpB,uBAAqB,YAAY;;CAMnC,SAAS,mBAAmB,aAAa,UAAU,eAAe;AAChE,MAAI,CAAC,SACH;AAGF,OAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,EAAE,EACrC,KAAI,SAAS,GAAG,SAEd,oBAAmB,aAAa,SAAS,GAAG,UAAU,cAAc;WAC3D,SAAS,GAAG,MAAM;GAQ3B,IAAI;AACJ,OAAI;AACF,aAAS,IAAI,UAAU,IAAI,SAAS,GAAG,MAAM,cAAc;YACpD,OAAO;IACd,MAAM,SAAS,YAAY,eAAe;AAC1C,QAAI,QAAQ;KAEV,MAAM,QAAQ,IAAI,MAChB,oCAAoC,SAAS,GAAG,KAAK,0BAA0B,cAAc,IAC7F,EAAE,OAAO,CACV;AACD,WAAM,OAAO;AACb,WAAM,MAAM,SAAS,GAAG;AACxB,YAAO,gBAAgB,KAAK,cAAc,MAAM;;;AAIpD,OAAI,OACF,SAAQ,gBAAgB,aAAa,OAAO,MAAM,SAAS,GAAG;;;;;;;CC9ItE,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,iBAAiB,qBAAA,qBAAA;CACzB,MAAM,YAAA,oBAAA;CAKN,IAAM,sBAAN,cAAkC,gBAAgB;EAChD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,QAAQ;;EAGf,IAAI,UAAU;AACZ,OAAI,KAAK,aAAa,KAAA,EACpB,MAAK,WAAW,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9D,SAAS;IACT,oBAAoB;IACpB,iBAAiB,IAAI,IAAI,CAAC,aAAa,CAAC;IACzC,CAAC;AAEJ,UAAO,KAAK;;EAGd,UAAU;AACR,SAAM,SAAS;AACf,wBAAqB,KAAK;;EAG5B,UAAU;AACR,SAAM,SAAS;AACf,OAAI,KAAK,MACP,kBAAiB,KAAK,OAAO,KAAK;;EAItC,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAI,SAAS,OACX,sBAAqB,KAAK;AAG5B,OAAI,SAAS,SAAS,KAAK,aAAa,KAAA,EACtC,MAAK,SAAS,cAAc;;EAIhC,IAAI,UAAU;AACZ,UAAO;;;AAIX,QAAO,UAAU,EACf,gBAAgB,qBACjB;CAGD,SAAS,qBAAqB,IAAI;AAChC,MAAI,CAAC,uBAAuB,GAAG,CAC7B;AAIF,MAAI,CAAC,GAAG,eAAe,CAAC,GAAG,eAAe,aACxC;AAGF,kBAAgB,GAAG;;CAKrB,SAAS,gBAAgB,IAAI;EAC3B,MAAM,OAAO,GAAG,eAAe,MAAM,OAAO;AAE5C,MAAI,SAAS,QAAQ,SAAS,GAC5B;EAGF,MAAM,MAAM,GAAG,eAAe,kBAAkB,KAAK;AACrD,MAAI,QAAQ,KACV;AAOF,kBAAgB,IAFG,UAAU,aAAa,IAAI,CAEf;;CAGjC,SAAS,uBAAuB,IAAI;EAElC,MAAM,UAAU,SAAS,eAAe,GAAG;AAC3C,MAAI,CAAC,gDAAgD,KAAK,QAAQ,IAAI,CAGpE,QAAO;AAGT,SAAO,GAAG,eAAe,MAAM,OAAO;;;;;;CCvGxC,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,OAAO;AACzD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,qBAAqB,SAAS,KAAK,kBAAkB,SAAS,cACrE,QAAO,KAAK;AAGd,UAAK,mBAAmB;AACxB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,gBAAgB,uBAAuB,UAAU;AACtD,aAAO,KAAK;;AAEd,UAAK,gBAAgB,YAAY,UAAU,MAAM;AACjD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,cAAc;cAChE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,MAAM,KACR,SAAQ,YAAY,kCAAkC,cAAc;SAEpE,SAAQ,YAAY,+BAA+B,eAAe,EAAE;cAE9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;IAGH,MAAM,IAAI,QAAQ;AAClB,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,OAAM,IAAI,aAAa,UAAU,sCAAsC;AAEzE,YAAQ,IAAI,GAAG,SAAS,EAAE;;GAG5B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,WAAW;AAC5E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;;AAGhE,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,MAAM,EAAE,YAAY,MAAM;GAC1B,aAAa,EAAE,YAAY,MAAM;GACjC,KAAK,EAAE,YAAY,MAAM;GACzB,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCxiBN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,aAAa;AAC9E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,cAAc,EAAE;cAC3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCrRN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,eAAe,kBAAkB,qBAAA,qBAAA;CACzC,MAAM,EAAE,qBAAA,cAAA;CACR,MAAM,EAAE,8BAAA,iBAAA;CAER,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,QAAQ;AACb,QAAK,2BAA2B;;EAGlC,UAAU;AACR,SAAM,SAAS;AACf,OAAI,CAAC,KAAK,yBACR,MAAK,oBAAoB;;EAI7B,UAAU;AACR,SAAM,SAAS;AACf,OAAI,CAAC,KAAK,yBACR,MAAK,oBAAoB;;EAI7B,+BAA+B;AAC7B,SAAM,8BAA8B;AAIpC,OAAI,CAAC,KAAK,yBACR,MAAK,oBAAoB;;EAI7B,gCAAgC;AAC9B,QAAK,2BAA2B;AAChC,QAAK,oBAAoB;;EAG3B,+BAA+B;AAC7B,QAAK,2BAA2B;;EAGlC,qBAAqB;AACnB,OAAI,KAAK,MACP,kBAAiB,KAAK,OAAO,KAAK;AAIpC,OAAI,CAAC,KAAK,eAAe,CAAC,KAAK,eAAe,aAC5C;GAGF,MAAM,OAAO,KAAK,eAAe,MAAM,OAAO;AAC9C,OAAI,SAAS,QAAQ,SAAS,MAAM,CAAC,0BAA0B,MAAM,WAAW,CAC9E;AAUF,iBAHqB,iBAFL,iBAAiB,KAAK,EAES,MAAM,KAAK,eAAe,mBAAmB,EAAE,EAC5F,WAAW,MACZ,CAAC,EAC0B,KAAK;;;AAIrC,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCzED,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;;AAGhE,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC/MN,MAAM,EAAE,wBAAA,+BAAA;CACR,MAAM,EAAE,8BAAA,oBAAA;CAER,IAAM,0BAAN,MAA8B;AAE9B,MAAK,MAAM,SAAS,0BAClB,qBAAoB,wBAAwB,WAAW,MAAM;AAG/D,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CCZD,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,0BAAA,kCAAA,CAAgE;CAEtE,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,OAAM,oBAAoB,WAAW,wBAAwB,UAAU;AAEvE,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCTD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,sBAAA,6BAAA;CACN,MAAM,oCAAA,2CAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,aAAa;AAC9E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,cAAc,EAAE;cAC3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,kCAAkC,QAAQ,cAAc,GAAG,EAC7D,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4FACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8FACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;;AAGtC,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,cAAc,EAAE,YAAY,MAAM;GAClC,kBAAkB,EAAE,YAAY,MAAM;GACtC,WAAW,EAAE,YAAY,MAAM;GAC/B,gBAAgB,EAAE,YAAY,MAAM;GACpC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,oBAAoB,EAAE,YAAY,MAAM;GACxC,WAAW,EAAE,YAAY,MAAM;GAC/B,sBAAsB,EAAE,YAAY,MAAM;GAC1C,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC72BN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,yBAAN,cAAqC,gBAAgB;AAErD,QAAO,UAAU,EACf,gBAAgB,wBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,uCAAuC;;CAGrF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,sBAAsB;AAGjE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,2BAA2B,aAAa,YAAY;GACxD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,mBAAmB,WAAW;GACpD,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAsB,cAAc;IAAM;GAC1E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,iCAAA;;;;;CCzJN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,2BAAN,cAAuC,gBAAgB;AAEvD,QAAO,UAAU,EACf,gBAAgB,0BACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,yCAAyC;;CAGvF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,wBAAwB;AAGnE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,6BAA6B,aAAa,YAAY;GAC1D,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,qBAAqB,WAAW;GACtD,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAwB,cAAc;IAAM;GAC5E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,mCAAA;;;;;CCzJN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,oBAAN,cAAgC,gBAAgB;AAEhD,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,YAAY;GACnD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,cAAc,WAAW;GAC/C,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CChUN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,qBAAN,cAAiC,gBAAgB;AAEjD,QAAO,UAAU,EACf,gBAAgB,oBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,4CAAA,iBAAA,CAA6F;CACnG,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB,aAAa,YAAY;GACpD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACvE,SAAI,UAAU,MAAM;AAClB,cAAQ,0CAA0C,MAAM;AACxD,UAAI,UAAU,QAAQ,YAAY,KAAK,MAAM,KAAK,MAChD,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,OAAO,EAAE,CAAC;cAC9D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,eAAe,WAAW;GAChD,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAkB,cAAc;IAAM;GACtE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6BAAA;;;;;CChKN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,uBAAN,cAAmC,gBAAgB;AAEnD,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,SAAS,EAAE,YAAY,MAAM;GAC7B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCrMN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,IAAI,QAAQ;GACV,MAAM,QAAQ,SAAS,KAAK,eAAe,MAAM,QAAQ,CAAC;AAE1D,OAAI,CAAC,MAAM,MAAM,CACf,QAAO;AAGT,UAAO;;EAET,IAAI,MAAM,OAAO;AACf,QAAK,eAAe,MAAM,SAAS,MAAM;;;AAI7C,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCnBD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,UAAU,EAAE,YAAY,MAAM;GAC9B,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCzRN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,oBAAN,cAAgC,gBAAgB;AAEhD,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,4CAAA,iBAAA,CAA6F;CACnG,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,YAAY;GACnD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACvE,SAAI,UAAU,MAAM;AAClB,cAAQ,0CAA0C,MAAM;AACxD,UAAI,UAAU,QAAQ,YAAY,KAAK,MAAM,KAAK,MAChD,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,OAAO,EAAE,CAAC;cAC9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,cAAc,WAAW;GAC/C,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CCzMN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC5JN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,uBAAN,cAAmC,gBAAgB;AAEnD,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC5JN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,qBAAN,cAAiC,gBAAgB;AAEjD,QAAO,UAAU,EACf,gBAAgB,oBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB,aAAa,YAAY;GACpD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,eAAe,WAAW;GAChD,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAkB,cAAc;IAAM;GACtE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6BAAA;;;;;CC1JN,MAAM,YAAA,oBAAA;CACN,MAAM,EAAE,8BAAA,iBAAA;CACR,MAAM,EAAE,aAAA,oBAAA;AAER,SAAQ,iBAAiB,MAAM,8BAA8B;EAC3D,kCAAkC;AAChC,QAAK,MAAM;;EAIb,kBAAkB;AAEhB,UAAO,KAAK,eAAe,OAAO,CAAC,KAAK;;EAI1C,uBAAuB;AACrB,OAAI,KAAK,eAAe,MAAM,SAAS,CACrC,QAAO,KAAK,eAAe,MAAM,SAAS;GAG5C,MAAM,SAAS,KAAK,eAAe,cAAc,eAAe;AAEhE,OAAI,OACF,QAAO,OAAO,eAAe,MAAM,SAAS;AAG9C,UAAO;;EAIT,wBAAwB,MAAM,SAAS;GACrC,IAAI,SAAS;AAEb,OAAI,SAAS,MAAM,0BAA0B,MAAM,QAAQ,CACzD,UAAS;YACA,0BAA0B,MAAM,UAAU,CACnD,UAAS,QAAQ;YACR,0BAA0B,MAAM,OAAO,CAChD,UAAS,QAAQ;YACR,CAAC,0BAA0B,MAAM,SAAS,EAAE;AAMvD,UAAO;;EAIT,oBAAoB;AAClB,OAAI,KAAK,iBAAiB,CACxB;GAGF,MAAM,SAAS,KAAK,eAAe;GACnC,IAAI,uBAAuB;AAE3B,OAAI,KAAK,eAAe,OAAO,KAAK,eAAe,OACjD,wBAAuB,KAAK,sBAAsB;GAGpD,MAAM,WAAW,KAAK,QAAQ,SAAS,aAAa,IAAI,KAAK,QAAQ,SAAS,WAAW;GAEzF,MAAM,SAAS,KAAK,wBAAwB,sBAAsB,QAAQ,SAAS;AAEnF,OAAI,WAAW,KACb;GAGF,MAAM,MAAM,KAAK,eAAe,kBAAkB,KAAK,KAAK;AAE5D,OAAI,QAAQ,KACV;AAIF,oBAAiB;AACf,aAAS,QAAQ,KAAK,EAAE,CAAC;MACxB,EAAE;;EAGP,WAAW;AACT,UAAO,KAAK;;EAGd,IAAI,OAAO;AACT,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,MAAM;IAChB,MAAM,OAAO,KAAK,eAAe,MAAM,OAAO;AAC9C,WAAO,SAAS,OAAO,KAAK;;AAG9B,UAAO,UAAU,aAAa,IAAI;;EAGpC,IAAI,KAAK,GAAG;AACV,QAAK,eAAe,MAAM,QAAQ,EAAE;;EAGtC,IAAI,SAAS;AACX,mBAAgB,KAAK;AAErB,OAAI,KAAK,QAAQ,KACf,QAAO;AAGT,UAAO,UAAU,mBAAmB,KAAK,IAAI;;EAG/C,IAAI,WAAW;AACb,mBAAgB,KAAK;AAErB,OAAI,KAAK,QAAQ,KACf,QAAO;AAGT,UAAO,KAAK,IAAI,SAAS;;EAG3B,IAAI,SAAS,GAAG;AACd,mBAAgB,KAAK;AAErB,OAAI,KAAK,QAAQ,KACf;AAGF,aAAU,cAAc,IAAI,KAAK;IAAE,KAAK,KAAK;IAAK,eAAe;IAAgB,CAAC;AAClF,cAAW,KAAK;;EAGlB,IAAI,WAAW;AACb,mBAAgB,KAAK;AAErB,OAAI,KAAK,QAAQ,KACf,QAAO;AAGT,UAAO,KAAK,IAAI;;EAGlB,IAAI,SAAS,GAAG;AACd,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,UAAU,gCAAgC,IAAI,CAChE;AAGF,aAAU,eAAe,KAAK,EAAE;AAChC,cAAW,KAAK;;EAGlB,IAAI,WAAW;AACb,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,KACV,QAAO;AAGT,UAAO,IAAI;;EAGb,IAAI,SAAS,GAAG;AACd,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,UAAU,gCAAgC,IAAI,CAChE;AAGF,aAAU,eAAe,KAAK,EAAE;AAChC,cAAW,KAAK;;EAGlB,IAAI,OAAO;AACT,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,IAAI,SAAS,KAC/B,QAAO;AAGT,OAAI,IAAI,SAAS,KACf,QAAO,UAAU,cAAc,IAAI,KAAK;AAG1C,UAAO,UAAU,cAAc,IAAI,KAAK,GAAG,MAAM,UAAU,iBAAiB,IAAI,KAAK;;EAGvF,IAAI,KAAK,GAAG;AACV,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,UAAU,gBAAgB,IAAI,CAChD;AAGF,aAAU,cAAc,GAAG;IAAE;IAAK,eAAe;IAAQ,CAAC;AAC1D,cAAW,KAAK;;EAGlB,IAAI,WAAW;AACb,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,IAAI,SAAS,KAC/B,QAAO;AAGT,UAAO,UAAU,cAAc,IAAI,KAAK;;EAG1C,IAAI,SAAS,GAAG;AACd,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,UAAU,gBAAgB,IAAI,CAChD;AAGF,aAAU,cAAc,GAAG;IAAE;IAAK,eAAe;IAAY,CAAC;AAC9D,cAAW,KAAK;;EAGlB,IAAI,OAAO;AACT,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,IAAI,SAAS,KAC/B,QAAO;AAGT,UAAO,UAAU,iBAAiB,IAAI,KAAK;;EAG7C,IAAI,KAAK,GAAG;AACV,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,UAAU,gCAAgC,IAAI,CAChE;AAGF,OAAI,MAAM,GACR,KAAI,OAAO;OAEX,WAAU,cAAc,GAAG;IAAE;IAAK,eAAe;IAAQ,CAAC;AAE5D,cAAW,KAAK;;EAGlB,IAAI,WAAW;AACb,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,KACV,QAAO;AAGT,UAAO,UAAU,cAAc,IAAI;;EAGrC,IAAI,SAAS,GAAG;AACd,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,UAAU,gBAAgB,IAAI,CAChD;AAGF,OAAI,OAAO,EAAE;AACb,aAAU,cAAc,GAAG;IAAE;IAAK,eAAe;IAAc,CAAC;AAChE,cAAW,KAAK;;EAGlB,IAAI,SAAS;AACX,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,IAAI,UAAU,QAAQ,IAAI,UAAU,GACtD,QAAO;AAGT,UAAO,MAAM,IAAI;;EAGnB,IAAI,OAAO,GAAG;AACZ,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,KACV;AAGF,OAAI,MAAM,GACR,KAAI,QAAQ;QACP;IACL,MAAM,QAAQ,EAAE,OAAO,MAAM,EAAE,UAAU,EAAE,GAAG;AAC9C,QAAI,QAAQ;AACZ,cAAU,cAAc,OAAO;KAC7B;KACA,eAAe;KACf,kBAAkB,KAAK,eAAe;KACvC,CAAC;;AAEJ,cAAW,KAAK;;EAGlB,IAAI,OAAO;AACT,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,QAAQ,IAAI,aAAa,QAAQ,IAAI,aAAa,GAC5D,QAAO;AAGT,UAAO,MAAM,IAAI;;EAGnB,IAAI,KAAK,GAAG;AACV,mBAAgB,KAAK;GACrB,MAAM,EAAE,QAAQ;AAEhB,OAAI,QAAQ,KACV;AAGF,OAAI,MAAM,GACR,KAAI,WAAW;QACV;IACL,MAAM,QAAQ,EAAE,OAAO,MAAM,EAAE,UAAU,EAAE,GAAG;AAC9C,QAAI,WAAW;AACf,cAAU,cAAc,OAAO;KAAE;KAAK,eAAe;KAAY,CAAC;;AAEpE,cAAW,KAAK;;;CAIpB,SAAS,gBAAgB,MAAM;AAC7B,MAAI,KAAK,QAAQ,QAAQ,KAAK,IAAI,WAAW,UAAU,UAAU,gBAAgB,KAAK,IAAI,CACxF;AAGF,YAAU,KAAK;;CAGjB,SAAS,UAAU,MAAM;AACvB,OAAK,MAAM;EAEX,MAAM,OAAO,KAAK,eAAe,MAAM,OAAO;AAC9C,MAAI,SAAS,KACX;EAGF,MAAM,SAAS,KAAK,eAAe,kBAAkB,KAAK;AAC1D,MAAI,WAAW,KACb,MAAK,MAAM;;CAIf,SAAS,WAAW,MAAM;AACxB,OAAK,eAAe,MAAM,QAAQ,UAAU,aAAa,KAAK,IAAI,CAAC;;;;;;CC7WrE,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,gCAAA,wCAAA,CAA4E;CAElF,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,iCAAiC;AAEtC,QAAK,yBAAyB;;EAGhC,sBAAsB;AACpB,QAAK,mBAAmB;;EAG1B,IAAI,UAAU;AACZ,OAAI,KAAK,aAAa,KAAA,EACpB,MAAK,WAAW,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9D,SAAS;IACT,oBAAoB;IACrB,CAAC;AAEJ,UAAO,KAAK;;EAGd,IAAI,OAAO;AACT,UAAO,KAAK;;EAEd,IAAI,KAAK,GAAG;AACV,QAAK,cAAc;;EAGrB,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAI,SAAS,SAAS,KAAK,aAAa,KAAA,EACtC,MAAK,SAAS,cAAc;;;AAKlC,OAAM,sBAAsB,WAAW,8BAA8B,UAAU;AAE/E,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CC/CD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,WAAW;AAC5E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;IAGH,MAAM,IAAI,QAAQ;AAClB,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,OAAM,IAAI,aAAa,UAAU,sCAAsC;AAEzE,YAAQ,IAAI,GAAG,SAAS,EAAE;;GAG5B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,WAAW;AAC5E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,WAAW;IACT,MAAM,UAAU;AAChB,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,KAAK,EAAE,YAAY,MAAM;GACzB,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,MAAM,EAAE,YAAY,MAAM;GAC1B,KAAK,EAAE,YAAY,MAAM;GACzB,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CChgCN,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,gCAAA,wCAAA,CAA4E;CAElF,IAAM,sBAAN,cAAkC,gBAAgB;EAChD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,iCAAiC;AAEtC,QAAK,yBAAyB;;EAGhC,sBAAsB;AACpB,QAAK,mBAAmB;;EAG1B,IAAI,UAAU;AACZ,OAAI,KAAK,aAAa,KAAA,EACpB,MAAK,WAAW,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9D,SAAS;IACT,oBAAoB;IACrB,CAAC;AAEJ,UAAO,KAAK;;EAGd,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAI,SAAS,SAAS,KAAK,aAAa,KAAA,EACtC,MAAK,SAAS,cAAc;;;AAKlC,OAAM,oBAAoB,WAAW,8BAA8B,UAAU;AAE7E,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCxCD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;IAGH,MAAM,IAAI,QAAQ;AAClB,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,OAAM,IAAI,aAAa,UAAU,sCAAsC;AAEzE,YAAQ,IAAI,GAAG,SAAS,EAAE;;GAG5B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,SAAS,KAAK;cAChE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,UAAU,GAAG;SAEhE,SAAQ,YAAY,kCAAkC,SAAS;cAEzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,WAAW;IACT,MAAM,UAAU;AAChB,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,KAAK,EAAE,YAAY,MAAM;GACzB,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCtzBN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,oBAAN,cAAgC,gBAAgB;AAEhD,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,YAAY;GACnD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,cAAc,WAAW;GAC/C,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;ACzJN,SAAQ,iBAAiB,MAAM,kBAAkB;EAC/C,YAAY,cAAc,MAAM,aAAa;GAC3C,MAAM,EAAE,SAAS,QAAQ,EAAE,KAAK;AAEhC,QAAK,WAAW;AAChB,QAAK,SAAS;;EAGhB,IAAI,WAAW;AACb,UAAO,KAAK,iBAAiB,WAAW;;EAI1C,IAAI,cAAc;AAChB,UAAO,KAAK,SAAS,gCAAgC;;EAGvD,IAAI,kBAAkB;AACpB,UAAO,KAAK,iBAAiB,kBAAkB;;EAGjD,IAAI,gBAAgB;AAClB,UAAO,KAAK,iBAAiB,gBAAgB;;EAG/C,IAAI,iBAAiB;AACnB,UAAO,KAAK,iBAAiB,iBAAiB;;EAGhD,IAAI,eAAe;AACjB,UAAO,KAAK,iBAAiB,eAAe;;EAG9C,IAAI,UAAU;AACZ,UAAO,KAAK,iBAAiB,UAAU;;EAGzC,IAAI,WAAW;AACb,UAAO,KAAK,iBAAiB,WAAW;;EAG1C,IAAI,eAAe;AACjB,UAAO,KAAK,iBAAiB,eAAe;;EAG9C,IAAI,eAAe;AACjB,UAAO,KAAK,iBAAiB,eAAe;;EAG9C,iBAAiB,QAAQ;GACvB,MAAM,mBAAmB,KAAK,OAAO;AACrC,OAAI,iBACF,QAAO,kBAAkB;AAG3B,UAAO;;EAGT,IAAI,QAAQ;AACV,UAAO,EAAE,KAAK,YAAY,KAAK,gBAAgB,KAAK,eAC5C,KAAK,mBAAmB,KAAK,iBAAiB,KAAK,kBACnD,KAAK,gBAAgB,KAAK,WAAW,KAAK,YAAY,KAAK;;;;;;;AC7DnD,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,cAAc;GAClB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,cAAc,WAAW;GAC/C,cAAc,EAAE,YAAY,MAAM;GAClC,cAAc,EAAE,YAAY,MAAM;GAClC,iBAAiB,EAAE,YAAY,MAAM;GACrC,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,gBAAgB,EAAE,YAAY,MAAM;GACpC,eAAe,EAAE,YAAY,MAAM;GACnC,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,aAAa,EAAE,YAAY,MAAM;GACjC,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CCtPN,MAAM,gBAAA,uBAAA;CACN,MAAM,EAAE,eAAA,uBAAA;CACR,MAAM,EAAE,YAAA,mBAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;AAER,SAAQ,iBAAiB,MAAM,gCAAgC;EAE7D,IAAI,eAAe;AACjB,UAAO,KAAK,qCAAqC;;EAGnD,IAAI,WAAW;AACb,OAAI,CAAC,KAAK,UACR,MAAK,YAAY,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE,EAChE,SAAS,MACV,CAAC;AAEJ,UAAO,KAAK;;EAId,gBAAgB;AACd,OAAI,CAAC,KAAK,qCAAqC,CAC7C,QAAO;AAET,OAAI,KAAK,uBAAuB,CAC9B,QAAO;AAET,eAAY,WAAW,MAAM,KAAA,GAAW,EAAE,YAAY,MAAM,CAAC;AAC7D,UAAO;;EAIT,kBAAkB,SAAS;AACzB,QAAK,8BAA8B;;EAKrC,iBAAiB;AACf,UAAO,KAAK,eAAe;;EAI7B,IAAI,oBAAoB;GACtB,MAAM,EAAE,aAAa;AACrB,OAAI,CAAC,KAAK,qCAAqC,IAAI,KAAK,uBAAuB,CAC7E,QAAO;AAGT,OADmC,SAAS,YAE1C,QAAO,KAAK;AAEd,UAAO;;EAGT,sCAAsC;AAEpC,UAAO,CAAC,WAAW,KAAK,IAGtB,QAAQ,MAAM,WAAW,KAAK,QAC9B,CAAC,KAAK,+CAA+C;;EAGzD,oCAAoC;AAClC,UAAO,CAAC,KAAK,qCAAqC;;EAGpD,wBAAwB;AACtB,UAAO,KAAK,SAAS;;;;;;;CCvEzB,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,kCAAA,0CAAA,CACiE;CACvE,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,EAAE,YAAY,WAAW,0BAAA,uBAAA;CAC/B,MAAM,EAAE,mBAAA,iBAAA;CAER,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,8BAA8B;AACnC,QAAK,UAAU;AAEf,QAAK,yBAAyB;;EAGhC,sBAAsB;GACpB,MAAM,EAAE,SAAS;AACjB,OAAI,QAAQ,CAAC,WAAW,KAAK,EAAE;AAC7B,QAAI,KAAK,SAAS,SAChB,MAAK,iBAAiB,KAAK;AAE7B,QAAI,KAAK,SAAS,QAChB,MAAK,UAAU;;;EAKrB,YAAY;GACV,MAAM,YAAY,KAAK,eAAe,MAAM,QAAQ;AACpD,UAAO,cAAc,OAAO,KAAK;;EAGnC,IAAI,SAAS;AACX,UAAO,sBAAsB,KAAK;;EAGpC,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,OAAO;GACT,MAAM,WAAW,eAAe,KAAK,eAAe,MAAM,OAAO,IAAI,GAAG;AACxE,WAAQ,UAAR;IACE,KAAK;IACL,KAAK;IACL,KAAK,SACH,QAAO;IACT,QACE,QAAO;;;EAIb,IAAI,KAAK,GAAG;AACV,OAAI,eAAe,OAAO,EAAE,CAAC;AAC7B,WAAQ,GAAR;IACE,KAAK;IACL,KAAK;IACL,KAAK;AACH,UAAK,eAAe,MAAM,QAAQ,EAAE;AACpC;IACF;AACE,UAAK,eAAe,MAAM,QAAQ,SAAS;AAC3C;;;EAIN,gDAAgD;AAC9C,UAAO,KAAK,SAAS,WAAW,KAAK,SAAS;;;AAIlD,OAAM,sBAAsB,WAAW,gCAAgC,UAAU;AAEjF,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CC5ED,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,kBAAkB,OAAO;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+FAA+F,UAAU,OAAO,WACjH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,YAAY,KAAK;cACnE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,aAAa,GAAG;SAEnE,SAAQ,YAAY,kCAAkC,YAAY;cAE5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,iBAAiB,KAAK;cACxE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,kBAAkB,GAAG;SAExE,SAAQ,YAAY,kCAAkC,iBAAiB;cAEjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,aAAa;AAC9E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,cAAc,EAAE;cAC3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;;AAGjE,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,mBAAmB,EAAE,YAAY,MAAM;GACvC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,gBAAgB,EAAE,YAAY,MAAM;GACpC,YAAY,EAAE,YAAY,MAAM;GAChC,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;AC1gBc,gBAAA;CACpB,MAAM,QAAA,iBAAA;AAEN,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,OAAO,UAAU,WACnB,OAAM,IAAI,aAAa,UAAU,UAAU,qBAAqB;EAGlE,SAAS,0BAA0B,MAAM;GACvC,MAAM,UAAU,MAAM,kBAAkB,KAAK;AAG7C,UAAO,MAAM,kBAAkB,KAAK;AAEvB,WAAQ,MAAM,OAAO,SAAS,CAAC,KAAK,CAAC;;AAGpD,4BAA0B,aAAY,SAAQ;AAC5C,UAAO,MAAM,kBAAkB,KAAK;AAEnB,WAAQ,UAAU,OAAO,CAAC,KAAK,CAAC;;AAGnD,4BAA0B,MAAM,iBAAiB;AACjD,4BAA0B,kBAAkB;AAE5C,SAAO;;;;;;CC3BT,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,yBAAA,yBAAA;CACR,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,WAAA,iBAAA;CAER,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,cAAc,MAAM,OAAO,UAAU;AACnC,OAAI,KAAK,YAAY,SAAS,WAAW,SAAS,UAChD,MAAK,QAAQ,QAAQ,SAAS,MAAM;AAGtC,SAAM,cAAc,MAAM,OAAO,SAAS;;EAG5C,aAAa;AACX,OAAI,UAAU,CAAC,KAAK,QAClB,MAAK,UAAU,OAAO,aAAa,KAAK,OAAO,KAAK,OAAO;AAE7D,UAAO,KAAK;;EAGd,WAAW,WAAW;GACpB,MAAM,SAAS,KAAK,YAAY;AAChC,OAAI,QAAQ;AACV,QAAI,CAAC,KAAK,UAAU;AAClB,UAAK,WAAW,OAAO,WAAW,UAAU,IAAI;AAChD,SAAI,KAAK,UAAU;AAMjB,WAAK,SAAS,SAAS,SAAS,eAAe,KAAK;AACpD,2BAAqB,KAAK,UAAU,gBAAgB;AACpD,2BAAqB,KAAK,UAAU,YAAY;;;AAGpD,WAAO,KAAK;;AAGd,wBACE,KAAK,eAAe,cACpB,qBACA,cACA,4CACD;AACD,UAAO;;EAGT,UAAU,GAAG,MAAM;GACjB,MAAM,SAAS,KAAK,YAAY;AAChC,OAAI,OACF,QAAO,OAAO,UAAU,GAAG,KAAK;AAGlC,wBACE,KAAK,eAAe,cACpB,qBACA,aACA,4CACD;AACD,UAAO;;EAGT,OAAO,UAAU,MAAM,iBAAiB;GACtC,MAAM,SAAS,KAAK,eAAe;GACnC,MAAM,SAAS,KAAK,YAAY;AAChC,OAAI,QAAQ;IACV,MAAM,UAAU,EAAE;AAClB,YAAQ,MAAR;KACE,KAAK;KACL,KAAK;AACH,aAAO;AACP,cAAQ,UAAU;AAClB;KACF,QACE,QAAO;;AAEX,WAAO,UAAU,KAAK,SAAS;AAC7B,SAAI,IACF,OAAM;AAER,cAAS,IAAI,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;OAC1C,MAAM,QAAQ;SAEjB,sBACE,KAAK,eAAe,cACpB,qBACA,UACA,4CACD;;EAIL,IAAI,QAAQ;GACV,MAAM,SAAS,SAAS,KAAK,eAAe,MAAM,QAAQ,CAAC;AAC3D,UAAO,MAAM,OAAO,IAAI,SAAS,KAAK,SAAS,aAAa,MAAM;;EAGpE,IAAI,MAAM,GAAG;AACX,OAAI,IAAI,aAAa,MAAM;AAC3B,QAAK,eAAe,MAAM,SAAS,OAAO,EAAE,CAAC;;EAG/C,IAAI,SAAS;GACX,MAAM,SAAS,SAAS,KAAK,eAAe,MAAM,SAAS,CAAC;AAC5D,UAAO,MAAM,OAAO,IAAI,SAAS,KAAK,SAAS,aAAa,MAAM;;EAGpE,IAAI,OAAO,GAAG;AACZ,OAAI,IAAI,aAAa,MAAM;AAC3B,QAAK,eAAe,MAAM,UAAU,OAAO,EAAE,CAAC;;;CAOlD,SAAS,qBAAqB,KAAK,MAAM;EACvC,MAAM,OAAO,IAAI;AACjB,MAAI,QAAQ,SAAU,OAAO,GAAG,MAAM;GACpC,MAAM,OAAO,SAAS,eAAe,MAAM;AAC3C,OAAI,MAAM;AACR,QAAI,gBAAgB,yBAAyB,CAAC,KAAK,QACjD,MAAK,YAAY;AAEnB,YAAQ,KAAK,UAAU,KAAK;;AAE9B,UAAO,KAAK,KAAK,KAAK,OAAO,GAAG,KAAK;;;AAIzC,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCrID,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,eAAA,sBAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,WAAW,WAAW;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wFAAwF,UAAU,OAAO,WAC1G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,SAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;KACzC,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,OAAO,QAAQ;MAClC,SAAS,uEAAuE,IAAI;MACpF,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW,GAAG,KAAK,CAAC;;GAGzE,YAAY;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,OAAO,QAAQ;MAClC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,UAAU,GAAG,KAAK;;GAG/C,OAAO,UAAU;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,aAAa,QAAQ,cAAc,QAAQ,EAClD,SAAS,kEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,OAAO,QAAQ;MAClC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,YAAY,EAAE,YAAY,MAAM;GAChC,WAAW,EAAE,YAAY,MAAM;GAC/B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CChTN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCzJN,MAAM,iBAAA,wBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,MAAM,EAAE,2BAAA,mBAAA;CAER,IAAM,0BAAN,cAAsC,gBAAgB;EAEpD,IAAI,UAAU;AACZ,UAAO,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IACvD,SAAS;IACT,aAAa,uBAAuB,MAAM,SAAS;IACpD,CAAC;;;AAIN,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;ACjBmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;;AAGN,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CC3HN,MAAM,EAAE,gBAAA,gBAAA;CAER,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,yBAAN,cAAqC,gBAAgB;EACnD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,aAAa;;EAGpB,uBAAuB;AACrB,QAAK,aAAa;AAElB,eAAY,UAAU,KAAK;;EAG7B,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAI,SAAS,UAAU,KAAK,eAAe;QAEpC,UAAU,YAAY,UAAU,QAAQ,aAAa,QACrD,UAAU,QAAQ,aAAa,KAClC,MAAK,aAAa,WAAW,KAAK,qBAAqB,KAAK,KAAK,EAAE,EAAE;;;;AAM7E,QAAO,UAAU,EACf,gBAAgB,wBACjB;;;;;CChCD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,uCAAuC;;CAGrF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,sBAAsB;AAGjE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,2BAA2B,aAAa,YAAY;GACxD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,OAAO,KAAK;cAC9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,QAAQ,GAAG;SAE9D,SAAQ,YAAY,kCAAkC,OAAO;cAEvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,mBAAmB,WAAW;GACpD,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAsB,cAAc;IAAM;GAC1E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,iCAAA;;;;;CC5JN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,wBAAN,cAAoC,gBAAgB;AAEpD,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,OAAO,KAAK;cAC9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,QAAQ,GAAG;SAE9D,SAAQ,YAAY,kCAAkC,OAAO;cAEvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CC5JN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,2BAAN,cAAuC,gBAAgB;AAEvD,QAAO,UAAU,EACf,gBAAgB,0BACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,yCAAyC;;CAGvF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,wBAAwB;AAGnE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,6BAA6B,aAAa,YAAY;GAC1D,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,qBAAqB,WAAW;GACtD,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAwB,cAAc;IAAM;GAC5E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,mCAAA;;;;;CC7JN,MAAM,iBAAA,wBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,kCAAA,0CAAA,CACiE;CACvE,MAAM,EAAE,cAAA,uBAAA;CACR,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,EAAE,4BAAA,mBAAA;CAER,MAAM,iBAAiB,IAAI,IAAI;EAAC;EAAU;EAAY;EAAS;EAAU;EAAU;EAAU;EAAW,CAAC;CAEzG,IAAM,0BAAN,cAAsC,gBAAgB;EACpD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,8BAA8B;;EAGrC,IAAI,WAAW;AACb,UAAO,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IACvD,SAAS;IACT,aAAa,wBAAwB,MAAM,eAAe;IAC3D,CAAC;;EAGJ,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,OAAO;AACT,UAAO;;EAGT,gDAAgD;AAC9C,UAAO;;;AAIX,OAAM,wBAAwB,WAAW,gCAAgC,UAAU;AAEnF,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CCxCD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,kBAAkB,OAAO;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iGAAiG,UAAU,OAAO,WACnH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,cAAc,MAAM,kBAAkB;AACjD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;MAC/D;;GAGJ,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,cAAc,MAAM,kBAAkB;AACjD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;MAC/D;;GAGJ,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,mBAAmB,EAAE,YAAY,MAAM;GACvC,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;IACtC,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CCzUN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC5ON,MAAM,qBAAA,6BAAA,CAAsD;CAC5D,MAAM,gBAAA,uBAAA;AAEN,SAAQ,iBAAiB,MAAM,uCAAuC,mBAAmB;EACvF,UAAU,MAAM;AACd,OAAI,SAAS,GACX,QAAO;AAGT,QAAK,SAAS;GAEd,MAAM,WAAW,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE;IAChE,SAAS;IACT,aAAa,KAAK,MAAM,QACtB,MAAK,EAAE,eAAe,MAAM,KAAK,KAAK,QAAQ,EAAE,eAAe,MAAM,OAAO,KAAK,KAClF;IACF,CAAC;AAEF,WAAQ,SAAS,QAAjB;IACE,KAAK,EACH,QAAO;IAET,KAAK,EACH,QAAO,SAAS,KAAK,EAAE;IAEzB,QACE,QAAO;;;;;;;;CC1Bf,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,iBAAA,wBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+CAA+C;;CAG7F,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,8BAA8B;AAGzE,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,iBAAe,eAAe,SAAS,aAAa;;AAGtD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mCAAmC,aAAa,eAAe;GACnE,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,UAAU,MAAM;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,gGAAgG,UAAU,OAAO,WAClH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU,GAAG,KAAK,CAAC;;;AAG1E,SAAO,iBAAiB,2BAA2B,WAAW;GAC5D,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAA8B,cAAc;IAAM;IAChF,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,wBACzC,KAAI,EAAE,OAAO,QACX,MAAK,IAAI,GAAG,MAAM;AAItB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;GAEpD,IAAI,mBAAmB;AAEvB,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;AAEH,uBAAmB;;GAGrB,MAAM,aAAa,OAAO,YAAY,UAAU,EAAE;AAElD,OAAI,eAAe,QAAQ,EAAE,KAAK,WAAW,CAAC,iBAC5C,QAAO;IACL,UAAU;IACV,YAAY;IACZ,cAAc;IACd,OAAO,MAAM,kBAAkB,WAAW;IAC3C;AAGH,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAET,OAAI,CAAC,OAAO,OAAO,QAAQ,EAAE;QAEvB,CADa,EAAE,OAAO,YAAY,UAAU,EAAE,KAAK,MAErD,QAAO;;AAGX,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,OAAI,OAAO,YAAY,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,QACrD,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,yCAAA;;;;;AC3Tc,gBAAA;AACN,kBAAA;CAEd,MAAM,cAAA,qBAAA;CACN,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,QAAQ,cAAc,OAAO,EAAE,SAAS,UAAU,gCAAgC,CAAC;AAEzG,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CChCT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,kBAAA,yBAAA;CAGN,IAAM,kBAAN,cAA8B,UAAU;AACxC,iBAAgB,cAAc,gBAAgB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE3E,QAAO,UAAU,EACf,gBAAgB,iBACjB;;;;;CCVD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,kBAAA,yBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,oBAAoB,aAAa,MAAM;GAC3C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oEAAoE,UAAU,OAAO,WACtF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,gBAAgB,QAAQ,cAAc,QAAQ,EACrD,SAAS,kDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;;AAGpE,SAAO,iBAAiB,YAAY,WAAW;GAC7C,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAe,cAAc;IAAM;GACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CC7IN,MAAM,WAAA,iBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,EAAE,iBAAA,oBAAA;CACR,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,WAAW,UAAU,eAAe,mBAAA,uBAAA;CAC5C,MAAM,6BAAA,oCAAA;CACN,MAAM,EAAE,yBAAA,yBAAA;CACR,MAAM,cAAA,qBAAA;CAEN,MAAM,WAAW,IAAI,IAAI;EACvB;EACA;EACA;EACD,CAAC;CAEF,MAAM,UAAU,IAAI,IAAI;EACtB;EACA;EACA;EACD,CAAC;CAEF,MAAM,qCAAqC,OAAO,WAAW;CAC7D,MAAM,qCAAqC,OAAO,WAAW;CAE7D,IAAM,sBAAN,cAAkC,gBAAgB;EAChD,iBAAiB,QAAQ,OAAO;GAC9B,MAAM,OAAO;AACb,QAAK,MAAM,MAAM,cAAc,aAAa,MAAM,CAChD,KAAI,OAAO,GAAG,sBAAsB,WAClC,IAAG,kBAAkB,KAAK;AAI9B,SAAM,iBAAiB,QAAQ,MAAM;;EAGvC,mBAAmB,QAAQ,OAAO;AAChC,QAAK,MAAM,MAAM,cAAc,aAAa,MAAM,CAChD,KAAI,OAAO,GAAG,sBAAsB,WAClC,IAAG,kBAAkB,KAAK;AAI9B,SAAM,mBAAmB,QAAQ,MAAM;;EAGzC,8BAA8B;AAC5B,UAAO,cAAc,YAAY,KAAK,YAAY,EAAE,CAAC,EAAE,EACrD,SAAQ,SAAQ;AACd,QAAI,CAAC,cAAc,KAAK,CACtB,QAAO;AAGT,WAAO,UAAU,KAAK,KAAK;MAE9B,CAAC;;EAGJ,mBAAmB;AACjB,UAAO,cAAc,YAAY,KAAK,YAAY,EAAE,CAAC,EAAE,EACrD,SAAQ,SAAQ;AACd,QAAI,CAAC,SAAS,KAAK,IAAK,KAAK,eAAe,WAAW,KAAK,SAAS,QACnE,QAAO;AAGT,WAAO,UAAU,KAAK,KAAK;MAE9B,CAAC;;EAIJ,IAAI,WAAW;AACb,UAAO,2BAA2B,WAAW,KAAK,eAAe,EAAE,EAAE;IACnE,SAAS,KAAK,YAAY,EAAE,CAAC;IAC7B,aAAa,KAAK,kBAAkB;IACrC,CAAC;;EAGJ,CAAC,SAAS,YAAY,OAAO;AAC3B,UAAO,KAAK,kBAAkB,CAAC,UAAU;;EAG3C,KAAK,SAAS,4BAA4B;AACxC,UAAO,OAAO,KAAK,KAAK,kBAAkB,CAAC;;EAG7C,IAAI,SAAS;AACX,UAAO,KAAK,SAAS;;EAGvB,iBAAiB,WAAW;AAC1B,OAAI,CAAC,KAAK,YACR;AAGF,QAAK,cAAc,UAAU;;EAG/B,SAAS;AACP,wBAAqB,KAAK,eAAe,cAAc,mBAAmB,SAAS;;EAGrF,cAAc,YAAY,MAAM;AAC9B,OAAI,cAAc,MAAM;AACtB,QAAI,CAAC,eAAe,UAAU,CAC5B,OAAM,IAAI,UAAU,+CAA+C;AAErE,QAAI,UAAU,SAAS,KACrB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,2DACA,gBACD,CAAC;;AAMN,OAAI,CAAC,KAAK,eAAe,MAAM,aAAa,IAAI,CAAC,KAAK,gBAAgB,CACpE;AAGF,OAAI,CAAC,YAAY,UAAU,MAAM,aAAa;IAAE,SAAS;IAAM,YAAY;IAAM;IAAW,CAAC,CAC3F;AAGF,wBAAqB,KAAK,eAAe,cAAc,mBAAmB,gBAAgB;;EAG5F,WAAW;AACT,OAAI,CAAC,KAAK,YACR;AAGF,QAAK,OAAO;;EAGd,QAAQ;AACN,OAAI,CAAC,YAAY,SAAS,MAAM,KAAA,GAAW;IAAE,SAAS;IAAM,YAAY;IAAM,CAAC,CAC7E;AAGF,QAAK,MAAM,MAAM,KAAK,SACpB,KAAI,OAAO,GAAG,eAAe,WAC3B,IAAG,YAAY;;EAKrB,IAAI,SAAS;GACX,IAAI,SAAS,KAAK,eAAe,MAAM,SAAS;AAChD,OAAI,OACF,UAAS,OAAO,aAAa;AAG/B,OAAI,QAAQ,IAAI,OAAO,CACrB,QAAO;AAET,UAAO;;EAGT,IAAI,OAAO,GAAG;AACZ,QAAK,eAAe,MAAM,UAAU,EAAE;;EAGxC,IAAI,UAAU;GACZ,IAAI,OAAO,KAAK,eAAe,MAAM,UAAU;AAC/C,OAAI,KACF,QAAO,KAAK,aAAa;AAG3B,OAAI,SAAS,IAAI,KAAK,CACpB,QAAO;AAET,UAAO;;EAGT,IAAI,QAAQ,GAAG;AACb,QAAK,eAAe,MAAM,WAAW,EAAE;;EAGzC,IAAI,SAAS;GACX,MAAM,iBAAiB,KAAK,eAAe,MAAM,SAAS;AAC1D,OAAI,mBAAmB,QAAQ,mBAAmB,GAChD,QAAO,KAAK,eAAe;GAE7B,MAAM,YAAY,KAAK,eAAe,kBAAkB,eAAe;AACvE,OAAI,cAAc,KAChB,QAAO;AAET,UAAO,aAAa,UAAU;;EAGhC,IAAI,OAAO,GAAG;AACZ,QAAK,eAAe,MAAM,UAAU,EAAE;;EAMxC,gBAAgB;AACd,UAAO,KAAK,gCAAgC,CAAC,WAAW;;EAI1D,iBAAiB;AACf,UAAO,KAAK,eAAe;;EAI7B,iCAAiC;GAC/B,MAAM,WAAW,EAAE;AACnB,QAAK,MAAM,MAAM,KAAK,SACpB,KAAI,GAAG,SAAS,QAAQ,cAAc,GAAG,CACvC,UAAS,KAAK,GAAG;GAIrB,MAAM,kBAAkB,EAAE;AAE1B,QAAK,MAAM,WAAW,SACpB,KAAI,QAAQ,qCAAqC,IAAI,CAAC,QAAQ,uBAAuB,CACnF,iBAAgB,KAAK,QAAQ;AAIjC,OAAI,gBAAgB,WAAW,EAC7B,QAAO,EAAE,QAAQ,oCAAoC;GAGvD,MAAM,2BAA2B,EAAE;AACnC,QAAK,MAAM,kBAAkB,gBAE3B,KADqB,YAAY,WAAW,gBAAgB,KAAA,GAAW,EAAE,YAAY,MAAM,CAAC,CAE1F,0BAAyB,KAAK,eAAe;AAIjD,UAAO;IAAE,QAAQ;IAAoC;IAA0B;;;AAInF,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCrPD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,cAAA,qBAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY,QAAQ;;GAGrC,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,QAAQ,cAAc,QAAQ,EACjD,SAAS,uEACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,cAAc,GAAG,KAAK;;GAGnD,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,OAAO;cAC1B;AACR,+DAA0D,aAAa;;;GAI3E,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,iBAAiB;AAClF,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,kBAAkB,EAAE;cAC/D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,aAAa;cACzB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,aAAa,KAAK;cACpE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,cAAc,GAAG;SAEpE,SAAQ,YAAY,kCAAkC,aAAa;cAE7D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,cAAc,MAAM,kBAAkB;AACjD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;MAC/D;;GAGJ,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,QAAQ,EAAE,YAAY,MAAM;GAC5B,eAAe,EAAE,YAAY,MAAM;GACnC,OAAO,EAAE,YAAY,MAAM;GAC3B,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,eAAe,EAAE,YAAY,MAAM;GACnC,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;GAC1B,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;IACrE,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,MAAM,YAAY,MAAM;AAChE,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,MAAM,YAAY,MAAM;AAChE,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,MAAM,YAAY,MAAM,KAAK;;AAG3D,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,8BAAA;;;;;CClpBN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC1JN,MAAM,cAAA,eAAA;CACN,MAAM,EAAE,iBAAA,oBAAA;CACR,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,WAAA,iBAAA;CAER,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,YAAY,GAAG,MAAM;AACnB,SAAM,GAAG,KAAK;AACd,QAAK,uBAAuB;;EAG9B,cAAc,MAAM,OAAO,QAAQ;AAEjC,OAAI,SAAS,UAAW,SAAS,YAAY,SAAS,WAAW,SAAS,YAAY,UAAU,OAC9F,MAAK,qBAAqB;AAG5B,SAAM,cAAc,MAAM,OAAO,OAAO;;EAG1C,IAAI,UAAU;AACZ,UAAO;;EAGT,IAAI,SAAS;AAGX,UAAO,KAAK,eAAe,MAAM,SAAS,GACnC,YAAY,iBAAiB,KAAK,eAAe,MAAM,SAAS,CAAC,GACjE,KAAK;;EAGd,IAAI,OAAO,GAAG;AACZ,QAAK,eAAe,MAAM,UAAU,OAAO,EAAE,CAAC;;EAGhD,IAAI,QAAQ;AACV,UAAO,KAAK,eAAe,MAAM,QAAQ,GAClC,YAAY,iBAAiB,KAAK,eAAe,MAAM,QAAQ,CAAC,GAChE,KAAK;;EAGd,IAAI,MAAM,GAAG;AACX,QAAK,eAAe,MAAM,SAAS,OAAO,EAAE,CAAC;;EAG/C,IAAI,gBAAgB;AAClB,UAAO,KAAK,SAAS,KAAK,OAAO,gBAAgB;;EAGnD,IAAI,eAAe;AACjB,UAAO,KAAK,SAAS,KAAK,OAAO,eAAe;;EAGlD,IAAI,WAAW;GACb,MAAM,oBAAoB,KAAK,eAAe,MAAM,MAAM;AAC1D,UAAO,sBAAsB,QAC3B,sBAAsB,MACtB,KAAK,yBAAyB,YAC9B,KAAK,yBAAyB;;EAGlC,IAAI,aAAa;AACf,UAAO,KAAK,eAAe;;EAI7B,sBAAsB;GACpB,MAAM,WAAW,KAAK;AAEtB,OAAI,CAAC,SAAS,aACZ;AAGF,OAAI,CAAC,OACH;AAGF,OAAI,CAAC,KAAK,OACR,MAAK,SAAS,IAAI,OAAO,OAAO;AAElC,QAAK,cAAc;AACnB,QAAK,uBAAuB;GAC5B,MAAM,oBAAoB,KAAK,eAAe,MAAM,MAAM;GAC1D,IAAI,YAAY;AAChB,OAAI,sBAAsB,QAAQ,sBAAsB,IAAI;IAC1D,MAAM,YAAY,KAAK,eAAe,kBAAkB,kBAAkB;AAC1E,QAAI,cAAc,KAChB;AAEF,gBAAY,aAAa,UAAU;;AAErC,OAAI,cAAc,MAAM;IACtB,MAAM,iBAAiB,SAAS;IAEhC,MAAM,eAAc,SAAQ;KAC1B,IAAI,QAAQ;AACZ,UAAK,OAAO,WAAU,QAAO;AAC3B,cAAQ;;AAIV,UAAK,OAAO,MAAM,OAAO,KAAK,KAAK,QAAQ,KAAK,YAAY,KAAK,WAAW;AAC5E,SAAI,MACF,OAAM,IAAI,MAAM,MAAM;AAExB,UAAK,cAAc;AACnB,UAAK,uBAAuB;;AAG9B,mBAAe,MAAM,WAAW;KAC9B,SAAS;KACT,QAAQ;KACR,eAAe;AACb,WAAK,uBAAuB;;KAE/B,CAAC;SAEF,MAAK,OAAO,MAAM;;;AAKxB,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CC5HD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK,YAAY,UAAU,MAAM;cACjD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,cAAc;cAChE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,MAAM,KACR,SAAQ,YAAY,kCAAkC,cAAc;SAEpE,SAAQ,YAAY,+BAA+B,eAAe,EAAE;cAE9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,QAAQ,KAAK;cAC/D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,SAAS,GAAG;SAE/D,SAAQ,YAAY,kCAAkC,QAAQ;cAExD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,SAAS;AAC3D,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,uBAAuB,SAAS,KAAK,kBAAkB,SAAS,cACvE,QAAO,KAAK;AAGd,UAAK,qBAAqB;AAC1B,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,kBAAkB,uBAAuB,UAAU;AACxD,aAAO,KAAK;;AAEd,UAAK,kBAAkB,YAAY,UAAU,MAAM;AACnD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AACxE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,UAAU,OAAO,SAAS,CAAC;cACtE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AACxE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,UAAU,OAAO,SAAS,CAAC;cACtE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,WAAW;AAC7D,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,yBAAyB,SAAS,KAAK,kBAAkB,SAAS,cACzE,QAAO,KAAK;AAGd,UAAK,uBAAuB;AAC5B,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,oBAAoB,uBAAuB,UAAU;AAC1D,aAAO,KAAK;;AAEd,UAAK,oBAAoB,YAAY,UAAU,MAAM;AACrD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,KAAK,EAAE,YAAY,MAAM;GACzB,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,eAAe,EAAE,YAAY,MAAM;GACnC,UAAU,EAAE,YAAY,MAAM;GAC9B,YAAY,EAAE,YAAY,MAAM;GAChC,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCv4BN,MAAM,oBAAoB,IAAI,IAAI;EAAC;EAAU;EAAS;EAAO;EAAW,CAAC;AACzE,SAAQ,oBAAoB;AAE5B,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAClF,MAAM,SAAS,GAAG;AAClB,MAAI,CAAC,kBAAkB,IAAI,OAAO,CAChC,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,IAAI,OAAO,sDAAsD;AAE/G,SAAO;;;;;;CCRT,MAAM,WAAA,iBAAA;AAEN,SAAQ,iBAAiB,MAAM,qBAAqB,MAAM;EACxD,cAAc;AACZ,SAAM,EAAE;;EAEV,KAAK,OAAO;AACV,UAAO,KAAK,UAAU;;EAExB,KAAK,SAAS,4BAA4B;AACxC,UAAO,KAAK,MAAM;;;;;;;CCVtB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,6BAA6B;;CAG3E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,YAAY;AAGvD,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,SAAS;GACb,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,KAAK,OAAO;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yEAAyE,UAAU,OAAO,WAC3F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,KAAK,GAAG,KAAK,CAAC;;GAGnE,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,SAAS,WAAW;GAC1C,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAY,cAAc;IAAM;IAC9D,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,uBAAA;;;;;ACzSL,EAAC,SAAU,aAAa;AACvB;;;;;;;;EAiBA,IAAI,YAAY,MAId,aAAa,KAGb,WAAW,oBAGX,OAAO,sgCAGP,KAAK,sgCAIL,WAAW;GAOT,WAAW;GAiBX,UAAU;GAeV,QAAQ;GAIR,UAAU;GAIV,UAAW;GAIX,MAAM,CAAC;GAIP,MAAM;GAGN,QAAQ;GACT,EAMD,SAAS,SAAS,YAAY,UAC9B,WAAW,MAEX,eAAe,mBACf,kBAAkB,eAAe,sBACjC,yBAAyB,eAAe,4BACxC,oBAAoB,eAAe,sBACnC,MAAM,oBAEN,YAAY,KAAK,OACjB,UAAU,KAAK,KAEf,WAAW,8CACX,QAAQ,0DACR,UAAU,iDACV,YAAY,sCAEZ,OAAO,KACP,WAAW,GACX,mBAAmB,kBAEnB,iBAAiB,KAAK,SAAS,GAC/B,eAAe,GAAG,SAAS,GAG3B,IAAI,EAAE,aAAa,KAAK;AA0E1B,IAAE,gBAAgB,EAAE,MAAM,WAAY;GACpC,IAAI,IAAI,IAAI,KAAK,YAAY,KAAK;AAClC,OAAI,EAAE,IAAI,EAAG,GAAE,IAAI;AACnB,UAAO,SAAS,EAAE;;AASpB,IAAE,OAAO,WAAY;AACnB,UAAO,SAAS,IAAI,KAAK,YAAY,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE;;AAY5D,IAAE,YAAY,EAAE,QAAQ,SAAU,KAAK,KAAK;GAC1C,IAAI,GACF,IAAI,MACJ,OAAO,EAAE;AACX,SAAM,IAAI,KAAK,IAAI;AACnB,SAAM,IAAI,KAAK,IAAI;AACnB,OAAI,CAAC,IAAI,KAAK,CAAC,IAAI,EAAG,QAAO,IAAI,KAAK,IAAI;AAC1C,OAAI,IAAI,GAAG,IAAI,CAAE,OAAM,MAAM,kBAAkB,IAAI;AACnD,OAAI,EAAE,IAAI,IAAI;AACd,UAAO,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,GAAG,IAAI,MAAM,IAAI,KAAK,EAAE;;AAYzD,IAAE,aAAa,EAAE,MAAM,SAAU,GAAG;GAClC,IAAI,GAAG,GAAG,KAAK,KACb,IAAI,MACJ,KAAK,EAAE,GACP,MAAM,IAAI,IAAI,EAAE,YAAY,EAAE,EAAE,GAChC,KAAK,EAAE,GACP,KAAK,EAAE;AAGT,OAAI,CAAC,MAAM,CAAC,GACV,QAAO,CAAC,MAAM,CAAC,KAAK,MAAM,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI;AAIhF,OAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAI,QAAO,GAAG,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK;AAGxD,OAAI,OAAO,GAAI,QAAO;AAGtB,OAAI,EAAE,MAAM,EAAE,EAAG,QAAO,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI;AAEjD,SAAM,GAAG;AACT,SAAM,GAAG;AAGT,QAAK,IAAI,GAAG,IAAI,MAAM,MAAM,MAAM,KAAK,IAAI,GAAG,EAAE,EAC9C,KAAI,GAAG,OAAO,GAAG,GAAI,QAAO,GAAG,KAAK,GAAG,KAAK,KAAK,IAAI,IAAI;AAI3D,UAAO,QAAQ,MAAM,IAAI,MAAM,MAAM,KAAK,IAAI,IAAI;;AAiBpD,IAAE,SAAS,EAAE,MAAM,WAAY;GAC7B,IAAI,IAAI,IACN,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,EAAG,QAAO,IAAI,KAAK,IAAI;AAG9B,OAAI,CAAC,EAAE,EAAE,GAAI,QAAO,IAAI,KAAK,EAAE;AAE/B,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK,KAAK,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG;AAC9C,QAAK,WAAW;AAEhB,OAAI,OAAO,MAAM,iBAAiB,MAAM,EAAE,CAAC;AAE3C,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,SAAS,YAAY,KAAK,YAAY,IAAI,EAAE,KAAK,GAAG,GAAG,IAAI,IAAI,KAAK;;AAoB7E,IAAE,WAAW,EAAE,OAAO,WAAY;GAChC,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,SACjC,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,UAAU,IAAI,EAAE,QAAQ,CAAE,QAAO,IAAI,KAAK,EAAE;AACnD,cAAW;AAGX,OAAI,EAAE,IAAI,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE;AAIjC,OAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,UAAO;AAC9B,QAAI,eAAe,EAAE,EAAE;AACvB,QAAI,EAAE;AAGN,QAAI,KAAK,IAAI,EAAE,SAAS,KAAK,EAAG,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM;AAChE,QAAI,QAAQ,GAAG,IAAI,EAAE;AAGrB,QAAI,WAAW,IAAI,KAAK,EAAE,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK;AAErD,QAAI,KAAK,SACP,KAAI,OAAO;SACN;AACL,SAAI,EAAE,eAAe;AACrB,SAAI,EAAE,MAAM,GAAG,EAAE,QAAQ,IAAI,GAAG,EAAE,GAAG;;AAGvC,QAAI,IAAI,KAAK,EAAE;AACf,MAAE,IAAI,EAAE;SAER,KAAI,IAAI,KAAK,EAAE,UAAU,CAAC;AAG5B,SAAM,IAAI,KAAK,aAAa;AAI5B,YAAS;AACP,QAAI;AACJ,SAAK,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE;AACxB,cAAU,GAAG,KAAK,EAAE;AACpB,QAAI,OAAO,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE;AAGjE,QAAI,eAAe,EAAE,EAAE,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,eAAe,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE;AAC/E,SAAI,EAAE,MAAM,KAAK,GAAG,KAAK,EAAE;AAI3B,SAAI,KAAK,UAAU,CAAC,OAAO,KAAK,QAAQ;AAItC,UAAI,CAAC,KAAK;AACR,gBAAS,GAAG,IAAI,GAAG,EAAE;AAErB,WAAI,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;AAC7B,YAAI;AACJ;;;AAIJ,YAAM;AACN,YAAM;YACD;AAIL,UAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK;AAG7C,gBAAS,GAAG,IAAI,GAAG,EAAE;AACrB,WAAI,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;;AAGhC;;;;AAKN,cAAW;AAEX,UAAO,SAAS,GAAG,GAAG,KAAK,UAAU,EAAE;;AAQzC,IAAE,gBAAgB,EAAE,KAAK,WAAY;GACnC,IAAI,GACF,IAAI,KAAK,GACT,IAAI;AAEN,OAAI,GAAG;AACL,QAAI,EAAE,SAAS;AACf,SAAK,IAAI,UAAU,KAAK,IAAI,SAAS,IAAI;AAGzC,QAAI,EAAE;AACN,QAAI,EAAG,QAAO,IAAI,MAAM,GAAG,KAAK,GAAI;AACpC,QAAI,IAAI,EAAG,KAAI;;AAGjB,UAAO;;AAyBT,IAAE,YAAY,EAAE,MAAM,SAAU,GAAG;AACjC,UAAO,OAAO,MAAM,IAAI,KAAK,YAAY,EAAE,CAAC;;AAS9C,IAAE,qBAAqB,EAAE,WAAW,SAAU,GAAG;GAC/C,IAAI,IAAI,MACN,OAAO,EAAE;AACX,UAAO,SAAS,OAAO,GAAG,IAAI,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,WAAW,KAAK,SAAS;;AAQjF,IAAE,SAAS,EAAE,KAAK,SAAU,GAAG;AAC7B,UAAO,KAAK,IAAI,EAAE,KAAK;;AASzB,IAAE,QAAQ,WAAY;AACpB,UAAO,SAAS,IAAI,KAAK,YAAY,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE;;AAS5D,IAAE,cAAc,EAAE,KAAK,SAAU,GAAG;AAClC,UAAO,KAAK,IAAI,EAAE,GAAG;;AASvB,IAAE,uBAAuB,EAAE,MAAM,SAAU,GAAG;GAC5C,IAAI,IAAI,KAAK,IAAI,EAAE;AACnB,UAAO,KAAK,KAAK,MAAM;;AA6BzB,IAAE,mBAAmB,EAAE,OAAO,WAAY;GACxC,IAAI,GAAG,GAAG,IAAI,IAAI,KAChB,IAAI,MACJ,OAAO,EAAE,aACT,MAAM,IAAI,KAAK,EAAE;AAEnB,OAAI,CAAC,EAAE,UAAU,CAAE,QAAO,IAAI,KAAK,EAAE,IAAI,WAAQ,IAAI;AACrD,OAAI,EAAE,QAAQ,CAAE,QAAO;AAEvB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK,KAAK,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG;AAC9C,QAAK,WAAW;AAChB,SAAM,EAAE,EAAE;AAOV,OAAI,MAAM,IAAI;AACZ,QAAI,KAAK,KAAK,MAAM,EAAE;AACtB,SAAK,IAAI,QAAQ,GAAG,EAAE,EAAE,UAAU;UAC7B;AACL,QAAI;AACJ,QAAI;;AAGN,OAAI,aAAa,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,KAAK;GAGxD,IAAI,SACF,IAAI,GACJ,KAAK,IAAI,KAAK,EAAE;AAClB,UAAO,MAAM;AACX,cAAU,EAAE,MAAM,EAAE;AACpB,QAAI,IAAI,MAAM,QAAQ,MAAM,GAAG,MAAM,QAAQ,MAAM,GAAG,CAAC,CAAC,CAAC;;AAG3D,UAAO,SAAS,GAAG,KAAK,YAAY,IAAI,KAAK,WAAW,IAAI,KAAK;;AAkCnE,IAAE,iBAAiB,EAAE,OAAO,WAAY;GACtC,IAAI,GAAG,IAAI,IAAI,KACb,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,UAAU,IAAI,EAAE,QAAQ,CAAE,QAAO,IAAI,KAAK,EAAE;AAEnD,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK,KAAK,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG;AAC9C,QAAK,WAAW;AAChB,SAAM,EAAE,EAAE;AAEV,OAAI,MAAM,EACR,KAAI,aAAa,MAAM,GAAG,GAAG,GAAG,KAAK;QAChC;AAWL,QAAI,MAAM,KAAK,KAAK,IAAI;AACxB,QAAI,IAAI,KAAK,KAAK,IAAI;AAEtB,QAAI,EAAE,MAAM,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC9B,QAAI,aAAa,MAAM,GAAG,GAAG,GAAG,KAAK;IAGrC,IAAI,SACF,KAAK,IAAI,KAAK,EAAE,EAChB,MAAM,IAAI,KAAK,GAAG,EAClB,MAAM,IAAI,KAAK,GAAG;AACpB,WAAO,MAAM;AACX,eAAU,EAAE,MAAM,EAAE;AACpB,SAAI,EAAE,MAAM,GAAG,KAAK,QAAQ,MAAM,IAAI,MAAM,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;;;AAIrE,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,SAAS,GAAG,IAAI,IAAI,KAAK;;AAoBlC,IAAE,oBAAoB,EAAE,OAAO,WAAY;GACzC,IAAI,IAAI,IACN,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,UAAU,CAAE,QAAO,IAAI,KAAK,EAAE,EAAE;AACvC,OAAI,EAAE,QAAQ,CAAE,QAAO,IAAI,KAAK,EAAE;AAElC,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK;AACtB,QAAK,WAAW;AAEhB,UAAO,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,YAAY,IAAI,KAAK,WAAW,GAAG;;AAuB5E,IAAE,gBAAgB,EAAE,OAAO,WAAY;GACrC,IAAI,IAAI,MACN,OAAO,EAAE,aACT,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAClB,KAAK,KAAK,WACV,KAAK,KAAK;AAEZ,OAAI,MAAM,GACR,QAAO,MAAM,IAET,EAAE,OAAO,GAAG,MAAM,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,GAE7C,IAAI,KAAK,IAAI;AAGnB,OAAI,EAAE,QAAQ,CAAE,QAAO,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,GAAI;AAIzD,QAAK,YAAY,KAAK;AACtB,QAAK,WAAW;AAGhB,OAAI,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;AAErD,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,EAAE,MAAM,EAAE;;AAuBnB,IAAE,0BAA0B,EAAE,QAAQ,WAAY;GAChD,IAAI,IAAI,IACN,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,EAAE,IAAI,EAAE,CAAE,QAAO,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI;AAChD,OAAI,CAAC,EAAE,UAAU,CAAE,QAAO,IAAI,KAAK,EAAE;AAErC,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG;AACxD,QAAK,WAAW;AAChB,cAAW;AAEX,OAAI,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;AAEtC,cAAW;AACX,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,EAAE,IAAI;;AAoBf,IAAE,wBAAwB,EAAE,QAAQ,WAAY;GAC9C,IAAI,IAAI,IACN,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,UAAU,IAAI,EAAE,QAAQ,CAAE,QAAO,IAAI,KAAK,EAAE;AAEnD,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG;AAC5D,QAAK,WAAW;AAChB,cAAW;AAEX,OAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;AAErC,cAAW;AACX,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,EAAE,IAAI;;AAuBf,IAAE,2BAA2B,EAAE,QAAQ,WAAY;GACjD,IAAI,IAAI,IAAI,KAAK,KACf,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,UAAU,CAAE,QAAO,IAAI,KAAK,IAAI;AACvC,OAAI,EAAE,KAAK,EAAG,QAAO,IAAI,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI;AAE7E,QAAK,KAAK;AACV,QAAK,KAAK;AACV,SAAM,EAAE,IAAI;AAEZ,OAAI,KAAK,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,EAAG,QAAO,SAAS,IAAI,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK;AAEhF,QAAK,YAAY,MAAM,MAAM,EAAE;AAE/B,OAAI,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,IAAI,EAAE;AAExD,QAAK,YAAY,KAAK;AACtB,QAAK,WAAW;AAEhB,OAAI,EAAE,IAAI;AAEV,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,EAAE,MAAM,GAAI;;AAyBrB,IAAE,cAAc,EAAE,OAAO,WAAY;GACnC,IAAI,QAAQ,GACV,IAAI,IACJ,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,EAAE,QAAQ,CAAE,QAAO,IAAI,KAAK,EAAE;AAElC,OAAI,EAAE,KAAK,CAAC,IAAI,EAAE;AAClB,QAAK,KAAK;AACV,QAAK,KAAK;AAEV,OAAI,MAAM,IAAI;AAGZ,QAAI,MAAM,GAAG;AACX,cAAS,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,GAAI;AAC3C,YAAO,IAAI,EAAE;AACb,YAAO;;AAIT,WAAO,IAAI,KAAK,IAAI;;AAKtB,QAAK,YAAY,KAAK;AACtB,QAAK,WAAW;AAEhB,OAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM;AAE9D,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,EAAE,MAAM,EAAE;;AAsBnB,IAAE,iBAAiB,EAAE,OAAO,WAAY;GACtC,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,KAAK,IAC7B,IAAI,MACJ,OAAO,EAAE,aACT,KAAK,KAAK,WACV,KAAK,KAAK;AAEZ,OAAI,CAAC,EAAE,UAAU,EAAE;AACjB,QAAI,CAAC,EAAE,EAAG,QAAO,IAAI,KAAK,IAAI;AAC9B,QAAI,KAAK,KAAK,cAAc;AAC1B,SAAI,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,GAAI;AACtC,OAAE,IAAI,EAAE;AACR,YAAO;;cAEA,EAAE,QAAQ,CACnB,QAAO,IAAI,KAAK,EAAE;YACT,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,cAAc;AAClD,QAAI,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAK;AACvC,MAAE,IAAI,EAAE;AACR,WAAO;;AAGT,QAAK,YAAY,MAAM,KAAK;AAC5B,QAAK,WAAW;AAQhB,OAAI,KAAK,IAAI,IAAI,MAAM,WAAW,IAAI,EAAE;AAExC,QAAK,IAAI,GAAG,GAAG,EAAE,EAAG,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAEhE,cAAW;AAEX,OAAI,KAAK,KAAK,MAAM,SAAS;AAC7B,OAAI;AACJ,QAAK,EAAE,MAAM,EAAE;AACf,OAAI,IAAI,KAAK,EAAE;AACf,QAAK;AAGL,UAAO,MAAM,KAAK;AAChB,SAAK,GAAG,MAAM,GAAG;AACjB,QAAI,EAAE,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;AAE3B,SAAK,GAAG,MAAM,GAAG;AACjB,QAAI,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAE1B,QAAI,EAAE,EAAE,OAAO,KAAK,EAAG,MAAK,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM;;AAG1D,OAAI,EAAG,KAAI,EAAE,MAAM,KAAM,IAAI,EAAG;AAEhC,cAAW;AAEX,UAAO,SAAS,GAAG,KAAK,YAAY,IAAI,KAAK,WAAW,IAAI,KAAK;;AAQnE,IAAE,WAAW,WAAY;AACvB,UAAO,CAAC,CAAC,KAAK;;AAQhB,IAAE,YAAY,EAAE,QAAQ,WAAY;AAClC,UAAO,CAAC,CAAC,KAAK,KAAK,UAAU,KAAK,IAAI,SAAS,GAAG,KAAK,EAAE,SAAS;;AAQpE,IAAE,QAAQ,WAAY;AACpB,UAAO,CAAC,KAAK;;AAQf,IAAE,aAAa,EAAE,QAAQ,WAAY;AACnC,UAAO,KAAK,IAAI;;AAQlB,IAAE,aAAa,EAAE,QAAQ,WAAY;AACnC,UAAO,KAAK,IAAI;;AAQlB,IAAE,SAAS,WAAY;AACrB,UAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO;;AAQnC,IAAE,WAAW,EAAE,KAAK,SAAU,GAAG;AAC/B,UAAO,KAAK,IAAI,EAAE,GAAG;;AAQvB,IAAE,oBAAoB,EAAE,MAAM,SAAU,GAAG;AACzC,UAAO,KAAK,IAAI,EAAE,GAAG;;AAkCvB,IAAE,YAAY,EAAE,MAAM,SAAU,MAAM;GACpC,IAAI,UAAU,GAAG,aAAa,GAAG,KAAK,KAAK,IAAI,GAC7C,MAAM,MACN,OAAO,IAAI,aACX,KAAK,KAAK,WACV,KAAK,KAAK,UACV,QAAQ;AAGV,OAAI,QAAQ,MAAM;AAChB,WAAO,IAAI,KAAK,GAAG;AACnB,eAAW;UACN;AACL,WAAO,IAAI,KAAK,KAAK;AACrB,QAAI,KAAK;AAGT,QAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,EAAE,CAAE,QAAO,IAAI,KAAK,IAAI;AAEjE,eAAW,KAAK,GAAG,GAAG;;AAGxB,OAAI,IAAI;AAGR,OAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,EAAE,CACvC,QAAO,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,YAAS,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,SAAM;AAKzE,OAAI,SACF,KAAI,EAAE,SAAS,EACb,OAAM;QACD;AACL,SAAK,IAAI,EAAE,IAAI,IAAI,OAAO,GAAI,MAAK;AACnC,UAAM,MAAM;;AAIhB,cAAW;AACX,QAAK,KAAK;AACV,SAAM,iBAAiB,KAAK,GAAG;AAC/B,iBAAc,WAAW,QAAQ,MAAM,KAAK,GAAG,GAAG,iBAAiB,MAAM,GAAG;AAG5E,OAAI,OAAO,KAAK,aAAa,IAAI,EAAE;AAgBnC,OAAI,oBAAoB,EAAE,GAAG,IAAI,IAAI,GAAG,CAEtC,IAAG;AACD,UAAM;AACN,UAAM,iBAAiB,KAAK,GAAG;AAC/B,kBAAc,WAAW,QAAQ,MAAM,KAAK,GAAG,GAAG,iBAAiB,MAAM,GAAG;AAC5E,QAAI,OAAO,KAAK,aAAa,IAAI,EAAE;AAEnC,QAAI,CAAC,KAAK;AAGR,SAAI,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,eACnD,KAAI,SAAS,GAAG,KAAK,GAAG,EAAE;AAG5B;;YAEK,oBAAoB,EAAE,GAAG,KAAK,IAAI,GAAG;AAGhD,cAAW;AAEX,UAAO,SAAS,GAAG,IAAI,GAAG;;AAiD5B,IAAE,QAAQ,EAAE,MAAM,SAAU,GAAG;GAC7B,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,MAAM,IAC5C,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,IAAI,KAAK,EAAE;AAGf,OAAI,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG;AAGhB,QAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAG,KAAI,IAAI,KAAK,IAAI;aAG1B,EAAE,EAAG,GAAE,IAAI,CAAC,EAAE;QAKlB,KAAI,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;AAE/C,WAAO;;AAIT,OAAI,EAAE,KAAK,EAAE,GAAG;AACd,MAAE,IAAI,CAAC,EAAE;AACT,WAAO,EAAE,KAAK,EAAE;;AAGlB,QAAK,EAAE;AACP,QAAK,EAAE;AACP,QAAK,KAAK;AACV,QAAK,KAAK;AAGV,OAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI;AAGpB,QAAI,GAAG,GAAI,GAAE,IAAI,CAAC,EAAE;aAGX,GAAG,GAAI,KAAI,IAAI,KAAK,EAAE;QAI1B,QAAO,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE;AAEvC,WAAO,WAAW,SAAS,GAAG,IAAI,GAAG,GAAG;;AAM1C,OAAI,UAAU,EAAE,IAAI,SAAS;AAC7B,QAAK,UAAU,EAAE,IAAI,SAAS;AAE9B,QAAK,GAAG,OAAO;AACf,OAAI,KAAK;AAGT,OAAI,GAAG;AACL,WAAO,IAAI;AAEX,QAAI,MAAM;AACR,SAAI;AACJ,SAAI,CAAC;AACL,WAAM,GAAG;WACJ;AACL,SAAI;AACJ,SAAI;AACJ,WAAM,GAAG;;AAMX,QAAI,KAAK,IAAI,KAAK,KAAK,KAAK,SAAS,EAAE,IAAI,GAAG;AAE9C,QAAI,IAAI,GAAG;AACT,SAAI;AACJ,OAAE,SAAS;;AAIb,MAAE,SAAS;AACX,SAAK,IAAI,GAAG,KAAM,GAAE,KAAK,EAAE;AAC3B,MAAE,SAAS;UAGN;AAIL,QAAI,GAAG;AACP,UAAM,GAAG;AACT,WAAO,IAAI;AACX,QAAI,KAAM,OAAM;AAEhB,SAAK,IAAI,GAAG,IAAI,KAAK,IACnB,KAAI,GAAG,MAAM,GAAG,IAAI;AAClB,YAAO,GAAG,KAAK,GAAG;AAClB;;AAIJ,QAAI;;AAGN,OAAI,MAAM;AACR,QAAI;AACJ,SAAK;AACL,SAAK;AACL,MAAE,IAAI,CAAC,EAAE;;AAGX,SAAM,GAAG;AAIT,QAAK,IAAI,GAAG,SAAS,KAAK,IAAI,GAAG,EAAE,EAAG,IAAG,SAAS;AAGlD,QAAK,IAAI,GAAG,QAAQ,IAAI,IAAI;AAE1B,QAAI,GAAG,EAAE,KAAK,GAAG,IAAI;AACnB,UAAK,IAAI,GAAG,KAAK,GAAG,EAAE,OAAO,GAAI,IAAG,KAAK,OAAO;AAChD,OAAE,GAAG;AACL,QAAG,MAAM;;AAGX,OAAG,MAAM,GAAG;;AAId,UAAO,GAAG,EAAE,SAAS,GAAI,IAAG,KAAK;AAGjC,UAAO,GAAG,OAAO,GAAG,GAAG,OAAO,CAAE,GAAE;AAGlC,OAAI,CAAC,GAAG,GAAI,QAAO,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE;AAE9C,KAAE,IAAI;AACN,KAAE,IAAI,kBAAkB,IAAI,EAAE;AAE9B,UAAO,WAAW,SAAS,GAAG,IAAI,GAAG,GAAG;;AA4B1C,IAAE,SAAS,EAAE,MAAM,SAAU,GAAG;GAC9B,IAAI,GACF,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,IAAI,KAAK,EAAE;AAGf,OAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,GAAI,QAAO,IAAI,KAAK,IAAI;AAGxD,OAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,GACtB,QAAO,SAAS,IAAI,KAAK,EAAE,EAAE,KAAK,WAAW,KAAK,SAAS;AAI7D,cAAW;AAEX,OAAI,KAAK,UAAU,GAAG;AAIpB,QAAI,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE;AAC/B,MAAE,KAAK,EAAE;SAET,KAAI,OAAO,GAAG,GAAG,GAAG,KAAK,QAAQ,EAAE;AAGrC,OAAI,EAAE,MAAM,EAAE;AAEd,cAAW;AAEX,UAAO,EAAE,MAAM,EAAE;;AAUnB,IAAE,qBAAqB,EAAE,MAAM,WAAY;AACzC,UAAO,mBAAmB,KAAK;;AASjC,IAAE,mBAAmB,EAAE,KAAK,WAAY;AACtC,UAAO,iBAAiB,KAAK;;AAS/B,IAAE,UAAU,EAAE,MAAM,WAAY;GAC9B,IAAI,IAAI,IAAI,KAAK,YAAY,KAAK;AAClC,KAAE,IAAI,CAAC,EAAE;AACT,UAAO,SAAS,EAAE;;AAyBpB,IAAE,OAAO,EAAE,MAAM,SAAU,GAAG;GAC5B,IAAI,OAAO,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,IAAI,IACtC,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,IAAI,KAAK,EAAE;AAGf,OAAI,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG;AAGhB,QAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAG,KAAI,IAAI,KAAK,IAAI;aAM1B,CAAC,EAAE,EAAG,KAAI,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;AAEzD,WAAO;;AAIT,OAAI,EAAE,KAAK,EAAE,GAAG;AACd,MAAE,IAAI,CAAC,EAAE;AACT,WAAO,EAAE,MAAM,EAAE;;AAGnB,QAAK,EAAE;AACP,QAAK,EAAE;AACP,QAAK,KAAK;AACV,QAAK,KAAK;AAGV,OAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI;AAIpB,QAAI,CAAC,GAAG,GAAI,KAAI,IAAI,KAAK,EAAE;AAE3B,WAAO,WAAW,SAAS,GAAG,IAAI,GAAG,GAAG;;AAM1C,OAAI,UAAU,EAAE,IAAI,SAAS;AAC7B,OAAI,UAAU,EAAE,IAAI,SAAS;AAE7B,QAAK,GAAG,OAAO;AACf,OAAI,IAAI;AAGR,OAAI,GAAG;AAEL,QAAI,IAAI,GAAG;AACT,SAAI;AACJ,SAAI,CAAC;AACL,WAAM,GAAG;WACJ;AACL,SAAI;AACJ,SAAI;AACJ,WAAM,GAAG;;AAIX,QAAI,KAAK,KAAK,KAAK,SAAS;AAC5B,UAAM,IAAI,MAAM,IAAI,IAAI,MAAM;AAE9B,QAAI,IAAI,KAAK;AACX,SAAI;AACJ,OAAE,SAAS;;AAIb,MAAE,SAAS;AACX,WAAO,KAAM,GAAE,KAAK,EAAE;AACtB,MAAE,SAAS;;AAGb,SAAM,GAAG;AACT,OAAI,GAAG;AAGP,OAAI,MAAM,IAAI,GAAG;AACf,QAAI;AACJ,QAAI;AACJ,SAAK;AACL,SAAK;;AAIP,QAAK,QAAQ,GAAG,IAAI;AAClB,aAAS,GAAG,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,SAAS,OAAO;AACnD,OAAG,MAAM;;AAGX,OAAI,OAAO;AACT,OAAG,QAAQ,MAAM;AACjB,MAAE;;AAKJ,QAAK,MAAM,GAAG,QAAQ,GAAG,EAAE,QAAQ,GAAI,IAAG,KAAK;AAE/C,KAAE,IAAI;AACN,KAAE,IAAI,kBAAkB,IAAI,EAAE;AAE9B,UAAO,WAAW,SAAS,GAAG,IAAI,GAAG,GAAG;;AAU1C,IAAE,YAAY,EAAE,KAAK,SAAU,GAAG;GAChC,IAAI,GACF,IAAI;AAEN,OAAI,MAAM,KAAK,KAAK,MAAM,CAAC,CAAC,KAAK,MAAM,KAAK,MAAM,EAAG,OAAM,MAAM,kBAAkB,EAAE;AAErF,OAAI,EAAE,GAAG;AACP,QAAI,aAAa,EAAE,EAAE;AACrB,QAAI,KAAK,EAAE,IAAI,IAAI,EAAG,KAAI,EAAE,IAAI;SAEhC,KAAI;AAGN,UAAO;;AAST,IAAE,QAAQ,WAAY;GACpB,IAAI,IAAI,MACN,OAAO,EAAE;AAEX,UAAO,SAAS,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,KAAK,SAAS;;AAmBtD,IAAE,OAAO,EAAE,MAAM,WAAY;GAC3B,IAAI,IAAI,IACN,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,UAAU,CAAE,QAAO,IAAI,KAAK,IAAI;AACvC,OAAI,EAAE,QAAQ,CAAE,QAAO,IAAI,KAAK,EAAE;AAElC,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK,KAAK,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG;AAC9C,QAAK,WAAW;AAEhB,OAAI,KAAK,MAAM,iBAAiB,MAAM,EAAE,CAAC;AAEzC,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,SAAS,WAAW,IAAI,EAAE,KAAK,GAAG,GAAG,IAAI,IAAI,KAAK;;AAgB3D,IAAE,aAAa,EAAE,OAAO,WAAY;GAClC,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,GACpB,IAAI,MACJ,IAAI,EAAE,GACN,IAAI,EAAE,GACN,IAAI,EAAE,GACN,OAAO,EAAE;AAGX,OAAI,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,GACtB,QAAO,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,SAAM;AAGpE,cAAW;AAGX,OAAI,KAAK,KAAK,CAAC,EAAE;AAIjB,OAAI,KAAK,KAAK,KAAK,UAAO;AACxB,QAAI,eAAe,EAAE;AAErB,SAAK,EAAE,SAAS,KAAK,KAAK,EAAG,MAAK;AAClC,QAAI,KAAK,KAAK,EAAE;AAChB,QAAI,WAAW,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI;AAE3C,QAAI,KAAK,SACP,KAAI,OAAO;SACN;AACL,SAAI,EAAE,eAAe;AACrB,SAAI,EAAE,MAAM,GAAG,EAAE,QAAQ,IAAI,GAAG,EAAE,GAAG;;AAGvC,QAAI,IAAI,KAAK,EAAE;SAEf,KAAI,IAAI,KAAK,EAAE,UAAU,CAAC;AAG5B,SAAM,IAAI,KAAK,aAAa;AAG5B,YAAS;AACP,QAAI;AACJ,QAAI,EAAE,KAAK,OAAO,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,MAAM,GAAI;AAG9C,QAAI,eAAe,EAAE,EAAE,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,eAAe,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE;AAC/E,SAAI,EAAE,MAAM,KAAK,GAAG,KAAK,EAAE;AAI3B,SAAI,KAAK,UAAU,CAAC,OAAO,KAAK,QAAQ;AAItC,UAAI,CAAC,KAAK;AACR,gBAAS,GAAG,IAAI,GAAG,EAAE;AAErB,WAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;AACpB,YAAI;AACJ;;;AAIJ,YAAM;AACN,YAAM;YACD;AAIL,UAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK;AAG7C,gBAAS,GAAG,IAAI,GAAG,EAAE;AACrB,WAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE;;AAGvB;;;;AAKN,cAAW;AAEX,UAAO,SAAS,GAAG,GAAG,KAAK,UAAU,EAAE;;AAiBzC,IAAE,UAAU,EAAE,MAAM,WAAY;GAC9B,IAAI,IAAI,IACN,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,CAAC,EAAE,UAAU,CAAE,QAAO,IAAI,KAAK,IAAI;AACvC,OAAI,EAAE,QAAQ,CAAE,QAAO,IAAI,KAAK,EAAE;AAElC,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,YAAY,KAAK;AACtB,QAAK,WAAW;AAEhB,OAAI,EAAE,KAAK;AACX,KAAE,IAAI;AACN,OAAI,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;AAE/D,QAAK,YAAY;AACjB,QAAK,WAAW;AAEhB,UAAO,SAAS,YAAY,KAAK,YAAY,IAAI,EAAE,KAAK,GAAG,GAAG,IAAI,IAAI,KAAK;;AAyB7E,IAAE,QAAQ,EAAE,MAAM,SAAU,GAAG;GAC7B,IAAI,OAAO,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,KACjC,IAAI,MACJ,OAAO,EAAE,aACT,KAAK,EAAE,GACP,MAAM,IAAI,IAAI,KAAK,EAAE,EAAE;AAEzB,KAAE,KAAK,EAAE;AAGT,OAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAE9B,QAAO,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,KAI5D,MAIA,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE;AAGrC,OAAI,UAAU,EAAE,IAAI,SAAS,GAAG,UAAU,EAAE,IAAI,SAAS;AACzD,SAAM,GAAG;AACT,SAAM,GAAG;AAGT,OAAI,MAAM,KAAK;AACb,QAAI;AACJ,SAAK;AACL,SAAK;AACL,SAAK;AACL,UAAM;AACN,UAAM;;AAIR,OAAI,EAAE;AACN,QAAK,MAAM;AACX,QAAK,IAAI,IAAI,KAAM,GAAE,KAAK,EAAE;AAG5B,QAAK,IAAI,KAAK,EAAE,KAAK,IAAI;AACvB,YAAQ;AACR,SAAK,IAAI,MAAM,GAAG,IAAI,IAAI;AACxB,SAAI,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK;AACnC,OAAE,OAAO,IAAI,OAAO;AACpB,aAAQ,IAAI,OAAO;;AAGrB,MAAE,MAAM,EAAE,KAAK,SAAS,OAAO;;AAIjC,UAAO,CAAC,EAAE,EAAE,KAAM,GAAE,KAAK;AAEzB,OAAI,MAAO,GAAE;OACR,GAAE,OAAO;AAEd,KAAE,IAAI;AACN,KAAE,IAAI,kBAAkB,GAAG,EAAE;AAE7B,UAAO,WAAW,SAAS,GAAG,KAAK,WAAW,KAAK,SAAS,GAAG;;AAcjE,IAAE,WAAW,SAAU,IAAI,IAAI;AAC7B,UAAO,eAAe,MAAM,GAAG,IAAI,GAAG;;AAcxC,IAAE,kBAAkB,EAAE,OAAO,SAAU,IAAI,IAAI;GAC7C,IAAI,IAAI,MACN,OAAO,EAAE;AAEX,OAAI,IAAI,KAAK,EAAE;AACf,OAAI,OAAO,KAAK,EAAG,QAAO;AAE1B,cAAW,IAAI,GAAG,WAAW;AAE7B,OAAI,OAAO,KAAK,EAAG,MAAK,KAAK;OACxB,YAAW,IAAI,GAAG,EAAE;AAEzB,UAAO,SAAS,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG;;AAYtC,IAAE,gBAAgB,SAAU,IAAI,IAAI;GAClC,IAAI,KACF,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,OAAO,KAAK,EACd,OAAM,eAAe,GAAG,KAAK;QACxB;AACL,eAAW,IAAI,GAAG,WAAW;AAE7B,QAAI,OAAO,KAAK,EAAG,MAAK,KAAK;QACxB,YAAW,IAAI,GAAG,EAAE;AAEzB,QAAI,SAAS,IAAI,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG;AACrC,UAAM,eAAe,GAAG,MAAM,KAAK,EAAE;;AAGvC,UAAO,EAAE,OAAO,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,MAAM;;AAoBhD,IAAE,UAAU,SAAU,IAAI,IAAI;GAC5B,IAAI,KAAK,GACP,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,OAAO,KAAK,EACd,OAAM,eAAe,EAAE;QAClB;AACL,eAAW,IAAI,GAAG,WAAW;AAE7B,QAAI,OAAO,KAAK,EAAG,MAAK,KAAK;QACxB,YAAW,IAAI,GAAG,EAAE;AAEzB,QAAI,SAAS,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG;AAC3C,UAAM,eAAe,GAAG,OAAO,KAAK,EAAE,IAAI,EAAE;;AAK9C,UAAO,EAAE,OAAO,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,MAAM;;AAehD,IAAE,aAAa,SAAU,MAAM;GAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GACzC,IAAI,MACJ,KAAK,EAAE,GACP,OAAO,EAAE;AAEX,OAAI,CAAC,GAAI,QAAO,IAAI,KAAK,EAAE;AAE3B,QAAK,KAAK,IAAI,KAAK,EAAE;AACrB,QAAK,KAAK,IAAI,KAAK,EAAE;AAErB,OAAI,IAAI,KAAK,GAAG;AAChB,OAAI,EAAE,IAAI,aAAa,GAAG,GAAG,EAAE,IAAI;AACnC,OAAI,IAAI;AACR,KAAE,EAAE,KAAK,QAAQ,IAAI,IAAI,IAAI,WAAW,IAAI,EAAE;AAE9C,OAAI,QAAQ,KAGV,QAAO,IAAI,IAAI,IAAI;QACd;AACL,QAAI,IAAI,KAAK,KAAK;AAClB,QAAI,CAAC,EAAE,OAAO,IAAI,EAAE,GAAG,GAAG,CAAE,OAAM,MAAM,kBAAkB,EAAE;AAC5D,WAAO,EAAE,GAAG,EAAE,GAAI,IAAI,IAAI,IAAI,KAAM;;AAGtC,cAAW;AACX,OAAI,IAAI,KAAK,eAAe,GAAG,CAAC;AAChC,QAAK,KAAK;AACV,QAAK,YAAY,IAAI,GAAG,SAAS,WAAW;AAE5C,YAAU;AACR,QAAI,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE;AACzB,SAAK,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC;AACzB,QAAI,GAAG,IAAI,KAAK,IAAI,EAAG;AACvB,SAAK;AACL,SAAK;AACL,SAAK;AACL,SAAK,GAAG,KAAK,EAAE,MAAM,GAAG,CAAC;AACzB,SAAK;AACL,SAAK;AACL,QAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AACxB,QAAI;;AAGN,QAAK,OAAO,KAAK,MAAM,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE;AACxC,QAAK,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC;AAC1B,QAAK,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC;AAC1B,MAAG,IAAI,GAAG,IAAI,EAAE;AAGhB,OAAI,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAC7E,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG;AAEzB,QAAK,YAAY;AACjB,cAAW;AAEX,UAAO;;AAcT,IAAE,gBAAgB,EAAE,QAAQ,SAAU,IAAI,IAAI;AAC5C,UAAO,eAAe,MAAM,IAAI,IAAI,GAAG;;AAoBzC,IAAE,YAAY,SAAU,GAAG,IAAI;GAC7B,IAAI,IAAI,MACN,OAAO,EAAE;AAEX,OAAI,IAAI,KAAK,EAAE;AAEf,OAAI,KAAK,MAAM;AAGb,QAAI,CAAC,EAAE,EAAG,QAAO;AAEjB,QAAI,IAAI,KAAK,EAAE;AACf,SAAK,KAAK;UACL;AACL,QAAI,IAAI,KAAK,EAAE;AACf,QAAI,OAAO,KAAK,EACd,MAAK,KAAK;QAEV,YAAW,IAAI,GAAG,EAAE;AAItB,QAAI,CAAC,EAAE,EAAG,QAAO,EAAE,IAAI,IAAI;AAG3B,QAAI,CAAC,EAAE,GAAG;AACR,SAAI,EAAE,EAAG,GAAE,IAAI,EAAE;AACjB,YAAO;;;AAKX,OAAI,EAAE,EAAE,IAAI;AACV,eAAW;AACX,QAAI,OAAO,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE;AACnC,eAAW;AACX,aAAS,EAAE;UAGN;AACL,MAAE,IAAI,EAAE;AACR,QAAI;;AAGN,UAAO;;AAST,IAAE,WAAW,WAAY;AACvB,UAAO,CAAC;;AAcV,IAAE,UAAU,SAAU,IAAI,IAAI;AAC5B,UAAO,eAAe,MAAM,GAAG,IAAI,GAAG;;AA+CxC,IAAE,UAAU,EAAE,MAAM,SAAU,GAAG;GAC/B,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GACnB,IAAI,MACJ,OAAO,EAAE,aACT,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;AAGxB,OAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,GAAI,QAAO,IAAI,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC;AAExE,OAAI,IAAI,KAAK,EAAE;AAEf,OAAI,EAAE,GAAG,EAAE,CAAE,QAAO;AAEpB,QAAK,KAAK;AACV,QAAK,KAAK;AAEV,OAAI,EAAE,GAAG,EAAE,CAAE,QAAO,SAAS,GAAG,IAAI,GAAG;AAGvC,OAAI,UAAU,EAAE,IAAI,SAAS;AAG7B,OAAI,KAAK,EAAE,EAAE,SAAS,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,OAAO,kBAAkB;AACtE,QAAI,OAAO,MAAM,GAAG,GAAG,GAAG;AAC1B,WAAO,EAAE,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG;;AAG3D,OAAI,EAAE;AAGN,OAAI,IAAI,GAAG;AAGT,QAAI,IAAI,EAAE,EAAE,SAAS,EAAG,QAAO,IAAI,KAAK,IAAI;AAG5C,SAAK,EAAE,EAAE,KAAK,MAAM,EAAG,KAAI;AAG3B,QAAI,EAAE,KAAK,KAAK,EAAE,EAAE,MAAM,KAAK,EAAE,EAAE,UAAU,GAAG;AAC9C,OAAE,IAAI;AACN,YAAO;;;AAQX,OAAI,QAAQ,CAAC,GAAG,GAAG;AACnB,OAAI,KAAK,KAAK,CAAC,SAAS,EAAE,GACtB,UAAU,MAAM,KAAK,IAAI,OAAO,eAAe,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,EAAE,IAAI,GAAG,GAC5E,IAAI,KAAK,IAAI,GAAG,CAAC;AAKrB,OAAI,IAAI,KAAK,OAAO,KAAK,IAAI,KAAK,OAAO,EAAG,QAAO,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AAE9E,cAAW;AACX,QAAK,WAAW,EAAE,IAAI;AAMtB,OAAI,KAAK,IAAI,KAAK,IAAI,IAAI,OAAO;AAGjC,OAAI,mBAAmB,EAAE,MAAM,iBAAiB,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG;AAGhE,OAAI,EAAE,GAAG;AAGP,QAAI,SAAS,GAAG,KAAK,GAAG,EAAE;AAI1B,QAAI,oBAAoB,EAAE,GAAG,IAAI,GAAG,EAAE;AACpC,SAAI,KAAK;AAGT,SAAI,SAAS,mBAAmB,EAAE,MAAM,iBAAiB,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE;AAGlF,SAAI,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,KAAK,eACrD,KAAI,SAAS,GAAG,KAAK,GAAG,EAAE;;;AAKhC,KAAE,IAAI;AACN,cAAW;AACX,QAAK,WAAW;AAEhB,UAAO,SAAS,GAAG,IAAI,GAAG;;AAe5B,IAAE,cAAc,SAAU,IAAI,IAAI;GAChC,IAAI,KACF,IAAI,MACJ,OAAO,EAAE;AAEX,OAAI,OAAO,KAAK,EACd,OAAM,eAAe,GAAG,EAAE,KAAK,KAAK,YAAY,EAAE,KAAK,KAAK,SAAS;QAChE;AACL,eAAW,IAAI,GAAG,WAAW;AAE7B,QAAI,OAAO,KAAK,EAAG,MAAK,KAAK;QACxB,YAAW,IAAI,GAAG,EAAE;AAEzB,QAAI,SAAS,IAAI,KAAK,EAAE,EAAE,IAAI,GAAG;AACjC,UAAM,eAAe,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,UAAU,GAAG;;AAGhE,UAAO,EAAE,OAAO,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,MAAM;;AAkBhD,IAAE,sBAAsB,EAAE,OAAO,SAAU,IAAI,IAAI;GACjD,IAAI,IAAI,MACN,OAAO,EAAE;AAEX,OAAI,OAAO,KAAK,GAAG;AACjB,SAAK,KAAK;AACV,SAAK,KAAK;UACL;AACL,eAAW,IAAI,GAAG,WAAW;AAE7B,QAAI,OAAO,KAAK,EAAG,MAAK,KAAK;QACxB,YAAW,IAAI,GAAG,EAAE;;AAG3B,UAAO,SAAS,IAAI,KAAK,EAAE,EAAE,IAAI,GAAG;;AAWtC,IAAE,WAAW,WAAY;GACvB,IAAI,IAAI,MACN,OAAO,EAAE,aACT,MAAM,eAAe,GAAG,EAAE,KAAK,KAAK,YAAY,EAAE,KAAK,KAAK,SAAS;AAEvE,UAAO,EAAE,OAAO,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,MAAM;;AAQhD,IAAE,YAAY,EAAE,QAAQ,WAAY;AAClC,UAAO,SAAS,IAAI,KAAK,YAAY,KAAK,EAAE,KAAK,IAAI,GAAG,EAAE;;AAS5D,IAAE,UAAU,EAAE,SAAS,WAAY;GACjC,IAAI,IAAI,MACN,OAAO,EAAE,aACT,MAAM,eAAe,GAAG,EAAE,KAAK,KAAK,YAAY,EAAE,KAAK,KAAK,SAAS;AAEvE,UAAO,EAAE,OAAO,GAAG,MAAM,MAAM;;EAqDjC,SAAS,eAAe,GAAG;GACzB,IAAI,GAAG,GAAG,IACR,kBAAkB,EAAE,SAAS,GAC7B,MAAM,IACN,IAAI,EAAE;AAER,OAAI,kBAAkB,GAAG;AACvB,WAAO;AACP,SAAK,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACpC,UAAK,EAAE,KAAK;AACZ,SAAI,WAAW,GAAG;AAClB,SAAI,EAAG,QAAO,cAAc,EAAE;AAC9B,YAAO;;AAGT,QAAI,EAAE;AACN,SAAK,IAAI;AACT,QAAI,WAAW,GAAG;AAClB,QAAI,EAAG,QAAO,cAAc,EAAE;cACrB,MAAM,EACf,QAAO;AAIT,UAAO,IAAI,OAAO,GAAI,MAAK;AAE3B,UAAO,MAAM;;EAIf,SAAS,WAAW,GAAG,KAAK,KAAK;AAC/B,OAAI,MAAM,CAAC,CAAC,KAAK,IAAI,OAAO,IAAI,IAC9B,OAAM,MAAM,kBAAkB,EAAE;;EAUpC,SAAS,oBAAoB,GAAG,GAAG,IAAI,WAAW;GAChD,IAAI,IAAI,GAAG,GAAG;AAGd,QAAK,IAAI,EAAE,IAAI,KAAK,IAAI,KAAK,GAAI,GAAE;AAGnC,OAAI,EAAE,IAAI,GAAG;AACX,SAAK;AACL,SAAK;UACA;AACL,SAAK,KAAK,MAAM,IAAI,KAAK,SAAS;AAClC,SAAK;;AAMP,OAAI,QAAQ,IAAI,WAAW,EAAE;AAC7B,QAAK,EAAE,MAAM,IAAI;AAEjB,OAAI,aAAa,KACf,KAAI,IAAI,GAAG;AACT,QAAI,KAAK,EAAG,MAAK,KAAK,MAAM;aACnB,KAAK,EAAG,MAAK,KAAK,KAAK;AAChC,QAAI,KAAK,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,MAAM,OAAS,MAAM;SAE3E,MAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,OACnD,EAAE,KAAK,KAAK,IAAI,MAAM,MAAM,QAAQ,IAAI,IAAI,EAAE,GAAG,MAC/C,MAAM,IAAI,KAAK,MAAM,OAAO,EAAE,KAAK,KAAK,IAAI,MAAM,MAAM;YAG3D,IAAI,GAAG;AACT,QAAI,KAAK,EAAG,MAAK,KAAK,MAAO;aACpB,KAAK,EAAG,MAAK,KAAK,MAAM;aACxB,KAAK,EAAG,MAAK,KAAK,KAAK;AAChC,SAAK,aAAa,KAAK,MAAM,MAAM,QAAQ,CAAC,aAAa,KAAK,KAAK,MAAM;SAEzE,OAAM,aAAa,KAAK,MAAM,KAAK,KAAK,KACvC,CAAC,aAAa,KAAK,KAAM,KAAK,KAAK,IAAI,OACrC,EAAE,KAAK,KAAK,IAAI,MAAO,MAAM,QAAQ,IAAI,IAAI,EAAE,GAAG;AAIzD,UAAO;;EAOT,SAAS,YAAY,KAAK,QAAQ,SAAS;GACzC,IAAI,GACF,MAAM,CAAC,EAAE,EACT,MACA,IAAI,GACJ,OAAO,IAAI;AAEb,UAAO,IAAI,OAAO;AAChB,SAAK,OAAO,IAAI,QAAQ,QAAS,KAAI,SAAS;AAC9C,QAAI,MAAM,SAAS,QAAQ,IAAI,OAAO,IAAI,CAAC;AAC3C,SAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,IAC1B,KAAI,IAAI,KAAK,UAAU,GAAG;AACxB,SAAI,IAAI,IAAI,OAAO,KAAK,EAAG,KAAI,IAAI,KAAK;AACxC,SAAI,IAAI,MAAM,IAAI,KAAK,UAAU;AACjC,SAAI,MAAM;;;AAKhB,UAAO,IAAI,SAAS;;EAStB,SAAS,OAAO,MAAM,GAAG;GACvB,IAAI,GAAG,KAAK;AAEZ,OAAI,EAAE,QAAQ,CAAE,QAAO;AAMvB,SAAM,EAAE,EAAE;AACV,OAAI,MAAM,IAAI;AACZ,QAAI,KAAK,KAAK,MAAM,EAAE;AACtB,SAAK,IAAI,QAAQ,GAAG,EAAE,EAAE,UAAU;UAC7B;AACL,QAAI;AACJ,QAAI;;AAGN,QAAK,aAAa;AAElB,OAAI,aAAa,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC;AAGlD,QAAK,IAAI,IAAI,GAAG,MAAM;IACpB,IAAI,QAAQ,EAAE,MAAM,EAAE;AACtB,QAAI,MAAM,MAAM,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;;AAGtD,QAAK,aAAa;AAElB,UAAO;;EAOT,IAAI,UAAU,WAAY;GAGxB,SAAS,gBAAgB,GAAG,GAAG,MAAM;IACnC,IAAI,MACF,QAAQ,GACR,IAAI,EAAE;AAER,SAAK,IAAI,EAAE,OAAO,EAAE,MAAM;AACxB,YAAO,EAAE,KAAK,IAAI;AAClB,OAAE,KAAK,OAAO,OAAO;AACrB,aAAQ,OAAO,OAAO;;AAGxB,QAAI,MAAO,GAAE,QAAQ,MAAM;AAE3B,WAAO;;GAGT,SAAS,QAAQ,GAAG,GAAG,IAAI,IAAI;IAC7B,IAAI,GAAG;AAEP,QAAI,MAAM,GACR,KAAI,KAAK,KAAK,IAAI;QAElB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IACtB,KAAI,EAAE,MAAM,EAAE,IAAI;AAChB,SAAI,EAAE,KAAK,EAAE,KAAK,IAAI;AACtB;;AAKN,WAAO;;GAGT,SAAS,SAAS,GAAG,GAAG,IAAI,MAAM;IAChC,IAAI,IAAI;AAGR,WAAO,OAAO;AACZ,OAAE,OAAO;AACT,SAAI,EAAE,MAAM,EAAE,MAAM,IAAI;AACxB,OAAE,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE;;AAI/B,WAAO,CAAC,EAAE,MAAM,EAAE,SAAS,GAAI,GAAE,OAAO;;AAG1C,UAAO,SAAU,GAAG,GAAG,IAAI,IAAI,IAAI,MAAM;IACvC,IAAI,KAAK,GAAG,GAAG,GAAG,SAAS,MAAM,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,KACnF,IAAI,IACJ,OAAO,EAAE,aACT,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,IACxB,KAAK,EAAE,GACP,KAAK,EAAE;AAGT,QAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAE9B,QAAO,IAAI,KACT,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,MAGpD,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,OAAO,IAAI,OAAO,EAAE;AAGlD,QAAI,MAAM;AACR,eAAU;AACV,SAAI,EAAE,IAAI,EAAE;WACP;AACL,YAAO;AACP,eAAU;AACV,SAAI,UAAU,EAAE,IAAI,QAAQ,GAAG,UAAU,EAAE,IAAI,QAAQ;;AAGzD,SAAK,GAAG;AACR,SAAK,GAAG;AACR,QAAI,IAAI,KAAK,KAAK;AAClB,SAAK,EAAE,IAAI,EAAE;AAIb,SAAK,IAAI,GAAG,GAAG,OAAO,GAAG,MAAM,IAAI;AAEnC,QAAI,GAAG,MAAM,GAAG,MAAM,GAAI;AAE1B,QAAI,MAAM,MAAM;AACd,UAAK,KAAK,KAAK;AACf,UAAK,KAAK;eACD,GACT,MAAK,MAAM,EAAE,IAAI,EAAE,KAAK;QAExB,MAAK;AAGP,QAAI,KAAK,GAAG;AACV,QAAG,KAAK,EAAE;AACV,YAAO;WACF;AAGL,UAAK,KAAK,UAAU,IAAI;AACxB,SAAI;AAGJ,SAAI,MAAM,GAAG;AACX,UAAI;AACJ,WAAK,GAAG;AACR;AAGA,cAAQ,IAAI,MAAM,MAAM,MAAM,KAAK;AACjC,WAAI,IAAI,QAAQ,GAAG,MAAM;AACzB,UAAG,KAAK,IAAI,KAAK;AACjB,WAAI,IAAI,KAAK;;AAGf,aAAO,KAAK,IAAI;YAGX;AAGL,UAAI,QAAQ,GAAG,KAAK,KAAK;AAEzB,UAAI,IAAI,GAAG;AACT,YAAK,gBAAgB,IAAI,GAAG,KAAK;AACjC,YAAK,gBAAgB,IAAI,GAAG,KAAK;AACjC,YAAK,GAAG;AACR,YAAK,GAAG;;AAGV,WAAK;AACL,YAAM,GAAG,MAAM,GAAG,GAAG;AACrB,aAAO,IAAI;AAGX,aAAO,OAAO,IAAK,KAAI,UAAU;AAEjC,WAAK,GAAG,OAAO;AACf,SAAG,QAAQ,EAAE;AACb,YAAM,GAAG;AAET,UAAI,GAAG,MAAM,OAAO,EAAG,GAAE;AAEzB,SAAG;AACD,WAAI;AAGJ,aAAM,QAAQ,IAAI,KAAK,IAAI,KAAK;AAGhC,WAAI,MAAM,GAAG;AAGX,eAAO,IAAI;AACX,YAAI,MAAM,KAAM,QAAO,OAAO,QAAQ,IAAI,MAAM;AAGhD,YAAI,OAAO,MAAM;AAUjB,YAAI,IAAI,GAAG;AACT,aAAI,KAAK,KAAM,KAAI,OAAO;AAG1B,gBAAO,gBAAgB,IAAI,GAAG,KAAK;AACnC,iBAAQ,KAAK;AACb,gBAAO,IAAI;AAGX,eAAM,QAAQ,MAAM,KAAK,OAAO,KAAK;AAGrC,aAAI,OAAO,GAAG;AACZ;AAGA,mBAAS,MAAM,KAAK,QAAQ,KAAK,IAAI,OAAO,KAAK;;eAE9C;AAKL,aAAI,KAAK,EAAG,OAAM,IAAI;AACtB,gBAAO,GAAG,OAAO;;AAGnB,gBAAQ,KAAK;AACb,YAAI,QAAQ,KAAM,MAAK,QAAQ,EAAE;AAGjC,iBAAS,KAAK,MAAM,MAAM,KAAK;AAG/B,YAAI,OAAO,IAAI;AACb,gBAAO,IAAI;AAGX,eAAM,QAAQ,IAAI,KAAK,IAAI,KAAK;AAGhC,aAAI,MAAM,GAAG;AACX;AAGA,mBAAS,KAAK,KAAK,OAAO,KAAK,IAAI,MAAM,KAAK;;;AAIlD,eAAO,IAAI;kBACF,QAAQ,GAAG;AACpB;AACA,cAAM,CAAC,EAAE;;AAIX,UAAG,OAAO;AAGV,WAAI,OAAO,IAAI,GACb,KAAI,UAAU,GAAG,OAAO;YACnB;AACL,cAAM,CAAC,GAAG,IAAI;AACd,eAAO;;gBAGD,OAAO,MAAM,IAAI,OAAO,KAAK,MAAM;AAE7C,aAAO,IAAI,OAAO,KAAK;;AAIzB,SAAI,CAAC,GAAG,GAAI,IAAG,OAAO;;AAIxB,QAAI,WAAW,GAAG;AAChB,OAAE,IAAI;AACN,eAAU;WACL;AAGL,UAAK,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,GAAI;AACzC,OAAE,IAAI,IAAI,IAAI,UAAU;AAExB,cAAS,GAAG,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK;;AAG/C,WAAO;;MAEP;EAOH,SAAS,SAAS,GAAG,IAAI,IAAI,aAAa;GACzC,IAAI,QAAQ,GAAG,GAAG,GAAG,IAAI,SAAS,GAAG,IAAI,KACvC,OAAO,EAAE;AAGX,OAAK,KAAI,MAAM,MAAM;AACnB,SAAK,EAAE;AAGP,QAAI,CAAC,GAAI,QAAO;AAWhB,SAAK,SAAS,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,GAAI;AAC9C,QAAI,KAAK;AAGT,QAAI,IAAI,GAAG;AACT,UAAK;AACL,SAAI;AACJ,SAAI,GAAG,MAAM;AAGb,UAAK,IAAI,QAAQ,IAAI,SAAS,IAAI,EAAE,GAAG,KAAK;WACvC;AACL,WAAM,KAAK,MAAM,IAAI,KAAK,SAAS;AACnC,SAAI,GAAG;AACP,SAAI,OAAO,EACT,KAAI,aAAa;AAGf,aAAO,OAAO,KAAM,IAAG,KAAK,EAAE;AAC9B,UAAI,KAAK;AACT,eAAS;AACT,WAAK;AACL,UAAI,IAAI,WAAW;WAEnB,OAAM;UAEH;AACL,UAAI,IAAI,GAAG;AAGX,WAAK,SAAS,GAAG,KAAK,IAAI,KAAK,GAAI;AAGnC,WAAK;AAIL,UAAI,IAAI,WAAW;AAGnB,WAAK,IAAI,IAAI,IAAI,IAAI,QAAQ,IAAI,SAAS,IAAI,EAAE,GAAG,KAAK;;;AAK5D,kBAAc,eAAe,KAAK,KAChC,GAAG,MAAM,OAAO,KAAK,MAAM,IAAI,IAAI,IAAI,IAAI,QAAQ,IAAI,SAAS,IAAI,EAAE;AAMxE,cAAU,KAAK,KACV,MAAM,iBAAiB,MAAM,KAAK,OAAO,EAAE,IAAI,IAAI,IAAI,MACxD,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,eAAe,MAAM,MAGpD,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,IAAI,SAAS,EAAE,GAAG,IAAI,GAAG,MAAM,MAAM,KAAM,KACvE,OAAO,EAAE,IAAI,IAAI,IAAI;AAE3B,QAAI,KAAK,KAAK,CAAC,GAAG,IAAI;AACpB,QAAG,SAAS;AACZ,SAAI,SAAS;AAGX,YAAM,EAAE,IAAI;AAGZ,SAAG,KAAK,QAAQ,KAAK,WAAW,KAAK,YAAY,SAAS;AAC1D,QAAE,IAAI,CAAC,MAAM;WAIb,IAAG,KAAK,EAAE,IAAI;AAGhB,YAAO;;AAIT,QAAI,KAAK,GAAG;AACV,QAAG,SAAS;AACZ,SAAI;AACJ;WACK;AACL,QAAG,SAAS,MAAM;AAClB,SAAI,QAAQ,IAAI,WAAW,EAAE;AAI7B,QAAG,OAAO,IAAI,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE,GAAG,QAAQ,IAAI,EAAE,GAAG,KAAK,IAAI;;AAG7E,QAAI,QACF,SAGE,KAAI,OAAO,GAAG;AAGZ,UAAK,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,GAAI;AACzC,SAAI,GAAG,MAAM;AACb,UAAK,IAAI,GAAG,KAAK,IAAI,KAAK,GAAI;AAG9B,SAAI,KAAK,GAAG;AACV,QAAE;AACF,UAAI,GAAG,MAAM,KAAM,IAAG,KAAK;;AAG7B;WACK;AACL,QAAG,QAAQ;AACX,SAAI,GAAG,QAAQ,KAAM;AACrB,QAAG,SAAS;AACZ,SAAI;;AAMV,SAAK,IAAI,GAAG,QAAQ,GAAG,EAAE,OAAO,GAAI,IAAG,KAAK;;AAG9C,OAAI;QAGE,EAAE,IAAI,KAAK,MAAM;AAGnB,OAAE,IAAI;AACN,OAAE,IAAI;eAGG,EAAE,IAAI,KAAK,MAAM;AAG1B,OAAE,IAAI;AACN,OAAE,IAAI,CAAC,EAAE;;;AAKb,UAAO;;EAIT,SAAS,eAAe,GAAG,OAAO,IAAI;AACpC,OAAI,CAAC,EAAE,UAAU,CAAE,QAAO,kBAAkB,EAAE;GAC9C,IAAI,GACF,IAAI,EAAE,GACN,MAAM,eAAe,EAAE,EAAE,EACzB,MAAM,IAAI;AAEZ,OAAI,OAAO;AACT,QAAI,OAAO,IAAI,KAAK,OAAO,EACzB,OAAM,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,cAAc,EAAE;aAClD,MAAM,EACf,OAAM,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE;AAG1C,UAAM,OAAO,EAAE,IAAI,IAAI,MAAM,QAAQ,EAAE;cAC9B,IAAI,GAAG;AAChB,UAAM,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG;AACrC,QAAI,OAAO,IAAI,KAAK,OAAO,EAAG,QAAO,cAAc,EAAE;cAC5C,KAAK,KAAK;AACnB,WAAO,cAAc,IAAI,IAAI,IAAI;AACjC,QAAI,OAAO,IAAI,KAAK,IAAI,KAAK,EAAG,OAAM,MAAM,MAAM,cAAc,EAAE;UAC7D;AACL,SAAK,IAAI,IAAI,KAAK,IAAK,OAAM,IAAI,MAAM,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE;AACjE,QAAI,OAAO,IAAI,KAAK,OAAO,GAAG;AAC5B,SAAI,IAAI,MAAM,IAAK,QAAO;AAC1B,YAAO,cAAc,EAAE;;;AAI3B,UAAO;;EAKT,SAAS,kBAAkB,QAAQ,GAAG;GACpC,IAAI,IAAI,OAAO;AAGf,QAAM,KAAK,UAAU,KAAK,IAAI,KAAK,GAAI;AACvC,UAAO;;EAIT,SAAS,QAAQ,MAAM,IAAI,IAAI;AAC7B,OAAI,KAAK,gBAAgB;AAGvB,eAAW;AACX,QAAI,GAAI,MAAK,YAAY;AACzB,UAAM,MAAM,uBAAuB;;AAErC,UAAO,SAAS,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,KAAK;;EAI9C,SAAS,MAAM,MAAM,IAAI,IAAI;AAC3B,OAAI,KAAK,aAAc,OAAM,MAAM,uBAAuB;AAC1D,UAAO,SAAS,IAAI,KAAK,GAAG,EAAE,IAAI,IAAI,KAAK;;EAI7C,SAAS,aAAa,QAAQ;GAC5B,IAAI,IAAI,OAAO,SAAS,GACtB,MAAM,IAAI,WAAW;AAEvB,OAAI,OAAO;AAGX,OAAI,GAAG;AAGL,WAAO,IAAI,MAAM,GAAG,KAAK,GAAI;AAG7B,SAAK,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,GAAI;;AAGxC,UAAO;;EAIT,SAAS,cAAc,GAAG;GACxB,IAAI,KAAK;AACT,UAAO,KAAM,OAAM;AACnB,UAAO;;EAWT,SAAS,OAAO,MAAM,GAAG,GAAG,IAAI;GAC9B,IAAI,aACF,IAAI,IAAI,KAAK,EAAE,EAIf,IAAI,KAAK,KAAK,KAAK,WAAW,EAAE;AAElC,cAAW;AAEX,YAAS;AACP,QAAI,IAAI,GAAG;AACT,SAAI,EAAE,MAAM,EAAE;AACd,SAAI,SAAS,EAAE,GAAG,EAAE,CAAE,eAAc;;AAGtC,QAAI,UAAU,IAAI,EAAE;AACpB,QAAI,MAAM,GAAG;AAGX,SAAI,EAAE,EAAE,SAAS;AACjB,SAAI,eAAe,EAAE,EAAE,OAAO,EAAG,GAAE,EAAE,EAAE;AACvC;;AAGF,QAAI,EAAE,MAAM,EAAE;AACd,aAAS,EAAE,GAAG,EAAE;;AAGlB,cAAW;AAEX,UAAO;;EAIT,SAAS,MAAM,GAAG;AAChB,UAAO,EAAE,EAAE,EAAE,EAAE,SAAS,KAAK;;EAO/B,SAAS,SAAS,MAAM,MAAM,GAAG;GAC/B,IAAI,GAAG,GACL,IAAI,IAAI,KAAK,KAAK,GAAG,EACrB,IAAI;AAEN,UAAO,EAAE,IAAI,KAAK,SAAS;AACzB,QAAI,IAAI,KAAK,KAAK,GAAG;AAGrB,QAAI,CAAC,EAAE,GAAG;AACR,SAAI;AACJ;;AAGF,QAAI,EAAE,IAAI,EAAE;AAEZ,QAAI,MAAM,KAAK,MAAM,KAAK,EAAE,MAAM,EAChC,KAAI;;AAIR,UAAO;;EAmCT,SAAS,mBAAmB,GAAG,IAAI;GACjC,IAAI,aAAa,OAAO,GAAG,KAAK,KAAK,GAAG,KACtC,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,OAAO,EAAE,aACT,KAAK,KAAK,UACV,KAAK,KAAK;AAGZ,OAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAE3B,QAAO,IAAI,KAAK,EAAE,IACd,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,IAAI,IAAI,WAC5B,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAM;AAGpC,OAAI,MAAM,MAAM;AACd,eAAW;AACX,UAAM;SAEN,OAAM;AAGR,OAAI,IAAI,KAAK,OAAQ;AAGrB,UAAO,EAAE,IAAI,IAAI;AAGf,QAAI,EAAE,MAAM,EAAE;AACd,SAAK;;AAKP,WAAQ,KAAK,IAAI,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI;AACtD,UAAO;AACP,iBAAc,MAAM,MAAM,IAAI,KAAK,EAAE;AACrC,QAAK,YAAY;AAEjB,YAAS;AACP,UAAM,SAAS,IAAI,MAAM,EAAE,EAAE,KAAK,EAAE;AACpC,kBAAc,YAAY,MAAM,EAAE,EAAE;AACpC,QAAI,IAAI,KAAK,OAAO,KAAK,aAAa,KAAK,EAAE,CAAC;AAE9C,QAAI,eAAe,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,KAAK,eAAe,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE;AAC7E,SAAI;AACJ,YAAO,IAAK,OAAM,SAAS,IAAI,MAAM,IAAI,EAAE,KAAK,EAAE;AAOlD,SAAI,MAAM,KAER,KAAI,MAAM,KAAK,oBAAoB,IAAI,GAAG,MAAM,OAAO,IAAI,IAAI,EAAE;AAC/D,WAAK,YAAY,OAAO;AACxB,oBAAc,MAAM,IAAI,IAAI,KAAK,EAAE;AACnC,UAAI;AACJ;WAEA,QAAO,SAAS,KAAK,KAAK,YAAY,IAAI,IAAI,WAAW,KAAK;UAE3D;AACL,WAAK,YAAY;AACjB,aAAO;;;AAIX,UAAM;;;EAoBV,SAAS,iBAAiB,GAAG,IAAI;GAC/B,IAAI,GAAG,IAAI,aAAa,GAAG,WAAW,KAAK,KAAK,GAAG,KAAK,IAAI,IAC1D,IAAI,GACJ,QAAQ,IACR,IAAI,GACJ,KAAK,EAAE,GACP,OAAO,EAAE,aACT,KAAK,KAAK,UACV,KAAK,KAAK;AAGZ,OAAI,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,KAAK,GAAG,UAAU,EACjE,QAAO,IAAI,KAAK,MAAM,CAAC,GAAG,KAAK,YAAS,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,EAAE;AAGtE,OAAI,MAAM,MAAM;AACd,eAAW;AACX,UAAM;SAEN,OAAM;AAGR,QAAK,YAAY,OAAO;AACxB,OAAI,eAAe,GAAG;AACtB,QAAK,EAAE,OAAO,EAAE;AAEhB,OAAI,KAAK,IAAI,IAAI,EAAE,EAAE,GAAG,iBAAQ;AAa9B,WAAO,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG;AACtD,SAAI,EAAE,MAAM,EAAE;AACd,SAAI,eAAe,EAAE,EAAE;AACvB,UAAK,EAAE,OAAO,EAAE;AAChB;;AAGF,QAAI,EAAE;AAEN,QAAI,KAAK,GAAG;AACV,SAAI,IAAI,KAAK,OAAO,EAAE;AACtB;UAEA,KAAI,IAAI,KAAK,KAAK,MAAM,EAAE,MAAM,EAAE,CAAC;UAEhC;AAKL,QAAI,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG;AAC5C,QAAI,iBAAiB,IAAI,KAAK,KAAK,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,MAAM,CAAC,KAAK,EAAE;AAC1E,SAAK,YAAY;AAEjB,WAAO,MAAM,OAAO,SAAS,GAAG,IAAI,IAAI,WAAW,KAAK,GAAG;;AAI7D,QAAK;AAKL,SAAM,YAAY,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE;AAC3D,QAAK,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE;AACjC,iBAAc;AAEd,YAAS;AACP,gBAAY,SAAS,UAAU,MAAM,GAAG,EAAE,KAAK,EAAE;AACjD,QAAI,IAAI,KAAK,OAAO,WAAW,IAAI,KAAK,YAAY,EAAE,KAAK,EAAE,CAAC;AAE9D,QAAI,eAAe,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,KAAK,eAAe,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE;AAC7E,WAAM,IAAI,MAAM,EAAE;AAIlB,SAAI,MAAM,EAAG,OAAM,IAAI,KAAK,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;AACrE,WAAM,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE;AAQtC,SAAI,MAAM,KACR,KAAI,oBAAoB,IAAI,GAAG,MAAM,OAAO,IAAI,IAAI,EAAE;AACpD,WAAK,YAAY,OAAO;AACxB,UAAI,YAAY,IAAI,OAAO,GAAG,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE;AAC3D,WAAK,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE;AACjC,oBAAc,MAAM;WAEpB,QAAO,SAAS,KAAK,KAAK,YAAY,IAAI,IAAI,WAAW,KAAK;UAE3D;AACL,WAAK,YAAY;AACjB,aAAO;;;AAIX,UAAM;AACN,mBAAe;;;EAMnB,SAAS,kBAAkB,GAAG;AAE5B,UAAO,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;;EAO9B,SAAS,aAAa,GAAG,KAAK;GAC5B,IAAI,GAAG,GAAG;AAKV,QAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,GAAI,OAAM,IAAI,QAAQ,KAAK,GAAG;AAG3D,QAAK,IAAI,IAAI,OAAO,KAAK,IAAI,GAAG;AAG9B,QAAI,IAAI,EAAG,KAAI;AACf,SAAK,CAAC,IAAI,MAAM,IAAI,EAAE;AACtB,UAAM,IAAI,UAAU,GAAG,EAAE;cAChB,IAAI,EAGb,KAAI,IAAI;AAIV,QAAK,IAAI,GAAG,IAAI,WAAW,EAAE,KAAK,IAAI;AAGtC,QAAK,MAAM,IAAI,QAAQ,IAAI,WAAW,MAAM,EAAE,KAAK,IAAI,EAAE;AACzD,SAAM,IAAI,MAAM,GAAG,IAAI;AAEvB,OAAI,KAAK;AACP,WAAO;AACP,MAAE,IAAI,IAAI,IAAI,IAAI;AAClB,MAAE,IAAI,EAAE;AAMR,SAAK,IAAI,KAAK;AACd,QAAI,IAAI,EAAG,MAAK;AAEhB,QAAI,IAAI,KAAK;AACX,SAAI,EAAG,GAAE,EAAE,KAAK,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC;AACjC,UAAK,OAAO,UAAU,IAAI,KAAM,GAAE,EAAE,KAAK,CAAC,IAAI,MAAM,GAAG,KAAK,SAAS,CAAC;AACtE,WAAM,IAAI,MAAM,EAAE;AAClB,SAAI,WAAW,IAAI;UAEnB,MAAK;AAGP,WAAO,KAAM,QAAO;AACpB,MAAE,EAAE,KAAK,CAAC,IAAI;AAEd,QAAI;SAGE,EAAE,IAAI,EAAE,YAAY,MAAM;AAG5B,QAAE,IAAI;AACN,QAAE,IAAI;gBAGG,EAAE,IAAI,EAAE,YAAY,MAAM;AAGnC,QAAE,IAAI;AACN,QAAE,IAAI,CAAC,EAAE;;;UAIR;AAGL,MAAE,IAAI;AACN,MAAE,IAAI,CAAC,EAAE;;AAGX,UAAO;;EAOT,SAAS,WAAW,GAAG,KAAK;GAC1B,IAAI,MAAM,MAAM,SAAS,GAAG,SAAS,KAAK,GAAG,IAAI;AAEjD,OAAI,IAAI,QAAQ,IAAI,GAAG,IAAI;AACzB,UAAM,IAAI,QAAQ,gBAAgB,KAAK;AACvC,QAAI,UAAU,KAAK,IAAI,CAAE,QAAO,aAAa,GAAG,IAAI;cAC3C,QAAQ,cAAc,QAAQ,OAAO;AAC9C,QAAI,CAAC,CAAC,IAAK,GAAE,IAAI;AACjB,MAAE,IAAI;AACN,MAAE,IAAI;AACN,WAAO;;AAGT,OAAI,MAAM,KAAK,IAAI,EAAG;AACpB,WAAO;AACP,UAAM,IAAI,aAAa;cACd,SAAS,KAAK,IAAI,CAC3B,QAAO;YACE,QAAQ,KAAK,IAAI,CAC1B,QAAO;OAEP,OAAM,MAAM,kBAAkB,IAAI;AAIpC,OAAI,IAAI,OAAO,KAAK;AAEpB,OAAI,IAAI,GAAG;AACT,QAAI,CAAC,IAAI,MAAM,IAAI,EAAE;AACrB,UAAM,IAAI,UAAU,GAAG,EAAE;SAEzB,OAAM,IAAI,MAAM,EAAE;AAKpB,OAAI,IAAI,QAAQ,IAAI;AACpB,aAAU,KAAK;AACf,UAAO,EAAE;AAET,OAAI,SAAS;AACX,UAAM,IAAI,QAAQ,KAAK,GAAG;AAC1B,UAAM,IAAI;AACV,QAAI,MAAM;AAGV,cAAU,OAAO,MAAM,IAAI,KAAK,KAAK,EAAE,GAAG,IAAI,EAAE;;AAGlD,QAAK,YAAY,KAAK,MAAM,KAAK;AACjC,QAAK,GAAG,SAAS;AAGjB,QAAK,IAAI,IAAI,GAAG,OAAO,GAAG,EAAE,EAAG,IAAG,KAAK;AACvC,OAAI,IAAI,EAAG,QAAO,IAAI,KAAK,EAAE,IAAI,EAAE;AACnC,KAAE,IAAI,kBAAkB,IAAI,GAAG;AAC/B,KAAE,IAAI;AACN,cAAW;AAQX,OAAI,QAAS,KAAI,OAAO,GAAG,SAAS,MAAM,EAAE;AAG5C,OAAI,EAAG,KAAI,EAAE,MAAM,KAAK,IAAI,EAAE,GAAG,KAAK,QAAQ,GAAG,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;AACxE,cAAW;AAEX,UAAO;;EAST,SAAS,KAAK,MAAM,GAAG;GACrB,IAAI,GACF,MAAM,EAAE,EAAE;AAEZ,OAAI,MAAM,EACR,QAAO,EAAE,QAAQ,GAAG,IAAI,aAAa,MAAM,GAAG,GAAG,EAAE;AAQrD,OAAI,MAAM,KAAK,KAAK,IAAI;AACxB,OAAI,IAAI,KAAK,KAAK,IAAI;AAEtB,OAAI,EAAE,MAAM,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC9B,OAAI,aAAa,MAAM,GAAG,GAAG,EAAE;GAG/B,IAAI,QACF,KAAK,IAAI,KAAK,EAAE,EAChB,MAAM,IAAI,KAAK,GAAG,EAClB,MAAM,IAAI,KAAK,GAAG;AACpB,UAAO,MAAM;AACX,aAAS,EAAE,MAAM,EAAE;AACnB,QAAI,EAAE,MAAM,GAAG,KAAK,OAAO,MAAM,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;;AAGlE,UAAO;;EAKT,SAAS,aAAa,MAAM,GAAG,GAAG,GAAG,cAAc;GACjD,IAAI,GAAG,GAAG,GAAG,IACX,IAAI,GACJ,KAAK,KAAK,WACV,IAAI,KAAK,KAAK,KAAK,SAAS;AAE9B,cAAW;AACX,QAAK,EAAE,MAAM,EAAE;AACf,OAAI,IAAI,KAAK,EAAE;AAEf,YAAS;AACP,QAAI,OAAO,EAAE,MAAM,GAAG,EAAE,IAAI,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE;AACnD,QAAI,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;AACzC,QAAI,OAAO,EAAE,MAAM,GAAG,EAAE,IAAI,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE;AACnD,QAAI,EAAE,KAAK,EAAE;AAEb,QAAI,EAAE,EAAE,OAAO,KAAK,GAAG;AACrB,UAAK,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM;AACjC,SAAI,KAAK,GAAI;;AAGf,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ;;AAGF,cAAW;AACX,KAAE,EAAE,SAAS,IAAI;AAEjB,UAAO;;EAKT,SAAS,QAAQ,GAAG,GAAG;GACrB,IAAI,IAAI;AACR,UAAO,EAAE,EAAG,MAAK;AACjB,UAAO;;EAKT,SAAS,iBAAiB,MAAM,GAAG;GACjC,IAAI,GACF,QAAQ,EAAE,IAAI,GACd,KAAK,MAAM,MAAM,KAAK,WAAW,EAAE,EACnC,SAAS,GAAG,MAAM,GAAI;AAExB,OAAI,EAAE,KAAK;AAEX,OAAI,EAAE,IAAI,OAAO,EAAE;AACjB,eAAW,QAAQ,IAAI;AACvB,WAAO;;AAGT,OAAI,EAAE,SAAS,GAAG;AAElB,OAAI,EAAE,QAAQ,CACZ,YAAW,QAAQ,IAAI;QAClB;AACL,QAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAGxB,QAAI,EAAE,IAAI,OAAO,EAAE;AACjB,gBAAW,MAAM,EAAE,GAAI,QAAQ,IAAI,IAAM,QAAQ,IAAI;AACrD,YAAO;;AAGT,eAAW,MAAM,EAAE,GAAI,QAAQ,IAAI,IAAM,QAAQ,IAAI;;AAGvD,UAAO,EAAE,MAAM,GAAG,CAAC,KAAK;;EAS1B,SAAS,eAAe,GAAG,SAAS,IAAI,IAAI;GAC1C,IAAI,MAAM,GAAG,GAAG,GAAG,KAAK,SAAS,KAAK,IAAI,GACxC,OAAO,EAAE,aACT,QAAQ,OAAO,KAAK;AAEtB,OAAI,OAAO;AACT,eAAW,IAAI,GAAG,WAAW;AAC7B,QAAI,OAAO,KAAK,EAAG,MAAK,KAAK;QACxB,YAAW,IAAI,GAAG,EAAE;UACpB;AACL,SAAK,KAAK;AACV,SAAK,KAAK;;AAGZ,OAAI,CAAC,EAAE,UAAU,CACf,OAAM,kBAAkB,EAAE;QACrB;AACL,UAAM,eAAe,EAAE;AACvB,QAAI,IAAI,QAAQ,IAAI;AAOpB,QAAI,OAAO;AACT,YAAO;AACP,SAAI,WAAW,GACb,MAAK,KAAK,IAAI;cACL,WAAW,EACpB,MAAK,KAAK,IAAI;UAGhB,QAAO;AAOT,QAAI,KAAK,GAAG;AACV,WAAM,IAAI,QAAQ,KAAK,GAAG;AAC1B,SAAI,IAAI,KAAK,EAAE;AACf,OAAE,IAAI,IAAI,SAAS;AACnB,OAAE,IAAI,YAAY,eAAe,EAAE,EAAE,IAAI,KAAK;AAC9C,OAAE,IAAI,EAAE,EAAE;;AAGZ,SAAK,YAAY,KAAK,IAAI,KAAK;AAC/B,QAAI,MAAM,GAAG;AAGb,WAAO,GAAG,EAAE,QAAQ,GAAI,IAAG,KAAK;AAEhC,QAAI,CAAC,GAAG,GACN,OAAM,QAAQ,SAAS;SAClB;AACL,SAAI,IAAI,EACN;UACK;AACL,UAAI,IAAI,KAAK,EAAE;AACf,QAAE,IAAI;AACN,QAAE,IAAI;AACN,UAAI,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,KAAK;AACjC,WAAK,EAAE;AACP,UAAI,EAAE;AACN,gBAAU;;AAIZ,SAAI,GAAG;AACP,SAAI,OAAO;AACX,eAAU,WAAW,GAAG,KAAK,OAAO,KAAK;AAEzC,eAAU,KAAK,KACV,MAAM,KAAK,KAAK,aAAa,OAAO,KAAK,QAAQ,EAAE,IAAI,IAAI,IAAI,MAChE,IAAI,KAAK,MAAM,MAAM,OAAO,KAAK,WAAW,OAAO,KAAK,GAAG,KAAK,KAAK,KACrE,QAAQ,EAAE,IAAI,IAAI,IAAI;AAE1B,QAAG,SAAS;AAEZ,SAAI,QAGF,QAAO,EAAE,GAAG,EAAE,MAAM,OAAO,IAAI;AAC7B,SAAG,MAAM;AACT,UAAI,CAAC,IAAI;AACP,SAAE;AACF,UAAG,QAAQ,EAAE;;;AAMnB,UAAK,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,IAAI,EAAE;AAGtC,UAAK,IAAI,GAAG,MAAM,IAAI,IAAI,KAAK,IAAK,QAAO,SAAS,OAAO,GAAG,GAAG;AAGjE,SAAI,OAAO;AACT,UAAI,MAAM,EACR,KAAI,WAAW,MAAM,WAAW,GAAG;AACjC,WAAI,WAAW,KAAK,IAAI;AACxB,YAAK,EAAE,KAAK,MAAM,GAAG,MAAO,QAAO;AACnC,YAAK,YAAY,KAAK,MAAM,QAAQ;AACpC,YAAK,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM,IAAI,EAAE;AAGtC,YAAK,IAAI,GAAG,MAAM,MAAM,IAAI,KAAK,IAAK,QAAO,SAAS,OAAO,GAAG,GAAG;YAEnE,OAAM,IAAI,OAAO,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE;AAI5C,YAAO,OAAO,IAAI,IAAI,MAAM,QAAQ;gBAC3B,IAAI,GAAG;AAChB,aAAO,EAAE,GAAI,OAAM,MAAM;AACzB,YAAM,OAAO;gBAET,EAAE,IAAI,IAAK,MAAK,KAAK,KAAK,KAAO,QAAO;cACnC,IAAI,IAAK,OAAM,IAAI,MAAM,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE;;AAIhE,WAAO,WAAW,KAAK,OAAO,WAAW,IAAI,OAAO,WAAW,IAAI,OAAO,MAAM;;AAGlF,UAAO,EAAE,IAAI,IAAI,MAAM,MAAM;;EAK/B,SAAS,SAAS,KAAK,KAAK;AAC1B,OAAI,IAAI,SAAS,KAAK;AACpB,QAAI,SAAS;AACb,WAAO;;;EA2DX,SAAS,IAAI,GAAG;AACd,UAAO,IAAI,KAAK,EAAE,CAAC,KAAK;;EAU1B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAW3B,SAAS,MAAM,GAAG;AAChB,UAAO,IAAI,KAAK,EAAE,CAAC,OAAO;;EAY5B,SAAS,IAAI,GAAG,GAAG;AACjB,UAAO,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE;;EAW5B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAW3B,SAAS,MAAM,GAAG;AAChB,UAAO,IAAI,KAAK,EAAE,CAAC,OAAO;;EAW5B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAW3B,SAAS,MAAM,GAAG;AAChB,UAAO,IAAI,KAAK,EAAE,CAAC,OAAO;;EA6B5B,SAAS,MAAM,GAAG,GAAG;AACnB,OAAI,IAAI,KAAK,EAAE;AACf,OAAI,IAAI,KAAK,EAAE;GACf,IAAI,GACF,KAAK,KAAK,WACV,KAAK,KAAK,UACV,MAAM,KAAK;AAGb,OAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EACb,KAAI,IAAI,KAAK,IAAI;YAGR,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG;AACvB,QAAI,MAAM,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI,MAAO,IAAK;AACpD,MAAE,IAAI,EAAE;cAGC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC7B,QAAI,EAAE,IAAI,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE;AAC/C,MAAE,IAAI,EAAE;cAGC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC7B,QAAI,MAAM,MAAM,KAAK,EAAE,CAAC,MAAM,GAAI;AAClC,MAAE,IAAI,EAAE;cAGC,EAAE,IAAI,GAAG;AAClB,SAAK,YAAY;AACjB,SAAK,WAAW;AAChB,QAAI,KAAK,KAAK,OAAO,GAAG,GAAG,KAAK,EAAE,CAAC;AACnC,QAAI,MAAM,MAAM,KAAK,EAAE;AACvB,SAAK,YAAY;AACjB,SAAK,WAAW;AAChB,QAAI,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;SAEpC,KAAI,KAAK,KAAK,OAAO,GAAG,GAAG,KAAK,EAAE,CAAC;AAGrC,UAAO;;EAWT,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAU3B,SAAS,KAAK,GAAG;AACf,UAAO,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE;;EAY9C,SAAS,MAAM,GAAG,KAAK,KAAK;AAC1B,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM,KAAK,IAAI;;EAsBpC,SAAS,OAAO,KAAK;AACnB,OAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,OAAM,MAAM,eAAe,kBAAkB;GAClF,IAAI,GAAG,GAAG,GACR,cAAc,IAAI,aAAa,MAC/B,KAAK;IACH;IAAa;IAAG;IAChB;IAAY;IAAG;IACf;IAAY,CAAC;IAAW;IACxB;IAAY;IAAG;IACf;IAAQ;IAAG;IACX;IAAQ,CAAC;IAAW;IACpB;IAAU;IAAG;IACd;AAEH,QAAK,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK,GAAG;AACjC,QAAI,IAAI,GAAG,IAAI,YAAa,MAAK,KAAK,SAAS;AAC/C,SAAK,IAAI,IAAI,QAAQ,KAAK,EACxB,KAAI,UAAU,EAAE,KAAK,KAAK,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,GAAI,MAAK,KAAK;QACjE,OAAM,MAAM,kBAAkB,IAAI,OAAO,EAAE;;AAIpD,OAAI,IAAI,UAAU,YAAa,MAAK,KAAK,SAAS;AAClD,QAAK,IAAI,IAAI,QAAQ,KAAK,EACxB,KAAI,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAK,MAAM,EAChD,KAAI,EACF,KAAI,OAAO,UAAU,eAAe,WACjC,OAAO,mBAAmB,OAAO,aAClC,MAAK,KAAK;OAEV,OAAM,MAAM,kBAAkB;OAGhC,MAAK,KAAK;OAGZ,OAAM,MAAM,kBAAkB,IAAI,OAAO,EAAE;AAI/C,UAAO;;EAWT,SAAS,IAAI,GAAG;AACd,UAAO,IAAI,KAAK,EAAE,CAAC,KAAK;;EAW1B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAS3B,SAAS,MAAM,KAAK;GAClB,IAAI,GAAG,GAAG;GASV,SAAS,QAAQ,GAAG;IAClB,IAAI,GAAG,GAAG,GACR,IAAI;AAGN,QAAI,EAAE,aAAa,SAAU,QAAO,IAAI,QAAQ,EAAE;AAIlD,MAAE,cAAc;AAEhB,QAAI,kBAAkB,EAAE,EAAE;AACxB,OAAE,IAAI,EAAE;AAER,SAAI,SACF,KAAI,CAAC,EAAE,KAAK,EAAE,IAAI,QAAQ,MAAM;AAG9B,QAAE,IAAI;AACN,QAAE,IAAI;gBACG,EAAE,IAAI,QAAQ,MAAM;AAG7B,QAAE,IAAI;AACN,QAAE,IAAI,CAAC,EAAE;YACJ;AACL,QAAE,IAAI,EAAE;AACR,QAAE,IAAI,EAAE,EAAE,OAAO;;UAEd;AACL,QAAE,IAAI,EAAE;AACR,QAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,GAAG,EAAE;;AAG9B;;AAGF,QAAI,OAAO;AAEX,QAAI,MAAM,UAAU;AAClB,SAAI,MAAM,GAAG;AACX,QAAE,IAAI,IAAI,IAAI,IAAI,KAAK;AACvB,QAAE,IAAI;AACN,QAAE,IAAI,CAAC,EAAE;AACT;;AAGF,SAAI,IAAI,GAAG;AACT,UAAI,CAAC;AACL,QAAE,IAAI;WAEN,GAAE,IAAI;AAIR,SAAI,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK;AACxB,WAAK,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK,GAAI;AAErC,UAAI,SACF,KAAI,IAAI,QAAQ,MAAM;AACpB,SAAE,IAAI;AACN,SAAE,IAAI;iBACG,IAAI,QAAQ,MAAM;AAC3B,SAAE,IAAI;AACN,SAAE,IAAI,CAAC,EAAE;aACJ;AACL,SAAE,IAAI;AACN,SAAE,IAAI,CAAC,EAAE;;WAEN;AACL,SAAE,IAAI;AACN,SAAE,IAAI,CAAC,EAAE;;AAGX;;AAIF,SAAI,IAAI,MAAM,GAAG;AACf,UAAI,CAAC,EAAG,GAAE,IAAI;AACd,QAAE,IAAI;AACN,QAAE,IAAI;AACN;;AAGF,YAAO,aAAa,GAAG,EAAE,UAAU,CAAC;;AAGtC,QAAI,MAAM,UAAU;AAClB,UAAK,IAAI,EAAE,WAAW,EAAE,MAAM,IAAI;AAChC,UAAI,EAAE,MAAM,EAAE;AACd,QAAE,IAAI;YACD;AACL,UAAI,MAAM,GAAI,KAAI,EAAE,MAAM,EAAE;AAC5B,QAAE,IAAI;;AAGR,YAAO,UAAU,KAAK,EAAE,GAAG,aAAa,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE;;AAGlE,QAAI,MAAM,UAAU;AAClB,SAAI,IAAI,GAAG;AACT,UAAI,CAAC;AACL,QAAE,IAAI;WAEN,GAAE,IAAI;AAGR,YAAO,aAAa,GAAG,EAAE,UAAU,CAAC;;AAGtC,UAAM,MAAM,kBAAkB,EAAE;;AAGlC,WAAQ,YAAY;AAEpB,WAAQ,WAAW;AACnB,WAAQ,aAAa;AACrB,WAAQ,aAAa;AACrB,WAAQ,cAAc;AACtB,WAAQ,gBAAgB;AACxB,WAAQ,kBAAkB;AAC1B,WAAQ,kBAAkB;AAC1B,WAAQ,kBAAkB;AAC1B,WAAQ,mBAAmB;AAC3B,WAAQ,SAAS;AAEjB,WAAQ,SAAS,QAAQ,MAAM;AAC/B,WAAQ,QAAQ;AAChB,WAAQ,YAAY;AAEpB,WAAQ,MAAM;AACd,WAAQ,OAAO;AACf,WAAQ,QAAQ;AAChB,WAAQ,MAAM;AACd,WAAQ,OAAO;AACf,WAAQ,QAAQ;AAChB,WAAQ,OAAO;AACf,WAAQ,QAAQ;AAChB,WAAQ,QAAQ;AAChB,WAAQ,OAAO;AACf,WAAQ,OAAO;AACf,WAAQ,QAAQ;AAChB,WAAQ,MAAM;AACd,WAAQ,OAAO;AACf,WAAQ,MAAM;AACd,WAAQ,MAAM;AACd,WAAQ,QAAQ;AAChB,WAAQ,QAAQ;AAChB,WAAQ,KAAK;AACb,WAAQ,MAAM;AACd,WAAQ,QAAQ;AAChB,WAAQ,OAAO;AACf,WAAQ,MAAM;AACd,WAAQ,MAAM;AACd,WAAQ,MAAM;AACd,WAAQ,MAAM;AACd,WAAQ,MAAM;AACd,WAAQ,SAAS;AACjB,WAAQ,QAAQ;AAChB,WAAQ,OAAO;AACf,WAAQ,MAAM;AACd,WAAQ,OAAO;AACf,WAAQ,OAAO;AACf,WAAQ,MAAM;AACd,WAAQ,MAAM;AACd,WAAQ,MAAM;AACd,WAAQ,OAAO;AACf,WAAQ,QAAQ;AAEhB,OAAI,QAAQ,KAAK,EAAG,OAAM,EAAE;AAC5B,OAAI;QACE,IAAI,aAAa,MAAM;AACzB,UAAK;MAAC;MAAa;MAAY;MAAY;MAAY;MAAQ;MAAQ;MAAU;MAAS;AAC1F,UAAK,IAAI,GAAG,IAAI,GAAG,QAAS,KAAI,CAAC,IAAI,eAAe,IAAI,GAAG,KAAK,CAAE,KAAI,KAAK,KAAK;;;AAIpF,WAAQ,OAAO,IAAI;AAEnB,UAAO;;EAYT,SAAS,IAAI,GAAG,GAAG;AACjB,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;;EAW3B,SAAS,IAAI,GAAG;AACd,UAAO,IAAI,KAAK,EAAE,CAAC,KAAK;;EAU1B,SAAS,MAAM,GAAG;AAChB,UAAO,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE;;EAa9C,SAAS,QAAQ;GACf,IAAI,GAAG,GACL,IAAI,IAAI,KAAK,EAAE;AAEjB,cAAW;AAEX,QAAK,IAAI,GAAG,IAAI,UAAU,SAAS;AACjC,QAAI,IAAI,KAAK,UAAU,KAAK;AAC5B,QAAI,CAAC,EAAE,GAAG;AACR,SAAI,EAAE,GAAG;AACP,iBAAW;AACX,aAAO,IAAI,KAAK,SAAM;;AAExB,SAAI;eACK,EAAE,EACX,KAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;;AAI1B,cAAW;AAEX,UAAO,EAAE,MAAM;;EASjB,SAAS,kBAAkB,KAAK;AAC9B,UAAO,eAAe,WAAW,OAAO,IAAI,gBAAgB,OAAO;;EAWrE,SAAS,GAAG,GAAG;AACb,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI;;EAczB,SAAS,IAAI,GAAG,GAAG;AACjB,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;;EAW3B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;;EAW3B,SAAS,MAAM,GAAG;AAChB,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,GAAG;;EAU5B,SAAS,MAAM;AACb,UAAO,SAAS,MAAM,WAAW,GAAG;;EAUtC,SAAS,MAAM;AACb,UAAO,SAAS,MAAM,WAAW,EAAE;;EAYrC,SAAS,IAAI,GAAG,GAAG;AACjB,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;;EAY3B,SAAS,IAAI,GAAG,GAAG;AACjB,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;;EAY3B,SAAS,IAAI,GAAG,GAAG;AACjB,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;;EAY3B,SAAS,OAAO,IAAI;GAClB,IAAI,GAAG,GAAG,GAAG,GACX,IAAI,GACJ,IAAI,IAAI,KAAK,EAAE,EACf,KAAK,EAAE;AAET,OAAI,OAAO,KAAK,EAAG,MAAK,KAAK;OACxB,YAAW,IAAI,GAAG,WAAW;AAElC,OAAI,KAAK,KAAK,KAAK,SAAS;AAE5B,OAAI,CAAC,KAAK,OACR,QAAO,IAAI,GAAI,IAAG,OAAO,KAAK,QAAQ,GAAG,MAAM;YAGtC,OAAO,iBAAiB;AACjC,QAAI,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC;AAE9C,WAAO,IAAI,IAAI;AACb,SAAI,EAAE;AAIN,SAAI,KAAK,MACP,GAAE,KAAK,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC,CAAC;SAKlD,IAAG,OAAO,IAAI;;cAKT,OAAO,aAAa;AAG7B,QAAI,OAAO,YAAY,KAAK,EAAE;AAE9B,WAAO,IAAI,IAAI;AAGb,SAAI,EAAE,MAAM,EAAE,IAAI,MAAM,MAAM,EAAE,IAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,QAAS;AAGtE,SAAI,KAAK,MACP,QAAO,YAAY,EAAE,CAAC,KAAK,GAAG,EAAE;UAC3B;AAIL,SAAG,KAAK,IAAI,IAAI;AAChB,WAAK;;;AAIT,QAAI,IAAI;SAER,OAAM,MAAM,kBAAkB;AAGhC,OAAI,GAAG,EAAE;AACT,SAAM;AAGN,OAAI,KAAK,IAAI;AACX,QAAI,QAAQ,IAAI,WAAW,GAAG;AAC9B,OAAG,MAAM,IAAI,IAAI,KAAK;;AAIxB,UAAO,GAAG,OAAO,GAAG,IAAK,IAAG,KAAK;AAGjC,OAAI,IAAI,GAAG;AACT,QAAI;AACJ,SAAK,CAAC,EAAE;UACH;AACL,QAAI;AAGJ,WAAO,GAAG,OAAO,GAAG,KAAK,SAAU,IAAG,OAAO;AAG7C,SAAK,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,GAAI;AAGzC,QAAI,IAAI,SAAU,MAAK,WAAW;;AAGpC,KAAE,IAAI;AACN,KAAE,IAAI;AAEN,UAAO;;EAYT,SAAS,MAAM,GAAG;AAChB,UAAO,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,KAAK,SAAS;;EAe1D,SAAS,KAAK,GAAG;AACf,OAAI,IAAI,KAAK,EAAE;AACf,UAAO,EAAE,IAAK,EAAE,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,IAAK,EAAE,KAAK;;EAWjD,SAAS,IAAI,GAAG;AACd,UAAO,IAAI,KAAK,EAAE,CAAC,KAAK;;EAW1B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAW3B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAY3B,SAAS,IAAI,GAAG,GAAG;AACjB,UAAO,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;;EAa3B,SAAS,MAAM;GACb,IAAI,IAAI,GACN,OAAO,WACP,IAAI,IAAI,KAAK,KAAK,GAAG;AAEvB,cAAW;AACX,UAAO,EAAE,KAAK,EAAE,IAAI,KAAK,QAAS,KAAI,EAAE,KAAK,KAAK,GAAG;AACrD,cAAW;AAEX,UAAO,SAAS,GAAG,KAAK,WAAW,KAAK,SAAS;;EAWnD,SAAS,IAAI,GAAG;AACd,UAAO,IAAI,KAAK,EAAE,CAAC,KAAK;;EAW1B,SAAS,KAAK,GAAG;AACf,UAAO,IAAI,KAAK,EAAE,CAAC,MAAM;;EAU3B,SAAS,MAAM,GAAG;AAChB,UAAO,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE;;AAK9C,YAAU,MAAM,SAAS;AACzB,UAAQ,UAAU,cAAc;AAChC,UAAQ,aAAa,QAAQ,UAAU;AAGvC,SAAO,IAAI,QAAQ,KAAK;AACxB,OAAK,IAAI,QAAQ,GAAG;AAOpB,MAAI,OAAO,UAAU,cAAc,OAAO,IACxC,QAAO,WAAY;AACjB,UAAO;IACP;WAGO,OAAO,UAAU,eAAe,OAAO,SAAS;AACzD,OAAI,OAAO,UAAU,cAAc,OAAO,OAAO,YAAY,UAAU;AACrE,MAAE,OAAO,OAAO,6BAA6B,IAAI,EAAE;AACnD,MAAE,OAAO,eAAe;;AAG1B,UAAO,UAAU;SAGZ;AACL,OAAI,CAAC,YACH,eAAc,OAAO,QAAQ,eAAe,QAAQ,KAAK,QAAQ,OAAO,OAAO;AAGjF,gBAAa,YAAY;AACzB,WAAQ,aAAa,WAAY;AAC/B,gBAAY,UAAU;AACtB,WAAO;;AAGT,eAAY,UAAU;;YAElB;;;;;CCr1JR,MAAM,EAAE,6BAAA,iBAAA;CACR,MAAM,EACJ,iBACA,6BACA,kBACA,iBACA,iBAEA,eACA,gBACA,gCACA,eACA,eACA,oBAAA,yBAAA;CAIF,SAAS,SAAS,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG;AAC7F,MAAI,OAAO,MAAM,OAAO,EACtB,QAAO,KAAK,IAAI,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,QAAQ,YAAY;EAE1E,MAAM,oBAAI,IAAI,KAAK,EAAE;AACrB,IAAE,eAAe,KAAK;AACtB,IAAE,YAAY,QAAQ,EAAE;AACxB,IAAE,WAAW,IAAI;AACjB,IAAE,YAAY,KAAK;AACnB,IAAE,cAAc,OAAO;AACvB,IAAE,cAAc,QAAQ,YAAY;AACpC,SAAO,EAAE,SAAS;;CAGpB,MAAM,wBAAwB;EAAC;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;AAEtD,SAAQ,8BAA8B;EAEpC,KAAK,OAAO;GACV,MAAM,OAAO,gBAAgB,MAAM;AACnC,OAAI,SAAS,KACX,QAAO;AAET,UAAO,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK,IAAI;;EAGlD,MAAM,OAAO;GACX,MAAM,OAAO,iBAAiB,MAAM;AACpC,OAAI,SAAS,KACX,QAAO;AAET,WAAQ,KAAK,OAAO,QAAQ,MAAM,KAAK,QAAQ;;EAGjD,KAAK,OAAO;GACV,MAAM,OAAO,gBAAgB,MAAM;AACnC,OAAI,SAAS,KACX,QAAO;GAET,MAAM,UAAU,IAAI,KAAK,SAAS,KAAK,KAAK,CAAC;GAE7C,MAAM,qBAAqB,sBAAsB,QAAQ,WAAW;AACpE,UAAO,QAAQ,WAAW,IAAI,KAAK,KAAK,OAAO,KAAK,mBAAmB;;EAGzE,KAAK,OAAO;GACV,MAAM,OAAO,gBAAgB,MAAM;AACnC,OAAI,SAAS,KACX,QAAO;AAET,YAAS,KAAK,OAAO,KAAK,KAAK,UAAU,KAAK,KAAK,UAAU,MAAO,KAAK;;EAG3E,iBAAiB,OAAO;GACtB,MAAM,cAAc,4BAA4B,MAAM;AACtD,OAAI,gBAAgB,KAClB,QAAO;GAET,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,OAAO,MAAM,EAAE,MAAM,QAAQ,QAAQ,kBAAkB;AAEpF,UAAO,SAAS,MAAM,OAAO,KAAK,MAAM,QAAQ,QAAQ,YAAY;;EAGtE,QAAQ;EAER,OAAO;EACR;AAED,SAAQ,4BAA4B;EAClC,KAAK,OAAO;GACV,MAAM,cAAc,QAAQ,4BAA4B,KAAK,MAAM;AACnE,UAAO,gBAAgB,OAAO,OAAO,IAAI,KAAK,YAAY;;EAG5D,MAAM,OAAO;GACX,MAAM,oBAAoB,iBAAiB,MAAM;AACjD,OAAI,sBAAsB,KACxB,QAAO;GAGT,MAAM,uBAAO,IAAI,KAAK,EAAE;AACxB,QAAK,eAAe,kBAAkB,KAAK;AAC3C,QAAK,YAAY,kBAAkB,QAAQ,EAAE;AAC7C,UAAO;;EAET,KAAK,OAAO;GACV,MAAM,cAAc,QAAQ,4BAA4B,KAAK,MAAM;AACnE,UAAO,gBAAgB,OAAO,OAAO,IAAI,KAAK,YAAY;;EAE5D,KAAK,OAAO;GACV,MAAM,cAAc,QAAQ,4BAA4B,KAAK,MAAM;AACnE,UAAO,gBAAgB,OAAO,OAAO,IAAI,KAAK,YAAY;;EAE5D,iBAAiB,OAAO;GACtB,MAAM,cAAc,QAAQ,4BAA4B,kBAAkB,MAAM;AAChF,UAAO,gBAAgB,OAAO,OAAO,IAAI,KAAK,YAAY;;EAE7D;AAED,SAAQ,sBAAsB;EAC5B,KAAK,OAAO;AACV,UAAO,cAAc;IACnB,MAAM,MAAM,gBAAgB;IAC5B,OAAO,MAAM,aAAa,GAAG;IAC7B,KAAK,MAAM,YAAY;IACxB,CAAC;;EAEJ,MAAM,OAAO;AACX,UAAO,eAAe;IACpB,MAAM,MAAM,gBAAgB;IAC5B,OAAO,MAAM,aAAa,GAAG;IAC9B,CAAC;;EAEJ,KAAK,OAAO;AACV,UAAO,cAAc,gBAAgB,MAAM,CAAC;;EAE9C,KAAK,OAAO;AACV,UAAO,cAAc;IACnB,MAAM,MAAM,aAAa;IACzB,QAAQ,MAAM,eAAe;IAC7B,QAAQ,MAAM,eAAe;IAC7B,aAAa,MAAM,oBAAoB;IACxC,CAAC;;EAEJ,iBAAiB,OAAO;AACtB,UAAO,+BAA+B;IACpC,MAAM;KACJ,MAAM,MAAM,gBAAgB;KAC5B,OAAO,MAAM,aAAa,GAAG;KAC7B,KAAK,MAAM,YAAY;KACxB;IACD,MAAM;KACJ,MAAM,MAAM,aAAa;KACzB,QAAQ,MAAM,eAAe;KAC7B,QAAQ,MAAM,eAAe;KAC7B,aAAa,MAAM,oBAAoB;KACxC;IACF,CAAC;;EAEL;AAED,SAAQ,8BAA8B;EAEpC,KAAK,OAAO;AACV,UAAO,QAAQ,oBAAoB,KAAK,IAAI,KAAK,MAAM,CAAC;;EAG1D,MAAM,OAAO;GACX,MAAM,OAAO,OAAO,KAAK,MAAM,QAAQ,GAAG;GAC1C,MAAM,QAAQ,QAAQ;GACtB,MAAM,uBAAO,IAAI,KAAK,EAAE;AACxB,QAAK,eAAe,KAAK;AACzB,QAAK,YAAY,MAAM;AAEvB,UAAO,QAAQ,oBAAoB,MAAM,KAAK;;EAGhD,KAAK,OAAO;AACV,UAAO,QAAQ,oBAAoB,KAAK,IAAI,KAAK,MAAM,CAAC;;EAG1D,KAAK,OAAO;AACV,UAAO,QAAQ,oBAAoB,KAAK,IAAI,KAAK,MAAM,CAAC;;EAG1D,iBAAiB,OAAO;AACtB,UAAO,QAAQ,oBAAoB,kBAAkB,IAAI,KAAK,MAAM,CAAC;;EAGvE,OAAO,OAAO;AACZ,UAAO,MAAM,UAAU;;EAGzB,MAAM,OAAO;AACX,UAAO,MAAM,UAAU;;EAE1B;;;;;CCjMD,MAAM,eAAA,sBAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,UAAA,iBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,WAAA,iBAAA;CACN,MAAM,kCAAA,0CAAA,CACiE;CACvE,MAAM,gBAAA,uBAAA;CACN,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,EAAE,eAAe,iBAAA,4BAAA;CACvB,MAAM,EAAE,uBAAuB,cAAA,uBAAA;CAC/B,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EACJ,YACA,qBACA,oBACA,wBAAA,uBAAA;CAEF,MAAM,EACJ,2BACA,gBACA,0BACA,kBAAA,iBAAA;CAEF,MAAM,EAAE,WAAA,yBAAA;CACR,MAAM,EACJ,6BACA,2BACA,qBACA,gCAAA,gCAAA;CAGF,MAAM,cAAc,OAAO,QAAQ;CAGnC,MAAM,oBAAoB,IAAI,IAAI;EAChC;EAAU;EAAQ;EAAU;EAAO;EAAO;EAAS;EAAY;EAC/D;EAAS;EAAQ;EAAQ;EAAkB;EAAU;EAAS;EAAS;EAAY;EACnF;EAAQ;EAAU;EAAS;EAAS;EACrC,CAAC;CAIF,MAAM,sCAAsC,IAAI,IAAI;EAAC;EAAQ;EAAU;EAAO;EAAO;EAAW,CAAC;CACjG,MAAM,eAAe,IAAI,IAAI;EAAC;EAAQ;EAAS;EAAQ;EAAQ;EAAkB;EAAU;EAAQ,CAAC;CAEpG,MAAM,8BAA8B;EAClC,aAAa,IAAI,IAAI;GAAC;GAAQ;GAAS;GAAQ;GAAO,CAAC;EACvD,eAAe;EAEf,QAAQ,IAAI,IAAI;GACd;GAAQ;GAAU;GAAO;GAAO;GAAS;GAAY;GAAQ;GAAS;GACtE;GAAQ;GAAkB;GAAU;GAAS;GAC9C,CAAC;EACF,gBAAgB;EAChB,cAAc;EACd,oBAAoB;EACpB,cAAc;EACd,mBAAmB;EACnB,UAAU;EACV,QAAQ;EACT;CAED,MAAM,yBAAyB,IAAI,IAAI;EAAC;EAAQ;EAAU;EAAO;EAAO;EAAS;EAAW,CAAC;CAC7F,MAAM,gBACJ,IAAI,IAAI;EAAC,GAAG;EAAwB;EAAQ;EAAS;EAAQ;EAAQ;EAAkB;EAAS,CAAC;CAEnG,MAAM,qCAAqC;EACzC,MAAM,IAAI,IAAI;GAAC;GAAQ;GAAU;GAAO;GAAO;GAAS,GAAG;GAAc;GAAQ,CAAC;EAClF,KAAK;EACL,WAAW;EACX,KAAK;EACL,WAAW;EACX,UAAU,IAAI,IAAI,CAAC,SAAS,OAAO,CAAC;EACpC,SAAS;EACT,UAAU;EACV,UAAU,IAAI,IAAI;GAAC,GAAG;GAAe;GAAY;GAAS;GAAO,CAAC;EAClE,MAAM;EACP;CAED,MAAM,4BAA4B,IAAI,IAAI;EAAC;EAAU;EAAU;EAAS;EAAS;EAAS,CAAC;CAC3F,MAAM,8BAA8B,IAAI,IAAI,CAAC,YAAY,QAAQ,CAAC;CAElE,SAAS,mBAAmB,MAAM;AAChC,MAAI,0BAA0B,IAAI,KAAK,CACrC,QAAO;AAET,MAAI,4BAA4B,IAAI,KAAK,CACvC,QAAO;AAET,MAAI,SAAS,OACX,QAAO;AAET,SAAO;;CAGT,SAAS,qBAAqB,eAAe;AAC3C,MAAI,OAAO,kBAAkB,SAC3B,QAAO;EAET,MAAM,OAAO,eAAe,cAAc;AAC1C,SAAO,kBAAkB,IAAI,KAAK,GAAG,OAAO;;CAG9C,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,kBAAkB,KAAK,gBAAgB;AAC5C,QAAK,sBAAsB;AAC3B,QAAK,SAAS;AACd,QAAK,cAAc;AACnB,QAAK,eAAe;AACpB,QAAK,oBAAoB;AAEzB,QAAK,wBAAwB;AAC7B,QAAK,sDAAsD;AAE3D,QAAK,gBAAgB;AAErB,QAAK,8BAA8B;AAEnC,QAAK,UAAU;AAEf,QAAK,yBAAyB;;EAIhC,IAAI,yBAAyB;AAC3B,UAAO,4BAA4B,KAAK;;EAG1C,IAAI,yBAAyB;AAC3B,UAAO,4BAA4B,KAAK;;EAG1C,IAAI,uBAAuB;AACzB,UAAO,oBAAoB,KAAK;;EAGlC,IAAI,uBAAuB;AACzB,UAAO,0BAA0B,KAAK;;EAGxC,eAAe,GAAG;AAChB,UAAO,IAAI,QAAQ,EAAE,CAAC,MAAM,KAAK,UAAU,CACxC,OAAO,KAAK,kBAAkB,CAC9B,QAAQ;;EAIb,WAAW,GAAG,SAAS;GACrB,MAAM,mBAAmB,KAAK;GAC9B,MAAM,WAAW,KAAK;AAEtB,UAAO,IAAI,QAAQ,EAAE,CAAC,MAAM,SAAS,CAClC,UAAU,kBAAkB,UAAU,QAAQ,WAAW,QAAQ,WAAW,CAC5E,IAAI,SAAS;;EAKlB,YAAY;AACV,UAAO,KAAK;;EAGd,+BAA+B;AAC7B,OAAI,KAAK,SAAS,YAAY;AAC5B,SAAK,UAAU,CAAC,KAAK;AACrB,SAAK,sDAAsD,KAAK;AAChE,SAAK,gBAAgB;cACZ,KAAK,SAAS,SAAS;AAChC,SAAK,wBAAwB,KAAK;AAClC,SAAK,UAAU;;;EAInB,oCAAoC;AAClC,OAAI,KAAK,SAAS,YAAY;AAC5B,SAAK,UAAU,CAAC,KAAK;AACrB,SAAK,gBAAgB,KAAK;cACjB,KAAK,SAAS;QACnB,KAAK,0BAA0B,MAAM;AACvC,UAAK,UAAU,KAAK;AACpB,UAAK,wBAAwB;;;;EAKnC,oBAAoB,OAAO;AACzB,OAAI,CAAC,KAAK,YAAY,KAAK,SAAS,cAAc,KAAK,SAAS,QAC9D;GAGF,MAAM,EAAE,SAAS;AAEjB,OAAI,KAAK,SAAS,cAAe,KAAK,SAAS,WAAW,CAAC,KAAK;QAC1D,KAAK,aAAa;AACpB,iBAAY,SAAS,MAAM,KAAA,GAAW,EAAE,SAAS,MAAM,CAAC;AACxD,iBAAY,UAAU,MAAM,KAAA,GAAW,EAAE,SAAS,MAAM,CAAC;;cAElD,QAAQ,KAAK,SAAS,SAAS;AAKxC,SAAK,sBAAsB;KAAE,GAAG,MAAM;KAAS,GAAG,MAAM;KAAS;AACjE,SAAK,iBAAiB,KAAK;cAClB,QAAQ,KAAK,SAAS,SAC/B,MAAK,iBAAiB,KAAK;YAClB,QAAQ,KAAK,SAAS,QAC/B,MAAK,UAAU;;EAInB,cAAc,MAAM,OAAO,QAAQ;GACjC,MAAM,UAAU,SAAS,eAAe,KAAK;AAC7C,OAAI,CAAC,KAAK,eAAe,SAAS,QAChC,MAAK,SAAS,oBAAoB,MAAM,QAAQ,aAAa;AAE/D,OAAI,CAAC,KAAK,qBAAqB,SAAS,WAAW;AACjD,SAAK,eAAe,QAAQ;AAC5B,QAAI,KAAK,aACP,MAAK,8BAA8B;;AAIvC,OAAI,SAAS,UAAU,SAAS;QAC1B,KAAK,aACP,MAAK,8BAA8B;;AAIvC,OAAI,SAAS,QAAQ;IACnB,MAAM,WAAW,qBAAqB,OAAO;IAC7C,MAAM,UAAU,qBAAqB,MAAM;AAE3C,QAAI,aAAa,SAAS;KACxB,MAAM,gBAAgB,mBAAmB,SAAS;KAClD,MAAM,eAAe,mBAAmB,QAAQ;AAChD,SAAI,kBAAkB,WAAW,KAAK,WAAW,OAC5C,iBAAiB,aAAa,iBAAiB,cAClD,MAAK,eAAe,MAAM,SAAS,KAAK,OAAO;cACtC,kBAAkB,WAAW,iBAAiB,SAAS;AAChE,WAAK,SAAS,KAAK,eAAe,MAAM,QAAQ,IAAI;AACpD,WAAK,cAAc;gBACV,kBAAkB,cAAc,iBAAiB,WAC1D,MAAK,SAAS;AAGhB,UAAK,oBAAoB;AAEzB,UAAK,SAAS,oBAAoB,MAAM,KAAK,OAAO;KAEpD,MAAM,uBAAuB,KAAK,kBAAkB,gBAAgB,SAAS;KAC7E,MAAM,gBAAgB,KAAK,kBAAkB,gBAAgB,QAAQ;AACrE,SAAI,CAAC,wBAAwB,eAAe;AAC1C,WAAK,kBAAkB;AACvB,WAAK,gBAAgB;AACrB,WAAK,sBAAsB;;;;AAKjC,SAAM,cAAc,MAAM,OAAO,OAAO;;EAI1C,qBAAqB;AACnB,OAAI,KAAK,aACP,MAAK,8BAA8B;;EAIvC,aAAa;GACX,MAAM,UAAU,SAAS,eAAe,KAAK;AAC7C,QAAK,SAAS,oBAAoB,MAAM,QAAQ,aAAa;AAC7D,QAAK,cAAc;AACnB,QAAK,eAAe,QAAQ;AAC5B,QAAK,oBAAoB;AACzB,OAAI,KAAK,aACP,MAAK,8BAA8B;;EAIvC,oBAAoB;AAClB,OAAI,KAAK,aACP,MAAK,8BAA8B;;EAIvC,IAAI,2BAA2B;GAC7B,MAAM,UAAU,SAAS,eAAe,KAAK;GAC7C,MAAM,OAAO,KAAK;AAClB,OAAI,CAAC,KACH,QAAO,EAAE;GAGX,MAAM,SAAS,EAAE;GAEjB,MAAM,cAAc,cAAc,aAAa,KAAK;AACpD,QAAK,MAAM,aAAa,aAAa;AACnC,QAAI,UAAU,0BAA0B,KACtC;IAGF,MAAM,mBAAmB,SAAS,eAAe,UAAU;AAC3D,QAAI,CAAC,iBAAiB,QAAQ,iBAAiB,SAAS,QAAQ,KAC9D;AAGF,QAAI,cAAc,KAChB,QAAO,KAAK,UAAU;;AAG1B,UAAO;;EAGT,+BAA+B;AAC7B,QAAK,MAAM,qBAAqB,KAAK,yBACnC,mBAAkB,eAAe;;EAIrC,IAAI,wBAAwB;GAC1B,MAAM,UAAU,SAAS,eAAe,KAAK;AAC7C,OAAI,KAAK,SAAS,WAAW,CAAC,QAAQ,KACpC,QAAO;GAGT,IAAI,IAAI,cAAc,OAAO,KAAK;AAClC,UAAO,GAAG;AAGR,QAAI,CAAC,cAAc,OAAO,EAAE,IAAI,EAAE,eAAe,OAC/C,QAAO;AAET,QAAI,cAAc,OAAO,EAAE;;AAE7B,UAAO;;EAGT,kBAAkB,MAAM;AACtB,OAAI,KAAK,MACP,QAAO;AAET,UAAO,KAAK,yBAAyB,MAAK,sBAAqB,kBAAkB,MAAM;;EAGzF,IAAI,WAAW;AACb,UAAO,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,wBAAwB,WAAW;;EAGvE,IAAI,SAAS;AACX,UAAO,sBAAsB,KAAK;;EAGpC,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,UAAU;AACZ,UAAO,KAAK;;EAGd,IAAI,QAAQ,SAAS;AACnB,QAAK,eAAe,QAAQ,QAAQ;AACpC,QAAK,oBAAoB;AACzB,OAAI,KAAK,aACP,MAAK,8BAA8B;;EAIvC,IAAI,QAAQ;AACV,WAAQ,mBAAmB,KAAK,KAAK,EAArC;IAEE,KAAK,QACH,QAAO,KAAK,WAAW;IAEzB,KAAK,WAAW;KACd,MAAM,OAAO,KAAK,eAAe,MAAM,QAAQ;AAC/C,YAAO,SAAS,OAAO,OAAO;;IAGhC,KAAK,cAAc;KACjB,MAAM,OAAO,KAAK,eAAe,MAAM,QAAQ;AAC/C,YAAO,SAAS,OAAO,OAAO;;IAGhC,KAAK,WACH,QAAO,KAAK,MAAM,SAAS,mBAAmB,KAAK,MAAM,GAAG,OAAO;IACrE,QACE,OAAM,IAAI,MAAM,qDAAqD;;;EAI3E,IAAI,MAAM,KAAK;AACb,WAAQ,mBAAmB,KAAK,KAAK,EAArC;IAEE,KAAK,SAAS;KACZ,MAAM,WAAW,KAAK;AACtB,UAAK,SAAS,oBAAoB,MAAM,IAAI;AAC5C,UAAK,cAAc;AAEnB,SAAI,aAAa,KAAK,QAAQ;AAC5B,WAAK,kBAAkB,KAAK,gBAAgB,KAAK,iBAAiB;AAClE,WAAK,sBAAsB;;AAE7B;;IAKF,KAAK;IACL,KAAK;AACH,UAAK,eAAe,MAAM,SAAS,IAAI;AACvC;IAGF,KAAK;AACH,SAAI,QAAQ,GACV,MAAK,MAAM,SAAS;SAEpB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,sGACA,oBACD,CAAC;AAEJ;IAEF,QACE,OAAM,IAAI,MAAM,qDAAqD;;;EAK3E,IAAI,cAAc;AAChB,OAAI,CAAC,KAAK,kBAAkB,cAAc,CACxC,QAAO;GAGT,MAAM,SAAS,KAAK,eAAe;GACnC,MAAM,iBAAiB,KAAK,qBAAqB,KAAK,OAAO;AAE7D,OAAI,0BAA0B,KAC5B,QAAO,IAAI,OAAO,KAAK,eAAe,SAAS,CAAC;AAGlD,UAAO;;EAGT,IAAI,YAAY,GAAG;AACjB,OAAI,CAAC,KAAK,kBAAkB,cAAc,CACxC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,oHAEA,oBACD,CAAC;AAGJ,OAAI,MAAM,QAAQ,CAAC,OAAO,EAAE,CAC1B,OAAM,IAAI,UAAU,oGACJ;AAGlB,OAAI,MAAM,QAAQ,MAAM,EAAE,EAAE;AAC1B,SAAK,SAAS;AACd;;AAGF,QAAK,SAAS,KAAK,qBAAqB,EAAE;;EAI5C,IAAI,gBAAgB;AAClB,OAAI,CAAC,KAAK,kBAAkB,gBAAgB,CAC1C,QAAO;GAGT,MAAM,cAAc,KAAK,uBAAuB,KAAK,OAAO;AAC5D,UAAO,gBAAgB,OAAO,cAAc;;EAG9C,IAAI,cAAc,GAAG;AACnB,OAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAC3B,OAAM,IAAI,UAAU,yCAAyC;AAG/D,OAAI,CAAC,KAAK,kBAAkB,gBAAgB,CAC1C,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,wHAEA,oBACD,CAAC;AAGJ,OAAI,MAAM,EAAE,CACV,MAAK,SAAS;OAEd,MAAK,SAAS,KAAK,uBAAuB,EAAE;;EAKhD,YAAY,GAAG,MAAM;GACnB,MAAM,aAAa,OAAO,WAAW;AACrC,OAAI,CAAC,KAAK,kBAAkB,WAAW,CACrC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,qBAAqB,WAAW,qFAEhC,oBACD,CAAC;GAGJ,MAAM,mBAAmB,KAAK;AAC9B,OAAI,qBAAqB,KACvB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,qBAAqB,WAAW,kFAEhC,oBACD,CAAC;GAGJ,MAAM,MAAM,KAAK;GACjB,MAAM,MAAM,KAAK;AAEjB,OAAI,QAAQ,QAAQ,QAAQ,MAAM;AAChC,QAAI,MAAM,IACR;IAGF,MAAM,qBAAqB,KAAK,WAAW,QAAQ,IAAI,KAAK,iBAAiB,EAAkB,MAAM;AACrG,QAAI,mBAAmB,GAAG,IAAI,IAAI,mBAAmB,GAAG,IAAI,CAC1D;;GAIJ,IAAI,QAAQ;AACZ,OAAI;AACF,YAAQ,KAAK;AACb,QAAI,MAAM,MAAM,CACd,SAAQ;WAEJ;AAGR,WAAQ,IAAI,QAAQ,MAAM;GAE1B,MAAM,sBAAsB;AAE5B,OAAI,CAAC,KAAK,eAAe,MAAM,CAC7B,SAAQ,KAAK,WAAW,OAAuB,KAAK;QAC/C;IACL,IAAI,QAAQ,QAAQ,IAAI,GAAG,iBAAiB;AAC5C,QAAI,CAAC,KACH,SAAQ,MAAM,KAAK;AAErB,YAAQ,MAAM,IAAI,MAAM;;AAG1B,OAAI,QAAQ,QAAQ,MAAM,GAAG,IAAI,CAC/B,SAAQ,KAAK,WAAW,KAAqB,KAAK;AAGpD,OAAI,QAAQ,QAAQ,MAAM,GAAG,IAAI,CAC/B,SAAQ,KAAK,WAAW,KAAqB,MAAM;AAGrD,OAAI,OAAO,MAAM,GAAG,oBAAoB,GAAG,MAAM,GAAG,oBAAoB,CACtE;AAGF,QAAK,SAAS,KAAK,uBAAuB,MAAM,UAAU,CAAC;;EAG7D,SAAS,IAAI,GAAG;AACd,UAAO,KAAK,YAAY,GAAG,MAAM;;EAGnC,OAAO,IAAI,GAAG;AACZ,UAAO,KAAK,YAAY,GAAG,KAAK;;EAGlC,IAAI,QAAQ;AACV,OAAI,KAAK,SAAS,OAChB,MAAK,iBAAiB,SAAS,WAAW,KAAK,cAAc;OAE7D,MAAK,eAAe;AAEtB,UAAO,KAAK;;EAGd,IAAI,MAAM,OAAO;AACf,OAAI,KAAK,SAAS,UAAU,UAAU,KACpC,MAAK,eAAe;;EAIxB,IAAI,OAAO;AAET,UAAO,qBADe,KAAK,eAAe,MAAM,OAAO,CACb;;EAG5C,IAAI,KAAK,MAAM;AACb,QAAK,eAAe,MAAM,QAAQ,KAAK;;EAGzC,uBAAuB;AACrB,oBAAiB,YAAY,UAAU,MAAM,KAAA,GAAW;IAAE,SAAS;IAAM,YAAY;IAAO,CAAC,EAAE,EAAE;;EAGnG,kBAAkB;AAChB,UAAO,OAAO,KAAK,UAAU,WAAW,KAAK,MAAM,SAAS;;EAG9D,SAAS;AACP,OAAI,CAAC,KAAK,kBAAkB,SAAS,CACnC;AAGF,QAAK,kBAAkB;AACvB,QAAK,gBAAgB,KAAK,iBAAiB;AAC3C,QAAK,sBAAsB;AAC3B,QAAK,sBAAsB;;EAG7B,IAAI,iBAAiB;AACnB,OAAI,CAAC,KAAK,kBAAkB,iBAAiB,CAC3C,QAAO;AAGT,UAAO,KAAK;;EAGd,IAAI,eAAe,OAAO;AACxB,OAAI,CAAC,KAAK,kBAAkB,iBAAiB,CAC3C,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,QAAK,kBAAkB,OAAO,KAAK,IAAI,OAAO,KAAK,cAAc,EAAE,KAAK,oBAAoB;;EAG9F,IAAI,eAAe;AACjB,OAAI,CAAC,KAAK,kBAAkB,eAAe,CACzC,QAAO;AAGT,UAAO,KAAK;;EAGd,IAAI,aAAa,KAAK;AACpB,OAAI,CAAC,KAAK,kBAAkB,eAAe,CACzC,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,QAAK,kBAAkB,KAAK,iBAAiB,KAAK,KAAK,oBAAoB;;EAG7E,IAAI,qBAAqB;AACvB,OAAI,CAAC,KAAK,kBAAkB,qBAAqB,CAC/C,QAAO;AAGT,UAAO,KAAK;;EAGd,IAAI,mBAAmB,KAAK;AAC1B,OAAI,CAAC,KAAK,kBAAkB,qBAAqB,CAC/C,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,QAAK,kBAAkB,KAAK,iBAAiB,KAAK,eAAe,IAAI;;EAGvE,kBAAkB,OAAO,KAAK,KAAK;AACjC,OAAI,CAAC,KAAK,kBAAkB,oBAAoB,CAC9C,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,QAAK,gBAAgB,KAAK,IAAI,KAAK,KAAK,iBAAiB,CAAC;AAC1D,QAAK,kBAAkB,KAAK,IAAI,OAAO,KAAK,cAAc;AAC1D,QAAK,sBAAsB,QAAQ,aAAa,QAAQ,aAAa,MAAM;AAC3E,QAAK,sBAAsB;;EAG7B,aAAa,MAAM,OAAO,KAAK,gBAAgB,YAAY;AACzD,OAAI,CAAC,KAAK,kBAAkB,eAAe,CACzC,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,OAAI,UAAU,SAAS,GAAG;AACxB,YAAQ,KAAK;AACb,UAAM,KAAK;cACF,QAAQ,IACjB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,0CAA0C,iBAAiB,CAAC;AAG7G,WAAQ,KAAK,IAAI,OAAO,KAAK,iBAAiB,CAAC;AAC/C,SAAM,KAAK,IAAI,KAAK,KAAK,iBAAiB,CAAC;GAE3C,MAAM,MAAM,KAAK;GACjB,IAAI,WAAW,KAAK;GACpB,IAAI,SAAS,KAAK;AAElB,QAAK,QAAQ,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,IAAI,MAAM,IAAI;GAExD,MAAM,SAAS,QAAQ,KAAK;AAE5B,OAAI,kBAAkB,SACpB,MAAK,kBAAkB,OAAO,OAAO;YAC5B,kBAAkB,QAC3B,MAAK,kBAAkB,OAAO,MAAM;YAC3B,kBAAkB,MAC3B,MAAK,kBAAkB,QAAQ,OAAO;QACjC;IACL,MAAM,QAAQ,KAAK,UAAU,MAAM;AAEnC,QAAI,WAAW,IACb,aAAY;aACH,WAAW,MACpB,YAAW;AAGb,QAAI,SAAS,IACX,WAAU;aACD,SAAS,MAClB,UAAS;AAGX,SAAK,kBAAkB,UAAU,OAAO;;;EAK5C,IAAI,OAAO;GACT,MAAM,KAAK,KAAK,uBAAuB,OAAO;AAC9C,OAAI,CAAC,GACH,QAAO;GAGT,MAAM,KAAK,KAAK,YAAY,EAAE,CAAC,CAAC,eAAe,GAAG;AAElD,OAAI,MAAM,GAAG,cAAc,WACzB,QAAO;AAGT,UAAO;;EAIT,IAAI,WAAW;GACb,IAAI,MAAM,KAAK;GACf,MAAM,OAAO,KAAK,uBAAuB,MAAM;AAC/C,OAAI,SAAS,QAAQ,KAAK,2BAA2B,KAAA,GAAW;IAC9D,MAAM,SAAS,KAAK,uBAAuB,KAAK;AAChD,QAAI,WAAW,KACb,OAAM;;AAGV,UAAO;;EAGT,IAAI,WAAW;GACb,IAAI,MAAM,KAAK;GACf,MAAM,OAAO,KAAK,uBAAuB,MAAM;AAC/C,OAAI,SAAS,QAAQ,KAAK,2BAA2B,KAAA,GAAW;IAC9D,MAAM,SAAS,KAAK,uBAAuB,KAAK;AAChD,QAAI,WAAW,KACb,OAAM;;AAGV,UAAO;;EAGT,IAAI,kBAAkB;AACpB,OAAI,KAAK,SAAS,QAChB,QAAO;AAET,UAAO;;EAGT,IAAI,kBAAkB;AACpB,OAAI,KAAK,SAAS,QAChB,QAAO;AAET,UAAO;;EAIT,IAAI,oBAAoB;AACtB,OAAI,CAAC,KAAK,yBAAyB,OAAO,CACxC,QAAO;GAET,MAAM,OAAO,KAAK,eAAe,MAAM,OAAO;AAC9C,OAAI,SAAS,KACX,QAAO,KAAK,eAAe,KAAK;AAElC,OAAI,0BAA0B,MAAM,MAAM,CACxC,QAAO;GAET,MAAM,aAAa,yBAAyB,KAAK;AACjD,OAAI,eAAe,QAAQ,cAAc,EACvC,QAAO,KAAK,eAAe,KAAK;AAElC,UAAO,aAAa,KAAK;;EAI3B,IAAI,mBAAmB;GACrB,MAAM,oBAAoB,OAAU,KAAK;AACzC,WAAQ,KAAK,MAAb;IACE,KAAK,OACH,QAAO,IAAI;IACb,KAAK,OACH,QAAO;IACT,KAAK;IACL,KAAK;IACL,KAAK,OACH,QAAO;;AAEX,UAAO;;EAIT,IAAI,eAAe;AACjB,OAAI,KAAK,SAAS,oBAAoB,KAAK,SAAS,cAAc,KAAK,SAAS,OAC9E,QAAO;AAET,UAAO;;EAIT,IAAI,YAAY;AACd,OAAI,KAAK,wBAAwB,MAAM,EAAE;IACvC,MAAM,MAAM,KAAK,uBAAuB,KAAK,eAAe,MAAM,MAAM,CAAC;AACzE,QAAI,QAAQ,KACV,QAAO;;AAGX,OAAI,KAAK,eAAe,MAAM,QAAQ,EAAE;IACtC,MAAM,QAAQ,KAAK,uBAAuB,KAAK,eAAe,MAAM,QAAQ,CAAC;AAC7E,QAAI,UAAU,KACZ,QAAO;;AAGX,OAAI,KAAK,qBAAqB,KAC5B,QAAO,KAAK;AAEd,UAAO;;EAIT,IAAI,mBAAmB;AACrB,OAAI,KAAK,SAAS,OAEhB,QAAO;AAET,UAAO;;EAKT,yBAAyB,WAAW;AAClC,UAAO,mCAAmC,WAAW,IAAI,KAAK,KAAK;;EAGrE,wBAAwB,WAAW;AACjC,UAAO,KAAK,yBAAyB,UAAU,IAAI,KAAK,eAAe,MAAM,UAAU;;EAGzF,uBAAuB,WAAW;AAChC,OAAI,KAAK,yBAAyB,UAAU,CAC1C,QAAO,KAAK,eAAe,MAAM,UAAU;AAE7C,UAAO;;EAGT,kBAAkB,QAAQ,OAAO,KAAK,MAAM;AAC1C,UAAO,4BAA4B,QAAQ,IAAI,KAAK;;EAGtD,gDAAgD;GAI9C,MAAM,uBAAuB,IAAI,IAAI;IAAC;IAAU;IAAS;IAAS,CAAC;GAEnE,MAAM,WAAW,KAAK,wBAAwB,WAAW;AAGzD,UAAO,qBAAqB,IAAI,KAAK,KAAK,IAAI;;EAIhD,IAAI,YAAY;AACd,UAAO,KAAK,wBAAwB,WAAW;;EAIjD,IAAI,sBAAsB;AACxB,UAAO,KAAK,SAAS;;EAIvB,IAAI,qBAAqB;AACvB,UAAO,KAAK,uBAAuB,KAAK,WAAW,KAAK;;EAG1D,IAAI,WAAW;AACb,OAAI,CAAC,KAAK,WAAW;IAMnB,MAAM,4CAA4C;KAChD,MAAM,cAAc,KAAK,uBAAuB,KAAK,OAAO;AAC5D,YAAO,gBAAgB,QAAQ,cAAc,KAAK,YAAY,cAAc,KAAK;;AA8JnF,SAAK,YAAY,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE;KAChE,SAAS;KACT,OA7JY;MAEZ,oBAAoB;AAOlB,WAAI,KAAK,aAAa,mBAAmB,KAAK,KAAK,KAAK,WAAW,KAAK,YAAY,KAAK,WAAW,GAClG,QAAO;AAGT,eAAQ,KAAK,MAAb;QAIE,KAAK;AACH,aAAI,KAAK,aAAa,CAAC,KAAK,aAC1B,QAAO;AAET;QAMF,KAAK;AACH,aAAI,KAAK,kBAAkB,YAAY,IAAI,CAAC,KAAK,kBAAkB,UAAU,CAC3E,QAAO;AAET;QAKF,KAAK;AACH,aAAI,KAAK,aAAa,KAAK,MAAM,WAAW,EAC1C,QAAO;AAET;;AAGJ,cAAO;;MAOT,eAAe;MAIf,gBAAgB;MAGhB,qBAAqB;AAEnB,WAAI,KAAK,mBACP,QAAO,qCAAqC;AAM9C,WAAI,KAAK,aAAa,MAAM;QAC1B,MAAM,cAAc,KAAK,uBAAuB,KAAK,OAAO;AAC5D,YAAI,gBAAgB,QAAQ,cAAc,KAAK,SAC7C,QAAO;;AAGX,cAAO;;MAIT,sBAAsB;AAEpB,WAAI,KAAK,mBACP,QAAO,qCAAqC;AAM9C,WAAI,KAAK,aAAa,MAAM;QAC1B,MAAM,cAAc,KAAK,uBAAuB,KAAK,OAAO;AAC5D,YAAI,gBAAgB,QAAQ,cAAc,KAAK,SAC7C,QAAO;;AAGX,cAAO;;MAIT,uBAAuB;AAErB,WAAI,KAAK,WAAW,MAAM,CAAC,KAAK,wBAAwB,UAAU,CAChE,QAAO;OAET,IAAI;AACJ,WAAI;QACF,MAAM,UAAU,KAAK,eAAe,MAAM,UAAU;AAIpD,YAAI,OAAO,SAAS,IAAI;AACxB,iBAAS,IAAI,OAAO,SAAS,UAAU,MAAM,IAAI;eAC3C;AACN,eAAO;;AAET,WAAI,KAAK,wBAAwB,WAAW,CAC1C,QAAO,CAAC,cAAc,KAAK,OAAO,CAAC,OAAM,UAAS,OAAO,KAAK,MAAM,CAAC;AAEvE,cAAO,CAAC,OAAO,KAAK,KAAK,OAAO;;MAKlC,oBAAoB;AAElB,WADyB,KAAK,sBACL,KACvB,QAAO;OAET,MAAM,SAAS,KAAK,uBAAuB,KAAK,OAAO;AACvD,cAAO,WAAW,QAAQ,CAAC,KAAK,eAAe,OAAO;;MAIxD,oBAAoB;AAClB,eAAQ,KAAK,MAAb;QAIE,KAAK;AACH,aAAI,KAAK,WAAW,MAAM,CAAC,mBAAmB,KAAK,OAAO,CACxD,QAAO;AAET;QAOF,KAAK;AACH,aAAI,KAAK,WAAW,MAAM,CAAC,oBAAoB,KAAK,WAAW,EAAE,KAAK,eAAe,MAAM,WAAW,CAAC,CACrG,QAAO;AAET;;AAEJ,cAAO;;MAEV;KAKA,CAAC;;AAEJ,UAAO,KAAK;;EAGd,CAAC,cAAc,MAAM,MAAM;AACzB,QAAK,SAAS,KAAK;AACnB,QAAK,eAAe,KAAK;AACzB,QAAK,cAAc,KAAK;AACxB,QAAK,oBAAoB,KAAK;;;AAIlC,OAAM,qBAAqB,WAAW,gCAAgC,UAAU;AAEhF,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCtkCD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,gBAAA,uBAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,WAAA,kBAAA;CACN,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,sBAAA,sBAAA,CAAmD;CACzD,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,WAAW;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,SAAS,GAAG,KAAK;;GAG9C,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,kBAAkB,OAAO;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8FAA8F,UAAU,OAAO,WAChH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY,QAAQ;;GAGrC,aAAa,aAAa;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;AACf,YAAQ,UAAU,QAAlB;KACE,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;AAEnB;KACF,KAAK,EACH,OAAM,IAAI,aAAa,UACrB,gEAAgE,UAAU,OAAO,qBAClF;KAEH,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;AAEnB;KACF;MACE;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,WAAW,KAAA,EACb,UAAS,cAAc,QAAQ,cAAc,QAAQ,EACnD,SAAS,uEACV,CAAC;WAEF,UAAS;AAEX,YAAK,KAAK,OAAO;;;AAGvB,WAAO,QAAQ,YAAY,aAAa,GAAG,KAAK;;GAGlD,kBAAkB,OAAO,KAAK;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+FAA+F,UAAU,OAAO,WACjH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,eAAe;AAChF,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,gBAAgB,EAAE;cAC7D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,YAAY,KAAK;cACnE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,aAAa,GAAG;SAEnE,SAAQ,YAAY,kCAAkC,YAAY;cAE5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;GAG9D,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,SAAS,QAAQ,cAAc,GAAG,EACpC,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,WAAW;;GAGjC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,iBAAiB,KAAK;cACxE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,kBAAkB,GAAG;SAExE,SAAQ,YAAY,kCAAkC,iBAAiB;cAEjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,aAAa;AAC9E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,cAAc,EAAE;cAC3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC7E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,aAAa,EAAE;cAC1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC3E,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,YAAY,KAAK,MAAM,KAAK,MAChD,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,IAAI,EACN,OAAM,oBAAoB,cAAc,CACtC,sBAAsB,EAAE,6CACxB,iBACD,CAAC;AAGJ,aAAQ,YAAY,+BAA+B,aAAa,OAAO,EAAE,CAAC;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC3E,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,YAAY,KAAK,MAAM,KAAK,MAChD,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,IAAI,EACN,OAAM,oBAAoB,cAAc,CACtC,sBAAsB,EAAE,6CACxB,iBACD,CAAC;AAGJ,aAAQ,YAAY,+BAA+B,aAAa,OAAO,EAAE,CAAC;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACtE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,MAAM,EACR,OAAM,oBAAoB,cAAc,CACtC,aAAa,EAAE,wCACf,iBACD,CAAC;KAGJ,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,QAAQ,OAAO,SAAS,CAAC;cACpE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,YAAY,uBAAuB,GAAG;KACxC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,KAAK,EAAE,YAAY,MAAM;GACzB,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,gBAAgB,EAAE,YAAY,MAAM;GACpC,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,gBAAgB,EAAE,YAAY,MAAM;GACpC,YAAY,EAAE,YAAY,MAAM;GAChC,eAAe,EAAE,YAAY,MAAM;GACnC,WAAW,EAAE,YAAY,MAAM;GAC/B,MAAM,EAAE,YAAY,MAAM;GAC1B,KAAK,EAAE,YAAY,MAAM;GACzB,WAAW,EAAE,YAAY,MAAM;GAC/B,KAAK,EAAE,YAAY,MAAM;GACzB,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,cAAc,EAAE,YAAY,MAAM;GAClC,OAAO,EAAE,YAAY,MAAM;GAC3B,aAAa,EAAE,YAAY,MAAM;GACjC,eAAe,EAAE,YAAY,MAAM;GACnC,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,gBAAgB,EAAE,YAAY,MAAM;GACpC,cAAc,EAAE,YAAY,MAAM;GAClC,oBAAoB,EAAE,YAAY,MAAM;GACxC,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCx4DN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,aAAA,oBAAA;CACN,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,YAAA,mBAAA;CACN,MAAM,EAAE,aAAa,YAAY,yBAAA,uBAAA;CACjC,MAAM,EAAE,wBAAA,gBAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CAER,SAAS,0BAA0B,MAAM;AACvC,cAAY,SAAS,MAAM,YAAY;GACrC,SAAS;GACT,YAAY;GACZ,MAAM,KAAK,gBAAgB,KAAK,cAAc,cAAc;GAC5D,SAAS;GACT,SAAS;GACT,SAAS;GACT,SAAS;GACT,QAAQ;GACR,QAAQ;GACR,eAAe;GAChB,CAAC;;CAGJ,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,yBAAyB;;EAGhC,IAAI,UAAU;AACZ,OAAI,KAAK,eAAe,MAAM,MAAM,EAAE;IACpC,MAAM,WAAW,KAAK,eAAe,MAAM,MAAM;AACjD,QAAI,aAAa,GACf,QAAO;IAET,MAAM,OAAO,KAAK,YAAY,EAAE,CAAC;AACjC,SAAK,MAAM,cAAc,cAAc,aAAa,KAAK,CACvD,KAAI,WAAW,aAAa,UAAU,gBACpC,WAAW,eAAe,MAAM,KAAK,KAAK,SAC1C,QAAO,YAAY,WAAW,GAAG,aAAa;AAGlD,WAAO;;AAET,QAAK,MAAM,cAAc,cAAc,aAAa,KAAK,CACvD,KAAI,YAAY,WAAW,CACzB,QAAO;AAGX,UAAO;;EAGT,IAAI,OAAO;GACT,MAAM,OAAO,KAAK;AAClB,OAAI,KACF,QAAO,KAAK;AAEd,UAAO;;EAGT,oBAAoB,OAAO;AAGzB,OAAI,MAAM,UAAU,MAAM,WAAW,QAAQ,oBAAoB,MAAM,MAAM,OAAO,CAClF,MAAK,MAAM,YAAY,cAAc,kBAAkB,MAAM,OAAO,EAAE;AACpE,QAAI,aAAa,KACf;AAEF,QAAI,qBAAqB,SAAS,CAChC;;GAKN,MAAM,OAAO,KAAK;AAClB,OAAI,QAAQ,CAAC,WAAW,KAAK,EAAE;AAI7B,QAAI,MAAM,UAAU,oBAAoB,MAAM,MAAM,OAAO,CACzD;AAGF,8BAA0B,KAAK;;;;AAKrC,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CC3FD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;;AAGlE,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCpLN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,cAAA,uBAAA;CACR,MAAM,EAAE,YAAA,oBAAA;CAER,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,IAAI,OAAO;GACT,MAAM,SAAS,KAAK;AACpB,OAAI,UAAU,OAAO,eAAe,cAAc,OAAO,iBAAiB,QACxE,QAAO,UAAU,OAAO;AAE1B,UAAO;;;AAIX,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCfD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CCtKN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,qBAAN,cAAiC,gBAAgB;EAC/C,IAAI,QAAQ;AACV,UAAO,KAAK,qBAAqB,OAAO;;;AAI5C,QAAO,UAAU,EACf,gBAAgB,oBACjB;;;;;CCVD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB,aAAa,YAAY;GACpD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,cAAc,MAAM,eAAe;AAC9C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;MAC5D;;;AAGN,SAAO,iBAAiB,eAAe,WAAW;GAChD,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAkB,cAAc;IAAM;GACtE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6BAAA;;;;;CCxKN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,yBAAN,cAAqC,gBAAgB;AAErD,QAAO,UAAU,EACf,gBAAgB,wBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,uCAAuC;;CAGrF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,sBAAsB;AAGjE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,2BAA2B,aAAa,YAAY;GACxD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,WAAW;AAC5E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC7E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,aAAa,EAAE;cAC1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AACxE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,UAAU,OAAO,SAAS,CAAC;cACtE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,eAAe;AAC9E,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,gBAAgB,OAAO,SAAS,CAAC;cAC5E;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC7E,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,eAAe,OAAO,SAAS,CAAC;cAC3E;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,YAAY,KAAK;cACnE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,aAAa,GAAG;SAEnE,SAAQ,YAAY,kCAAkC,YAAY;cAE5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AACxE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,UAAU,OAAO,SAAS,CAAC;cACtE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,mBAAmB,WAAW;GACpD,UAAU,EAAE,YAAY,MAAM;GAC9B,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;GAC/B,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;GACjC,WAAW,EAAE,YAAY,MAAM;GAC/B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAsB,cAAc;IAAM;GAC1E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,iCAAA;;;;;CC3iBN,MAAM,oBAAoB,IAAI,IAAI;EAAC;EAAa;EAAY;EAAgB;EAAY;EAAW,CAAC;AACpG,SAAQ,oBAAoB;AAE5B,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAClF,MAAM,SAAS,GAAG;AAClB,MAAI,CAAC,kBAAkB,IAAI,OAAO,CAChC,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,IAAI,OAAO,sDAAsD;AAE/G,SAAO;;;;;;CCTT,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,yBAAA,yBAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CAER,SAAS,oBAAoB;AAC3B,SAAO;GACL,QAAQ;GACR,QAAQ;AACN,WAAO;;GAET,MAAM;AACJ,WAAO;;GAEV;;CAGH,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,SAAS;AACd,QAAK,UAAU;AACf,QAAK,aAAa;AAClB,QAAK,eAAe;AACpB,QAAK,cAAc;AACnB,QAAK,aAAa;AAClB,QAAK,WAAW,mBAAmB;AACnC,QAAK,UAAU;AACf,QAAK,WAAW;AAChB,QAAK,SAAS;AACd,QAAK,SAAS,mBAAmB;AACjC,QAAK,WAAW,mBAAmB;AACnC,QAAK,QAAQ;AACb,QAAK,cAAc,EAAE;AACrB,QAAK,cAAc,EAAE;AACrB,QAAK,aAAa,EAAE;;EAGtB,IAAI,sBAAsB;AACxB,OAAI,KAAK,yBAAyB,KAAA,EAChC,QAAO;AAET,UAAO,KAAK;;EAGd,IAAI,oBAAoB,GAAG;AACzB,OAAI,MAAM,EACR,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,mCAAmC,oBAAoB,CAAC;AAEzG,OAAI,KAAK,yBAAyB,GAAG;AACnC,SAAK,uBAAuB;AAC5B,SAAK,qBAAqB;;;EAI9B,IAAI,eAAe;AACjB,OAAI,KAAK,kBAAkB,KAAA,EACzB,QAAO;AAET,UAAO,KAAK;;EAGd,IAAI,aAAa,GAAG;AAClB,OAAI,MAAM,KAAK,eAAe;AAC5B,SAAK,gBAAgB;AACrB,SAAK,qBAAqB;;;EAI9B,IAAI,QAAQ;AACV,UAAO,KAAK;;EAGd,IAAI,MAAM,GAAG;AACX,OAAI,MAAM,KAAK,QAAQ;AACrB,SAAK,SAAS;AACd,SAAK,uBAAuB;;;EAIhC,IAAI,eAAe;AACjB,UAAO,KAAK,eAAe,MAAM,QAAQ,KAAK;;EAGhD,IAAI,aAAa,GAAG;AAClB,OAAI,EACF,MAAK,eAAe,MAAM,SAAS,EAAE;OAErC,MAAK,kBAAkB,MAAM,QAAQ;;EAIzC,IAAI,SAAS;AACX,UAAO,KAAK;;EAGd,IAAI,OAAO,GAAG;AACZ,OAAI,IAAI,KAAK,IAAI,EACf,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,0CAA0C,iBAAiB,CAAC;AAE7G,OAAI,KAAK,YAAY,GAAG;AACtB,SAAK,UAAU;AACf,SAAK,uBAAuB;;;EAMhC,OAAO;AACL,wBAAqB,KAAK,eAAe,cAAc,oBAAoB,OAAO;;EAEpF,cAAc;AACZ,UAAO;;EAET,OAAO;AACL,wBAAqB,KAAK,eAAe,cAAc,oBAAoB,OAAO;;EAEpF,QAAQ;AACN,wBAAqB,KAAK,eAAe,cAAc,oBAAoB,QAAQ;;EAErF,eAAe;AACb,wBAAqB,KAAK,eAAe,cAAc,oBAAoB,eAAe;;EAG5F,sBAAsB;AACpB,eAAY,cAAc,KAAK;;EAGjC,wBAAwB;AACtB,eAAY,gBAAgB,KAAK;;;AAIrC,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCvID,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,gBAAA,uBAAA;CACN,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,OAAO;IACL,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY,MAAM;;GAGnC,YAAY,MAAM;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wFAAwF,UAAU,OAAO,WAC1G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY,GAAG,KAAK,CAAC;;GAG1E,OAAO;AACL,QAAI;KACF,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,YAAO,MAAM,kBAAkB,QAAQ,YAAY,MAAM,CAAC;aACnD,GAAG;AACV,YAAO,aAAa,QAAQ,OAAO,EAAE;;;GAIzC,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY,OAAO;;GAGpC,aAAa,MAAM;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,cAAc,QAAQ,cAAc,QAAQ,EACnD,SAAS,uEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,GAAG,KAAK,CAAC;;GAG3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,cAAc;cAChE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,MAAM,KACR,SAAQ,YAAY,kCAAkC,cAAc;SAEpE,SAAQ,YAAY,+BAA+B,eAAe,EAAE;cAE9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,sBAAsB;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,oBAAoB,GAAG;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,yBAAyB;;GAG/C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,OAAO,KAAK;cAC9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,QAAQ,GAAG;SAE9D,SAAQ,YAAY,kCAAkC,OAAO;cAEvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,YAAY;;GAGlC,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,WAAW;;GAGjC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,QAAQ,KAAK;cAC/D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,SAAS,GAAG;SAE/D,SAAQ,YAAY,kCAAkC,QAAQ;cAExD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,cAAc,MAAM,qBAAqB;AACpD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;MAClE;;GAGJ,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,cAAc,MAAM,qBAAqB;AACpD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;MAClE;;GAGJ,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,cAAc,MAAM,oBAAoB;AACnD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;MACjE;;;AAGN,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,MAAM,EAAE,YAAY,MAAM;GAC1B,aAAa,EAAE,YAAY,MAAM;GACjC,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,cAAc,EAAE,YAAY,MAAM;GAClC,KAAK,EAAE,YAAY,MAAM;GACzB,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,cAAc,EAAE,YAAY,MAAM;GAClC,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,qBAAqB,EAAE,YAAY,MAAM;GACzC,cAAc,EAAE,YAAY,MAAM;GAClC,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,OAAO,EAAE,YAAY,MAAM;GAC3B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;IAC/B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACvE,eAAe;IAAE,OAAO;IAAG,YAAY;IAAM;GAC7C,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5C,iBAAiB;IAAE,OAAO;IAAG,YAAY;IAAM;GAC/C,mBAAmB;IAAE,OAAO;IAAG,YAAY;IAAM;GACjD,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5C,eAAe;IAAE,OAAO;IAAG,YAAY;IAAM;GAC7C,mBAAmB;IAAE,OAAO;IAAG,YAAY;IAAM;GACjD,kBAAkB;IAAE,OAAO;IAAG,YAAY;IAAM;GAChD,kBAAkB;IAAE,OAAO;IAAG,YAAY;IAAM;GACjD,CAAC;AACF,SAAO,iBAAiB,kBAAkB;GACxC,eAAe;IAAE,OAAO;IAAG,YAAY;IAAM;GAC7C,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5C,iBAAiB;IAAE,OAAO;IAAG,YAAY;IAAM;GAC/C,mBAAmB;IAAE,OAAO;IAAG,YAAY;IAAM;GACjD,cAAc;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5C,eAAe;IAAE,OAAO;IAAG,YAAY;IAAM;GAC7C,mBAAmB;IAAE,OAAO;IAAG,YAAY;IAAM;GACjD,kBAAkB;IAAE,OAAO;IAAG,YAAY;IAAM;GAChD,kBAAkB;IAAE,OAAO;IAAG,YAAY;IAAM;GACjD,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCj4BN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,6BAAA,iBAAA;CACR,MAAM,EAAE,0BAAA,uBAAA;CAER,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,UAAU;;EAIjB,IAAI,gBAAgB;GAClB,MAAM,MAAM,KAAK,eAAe,MAAM,MAAM;AAC5C,OAAI,QAAQ,MAAM;IAChB,MAAM,SAAS,yBAAyB,IAAI;AAC5C,QAAI,WAAW,KACb,QAAO;;AAGX,UAAO;;EAIT,IAAI,gBAAgB;GAClB,IAAI,YAAY;GAEhB,MAAM,MAAM,KAAK,eAAe,MAAM,MAAM;AAC5C,OAAI,QAAQ,MAAM;IAChB,MAAM,SAAS,yBAAyB,IAAI;AAC5C,QAAI,WAAW,KACb,aAAY;;GAIhB,MAAM,eAAe,KAAK;AAC1B,UAAO,aAAa,eAAe,YAAY;;EAIjD,IAAI,eAAe;GACjB,IAAI,YAAY;GAEhB,MAAM,QAAQ,KAAK,eAAe,MAAM,QAAQ;AAChD,OAAI,UAAU,MAAM;IAClB,MAAM,SAAS,yBAAyB,MAAM;AAC9C,QAAI,WAAW,KACb,aAAY;;GAIhB,MAAM,eAAe,KAAK;AAC1B,OAAI,YAAY,aACd,QAAO;GAGT,MAAM,eAAe,KAAK;AAC1B,UAAO,YAAY,eAAe,eAAe;;EAInD,IAAI,eAAe;GACjB,MAAM,eAAe,KAAK;GAC1B,IAAI,YAAY;GAEhB,MAAM,MAAM,KAAK,eAAe,MAAM,MAAM;AAC5C,OAAI,QAAQ,MAAM;IAChB,MAAM,SAAS,yBAAyB,IAAI;AAC5C,QAAI,WAAW,KACb,aAAY;;AAIhB,OAAI,YAAY,aACd,QAAO;GAGT,MAAM,eAAe,KAAK;AAC1B,UAAO,YAAY,eAAe,eAAe;;EAInD,IAAI,gBAAgB;GAClB,MAAM,eAAe,KAAK;GAC1B,IAAI,YAAY;GAEhB,MAAM,OAAO,KAAK,eAAe,MAAM,OAAO;AAC9C,OAAI,SAAS,MAAM;IACjB,MAAM,SAAS,yBAAyB,KAAK;AAC7C,QAAI,WAAW,KACb,aAAY;;GAIhB,MAAM,cAAc,KAAK;AACzB,OAAI,YAAY,YACd,QAAO;AAGT,UAAO,YAAY,eAAe,eAAe;;EAInD,IAAI,gBAAgB;GAClB,MAAM,eAAe,KAAK;GAC1B,MAAM,eAAe,KAAK;GAC1B,IAAI,aAAa,eAAe,gBAAgB;GAEhD,MAAM,UAAU,KAAK,eAAe,MAAM,UAAU;AACpD,OAAI,YAAY,MAAM;IACpB,MAAM,SAAS,yBAAyB,QAAQ;AAChD,QAAI,WAAW,KACb,aAAY;;AAIhB,OAAI,YAAY,aACd,QAAO;AAGT,UAAO,YAAY,eAAe,eAAe;;EAGnD,IAAI,SAAS;AACX,UAAO,sBAAsB,KAAK;;EAGpC,IAAI,QAAQ;AACV,UAAO,KAAK;;EAGd,IAAI,MAAM,KAAK;AACb,QAAK,eAAe,MAAM,SAAS,OAAO,IAAI,CAAC;;EAGjD,IAAI,MAAM;AACR,UAAO,KAAK;;EAGd,IAAI,IAAI,KAAK;AACX,QAAK,eAAe,MAAM,OAAO,OAAO,IAAI,CAAC;;EAG/C,IAAI,MAAM;AACR,UAAO,KAAK;;EAGd,IAAI,IAAI,KAAK;AACX,QAAK,eAAe,MAAM,OAAO,OAAO,IAAI,CAAC;;EAG/C,IAAI,MAAM;AACR,UAAO,KAAK;;EAGd,IAAI,IAAI,KAAK;AACX,QAAK,eAAe,MAAM,OAAO,OAAO,IAAI,CAAC;;EAG/C,IAAI,OAAO;AACT,UAAO,KAAK;;EAGd,IAAI,KAAK,KAAK;AACZ,QAAK,eAAe,MAAM,QAAQ,OAAO,IAAI,CAAC;;EAGhD,IAAI,UAAU;AACZ,UAAO,KAAK;;EAGd,IAAI,QAAQ,KAAK;AACf,QAAK,eAAe,MAAM,WAAW,OAAO,IAAI,CAAC;;;AAIrD,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCjLD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,SAAS;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,SAAS;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,SAAS;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,aAAa;cACzB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;;AAGjE,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,OAAO,EAAE,YAAY,MAAM;GAC3B,KAAK,EAAE,YAAY,MAAM;GACzB,KAAK,EAAE,YAAY,MAAM;GACzB,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC7WN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,qBAAN,cAAiC,gBAAgB;AAEjD,QAAO,UAAU,EACf,gBAAgB,oBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB,aAAa,YAAY;GACpD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,OAAO;AACzD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,qBAAqB,SAAS,KAAK,kBAAkB,SAAS,cACrE,QAAO,KAAK;AAGd,UAAK,mBAAmB;AACxB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,gBAAgB,uBAAuB,UAAU;AACtD,aAAO,KAAK;;AAEd,UAAK,gBAAgB,YAAY,UAAU,MAAM;AACjD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,WAAW;AAC5E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,eAAe,WAAW;GAChD,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAkB,cAAc;IAAM;GACtE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6BAAA;;;;;CCtNN,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,kCAAA,0CAAA,CACiE;CACvE,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,EAAE,uBAAuB,cAAA,uBAAA;CAE/B,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,UAAU;AACf,QAAK,wBAAwB;AAE7B,QAAK,8BAA8B;;EAGrC,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAI,SAAS,SAAS,KAAK,aAAa,KAAA,EACtC,MAAK,SAAS,cAAc;;EAIhC,gDAAgD;AAC9C,UAAO;;EAGT,aAAa;AACX,QAAK,cAAc,KAAK;AACxB,QAAK,wBAAwB;;EAG/B,IAAI,UAAU;AACZ,OAAI,KAAK,aAAa,KAAA,EACpB,MAAK,WAAW,aAAa,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9D,SAAS;IACT,oBAAoB;IACrB,CAAC;AAEJ,UAAO,KAAK;;EAGd,IAAI,OAAO;AACT,UAAO;;EAGT,IAAI,SAAS;AACX,UAAO,sBAAsB,KAAK;;EAGpC,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,QAAQ;AACV,UAAO,KAAK;;EAGd,IAAI,MAAM,KAAK;AACb,QAAK,wBAAwB,KAAK;AAClC,QAAK,cAAc;;EAGrB,IAAI,eAAe;AACjB,OAAI,KAAK,0BAA0B,KACjC,QAAO,KAAK;AAEd,UAAO,KAAK;;EAGd,IAAI,aAAa,KAAK;AACpB,OAAI,KAAK,0BAA0B,MAAM;AACvC,SAAK,cAAc;AACnB;;AAGF,QAAK,wBAAwB;;;AAIjC,OAAM,sBAAsB,WAAW,gCAAgC,UAAU;AAEjF,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCrFD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,kBAAkB,OAAO;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+FAA+F,UAAU,OAAO,WACjH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;IAGH,MAAM,IAAI,QAAQ;AAClB,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,OAAM,IAAI,aAAa,UAAU,sCAAsC;AAEzE,YAAQ,IAAI,GAAG,SAAS,EAAE;;GAG5B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,kBAAkB;cAC9B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;;AAGjE,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,mBAAmB,EAAE,YAAY,MAAM;GACvC,SAAS,EAAE,YAAY,MAAM;GAC7B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,cAAc,EAAE,YAAY,MAAM;GAClC,OAAO,EAAE,YAAY,MAAM;GAC3B,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CCxYN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,yBAAN,cAAqC,gBAAgB;AAErD,QAAO,UAAU,EACf,gBAAgB,wBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,uCAAuC;;CAGrF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,sBAAsB;AAGjE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,2BAA2B,aAAa,YAAY;GACxD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;;AAGzG,SAAO,iBAAiB,mBAAmB,WAAW,GACnD,OAAO,cAAc;GAAE,OAAO;GAAsB,cAAc;GAAM,EAC1E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,iCAAA;;;;;CC5GN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,0BAAA,uBAAA;CACR,MAAM,EAAE,6BAAA,iBAAA;CAER,IAAM,0BAAN,cAAsC,gBAAgB;EACpD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,UAAU;;EAGjB,IAAI,iBAAiB;AACnB,UAAO,KAAK,eAAe,MAAM,QAAQ;;EAI3C,IAAI,SAAS;GACX,MAAM,YAAY,KAAK,eAAe,MAAM,QAAQ;AACpD,OAAI,cAAc,MAAM;IACtB,MAAM,cAAc,yBAAyB,UAAU;AACvD,QAAI,gBAAgB,QAAQ,cAAc,EACxC,QAAO;;AAGX,UAAO;;EAIT,IAAI,gBAAgB;GAClB,MAAM,QAAQ,KAAK;AACnB,UAAO,QAAQ,KAAK,gBAAgB,KAAK,gBAAgB;;EAI3D,IAAI,gBAAgB;GAClB,MAAM,UAAU,KAAK,eAAe,MAAM,MAAM;AAChD,OAAI,YAAY,MAAM;IACpB,MAAM,YAAY,yBAAyB,QAAQ;AACnD,QAAI,cAAc,QAAQ,YAAY,EACpC,QAAO;;AAGX,UAAO;;EAGT,IAAI,QAAQ;AACV,OAAI,KAAK,eACP,QAAO,KAAK;AAEd,UAAO;;EAET,IAAI,MAAM,OAAO;AACf,QAAK,eAAe,MAAM,SAAS,MAAM;;EAG3C,IAAI,WAAW;AACb,OAAI,CAAC,KAAK,eACR,QAAO;AAGT,UAAO,KAAK,gBAAgB,KAAK;;EAGnC,IAAI,SAAS;AACX,UAAO,sBAAsB,KAAK;;;AAItC,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CCrED,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,wDAAA,iBAAA,CAC6C;CACnD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACrE,SAAI,UAAU,MAAM;AAClB,cAAQ,sDAAsD,MAAM;AACpE,UAAI,UAAU,QAAQ,QAAQ,EAC5B,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,UAAU,GAAG;KAC3B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,IAAI,EACN,SAAQ,YAAY,+BAA+B,OAAO,OAAO,EAAE,CAAC;cAE9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;;AAGjE,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,OAAO,EAAE,YAAY,MAAM;GAC3B,KAAK,EAAE,YAAY,MAAM;GACzB,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CCrON,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,uBAAN,cAAmC,gBAAgB;AAEnD,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,OAAO;AACzD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,qBAAqB,SAAS,KAAK,kBAAkB,SAAS,cACrE,QAAO,KAAK;AAGd,UAAK,mBAAmB;AACxB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,gBAAgB,uBAAuB,UAAU;AACtD,aAAO,KAAK;;AAEd,UAAK,gBAAgB,YAAY,UAAU,MAAM;AACjD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC9KN,MAAMgB,OAAK,QAAQ,KAAK;CACxB,MAAM,EAAE,gBAAgB,aAAa,sBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;CACrC,MAAM,EAAE,aAAA,eAAA;CACR,MAAM,EAAE,iBAAA,oBAAA;CAER,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,kBAAA,+BAAA;CACN,MAAM,EAAE,eAAe,iBAAA,4BAAA;CACvB,MAAM,EAAE,mBAAA,iBAAA;CACR,MAAM,EAAE,qBAAA,cAAA;CACR,MAAM,YAAA,mBAAA;CAEN,MAAM,cAAc,IAAI,IAAI;EAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,kBAAkB;AACvB,QAAK,kBAAkB;;EAGzB,UAAU;AACR,SAAM,SAAS;AAMf,OAAI,CAAC,KAAK,mBAAmB,KAAK,4BAChC,MAAK,OAAO;;EAIhB,gBAAgB;GACd,MAAM,WAAW,KAAK;AAEtB,OAAI,CAAC,SAAS,gBAAgB,SAAS,aAAa,gBAAgB,iBAAiB,SAAS,mBAC5F,QAAO;AAGT,UAAO;;EAGT,uBAAuB;GACrB,MAAM,WAAW,KAAK;GACtB,MAAM,iBAAiB,SAAS;GAChC,MAAM,kBAAkB,YAAY,KAAK,eAAe,MAAM,UAAU,CAAC,IAAI,SAAS;AAEtF,OAAI,CAAC,KAAK,eAAe,CACvB;GAGF,MAAM,MAAM,KAAK,eAAe,MAAM,MAAM;GAC5C,MAAM,MAAM,KAAK,eAAe,kBAAkB,IAAI;AACtD,OAAI,QAAQ,KACV;GAEF,MAAM,YAAY,aAAa,IAAI;GAEnC,MAAM,wBAAwB,MAAM,aAAa;AAC/C,QAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,kBAAkB,SAAS,OAAO;IAGpD,MAAM,cAAc,SAAS,MAAM,SAAS,QAAQ,IAAI,eAAe,CAAC,IAAI,IAAI,SAAS,aAAa;IAKtG,MAAM,SAAS,iBAAiB,MAHf,YAAY,eAAe,KAAK,CAAC,IAChD,YAAY,YAAY,WAAW,IAAI,UAAU,CAAC,IAClD,gBAC6C;AAE/C,SAAK,WAAW,QAAQ,UAAU;;AAGpC,kBAAe,MAAM,WAAW;IAC9B,SAAS;IACT,QAAQ;IACT,CAAC;;EAGJ,uBAAuB;GACrB,MAAM,WAAW,KAAK;AAEtB,OAAI,CAAC,KAAK,eAAe,CACvB;AAGF,YAAS,OAAO,KAAK,YAAY;AAC/B,SAAK,WAAW,KAAK,MAAM,SAAS,IAAI;MACvC,MAAM,OAAO,KAAK;;EAGvB,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAE1C,OAAI,KAAK,aAAa,CAAC,KAAK,gBAAgB,SAAS,SAAS,aAAa,QAAQ,UAAU,KAC3F,MAAK,sBAAsB;;EAI/B,gCAAgC;AAI9B,QAAK,OAAO;;EAKd,QAAQ;AACN,OAAI,KAAK,gBACP;AAKF,OAAI,CAAC,KAAK,eAAe,MAAM,MAAM,IAAI,KAAK,KAAK,WAAW,EAC5D;AAGF,OAAI,CAAC,KAAK,UACR;AAMF,OAFa,QADkB,KAAK,gBAAgB,CACR,KAE/B,UAEX;AAGF,QAAK,kBAAkB;AAMvB,OAAI,KAAK,eAAe,MAAM,MAAM,CAClC,MAAK,sBAAsB;OAE3B,MAAK,sBAAsB;;EAI/B,WAAW,MAAM,UAAU;AACzB,QAAK,eAAe,qBAAqB;AACzC,qBAAkB,MAAM,MAAM,SAAS;AACvC,UAAO,KAAK,eAAe;;EAG7B,iBAAiB;GACf,MAAM,WAAW,KAAK,eAAe,MAAM,OAAO;GAClD,MAAM,WAAW,KAAK,eAAe,MAAM,WAAW;AAEtD,OAAI,aAAa,GACf,QAAO;AAGT,OAAI,aAAa,QAAQ,aAAa,GACpC,QAAO;AAGT,OAAI,aAAa,QAAQ,aAAa,KACpC,QAAO;AAGT,OAAI,aAAa,KACf,QAAO,SAAS,MAAM;AAGxB,OAAI,aAAa,KACf,QAAO,UAAU;AAGnB,UAAO;;EAGT,IAAI,OAAO;AACT,UAAO,iBAAiB,KAAK;;EAG/B,IAAI,KAAK,MAAM;AACb,QAAK,cAAc;;EAIrB,CAAC,cAAc,MAAM,MAAM;AACzB,QAAK,kBAAkB,KAAK;;;CAIhC,SAAS,kBAAkB,SAAS,MAAM,UAAU;EAClD,MAAM,WAAW,QAAQ;EACzB,MAAM,SAAS,YAAY,SAAS;AAEpC,MAAI,QAAQ;AACV,YAAS,iBAAiB;GAE1B,IAAI,aAAa;AACjB,OAAI,CAAC,QAAQ,eAAe,MAAM,MAAM;SACjC,MAAM,SAAS,cAAc,iBAAiB,QAAQ,CACzD,KAAI,MAAM,aAAa,UAAU,WAAW;AAC1C,SAAI,MAAM,mBACR,cAAa,MAAM,mBAAmB,YAAY;AAEpD;;;AAKN,OAAI;AACF,SAAG,aAAa,MAAM,QAAQ;KAAE;KAAU;KAAY,eAAe;KAAO,CAAC;YACtE,GAAG;AACV,oBAAgB,QAAQ,GAAG,SAAS;aAC5B;AACR,aAAS,iBAAiB;;;;CAKhC,SAAS,QAAQ,YAAY;EAC3B,MAAM,aAAa,eAAe,WAAW;AAG7C,MAAI,YAAY,IAAI,WAAW,CAC7B,QAAO;AAET,MAAI,eAAe,SACjB,QAAO;AAET,SAAO;;AAGT,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CC5PD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,QAAQ,KAAK;cAC/D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,SAAS,GAAG;SAE/D,SAAQ,YAAY,kCAAkC,QAAQ;cAExD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,cAAc;cAChE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,MAAM,KACR,SAAQ,YAAY,kCAAkC,cAAc;SAEpE,SAAQ,YAAY,+BAA+B,eAAe,EAAE;cAE9D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,UAAU;cACtB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,MAAM;AACvE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,aAAa,EAAE,YAAY,MAAM;GACjC,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CCrdN,MAAM,cAAA,eAAA;CAEN,MAAM,WAAA,iBAAA;CACN,MAAM,gBAAA,uBAAA;CACN,MAAM,kCAAA,0CAAA,CACiE;CACvE,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,YAAA,mBAAA;CACN,MAAM,iBAAA,wBAAA;CACN,MAAM,wBAAA,+BAAA;CACN,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,uBAAuB,WAAW,eAAA,uBAAA;CAC1C,MAAM,EAAE,4BAAA,iBAAA;CAER,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,WAAW,sBAAsB,WAAW,KAAK,eAAe,EAAE,EAAE;IACvE,SAAS;IACT,aAAa;KAEX,MAAM,QAAQ,EAAE;AAChB,UAAK,MAAM,SAAS,cAAc,iBAAiB,KAAK,CACtD,KAAI,MAAM,eAAe,SACvB,OAAM,KAAK,MAAM;cACR,MAAM,eAAe;WACzB,MAAM,gBAAgB,cAAc,iBAAiB,MAAM,CAC9D,KAAI,aAAa,eAAe,SAC9B,OAAM,KAAK,aAAa;;AAKhC,YAAO;;IAEV,CAAC;AACF,QAAK,mBAAmB;AAExB,QAAK,8BAA8B;AAEnC,QAAK,UAAU;;EAGjB,aAAa;AACX,QAAK,MAAM,UAAU,KAAK,SAAS;AACjC,WAAO,gBAAgB,OAAO,eAAe,MAAM,WAAW;AAC9D,WAAO,aAAa;;AAEtB,QAAK,iBAAiB;;EAGxB,kBAAkB;AAChB,OAAI,KAAK,eAAe,MAAM,WAAW,CACvC;GAGF,MAAM,WAAW,KAAK,QAAQ,QAAO,QAAO,IAAI,cAAc;AAG9D,OADa,KAAK,iBACL,KAAK,CAAC,SAAS,OAE1B,MAAK,MAAM,UAAU,KAAK,SAAS;IACjC,IAAI,WAAW,OAAO,eAAe,MAAM,WAAW;IACtD,MAAM,aAAa,cAAc,OAAO,OAAO;AAC/C,QAAI,cACF,WAAW,eAAe,cAC1B,WAAW,eAAe,MAAM,WAAW,CAC3C,YAAW;AAGb,QAAI,CAAC,UAAU;AAEb,YAAO,gBAAgB;AACvB;;;YAGK,SAAS,UAAU,EAE5B,UAAS,SAAS,QAAQ,UAAU;AAClC,WAAO,gBAAgB,UAAU,SAAS,SAAS;KACnD;;EAIN,iBAAiB,QAAQ,OAAO;AAC9B,OAAI,MAAM,aAAa,UAAU,aAC/B,MAAK,iBAAiB;AAGxB,SAAM,iBAAiB,QAAQ,MAAM;;EAGvC,mBAAmB,QAAQ,OAAO;AAChC,OAAI,MAAM,aAAa,UAAU,aAC/B,MAAK,iBAAiB;AAGxB,SAAM,mBAAmB,QAAQ,MAAM;;EAGzC,cAAc,MAAM,OAAO,UAAU;AACnC,OAAI,SAAS,cAAc,SAAS,OAClC,MAAK,iBAAiB;AAExB,SAAM,cAAc,MAAM,OAAO,SAAS;;EAG5C,IAAI,eAAe;AACjB,OAAI,KAAK,eAAe,MAAM,OAAO,EAAE;IACrC,MAAM,OAAO,wBAAwB,KAAK,eAAe,MAAM,OAAO,CAAC;AACvE,QAAI,SAAS,KACX,QAAO;;AAGX,UAAO,KAAK,eAAe,MAAM,WAAW,GAAG,IAAI;;EAGrD,IAAI,WAAW;AACb,UAAO,CAAC,WAAW,KAAK;;EAG1B,IAAI,UAAU;AACZ,UAAO,KAAK;;EAGd,IAAI,kBAAkB;AACpB,UAAO,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IACvD,SAAS;IACT,aAAa,cAAc,YAAY,MAAM,EAC3C,SAAQ,SAAQ,KAAK,eAAe,YAAY,KAAK,kBAAkB,MACxE,CAAC;IACH,CAAC;;EAGJ,IAAI,gBAAgB;AAClB,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,IACvC,KAAI,KAAK,QAAQ,KAAK,EAAE,CAAC,cACvB,QAAO;AAGX,UAAO;;EAGT,IAAI,cAAc,OAAO;AACvB,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,IACvC,MAAK,QAAQ,KAAK,EAAE,CAAC,gBAAgB;GAGvC,MAAM,iBAAiB,KAAK,QAAQ,KAAK,MAAM;AAC/C,OAAI,gBAAgB;AAClB,mBAAe,gBAAgB;AAC/B,mBAAe,aAAa;;;EAIhC,IAAI,SAAS;AACX,UAAO,sBAAsB,KAAK;;EAGpC,IAAI,QAAQ;AACV,QAAK,MAAM,UAAU,KAAK,QACxB,KAAI,OAAO,cACT,QAAO,OAAO;AAIlB,UAAO;;EAGT,IAAI,MAAM,KAAK;AACb,QAAK,MAAM,UAAU,KAAK,SAAS;AACjC,QAAI,OAAO,UAAU,KAAK;AACxB,YAAO,gBAAgB;AACvB,YAAO,aAAa;UAEpB,QAAO,gBAAgB;AAGzB,WAAO,WAAW;;;EAItB,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,OAAO;AACT,UAAO,KAAK,eAAe,MAAM,WAAW,GAAG,oBAAoB;;EAGrE,KAAK,SAAS,4BAA4B;AACxC,UAAO,KAAK,QAAQ,SAAS;;EAG/B,IAAI,SAAS;AACX,UAAO,KAAK,QAAQ;;EAGtB,IAAI,OAAO,OAAO;AAChB,QAAK,QAAQ,SAAS;;EAGxB,KAAK,OAAO;AACV,UAAO,KAAK,QAAQ,KAAK,MAAM;;EAGjC,UAAU,MAAM;AACd,UAAO,KAAK,QAAQ,UAAU,KAAK;;EAGrC,CAAC,SAAS,eAAe,OAAO,OAAO;AACrC,UAAO,KAAK,QAAQ,SAAS,eAAe,OAAO,MAAM;;EAG3D,CAAC,SAAS,oBAAoB,OAAO,OAAO;AAC1C,UAAO,KAAK,QAAQ,SAAS,oBAAoB,OAAO,MAAM;;EAGhE,IAAI,KAAK,QAAQ;AACf,QAAK,QAAQ,IAAI,KAAK,OAAO;;EAG/B,OAAO,OAAO;AACZ,OAAI,UAAU,SAAS,GAAG;AACxB,YAAQ,YAAY,KAAK,OAAO,EAC9B,SAAS,kEACV,CAAC;AACF,SAAK,QAAQ,OAAO,MAAM;SAE1B,OAAM,QAAQ;;EAIlB,gDAAgD;AAC9C,UAAO,KAAK,eAAe,MAAM,WAAW;;EAQ9C,IAAI,WAAW;AACb,OAAI,CAAC,KAAK,UAWR,MAAK,YAAY,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE;IAChE,SAAS;IACT,OAZY,EACZ,oBAAoB;AAClB,SAAI,CAAC,KAAK,eAAe,MAAM,WAAW,CACxC,QAAO;KAET,MAAM,sBAAsB,KAAK;AACjC,YAAO,sBAAsB,KAAM,wBAAwB,KAAK,KAAK;OAExE;IAKA,CAAC;AAEJ,UAAO,KAAK;;EASd,IAAI,wBAAwB;AAC1B,UAAO,KAAK,eAAe,MAAM,WAAW,IAAI,CAAC,KAAK,eAAe,MAAM,WAAW,IACpF,KAAK,iBAAiB,KAAK,KAAK,QAAQ,SAAS,KAAK,KAAK,QAAQ,KAAK,EAAE,CAAC,UAAU,MACrF,KAAK,QAAQ,KAAK,EAAE,CAAC,WAAW,eAAe;;;AAIrD,OAAM,sBAAsB,WAAW,gCAAgC,UAAU;AAEjF,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCxRD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,oBAAA,2BAAA;CACN,MAAM,sBAAA,6BAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,KAAK,OAAO;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kFAAkF,UAAU,OAAO,WACpG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,KAAK,GAAG,KAAK,CAAC;;GAGnE,UAAU,MAAM;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU,GAAG,KAAK,CAAC;;GAGxE,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,kBAAkB,GAAG,OAAO,IAAI,oBAAoB,GAAG,OAAO,CAChE,UAAS,MAAM,eAAe,OAAO;SAErC,OAAM,IAAI,aAAa,UACrB,4FACD;AAEH,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;cAEL,YAAY,GAAG,OAAO,CACxB,UAAS,MAAM,eAAe,OAAO;cAC5B,OAAO,WAAW,SAC3B,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAIN,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;cAC/B;AACR,+DAA0D,aAAa;;;GAI3E,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;IAEH,MAAM,OAAO,EAAE;AACf,YAAQ,UAAU,QAAlB;KACE,KAAK,EACH;KACF,SAAS;MACP,IAAI,SAAS,UAAU;AACvB,eAAS,YAAY,QAAQ,QAAQ;OACnC,SAAS;OACT,SAAS;OACV,CAAC;AACF,WAAK,KAAK,OAAO;;;AAGrB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;cAClC;AACR,+DAA0D,aAAa;;;GAI3E,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,kBAAkB,OAAO;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+FAA+F,UAAU,OAAO,WACjH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,YAAY,KAAK;cACnE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,aAAa,GAAG;SAEnE,SAAQ,YAAY,kCAAkC,YAAY;cAE5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACtE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,QAAQ,OAAO,SAAS,CAAC;cACpE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,YAAY;cACxB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,cAAc,MAAM,yBAAyB;AACxD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;MACtE;;GAGJ,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,WAAW;;GAGjC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;;AAGjE,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,mBAAmB,EAAE,YAAY,MAAM;GACvC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,iBAAiB,EAAE,YAAY,MAAM;GACrC,eAAe,EAAE,YAAY,MAAM;GACnC,OAAO,EAAE,YAAY,MAAM;GAC3B,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;IACvE,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,UAAU;IACxD,MAAM,eAAe,KAAK;AAE1B,QAAI,MAAM,qBAAqB,EAAE,EAAE;KACjC,MAAM,QAAQ,MAAM;KACpB,IAAI,eAAe;AAEnB,SAAI,iBAAiB,QAAQ,iBAAiB,KAAA,EAC5C,gBAAe;SAEf,gBAAe,kBAAkB,QAAQ,cAAc,cAAc,EACnE,SAAS,uBAAuB,QAAQ,wDACzC,CAAC;AAGJ,8DAAyD,aAAa;AACtE,SAAI;AAEF,UADiB,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK,MAEpD,QAAO,YAAY,MAAM,eAAe,OAAO,aAAa;UAE5D,QAAO,YAAY,MAAM,oBAAoB,OAAO,aAAa;eAE3D;AACR,gEAA0D,aAAa;;AAGzE,YAAO;;;GAGX,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;GAGhD,MAAM,eAAe,KAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;AACjC,QAAI,KAAK,OAAO,KAAK,IACnB,QAAO;IAGT,MAAM,QAAQ,MAAM;IACpB,IAAI,eAAe,KAAK;AAExB,QAAI,iBAAiB,QAAQ,iBAAiB,KAAA,EAC5C,gBAAe;QAEf,gBAAe,kBAAkB,QAAQ,cAAc,cAAc,EACnE,SAAS,uBAAuB,QAAQ,wDACzC,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AAEF,SADiB,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK,MAEpD,QAAO,YAAY,MAAM,eAAe,OAAO,aAAa;SAE5D,QAAO,YAAY,MAAM,oBAAoB,OAAO,aAAa;cAE3D;AACR,+DAA0D,aAAa;;AAGzE,WAAO;;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,gCAAA;;;;;CC99BN,MAAM,cAAA,eAAA;AACQ,kBAAA;AAEd,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KAAE,SAAS,UAAU;KAA8B,SAAS;KAAc,CAAC;AAEjH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCxBT,MAAM,WAAA,iBAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,MAAM,EAAE,aAAA,gBAAA;CACR,MAAM,EAAE,uBAAuB,2BAAA,oBAAA;CAE/B,IAAM,sBAAN,cAAkC,gBAAgB;EAChD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,iBAAiB,EAAE;;EAI1B,IAAI,OAAO;AACT,UAAO,KAAK,eAAe,MAAM,OAAO,IAAI;;EAG9C,cAAc,MAAM,OAAO,UAAU;AACnC,SAAM,cAAc,MAAM,OAAO,SAAS;AAG1C,OAAI,SAAS,QAAQ;AACnB,QAAI,UAAU,SACZ;AAGF,QAAI,UAAU,QAAQ,aAAa,GACjC;AAGF,QAAI,UAAU,MAAM,aAAa,KAC/B;AAGF,0BAAsB,SAAS,KAAK,CAAC;;;EAKzC,cAAc,SAAS;AACrB,OAAI,CAAC,WAAW,CAAC,QAAQ,QACvB,QAAO,KAAK,eAAe,IAAI,SAAS,eAAe;AAGzD,UAAO,uBAAuB,KAAK,CAAC,IAAI,SAAS,eAAe;;EAIlE,iBAAiB,SAAS;AACxB,UAAO,KAAK,cAAc,QAAQ,CAAC,OAAO,YAAY,GAAG;;;AAI7D,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCxDD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,uBAAA,8BAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,qBAAqB,QAAQ,cAAc,QAAQ,EAC1D,SAAS,uEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,GAAG,KAAK,CAAC;;GAG5E,mBAAmB;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,qBAAqB,QAAQ,cAAc,QAAQ,EAC1D,SAAS,0EACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB,GAAG,KAAK,CAAC;;GAG/E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,eAAe,EAAE,YAAY,MAAM;GACnC,kBAAkB,EAAE,YAAY,MAAM;GACtC,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCjMN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,wBAAN,cAAoC,gBAAgB;AAEpD,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCLD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK,YAAY,UAAU,MAAM;cACjD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CCjVN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;;AAGzG,SAAO,iBAAiB,gBAAgB,WAAW,GAChD,OAAO,cAAc;GAAE,OAAO;GAAmB,cAAc;GAAM,EACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC5GN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,8BAAN,cAA0C,gBAAgB;AAE1D,QAAO,UAAU,EACf,gBAAgB,6BACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4CAA4C;;CAG1F,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,2BAA2B;AAGtE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,gCAAgC,aAAa,YAAY;GAC7D,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,wBAAwB,WAAW;GACzD,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAA2B,cAAc;IAAM;GAC/E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,sCAAA;;;;;CCzJN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,MAAM,EAAE,gBAAgB,4BAAA,iBAAA;CACxB,MAAM,EAAE,YAAA,mBAAA;CAER,SAAS,iCAAiC,WAAW,KAAK,KAAK,eAAe,GAAG;AAC/E,MAAI,cAAc,KAChB,QAAO;EAET,MAAM,SAAS,wBAAwB,UAAU;AACjD,MAAI,WAAW,KACb,QAAO;AAET,MAAI,SAAS,IACX,QAAO;AAET,MAAI,SAAS,IACX,QAAO;AAET,SAAO;;CAGT,IAAM,2BAAN,cAAuC,gBAAgB;EACrD,IAAI,UAAU;AACZ,UAAO,iCAAiC,KAAK,eAAe,MAAM,UAAU,EAAE,GAAG,KAAM,EAAE;;EAG3F,IAAI,QAAQ,GAAG;AACb,QAAK,eAAe,MAAM,WAAW,OAAO,EAAE,CAAC;;EAGjD,IAAI,UAAU;AACZ,UAAO,iCAAiC,KAAK,eAAe,MAAM,UAAU,EAAE,GAAG,OAAO,EAAE;;EAG5F,IAAI,QAAQ,GAAG;AACb,QAAK,eAAe,MAAM,WAAW,OAAO,EAAE,CAAC;;EAGjD,IAAI,YAAY;GACd,MAAM,KAAK,QAAQ,MAAM,KAAK;AAC9B,OAAI,OAAO,KACT,QAAO;AAGT,UAAO,GAAG,MAAM,QAAQ,KAAK;;EAG/B,IAAI,QAAQ;GACV,IAAI,QAAQ,KAAK,eAAe,MAAM,QAAQ;AAC9C,OAAI,UAAU,KACZ,QAAO;AAIT,WAAQ,eAAe,MAAM;AAC7B,OAAI,UAAU,SAAS,UAAU,SAAS,UAAU,cAAc,UAAU,WAC1E,QAAO;AAGT,UAAO;;EAGT,IAAI,MAAM,GAAG;AACX,QAAK,eAAe,MAAM,SAAS,EAAE;;;AAIzC,QAAO,UAAU,EACf,gBAAgB,0BACjB;;;;;CCtED,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,yCAAyC;;CAGvF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,wBAAwB;AAGnE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,6BAA6B,aAAa,YAAY;GAC1D,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AACzE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,KACZ,KAAI,QAAQ,EACV,QAAO;eACE,SAAS,KAAK,SAAS,IAChC,QAAO;UAEP,QAAO;;AAIb,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,WAAW,OAAO,SAAS,CAAC;cACvE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AACzE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,KACZ,KAAI,QAAQ,EACV,QAAO;eACE,SAAS,KAAK,SAAS,MAChC,QAAO;UAEP,QAAO;;AAIb,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,WAAW,OAAO,SAAS,CAAC;cACvE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,GAAG,GAAG;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,SAAS,KAAK;cAChE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,UAAU,GAAG;SAEhE,SAAQ,YAAY,kCAAkC,SAAS;cAEzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,qBAAqB,WAAW;GACtD,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;GAC/B,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,IAAI,EAAE,YAAY,MAAM;GACxB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAwB,cAAc;IAAM;GAC5E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,mCAAA;;;;;CC1tBN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,0BAAN,cAAsC,gBAAgB;AAEtD,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACtE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,KACZ,KAAI,QAAQ,EACV,QAAO;eACE,SAAS,KAAK,SAAS,IAChC,QAAO;UAEP,QAAO;;AAIb,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,QAAQ,OAAO,SAAS,CAAC;cACpE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,GAAG,GAAG;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,IAAI,EAAE,YAAY,MAAM;GACxB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CCrXN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,wBAAA,mBAAA;CACR,MAAM,iBAAA,wBAAA;CACN,MAAM,eAAA,sBAAA;CAEN,IAAM,8BAAN,cAA0C,gBAAgB;EACxD,IAAI,OAAO;AACT,OAAI,CAAC,KAAK,MACR,MAAK,QAAQ,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IAC7D,SAAS;IACT,aAAa,oBAAoB,MAAM,KAAK;IAC7C,CAAC;AAEJ,UAAO,KAAK;;EAGd,UAAU,OAAO;AACf,OAAI,QAAQ,MAAM,QAAQ,KAAK,KAAK,OAClC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,oGACA,iBACD,CAAC;GAGJ,MAAM,KAAK,KAAK,eAAe,cAAc,KAAK;AAElD,OAAI,UAAU,MAAM,UAAU,KAAK,KAAK,OACtC,MAAK,QAAQ,GAAG;QACX;IACL,MAAM,WAAW,KAAK,KAAK,KAAK,MAAM;AACtC,SAAK,QAAQ,IAAI,SAAS;;AAG5B,UAAO;;EAGT,UAAU,OAAO;AACf,OAAI,QAAQ,MAAM,SAAS,KAAK,KAAK,OACnC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,gCAAgC,MAAM,wBACtC,iBACD,CAAC;AAGJ,OAAI,UAAU;QACR,KAAK,KAAK,SAAS,GAAG;KACxB,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,SAAS,EAAE;AAC/C,UAAK,QAAQ,GAAG;;UAEb;IACL,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM;AAChC,SAAK,QAAQ,GAAG;;;;AAKtB,QAAO,UAAU,EACf,gBAAgB,6BACjB;;;;;CC1DD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4CAA4C;;CAG1F,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,2BAA2B;AAGtE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,gCAAgC,aAAa,YAAY;GAC7D,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,YAAY;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU,GAAG,KAAK,CAAC;;GAGxE,UAAU,OAAO;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,6FAA6F,UAAU,OAAO,WAC/G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,UAAU,GAAG,KAAK;cACrC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,cAAc,MAAM,cAAc;AAC7C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;MAC3D;;GAGJ,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,GAAG,GAAG;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,wBAAwB,WAAW;GACzD,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,IAAI,EAAE,YAAY,MAAM;GACxB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAA2B,cAAc;IAAM;GAC/E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,sCAAA;;;;;CC3VN,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,YAAA,oBAAA;CACR,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,yBAAyB,wBAAA,mBAAA;CACjC,MAAM,iBAAA,wBAAA;CACN,MAAM,YAAA,mBAAA;CAEN,SAAS,oBAAoB,OAAO;EAClC,MAAM,WAAW,cAAc,iBAAiB,MAAM;AACtD,OAAK,MAAM,SAAS,UAAU;AAC5B,OAAI,MAAM,aAAa,UAAU,aAC/B;AAGF,OAAI,MAAM,kBAAkB,WAAY,MAAM,eAAe,aAAa,MAAM,eAAe,WAC7F,QAAO;;AAIX,SAAO;;CAGT,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,IAAI,UAAU;AACZ,UAAO,wBAAwB,MAAM,UAAU;;EAGjD,IAAI,QAAQ,OAAO;GACjB,MAAM,iBAAiB,KAAK;AAC5B,OAAI,mBAAmB,KACrB,MAAK,YAAY,eAAe;AAGlC,OAAI,UAAU,MAAM;IAClB,MAAM,iBAAiB,KAAK;AAC5B,SAAK,aAAa,OAAO,eAAe;;;EAI5C,IAAI,QAAQ;AACV,UAAO,wBAAwB,MAAM,QAAQ;;EAG/C,IAAI,MAAM,OAAO;AACf,OAAI,UAAU,QAAQ,MAAM,eAAe,QACzC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,oDACA,wBACD,CAAC;GAGJ,MAAM,cAAc,KAAK;AACzB,OAAI,gBAAgB,KAClB,MAAK,YAAY,YAAY;AAG/B,OAAI,UAAU,MAAM;IAClB,MAAM,iBAAiB,oBAAoB,KAAK;AAChD,SAAK,aAAa,OAAO,eAAe;;;EAI5C,IAAI,QAAQ;AACV,UAAO,wBAAwB,MAAM,QAAQ;;EAG/C,IAAI,MAAM,OAAO;AACf,OAAI,UAAU,QAAQ,MAAM,eAAe,QACzC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,oDACA,wBACD,CAAC;GAGJ,MAAM,cAAc,KAAK;AACzB,OAAI,gBAAgB,KAClB,MAAK,YAAY,YAAY;AAG/B,OAAI,UAAU,KACZ,MAAK,YAAY,MAAM;;EAI3B,IAAI,OAAO;AACT,OAAI,CAAC,KAAK,MACR,MAAK,QAAQ,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IAC7D,SAAS;IACT,aAAa;KACX,MAAM,aAAa,EAAE;KACrB,MAAM,WAAW,EAAE;KACnB,MAAM,aAAa,EAAE;KAErB,MAAM,WAAW,cAAc,iBAAiB,KAAK;AACrD,UAAK,MAAM,SAAS,UAAU;AAC5B,UAAI,MAAM,aAAa,UAAU,gBAAgB,MAAM,kBAAkB,QACvE;AAGF,UAAI,MAAM,eAAe,QACvB,YAAW,KAAK,GAAG,oBAAoB,OAAO,KAAK,CAAC;eAC3C,MAAM,eAAe,QAC9B,UAAS,KAAK,GAAG,oBAAoB,OAAO,KAAK,CAAC;eACzC,MAAM,eAAe,QAC9B,YAAW,KAAK,GAAG,oBAAoB,OAAO,KAAK,CAAC;eAC3C,MAAM,eAAe,KAC9B,UAAS,KAAK,MAAM;;AAIxB,YAAO;MAAC,GAAG;MAAY,GAAG;MAAU,GAAG;MAAW;;IAErD,CAAC;AAEJ,UAAO,KAAK;;EAGd,IAAI,UAAU;AACZ,OAAI,CAAC,KAAK,SACR,MAAK,WAAW,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IAChE,SAAS;IACT,aAAa,oBAAoB,MAAM,QAAQ;IAChD,CAAC;AAEJ,UAAO,KAAK;;EAGd,cAAc;GACZ,MAAM,KAAK,KAAK,eAAe,cAAc,QAAQ;GAErD,MAAM,UAAU,oBAAoB,MAAM,QAAQ;GAClD,MAAM,iBAAiB,QAAQ,QAAQ,SAAS;AAEhD,OAAI,eACF,MAAK,aAAa,IAAI,eAAe,YAAY;OAEjD,MAAK,YAAY,GAAG;AAEtB,UAAO;;EAGT,cAAc;GACZ,IAAI,KAAK,KAAK;AACd,OAAI,CAAC,GACH,MAAK,KAAK,QAAQ,KAAK,eAAe,cAAc,QAAQ;AAE9D,UAAO;;EAGT,cAAc;AACZ,QAAK,QAAQ;;EAGf,cAAc;GACZ,IAAI,KAAK,KAAK;AACd,OAAI,CAAC,GACH,MAAK,KAAK,QAAQ,KAAK,eAAe,cAAc,QAAQ;AAE9D,UAAO;;EAGT,cAAc;AACZ,QAAK,QAAQ;;EAGf,gBAAgB;GACd,IAAI,KAAK,KAAK;AACd,OAAI,CAAC,GACH,MAAK,KAAK,UAAU,KAAK,eAAe,cAAc,UAAU;AAElE,UAAO;;EAGT,gBAAgB;GACd,MAAM,IAAI,KAAK;AACf,OAAI,EACF,GAAE,WAAW,YAAY,EAAE;;EAI/B,UAAU,OAAO;AACf,OAAI,QAAQ,MAAM,QAAQ,KAAK,KAAK,OAClC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,oGACA,iBACD,CAAC;GAGJ,MAAM,KAAK,KAAK,eAAe,cAAc,KAAK;AAElD,OAAI,KAAK,KAAK,WAAW,KAAK,KAAK,QAAQ,WAAW,GAAG;IACvD,MAAM,QAAQ,KAAK,eAAe,cAAc,QAAQ;AACxD,UAAM,YAAY,GAAG;AACrB,SAAK,YAAY,MAAM;cACd,KAAK,KAAK,WAAW,EAChB,MAAK,QAAQ,KAAK,KAAK,QAAQ,SAAS,EAAE,CAClD,YAAY,GAAG;YACZ,UAAU,MAAM,UAAU,KAAK,KAAK,OAC5B,MAAK,KAAK,KAAK,KAAK,KAAK,SAAS,EAAE,CAAC,WAC7C,YAAY,GAAG;QACnB;IACL,MAAM,WAAW,KAAK,KAAK,KAAK,MAAM;AACrB,aAAS,WACjB,aAAa,IAAI,SAAS;;AAGrC,UAAO;;EAGT,UAAU,OAAO;GACf,MAAM,YAAY,KAAK,KAAK;AAC5B,OAAI,QAAQ,MAAM,SAAS,UACzB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,gCAAgC,MAAM,wBACtC,iBACD,CAAC;AAGJ,OAAI,UAAU,IAAI;AAChB,QAAI,cAAc,EAChB;AAGF,YAAQ,YAAY;;GAGtB,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM;AAChC,MAAG,WAAW,YAAY,GAAG;;;AAIjC,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCzOD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,0BAAA,iCAAA;CACN,MAAM,0BAAA,iCAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe,CAAC;;GAGrE,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,eAAe;cAClC;AACR,+DAA0D,aAAa;;;GAI3E,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,CAAC;;GAGnE,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,aAAa;cAChC;AACR,+DAA0D,aAAa;;;GAI3E,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,CAAC;;GAGnE,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,aAAa;cAChC;AACR,+DAA0D,aAAa;;;GAI3E,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,CAAC;;GAGnE,YAAY;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU,GAAG,KAAK,CAAC;;GAGxE,UAAU,OAAO;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sFAAsF,UAAU,OAAO,WACxG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,UAAU,GAAG,KAAK;cACrC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,wBAAwB,QAAQ,cAAc,GAAG,EACnD,SAAS,kFACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,aAAa;cACzB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,wBAAwB,QAAQ,cAAc,GAAG,EACnD,SAAS,gFACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,MAAM,QAAQ,MAAM,KAAA,EACtB,KAAI;QAEJ,KAAI,wBAAwB,QAAQ,cAAc,GAAG,EACnD,SAAS,gFACV,CAAC;AAGJ,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,cAAc,MAAM,cAAc;AAC7C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;MAC3D;;GAGJ,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC/xBN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,sBAAN,cAAkC,gBAAgB;AAElD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,YAAY;GACrD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,WAAW;AAC5E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCzJN,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,iBAAA,wBAAA;CACN,MAAM,EAAE,YAAA,oBAAA;CACR,MAAM,EAAE,yBAAA,mBAAA;CACR,MAAM,EAAE,kBAAA,4BAAA;CAER,MAAM,iBAAiB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAE5C,IAAM,0BAAN,cAAsC,gBAAgB;EACpD,IAAI,QAAQ;AACV,OAAI,CAAC,KAAK,OACR,MAAK,SAAS,eAAe,WAAW,KAAK,eAAe,EAAE,EAAE;IAC9D,SAAS;IACT,aAAa,qBAAqB,MAAM,eAAe;IACxD,CAAC;AAEJ,UAAO,KAAK;;EAGd,IAAI,WAAW;GACb,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,QAAQ,OAAO,iBAAiB,QAC7C,QAAO;GAGT,IAAI,eAAe;AACnB,OAAI,OAAO,cAAc,WAAW,OAAO,cAAc,WAAW,OAAO,cAAc,QACvF,gBAAe,OAAO;AAExB,OAAI,iBAAiB,QAAQ,aAAa,iBAAiB,WAAW,aAAa,cAAc,QAC/F,QAAO;AAGT,UAAO,aAAa,KAAK,QAAQ,KAAK;;EAGxC,IAAI,kBAAkB;GACpB,MAAM,SAAS,cAAc,OAAO,KAAK;AACzC,OAAI,WAAW,KACb,QAAO;GAGT,MAAM,EAAE,SAAS;AACjB,OAAI,CAAC,KACH,QAAO;AAGT,UAAO,KAAK,QAAQ,KAAK;;EAG3B,WAAW,OAAO;GAChB,MAAM,KAAK,KAAK,eAAe,cAAc,KAAK;GAClD,MAAM,EAAE,UAAU;AAClB,OAAI,QAAQ,MAAM,QAAQ,MAAM,OAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,0CAA0C,iBAAiB,CAAC;AAE7G,OAAI,UAAU,MAAM,UAAU,MAAM,OAClC,MAAK,QAAQ,GAAG;QACX;IACL,MAAM,MAAM,MAAM,KAAK,MAAM;AAC7B,SAAK,QAAQ,IAAI,IAAI;;AAEvB,UAAO;;EAGT,WAAW,OAAO;GAChB,MAAM,EAAE,UAAU;AAClB,OAAI,QAAQ,MAAM,SAAS,MAAM,OAC/B,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,0CAA0C,iBAAiB,CAAC;AAE7G,OAAI,UAAU,IAAI;AAChB,QAAI,MAAM,WAAW,EACnB;AAGF,YAAQ,MAAM,SAAS;;GAEzB,MAAM,KAAK,MAAM,KAAK,MAAM;AAC5B,QAAK,QAAQ,GAAG;;;AAIpB,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CCrFD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,aAAa;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW,GAAG,KAAK,CAAC;;GAGzE,WAAW,OAAO;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,0FAA0F,UAAU,OAAO,WAC5G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,QAAQ,QAAQ;MACnC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;cACtC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,cAAc,MAAM,eAAe;AAC9C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;MAC5D;;GAGJ,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,GAAG,GAAG;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,UAAU,EAAE,YAAY,MAAM;GAC9B,iBAAiB,EAAE,YAAY,MAAM;GACrC,OAAO,EAAE,YAAY,MAAM;GAC3B,OAAO,EAAE,YAAY,MAAM;GAC3B,IAAI,EAAE,YAAY,MAAM;GACxB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CC9ZN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,MAAM,WAAA,kBAAA;CACN,MAAM,mBAAA,0BAAA;CAEN,MAAM,EAAE,cAAc,kBAAA,4BAAA;CACtB,MAAM,EAAE,UAAA,cAAA;CAER,IAAM,0BAAN,cAAsC,gBAAgB;EACpD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;GAEtC,MAAM,MAAM,KAAK,0CAA0C,KAAK,eAAe;AAC/E,QAAK,oBAAoB,iBAAiB,WAAW,KAAK,eAAe,EAAE,EAAE;IAC3E,eAAe;IACf,MAAM;IACP,CAAC;;EAIJ,0CAA0C,KAAK;AAC7C,OAAI,CAAC,IAAI,0BAA0B;AACjC,QAAI,IAAI,qCAAqC,KAAA,GAAW;KACtD,MAAM,SAAS,SAAS,WAAW,KAAK,eAAe,EAAE,EAAE,EACzD,SAAS;MACP,aAAa,IAAI;MACjB,UAAU,IAAI;MACf,EACF,CAAC;AACF,YAAO,2BAA2B;AAElC,SAAI,mCAAmC;;AAGzC,UAAM,IAAI;;AAGZ,UAAO;;EAIT,iBAAiB;AACH,QAAK,0CAA0C,KAAK,eAAe,CAC3E,WAAW,KAAK,kBAAkB;;EAGxC,IAAI,UAAU;AACZ,UAAO,KAAK;;EAGd,CAAC,cAAc,MAAM,MAAM,UAAU,eAAe;AAClD,OAAI,CAAC,cACH;AAGF,QAAK,MAAM,SAAS,cAAc,iBAAiB,KAAK,kBAAkB,EAAE;IAC1E,MAAM,YAAY,MAAM,OAAO,KAAK,kBAAkB,gBAAgB,KAAK;AAC3E,SAAK,kBAAkB,YAAY,UAAU;;;;AAKnD,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;AChEmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;;AAGlE,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CCzHN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,MAAM,kCAAA,0CAAA,CACiE;CACvE,MAAM,gBAAA,uBAAA;CACN,MAAM,EAAE,UAAA,iBAAA;CAER,MAAM,eAAA,sBAAA;CACN,MAAM,EAAE,iBAAA,4BAAA;CACR,MAAM,EAAE,YAAY,uBAAuB,cAAA,uBAAA;CAC3C,MAAM,EAAE,qBAAA,cAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CAER,IAAM,0BAAN,cAAsC,gBAAgB;EACpD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,kBAAkB,KAAK,gBAAgB;AAC5C,QAAK,sBAAsB;AAC3B,QAAK,YAAY;AACjB,QAAK,cAAc;AAEnB,QAAK,8BAA8B;AAEnC,QAAK,UAAU;;EAGjB,aAAa;AACX,QAAK,YAAY,iBAAiB,KAAK;AACvC,QAAK,cAAc;;EAGrB,eAAe;AACb,UAAO,KAAK,UAAU,QAAQ,SAAS,KAAK,CAAC,QAAQ,OAAO,KAAK;;EAInE,YAAY;GACV,MAAM,WAAW,KAAK,cAAc;AAEpC,UADa,KAAK,eAAe,MAAM,OAAO,KAC9B,SACd,+BAA+B,UAAU,KAAK,eAAe,MAAM,OAAO,IAAI,GAAG,GACjF;;EAGJ,+BAA+B;AAC7B,SAAM,8BAA8B;AAEpC,OAAI,KAAK,gBAAgB,MACvB,MAAK,YAAY,iBAAiB,KAAK;;EAI3C,IAAI,SAAS;AACX,UAAO,sBAAsB,KAAK;;EAGpC,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,eAAe;AACjB,UAAO,iBAAiB,KAAK;;EAG/B,IAAI,aAAa,KAAK;AACpB,QAAK,cAAc;;EAGrB,IAAI,QAAQ;AACV,UAAO,KAAK,cAAc;;EAG5B,IAAI,MAAM,KAAK;GAEb,MAAM,cAAc,KAAK,cAAc;AACvC,QAAK,YAAY;AACjB,QAAK,cAAc;AAEnB,OAAI,gBAAgB,KAAK,cAAc,EAAE;AACvC,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,iBAAiB;AAClE,SAAK,sBAAsB;;;EAI/B,IAAI,aAAa;AACf,UAAO,KAAK,MAAM;;EAGpB,IAAI,OAAO;AACT,UAAO;;EAGT,uBAAuB;AACrB,oBAAiB,YAAY,UAAU,MAAM,KAAA,GAAW;IAAE,SAAS;IAAM,YAAY;IAAO,CAAC,EAAE,EAAE;;EAGnG,kBAAkB;AAChB,UAAO,OAAO,KAAK,UAAU,WAAW,KAAK,MAAM,SAAS;;EAG9D,SAAS;AACP,QAAK,kBAAkB;AACvB,QAAK,gBAAgB,KAAK,iBAAiB;AAC3C,QAAK,sBAAsB;AAC3B,QAAK,sBAAsB;;EAG7B,IAAI,iBAAiB;AACnB,UAAO,KAAK;;EAGd,IAAI,eAAe,OAAO;AACxB,QAAK,kBAAkB,OAAO,KAAK,IAAI,OAAO,KAAK,cAAc,EAAE,KAAK,oBAAoB;;EAG9F,IAAI,eAAe;AACjB,UAAO,KAAK;;EAGd,IAAI,aAAa,KAAK;AACpB,QAAK,kBAAkB,KAAK,iBAAiB,KAAK,KAAK,oBAAoB;;EAG7E,IAAI,qBAAqB;AACvB,UAAO,KAAK;;EAGd,IAAI,mBAAmB,KAAK;AAC1B,QAAK,kBAAkB,KAAK,iBAAiB,KAAK,eAAe,IAAI;;EAGvE,kBAAkB,OAAO,KAAK,KAAK;AACjC,QAAK,gBAAgB,KAAK,IAAI,KAAK,KAAK,iBAAiB,CAAC;AAC1D,QAAK,kBAAkB,KAAK,IAAI,OAAO,KAAK,cAAc;AAC1D,QAAK,sBAAsB,QAAQ,aAAa,QAAQ,aAAa,MAAM;AAC3E,QAAK,sBAAsB;;EAG7B,aAAa,MAAM,OAAO,KAAK,gBAAgB,YAAY;AACzD,OAAI,UAAU,SAAS,GAAG;AACxB,YAAQ,KAAK;AACb,UAAM,KAAK;cACF,QAAQ,IACjB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,0CAA0C,iBAAiB,CAAC;AAG7G,WAAQ,KAAK,IAAI,OAAO,KAAK,iBAAiB,CAAC;AAC/C,SAAM,KAAK,IAAI,KAAK,KAAK,iBAAiB,CAAC;GAE3C,MAAM,MAAM,KAAK;GACjB,IAAI,WAAW,KAAK;GACpB,IAAI,SAAS,KAAK;AAElB,QAAK,QAAQ,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,IAAI,MAAM,IAAI;GAExD,MAAM,SAAS,QAAQ,KAAK;AAE5B,OAAI,kBAAkB,SACpB,MAAK,kBAAkB,OAAO,OAAO;YAC5B,kBAAkB,QAC3B,MAAK,kBAAkB,OAAO,MAAM;YAC3B,kBAAkB,MAC3B,MAAK,kBAAkB,QAAQ,OAAO;QACjC;IACL,MAAM,QAAQ,KAAK,UAAU,MAAM;AAEnC,QAAI,WAAW,IACb,aAAY;aACH,WAAW,MACpB,YAAW;AAGb,QAAI,SAAS,IACX,WAAU;aACD,SAAS,MAClB,UAAS;AAGX,SAAK,kBAAkB,UAAU,OAAO;;;EAI5C,gDAAgD;AAC9C,UAAO,KAAK,eAAe,MAAM,WAAW;;EAG9C,IAAI,WAAW;AACb,UAAO,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,eAAe,MAAM,WAAW;;EAIpE,IAAI,WAAW;AACb,OAAI,CAAC,KAAK,UAKR,MAAK,YAAY,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE;IAChE,SAAS;IACT,OANY,EACZ,oBAAoB,KAAK,eAAe,MAAM,WAAW,IAAI,KAAK,YAAY,KAAK,UAAU,IAC9F;IAKA,CAAC;AAEJ,UAAO,KAAK;;EAGd,CAAC,cAAc,MAAM,MAAM;AACzB,QAAK,cAAc,KAAK;AACxB,QAAK,YAAY,KAAK;;;AAI1B,OAAM,wBAAwB,WAAW,gCAAgC,UAAU;AAEnF,QAAO,UAAU,EACf,gBAAgB,yBACjB;CAED,SAAS,+BAA+B,MAAM,MAAM;EAClD,IAAI,YAAY;EAChB,IAAI,UAAU,KAAK,QAAQ,KAAK;AAChC,MAAI,YAAY,GACd,WAAU,KAAK;AAGjB,SAAO,YAAY,KAAK,QAAQ;AAE9B,OADmB,UAAU,YACZ,MAAM;AAErB,cAAU,YAAY;AACtB,WAAO,KAAK,MAAM,GAAG,QAAQ,GAAG,OAAO,KAAK,MAAM,QAAQ;;AAG5D,eAAY,UAAU;AACtB,aAAU,KAAK,QAAQ,MAAM,UAAU;AACvC,OAAI,YAAY,GACd,WAAU,KAAK;;AAInB,SAAO;;;;;;CChPT,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,gBAAA,uBAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,sBAAA,sBAAA,CAAmD;CACzD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,kBAAkB,OAAO;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iGAAiG,UAAU,OAAO,WACnH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY,QAAQ;;GAGrC,aAAa,aAAa;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4FAA4F,UAAU,OAAO,WAC9G;IAEH,MAAM,OAAO,EAAE;AACf,YAAQ,UAAU,QAAlB;KACE,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;AAEnB;KACF,KAAK,EACH,OAAM,IAAI,aAAa,UACrB,mEAAmE,UAAU,OAAO,qBACrF;KAEH,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;AAEnB;KACF;MACE;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,iBAAiB,QAAQ;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,WAAW,KAAA,EACb,UAAS,cAAc,QAAQ,cAAc,QAAQ,EACnD,SAAS,0EACV,CAAC;WAEF,UAAS;AAEX,YAAK,KAAK,OAAO;;;AAGvB,WAAO,QAAQ,YAAY,aAAa,GAAG,KAAK;;GAGlD,kBAAkB,OAAO,KAAK;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kGAAkG,UAAU,OAAO,WACpH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,eAAe;AAChF,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,gBAAgB,EAAE;cAC7D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,YAAY,KAAK;cACnE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,aAAa,GAAG;SAEnE,SAAQ,YAAY,kCAAkC,YAAY;cAE5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACtE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,QAAQ,OAAO,SAAS,CAAC;cACpE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC7E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,aAAa,EAAE;cAC1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC3E,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,YAAY,KAAK,MAAM,KAAK,MAChD,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,IAAI,EACN,OAAM,oBAAoB,cAAc,CACtC,sBAAsB,EAAE,6CACxB,iBACD,CAAC;AAGJ,aAAQ,YAAY,+BAA+B,aAAa,OAAO,EAAE,CAAC;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC3E,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,YAAY,KAAK,MAAM,KAAK,MAChD,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,IAAI,EACN,OAAM,oBAAoB,cAAc,CACtC,sBAAsB,EAAE,6CACxB,iBACD,CAAC;AAGJ,aAAQ,YAAY,+BAA+B,aAAa,OAAO,EAAE,CAAC;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACtE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,QAAQ,OAAO,SAAS,CAAC;cACpE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,kBAAkB;cAC9B;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,WAAW;cACvB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,wBAAwB;;;AAGhD,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,mBAAmB,EAAE,YAAY,MAAM;GACvC,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,MAAM,EAAE,YAAY,MAAM;GAC1B,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,cAAc,EAAE,YAAY,MAAM;GAClC,OAAO,EAAE,YAAY,MAAM;GAC3B,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,gBAAgB,EAAE,YAAY,MAAM;GACpC,cAAc,EAAE,YAAY,MAAM;GAClC,oBAAoB,EAAE,YAAY,MAAM;IACvC,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CCvrCN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,yBAAN,cAAqC,gBAAgB;AAErD,QAAO,UAAU,EACf,gBAAgB,wBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,uCAAuC;;CAGrF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,sBAAsB;AAGjE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,2BAA2B,aAAa,YAAY;GACxD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,mBAAmB,WAAW,GACnD,OAAO,cAAc;GAAE,OAAO;GAAsB,cAAc;GAAM,EAC1E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,iCAAA;;;;;CC1GN,MAAM,EAAE,sBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;CACR,MAAM,EAAE,UAAU,iBAAA,oBAAA;CAClB,MAAM,oBAAA,+BAAA;CACN,MAAM,EAAE,qBAAA,eAAA;CAER,MAAM,SAAA,gBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,EAAE,0BAAA,oBAAA;CACR,MAAM,EAAE,sBAAA,kBAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,sBAAA,sBAAA;CACR,MAAM,WAAA,iBAAA;CAEN,SAAS,cAAc,UAAU,OAAO,WAAW;AACjD,MAAI,WAAW;AACb,eAAY,QAAQ,MAAM;AAE1B;;EAGF,MAAM,eAAe,QAAQ,SAAS;EAEtC,SAAS,SAAS;AAChB,eAAY,QAAQ,MAAM;;AAG5B,WAAS,OAAO,KAAK,cAAc,OAAO;;CAG5C,SAAS,WAAW,eAAe,OAAO,UAAU,YAAY;EAC9D,MAAM,iBAAiB,SAAS;EAEhC,SAAS,cAAc,MAAM,UAAU;GACrC,MAAM,cAAc,iBAAiB,MAAM,EACzC,mBAAmB,SAAS,QAAQ,IAAI,eAAe,EACxD,CAAC;GACF,MAAM,MAAM,YAAY,OAAO;GAC/B,MAAM,8BAA8B,YAAY,WAAW,IAAI,UAAU;AAEzE,OAAI,IACF,YAAW,eAAe;AAE5B,cAAW,cAAc,YAAY;AAErC,cAAW,YAAY,kBAAkB,MAAM;IAC7C;IACA;IAGA,iBAAiB,MAAM,UAAU,SAAS;IAC3C,CAAC;GAEF,MAAM,OAAO,iBAAiB,MAAM,WAAW,UAAU;AAEzD,OAAI;AACF,sBAAkB,MAAM,WAAW;YAC5B,OAAO;IACd,MAAM,EAAE,iBAAiB,WAAW;AAEpC,QACE,MAAM,YAAY,SAAS,kBAC3B,MAAM,SAAS,aAAa,cAC5B,WAAW,iBAAiB,OAC5B;KAGA,MAAM,UAAU,WAAW,gBAAgB,wDAAwD,cAAc;AACjH,aAAQ,cAAc,MAAM;AAE5B,YAAO,WAAW,WAAW,SAAS,EACpC,YAAW,YAAY,WAAW,UAAU;AAE9C,gBAAW,YAAY,QAAQ;UAE/B,OAAM;;AAIV,cAAW,OAAO;AAElB,UAAO,IAAI,SAAS,SAAS,WAAW;AACtC,eAAW,iBAAiB,QAAQ,QAAQ;AAC5C,eAAW,iBAAiB,SAAS,OAAO;KAC5C;;AAGJ,iBAAe,MAAM,eAAe;GAClC,SAAS;GACT,QAAQ;GACT,CAAC;;CAGJ,SAAS,kBAAkB,OAAO,WAAW;AAC3C,MAAI,CAAC,UACH,QAAO;AAGT,SAAO,OAAO,KAAK,MAAM,gBAAgB,CAAC,WAAW;;CAGvD,SAAS,UAAU,OAAO,WAAW;AACnC,MAAI,MAAM,iBACR,KAAI,MAAM,iBAAiB,aAEzB,OAAM,iBAAiB,aAAa,OAAO;MAE3C,QAAO,MAAM;EAIjB,MAAM,YAAY,MAAM;EAGxB,IAAI;EACJ,MAAM,eAAe,kBAAkB,OAAO,MAAM;AACpD,MAAI,iBAAiB,GACnB,OAAM,SAAS,cAAc;MAE7B,OAAM,SAAS,cAAc,EAAE,SAAS,UAAU,SAAS,IAAI,KAAA,GAAW,CAAC,IAAI,SAAS,cAAc;EAExG,MAAM,gBAAgB,aAAa,IAAI;EAEvC,MAAM,MAAM,OAAO,aAAa;GAC9B,aAAa;GACb,KAAK,IAAI,WAAW,eAAe,UAAU,MAAM;GACnD,cAAc,UAAU;GACxB,YAAY,UAAU,aAAa;GACnC,kBAAkB,UAAU,aAAa;GACzC,WAAW,UAAU,aAAa;GAClC,UAAU,UAAU;GACpB,WAAW,UAAU;GACrB,MAAM,UAAU;GAChB,UAAU,UAAU;GACpB,YAAY,UAAU,aAAa;GACnC,iBAAiB,UAAU,aAAa;GACxC,mBAAmB,UAAU,aAAa;GAC3C,CAAC;EAEF,MAAM,aAAa,MAAM,mBAAmB,SAAS,eAAe,IAAI,UAAU;EAClF,MAAM,SAAS,UAAU;EACzB,MAAM,gBAAgB,WAAW;AACjC,gBAAc,UAAU;AACxB,gBAAc,OAAO,OAAO;AAC5B,gBAAc,gBAAgB;AAC9B,gBAAc,kBAAkB,OAAO;AAEvC,MAAI,UAAU,YAAY,WAAW,QACnC,eAAc,mBAAmB,oBAAoB,KAAK,cAAc;EAG1E,MAAM,UAAU,kBAAkB,OAAO,UAAU;AAGnD,MAAI,kBAAkB,eAAe;AAEnC,qBAAkB,2CAA2C,WAAW;AACxE,cAAW,MAAM,QAAQ;AAEzB,OAAI,QACF,eAAc,WAAW,OAAO,QAAQ;OAExC,YAAW,iBAAiB,cAAc;AACxC,kBAAc,WAAW,MAAM;KAC/B;aAEK,IAAI,WAAW,cAAc;AAEtC,qBAAkB,2CAA2C,WAAW;AACxE,cAAW,MAAM,QAAQ;GACzB,MAAM,SAAS,sBAAsB,eAAe,IAAI;AACxD,OAAI,OAAO,WAAW,SACpB,YAAW,KAAK,cAAc;AAEhC,OAAI,QACF,eAAc,WAAW,OAAO,QAAQ;OAExC,YAAW,iBAAiB,cAAc;AACxC,kBAAc,WAAW,MAAM;KAC/B;QAGJ,YAAW,eAAe,OAAO,WAAW,WAAW;;CAI3D,SAAS,iBAAiB,UAAU;EAClC,MAAM,EAAE,iBAAiB;AAEzB,MAAI,CAAC,aACH;EAGF,MAAM,SAAS,SAAS,iBAAiB,eAAe;AAGxD,OAAK,IAAI,IAAI,GAAG,IAAI,aAAa,SAAS,EAAE,EAC1C,QAAO,aAAa;AAGtB,eAAa,UAAU,OAAO;AAC9B,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;GACtC,MAAM,QAAQ,OAAO,KAAK,EAAE;AAC5B,UAAO,eAAe,cAAc,GAAG;IACrC,cAAc;IACd,YAAY;IACZ,MAAM;AACJ,YAAO,MAAM;;IAEhB,CAAC;;;CAIN,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,mBAAmB;;EAE1B,cAAc,MAAM,OAAO,QAAQ;AACjC,SAAM,cAAc,MAAM,OAAO,OAAO;AACxC,OAAI,SAAS;QAGP,KAAK,aAAa,KAAK,eAAe,aACxC,WAAU,KAAK;;;EAKrB,UAAU;AACR,SAAM,SAAS;AAEf,OAAI,KAAK,cAMP,MAAK,cAAc,OAAO;AAG5B,oBAAiB,KAAK,eAAe;;EAGvC,UAAU;AACR,SAAM,SAAS;AAEf,OAAI,KAAK,eAAe,aACtB,WAAU,MAAM,KAAK;AAEvB,oBAAiB,KAAK,eAAe;;EAGvC,IAAI,kBAAkB;AACpB,UAAO,KAAK;;EAGd,IAAI,gBAAgB;AAClB,UAAO,KAAK,kBAAkB,KAAK,gBAAgB,eAAe;;;AAItE,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCvQD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC7E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,aAAa,EAAE;cAC1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,WAAW;AAC7D,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,yBAAyB,SAAS,KAAK,kBAAkB,SAAS,cACzE,QAAO,KAAK;AAGd,UAAK,uBAAuB;AAC5B,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,oBAAoB,uBAAuB,UAAU;AAC1D,aAAO,KAAK;;AAEd,UAAK,oBAAoB,YAAY,UAAU,MAAM;AACrD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,WAAW,KAAK;cAClE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,YAAY,GAAG;SAElE,SAAQ,YAAY,kCAAkC,WAAW;cAE3D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,eAAe;AAChF,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,gBAAgB,EAAE;cAC7D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,KAAK,EAAE,YAAY,MAAM;GACzB,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,iBAAiB,EAAE,YAAY,MAAM;GACrC,eAAe,EAAE,YAAY,MAAM;GACnC,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC/fN,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,0BAAA,kCAAA,CAAgE;CAEtE,IAAM,0BAAN,cAAsC,gBAAgB;AAEtD,OAAM,wBAAwB,WAAW,wBAAwB,UAAU;AAE3E,QAAO,UAAU,EACf,gBAAgB,yBACjB;;;;;CCTD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,sBAAA,6BAAA;CACN,MAAM,oCAAA,2CAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,YAAY;GACzD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2FACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,kCAAkC,QAAQ,cAAc,GAAG,EAC7D,SAAS,4FACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8FACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4FACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gGACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kGACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;;AAGtC,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,cAAc,EAAE,YAAY,MAAM;GAClC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,cAAc,EAAE,YAAY,MAAM;GAClC,kBAAkB,EAAE,YAAY,MAAM;GACtC,WAAW,EAAE,YAAY,MAAM;GAC/B,gBAAgB,EAAE,YAAY,MAAM;GACpC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,oBAAoB,EAAE,YAAY,MAAM;GACxC,WAAW,EAAE,YAAY,MAAM;GAC/B,sBAAsB,EAAE,YAAY,MAAM;GAC1C,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CCpsBN,MAAM,uBAAA,+BAAA,CAA0D;CAEhE,IAAM,wBAAN,cAAoC,qBAAqB;AAEzD,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB,CAAC;;GAGtE,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,kBAAkB,KAAK;cACzE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,gBAAgB,GAAG;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,mBAAmB,GAAG;SAEzE,SAAQ,YAAY,kCAAkC,kBAAkB;cAElE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC7E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,aAAa,EAAE;cAC1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,WAAW;AAC7D,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,yBAAyB,SAAS,KAAK,kBAAkB,SAAS,cACzE,QAAO,KAAK;AAGd,UAAK,uBAAuB;AAC5B,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,oBAAoB,uBAAuB,UAAU;AAC1D,aAAO,KAAK;;AAEd,UAAK,oBAAoB,YAAY,UAAU,MAAM;AACrD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,eAAe;AAChF,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,gBAAgB,EAAE;cAC7D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,cAAc;AAC/E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,eAAe,EAAE;cAC5D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,gBAAgB,EAAE,YAAY,MAAM;GACpC,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;GAC1B,iBAAiB,EAAE,YAAY,MAAM;GACrC,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,iBAAiB,EAAE,YAAY,MAAM;GACrC,eAAe,EAAE,YAAY,MAAM;GACnC,OAAO,EAAE,YAAY,MAAM;GAC3B,WAAW,EAAE,YAAY,MAAM;GAC/B,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CC/qBN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,uBAAN,cAAmC,gBAAgB;AAEnD,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCLD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC3XN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,kCAAA,0CAAA,CACiE;CACvE,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,EAAE,cAAA,uBAAA;CAER,IAAM,wBAAN,cAAoC,gBAAgB;EAClD,IAAI,OAAO;AACT,UAAO,UAAU,KAAK;;EAGxB,IAAI,kBAAkB;AACpB,UAAO;;EAGT,gDAAgD;AAC9C,UAAO;;;AAIX,OAAM,sBAAsB,WAAW,gCAAgC,UAAU;AAEjF,QAAO,UAAU,EACf,gBAAgB,uBACjB;;;;;CCvBD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,0BAA0B,aAAa,YAAY;GACvD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,iBAAiB;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY,gBAAgB;;GAG7C,kBAAkB,OAAO;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+FAA+F,UAAU,OAAO,WACjH;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,OAAO;AACzD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,qBAAqB,SAAS,KAAK,kBAAkB,SAAS,cACrE,QAAO,KAAK;AAGd,UAAK,mBAAmB;AACxB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,gBAAgB,uBAAuB,UAAU;AACtD,aAAO,KAAK;;AAEd,UAAK,gBAAgB,YAAY,UAAU,MAAM;AACjD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;;GAG7D,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AACxE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,UAAU,OAAO,SAAS,CAAC;cACtE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AACxE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,UAAU,OAAO,SAAS,CAAC;cACtE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,WAAW;AAC7D,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,yBAAyB,SAAS,KAAK,kBAAkB,SAAS,cACzE,QAAO,KAAK;AAGd,UAAK,uBAAuB;AAC5B,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,oBAAoB,uBAAuB,UAAU;AAC1D,aAAO,KAAK;;AAEd,UAAK,oBAAoB,YAAY,UAAU,MAAM;AACrD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,WAAW;AAC5E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,YAAY,EAAE;cACzD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AAC1E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACT,wBAAwB;KACzB,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,mBAAmB,EAAE,YAAY,MAAM;GACvC,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,iBAAiB,EAAE,YAAY,MAAM;GACrC,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,mBAAmB,EAAE,YAAY,MAAM;GACvC,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,MAAM,EAAE,YAAY,MAAM;GAC1B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CC96BN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,uBAAN,cAAmC,gBAAgB;AAEnD,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCND,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,YAAY;AAC7E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,aAAa,EAAE;cAC1D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCpRN,MAAM,uBAAA,+BAAA,CAA0D;CAEhE,IAAM,uBAAN,cAAmC,qBAAqB;EACtD,IAAI,aAAa;AACf,UAAO;;EAGT,IAAI,cAAc;AAChB,UAAO;;;AAIX,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCdD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,uDAAA,iBAAA,CAC6C;CACnD,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,mBAAA,0BAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,mBAAiB,eAAe,SAAS,aAAa;;AAGxD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,iBAAiB;GAC3D,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACvE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,SAAS,OAAO,SAAS,CAAC;cACrE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,IAAI,QAAQ,QAAQ,YAAY,+BAA+B,SAAS;AACxE,SAAI,UAAU,MAAM;AAClB,cAAQ,qDAAqD,MAAM;AACnE,UAAI,UAAU,QAAQ,SAAS,KAAK,SAAS,WAC3C,QAAO;;AAGX,YAAO;cACC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,WAAW,KAAK,cAAc,KAAK,IAAI,IAAI;AACjD,aAAQ,YAAY,+BAA+B,UAAU,OAAO,SAAS,CAAC;cACtE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,SAAS;AAC3D,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,uBAAuB,SAAS,KAAK,kBAAkB,SAAS,cACvE,QAAO,KAAK;AAGd,UAAK,qBAAqB;AAC1B,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,kBAAkB,uBAAuB,UAAU;AACxD,aAAO,KAAK;;AAEd,UAAK,kBAAkB,YAAY,UAAU,MAAM;AACnD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,UAAU,EAAE;cACvD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,cAAc,KAAK;cACrE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,eAAe,GAAG;SAErE,SAAQ,YAAY,kCAAkC,cAAc;cAE9D;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CCrVN,MAAM,uBAAA,+BAAA,CAA0D;CAEhE,IAAM,uBAAN,cAAmC,qBAAqB;AAExD,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,mBAAA,0BAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,mBAAiB,eAAe,SAAS,aAAa;;AAGxD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,iBAAiB;GAC3D,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;;AAGzG,SAAO,iBAAiB,iBAAiB,WAAW,GACjD,OAAO,cAAc;GAAE,OAAO;GAAoB,cAAc;GAAM,EACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC5GN,MAAM,kBAAA,0BAAA,CAAgD;CAEtD,IAAM,uBAAN,cAAmC,gBAAgB;EACjD,IAAI,aAAa;AACf,UAAO;;;AAIX,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;CCVD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,wDAAA,0BAAA,CACsD;CAC5D,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,yBAAA,oBAAA,CAA+C;CACrD,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,YAAY;GACtD,cAAc;AACZ,WAAO,sDAAsD,cAAc,eAAe,IAAI,OAAO;;GAGvG,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,OAAO;AACxE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,KAAK,GAAG;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,QAAQ,EAAE;cACrD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,OAAO,QAAQ;KACrB,MAAM,QAAQ,KAAK,+BAA+B,MAAM;AACxD,SAAI,UAAU,KACZ,QAAO;KAGT,MAAM,WAAW,KAAK;AACtB,SAAI,KAAK,oBAAoB,SAAS,KAAK,kBAAkB,SAAS,cACpE,QAAO,KAAK;AAGd,UAAK,kBAAkB;AACvB,UAAK,gBAAgB,SAAS;KAE9B,MAAM,YAAY,SAAS,kBAAkB,MAAM;AACnD,SAAI,cAAc,MAAM;AACtB,WAAK,eAAe,uBAAuB,UAAU;AACrD,aAAO,KAAK;;AAEd,UAAK,eAAe,YAAY,UAAU,MAAM;AAChD,YAAO,KAAK;cACJ;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,IAAI,GAAG;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,OAAO,EAAE;cACpD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,UAAU;AAC3E,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,WAAW,EAAE;cACxD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;KACF,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,YAAO,UAAU,OAAO,KAAK;cACrB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,+BAA+B,SAAS,EAAE;cACtD;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,+BAA+B,UAAU,KAAK;cACjE;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,SAAI,EACF,SAAQ,YAAY,+BAA+B,WAAW,GAAG;SAEjE,SAAQ,YAAY,kCAAkC,UAAU;cAE1D;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,MAAM,EAAE,YAAY,MAAM;GAC1B,KAAK,EAAE,YAAY,MAAM;GACzB,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;IAC/B,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACvE,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACpC,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,OAAO;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,CAAC;AACF,SAAO,iBAAiB,kBAAkB;GACxC,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACpC,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,OAAO;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC3WN,IAAM,wBAAN,MAA4B;EAC1B,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,WAAW,YAAY;AAC5B,QAAK,aAAa,YAAY;AAG9B,QAAK,uBAAuB,YAAY;AACxC,QAAK,gCAAgC,YAAY;AACjD,QAAK,gBAAgB,YAAY;;EAGnC,IAAI,UAAU;AACZ,OAAI,CAAC,KAAK,SAAS,eAAe,MAAM,KAAK,WAAW,EAAE;AACxD,QAAI,KAAK,yBAAyB,KAAA,KAC9B,KAAK,SAAS,eAAe,KAAK,+BAA+B,KAAK,qBAAqB,CAC7F,QAAO,KAAK,SAAS,eAAe,KAAK,+BAA+B,KAAK,qBAAqB;aACzF,KAAK,kBAAkB,KAAA,EAChC,QAAO,KAAK;AAEd,WAAO;;AAET,UAAO,KAAK,SAAS,eAAe,MAAM,KAAK,WAAW;;EAG5D,IAAI,QAAQ,MAAM;AAChB,OAAI,CAAC,KAAK,SAAS,eAAe,MAAM,KAAK,WAAW,IACpD,KAAK,yBAAyB,KAAA,KAC9B,KAAK,SAAS,eAAe,MAAM,KAAK,qBAAqB,CAC/D,MAAK,SAAS,eAAe,MAAM,KAAK,sBAAsB,KAAK;OAEnE,MAAK,SAAS,eAAe,MAAM,KAAK,YAAY,KAAK;;EAI7D,IAAI,UAAU;AACZ,UAAO,KAAK;;;AAIhB,SAAQ,iBAAiB;;;;;CCvCzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,sCAAsC;;CAGpF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,qBAAqB;AAGhE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,kBAAkB;GACtB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,kBAAkB,WAAW;GACnD,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAqB,cAAc;IAAM;GACzE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,gCAAA;;;;;CClJN,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,WAAA,oBAAA;CACR,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,cAAA,sBAAA,CAAwC;CAC9C,MAAM,4BAAA,oCAAA,CAAoE;CAC1E,MAAM,0BAAA,kCAAA,CAAgE;CACtE,MAAM,uBAAA,+BAAA,CAA0D;CAEhE,IAAM,iBAAN,cAA6B,YAAY;EACvC,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AACtC,QAAK,uBAAuB;AAC5B,QAAK,4BAA4B;AACjC,QAAK,mBAAmB;;EAI1B,cAAc,MAAM,OAAO,UAAU;AACnC,OAAI,SAAS,WAAW,UAAU,YAAY,CAAC,KAAK,iBAAiB;AACnE,SAAK,kBAAkB;AACvB,SAAK,OAAO,UAAU;AACtB,SAAK,kBAAkB;cACd,KAAK,WAAW,KAAK,CAC9B,MAAK,oBAAoB,KAAK,UAAU,EAAE,CAAC;AAG7C,SAAM,cAAc,MAAM,OAAO,SAAS;;EAG5C,IAAI,kBAAkB;GACpB,IAAI,IAAI,cAAc,OAAO,KAAK;AAClC,UAAO,KAAK,EAAE,iBAAiB,QAAQ;AACrC,QAAI,EAAE,cAAc,MAClB,QAAO;AAET,QAAI,cAAc,OAAO,EAAE;;AAG7B,UAAO;;EAGT,IAAI,kBAAkB;GAGpB,IAAI,IAAI,cAAc,OAAO,KAAK;AAClC,UAAO,KAAK,EAAE,iBAAiB,QAAQ;AACrC,QAAI,EAAE,cAAc,SAAS,EAAE,cAAc,SAC3C,QAAO;AAET,QAAI,cAAc,OAAO,EAAE;;AAE7B,UAAO;;;AAIX,gBAAe,oCAAoB,IAAI,KAAK;AAE5C,OAAM,eAAe,WAAW,0BAA0B,UAAU;AACpE,OAAM,eAAe,WAAW,wBAAwB,UAAU;AAClE,OAAM,eAAe,WAAW,qBAAqB,UAAU;AAE/D,SAAQ,iBAAiB;;;;;CC7DzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,2BAAA,2BAAA,CAA6D;CACnE,MAAM,sBAAA,6BAAA;CACN,MAAM,6BAAA,oCAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,UAAA,iBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,UAAQ,eAAe,SAAS,aAAa;;AAG/C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mBAAmB,aAAa,QAAQ;GAC5C,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,WAAO,QAAQ,YAAY,OAAO;;GAGpC,OAAO;IACL,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,WAAO,QAAQ,YAAY,MAAM;;GAGnC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,cAAc,MAAM,mBAAmB;AAClD,YAAO,yBAAyB,cAAc,EAAE,EAAE;MAChD,SAAS,QAAQ;MACjB,WAAW;MACZ,CAAC;MACF;;GAGJ,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,cAAc,MAAM,eAAe;AAC9C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;MAC5D;;GAGJ,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;IAGjH,MAAM,IAAI,QAAQ;AAClB,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,OAAM,IAAI,aAAa,UAAU,oCAAoC;AAEvE,YAAQ,IAAI,GAAG,WAAW,EAAE;;GAG9B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,oBAAoB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,qBAAqB;;GAG1E,IAAI,kBAAkB,GAAG;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,uBAAuB;;GAG7C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;GAG9D,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,WAAW;;GAGjC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,2BAA2B,QAAQ,cAAc,GAAG,EACtD,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB;AAGF,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,4BAA4B;IAC9B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,6BAA6B;;GAGlF,IAAI,0BAA0B,GAAG;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8FACV,CAAC;AAEJ,YAAQ,YAAY,+BAA+B;;GAGrD,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yFACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,6BAA6B;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,8BAA8B;;GAGnF,IAAI,2BAA2B,GAAG;IAChC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+FACV,CAAC;AAEJ,YAAQ,YAAY,gCAAgC;;GAGtD,IAAI,yBAAyB;IAC3B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,0BAA0B;;GAG/E,IAAI,uBAAuB,GAAG;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2FACV,CAAC;AAEJ,YAAQ,YAAY,4BAA4B;;GAGlD,IAAI,wBAAwB;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,yBAAyB;;GAG9E,IAAI,sBAAsB,GAAG;IAC3B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,2BAA2B;;GAGjD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,uFACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,mBAAmB;;GAGxE,IAAI,gBAAgB,GAAG;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,qBAAqB;;GAG3C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,mFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,sBAAsB;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,uBAAuB;;GAG5E,IAAI,oBAAoB,GAAG;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,yBAAyB;;GAG/C,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,yFACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;IAGjH,MAAM,QAAQ,QAAQ,YAAY,+BAA+B,QAAQ;AACzE,WAAO,UAAU,OAAO,KAAK;;GAG/B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,YAAY,aAAa,GAAG;KAC9B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,+BAA+B,SAAS,EAAE;;GAGhE,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY;cACnB;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,YAAY,QAAQ,GAAG;KACzB,SAAS;KACT,SAAS;KACV,CAAC;AAEF,6DAAyD,aAAa;AACtE,QAAI;AACF,aAAQ,YAAY,cAAc;cAC1B;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,WAAW,WAAW;GAC5C,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,iBAAiB,EAAE,YAAY,MAAM;GACrC,iBAAiB,EAAE,YAAY,MAAM;GACrC,OAAO,EAAE,YAAY,MAAM;GAC3B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,kBAAkB,EAAE,YAAY,MAAM;GACtC,UAAU,EAAE,YAAY,MAAM;GAC9B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,mBAAmB,EAAE,YAAY,MAAM;GACvC,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;GACjC,OAAO,EAAE,YAAY,MAAM;GAC3B,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,kBAAkB,EAAE,YAAY,MAAM;GACtC,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,cAAc,EAAE,YAAY,MAAM;GAClC,kBAAkB,EAAE,YAAY,MAAM;GACtC,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,cAAc,EAAE,YAAY,MAAM;GAClC,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,WAAW,EAAE,YAAY,MAAM;GAC/B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,SAAS,EAAE,YAAY,MAAM;GAC7B,UAAU,EAAE,YAAY,MAAM;GAC9B,UAAU,EAAE,YAAY,MAAM;GAC9B,aAAa,EAAE,YAAY,MAAM;GACjC,2BAA2B,EAAE,YAAY,MAAM;GAC/C,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,gBAAgB,EAAE,YAAY,MAAM;GACpC,WAAW,EAAE,YAAY,MAAM;GAC/B,sBAAsB,EAAE,YAAY,MAAM;GAC1C,4BAA4B,EAAE,YAAY,MAAM;GAChD,wBAAwB,EAAE,YAAY,MAAM;GAC5C,uBAAuB,EAAE,YAAY,MAAM;GAC3C,SAAS,EAAE,YAAY,MAAM;GAC7B,cAAc,EAAE,YAAY,MAAM;GAClC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,eAAe,EAAE,YAAY,MAAM;GACnC,eAAe,EAAE,YAAY,MAAM;GACnC,oBAAoB,EAAE,YAAY,MAAM;GACxC,aAAa,EAAE,YAAY,MAAM;GACjC,iBAAiB,EAAE,YAAY,MAAM;GACrC,cAAc,EAAE,YAAY,MAAM;GAClC,gBAAgB,EAAE,YAAY,MAAM;GACpC,qBAAqB,EAAE,YAAY,MAAM;GACzC,sBAAsB,EAAE,YAAY,MAAM;GAC1C,SAAS,EAAE,YAAY,MAAM;GAC7B,OAAO,EAAE,YAAY,MAAM;GAC3B,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GAClE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;CCjlGN,SAAS,OAAO,OAAO;AACrB,MAAI,OAAO,UAAU,SACnB;AAGF,QAAM,IAAI,UAAU,wDAAwD,QAAQ;;AAEtF,SAAQ,SAAS;CAMjB,SAAS,OAAO,OAAO,YAAY;AACjC,MAAI,OAAO,UAAU,SACnB;AAGF,QAAM,IAAI,UAAU,wDAAwD,QAAQ;;AAEtF,SAAQ,SAAS;CAGjB,SAAS,gCAAgC,UAAU;AACjD,SAAO,SAAS,KAAK,IAAI;;AAE3B,SAAQ,kCAAkC;CAQ1C,SAAS,gCAAgC,UAAU;AACjD,SAAO,SAAS,KAAK,KAAK;;AAE5B,SAAQ,kCAAkC;;;;;CCtC1C,MAAM,eAAA,sBAAA;CACN,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,QAAQ,WAAA,qBAAA;CAKhB,IAAM,OAAN,MAAW;EACT,UAAU,EACR,SACA,WACA,WAAW,SACV;AACD,QAAK,WAAW;AAChB,QAAK,aAAa;AAClB,QAAK,0BAA0B,QAAQ,YAAY,kBAAkB,IAAI,UAAU;AACnF,QAAK,YAAY;AACjB,QAAK,QAAQ,EAAE;AACf,QAAK,WAAW;;EAGlB,IAAI,eAAe;AACjB,UAAO,KAAK,WAAW,KAAK,SAAS;;EAGvC,eAAe;AACb,OAAI,CAAC,KAAK,aACR;GAEF,IAAI,QAAQ,EAAE;AACd,OAAI,KAAK,SAAS,eAAe,MAAM,KAAK,WAAW,CACrD,SAAQ,KAAK,wBAAwB,SAAS,KAAK,SAAS,eAAe,MAAM,KAAK,WAAW,CAAC;AAEpG,OAAI,MAAM,WAAW,KAAK,KAAK,wBAAwB,iBAAiB,KAAA,EACtE,SAAQ,KAAK,wBAAwB,SAAS,KAAK,wBAAwB,aAAa;AAG1F,QAAK,QAAQ;AACb,QAAK,WAAW,KAAK,SAAS;;EAGhC,eAAe;GACb,MAAM,WAAW,KAAK;AACtB,QAAK,SAAS,eAAe,MAAM,KAAK,YAAY,KAAK,wBAAwB,UAAU,SAAS,CAAC;AAErG,QAAK,WAAW,KAAK,SAAS;;EAGhC,CAAC,SAAS,uBAAuB,OAAO;AACtC,QAAK,cAAc;AACnB,UAAO,SAAS,KAAK,QAAQ,KAAK;;EAGpC,KAAK,SAAS,4BAA4B;AACxC,QAAK,cAAc;AACnB,UAAO,KAAK,MAAM,MAAM;;EAG1B,IAAI,SAAS;AACX,QAAK,cAAc;AACnB,UAAO,KAAK,MAAM;;EAGpB,IAAI,gBAAgB;AAClB,QAAK,cAAc;AACnB,UAAO,KAAK,MAAM;;EAGpB,QAAQ;AACN,QAAK,cAAc;AACnB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,yCACA,6BACD,CAAC;AAEJ,QAAK,MAAM,QAAQ,KAAK,MACtB,QAAO,KAAK;AAEd,QAAK,MAAM,SAAS;AACpB,QAAK,cAAc;;EAGrB,WAAW,SAAS;AAClB,QAAK,cAAc;AACnB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,yCACA,6BACD,CAAC;AAEJ,QAAK,MAAM,QAAQ,KAAK,MACtB,QAAO,KAAK;AAEd,QAAK,MAAM,SAAS;AAEpB,UAAO,SAAS,KAAK;AACrB,QAAK,MAAM,KAAK,QAAQ;AACxB,QAAK,cAAc;;EAGrB,QAAQ,OAAO;AACb,QAAK,cAAc;AACnB,OAAI,SAAS,KAAK,MAAM,OACtB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,uBAAuB,MAAM,mDAAmD,KAAK,MAAM,OAAO,KAClG,iBACD,CAAC;AAEJ,UAAO,KAAK,MAAM;;EAGpB,iBAAiB,SAAS,OAAO;AAC/B,QAAK,cAAc;AACnB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,yCACA,6BACD,CAAC;AAGJ,OAAI,QAAQ,KAAK,MAAM,OACrB,SAAQ,KAAK,MAAM;AAErB,QAAK,MAAM,OAAO,OAAO,GAAG,QAAQ;AACpC,UAAO,SAAS,KAAK;AACrB,QAAK,cAAc;AACnB,UAAO;;EAGT,YAAY,SAAS,OAAO;AAC1B,QAAK,cAAc;AACnB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,yCACA,6BACD,CAAC;AAEJ,OAAI,SAAS,KAAK,MAAM,OACtB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,uBAAuB,MAAM,mDAAmD,KAAK,MAAM,OAAO,KAClG,iBACD,CAAC;AAGJ,UAAO,KAAK,MAAM,OAAO;AACzB,QAAK,MAAM,SAAS;AACpB,UAAO,SAAS,KAAK;AACrB,QAAK,cAAc;AACnB,UAAO;;EAGT,WAAW,OAAO;AAChB,QAAK,cAAc;AACnB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,yCACA,6BACD,CAAC;AAEJ,OAAI,SAAS,KAAK,MAAM,OACtB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,uBAAuB,MAAM,mDAAmD,KAAK,MAAM,OAAO,KAClG,iBACD,CAAC;GAEJ,MAAM,OAAO,KAAK,MAAM;AACxB,UAAO,KAAK;AACZ,QAAK,MAAM,OAAO,OAAO,EAAE;AAC3B,QAAK,cAAc;AACnB,UAAO;;EAGT,WAAW,SAAS;AAClB,QAAK,cAAc;AAEnB,QAAK,MAAM,KAAK,QAAQ;AACxB,UAAO,SAAS,KAAK;AACrB,QAAK,cAAc;AACnB,UAAO;;EAGT,CAAC,SAAS,eAAe,OAAO,OAAO;AAErC,QAAK,YAAY,OAAO,MAAM;;EAGhC,CAAC,SAAS,oBAAoB,OAAO,OAAO;AAC1C,QAAK,YAAY,OAAO,MAAM;;;AAIlC,QAAO,UAAU;;;;;CChMjB,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,cAAA,qBAAA;CAEN,IAAM,oBAAN,MAAwB;EACtB,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,gBAAgB;AAErB,QAAK,UAAU,YAAY;;;AAI/B,OAAM,kBAAkB,WAAW,YAAY,UAAU;AAEzD,SAAQ,iBAAiB;;;;;CCbzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,cAAc;GAClB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY,OAAO;;GAGpC,WAAW,SAAS;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;;GAGhD,QAAQ,OAAO;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;;GAG7C,iBAAiB,SAAS,OAAO;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2FAA2F,UAAU,OAAO,WAC7G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;;GAGtD,YAAY,SAAS,OAAO;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sFAAsF,UAAU,OAAO,WACxG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,YAAY,GAAG,KAAK;;GAGjD,WAAW,OAAO;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;;GAGhD,WAAW,SAAS;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;;GAGhD,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,cAAc,WAAW;GAC/C,OAAO,EAAE,YAAY,MAAM;GAC3B,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,kBAAkB,EAAE,YAAY,MAAM;GACtC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,eAAe,EAAE,YAAY,MAAM;IAClC,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;IACnE,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AAEpB,QAAI,OAAO,YAAY,MAAM,uBAAuB,MAAM,EAAE;KAC1D,MAAM,eAAe,OAAO,YAAY,QAAQ,MAAM;AACtD,YAAO;MACL,UAAU;MACV,YAAY;MACZ,cAAc;MACd,OAAO,MAAM,kBAAkB,aAAa;MAC7C;;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,UAAU;IACxD,MAAM,eAAe,KAAK;AAE1B,QAAI,MAAM,qBAAqB,EAAE,EAAE;KACjC,MAAM,QAAQ,MAAM;KACpB,IAAI,eAAe;AAEnB,oBAAe,YAAY,aAAa,cAAc;MACpD,SAAS,uBAAuB,QAAQ;MACxC,SAAS;MACV,CAAC;AAGF,SADiB,CAAC,OAAO,YAAY,MAAM,uBAAuB,MAAM,CAEtE,QAAO,YAAY,MAAM,eAAe,OAAO,aAAa;SAE5D,QAAO,YAAY,MAAM,oBAAoB,OAAO,aAAa;AAGnE,YAAO;;;GAGX,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AAEpB,QAAI,OAAO,YAAY,MAAM,uBAAuB,MAAM,EAAE;KAC1D,MAAM,eAAe,OAAO,YAAY,QAAQ,MAAM;AACtD,eAAU;MACR,UAAU;MACV,YAAY;MACZ,cAAc;MACd,OAAO,MAAM,kBAAkB,aAAa;MAC7C;;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;GAGhD,MAAM,eAAe,KAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;AACjC,QAAI,KAAK,OAAO,KAAK,IACnB,QAAO;IAGT,MAAM,QAAQ,MAAM;IACpB,IAAI,eAAe,KAAK;AAExB,mBAAe,YAAY,aAAa,cAAc;KACpD,SAAS,uBAAuB,QAAQ;KACxC,SAAS;KACV,CAAC;AAGF,QADiB,CAAC,OAAO,YAAY,MAAM,uBAAuB,MAAM,CAEtE,QAAO,YAAY,MAAM,eAAe,OAAO,aAAa;QAE5D,QAAO,YAAY,MAAM,oBAAoB,OAAO,aAAa;AAGnE,WAAO;;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,CAAC,OAAO,YAAY,MAAM,uBAAuB,MAAM;;AAGhE,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,4BAAA;;;;;CC5fN,MAAM,EAAE,wBAAwB,kBAAA,iBAAA;CAChC,MAAM,EAAE,iCAAiC,oCAAA,qBAAA;CACzC,MAAM,gBAAA,uBAAA;CAEN,IAAM,eAAN,MAAmB;EACjB,IAAI,qBAAqB;AACvB,UAAO,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE;IACtD,SAAS;IACT,WAAW;IACZ,CAAC;;EAGJ,IAAI,iBAAiB;AACnB,UAAO,cAAc,WAAW,KAAK,eAAe,EAAE,EAAE;IACtD,SAAS;IACT,WAAW;IACZ,CAAC;;;AAIN,cAAa,oBAAoB,IAAI,IAAI,CAEvC,CACE,sBAAsB;EACpB,UAAU;EACV,WAAW;EACX,cAAc,KAAA;EACf,CACF,EAED,CACE,kBAAkB;EAChB,UAAU;EACV,WAAW;EACX,cAAc,KAAA;EACf,CACF,CACF,CAAC;AAEF,SAAQ,iBAAiB;;;;;CCvCzB,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,iBAAA,yBAAA,CAA8C;CACpD,MAAM,eAAA,uBAAA,CAA0C;CAEhD,IAAM,yBAAN,cAAqC,eAAe;AAEpD,wBAAuB,oBAAoB,IAAI,IAAI,CACjD,GAAG,eAAe,mBAClB,GAAG,aAAa,kBACjB,CAAC;AAEF,OAAM,uBAAuB,WAAW,aAAa,UAAU;AAE/D,SAAQ,iBAAiB;;;;;ACbL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,aAAA,oBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,uCAAuC;;CAGrF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,sBAAsB;AAGjE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,aAAW,eAAe,SAAS,aAAa;;AAGlD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,2BAA2B,aAAa,WAAW;GACvD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,WAAO,MAAM,cAAc,MAAM,4BAA4B;AAC3D,YAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;MACzE;;GAGJ,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,cAAc,MAAM,wBAAwB;AACvD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;MACrE;;;AAGN,SAAO,iBAAiB,mBAAmB,WAAW;GACpD,oBAAoB,EAAE,YAAY,MAAM;GACxC,gBAAgB,EAAE,YAAY,MAAM;IACnC,OAAO,cAAc;IAAE,OAAO;IAAsB,cAAc;IAAM;GAC1E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,iCAAA;;;;;CCzIN,MAAM,eAAA,sBAAA;CAEN,IAAM,oBAAN,MAAwB;EACtB,cAAc;AACZ,QAAK,IAAI;AACT,QAAK,IAAI;AACT,QAAK,QAAQ;AACb,QAAK,SAAS;;;CAIlB,IAAM,wBAAN,MAA4B;EAC1B,YAAY,aAAa;AACvB,QAAK,oBAAoB,YAAY;AACrC,QAAK,sBAAsB,YAAY;AACvC,QAAK,UAAU,YAAY;;EAI7B,aAAa,EAAE,GAAG,GAAG,OAAO,UAAU;AACpC,QAAK,kBAAkB,eAAe,MAAM,KAAK,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS;;EAGvG,IAAI,IAAI;GACN,MAAM,OAAO,KAAK,kBAAkB,eAAe,MAAM,KAAK,oBAAoB;AAClF,UAAO,KAAK,QAAQ,KAAK,CAAC;;EAG5B,IAAI,EAAE,MAAM;GACV,MAAM,EAAE,GAAG,OAAO,WAAW;AAC7B,QAAK,aAAa;IAChB,GAAG;IACH;IACA;IACA;IACD,CAAC;;EAGJ,IAAI,IAAI;GACN,MAAM,OAAO,KAAK,kBAAkB,eAAe,MAAM,KAAK,oBAAoB;AAClF,UAAO,KAAK,QAAQ,KAAK,CAAC;;EAG5B,IAAI,EAAE,MAAM;GACV,MAAM,EAAE,GAAG,OAAO,WAAW;AAC7B,QAAK,aAAa;IAChB;IACA,GAAG;IACH;IACA;IACD,CAAC;;EAGJ,IAAI,QAAQ;GACV,MAAM,OAAO,KAAK,kBAAkB,eAAe,MAAM,KAAK,oBAAoB;AAClF,UAAO,KAAK,QAAQ,KAAK,CAAC;;EAG5B,IAAI,MAAM,UAAU;GAClB,MAAM,EAAE,GAAG,GAAG,WAAW;AACzB,QAAK,aAAa;IAChB;IACA;IACA,OAAO;IACP;IACD,CAAC;;EAGJ,IAAI,SAAS;GACX,MAAM,OAAO,KAAK,kBAAkB,eAAe,MAAM,KAAK,oBAAoB;AAClF,UAAO,KAAK,QAAQ,KAAK,CAAC;;EAG5B,IAAI,OAAO,WAAW;GACpB,MAAM,EAAE,GAAG,GAAG,UAAU;AACxB,QAAK,aAAa;IAChB;IACA;IACA;IACA,QAAQ;IACT,CAAC;;;CAIN,IAAM,cAAN,MAAkB;EAChB,YAAY,cAAc,MAAM,EAAE,WAAW,OAAO,GAAG,gBAAgB,EAAE,EAAE;AACzE,QAAK,gBAAgB;AAErB,QAAK,YAAY;AACjB,OAAI,YAAY,iBACd,MAAK,QAAQ,IAAI,sBAAsB,YAAY;OAEnD,MAAK,QAAQ,IAAI,mBAAmB;;EAIxC,IAAI,IAAI;AACN,UAAO,KAAK,MAAM;;EAGpB,IAAI,EAAE,MAAM;AACV,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,6BAA6B,8BAA8B,CAAC;AAE7G,QAAK,MAAM,IAAI;;EAGjB,IAAI,IAAI;AACN,UAAO,KAAK,MAAM;;EAGpB,IAAI,EAAE,MAAM;AACV,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,6BAA6B,8BAA8B,CAAC;AAE7G,QAAK,MAAM,IAAI;;EAGjB,IAAI,QAAQ;AACV,UAAO,KAAK,MAAM;;EAGpB,IAAI,MAAM,UAAU;AAClB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,6BAA6B,8BAA8B,CAAC;AAE7G,QAAK,MAAM,QAAQ;;EAGrB,IAAI,SAAS;AACX,UAAO,KAAK,MAAM;;EAGpB,IAAI,OAAO,WAAW;AACpB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,6BAA6B,8BAA8B,CAAC;AAE7G,QAAK,MAAM,SAAS;;;AAIxB,SAAQ,iBAAiB;;;;;CC5IzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4BAA4B;;CAG1E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,WAAW;AAGtD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,QAAQ;GACZ,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,EAAE,GAAG;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,QAAI,YAAY,SAAS,GAAG;KAC1B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,OAAO;;GAG7B,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,EAAE,GAAG;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,QAAI,YAAY,SAAS,GAAG;KAC1B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,OAAO;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,QAAI,YAAY,SAAS,GAAG;KAC1B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,WAAW;;GAGjC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,YAAY,SAAS,GAAG;KAC1B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,YAAY;;;AAGpC,SAAO,iBAAiB,QAAQ,WAAW;GACzC,GAAG,EAAE,YAAY,MAAM;GACvB,GAAG,EAAE,YAAY,MAAM;GACvB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAW,cAAc;IAAM;GAC/D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,sBAAA;;;;;CC/MN,MAAM,UAAA,iBAAA;CAGN,MAAM,WAAW;CAGjB,SAAS,aAAa,KAAK;AAGzB,KAAG;AAED,OAAI,OAAO,QAAQ,SACjB;GAGF,IAAI,IAAI;AACR,cAAW;GACX,MAAM,OAAO,aAAa;AAC1B,OAAI,CAAC,KACH;AAEF,OAAI,CAAC,eAAe,CAClB;GAEF,MAAM,OAAO,aAAa;AAC1B,OAAI,CAAC,KACH;AAEF,OAAI,CAAC,eAAe,CAClB;GAEF,MAAM,WAAW,aAAa;AAC9B,OAAI,CAAC,SACH;AAEF,OAAI,CAAC,eAAe,CAClB;GAEF,MAAM,YAAY,aAAa;AAC/B,OAAI,CAAC,UACH;AAGF,cAAW;AACX,OAAI,IAAI,IAAI,OACV;GAIF,MAAM,QAAQ,OAAO,SAAS;AAC9B,OAAI,QAAQ,EACV;GAEF,MAAM,SAAS,OAAO,UAAU;AAChC,OAAI,SAAS,EACX;AAGF,UAAO;IACL,GAAG,OAAO,KAAK;IACf,GAAG,OAAO,KAAK;IACf;IACA;IACD;GAED,SAAS,YAAY;AACnB,WAAO,IAAI,IAAI,UAAU,IAAI,OAAO,IAClC,MAAK;;GAIT,SAAS,cAAc;IACrB,MAAM,WAAW,SAAS,KAAK,IAAI,MAAM,EAAE,CAAC;AAC5C,QAAI,CAAC,SACH;AAEF,SAAK,SAAS,GAAG;AACjB,WAAO,SAAS;;GAGlB,SAAS,gBAAgB;IACvB,MAAM,QAAQ;AACd,eAAW;AACX,QAAI,IAAI,IAAI,UAAU,IAAI,OAAO,IAC/B,MAAK;AAEP,eAAW;AACX,WAAO,IAAI;;WAEN;AAET,SAAO;GAAE,GAAG;GAAG,GAAG;GAAG,OAAO;GAAG,QAAQ;GAAG;;CAG5C,IAAM,sBAAN,MAA0B;EACxB,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,gBAAgB;AACrB,QAAK,WAAW,YAAY;AAC5B,QAAK,aAAa,YAAY;;EAGhC,IAAI,UAAU;AACZ,UAAO,QAAQ,WAAW,KAAK,eAAe,EAAE,EAAE;IAChD,kBAAkB,KAAK;IACvB,oBAAoB,KAAK;IACzB,QAAQ;IACT,CAAC;;EAGJ,IAAI,UAAU;AACZ,UAAO,QAAQ,WAAW,KAAK,eAAe,EAAE,EAAE;IAChD,kBAAkB,KAAK;IACvB,oBAAoB,KAAK;IACzB,QAAQ;IACR,UAAU;IACX,CAAC;;;AAIN,SAAQ,iBAAiB;;;;;ACvHL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,gBAAgB;GACpB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;;AAGN,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCrIN,MAAM,eAAA,sBAAA;CAEN,MAAM,0BAA0B;EAC9B;EAAW;EACX;EAAY;EAAY;EACxB;EAAY;EAAY;EACxB;EAAY;EAAY;EACzB;CACD,MAAM,2BAA2B;EAC/B,WAAW;EACX,SAAS;EACT,MAAM;EACN,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACX;CAED,MAAM,4BAA4B;EAAC;EAAW;EAAQ;EAAQ;CAC9D,MAAM,6BAA6B;EACjC,WAAW;EACX,SAAS;EACT,MAAM;EACN,OAAO;EACR;CAGD,MAAM,4BAA4B;CAElC,IAAM,6BAAN,MAAiC;EAC/B,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,gBAAgB;AACrB,QAAK,WAAW,YAAY;AAC5B,QAAK,YAAY,QAAQ,YAAY,SAAS;;EAGhD,SAAS;GACP,MAAM,YAAY,KAAK,SAAS,eAAe,MAAM,sBAAsB;AAC3E,OAAI,WAAW;IACb,MAAM,QAAQ,0BAA0B,KAAK,UAAU;AACvD,QAAI,MACF,QAAO;KACL,OAAO,MAAM;KACb,aAAa,MAAM,MAAM;KAC1B;;AAGL,UAAO;IACL,OAAO;IACP,aAAa;IACd;;EAGH,IAAI,QAAQ;GACV,MAAM,EAAE,UAAU,KAAK,QAAQ;AAC/B,UAAO,yBAAyB;;EAGlC,IAAI,MAAM,OAAO;AACf,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,2DACA,6BACD,CAAC;GAEJ,MAAM,SAAS,wBAAwB;AACvC,OAAI,WAAW,aAAa,WAAW,KAAA,EACrC,OAAM,IAAI,UAAU,oBAAoB;AAE1C,QAAK,SAAS,eAAe,MAAM,uBAAuB,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,cAAc;;EAGrG,IAAI,cAAc;GAChB,MAAM,EAAE,gBAAgB,KAAK,QAAQ;AACrC,UAAO,2BAA2B;;EAGpC,IAAI,YAAY,OAAO;AACrB,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,2DACA,6BACD,CAAC;GAEJ,MAAM,SAAS,0BAA0B;AACzC,OAAI,WAAW,aAAa,WAAW,KAAA,EACrC,OAAM,IAAI,UAAU,8BAA8B;AAEpD,QAAK,SAAS,eAAe,MAAM,uBAAuB,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,SAAS;;;AAIjG,SAAQ,iBAAiB;;;;;CCjGzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,2CAA2C;;CAGzF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,0BAA0B;AAGrE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB;GAC3B,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,YAAY,kBAAkB,GAAG;KACnC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,WAAW;;GAGjC,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,YAAY,kBAAkB,GAAG;KACnC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,iBAAiB;;;AAGzC,SAAO,iBAAiB,uBAAuB,WAAW;GACxD,OAAO,EAAE,YAAY,MAAM;GAC3B,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAA0B,cAAc;IAAM;GAC7E,iCAAiC;IAAE,OAAO;IAAG,YAAY;IAAM;GAC/D,8BAA8B;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5D,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAI,YAAY;IAAM;GACjE,yBAAyB;IAAE,OAAO;IAAG,YAAY;IAAM;GACvD,sBAAsB;IAAE,OAAO;IAAG,YAAY;IAAM;GACpD,uBAAuB;IAAE,OAAO;IAAG,YAAY;IAAM;GACtD,CAAC;AACF,SAAO,iBAAiB,wBAAwB;GAC9C,iCAAiC;IAAE,OAAO;IAAG,YAAY;IAAM;GAC/D,8BAA8B;IAAE,OAAO;IAAG,YAAY;IAAM;GAC5D,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAG,YAAY;IAAM;GAChE,kCAAkC;IAAE,OAAO;IAAI,YAAY;IAAM;GACjE,yBAAyB;IAAE,OAAO;IAAG,YAAY;IAAM;GACvD,sBAAsB;IAAE,OAAO;IAAG,YAAY;IAAM;GACpD,uBAAuB;IAAE,OAAO;IAAG,YAAY;IAAM;GACtD,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,qCAAA;;;;;CCjMN,MAAM,yBAAA,gCAAA;CAEN,IAAM,qCAAN,MAAyC;EACvC,YAAY,cAAc,MAAM,aAAa;AAC3C,QAAK,gBAAgB;AACrB,QAAK,WAAW,YAAY;;EAG9B,IAAI,UAAU;AACZ,UAAO,uBAAuB,WAAW,KAAK,eAAe,EAAE,EAAE,EAC/D,SAAS,KAAK,UACf,CAAC;;EAGJ,IAAI,UAAU;AACZ,UAAO,uBAAuB,WAAW,KAAK,eAAe,EAAE,EAAE,EAC/D,SAAS,KAAK,UACf,CAAC;;;AAIN,SAAQ,iBAAiB;;;;;ACrBL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mDAAmD;;CAGjG,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kCAAkC;AAG7E,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,+BAA+B;GACnC,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oGACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;;AAGN,SAAO,iBAAiB,+BAA+B,WAAW;GAChE,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAkC,cAAc;IAAM;GACtF,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6CAAA;;;;;CCrIN,MAAM,eAAA,sBAAA;CAEN,IAAM,gBAAN,MAAoB;EAClB,YAAY,cAAc,MAAM,aAAa;AAE3C,QAAK,cAAc,YAAY;AAC/B,QAAK,SAAS;;EAGhB,IAAI,YAAY;AACd,OAAI,KAAK,gBAAgB,KAAA,EACvB,QAAO,KAAK,YAAY;AAE1B,UAAO;;EAGT,eAAe;AACb,OAAI,KAAK,gBAAgB,KAAA,EACvB,MAAK,YAAY,cAAc;;EAInC,eAAe;AACb,OAAI,KAAK,gBAAgB,KAAA,EACvB,MAAK,YAAY,cAAc;;EAInC,IAAI,QAAQ;AACV,QAAK,cAAc;AACnB,UAAO,KAAK;;EAGd,IAAI,MAAM,OAAO;AACf,OAAI,KAAK,UACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,8CACA,6BACD,CAAC;AAEJ,QAAK,SAAS;AACd,QAAK,cAAc;;;AAIvB,SAAQ,iBAAiB;;;;;CC7CzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,8BAA8B;;CAG5E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,aAAa;AAGxD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,UAAU;GACd,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,YAAY,SAAS,GAAG;KAC1B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,WAAW;;;AAGnC,SAAO,iBAAiB,UAAU,WAAW;GAC3C,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAa,cAAc;IAAM;GACjE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,wBAAA;;;;;CCjIN,MAAM,YAAA,mBAAA;CACN,MAAM,UAAA,iBAAA;CACN,MAAM,yBAAA,iCAAA,CAA8D;CACpE,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,iBAAA,mBAAA;CAER,IAAM,oBAAN,cAAgC,uBAAuB;EACrD,kBAAkB;AAChB,UAAO,UAAU,WAAW,KAAK,eAAe,EAAE,EAAE,EAAE,CAAC;;EAGzD,gBAAgB;AACd,UAAO,QAAQ,WAAW,KAAK,eAAe,EAAE,EAAE,EAAE,CAAC;;EAMvD,eAAe,WAAW;AACxB,QAAK,MAAM,QAAQ,cAAc,aAAa,KAAK,CACjD,KAAI,KAAK,aAAa,gBAAgB,KAAK,eAAe,MAAM,KAAK,KAAK,UACxE,QAAO;AAGX,UAAO;;EAGT,gBAAgB;AACd,UAAO;;EAET,kBAAkB;EAClB,qBAAqB;EACrB,cAAc;;AAGhB,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;CCrCD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,yBAAA,yBAAA,CAAyD;CAC/D,MAAM,wCAAA,wCAAA,CAAuF;CAC7F,MAAM,sBAAA,6BAAA;CACN,MAAM,oCAAA,2CAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,qBAAA,4BAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,qBAAmB,eAAe,SAAS,aAAa;;AAG1D,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,mBAAmB;GAC1D,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,kBAAkB;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB,CAAC;;GAGvE,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe,CAAC;;GAGrE,eAAe,WAAW;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wFAAwF,UAAU,OAAO,WAC1G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe,GAAG,KAAK,CAAC;;GAG7E,cAAc,qBAAqB;IACjC,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,cAAc,GAAG,KAAK;;GAGnD,gBAAgB,iBAAiB;IAC/B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,gBAAgB,GAAG,KAAK;;GAGrD,qBAAqB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY,oBAAoB;;GAGjD,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY,aAAa;;GAG1C,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,uBAAuB,cAAc,EAAE,EAAE;MAC9C,SAAS,QAAQ;MACjB,WAAW;MACZ,CAAC;MACF;;GAGJ,IAAI,sBAAsB;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,cAAc,MAAM,6BAA6B;AAC5D,YAAO,sCAAsC,cAAc,EAAE,EAAE,EAC7D,SAAS,QAAQ,aAClB,CAAC;MACF;;GAGJ,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;GAGtE,IAAI,cAAc,GAAG;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,qFACV,CAAC;AAEJ,YAAQ,YAAY,mBAAmB;;GAGzC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,kCAAkC,QAAQ,cAAc,GAAG,EAC7D,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,oFACV,CAAC;AAEJ,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,oBAAoB;;GAGzE,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,wFACV,CAAC;AAEJ,YAAQ,YAAY,sBAAsB;;GAG5C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,kBAAkB;;GAGvE,IAAI,eAAe,GAAG;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,sFACV,CAAC;AAEJ,YAAQ,YAAY,oBAAoB;;GAG1C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;GAGpC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,kFACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,iFACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,uBAAuB;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,wBAAwB;;GAG7E,IAAI,qBAAqB,GAAG;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4FACV,CAAC;AAEJ,YAAQ,YAAY,0BAA0B;;GAGhD,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;GAGjE,IAAI,SAAS,GAAG;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,cAAc;;;AAGtC,SAAO,iBAAiB,cAAc,WAAW;GAC/C,iBAAiB,EAAE,YAAY,MAAM;GACrC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,eAAe,EAAE,YAAY,MAAM;GACnC,iBAAiB,EAAE,YAAY,MAAM;GACrC,oBAAoB,EAAE,YAAY,MAAM;GACxC,aAAa,EAAE,YAAY,MAAM;GACjC,SAAS,EAAE,YAAY,MAAM;GAC7B,qBAAqB,EAAE,YAAY,MAAM;GACzC,cAAc,EAAE,YAAY,MAAM;GAClC,eAAe,EAAE,YAAY,MAAM;GACnC,gBAAgB,EAAE,YAAY,MAAM;GACpC,cAAc,EAAE,YAAY,MAAM;GAClC,kBAAkB,EAAE,YAAY,MAAM;GACtC,WAAW,EAAE,YAAY,MAAM;GAC/B,gBAAgB,EAAE,YAAY,MAAM;GACpC,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;GAChC,oBAAoB,EAAE,YAAY,MAAM;GACxC,WAAW,EAAE,YAAY,MAAM;GAC/B,sBAAsB,EAAE,YAAY,MAAM;GAC1C,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CC/wBN,MAAM,yBAAA,iCAAA,CAA8D;CAEpE,IAAM,kBAAN,cAA8B,uBAAuB;AAErD,QAAO,UAAU,EACf,gBAAgB,iBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,qBAAA,4BAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,qBAAmB,eAAe,SAAS,aAAa;;AAG1D,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,oBAAoB,aAAa,mBAAmB;GACxD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,YAAY,WAAW,GAC5C,OAAO,cAAc;GAAE,OAAO;GAAe,cAAc;GAAM,EACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CC1GN,MAAM,yBAAA,iCAAA,CAA8D;CAEpE,IAAM,qBAAN,cAAiC,uBAAuB;AAExD,QAAO,UAAU,EACf,gBAAgB,oBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,qBAAA,4BAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,qBAAmB,eAAe,SAAS,aAAa;;AAG1D,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB,aAAa,mBAAmB;GAC3D,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,eAAe,WAAW,GAC/C,OAAO,cAAc;GAAE,OAAO;GAAkB,cAAc;GAAM,EACtE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6BAAA;;;;;CC1GN,MAAM,iBAAA,yBAAA,CAA8C;CAEpD,IAAM,qBAAN,cAAiC,eAAe;AAEhD,QAAO,UAAU,EACf,gBAAgB,oBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,aAAA,oBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,aAAW,eAAe,SAAS,aAAa;;AAGlD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB,aAAa,WAAW;GACnD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,eAAe,WAAW,GAC/C,OAAO,cAAc;GAAE,OAAO;GAAkB,cAAc;GAAM,EACtE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6BAAA;;;;;CC1GN,MAAM,iBAAA,yBAAA,CAA8C;CAEpD,IAAM,yBAAN,cAAqC,eAAe;AAEpD,QAAO,UAAU,EACf,gBAAgB,wBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,aAAA,oBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,uCAAuC;;CAGrF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,sBAAsB;AAGjE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,aAAW,eAAe,SAAS,aAAa;;AAGlD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,2BAA2B,aAAa,WAAW;GACvD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,mBAAmB,WAAW,GACnD,OAAO,cAAc;GAAE,OAAO;GAAsB,cAAc;GAAM,EAC1E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,iCAAA;;;;;CC1GN,MAAM,iBAAA,yBAAA,CAA8C;CAEpD,IAAM,sBAAN,cAAkC,eAAe;AAEjD,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,aAAA,oBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,aAAW,eAAe,SAAS,aAAa;;AAGlD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,WAAW;GACpD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,gBAAgB,WAAW,GAChD,OAAO,cAAc;GAAE,OAAO;GAAmB,cAAc;GAAM,EACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC1GN,MAAM,yBAAA,iCAAA,CAA8D;CAEpE,IAAM,uBAAN,cAAmC,uBAAuB;AAE1D,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,yBAAA,yBAAA,CAAyD;CAC/D,MAAM,wCAAA,wCAAA,CAAuF;CAC7F,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,qBAAA,4BAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,qBAAmB,eAAe,SAAS,aAAa;;AAG1D,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,mBAAmB;GAC7D,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,uBAAuB,cAAc,EAAE,EAAE;MAC9C,SAAS,QAAQ;MACjB,WAAW;MACZ,CAAC;MACF;;GAGJ,IAAI,sBAAsB;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,WAAO,MAAM,cAAc,MAAM,6BAA6B;AAC5D,YAAO,sCAAsC,cAAc,EAAE,EAAE,EAC7D,SAAS,QAAQ,aAClB,CAAC;MACF;;;AAGN,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,SAAS,EAAE,YAAY,MAAM;GAC7B,qBAAqB,EAAE,YAAY,MAAM;IACxC,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC/IN,MAAM,yBAAA,iCAAA,CAA8D;CAEpE,IAAM,uBAAN,cAAmC,uBAAuB;AAE1D,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;ACNmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,qBAAA,4BAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,qBAAmB,eAAe,SAAS,aAAa;;AAG1D,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,yBAAyB,aAAa,mBAAmB;GAC7D,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,iBAAiB,WAAW,GACjD,OAAO,cAAc;GAAE,OAAO;GAAoB,cAAc;GAAM,EACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC1GN,MAAM,oBAAoB,IAAI,IAAI,CAAC,eAAe,SAAS,CAAC;AAC5D,SAAQ,oBAAoB;AAE5B,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAClF,MAAM,SAAS,GAAG;AAClB,MAAI,CAAC,kBAAkB,IAAI,OAAO,CAChC,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,IAAI,OAAO,mDAAmD;AAE5G,SAAO;;;;;;CCRT,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,aAAA,oBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,WAAW,QAAQ,cAAc,OAAO,EAAE,SAAS,UAAU,8BAA8B,CAAC;AAEpG,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KAAE,SAAS,UAAU;KAA2B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;;;;;;;;;AC9BT,SAAQ,qBAAoB,WAAU;EACpC,MAAM,cAAc,OAAO,QAAQ,KAAK,QAAQ,MAAM,IAAI,YAAY,EAAE;EACxE,MAAM,SAAS,IAAI,WAAW,YAAY;EAC1C,IAAI,SAAS;AACb,OAAK,MAAM,OAAO,QAAQ;GACxB,MAAM,QAAQ,eAAe,aAAa,MAAM,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,WAAW;AAC1G,UAAO,IAAI,OAAO,OAAO;AACzB,aAAU,IAAI;;AAEhB,SAAO;;;;;;;;;;;;;;;AAgBT,SAAQ,kCAAkC,aAAa,aAAa;EAClE,MAAM,QAAQ,IAAI,SAAS,YAAY,YAAY,WAAW;AACjD,MAAI,SAAS,WAAW,MAAM,CACtC,IAAI,IAAI,SAAS,WAAW,YAAY,CAAC;AAC9C,SAAO;;;;;;;;;;;;;;;;AAiBT,SAAQ,+CAA+C,aAAa,aAAa;AAC/E,MAAI,CAAC,SAAS,YAAY,UAAU,SAClC,QAAO,QAAQ,+BAA+B,aAAa,SAAS;AAGtE,SAAO,SAAS,YAAY,UAAU,SAAS,KAAK,YAAY;;;;;;CC5DlE,MAAM,EAAE,YAAY,eAAA,kBAAA;CACpB,MAAM,OAAA,cAAA;CACN,MAAM,EAAE,kBAAA,iBAAA;CACR,MAAM,EAAE,mBAAmB,mCAAA,qBAAA;CAE3B,SAAS,2BAA2B,GAAG;AAGrC,SAAO,EAAE,QAAQ,eAAe,KAAK;;AAGvC,SAAQ,iBAAiB,MAAM,SAAS;EACtC,YAAY,cAAc,CAAC,OAAO,aAAa,EAAE,8BAA8B,EAAE,EAAE;AACjF,QAAK,gBAAgB;AAErB,QAAK,OAAO,WAAW;AACvB,OAAI,mBAAmB,KAAK,KAAK,KAAK,CACpC,MAAK,OAAO;OAEZ,MAAK,OAAO,KAAK,KAAK,aAAa;AAmBrC,OAAI,2BAA2B;AAC7B,SAAK,SAAS,IAAI,WAAW,0BAA0B;AACvD;;GAGF,MAAM,SAAS,EAAE;AACjB,OAAI,UAAU,KAAA,EACZ,MAAK,MAAM,QAAQ,OAAO;IACxB,IAAI;AACJ,QAAI,cAAc,KAAK,CAErB,SAAQ,IAAI,WAAW,KAAK;aACnB,YAAY,OAAO,KAAK,CAEjC,SAAQ;aACC,KAAK,OAAO,KAAK,CAE1B,SAAQ,KAAK;SACR;KACL,IAAI,IAAI;AACR,SAAI,WAAW,YAAY,SACzB,KAAI,2BAA2B,EAAE;AAEnC,aAAQ,WAAW,EAAE;;AAEvB,WAAO,KAAK,MAAM;;AAGtB,QAAK,SAAS,kBAAkB,OAAO;;EAGzC,IAAI,OAAO;AACT,UAAO,KAAK,OAAO;;EAGrB,cAAc;GACZ,MAAM,KAAK,+BAA+B,KAAK,OAAO,QAAQ,KAAK,cAAc;AACjF,UAAO,KAAK,cAAc,QAAQ,QAAQ,GAAG;;EAG/C,QAAQ;GACN,MAAM,KAAK,+BAA+B,KAAK,OAAO,QAAQ,KAAK,cAAc;AACjF,UAAO,KAAK,cAAc,QAAQ,QAAQ,IAAI,KAAK,cAAc,WAAW,GAAG,CAAC;;EAGlF,OAAO;AACL,UAAO,KAAK,cAAc,QAAQ,QAAQ,WAAW,KAAK,OAAO,CAAC;;EAGpE,MAAM,OAAO,KAAK,aAAa;GAC7B,MAAM,EAAE,SAAS;GAEjB,IAAI,eAAe,aAAa;AAEhC,OAAI,UAAU,KAAA,EACZ,iBAAgB;YACP,QAAQ,EACjB,iBAAgB,KAAK,IAAI,OAAO,OAAO,EAAE;OAEzC,iBAAgB,KAAK,IAAI,OAAO,KAAK;AAEvC,OAAI,QAAQ,KAAA,EACV,eAAc;YACL,MAAM,EACf,eAAc,KAAK,IAAI,OAAO,KAAK,EAAE;OAErC,eAAc,KAAK,IAAI,KAAK,KAAK;AAGnC,OAAI,gBAAgB,KAAA,EAClB,uBAAsB;OAItB,uBAAsB;GAGxB,MAAM,OAAO,KAAK,IAAI,cAAc,eAAe,EAAE;GAErD,MAAM,eAAe,KAAK,OAAO,MAAM,eAAe,gBAAgB,KAAK;GAE3E,MAAM,OAAO,KAAK,WAAW,KAAK,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC,EAAE,EAAE,CAAC;AACzF,QAAK,SAAS;AACd,UAAO;;;;;;;CCxHX,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,kBAAA,yBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,yBAAyB;;CAGvE,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,QAAQ;AAGnD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,KAAK;GACT,cAAc;IACZ,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,CAAC,MAAM,SAAS,OAAO,CACzB,OAAM,IAAI,aAAa,UAAU,qEAA0E;UACtG;MACL,MAAM,IAAI,EAAE;MACZ,MAAM,MAAM;AACZ,WAAK,IAAI,YAAY,KAAK;AACxB,WAAI,QAAQ,GAAG,SAAS,CACtB,YAAW,MAAM,eAAe,SAAS;gBAChC,MAAM,cAAc,SAAS,CACtC,YAAW,YAAY,eAAe,UAAU;QAC9C,SAAS;QACT,SAAS;QACV,CAAC;gBACO,YAAY,OAAO,SAAS,CACrC,YAAW,YAAY,mBAAmB,UAAU;QAClD,SAAS;QACT,SAAS;QACV,CAAC;WAEF,YAAW,YAAY,aAAa,UAAU;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AAEJ,SAAE,KAAK,SAAS;;AAElB,eAAS;;AAGb,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,gBAAgB,QAAQ,cAAc,QAAQ,EAAE,SAAS,2CAA2C,CAAC;AAC9G,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,oEAAoE;IAEvG,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACT,OAAO;MACR,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACT,OAAO;MACR,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,MAAM,GAAG,KAAK,CAAC;;GAGpE,OAAO;AACL,QAAI;KACF,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,mEAAmE;AAGtG,YAAO,MAAM,kBAAkB,QAAQ,YAAY,MAAM,CAAC;aACnD,GAAG;AACV,YAAO,aAAa,QAAQ,OAAO,EAAE;;;GAIzC,cAAc;AACZ,QAAI;KACF,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,YAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,CAAC;aAC1D,GAAG;AACV,YAAO,aAAa,QAAQ,OAAO,EAAE;;;GAIzC,QAAQ;AACN,QAAI;KACF,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,oEAAoE;AAGvG,YAAO,MAAM,kBAAkB,QAAQ,YAAY,OAAO,CAAC;aACpD,GAAG;AACV,YAAO,aAAa,QAAQ,OAAO,EAAE;;;GAIzC,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,KAAK,WAAW;GACtC,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,aAAa,EAAE,YAAY,MAAM;GACjC,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAQ,cAAc;IAAM;GAC5D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,mBAAA;;;;;CC1PN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,OAAA,cAAA;CACN,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,KAAK,QAAQ,cAAc,OAAO,EAAE,SAAS,UAAU,2BAA2B,CAAC;AAE3F,QAAI,OAAO;SAEX,OAAM,IAAI,aAAa,UAAU,sCAAsC;;EAI3E;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA+B,SAAS;KAAc,CAAC;AAEjH,QAAI,OAAO;;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCxCT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,IAAM,gBAAN,cAA4B,UAAU;AAGtC,eAAc,cAAc;EAC1B,WAAW;EACX,UAAU;EACX;AAED,QAAO,UAAU,EACf,gBAAgB,eACjB;;;;;CCXD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,gBAAA,uBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,8BAA8B;;CAG5E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,aAAa;AAGxD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,kBAAkB,aAAa,MAAM;GACzC,YAAY,MAAM,eAAe;AAC/B,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mEAAmE,UAAU,OAAO,WACrF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,cAAc,QAAQ,cAAc,QAAQ,EACnD,SAAS,gDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,MAAM,cAAc,MAAM,cAAc;AAC7C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,QAAQ;MAC3D;;GAGJ,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY;;;AAGnE,SAAO,iBAAiB,UAAU,WAAW;GAC3C,MAAM,EAAE,YAAY,MAAM;GAC1B,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAa,cAAc;IAAM;GACjE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,wBAAA;;;;;CC1JN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,kBAAkB,OAAO;KAC3C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC7DT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,iBAAA,wBAAA;CAEN,IAAM,iBAAN,cAA6B,UAAU;AACvC,gBAAe,cAAc,eAAe,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEzE,SAAQ,iBAAiB;;;;;CCPzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,iBAAA,wBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mBAAmB,aAAa,MAAM;GAC1C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mEAAmE,UAAU,OAAO,WACrF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,eAAe,QAAQ,cAAc,QAAQ,EACpD,SAAS,iDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,WAAW,WAAW;GAC5C,UAAU,EAAE,YAAY,MAAM;GAC9B,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GAClE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;CCrKN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC/BT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,0BAAA,iCAAA;CAGN,IAAM,0BAAN,cAAsC,UAAU;EAC9C,wBAAwB,MAAM,SAAS,YAAY,WAAW;AAC5D,OAAI,KAAK,cACP;AAGF,QAAK,UAAU,MAAM,SAAS,WAAW;AACzC,QAAK,YAAY;;;AAGrB,yBAAwB,cAAc,wBAAwB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE3F,SAAQ,iBAAiB;;;;;CCjBzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,0BAAA,iCAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,wCAAwC;;CAGtF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,uBAAuB;AAGlE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,4BAA4B,aAAa,MAAM;GACnD,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,wBAAwB,QAAQ,cAAc,QAAQ,EAC7D,SAAS,0DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,oBAAoB,WAAW;GACrD,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAuB,cAAc;IAAM;GAC3E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,kCAAA;;;;;CC7IN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,OAAO,OAAO;KAAE,SAAS,UAAU;KAA4B,SAAS;KAAc,CAAC;AAE3G,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC7BT,MAAM,YAAA,oBAAA,CAAuC;CAE7C,MAAM,oBAAA,2BAAA;CAEN,IAAM,oBAAN,cAAgC,UAAU;AAC1C,mBAAkB,cAAc,kBAAkB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE/E,SAAQ,iBAAiB;;;;;CCNzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,oBAAA,2BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,MAAM;GAC7C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sEAAsE,UAAU,OAAO,WACxF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,kBAAkB,QAAQ,cAAc,QAAQ,EACvD,SAAS,oDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,cAAc,WAAW;GAC/C,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CC7IN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA8B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,OAAM,IAAI,aAAa,UAAU,qDAAqD;;EAI1F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,OAAO,OAAO;KAAE,SAAS,UAAU;KAA6B,SAAS;KAAc,CAAC;AAE5G,QAAI,OAAO;;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCvCT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,IAAM,4BAAN,cAAwC,UAAU;AAGlD,2BAA0B,cAAc;EACtC,WAAW;EACX,QAAQ,KAAA;EACT;AAED,QAAO,UAAU,EACf,gBAAgB,2BACjB;;;;;CCXD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,4BAAA,mCAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,0CAA0C;;CAGxF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,yBAAyB;AAGpE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,8BAA8B,aAAa,MAAM;GACrD,YAAY,MAAM,eAAe;AAC/B,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,+EAA+E,UAAU,OAAO,WACjG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,0BAA0B,QAAQ,cAAc,QAAQ,EAC/D,SAAS,4DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,sBAAsB,WAAW;GACvD,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAyB,cAAc;IAAM;GAC7E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,oCAAA;;;;;CC1JN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,sBAAsB,OAAO;KAC/C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,sBAAsB,OAAO;KAC/C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC7DT,MAAM,YAAA,oBAAA,CAAoC;CAE1C,MAAM,oBAAA,2BAAA;CAEN,IAAM,oBAAN,cAAgC,UAAU;AAG1C,mBAAkB,cAAc,kBAAkB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAE/E,QAAO,UAAU,EACf,gBAAgB,mBACjB;;;;;CCXD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,oBAAA,2BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI;EAAC;EAAU;EAAmB;EAAe,CAAC;AAEtE,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB,aAAa,MAAM;GAC7C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sEAAsE,UAAU,OAAO,WACxF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,kBAAkB,QAAQ,cAAc,QAAQ,EACvD,SAAS,oDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,mBAAmB;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,cAAc,WAAW;GAC/C,kBAAkB,EAAE,YAAY,MAAM;GACtC,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CCvKN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,YAAA,mBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,YAAU,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAE9D;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,UAAU,OAAO;KACnC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC9DT,MAAM,YAAA,oBAAA,CAAoC;CAC1C,MAAM,sBAAA,6BAAA;CAEN,IAAM,sBAAN,cAAkC,UAAU;AAC5C,qBAAoB,cAAc,oBAAoB,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEnF,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCPD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,sBAAA,6BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,QAAA,eAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,QAAM,eAAe,SAAS,aAAa;;AAG7C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,wBAAwB,aAAa,MAAM;GAC/C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wEAAwE,UAAU,OAAO,WAC1F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,oBAAoB,QAAQ,cAAc,QAAQ,EACzD,SAAS,sDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,iBAAiB;;;AAGxE,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;GACjC,eAAe,EAAE,YAAY,MAAM;IAClC,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CCvKN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,cAAA,qBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,cAAY,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAEhE;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,SAAQ;QAER,SAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEJ,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCjET,MAAM,cAAA,sBAAA,CAAwC;CAC9C,MAAM,iBAAA,wBAAA;CAGN,IAAM,iBAAN,cAA6B,YAAY;AACzC,gBAAe,cAAc,eAAe,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEzE,QAAO,UAAU,EACf,gBAAgB,gBACjB;;;;;CCRD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,iBAAA,wBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,UAAA,iBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,UAAQ,eAAe,SAAS,aAAa;;AAG/C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mBAAmB,aAAa,QAAQ;GAC5C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mEAAmE,UAAU,OAAO,WACrF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,eAAe,QAAQ,cAAc,QAAQ,EACpD,SAAS,iDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,WAAW,WAAW;GAC5C,MAAM,EAAE,YAAY,MAAM;GAC1B,aAAa,EAAE,YAAY,MAAM;GACjC,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GAClE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;CCrKN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,iBAAA,wBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,iBAAe,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAEnE;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,iBAAiB,OAAO;KAC1C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA6B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA6B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,UAAU,OAAO;KAAE,SAAS,UAAU;KAA6B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCnET,MAAM,iBAAA,yBAAA,CAA8C;CAEpD,MAAM,iBAAA,wBAAA;CAEN,IAAM,iBAAN,cAA6B,eAAe;AAC5C,gBAAe,cAAc,eAAe,QAAQ,KAAA,GAAW,KAAA,EAAU;AAEzE,QAAO,UAAU,EACf,gBAAgB,gBACjB;;;;;CCTD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,iBAAA,wBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,aAAA,oBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,aAAW,eAAe,SAAS,aAAa;;AAGlD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mBAAmB,aAAa,WAAW;GAC/C,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mEAAmE,UAAU,OAAO,WACrF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,eAAe,QAAQ,cAAc,QAAQ,EACpD,SAAS,iDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,WAAW,WAAW;GAC5C,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GACjE,iBAAiB;IAAE,OAAO;IAAM,YAAY;IAAM;GAClD,gBAAgB;IAAE,OAAO;IAAM,YAAY;IAAM;GACjD,gBAAgB;IAAE,OAAO;IAAM,YAAY;IAAM;GAClD,CAAC;AACF,SAAO,iBAAiB,YAAY;GAClC,iBAAiB;IAAE,OAAO;IAAM,YAAY;IAAM;GAClD,gBAAgB;IAAE,OAAO;IAAM,YAAY;IAAM;GACjD,gBAAgB;IAAE,OAAO;IAAM,YAAY;IAAM;GAClD,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;CC3LN,IAAM,cAAN,MAAkB;AAIlB,aAAY,UAAU,UAAU;AAEhC,SAAQ,iBAAiB;;;;;ACPL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4BAA4B;;CAG1E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,WAAW;AAGtD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,QAAQ;GACZ,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,QAAQ,WAAW;GACzC,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAW,cAAc;IAAM;GAC/D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,sBAAA;;;;;ACjHN,SAAQ,iBAAiB,MAAM,aAAa;EAE1C,oBAAoB;EAEpB,4BAA4B;;;;;;ACLV,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,6BAA6B;;CAG3E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,YAAY;AAGvD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,SAAS;GACb,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,oBAAoB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY,mBAAmB;;GAGhD,4BAA4B;IAC1B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY,2BAA2B;;;AAG1D,SAAO,iBAAiB,SAAS,WAAW;GAC1C,mBAAmB,EAAE,YAAY,MAAM;GACvC,2BAA2B,EAAE,YAAY,MAAM;IAC9C,OAAO,cAAc;IAAE,OAAO;IAAY,cAAc;IAAM;GAChE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,uBAAA;;;;;CC9HN,IAAM,aAAN,MAAiB;AAEjB,YAAW,UAAU,aAAa;AAClC,YAAW,UAAU,cAAc;AACnC,YAAW,UAAU,QAAQ;AAC7B,YAAW,UAAU,SAAS;AAC9B,YAAW,UAAU,aAAa;AAClC,YAAW,UAAU,aAAa;AAElC,SAAQ,iBAAiB;;;;;ACVL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,2BAA2B;;CAGzE,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,UAAU;AAGrD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,OAAO;GACX,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,OAAO,WAAW;GACxC,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;GACjC,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,YAAY,EAAE,YAAY,MAAM;GAChC,YAAY,EAAE,YAAY,MAAM;IAC/B,OAAO,cAAc;IAAE,OAAO;IAAU,cAAc;IAAM;GAC9D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,qBAAA;;;;;CCjLN,MAAM,kBAAA,0BAAA,CAAwD;CAE9D,IAAM,kBAAN,cAA8B,gBAAgB;EAC5C,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,aAAa,YAAY;AAC9B,QAAK,mBAAmB,YAAY;;EAGtC,MAAM;AACJ,UAAO,YAAY,KAAK,GAAG,KAAK;;EAGlC,SAAS;AACP,UAAO,EAAE,YAAY,KAAK,YAAY;;;AAI1C,SAAQ,iBAAiB;;;;;ACnBL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,oBAAoB,aAAa,YAAY;GACjD,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,MAAM;IACJ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,WAAO,MAAM,kBAAkB,QAAQ,YAAY,KAAK,CAAC;;GAG3D,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,QAAQ,YAAY,QAAQ;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;;AAGrE,SAAO,iBAAiB,YAAY,WAAW;GAC7C,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,YAAY,EAAE,YAAY,MAAM;IAC/B,OAAO,cAAc;IAAE,OAAO;IAAe,cAAc;IAAM;GACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CC3IN,MAAM,WAAA,iBAAA;AAEN,SAAQ,iBAAiB,MAAM,YAAY;EACzC,UAAU;EAEV,IAAI,SAAS;AACX,UAAO;;EAGT,OAAO;AACL,UAAO;;EAGT,YAAY;AACV,UAAO;;EAGT,KAAK,SAAS,4BAA4B;AACxC,UAAO,EAAE;;;;;;;CClBb,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,YAAY;GAChB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,UAAU;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY,SAAS;;GAGtC,KAAK,OAAO;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,KAAK,GAAG,KAAK;;GAG1C,UAAU,MAAM;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,UAAU,GAAG,KAAK;;GAG/C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,YAAY,WAAW;GAC7C,SAAS,EAAE,YAAY,MAAM;GAC7B,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAe,cAAc;IAAM;IACjE,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,0BAAA;;;;;CC7UN,MAAM,WAAA,iBAAA;AAEN,SAAQ,iBAAiB,MAAM,cAAc;EAC3C,IAAI,SAAS;AACX,UAAO;;EAGT,OAAO;AACL,UAAO;;EAGT,YAAY;AACV,UAAO;;EAGT,KAAK,SAAS,4BAA4B;AACxC,UAAO,EAAE;;;;;;;CChBb,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,cAAc;GAClB,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,KAAK,OAAO;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8EAA8E,UAAU,OAAO,WAChG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,KAAK,GAAG,KAAK;;GAG1C,UAAU,MAAM;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mFAAmF,UAAU,OAAO,WACrG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,UAAU,GAAG,KAAK;;GAG/C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,cAAc,WAAW;GAC/C,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;IACnE,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,QAAO;KACL,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;IACpB,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,QAAI,iBAAiB,KACnB,WAAU;KACR,UAAU;KACV,YAAY;KACZ,cAAc;KACd,OAAO,MAAM,kBAAkB,aAAa;KAC7C;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,EAAE,OAAO,YAAY,KAAK,MAAM,KAAK;;AAG9C,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,4BAAA;;;;;ACnUN,SAAQ,iBAAiB,MAAM,gBAAgB;EAC7C,IAAI,cAAc;AAChB,UAAO;;EAGT,IAAI,UAAU;AACZ,UAAO;;EAGT,IAAI,aAAa;AACf,UAAO;;EAGT,IAAI,WAAW;AACb,UAAO;;EAGT,IAAI,UAAU;AACZ,UAAO;;EAGT,IAAI,aAAa;AACf,UAAO;;EAKT,IAAI,SAAS;AACX,UAAO;;EAGT,IAAI,YAAY;AACd,UAAO;;;;;;;AChCX,SAAQ,iBAAiB,MAAM,sBAAsB;EACnD,IAAI,WAAW;AACb,UAAO;;;;;;;ACFX,SAAQ,iBAAiB,MAAM,oBAAoB;EACjD,IAAI,SAAS;AACX,UAAO;;;;;;;ACFX,SAAQ,iBAAiB,MAAM,qBAAqB;EAClD,IAAI,gBAAgB;AAClB,UAAO;;;;;;;ACFX,SAAQ,iBAAiB,MAAM,qBAAqB;EAElD,cAAc;AACZ,UAAO;;;;;;;CCJX,MAAM,KAAK,QAAQ,KAAK;AAExB,SAAQ,iBAAiB,MAAM,gCAAgC;EAC7D,IAAI,sBAAsB;AACxB,UAAO,GAAG,MAAM,CAAC;;;;;;;CCJrB,MAAM,EAAE,UAAA,iBAAA;CACR,MAAM,cAAA,qBAAA;CACN,MAAM,gBAAA,uBAAA;CACN,MAAM,kBAAA,0BAAA,CAAgD;CACtD,MAAM,wBAAA,gCAAA,CAA4D;CAClE,MAAM,sBAAA,8BAAA,CAAwD;CAC9D,MAAM,uBAAA,+BAAA,CAA0D;CAChE,MAAM,uBAAA,+BAAA,CAA0D;CAChE,MAAM,kCAAA,0CAAA,CAAgF;CAEtF,IAAM,gBAAN,MAAoB;EAClB,YAAY,cAAc;AACxB,QAAK,gBAAgB;AACrB,QAAK,YAAY,aAAa;AAC9B,QAAK,YAAY,OAAO,OAAO,CAAC,SAAS,KAAK,CAAC;AAC/C,QAAK,UAAU,YAAY,OAAO,KAAK,cAAc;AACrD,QAAK,YAAY,cAAc,OAAO,KAAK,cAAc;;;AAI7D,OAAM,cAAc,WAAW,gBAAgB,UAAU;AACzD,OAAM,cAAc,WAAW,sBAAsB,UAAU;AAC/D,OAAM,cAAc,WAAW,oBAAoB,UAAU;AAC7D,OAAM,cAAc,WAAW,qBAAqB,UAAU;AAC9D,OAAM,cAAc,WAAW,qBAAqB,UAAU;AAC9D,OAAM,cAAc,WAAW,gCAAgC,UAAU;AAEzE,SAAQ,iBAAiB;;;;;AC1BL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,8BAA8B;;CAG5E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,aAAa;AAGxD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,UAAU;GACd,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY,aAAa;;GAG1C,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,cAAc,MAAM,iBAAiB;AAChD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;MAC9D;;GAGJ,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,cAAc,MAAM,mBAAmB;AAClD,YAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;MAChE;;GAGJ,IAAI,sBAAsB;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,UAAU,WAAW;GAC3C,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,UAAU,EAAE,YAAY,MAAM;GAC9B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,WAAW,EAAE,YAAY,MAAM;GAC/B,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,QAAQ,EAAE,YAAY,MAAM;GAC5B,eAAe,EAAE,YAAY,MAAM;GACnC,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;GAC/B,qBAAqB,EAAE,YAAY,MAAM;IACxC,OAAO,cAAc;IAAE,OAAO;IAAa,cAAc;IAAM;GACjE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,wBAAA;;;;;CCnUN,MAAM,aAAa,QAAQ,SAAS;CACpC,MAAM,eAAA,sBAAA;CAGN,IAAM,aAAN,MAAiB;EACf,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAIvB,gBAAgB,OAAO;GACrB,MAAM,WAAW,sBAAsB,MAAM;AAC7C,OAAI,EAAE,aAAa,eACf,aAAa,gBACb,aAAa,uBACb,aAAa,gBACb,aAAa,iBACb,aAAa,gBACb,aAAa,iBACb,aAAa,mBACb,aAAa,kBACf,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,uDACA,oBACD,CAAC;AAGJ,OAAI,MAAM,aAAa,MACrB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,6EACG,MAAM,WAAW,wBACpB,qBACD,CAAC;AAEJ,cAAW,eAAe,MAAM;AAChC,UAAO;;EAIT,aAAa;AACX,UAAO,WAAW,YAAY;;;AAIlC,SAAQ,iBAAiB;CAOzB,SAAS,sBAAsB,OAAO;EACpC,MAAM,SAAS,MAAM;EACrB,MAAM,QAAQ,CAAC,OAAO,KAAK;EAC3B,IAAI,QAAQ,OAAO,eAAe,OAAO;AACzC,SAAO,OAAO;AACZ,SAAM,KAAK,MAAM,KAAK;AACtB,WAAQ,OAAO,eAAe,MAAM;;AAGtC,SAAO,MAAM,SAAS,KAAK,MAAM,MAAM,SAAS,OAAO,aACrD,OAAM,KAAK;AAEb,QAAM,SAAS;AACf,SAAO,MAAM;;;;;;CChEf,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,2BAA2B;;CAGzE,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,UAAU;AAGrD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,OAAO;GACX,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,gBAAgB,OAAO;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kFAAkF,UAAU,OAAO,WACpG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,YAAY,OAAO,OAAO,CAC5B,UAAS,YAAY,mBAAmB,QAAQ;MAC9C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,OAAM,IAAI,aAAa,UACrB,6FACD;AAEH,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,gBAAgB,GAAG,KAAK;;GAGrD,aAAa;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY,YAAY;;;AAG3C,SAAO,iBAAiB,OAAO,WAAW;GACxC,iBAAiB,EAAE,YAAY,MAAM;GACrC,YAAY,EAAE,YAAY,MAAM;IAC/B,OAAO,cAAc;IAAE,OAAO;IAAU,cAAc;IAAM;GAC9D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,qBAAA;;;;;ACjJN,SAAQ,iBAAiB,MAAM,OAAO;;;;;CCAtC,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,2BAA2B;;CAGzE,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,UAAU;AAGrD,SAAO,OAAO,OAAO,MAAM;;CAG7B,SAAS,UAAU,SAAS,cAAc;EACxC,IAAI,eAAe,kBAAkB,IAAI,aAAa;AACtD,MAAI,iBAAiB,KAAA,GAAW;AAC9B,kBAAe,IAAI,aAAa,aAAa;AAC7C,qBAAkB,IAAI,cAAc,aAAa;;AAEnD,SAAO,IAAI,MAAM,SAAS,aAAa;;AAGzC,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,IAAI,UAAU,YAAY,cAAc,UAAU;AAElD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,YAAU,UAAU,SAAS,aAAa;AAE1C,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,OAAO;GACX,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,KAAK,OAAO;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,qEAAqE;AAGxG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uEAAuE,UAAU,OAAO,WACzF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,KAAK,GAAG,KAAK;;GAG1C,UAAU,MAAM;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,UAAU,GAAG,KAAK;;GAG/C,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,OAAO,WAAW;GACxC,MAAM,EAAE,YAAY,MAAM;GAC1B,WAAW,EAAE,YAAY,MAAM;GAC/B,MAAM,EAAE,YAAY,MAAM;GAC1B,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAU,cAAc;IAAM;IAC5D,OAAO,WAAW;IAAE,OAAO,aAAa,MAAM,UAAU,OAAO;IAAW,cAAc;IAAM,UAAU;IAAM;GAChH,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,oCAAoB,IAAI,SAAS;CACvC,IAAM,eAAN,MAAmB;EACjB,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,IAAI,QAAQ,GAAG,UAAU;AACvB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;GAEzC,MAAM,OAAO,KAAK,yBAAyB,QAAQ,EAAE;AACrD,OAAI,SAAS,KAAA,GAAW;AAEtB,QADe,OAAO,eAAe,OAAO,KAC7B,KACb;AAEF,WAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;;AAEzC,OAAI,CAAC,KAAK,OAAO,CAAC,KAAK,IACrB,QAAO,KAAK;GAEd,MAAM,SAAS,KAAK;AACpB,OAAI,WAAW,KAAA,EACb;AAEF,UAAO,QAAQ,MAAM,QAAQ,UAAU,EAAE,CAAC;;EAG5C,IAAI,QAAQ,GAAG;AACb,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAG/B,OADa,KAAK,yBAAyB,QAAQ,EAAE,KACxC,KAAA,EACX,QAAO;GAET,MAAM,SAAS,OAAO,eAAe,OAAO;AAC5C,OAAI,WAAW,KACb,QAAO,QAAQ,IAAI,QAAQ,EAAE;AAE/B,UAAO;;EAGT,QAAQ,QAAQ;GACd,MAAM,uBAAO,IAAI,KAAK;AAEtB,QAAK,MAAM,OAAO,OAAO,YAAY,MAAM,0BACzC,MAAK,IAAI,GAAG,MAAM;AAGpB,QAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,CACvC,MAAK,IAAI,IAAI;AAEf,UAAO,CAAC,GAAG,KAAK;;EAGlB,yBAAyB,QAAQ,GAAG;AAClC,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,yBAAyB,QAAQ,EAAE;AAIpD,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AAEpB,QAAI,OAAO,YAAY,MAAM,uBAAuB,MAAM,EAAE;KAC1D,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,YAAO;MACL,UAAU;MACV,YAAY;MACZ,cAAc;MACd,OAAO,MAAM,kBAAkB,aAAa;MAC7C;;;AAKL,UAAO,QAAQ,yBAAyB,QAAQ,EAAE;;EAGpD,IAAI,QAAQ,GAAG,GAAG,UAAU;AAC1B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,IAAI,QAAQ,GAAG,GAAG,SAAS;AAI5C,OAAI,OAAO,YAAY,MAAM,mBAAmB,SACzB,MAAK;GAE5B,IAAI;AAEJ,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AAEpB,QAAI,OAAO,YAAY,MAAM,uBAAuB,MAAM,EAAE;KAC1D,MAAM,eAAe,OAAO,YAAY,KAAK,MAAM;AACnD,eAAU;MACR,UAAU;MACV,YAAY;MACZ,cAAc;MACd,OAAO,MAAM,kBAAkB,aAAa;MAC7C;;;AAIL,OAAI,YAAY,KAAA,EACd,WAAU,QAAQ,yBAAyB,QAAQ,EAAE;AAEvD,UAAO,MAAM,6BAA6B,QAAQ,GAAG,GAAG,UAAU,QAAQ;;EAG5E,eAAe,QAAQ,GAAG,MAAM;AAC9B,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;AAG3B,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,CAC/B,QAAO;AAGT,UAAO,QAAQ,eAAe,QAAQ,GAAG,KAAK;;EAGhD,eAAe,QAAQ,GAAG;AACxB,OAAI,OAAO,MAAM,SACf,QAAO,QAAQ,eAAe,QAAQ,EAAE;AAGrB,QAAK;AAE1B,OAAI,MAAM,qBAAqB,EAAE,EAAE;IACjC,MAAM,QAAQ,MAAM;AACpB,WAAO,CAAC,OAAO,YAAY,MAAM,uBAAuB,MAAM;;AAGhE,UAAO,QAAQ,eAAe,QAAQ,EAAE;;EAG1C,oBAAoB;AAClB,UAAO;;;CAIX,MAAM,OAAA,qBAAA;;;;;ACpWN,SAAQ,iBAAiB,MAAM,SAAS;;;;;ACApB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,6BAA6B;;CAG3E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,YAAY;AAGvD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,SAAS;GACb,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,SAAS,WAAW;GAC1C,MAAM,EAAE,YAAY,MAAM;GAC1B,aAAa,EAAE,YAAY,MAAM;GACjC,UAAU,EAAE,YAAY,MAAM;GAC9B,eAAe,EAAE,YAAY,MAAM;IAClC,OAAO,cAAc;IAAE,OAAO;IAAY,cAAc;IAAM;GAChE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,uBAAA;;;;;CCzJN,MAAM,EAAE,aAAa,sBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;CACrB,MAAM,EAAE,cAAA,aAAA,EAAA,cAAA,aAAA,eAAA;CACR,MAAM,EAAE,aAAA,eAAA;CACR,MAAM,eAAA,sBAAA;CACN,MAAM,kBAAA,0BAAA,CAAwD;CAC9D,MAAM,gBAAA,uBAAA;CACN,MAAM,EAAE,iCAAA,+BAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,mCAAA,qBAAA;CAER,MAAM,eAAe,OAAO,OAAO;EACjC,OAAO;EACP,SAAS;EACT,MAAM;EACP,CAAC;CAEF,MAAM,SAAS;EAAC;EAAa;EAAY;EAAQ;EAAS;EAAS;EAAU;CAE7E,IAAM,iBAAN,cAA6B,gBAAgB;EAC3C,YAAY,cAAc,MAAM,aAAa;AAC3C,SAAM,cAAc,MAAM,YAAY;AAEtC,QAAK,QAAQ;AACb,QAAK,aAAa,aAAa;AAC/B,QAAK,SAAS;AAEd,QAAK,gBAAgB;AACrB,QAAK,iBAAiB,aAAa;AACnC,QAAK,cAAc;;EAGrB,kBAAkB,MAAM;AACtB,QAAK,UAAU,MAAM,SAAS;;EAEhC,mBAAmB,MAAM;AACvB,QAAK,UAAU,MAAM,eAAe;;EAEtC,cAAc,MAAM;AAClB,QAAK,UAAU,MAAM,UAAU;;EAEjC,WAAW,MAAM,eAAe;AAC9B,QAAK,UAAU,MAAM,QAAQ,YAAY,cAAc,IAAI,QAAQ;;EAGrE,QAAQ;AACN,OAAI,KAAK,eAAe,aAAa,SAAS,KAAK,eAAe,aAAa,MAAM;AACnF,SAAK,SAAS;AACd;;AAGF,OAAI,KAAK,eAAe,aAAa,SAAS;AAC5C,SAAK,aAAa,aAAa;AAC/B,SAAK,SAAS;;AAGhB,QAAK,cAAc;AACnB,QAAK,mBAAmB,QAAQ;AAChC,QAAK,mBAAmB,UAAU;;EAGpC,mBAAmB,MAAM,OAAO;AAC9B,eAAY,MAAM,MAAM,eAAe,MAAM;;EAG/C,UAAU,MAAM,QAAQ,eAAe;AACrC,OAAI,KAAK,eAAe,aAAa,QACnC,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,sCACA,oBACD,CAAC;AAGJ,QAAK,aAAa,aAAa;AAC/B,QAAK,SAAS;AACd,QAAK,QAAQ;AAGb,sBAAmB;AACjB,QAAI,KAAK,aAAa;AACpB,UAAK,cAAc;AACnB;;AAGF,SAAK,mBAAmB,YAAY;AAEpC,uBAAmB;AACjB,SAAI,KAAK,aAAa;AACpB,WAAK,cAAc;AACnB;;AAGF,SAAI,KAAK,OAAO,SAAS,EACvB,MAAK,mBAAmB,YAAY;MAClC,kBAAkB,CAAC,MAAM,KAAK,KAAK;MACnC,OAAO,KAAK;MACZ,QAAQ,KAAK,OAAO;MACrB,CAAC;AAGJ,wBAAmB;AACjB,UAAI,KAAK,aAAa;AACpB,YAAK,cAAc;AACnB;;AAGF,WAAK,WAAW,MAAM,QAAQ,cAAc;AAC5C,WAAK,aAAa,aAAa;AAC/B,WAAK,mBAAmB,OAAO;AAC/B,WAAK,mBAAmB,UAAU;OAClC;MACF;KACF;;EAGJ,WAAW,MAAM,QAAQ,eAAe;AACtC,WAAQ,QAAR;IACE,KAAK,gBAAgB;KAEnB,IAAI,eAAe;AACnB,UAAK,IAAI,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IACtC,iBAAgB,OAAO,aAAa,KAAK,OAAO,GAAG;AAErD,UAAK,SAAS;AACd;;IAEF,KAAK;AAGH,UAAK,SAAS,QADM,SAAS,MAAM,KAAK,KAAK,IAAI,2BACf,UAAU,SAAS,KAAK,OAAO;AACjE;IAEF,KAAK;AACH,UAAK,SAAS,iBAAiB,KAAK,QAAQ,cAAc;AAC1D;IAGF;AACE,UAAK,SAAS,+BAA+B,KAAK,OAAO,QAAQ,KAAK,cAAc;AACpF;;;;AAKR,8BAA6B,eAAe,WAAW,OAAO;AAE9D,SAAQ,iBAAiB;;;;;CCjJzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,OAAA,cAAA;CACN,MAAM,sBAAA,6BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,+BAA+B;;CAG7E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,cAAc;AAGzD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,mBAAmB,aAAa,YAAY;GAChD,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,kBAAkB,MAAM;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wFAAwF,UAAU,OAAO,WAC1G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,sEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,mBAAmB,MAAM;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,uEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,mBAAmB,GAAG,KAAK;;GAGxD,WAAW,MAAM;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,+DACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,WAAW,GAAG,KAAK;;GAGhD,cAAc,MAAM;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,kEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,cAAc,GAAG,KAAK;;GAGnD,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,WAAO,QAAQ,YAAY,OAAO;;GAGpC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,SAAS;;GAG9D,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,gFACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+EACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,4EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;;AAGvC,SAAO,iBAAiB,WAAW,WAAW;GAC5C,mBAAmB,EAAE,YAAY,MAAM;GACvC,oBAAoB,EAAE,YAAY,MAAM;GACxC,YAAY,EAAE,YAAY,MAAM;GAChC,eAAe,EAAE,YAAY,MAAM;GACnC,OAAO,EAAE,YAAY,MAAM;GAC3B,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,OAAO,EAAE,YAAY,MAAM;GAC3B,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAc,cAAc;IAAM;GACjE,OAAO;IAAE,OAAO;IAAG,YAAY;IAAM;GACrC,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACrC,CAAC;AACF,SAAO,iBAAiB,YAAY;GAClC,OAAO;IAAE,OAAO;IAAG,YAAY;IAAM;GACrC,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACrC,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,yBAAA;;;;;CCjdN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,kBAAA,yBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAC7F,kBAAgB,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;EAEpE;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CC7BT,MAAM,WAAA,mBAAA,CAAkC;AAExC,SAAQ,iBAAiB,MAAM,iBAAiB,SAAS;EACvD,YAAY,cAAc,CAAC,UAAU,UAAU,UAAU,aAAa;AACpE,SAAM,cAAc,CAAC,UAAU,QAAQ,EAAE,YAAY;AAErD,QAAK,OAAO;AACZ,QAAK,eAAe,kBAAkB,UAAU,QAAQ,eAAe,KAAK,KAAK;;;;;;;CCPrF,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,OAAA,cAAA;CACN,MAAM,kBAAA,yBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,yBAAyB;;CAGvE,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,QAAQ;AAGnD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,OAAK,eAAe,SAAS,aAAa;;AAG5C,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,aAAa,aAAa,KAAK;GACnC,YAAY,UAAU,UAAU;AAC9B,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8DAA8D,UAAU,OAAO,WAChF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,CAAC,MAAM,SAAS,OAAO,CACzB,OAAM,IAAI,aAAa,UAAU,qEAA0E;UACtG;MACL,MAAM,IAAI,EAAE;MACZ,MAAM,MAAM;AACZ,WAAK,IAAI,YAAY,KAAK;AACxB,WAAI,KAAK,GAAG,SAAS,CACnB,YAAW,MAAM,eAAe,SAAS;gBAChC,MAAM,cAAc,SAAS,CACtC,YAAW,YAAY,eAAe,UAAU;QAC9C,SAAS;QACT,SAAS;QACV,CAAC;gBACO,YAAY,OAAO,SAAS,CACrC,YAAW,YAAY,mBAAmB,UAAU;QAClD,SAAS;QACT,SAAS;QACV,CAAC;WAEF,YAAW,YAAY,aAAa,UAAU;QAC5C,SAAS;QACT,SAAS;QACV,CAAC;AAEJ,SAAE,KAAK,SAAS;;AAElB,eAAS;;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,gBAAgB,QAAQ,cAAc,QAAQ,EAAE,SAAS,2CAA2C,CAAC;AAC9G,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,KAAK,WAAW;GACtC,MAAM,EAAE,YAAY,MAAM;GAC1B,cAAc,EAAE,YAAY,MAAM;IACjC,OAAO,cAAc;IAAE,OAAO;IAAQ,cAAc;IAAM;GAC5D,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,mBAAA;;;;;CCtLN,MAAM,oBAAoB,IAAI,IAAI;EAChC;EACA;EACA;EACA;EACA;EACD,CAAC;AACF,SAAQ,oBAAoB;AAE5B,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAClF,MAAM,SAAS,GAAG;AAClB,MAAI,CAAC,kBAAkB,IAAI,OAAO,CAChC,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,IAAI,OAAO,sDAAsD;AAE/G,SAAO;;;;;;CCdT,MAAM,EAAE,sBAAA,kBAAA;CAER,MAAM,WAAA,iBAAA;CACN,MAAM,WAAA,kBAAA;AAEN,SAAQ,iBAAiB,MAAM,cAAc;EAC3C,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,gBAAgB,QAAQ,aAAa;AACnC,WAAQ,OAAO,YAAY,EAA3B;IACE,KAAK,YACH,QAAO,KAAK,gCAAgC,QAAQ,aAAa,OAAO;IAG1E,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK,gBACH,KAAI;AACF,YAAO,KAAK,gCAAgC,OAAO,aAAa,OAAO;aAChE,OAAO;KACd,MAAM,WAAW,KAAK,gCAAgC,OAAO,YAAY;KACzE,MAAM,UAAU,SAAS,gBAAgB,wDAAwD,cAAc;AAE/G,aAAQ,cAAc,MAAM;AAE5B,cAAS,YAAY,QAAQ;AAC7B,YAAO;;IAIX,QACE,OAAM,IAAI,UAAU,sBAAsB;;;EAIhD,gCAAgC,aAAa,aAAa,QAAQ;GAChE,MAAM,WAAW,SAAS,WAAW,KAAK,eAAe,EAAE,EAAE,EAC3D,SAAS;IACP;IACA,UAAU;IACV;IACA,YAAY;IACZ,mBAAmB;IACnB,KAAK,SAAS,eAAe,KAAK,cAAc,UAAU,CAAC;IAC5D,EACF,CAAC;AAEF,OAAI,WAAW,KAAA,EACb,mBAAkB,QAAQ,SAAS;AAGrC,UAAO;;;;;;;CCtDX,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,gBAAA,uBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,8BAA8B;;CAG5E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,aAAa;AAGxD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,UAAU;GACd,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,gBAAgB,KAAK,MAAM;IACzB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sFAAsF,UAAU,OAAO,WACxG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,cAAc,QAAQ,cAAc,QAAQ,EACnD,SAAS,mEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB,GAAG,KAAK,CAAC;;;AAGhF,SAAO,iBAAiB,UAAU,WAAW;GAC3C,iBAAiB,EAAE,YAAY,MAAM;IACpC,OAAO,cAAc;IAAE,OAAO;IAAa,cAAc;IAAM;GACjE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,wBAAA;;;;;CC1IN,MAAM,YAAA,mBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,QAAA,iBAAA;AAEN,SAAQ,iBAAiB,MAAM,kBAAkB;EAC/C,YAAY,cAAc;AACxB,QAAK,gBAAgB;;EAGvB,kBAAkB,MAAM;AACtB,OAAI;AACF,WAAO,UAAU,MAAM,eAAe,KAAK,EAAE,EAAE,mBAAmB,OAAO,CAAC;YACnE,GAAG;AACV,UAAM,aAAa,OAAO,KAAK,eAAe,CAAC,EAAE,SAAS,oBAAoB,CAAC;;;;;;;;ACZjE,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,OAAA,cAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kCAAkC;;CAGhF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iBAAiB;AAG5D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,cAAc;GAClB,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,kBAAkB,MAAM;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2FAA2F,UAAU,OAAO,WAC7G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,yEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;;AAGzD,SAAO,iBAAiB,cAAc,WAAW;GAC/C,mBAAmB,EAAE,YAAY,MAAM;IACtC,OAAO,cAAc;IAAE,OAAO;IAAiB,cAAc;IAAM;GACrE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4BAAA;;;;;CCjIN,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;AAEN,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,OAAO,UAAU,WACnB,OAAM,IAAI,aAAa,UAAU,UAAU,qBAAqB;EAGlE,SAAS,0BAA0B,GAAG,MAAM;GAC1C,MAAM,UAAU,MAAM,kBAAkB,KAAK;GAC7C,IAAI;AAEJ,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,MAAK,KAAK,MAAM,kBAAkB,KAAK,GAAG;AAG5C,gBAAa,QAAQ,MAAM,OAAO,SAAS,KAAK;AAEhD,gBAAa,YAAY,OAAO,YAAY;IAAW;IAAS,SAAS;IAAc,CAAC;AAExF,UAAO;;AAGT,4BAA0B,aAAa,GAAG,SAAS;AACjD,QAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAC/B,MAAK,KAAK,MAAM,kBAAkB,KAAK,GAAG;GAG5C,IAAI,aAAa,QAAQ,UAAU,OAAO,KAAK;AAE/C,gBAAa,YAAY,OAAO,YAAY;IAAW;IAAS,SAAS;IAAc,CAAC;AAExF,UAAO;;AAGT,4BAA0B,MAAM,iBAAiB;AACjD,4BAA0B,kBAAkB;AAE5C,SAAO;;;;;;CCvCT,MAAM,eAAA,sBAAA;CACN,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,YAAA,mBAAA;CACR,MAAM,EAAE,YAAY,UAAU,mBAAA,uBAAA;CAC9B,MAAM,OAAA,cAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,cAAA,eAAA;AAEN,SAAQ,iBAAiB,MAAM,aAAa;EAC1C,YAAY,cAAc,MAAM;AAC9B,QAAK,gBAAgB;AACrB,QAAK,WAAW,EAAE;AAElB,OAAI,KAAK,OAAO,KAAA,GAAW;IACzB,MAAM,CAAC,MAAM,YAAY,QAAQ;AACjC,QAAI,cAAc,MAAM;AACtB,SAAI,CAAC,eAAe,UAAU,CAC5B,OAAM,IAAI,UAAU,+CAA+C;AAErE,SAAI,UAAU,SAAS,KACrB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,2DACA,gBACD,CAAC;;AAGN,SAAK,WAAW,sBAAsB,MAAM,UAAU;;;EAI1D,OAAO,MAAM,OAAO,UAAU;GAC5B,MAAM,QAAQ,cAAc,MAAM,OAAO,SAAS;AAClD,QAAK,SAAS,KAAK,MAAM;;EAG3B,OAAO,MAAM;AACX,QAAK,WAAW,KAAK,SAAS,QAAO,UAAS,MAAM,SAAS,KAAK;;EAGpE,IAAI,MAAM;GACR,MAAM,aAAa,KAAK,SAAS,MAAK,UAAS,MAAM,SAAS,KAAK;AACnE,UAAO,eAAe,KAAA,IAAY,SAAS,kBAAkB,WAAW,MAAM,GAAG;;EAGnF,OAAO,MAAM;AACX,UAAO,KAAK,SAAS,QAAO,UAAS,MAAM,SAAS,KAAK,CAAC,KAAI,UAAS,SAAS,kBAAkB,MAAM,MAAM,CAAC;;EAGjH,IAAI,MAAM;AACR,UAAO,KAAK,SAAS,WAAU,UAAS,MAAM,SAAS,KAAK,KAAK;;EAGnE,IAAI,MAAM,OAAO,UAAU;GACzB,MAAM,QAAQ,cAAc,MAAM,OAAO,SAAS;GAElD,MAAM,aAAa,KAAK,SAAS,WAAU,MAAK,EAAE,SAAS,KAAK;AAChE,OAAI,eAAe,IAAI;AACrB,SAAK,SAAS,cAAc;AAC5B,SAAK,WAAW,KAAK,SAAS,QAAQ,GAAG,MAAM,EAAE,SAAS,QAAQ,MAAM,WAAW;SAEnF,MAAK,SAAS,KAAK,MAAM;;EAI7B,EAAG,OAAO,YAAY;AACpB,QAAK,MAAM,SAAS,KAAK,SACvB,OAAM,CAAC,MAAM,MAAM,SAAS,kBAAkB,MAAM,MAAM,CAAC;;;CAKjE,SAAS,cAAc,MAAM,OAAO,UAAU;EAC5C,MAAM,QAAQ,EAAE,MAAM;AAItB,MAAI,KAAK,OAAO,MAAM,IAAI,CAAC,KAAK,OAAO,MAAM,EAAE;GAC7C,MAAM,WAAW;AACjB,WAAQ,KAAK,WAAW,MAAM,eAAe;IAC3C,EAAE;IACF;IACA,EAAE,MAAM,SAAS,MAAM;IACxB,CAAC;AAEF,SAAM,SAAS,SAAS;;AAG1B,MAAI,KAAK,OAAO,MAAM,IAAI,aAAa,KAAA,GAAW;GAChD,MAAM,WAAW;AACjB,WAAQ,KAAK,WAAW,MAAM,eAAe;IAC3C,EAAE;IACF;IAGA;KAAE,MAAM,SAAS;KAAM,cAAc,SAAS;KAAc;IAC7D,CAAC;AAEF,SAAM,SAAS,SAAS;;AAG1B,QAAM,QAAQ;AAEd,SAAO;;CAGT,SAAS,sBAAsB,MAAM,WAAW;EAK9C,MAAM,WAAW,KAAK,6BAA6B;EACnD,MAAM,YAAY,EAAE;AAEpB,OAAK,MAAM,SAAS,UAAU;AAC5B,OAAI,QAAQ,OAAO,WAAW,KAAK,KACjC;AAEF,OAAI,WAAW,MAAM,CACnB;AAEF,OAAI,SAAS,MAAM,IAAI,UAAU,UAC/B;AAEF,OAAI,MAAM,SAAS,cAAc,MAAM,iBAAiB,MACtD;AAEF,OAAI,MAAM,SAAS,WAAW,MAAM,iBAAiB,MACnD;AAEF,OAAI,MAAM,cAAc,SACtB;GAGF,MAAM,OAAO,MAAM,eAAe,MAAM,OAAO;AAC/C,OAAI,MAAM,cAAc,WAAW,MAAM,SAAS,SAAS;IACzD,MAAM,SAAS,OAAO,GAAG,KAAK,KAAK;IACnC,MAAM,aAAa,MAAM,uBAAuB;KAAE,GAAG;KAAG,GAAG;KAAG;AAC9D,kBAAc,WAAW,GAAG,OAAO,IAAI,WAAW,EAAE;AACpD,kBAAc,WAAW,GAAG,OAAO,IAAI,WAAW,EAAE;AACpD;;AAKF,OAAI,SAAS,QAAQ,SAAS,GAC5B;AAGF,OAAI,MAAM,cAAc;SACjB,MAAM,UAAU,MAAM,QACzB,KAAI,OAAO,kBAAkB,QAAQ,CAAC,WAAW,MAAM,CACrD,eAAc,WAAW,MAAM,OAAO,WAAW,CAAC;cAG7C,MAAM,cAAc,YAAY,MAAM,SAAS,cAAc,MAAM,SAAS,SAErF,eAAc,WAAW,MADX,MAAM,eAAe,MAAM,QAAQ,GAAG,MAAM,eAAe,MAAM,QAAQ,GAAG,KACrD;YAC5B,MAAM,SAAS,OACxB,KAAI,MAAM,MAAM,WAAW,EAEzB,eAAc,WAAW,MADX,KAAK,WAAW,KAAK,eAAe;IAAC,EAAE;IAAE;IAAI,EAAE,MAAM,4BAA4B;IAAC,CAAC,CAC5D;OAErC,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,QAAQ,EAAE,EACxC,eAAc,WAAW,MAAM,MAAM,MAAM,KAAK,EAAE,CAAC;OAIvD,eAAc,WAAW,MAAM,MAAM,WAAW,CAAC;GAGnD,MAAM,UAAU,MAAM,eAAe,MAAM,UAAU;AACrD,OAAI,YAAY,QAAQ,YAAY,GAElC,eAAc,WAAW,SADb,MAC0B;;AAM1C,SAAO;;CAGT,SAAS,cAAc,WAAW,MAAM,OAAO;AAC7C,SAAO,YAAY,UAAU,KAAK;AAClC,MAAI,CAAC,KAAK,OAAO,MAAM,CACrB,SAAQ,YAAY,UAAU,MAAM;EAEtC,MAAM,QAAQ,cAAc,MAAM,MAAM;AACxC,YAAU,KAAK,MAAM;;;;;;CC3LvB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,kBAAA,yBAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,mBAAmB,MAAM;CAC/B,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,6BAA6B;;AAG3E,SAAQ,yBAAyB,cAAc,QAAQ,SAAS;EAE9D,MAAM,oBADe,aAAa,oBACK;EACvC,MAAM,WAAW,OAAO,OAAO,kBAAkB;AACjD,SAAO,eAAe,UAAU,MAAM,oBAAoB;GACxD,OAAO;IAAE;IAAQ;IAAM,OAAO;IAAG;GACjC,cAAc;GACf,CAAC;AACF,SAAO;;CAGT,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,YAAY;AAGvD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,SAAS;GACb,cAAc;IACZ,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,gBAAgB,QAAQ,cAAc,QAAQ,EACrD,SAAS,+CACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,YAAY,QAAQ,cAAc,QAAQ,EACjD,SAAS,+CACV,CAAC;SAGJ,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,OAAO,MAAM,OAAO;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;AACf,YAAQ,UAAU,QAAlB;KACE,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,KAAK,GAAG,OAAO,EACjB;QACE,IAAI,SAAS,UAAU;AACvB,iBAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,yDACV,CAAC;AACF,aAAK,KAAK,OAAO;cAGnB;QACE,IAAI,SAAS,UAAU;AACvB,iBAAS,YAAY,aAAa,QAAQ;SACxC,SAAS;SACT,SAAS;SACV,CAAC;AACF,aAAK,KAAK,OAAO;;;AAIvB;KACF;MACE;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,yDACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AAEJ,YAAK,KAAK,OAAO;;;AAGvB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,OAAO,MAAM;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2EAA2E,UAAU,OAAO,WAC7F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,sEAAsE;AAGzG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wEAAwE,UAAU,OAAO,WAC1F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,IAAI,GAAG,KAAK,CAAC;;GAGlE,OAAO,MAAM;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2EAA2E,UAAU,OAAO,WAC7F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,OAAO,GAAG,KAAK,CAAC;;GAGrE,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,sEAAsE;AAGzG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wEAAwE,UAAU,OAAO,WAC1F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;;GAGzC,IAAI,MAAM,OAAO;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,sEAAsE;AAGzG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yEAAyE,UAAU,OAAO,WAC3F;IAEH,MAAM,OAAO,EAAE;AACf,YAAQ,UAAU,QAAlB;KACE,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,KAAK,GAAG,OAAO,EACjB;QACE,IAAI,SAAS,UAAU;AACvB,iBAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,sDACV,CAAC;AACF,aAAK,KAAK,OAAO;cAGnB;QACE,IAAI,SAAS,UAAU;AACvB,iBAAS,YAAY,aAAa,QAAQ;SACxC,SAAS;SACT,SAAS;SACV,CAAC;AACF,aAAK,KAAK,OAAO;;;AAIvB;KACF;MACE;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,sDACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AAEJ,YAAK,KAAK,OAAO;;;AAGvB,WAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;;GAGzC,OAAO;AACL,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAE1G,WAAO,QAAQ,sBAAsB,cAAc,MAAM,MAAM;;GAGjE,SAAS;AACP,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAE5G,WAAO,QAAQ,sBAAsB,cAAc,MAAM,QAAQ;;GAGnE,UAAU;AACR,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAE7G,WAAO,QAAQ,sBAAsB,cAAc,MAAM,YAAY;;GAGvE,QAAQ,UAAU;AAChB,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAE7G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sFACD;AAEH,eAAW,SAAS,QAAQ,cAAc,UAAU,EAClD,SAAS,mFACV,CAAC;IACF,MAAM,UAAU,UAAU;IAC1B,IAAI,QAAQ,MAAM,KAAK,KAAK,YAAY;IACxC,IAAI,IAAI;AACR,WAAO,IAAI,MAAM,QAAQ;KACvB,MAAM,CAAC,KAAK,SAAS,MAAM,GAAG,IAAI,MAAM,kBAAkB;AAC1D,cAAS,KAAK,SAAS,OAAO,KAAK,KAAK;AACxC,aAAQ,MAAM,KAAK,KAAK,YAAY;AACpC;;;;AAIN,SAAO,iBAAiB,SAAS,WAAW;GAC1C,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,KAAK,EAAE,YAAY,MAAM;GACzB,QAAQ,EAAE,YAAY,MAAM;GAC5B,KAAK,EAAE,YAAY,MAAM;GACzB,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAY,cAAc;IAAM;IAC9D,OAAO,WAAW;IAAE,OAAO,SAAS,UAAU;IAAS,cAAc;IAAM,UAAU;IAAM;GAC7F,CAAC;AACF,eAAa,iBAAiB;AAE9B,eAAa,uBAAuB,OAAO,OAAO,aAAa,wBAAwB,GACpF,OAAO,cAAc;GACpB,cAAc;GACd,OAAO;GACR,EACF,CAAC;AACF,QAAM,OAAO,aAAa,sBAAsB,EAC9C,OAAO;GACL,MAAM,WAAW,QAAQ,KAAK,MAAM;AACpC,OAAI,CAAC,SACH,OAAM,IAAI,aAAa,UAAU,kEAAkE;GAGrG,MAAM,EAAE,QAAQ,MAAM,UAAU;GAChC,MAAM,SAAS,MAAM,KAAK,OAAO,YAAY;AAE7C,OAAI,SADQ,OAAO,OAEjB,QAAO,iBAAiB,cAAc;IAAE,OAAO,KAAA;IAAW,MAAM;IAAM,CAAC;GAGzE,MAAM,OAAO,OAAO;AACpB,YAAS,QAAQ,QAAQ;AACzB,UAAO,iBAAiB,cAAc,MAAM,eAAe,KAAK,IAAI,MAAM,kBAAkB,EAAE,KAAK,CAAC;KAEvG,CAAC;AAEF,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,uBAAA;;;;;CCldN,MAAM,kBAAA,0BAAA,CAAwD;CAC9D,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,iCAAA,+BAAA;CAER,MAAM,SAAS;EAAC;EAAa;EAAY;EAAS;EAAS;EAAQ;EAAW;EAAU;CAExF,IAAM,gCAAN,cAA4C,gBAAgB;EAG1D,IAAI,iBAAiB;AACnB,UAAO,SAAS,eAAe,KAAK,cAAc,UAAU;;;AAGhE,8BAA6B,8BAA8B,WAAW,OAAO;AAE7E,SAAQ,iBAAiB;;;;;ACdL,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,sBAAA,6BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,8CAA8C;;CAG5F,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,6BAA6B;AAGxE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI;EAAC;EAAU;EAAmB;EAAe,CAAC;AAEtE,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,kCAAkC,aAAa,YAAY;GAC/D,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;GAGpE,IAAI,YAAY,GAAG;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,+FACV,CAAC;AAEJ,YAAQ,YAAY,iBAAiB;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,8FACV,CAAC;AAEJ,YAAQ,YAAY,gBAAgB;;GAGtC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2FACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2FACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0FACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6FACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6FACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;;AAGvC,SAAO,iBAAiB,0BAA0B,WAAW;GAC3D,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,QAAQ,EAAE,YAAY,MAAM;GAC5B,WAAW,EAAE,YAAY,MAAM;GAC/B,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAA6B,cAAc;IAAM;GACjF,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,wCAAA;;;;;CC5UN,MAAM,gCAAA,wCAAA,CAA4E;AAElF,SAAQ,iBAAiB,MAAM,iCAAiC,8BAA8B;;;;;ACD1E,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,4BAAA,mCAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,yCAAyC;;CAGvF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,wBAAwB;AAGnE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,4BAA0B,eAAe,SAAS,aAAa;;AAGjE,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI;EAAC;EAAU;EAAmB;EAAe,CAAC;AAEtE,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,6BAA6B,aAAa,0BAA0B;GACxE,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;;AAG3D,SAAO,iBAAiB,qBAAqB,WAAW,GACrD,OAAO,cAAc;GAAE,OAAO;GAAwB,cAAc;GAAM,EAC5E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,mCAAA;;;;;CC1GN,MAAM,oBAAoB,IAAI,IAAI;EAAC;EAAI;EAAe;EAAQ;EAAY;EAAQ;EAAO,CAAC;AAC1F,SAAQ,oBAAoB;AAE5B,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAClF,MAAM,SAAS,GAAG;AAClB,MAAI,CAAC,kBAAkB,IAAI,OAAO,CAChC,OAAM,IAAI,aAAa,UACrB,GAAG,QAAQ,IAAI,OAAO,mEACvB;AAEH,SAAO;;;;;;CCTT,SAAS,aAAa,MAAM;AAC1B,SAAO,yBAAyB,KAAK,KAAK;;CAI5C,SAAS,cAAc,OAAO;AAC5B,SAAO,MAAM,OAAO,OAClB,MAAM,OAAO,OACb,MAAM,MAAM,SAAS,OAAO,OAC5B,MAAM,MAAM,SAAS,OAAO,OAC5B,CAAC,WAAW,KAAK,MAAM;;CAI3B,SAAS,qBAAqB,gBAAgB;AAC5C,SAAO,eAAe,QAAQ,4BAA4B,GAAG;;AAG/D,QAAO,UAAU;EACf;EACA;EACA;EACD;;;;;ACoID,QAAO,UAlJP,MAAM,WAAW;EAIf,cAAc;AAEZ,QAAK,2BAAW,IAAI,KAAK;;EAI3B,OAAO,MAAM,OAAO;GAClB,MAAM,QAAQ,KAAK,aAAa;GAChC,MAAM,WAAW,KAAK,SAAS,IAAI,MAAM;AACzC,OAAI,SACF,UAAS,OAAO,KAAK,MAAM;OAE3B,MAAK,SAAS,IAAI,OAAO;IAAE;IAAM,QAAQ,CAAC,MAAM;IAAE,CAAC;;EAKvD,SAAS,MAAM;AACb,UAAO,KAAK,SAAS,IAAI,KAAK,aAAa,CAAC;;EAI9C,IAAI,MAAM;GACR,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,aAAa,CAAC;AACnD,OAAI,CAAC,MACH,QAAO;AAET,UAAO,MAAM,OAAO,KAAK,KAAK;;EAKhC,OAAO,MAAM;GACX,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,aAAa,CAAC;AACnD,OAAI,CAAC,MACH,QAAO;AAET,UAAO,MAAM;;EAIf,OAAO,MAAM;AACX,QAAK,SAAS,OAAO,KAAK,aAAa,CAAC;;EAI1C,IAAI,MAAM,OAAO;GACf,MAAM,QAAQ,KAAK,aAAa;AAChC,QAAK,SAAS,IAAI,OAAO;IAAE;IAAM,QAAQ,CAAC,MAAM;IAAE,CAAC;;EAIrD,QAAQ,MAAM,OAAO;GACnB,MAAM,QAAQ,KAAK,aAAa;GAChC,MAAM,WAAW,KAAK,SAAS,IAAI,MAAM;AACzC,OAAI,SACF,UAAS,OAAO,MAAM,OAAO;OAE7B,MAAK,SAAS,IAAI,OAAO;IAAE;IAAM,QAAQ,CAAC,MAAM;IAAE,CAAC;;EAKvD,iBAAiB;GACf,MAAM,QAAQ,CAAC,GAAG,KAAK,SAAS,MAAM,CAAC,CAAC,MAAM;GAE9C,MAAM,UAAU,EAAE;AAClB,QAAK,MAAM,QAAQ,OAAO;IACxB,MAAM,EAAE,WAAW,KAAK,SAAS,IAAI,KAAK;AAC1C,QAAI,SAAS,aACX,MAAK,MAAM,SAAS,OAClB,SAAQ,KAAK,CAAC,MAAM,MAAM,CAAC;QAG7B,SAAQ,KAAK,CAAC,MAAM,OAAO,KAAK,KAAK,CAAC,CAAC;;AAI3C,UAAO;;;;;;;EAQT,EAAG,OAAO,YAAY;AACpB,QAAK,MAAM,EAAE,MAAM,YAAY,KAAK,SAAS,QAAQ,CACnD,MAAK,MAAM,SAAS,OAClB,OAAM,CAAC,MAAM,MAAM;;;;;EAQzB,CAAE,QAAQ;AACR,QAAK,MAAM,EAAE,UAAU,KAAK,SAAS,QAAQ,CAC3C,OAAM;;;;;;EAQV,SAAS;GACP,MAAM,SAAS,EAAE;AACjB,QAAK,MAAM,EAAE,MAAM,YAAY,KAAK,SAAS,QAAQ,CACnD,QAAO,QAAQ,OAAO,WAAW,IAAI,OAAO,KAAK;AAEnD,UAAO;;;;;;;EAQT,OAAO,SAAS,KAAK;GACnB,MAAM,OAAO,IAAI,YAAY;AAC7B,QAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,IAAI,CAC7C,KAAI,MAAM,QAAQ,MAAM,CACtB,MAAK,MAAM,KAAK,MACd,MAAK,OAAO,MAAM,EAAE;OAGtB,MAAK,OAAO,MAAM,MAAM;AAG5B,UAAO;;;;;EAMT,QAAQ;AACN,UAAO,WAAW,SAAS,KAAK,QAAQ,CAAC;;;;;;;CCvJ7C,MAAM,EAAE,aAAA,eAAA;CAGR,MAAM,6BAA6B,IAAI,IAAI,CAAC,QAAQ,CAAC;CACrD,SAAS,oCAAoC,MAAM;AACjD,SAAO,2BAA2B,IAAI,KAAK,aAAa,CAAC;;CAI3D,MAAM,6BAA6B,IAAI,IAAI;EACzC;EACA;EACA;EACA;EACD,CAAC;CACF,SAAS,oCAAoC,MAAM;AACjD,SAAO,2BAA2B,IAAI,KAAK,aAAa,CAAC;;CAI3D,MAAM,qBAAqB,IAAI,IAAI,CAAC,cAAc,cAAc,CAAC;CACjE,SAAS,8BAA8B,MAAM;AAC3C,SAAO,mBAAmB,IAAI,KAAK,aAAa,CAAC;;CAKnD,MAAM,mBAAmB;CACzB,SAAS,8BAA8B,MAAM,OAAO;AAClD,SAAO,KAAK,aAAa;AACzB,UAAQ,MAAR;GACE,KAAK;AACH,QAAI,MAAM,MAAM,iBAAiB,CAC/B,QAAO;AAET;GACF,KAAK;GACL,KAAK;AACH,QAAI,MAAM,MAAM,yCAAyC,CACvD,QAAO;AAET;GACF,KAAK,gBAAgB;AACnB,QAAI,MAAM,MAAM,iBAAiB,CAC/B,QAAO;IAET,MAAM,WAAW,SAAS,MAAM,MAAM;AACtC,QAAI,aAAa,KACf,QAAO;AAET,QACE,CAAC;KACC;KACA;KACA;KACD,CAAC,SAAS,SAAS,QAAQ,CAE5B,QAAO;AAET;;GAEF,QACE,QAAO;;AAEX,MAAI,MAAM,SAAS,IACjB,QAAO;AAET,SAAO;;CAIT,SAAS,gCAAgC,MAAM,OAAO;AACpD,MAAI,CAAC,oCAAoC,KAAK,CAC5C,QAAO;AAET,SAAO,8BAA8B,MAAM,MAAM;;CAGnD,MAAM,kCAAkC,IAAI,IAAI;EAC9C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,4CAA4C,IAAI,IAAI;EACxD;EACA;EACA;EACD,CAAC;CAEF,MAAM,oBAAoB,IAAI,IAAI;EAChC;EACA;EACA;EACD,CAAC;CAGF,SAAS,kBAAkB,OAAO;AAChC,SAAO,kBAAkB,IAAI,MAAM,aAAa,CAAC;;CAInD,SAAS,yBAAyB,MAAM,OAAO;EAC7C,MAAM,gBAAgB,KAAK,aAAa;AACxC,MAAI,gCAAgC,IAAI,cAAc,CACpD,QAAO;AAET,MAAI,cAAc,WAAW,SAAS,IAAI,cAAc,WAAW,OAAO,CACxE,QAAO;AAGT,MAAI,0CAA0C,IAAI,cAAc,CAE9D,QADqB,kBAAkB,MAAM,CACzB,KAAK,kBAAkB;AAG7C,SAAO;;CAIT,SAAS,kBAAkB,OAAO;EAChC,MAAM,SAAS,EAAE;EACjB,IAAI,iBAAiB;EACrB,IAAI,WAAW;AAEf,SAAO,MAAM;AAEX,UAAO,WAAW,MAAM,UAAU,MAAM,cAAc,QAAQ,MAAM,cAAc,IAChF,mBAAkB,MAAM;AAI1B,OAAI,WAAW,MAAM,UAAU,MAAM,cAAc,MAAK;IAEtD,MAAM,gBAAgB;AACtB,WAAO,MAAM;AACX,YAAO,WAAW,MAAM,UAAU,MAAM,cAAc,QAAQ,MAAM,cAAc,KAChF;AAEF,SAAI,YAAY,MAAM,OACpB;AAEF,SAAI,MAAM,gBAAgB,MAAM;AAC9B,UAAI,YAAY,MAAM,OACpB;AAEF;WAEA;;AAGJ,sBAAkB,MAAM,MAAM,eAAe,SAAS;AACtD,QAAI,WAAW,MAAM,OACnB;;GAKJ,IAAI,QAAQ;GACZ,IAAI,MAAM,eAAe;AACzB,UAAO,QAAQ,QAAQ,eAAe,WAAW,OAAQ,eAAe,WAAW,KACjF;AAEF,UAAO,MAAM,UAAU,eAAe,MAAM,OAAO,OAAQ,eAAe,MAAM,OAAO,KACrF;AAGF,UAAO,KAAK,eAAe,MAAM,OAAO,IAAI,CAAC;AAC7C,oBAAiB;AAEjB,OAAI,YAAY,MAAM,OACpB,QAAO;AAGT;;;AAIJ,QAAO,UAAU;EACf;EACA;EACA;EACA;EACA;EACA;EACD;;;;;CC3MD,MAAM,EAAE,UAAA,eAAa,QAAQ,SAAS;CACtC,MAAM,EAAE,UAAU,cAAc,uBAAA,oBAAA;CAChC,MAAM,aAAA,qBAAA;CACN,MAAM,EAAE,+BAA+B,wCAAA,sBAAA;CAEvC,MAAM,4BAA4B;CAClC,MAAM,gBAAgB,IAAI,IAAI;EAAC;EAAO;EAAQ;EAAO,CAAC;CAEtD,MAAM,0BAA0B,IAAI,IAAI;EACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;;;;CAKF,SAAS,iBAAiB,QAAQ,MAAM;AACtC,SAAO;GAAE,MAAM;GAAS;GAAO;;;;;CAMjC,SAAS,eAAe,UAAU;AAChC,SAAO,YAAY,SAAS,SAAS;;;;;;;;;;;CAYvC,eAAe,aAAa,YAAY,QAAQ,QAAQ;EACtD,MAAM,EACJ,KACA,QACA,gBAAgB,oBAChB,MACA,QACA,UACA,iBACA,MACA,mBACE;EAEJ,MAAM,YAAY,SAAS,IAAI;EAC/B,MAAM,WAAW,OAAO,aAAa;EAIrC,MAAM,iBAAiB,mBAAmB,OAAO;AAEjD,MAAI,SACF,gBAAe,IAAI,WAAW,SAAS;EAGzC,MAAM,cAAc,WAAW,mBAAmB,UAAU;AAC5D,MAAI,YACF,gBAAe,IAAI,UAAU,OAAO;EAItC,MAAM,mBAAmB,EAAE;AAC3B,OAAK,MAAM,QAAQ,mBAAmB,OAAO,CAC3C,KAAI,CAAC,oCAAoC,KAAK,CAC5C,kBAAiB,KAAK,KAAK;EAG/B,MAAM,iBAAiB,gBACpB,CAAC,cAAc,IAAI,SAAS,IAAI,iBAAiB,SAAS,KAAK;EAGlE,MAAM,SAAS;GACb,SAAS;GACT;GACA;GACA,UAAU;GACV;GACA;GACD;AACD,MAAI,eACF,QAAO,YAAY,EAAE,eAAe,kBAAkB;EAIxD,MAAM,WAAW,MAAM,oBAAoB,YAAY;GACrD;GACA,SAAS;GACT;GACA;GACD,EAAE,OAAO;AAEV,MAAI,eAAe,SAAS,CAC1B,QAAO;EAIT,MAAM,0CAA0B,IAAI,KAAK;EACzC,MAAM,EAAE,YAAY;EAGpB,MAAM,gBAAgB,SAAS,SAAS,IAAI;AAG5C,MAF8B,WAAW,mBAAmB,cAAc,IAAI,cAAc,WAAW,QAE5E;GAEzB,MAAM,UAAU,QAAQ,IAAI,gCAAgC;GAC5D,MAAM,OAAO,IAAI,IAAI,UAAU,QAAQ,MAAM,CAAC,aAAa,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAClG,QAAK,MAAM,CAAC,WAAW,QACrB,KAAI,CAAC,wBAAwB,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAC7E,yBAAwB,IAAI,OAAO;;AAMzC,OAAK,MAAM,CAAC,WAAW,QACrB,KAAI,8BAA8B,OAAO,CACvC,yBAAwB,IAAI,OAAO;AAIvC,WAAS,0BAA0B;AACnC,SAAO;;;;;;;;CAST,SAAS,oBAAoB,YAAY,MAAM,QAAQ;AACrD,MAAI,OAAO,QACT,QAAO,QAAQ,QAAQ,kBAAkB,CAAC;AAG5C,SAAO,IAAI,SAAQ,YAAW;GAC5B,IAAI,SAAS,YAAY;GAEzB,SAAS,UAAU;AACjB,kCAA8B,OAAO,OAAO;AAC5C,gBAAY,SAAS;AACrB,YAAQ,kBAAkB,CAAC;;AAE7B,UAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,MAAM,CAAC;AAEzD,cAAW,SAAS,MAAM;IACxB,eAAe,YAAY,KAAK;AAC9B,eAAU;AACV,oCAA8B,WAAU,WAAW,MAAM,OAAO;AAChE,SAAI,OAAO,QACT,YAAW,MAAM,OAAO,OAAO;;IAGnC,gBAAgB,YAAY,YAAY,SAAS,YAAY;AAC3D,SAAI,OAAO,QACT;AAIF,kBAAa,IAAIC,WAAS,EAAE,OAAO,IAAI,CAAC;AACxC,gBAAW,GAAG,eAAe,GAAG;KAGhC,MAAM,WAAW,aAAa,QAAQ,SAAS;AAE/C,aAAQ;MACN,QAAQ;MACR,YAAY,cAAc;MAC1B,SAAS,WAAW,SAAS,QAAQ;MACrC,MAAM;MACN,KAAK;MACN,CAAC;;IAEJ,eAAe,YAAY,OAAO;AAChC,SAAI,OAAO,QACT;AAEF,gBAAW,KAAK,MAAM;;IAExB,gBAAgB;AACd,YAAO,oBAAoB,SAAS,QAAQ;AAC5C,iBAAY,KAAK,KAAK;;IAExB,gBAAgB,YAAY,KAAK;AAC/B,YAAO,oBAAoB,SAAS,QAAQ;AAC5C,iBAAY,QAAQ,IAAI;AACxB,aAAQ,iBAAiB,IAAI,CAAC;;IAEjC,CAAC;IACF;;AAGJ,SAAQ,eAAe;AACvB,SAAQ,iBAAiB;;;;;CC5MzB,MAAM,EAAE,eAAA,kBAAA;AAGR,SAAQ,sBAAqB,UAAS;AACpC,SAAO,KAAK,MAAM,WAAW,MAAM,CAAC;;;;;;CCJtC,MAAM,cAAA,eAAA;CACN,MAAM,EAAE,eAAA,kBAAA;CAMR,MAAM,2BAA2B,WAAW,yCAAyC;CACrF,MAAM,iBAAiB,WAAW,eAAe;CACjD,MAAM,cAAc,WAAW,iBAAiB;CAGhD,SAAS,mBAAmB;EAC1B,IAAI,WAAW;AACf,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,aAAY,KAAK,MAAM,KAAK,QAAQ,GAAG,GAAG,CAAC,SAAS,GAAG;AAEzD,SAAO,WAAW,SAAS;;CAI7B,SAAS,WAAW,MAAM,aAAa,OAAO;AAC5C,MAAI,WACF,QAAO,YAAY,UAAU,KAAK;MAElC,QAAO,KAAK,QAAQ,uBAAuB,OAAO;EAGpD,MAAM,UAAU,WAAW,KAAK;EAChC,MAAM,kBAAkB,EAAE;AAC1B,OAAK,MAAM,gBAAgB,QACzB,KAAI,iBAAiB,GACnB,iBAAgB,KAAK,IAAI,IAAI,GAAG;WACvB,iBAAiB,GAC1B,iBAAgB,KAAK,IAAI,IAAI,GAAG;WACvB,iBAAiB,GAC1B,iBAAgB,KAAK,IAAI,IAAI,GAAG;MAEhC,iBAAgB,KAAK,aAAa;AAItC,SAAO,IAAI,WAAW,gBAAgB;;AAIxC,SAAQ,sBAAqB,YAAW;EACtC,MAAM,WAAW,kBAAkB;EACnC,MAAM,eAAe,EAAE;AAEvB,OAAK,MAAM,SAAS,SAAS;GAC3B,MAAM,aAAa;IACjB;IAAI;IACJ,GAAG;IACH;IAAM;IACP;AAED,cAAW,KAAK,GAAG,0BAA0B,GAAG,WAAW,MAAM,KAAK,EAAE,GAAe;GAEvF,IAAI,EAAE,UAAU;AAChB,OAAI,OAAO,UAAU,UAAU;AAC7B,eAAW,KAAK,IAAM,IAAM,IAAM,GAAK;AAEvC,YAAQ,MAAM,QAAQ,uBAAuB,OAAO;AAEpD,eAAW,KAAK,GAAG,WAAW,MAAM,CAAC;AAErC,eAAW,KAAK,IAAM,GAAK;AAE3B,iBAAa,KAAK,IAAI,WAAW,WAAW,CAAC;UACxC;AAGL,eAAW,KAAK,GAAG,gBAAgB,GAAG,WAAW,MAAM,MAAM,KAAK,EAAE,IAAM,IAAM,GAAK;IAErF,MAAM,OAAO,MAAM,SAAS,KAAK,MAAM,OAAO;AAC9C,eAAW,KAAK,GAAG,aAAa,GAAG,WAAW,KAAK,CAAC;AAEpD,eAAW,KAAK,IAAM,IAAM,IAAM,GAAK;AAEvC,iBAAa,KACX,IAAI,WAAW,WAAW,EAE1B,MAAM,QACN,IAAI,WAAW,CAAC,IAAM,GAAK,CAAC,CAC7B;;;AAIL,eAAa,KACX,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EACxB,UACA,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EACxB,IAAI,WAAW,CAAC,IAAM,GAAK,CAAC,CAC7B;AAED,SAAO;GAAE;GAAU;GAAc;;;;;;CC/FnC,MAAM,EAAE,QAAQ,sBAAsB,mBAAmB,QAAQ,sBAAsB;CACvF,MAAM,EAAE,YAAY,QAAQ,OAAO;CACnC,MAAM,EAAE,UAAU,iBAAA,oBAAA;CAClB,MAAM,EAAE,gBAAgB,aAAa,sBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;CACrC,MAAM,QAAA,gBAAA;CACN,MAAM,EAAE,aAAA,eAAA;CACR,MAAM,eAAA,sBAAA;CACN,MAAM,WAAA,iBAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,uBAAA,8BAAA;CACN,MAAM,gBAAA,uBAAA;CACN,MAAM,EAAE,cAAc,eAAe,yBAAA,sBAAA;CACrC,MAAM,aAAA,qBAAA;CACN,MAAM,EAAE,6BAAA,sBAAA;CACR,MAAM,EAAE,cAAc,mBAAA,mBAAA;CACtB,MAAM,gCAAA,wCAAA,CAA4E;CAClF,MAAM,EAAE,sBAAA,kBAAA;CACR,MAAM,EAAE,0BAAA,uBAAA;CACR,MAAM,EAAE,6CAA6C,sBAAA,qBAAA;CACrD,MAAM,EAAE,iCAAA,+BAAA;CACR,MAAM,EAAE,YAAY,eAAA,kBAAA;CACpB,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,uBAAA,cAAA;CACR,MAAM,EAAE,8BAAA,iBAAA;CACR,MAAM,EAAE,uBAAA,6BAAA;CAER,MAAM,iBAAiB,QAAQ,QAAQ,uBAAuB;CAG9D,SAAS,eAAe,KAAK,SAAS;AACpC,MAAI,IAAI,OAAO,SACb,QAAO,IAAI,WAAW,IAAI,OAAO,SAAS,QAAQ,CAAC;AAErD,SAAO,IAAI,MAAM,GAAG,QAAQ;;CAG9B,IAAI,aAAa;CAEjB,SAAS,gBAAgB;AACvB,MAAI,CAAC,YAAY;AACf,gBAAa,IAAI,OAAO,eAAe;AACvC,cAAW,OAAO;AAClB,cAAW,GAAG,cAAc;AAC1B,iBAAa;KACb;;AAEJ,SAAO;;CAGT,MAAM,yBAAyB,MAAS;CAUxC,SAAS,sBAAsB,QAAQ;EACrC,MAAM,eAAe,IAAI,kBAAkB,EAAE;EAC7C,MAAM,QAAQ,IAAI,WAAW,aAAa;EAC1C,MAAM,EAAE,OAAO,UAAU,IAAI,gBAAgB;AAE7C,iBAAe,CAAC,YAAY;GAAE;GAAc,cAAc;GAAO;GAAQ,EAAE,CAAC,MAAM,CAAC;AAGnF,MADmB,QAAQ,KAAK,OAAO,GAAG,GAAG,uBAAuB,KACjD,YACjB,OAAM,IAAI,MAAM,4BAA4B;EAG9C,MAAM,MAAM,qBAAqB,MAAM;AACvC,MAAI,CAAC,IACH,OAAM,IAAI,MAAM,4CAA4C;AAE9D,SAAO,IAAI;;CAGb,MAAM,eAAe,OAAO,OAAO;EACjC,QAAQ;EACR,QAAQ;EACR,kBAAkB;EAClB,SAAS;EACT,MAAM;EACP,CAAC;CAEF,MAAM,cAAc;CAEpB,MAAM,wBAAwB,IAAI,IAAI;EAAC;EAAW;EAAO;EAAQ;EAAQ;EAAO;EAAS,CAAC;CAC1F,MAAM,0BAA0B,IAAI,IAAI;EAAC;EAAS;EAAS;EAAU,CAAC;CAItE,SAAS,cAAc,KAAK,YAAY;AAEtC,MAAI,SAAS;AACb,oBAAkB,KAAK,SAAS,aAAa,OAAO,IAAI,eAAe,CAAC,YAAY,eAAe,CAAC,CAAC;;CAGvG,SAAS,kBAAkB,KAAK,OAAO,WAAW;EAChD,MAAM,EAAE,WAAW;AAEnB,MAAI,aAAa,aAAa;AAC9B,MAAI,QAAQ;AAEZ,4BAA0B,IAAI;AAE9B,MAAI,IAAI,aACN,OAAM;AAGR,cAAY,oBAAoB,IAAI;AAEpC,MAAI,CAAC,IAAI,iBAAiB;AACxB,OAAI,kBAAkB;AAEtB,OAAI,IAAI,iBAAiB;AACvB,gBAAY,OAAO,QAAQ,eAAe;KAAE,QAAQ;KAAG,OAAO;KAAG,kBAAkB;KAAO,CAAC;AAC3F,gBAAY,WAAW,QAAQ,eAAe;KAAE,QAAQ;KAAG,OAAO;KAAG,kBAAkB;KAAO,CAAC;;;AAInG,cAAY,OAAO,KAAK,eAAe;GAAE,QAAQ;GAAG,OAAO;GAAG,kBAAkB;GAAO,CAAC;AACxF,cAAY,WAAW,KAAK,eAAe;GAAE,QAAQ;GAAG,OAAO;GAAG,kBAAkB;GAAO,CAAC;;CAG9F,SAAS,0BAA0B,KAAK;AACtC,MAAI,iBACF,IAAI,iBACJ,IAAI,qBACJ,IAAI,oBAAoB;AAE1B,MAAI,mBAAmB,IAAI,YAAY;AACvC,MAAI,SAAS;AACb,MAAI,aAAa;;CAGnB,IAAM,qBAAN,cAAiC,8BAA8B;EAC7D,YAAY,QAAQ;AAClB,SAAM,OAAO;GAEb,MAAM,EAAE,mBAAmB;AAE3B,QAAK,SAAS,qBAAqB,WAAW,OAAO;AAGrD,QAAK,aAAa,aAAa;AAC/B,QAAK,cAAc;AACnB,QAAK,SAAS;AACd,QAAK,aAAa;AAGlB,QAAK,eAAe;AACpB,QAAK,mBAAmB;AACxB,QAAK,YAAY;AACjB,QAAK,QAAQ;AACb,QAAK,UAAU,KAAA;AACf,QAAK,gBAAgB;AACrB,QAAK,kBAAkB,IAAI,YAAY;AACvC,QAAK,YAAY,eAAe;AAChC,QAAK,OAAO;AACZ,QAAK,WAAW;AAChB,QAAK,QAAQ,KAAA;AACb,QAAK,aAAa;AAClB,QAAK,oBAAoB;AACzB,QAAK,mBAAmB;AACxB,QAAK,kBAAkB,eAAe;AACtC,QAAK,cAAc,OAAO;AAC1B,QAAK,aAAa,eAAe;AACjC,QAAK,YAAY,eAAe;AAChC,QAAK,UAAU,OAAO;AACtB,QAAK,aAAa,OAAO,UAAU;AAGnC,QAAK,cAAc;AACnB,QAAK,QAAQ;AACb,QAAK,cAAc;AACnB,QAAK,gBAAgB;AACrB,QAAK,aAAa;AAClB,QAAK,aAAa;AAClB,QAAK,iBAAiB;AACtB,QAAK,iBAAiB;AACtB,QAAK,qBAAqB;AAC1B,QAAK,oBAAoB;AACzB,QAAK,mBAAmB,IAAI,YAAY;AACxC,QAAK,2CAA2B,IAAI,KAAK;AACzC,QAAK,SAAS;AACd,QAAK,kBAAkB;AACvB,QAAK,kBAAkB;AAGvB,QAAK,cAAc;AACnB,QAAK,kBAAkB,IAAI,OAAO;AAClC,QAAK,0BAA0B;;EAGjC,IAAI,eAAe;AACjB,UAAO,KAAK;;EAEd,IAAI,aAAa,cAAc;AAC7B,OAAI,KAAK,eAAe,aAAa,WAAW,KAAK,eAAe,aAAa,KAC/E,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAE5G,OAAI,KAAK,eAAe,aAAa,UAAU,KAAK,aAClD,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,0DACA,qBACD,CAAC;AAEJ,QAAK,gBAAgB;;EAGvB,IAAI,WAAW;AACb,OAAI,KAAK,eAEP,QAAO,SAAS,kBAAkB,KAAK,eAAe;GAExD,IAAI;GAEJ,MAAM,gBAAgB,KAAK,gBAAgB,MAAM,GAAG,KAAK,wBAAwB,IAAI;AAErF,WAAQ,KAAK,cAAb;IACE,KAAK;IACL,KAAK;AACH,WAAM,KAAK;AACX;IAEF,KAAK;AACH,SAAI,CAAC,cACH,QAAO;AAET,WAAM,4CAA4C,cAAc,QAAQ,KAAK,cAAc;AAC3F;IAEF,KAAK,QAAQ;AACX,SAAI,CAAC,cACH,QAAO;KAET,MAAM,cAAc,cAAc,KAAK;AACvC,WAAM,KAAK,WAAW,KAAK,eAAe,CACxC,CAAC,IAAI,WAAW,cAAc,CAAC,EAC/B,EAAE,MAAM,eAAe,IAAI,CAC5B,CAAC;AACF;;IAEF,KAAK;AACH,WAAM,KAAK;AACX;IAEF,KAAK;AACH,SAAI,KAAK,eAAe,aAAa,QAAQ,CAAC,cAC5C,OAAM;AAGR,SAAI;AACF,YAAM,mBAAmB,cAAc;aACjC;AACN,YAAM;;AAER;;AAGJ,QAAK,iBAAiB;AAEtB,UAAO,SAAS,kBAAkB,IAAI;;EAExC,IAAI,eAAe;AACjB,OAAI,KAAK,iBAAiB,MAAM,KAAK,iBAAiB,OACpD,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAE5G,OAAI,KAAK,eAAe,aAAa,WAAW,KAAK,eAAe,aAAa,KAC/E,QAAO;AAET,OAAI,KAAK,mBACP,QAAO,KAAK;GAEd,MAAM,gBAAgB,KAAK,gBAAgB,MAAM,GAAG,KAAK,wBAAwB,IAAI;AACrF,OAAI,CAAC,cACH,QAAO;GAIT,MAAM,MAAM,iBAAiB,eADC,aAAa,KAAK,IAAI,eAAe,cAAc,IAAI,QACnB;AAElE,QAAK,qBAAqB;AAC1B,UAAO;;EAET,IAAI,cAAc;AAChB,OAAI,KAAK,iBAAiB,MAAM,KAAK,iBAAiB,WACpD,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAE5G,OAAI,KAAK,eAAe,aAAa,KACnC,QAAO;AAET,OAAI,KAAK,kBACP,QAAO,KAAK;GAEd,MAAM,gBAAgB,KAAK,gBAAgB,MAAM,GAAG,KAAK,wBAAwB,IAAI;AACrF,OAAI,CAAC,cACH,QAAO;GAGT,MAAM,cAAc,cAAc,KAAK;GACvC,IAAI,SAAS;GACb,IAAI,QAAQ;GACZ,MAAM,SAAS,SAAS,MAAM,YAAY;AAC1C,OAAI,QAAQ;AACV,aAAS,OAAO,QAAQ;AACxB,YAAQ,OAAO,OAAO;AACtB,QAAI,CAAC,SAAS,CAAC,OACb,QAAO;;AAIX,OAAI,KAAK,iBAAiB,MAAM,OAC9B,QAAO;GAGT,MAAM,WAAW,aAAa,KAAK,IAAI,YAAY,eAAe,cAAc,CAAC,IAAI;GACrF,MAAM,UAAU,iBAAiB,eAAe,SAAS;AAEzD,OAAI,CAAC,QACH,QAAO;GAET,MAAM,MAAM,SAAS,WAAW,KAAK,eAAe,EAAE,EAAE,EACtD,SAAS;IACP,KAAK,KAAK;IACV,cAAc,IAAI,KAAK,KAAK,iBAAiB,IAAI,gBAAgB,CAAC;IAClE,aAAa,SAAS,SAAS;IAC/B,WAAW;KAAE,qBAAqB,KAAA;KAAW,2BAA2B;KAAI;IAC5E;IACA,cAAc,KAAK,eAAe;IACnC,EACF,CAAC;AACF,OAAI;AACF,sBAAkB,SAAS,IAAI;WACzB;AACN,SAAK,oBAAoB;AACzB,WAAO;;AAET,OAAI,OAAO;AACX,QAAK,oBAAoB;AACzB,UAAO;;EAGT,IAAI,UAAU;AACZ,UAAO,KAAK;;EAEd,IAAI,QAAQ,KAAK;AACf,OAAI,KAAK,aACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,0DACA,qBACD,CAAC;AAEJ,QAAK,WAAW;AAChB,gBAAa,KAAK,WAAW;AAC7B,OAAI,MAAM,KAAK,KAAK,WAClB,MAAK,aAAa,WAChB,KAAK,YACL,KAAK,IAAI,GAAG,wBAAQ,IAAI,MAAM,EAAE,SAAS,GAAG,KAAK,eAAe,CACjE;QACI;AACL,SAAK,aAAa;AAClB,SAAK,gBAAgB;;;EAIzB,IAAI,kBAAkB;AACpB,UAAO,KAAK;;EAEd,IAAI,gBAAgB,KAAK;AACvB,OAAI,EAAE,KAAK,eAAe,aAAa,UAAU,KAAK,eAAe,aAAa,QAChF,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAE5G,OAAI,KAAK,MACP,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAE5G,QAAK,mBAAmB;;EAG1B,QAAQ;AAEN,gBAAa,KAAK,WAAW;AAC7B,QAAK,aAAa;AAClB,QAAK,gBAAgB;AAErB,OAAI,KAAK,aAAa;AACpB,SAAK,YAAY,OAAO;AACxB,SAAK,cAAc;;AAGrB,OAAI,KAAK,aAAa;AAGpB,SAAK,aAAa,aAAa;AAC/B,SAAK,QAAQ;AACb,8BAA0B,KAAK;AAC/B;;AAGF,OAAK,KAAK,eAAe,aAAa,UAAU,KAAK,SACjD,KAAK,eAAe,aAAa,oBACjC,KAAK,eAAe,aAAa,QACnC,mBAAkB,MAAM,QAAQ;AAGlC,OAAI,KAAK,eAAe,aAAa,MAAM;AACzC,SAAK,aAAa,aAAa;AAE/B,8BAA0B,KAAK;;;EAGnC,wBAAwB;AACtB,OAAI,KAAK,eAAe,aAAa,UAAU,KAAK,eAAe,aAAa,OAC9E,QAAO;GAET,MAAM,SAAS,EAAE;AACjB,QAAK,MAAM,CAAC,KAAK,UAAU,KAAK,kBAAkB;IAChD,MAAM,QAAQ,IAAI,aAAa;AAC/B,QAAI,CAAC,KAAK,yBAAyB,IAAI,MAAM,CAC3C,QAAO,KAAK,GAAG,MAAM,IAAI,QAAQ;;AAGrC,UAAO,OAAO,KAAK,OAAO;;EAG5B,kBAAkB,QAAQ;AACxB,OAAI,KAAK,eAAe,aAAa,UAAU,KAAK,eAAe,aAAa,OAC9E,QAAO;GAET,MAAM,WAAW,OAAO,aAAa;AACrC,OAAI,KAAK,yBAAyB,IAAI,SAAS,CAC7C,QAAO;AAET,UAAO,KAAK,iBAAiB,IAAI,SAAS;;EAG5C,KAAK,QAAQ,KAAK,cAAc,MAAM,UAAU;GAC9C,MAAM,EAAE,mBAAmB;AAC3B,OAAI,CAAC,eACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,OAAI,CAAC,YAAY,KAAK,OAAO,CAC3B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,kDACA,cACD,CAAC;GAEJ,MAAM,kBAAkB,OAAO,aAAa;AAC5C,OAAI,wBAAwB,IAAI,gBAAgB,CAC9C,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,8BAA8B,gBAAgB,CAAC;AAGhG,OAAI,KAAK,eAAe,OAAO,KAAK,YAAY,UAAU,WACxD,MAAK,YAAY,OAAO;AAG1B,OAAI,sBAAsB,IAAI,gBAAgB,CAC5C,UAAS;AAEX,OAAI,OAAO,iBAAiB,YAC1B,MAAK,eAAe,CAAC;OAErB,MAAK,eAAe;AAEtB,OAAI,KAAK,iBAAiB,KAAK,aAC7B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,0DACA,qBACD,CAAC;AAEJ,OAAI,KAAK,gBAAgB,KAAK,SAC5B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,0DACA,qBACD,CAAC;AAEJ,QAAK,UAAU;GAEf,MAAM,YAAY,SAAS,KAAK,EAAE,SAAS,eAAe,SAAS,EAAE,CAAC;AACtE,OAAI,CAAC,UACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,kDACA,cACD,CAAC;AAGJ,OAAI,QAAS,YAAY,CAAC,UAAU,UAAW;AAC7C,SAAK,QAAQ;KACX;KACA,MAAM;KACP;AACD,cAAU,WAAW;AACrB,cAAU,WAAW;;AAGvB,QAAK,OAAO,aAAa,UAAU;AACnC,QAAK,kBAAkB,IAAI,YAAY;AACvC,QAAK,aAAa;AAElB,QAAK,QAAQ;AACb,QAAK,kBAAkB;AACvB,QAAK,QAAQ,KAAA;AACb,QAAK,cAAc;AAEnB,QAAK,iBAAiB;AACtB,QAAK,iBAAiB;AACtB,QAAK,qBAAqB;AAC1B,QAAK,oBAAoB;AACzB,QAAK,mBAAmB,IAAI,YAAY;AACxC,QAAK,0BAA0B;AAC/B,QAAK,cAAc;AACnB,QAAK,SAAS;AACd,QAAK,aAAa;AAElB,oBAAiB,MAAM,aAAa,OAAO;;EAG7C,iBAAiB,MAAM;AACrB,OAAI,KAAK,eAAe,aAAa,WAAW,KAAK,eAAe,aAAa,KAC/E,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,QAAK,oBAAoB;GAGzB,MAAM,SAAS,SAAS,MAAM,KAAK;AACnC,OAAI,QAAQ;AACV,SAAK,oBAAoB,OAAO;IAEhC,MAAM,UAAU,OAAO,WAAW,IAAI,UAAU;AAChD,QAAI,QACF,MAAK,mBAAmB,YAAY,QAAQ;;;EAMlD,KAAK,MAAM;GACT,MAAM,EAAE,QAAQ,mBAAmB;AAEnC,OAAI,CAAC,eACH,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,OAAI,KAAK,eAAe,aAAa,UAAU,KAAK,MAClD,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;AAG5G,QAAK,cAAc;AAEnB,OAAI;AACF,QAAI,KAAK,YAAY,SAAS,KAAK,YAAY,OAC7C,QAAO;AAGT,QAAI,SAAS,MAAM;KACjB,IAAI,uBAAuB;AAE3B,SAAI,SAAS,OAAO,KAAK,CAEvB,MAAK,QAAQ,WAAW,sBAAsB,MAAM,EAAE,mBAAmB,OAAO,CAAC,CAAC;UAC7E;MACL,MAAM,EAAE,MAAM,eAAe,SAAS,YAAY,KAAK;AACvD,WAAK,QAAQ;AACb,6BAAuB;;KAGzB,MAAM,4BAA4B,KAAK,gBAAgB,IAAI,eAAe;AAE1E,SAAI,8BAA8B;UAC5B,SAAS,OAAO,KAAK,IAAI,OAAO,SAAS,UAAU;OACrD,MAAM,SAAS,SAAS,MAAM,0BAA0B;AACxD,WAAI,QAAQ;QACV,MAAM,UAAU,OAAO,WAAW,IAAI,UAAU;AAChD,YAAI,WAAW,CAAC,0BAA0B,SAAS,QAAQ,EAAE;AAC3D,gBAAO,WAAW,IAAI,WAAW,QAAQ;AACzC,cAAK,gBAAgB,IAAI,gBAAgB,OAAO,UAAU,CAAC;;;;gBAIxD,SAAS,OAAO,KAAK,CAC9B,KAAI,KAAK,iBAAiB,OACxB,MAAK,gBAAgB,IAAI,gBAAgB,0BAA0B;SAEnE,MAAK,gBAAgB,IAAI,gBAAgB,gCAAgC;cAElE,yBAAyB,KAClC,MAAK,gBAAgB,IAAI,gBAAgB,qBAAqB;;aAG1D;AACR,QAAI,KAAK,YACP,MAAK,cAAc;QAEnB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;;AAI9G,OAAI,OAAO,KAAK,OAAO,gBAAgB,CAAC,SAAS,EAC/C,MAAK,kBAAkB;AAIzB,OAAI,KAAK,SAAS,KAAK,MAAM,eAAe,EAC1C,MAAK,QAAQ;AAMf,OAAI,CAAC,KAAK,MACR,MAAK,kBAAkB;AAGzB,OAAI,KAAK,cAAc;AACrB,SAAK,yBAAyB,sBAAsB,KAAK,mBAAmB,CAAC,CAAC;AAE9E,SAAK,aAAa,aAAa;AAE/B,QAAI,KAAK,QAAQ;AACf,mBAAc,MAAM,KAAK,OAAO;AAChC,WAAM,aAAa,OAAO,KAAK,eAAe,CAAC,KAAK,QAAQ,eAAe,CAAC;WACvE;KACL,MAAM,gBAAgB,KAAK,iBAAiB,IAAI,iBAAiB,IAAI;KACrE,MAAM,aAAa,SAAS,cAAc,IAAI,KAAK,eAAe;KAClE,MAAM,cAAc,EAAE,kBAAkB,OAAO;AAC/C,SAAI,eAAe,GAAG;AACpB,kBAAY,QAAQ;AACpB,kBAAY,SAAS;AACrB,kBAAY,mBAAmB;;AAEjC,iBAAY,YAAY,MAAM,eAAe,YAAY;AACzD,sBAAiB,MAAM,aAAa,KAAK;AACzC,iBAAY,QAAQ,MAAM,eAAe,YAAY;AACrD,iBAAY,WAAW,MAAM,eAAe,YAAY;;UAErD;AACL,SAAK,QAAQ;AACb,SAAK,0BAA0B;AAC/B,SAAK,kBAAkB,IAAI,OAAO;AAElC,QAAI,SAAS,QAAQ,SAAS,GAC5B,MAAK,kBAAkB;QAEvB,MAAK,kBAAkB;IAIzB,MAAM,cAAc,KAAK,QAAQ,KAAK,MAAM,aAAa;IACzD,MAAM,iBAAiB;KACrB,kBAAkB,cAAc;KAChC,OAAO;KACP,QAAQ;KACT;IAID,MAAM,kBAAkB,IAAI,iBAAiB;AAC7C,SAAK,cAAc;IAGnB,MAAM,sBAAsB,EAC1B,aAAa;AACX,UAAK,cAAc;AACnB,qBAAgB,OAAO;OAE1B;AACD,QAAI,KAAK,gBACP,MAAK,gBAAgB,IAAI,oBAAoB;AAI/C,gBAAY,aAAa,MAAM,cAAc;AAE7C,QAAI,CAAC,KAAK,mBAAmB,KAAK,gBAChC,aAAY,aAAa,QAAQ,eAAe,eAAe;AAKjE,QAAI,KAAK,eAAe,aAAa,UAAU,CAAC,KAAK,SAAS,gBAAgB,OAAO,SAAS;AAC5F,SAAI,KAAK,gBACP,MAAK,gBAAgB,OAAO,oBAAoB;AAElD;;AAIF,KAAC,YAAY;AACX,SAAI;MACF,MAAM,WAAW,MAAM,aACrB,KAAK,aACL;OACE,KAAK,KAAK;OACV,QAAQ,KAAK;OACb,gBAAgB,KAAK;OACrB,MAAM,KAAK;OACX,QAAQ,KAAK;OACb,UAAU,KAAK;OACf,WAAW,KAAK;OAChB,iBAAiB,KAAK;OACtB,MAAM,KAAK;OACX,WAAW,KAAK;OAChB,gBAAgB,KAAK;OACtB,EACD,gBAAgB,OACjB;AAGD,UAAI,eAAe,SAAS,EAAE;AAC5B,WAAI,gBAAgB,OAAO,QAEzB;AAEF,qBAAc,MAAM,SAAS,OAAO,WAAW,gBAAgB;AAC/D;;AAIF,UAAI,CAAC,KAAK,iBAAiB;AACzB,YAAK,kBAAkB;AACvB,WAAI,KAAK,iBAAiB;AACxB,uBAAe,SAAS,eAAe;AACvC,oBAAY,YAAY,QAAQ,eAAe,eAAe;AAC9D,oBAAY,QAAQ,QAAQ,eAAe,eAAe;AAC1D,oBAAY,WAAW,QAAQ,eAAe,eAAe;;;MAKjE,MAAM,EAAE,SAAS,4BAA4B;AAE7C,WAAK,cAAc,SAAS;AAC5B,WAAK,SAAS,SAAS;AACvB,WAAK,aAAa,SAAS;AAC3B,WAAK,mBAAmB;AACxB,WAAK,2BAA2B;MAKhC,MAAM,kBAAkB,QAAQ,IAAI,mBAAmB;MACvD,MAAM,gBAAgB,QAAQ,IAAI,iBAAiB,IAAI;MACvD,MAAM,eAAe,SAAS,cAAc,IAAI;MAChD,MAAM,cAAc;OAAE,kBAAkB;OAAO,QAAQ;OAAG,OAAO;OAAG;AACpE,UAAI,iBAAiB,KAAK,CAAC,iBAAiB;AAC1C,mBAAY,QAAQ;AACpB,mBAAY,mBAAmB;;AAIjC,WAAK,iBAAiB,IAAI,WAAW,KAAK,gBAAgB;AAC1D,WAAK,iBAAiB;AACtB,WAAK,qBAAqB;AAC1B,WAAK,oBAAoB;AAEzB,uBAAiB,MAAM,aAAa,iBAAiB;MAGrD,IAAI;AAGJ,UAAI,SAAS,KACX,YAAW,MAAM,SAAS,SAAS,MAAM;AAEvC,WAAI,gBAAgB,OAAO,QACzB;AAIF,YAAK,2BAA2B,MAAM;AACtC,WAAI,KAAK,2BAA2B,KAAK,iBAAiB;AACxD,aAAK,mBAAmB;AACxB,eAAO,KAAK,2BAA2B,KAAK,gBAC1C,MAAK,mBAAmB;QAE1B,MAAM,SAAS,IAAI,WAAW,KAAK,gBAAgB;AACnD,eAAO,IAAI,KAAK,eAAe;AAC/B,aAAK,iBAAiB;;AAExB,YAAK,eAAe,IAAI,OAAO,KAAK,0BAA0B,MAAM,OAAO;AAC3E,YAAK,iBAAiB;AACtB,YAAK,qBAAqB;AAC1B,YAAK,oBAAoB;AAEzB,WAAI,KAAK,eAAe,aAAa,iBACnC,MAAK,aAAa,aAAa;AAEjC,mBAAY,oBAAoB,KAAK;AAErC,mBAAY,SAAS,KAAK;AAC1B,WAAI,yBAAyB,YAAY,QAAQ;AAC/C,+BAAuB,YAAY;AACnC,oBAAY,YAAY,MAAM,eAAe,YAAY;;;AAM/D,UAAI,KAAK,eACP,MAAK,iBAAiB,eAAe,KAAK,gBAAgB,KAAK,wBAAwB;AAEzF,mBAAa,KAAK,WAAW;AAC7B,WAAK,aAAa;AAClB,WAAK,gBAAgB;AACrB,WAAK,cAAc;AAEnB,UAAI,KAAK,gBACP,MAAK,gBAAgB,OAAO,oBAAoB;AAIlD,UAAI,gBAAgB,OAAO,QACzB;AAIF,UAAI,yBAAyB,YAAY,OACvC,aAAY,YAAY,MAAM,eAAe,YAAY;AAE3D,uBAAiB,MAAM,aAAa,KAAK;AACzC,kBAAY,QAAQ,MAAM,eAAe,YAAY;AACrD,kBAAY,WAAW,MAAM,eAAe,YAAY;cACjD,KAAK;AACZ,WAAK,cAAc;AACnB,UAAI,KAAK,gBACP,MAAK,gBAAgB,OAAO,oBAAoB;AAGlD,UAAI,CAAC,gBAAgB,OAAO,QAC1B,eAAc,MAAM,IAAI,WAAW,OAAO,IAAI,CAAC;;QAGjD;AAEJ,QAAI,KAAK,UAAU,GAAG;AACpB,UAAK,iCAAiB,IAAI,MAAM,EAAE,SAAS;AAC3C,UAAK,mBAAmB;AACtB,WAAK,aAAa,OAAO;AACzB,UAAI,EAAE,KAAK,eAAe,aAAa,UAClC,KAAK,eAAe,aAAa,UAAU,CAAC,KAAK,SAClD,KAAK,eAAe,aAAa,OAAO;AAC1C,YAAK,QAAQ;OACb,IAAI,eAAe;AACnB,WAAI,CAAC,KAAK,iBAAiB;AACzB,oBAAY,YAAY,QAAQ,cAAc;AAC9C,yBAAiB,MAAM,aAAa,KAAK;AACzC,oBAAY,WAAW,QAAQ,cAAc;AAC7C,oBAAY,WAAW,QAAQ,cAAc;AAC7C,uBAAe;;AAEjB,mBAAY,YAAY,MAAM,cAAc;AAC5C,WAAI,CAAC,aACH,kBAAiB,MAAM,aAAa,KAAK;AAE3C,mBAAY,WAAW,MAAM,cAAc;AAC3C,mBAAY,WAAW,MAAM,cAAc;;AAE7C,WAAK,aAAa,aAAa;;AAEjC,UAAK,aAAa,WAAW,KAAK,YAAY,KAAK,QAAQ;;;;EAKjE,iBAAiB,QAAQ,OAAO;AAC9B,OAAI,KAAK,eAAe,aAAa,OACnC,OAAM,aAAa,OACjB,KAAK,eACL,CAAC,8DAA8D,oBAAoB,CACpF;AAEH,OAAI,KAAK,MACP,OAAM,aAAa,OACjB,KAAK,eACL,CAAC,oDAAoD,oBAAoB,CAC1E;AAGH,WAAQ,qBAAqB,MAAM;AAEnC,OAAI,CAAC,aAAa,OAAO,CACvB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,uBAAuB,cAAc,CAAC;AAEvF,OAAI,CAAC,cAAc,MAAM,CACvB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,wBAAwB,cAAc,CAAC;AAGxF,OAAI,yBAAyB,QAAQ,MAAM,CACzC;AAGF,QAAK,gBAAgB,QAAQ,QAAQ,MAAM;;EAM7C,oBAAoB;AAClB,UAAO;IACL,QAAQ,KAAK;IACb,KAAK,KAAK;IACV,MAAM,KAAK;IACX,gBAAgB,KAAK,gBAAgB,QAAQ;IAC7C,iBAAiB,KAAK;IACtB,UAAU,KAAK;IACf,MAAM,KAAK;IACX,cAAc,KAAK;IACnB,SAAS,KAAK;IACd,WAAW,KAAK;IAChB,WAAW,KAAK,WAAW,eAAe;IAC1C,UAAU,KAAK;IACf,QAAQ,KAAK;IACb,UAAU,KAAK;IACf,WAAW,KAAK;IACjB;;EAIH,yBAAyB,UAAU;AACjC,QAAK,SAAS,SAAS;AACvB,QAAK,aAAa,SAAS;AAC3B,QAAK,cAAc,SAAS;AAE5B,OAAI,SAAS,eAAe;AAC1B,SAAK,iBAAiB,eAAe,SAAS,eAAe,SAAS,uBAAuB;AAC7F,SAAK,0BAA0B,SAAS;;AAE1C,QAAK,mBAAmB,WAAW,SAAS,SAAS,gBAAgB;AACrE,QAAK,2BAA2B,SAAS;AACzC,QAAK,SAAS,SAAS,SAAS;AAChC,QAAK,kBAAkB,SAAS;AAEhC,OAAI,SAAS,UACX,MAAK,aAAa,MAAM,UAAU,gBAChC,SAAS,WACT,KAAK,eAAe,WAAW,MAChC;;EAKL,wBAAwB,QAAQ;AAC9B,QAAK,UAAU,OAAO;AACtB,QAAK,OAAO,OAAO;AACnB,QAAK,QAAQ,OAAO;AACpB,QAAK,kBAAkB,WAAW,SAAS,OAAO,eAAe;AACjE,QAAK,eAAe;AACpB,QAAK,mBAAmB,OAAO;AAC/B,QAAK,YAAY,OAAO;AACxB,QAAK,QAAQ,OAAO;AACpB,QAAK,gBAAgB,OAAO;AAC5B,QAAK,WAAW,OAAO;AACvB,QAAK,aAAa,OAAO;AACzB,QAAK,aAAa,OAAO,YACvB,MAAM,UAAU,gBAAgB,OAAO,UAAU,GACjD;AACF,QAAK,YAAY,OAAO;AACxB,QAAK,UAAU,OAAO;AACtB,QAAK,YAAY,OAAO;AACxB,QAAK,aAAa,OAAO;AAEzB,QAAK,aAAa,aAAa;;EAIjC,qBAAqB;GACnB,IAAI,QAAQ,KAAK;AACjB,OAAI,SAAS,OAAO,UAAU,SAC5B,SAAQ,MAAM,SAAS,QAAQ,MAAM;AAGvC,UAAO;IACL,QAAQ,KAAK;IACb,YAAY,KAAK;IACjB,aAAa,KAAK;IAClB,eAAe,KAAK;IACpB,wBAAwB,KAAK;IAC7B,iBAAiB,KAAK,iBAAiB,QAAQ;IAC/C,yBAAyB,KAAK;IAC9B;IACA,gBAAgB,KAAK;IACrB,WAAW,KAAK,WAAW,eAAe;IAC3C;;;AAIL,8BAA6B,mBAAmB,WAAW,CAAC,mBAAmB,CAAC;CAEhF,SAAS,iBAAiB,KAAK,YAAY;AACzC,MAAI,IAAI,eAAe,WACrB;AAGF,MAAI,aAAa;AAEjB,cAAY,oBAAoB,IAAI;;CAGtC,SAAS,cAAc,KAAK;AAC1B,SAAO,IAAI,qBAAqB,IAAI,iBAAiB,IAAI,eAAe;;CAG1E,SAAS,aAAa,KAAK;AACzB,MAAI,IAAI,iBACN,QAAO,IAAI;EAEb,MAAM,oBAAoB,SAAS,MAAM,IAAI,iBAAiB,IAAI,eAAe,CAAC;AAClF,MAAI,kBACF,QAAO,YAAY,kBAAkB,WAAW,IAAI,UAAU,CAAC;AAEjE,SAAO;;CAGT,SAAS,YAAY,UAAU;AAI7B,MAAI,KAAK,OAAO,SAAS,CACvB,QAAO;GACL,MAAM,SAAS;GACf,MAAM,SAAS,SAAS,KAAK,OAAO,SAAS;GAC9C;WACQ,SAAS,cAAc,SAAS,CACzC,QAAO;GACL,MAAM,IAAI,WAAW,SAAS,CAAC,MAAM,EAAE;GACvC,MAAM;GACP;WACQ,YAAY,OAAO,SAAS,CACrC,QAAO;GACL,MAAM,IAAI,WAAW,SAAS;GAC9B,MAAM;GACP;WACQ,SAAS,OAAO,SAAS,EAAE;GACpC,MAAM,EAAE,UAAU,iBAAiB,mBAAmB,SAAS,SAAS;AAExE,UAAO;IACL,MAAM,kBAAkB,aAAa;IACrC,MAAM,mCAAmC,WAAW,SAAS;IAC9D;;AAIH,SAAO;GACL,MAAM,WAAW,SAAS;GAC1B,MAAM;GACP;;AAGH,SAAQ,iBAAiB;;;;;CC9hCzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,WAAA,kBAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,sBAAA,6BAAA;CACN,MAAM,6BAAA,oCAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,4BAAA,mCAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,mCAAmC;;CAGjF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,kBAAkB;AAG7D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,4BAA0B,eAAe,SAAS,aAAa;;AAGjE,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI;EAAC;EAAU;EAAmB;EAAe,CAAC;AAEtE,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,uBAAuB,aAAa,0BAA0B;GAClE,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,KAAK,QAAQ,KAAK;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;AAGhH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,gFAAgF,UAAU,OAAO,WAClG;IAEH,MAAM,OAAO,EAAE;AACf,YAAQ,UAAU,QAAlB;KACE,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,cAAc,QAAQ;QACzC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;AAEnB;KACF,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,cAAc,QAAQ;QACzC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,WAAW,QAAQ;QACtC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;AAEnB;KACF,KAAK;MACH;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,cAAc,QAAQ;QACzC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,WAAW,QAAQ;QACtC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;WAET,UAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;WAGJ,UAAS;AAEX,YAAK,KAAK,OAAO;;AAEnB;KACF;MACE;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,cAAc,QAAQ;QACzC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,gBAAS,YAAY,WAAW,QAAQ;QACtC,SAAS;QACT,SAAS;QACV,CAAC;AACF,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;WAET,UAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;WAGJ,UAAS;AAEX,YAAK,KAAK,OAAO;;MAEnB;OACE,IAAI,SAAS,UAAU;AACvB,WAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;WAET,UAAS,YAAY,aAAa,QAAQ;QACxC,SAAS;QACT,SAAS;QACV,CAAC;WAGJ,UAAS;AAEX,YAAK,KAAK,OAAO;;;AAGvB,WAAO,QAAQ,YAAY,KAAK,GAAG,KAAK;;GAG1C,iBAAiB,MAAM,OAAO;IAC5B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4FAA4F,UAAU,OAAO,WAC9G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;;GAGtD,OAAO;IACL,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,6EAA6E;IAEhH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;cAEL,SAAS,GAAG,OAAO,IAAI,KAAK,GAAG,OAAO,IAAI,SAAS,GAAG,OAAO,CAC/D,UAAS,MAAM,eAAe,OAAO;cAC5B,MAAM,cAAc,OAAO,CACpC,UAAS,YAAY,eAAe,QAAQ;MAC1C,SAAS;MACT,SAAS;MACV,CAAC;cACO,YAAY,OAAO,OAAO,CACnC,UAAS,YAAY,mBAAmB,QAAQ;MAC9C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAIN,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,KAAK,GAAG,KAAK;;GAG1C,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,QAAQ,YAAY,OAAO;;GAGpC,kBAAkB,MAAM;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,0FACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4FAA4F,UAAU,OAAO,WAC9G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,wBAAwB;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,8FACD;AAGH,WAAO,QAAQ,YAAY,uBAAuB;;GAGpD,iBAAiB,MAAM;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2FAA2F,UAAU,OAAO,WAC7G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;;GAGtD,IAAI,qBAAqB;IACvB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,sBAAsB;;GAG3E,IAAI,mBAAmB,GAAG;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+FACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2FACV,CAAC;AAEJ,YAAQ,YAAY,wBAAwB;;GAG9C,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,YAAY,iBAAiB,GAAG;KAClC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,aAAa;;GAGnC,IAAI,kBAAkB;IACpB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,gBAAgB,GAAG;IACrB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,4FACD;AAGH,QAAI,YAAY,WAAW,GAAG;KAC5B,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,qBAAqB;;GAG3C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,MAAM,cAAc,MAAM,gBAAgB;AAC/C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;MAC7D;;GAGJ,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,gBAAgB;;GAGrE,IAAI,aAAa,GAAG;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,QAAI,GAAG;AACP,QAAI,CAAC,2BAA2B,kBAAkB,IAAI,EAAE,CACtD;AAGF,YAAQ,YAAY,kBAAkB;;GAGxC,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,yFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,wFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,eAAe;;;AAGtE,SAAO,iBAAiB,eAAe,WAAW;GAChD,MAAM,EAAE,YAAY,MAAM;GAC1B,kBAAkB,EAAE,YAAY,MAAM;GACtC,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;GAC3B,mBAAmB,EAAE,YAAY,MAAM;GACvC,uBAAuB,EAAE,YAAY,MAAM;GAC3C,kBAAkB,EAAE,YAAY,MAAM;GACtC,oBAAoB,EAAE,YAAY,MAAM;GACxC,YAAY,EAAE,YAAY,MAAM;GAChC,SAAS,EAAE,YAAY,MAAM;GAC7B,iBAAiB,EAAE,YAAY,MAAM;GACrC,QAAQ,EAAE,YAAY,MAAM;GAC5B,aAAa,EAAE,YAAY,MAAM;GACjC,QAAQ,EAAE,YAAY,MAAM;GAC5B,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,cAAc,EAAE,YAAY,MAAM;GAClC,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAkB,cAAc;IAAM;GACrE,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,kBAAkB;IAAE,OAAO;IAAG,YAAY;IAAM;GAChD,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACrC,CAAC;AACF,SAAO,iBAAiB,gBAAgB;GACtC,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACtC,kBAAkB;IAAE,OAAO;IAAG,YAAY;IAAM;GAChD,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACrC,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,6BAAA;;;;;CCppBN,MAAM,oBAAoB,IAAI,IAAI,CAAC,QAAQ,cAAc,CAAC;AAC1D,SAAQ,oBAAoB;AAE5B,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAClF,MAAM,SAAS,GAAG;AAClB,MAAI,CAAC,kBAAkB,IAAI,OAAO,CAChC,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,IAAI,OAAO,mDAAmD;AAE5G,SAAO;;;;;;CCTT,MAAM,EAAE,cAAA,gBAAA;CACR,MAAM,EAAE,UAAU,cAAc,uBAAA,oBAAA;CAChC,MAAM,EAAE,iCAAA,+BAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,EAAE,gDAAA,qBAAA;CACR,MAAM,kBAAA,2BAAA;CACN,MAAM,kBAAA,0BAAA,CAAwD;CAC9D,MAAM,OAAA,cAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,eAAA,sBAAA;CAEN,MAAM,8BAAc,IAAI,SAAS;CAEjC,IAAM,gBAAN,cAA4B,gBAAgB;EAC1C,YAAY,cAAc,CAAC,KAAK,YAAY;AAC1C,SAAM,aAAa;GAInB,MAAM,YAAY,SAAS,IAAI;AAC/B,OAAI,cAAc,KAChB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,YAAY,IAAI,gBAAgB,cAAc,CAAC;AAEhG,OAAI,UAAU,WAAW,QAAQ,UAAU,WAAW,MACpD,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,mDAAmD,UAAU,OAAO,oBACpE,cACD,CAAC;AAEJ,OAAI,UAAU,aAAa,KACzB,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,4CAA4C,UAAU,SAAS,8DAE/D,cACD,CAAC;AAGJ,QAAK,aAAa;AAClB,QAAK,iBAAiB,aAAa,UAAU;AAC7C,QAAK,cAAc;GAEnB,MAAM,YAAY;IAChB,YAAY,aAAa;IACzB;IACA,SAAS,EAEP,QAAQ,aAAa,SACtB;IACF;AAED,QAAK,MAAM,sCAAsC;AAC/C,WAAO,IAAI,UAAU,aAAa,UAAU,EAAE,UAAU;MACvD,KAAK,cAAc;AAItB,QAAK,IAAI,aAAa;GAGtB,IAAI,uBAAuB,YAAY,IAAI,aAAa,aAAa;AACrE,OAAI,yBAAyB,KAAA,GAAW;AACtC,2BAAuB,IAAI,iBAAiB;AAC5C,gBAAY,IAAI,aAAa,cAAc,qBAAqB;;AAElE,wBAAqB,IAAI,KAAK;AAI9B,QAAK,IAAI,iBAAiB,cAAc;AACtC,qBAAiB,YAAY,QAAQ,KAAK,EAAE,EAAE;KAC9C;AAEF,QAAK,IAAI,iBAAiB,YAAW,UAAS;IAG5C,MAAM,yBAAyB,KAAK,IAAI;AACxC,qBAAiB;KACf,MAAM,iBAAiB,KAAK;AAC5B,UAAK,cAAc;AACnB,UAAK,WAAW,MAAM;AACtB,UAAK,cAAc;OAClB,EAAE;KACL;AAEF,QAAK,IAAI,iBAAiB,eAAe;AACvC,qBAAiB,YAAY,SAAS,KAAK,EAAE,EAAE;KAC/C;AAEF,QAAK,IAAI,iBAAiB,UAAS,UAAS;AAC1C,qBAAiB;AAGf,UAAK,cAAc,KAAK,IAAI;AAC5B,0BAAqB,OAAO,KAAK;AACjC,iBAAY,SAAS,MAAM,YAAY;MACrC,UAAU,MAAM;MAChB,MAAM,MAAM;MACZ,QAAQ,MAAM;MACf,CAAC;OACD,EAAE;KACL;;EAGJ,WAAW,EAAE,QAAQ;GACnB,IAAI;AACJ,OAAI,OAAO,SAAS,SAClB,gBAAe;YACN,KAAK,gBAAgB,cAC9B,gBAAe,4CAA4C,MAAM,KAAK,cAAc;OAGpF,gBAAe,KAAK,OAAO,KAAK,eAAe,CAAC,KAAA,GAAW,EAAE,MAAM,IAAI,CAAC,EAAE,EACxE,2BAA2B,MAC5B,CAAC;AAGJ,eAAY,WAAW,MAAM,cAAc;IACzC,MAAM;IACN,QAAQ,mBAAmB,KAAK,WAAW;IAC5C,CAAC;;EAGJ,IAAI,MAAM;AACR,UAAO,KAAK;;EAGd,IAAI,aAAa;AAEf,UAAO,KAAK,eAAe,KAAK,IAAI;;EAGtC,IAAI,iBAAiB;AACnB,UAAO,KAAK,IAAI;;EAGlB,IAAI,aAAa;AACf,UAAO,KAAK,IAAI;;EAGlB,IAAI,WAAW;AACb,UAAO,KAAK,IAAI;;EAGlB,IAAI,aAAa;AACf,UAAO,KAAK;;EAGd,IAAI,WAAW,OAAO;AACpB,QAAK,cAAc;;EAGrB,MAAM,MAAM,QAAQ;AAClB,UAAO,sCAAsC;AAI3C,QAAI,KAAK,gBAAgB,KAAK,IAAI,OAChC,MAAK,cAAc,KAAK,IAAI;AAE9B,WAAO,KAAK,IAAI,MAAM,MAAM,OAAO;MAClC,KAAK,cAAc;;EAGxB,KAAK,MAAM;AACT,UAAO,sCAAsC;AAE3C,QAAI,KAAK,OAAO,KAAK,CACnB,QAAO,KAAK,OAAO;AAGrB,WAAO,KAAK,IAAI,KAAK,KAAK;MACzB,KAAK,cAAc;;EAKxB,iBAAiB;AACf,QAAK,kBAAkB,OAAO,OAAO,KAAK;AAC1C,OAAI,KAAK,IAAI,eAAe,KAAK,IAAI,QAAQ,KAAK,IAAI,eAAe,KAAK,IAAI,WAE5E,MAAK,IAAI,OAAO;;EAIpB,OAAO,cAAc,QAAQ;GAC3B,MAAM,uBAAuB,YAAY,IAAI,OAAO,aAAa;AACjE,OAAI,yBAAyB,KAAA,GAAW;AACtC,SAAK,MAAM,MAAM,qBACf,IAAG,gBAAgB;AAErB,gBAAY,OAAO,OAAO,aAAa;;;;CAK7C,SAAS,gCAAgC,MAAM,cAAc;AAC3D,MAAI;AACF,UAAO,MAAM;WACN,GAAG;AACV,OAAI,aAAa,WAAW,aAC1B,OAAM,aAAa,OAAO,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC;AAE9D,SAAM;;;AAIV,8BAA6B,cAAc,WAAW;EAAC;EAAQ;EAAW;EAAS;EAAQ,CAAC;AAE5F,SAAQ,iBAAiB;;;;;CChNzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,OAAA,cAAA;CACN,MAAM,sBAAA,6BAAA;CACN,MAAM,aAAA,oBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,cAAA,qBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,8BAA8B;;CAG5E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,aAAa;AAGxD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,cAAY,eAAe,SAAS,aAAa;;AAGnD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,kBAAkB,aAAa,YAAY;GAC/C,YAAY,KAAK;AACf,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kEAAkE,UAAU,OAAO,WACpF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,MAAM,SAAS,OAAO;UACpB,OAAO,OAAO,cAAc,KAAA,EAC9B,KAAI,CAAC,MAAM,SAAS,OAAO,CACzB,OAAM,IAAI,aAAa,UACrB,mFACD;WACI;OACL,MAAM,IAAI,EAAE;OACZ,MAAM,MAAM;AACZ,YAAK,IAAI,YAAY,KAAK;AACxB,mBAAW,YAAY,aAAa,UAAU;SAC5C,SAAS;SACT,SAAS;SACV,CAAC;AAEF,UAAE,KAAK,SAAS;;AAElB,gBAAS;;WAKb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAGJ,UAAS,EAAE;AAEb,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;IAE5G,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,kBAAkB,QAAQ;MAC7C,SAAS;MACT,SAAS;MACT,OAAO;MACR,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,MAAM,GAAG,KAAK;;GAG3C,KAAK,MAAM;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAG3G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,0EAA0E,UAAU,OAAO,WAC5F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,KAAK,GAAG,OAAO,EACjB;MACE,IAAI,SAAS,UAAU;AACvB,eAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,wDACV,CAAC;AACF,WAAK,KAAK,OAAO;gBAEV,MAAM,cAAc,OAAO,EACpC;MACE,IAAI,SAAS,UAAU;AACvB,eAAS,YAAY,eAAe,QAAQ;OAC1C,SAAS;OACT,SAAS;OACV,CAAC;AACF,WAAK,KAAK,OAAO;gBAEV,YAAY,OAAO,OAAO,EACnC;MACE,IAAI,SAAS,UAAU;AACvB,UAAI,YAAY,OAAO,OAAO,CAC5B,UAAS,YAAY,mBAAmB,QAAQ;OAC9C,SAAS;OACT,SAAS;OACV,CAAC;UAEF,OAAM,IAAI,aAAa,UACrB,qFACD;AAEH,WAAK,KAAK,OAAO;YAGnB;MACE,IAAI,SAAS,UAAU;AACvB,eAAS,YAAY,aAAa,QAAQ;OACxC,SAAS;OACT,SAAS;OACV,CAAC;AACF,WAAK,KAAK,OAAO;;;AAIvB,WAAO,QAAQ,YAAY,KAAK,GAAG,KAAK;;GAG1C,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,iBAAiB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;;GAG/D,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,0EACV,CAAC;AAEJ,YAAQ,YAAY,YAAY;;GAGlC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,UAAU;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW;;GAGhE,IAAI,QAAQ,GAAG;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,2EACV,CAAC;AAEJ,YAAQ,YAAY,aAAa;;GAGnC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,UAAU,GAAG;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,QAAI,CAAC,MAAM,SAAS,EAAE,CACpB,KAAI;QAEJ,KAAI,oBAAoB,QAAQ,cAAc,GAAG,EAC/C,SAAS,6EACV,CAAC;AAEJ,YAAQ,YAAY,eAAe;;GAGrC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,WAAW,GAAG;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,GAAG;AACP,QAAI,CAAC,WAAW,kBAAkB,IAAI,EAAE,CACtC;AAGF,YAAQ,YAAY,gBAAgB;;;AAGxC,SAAO,iBAAiB,UAAU,WAAW;GAC3C,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,KAAK,EAAE,YAAY,MAAM;GACzB,YAAY,EAAE,YAAY,MAAM;GAChC,gBAAgB,EAAE,YAAY,MAAM;GACpC,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,UAAU,EAAE,YAAY,MAAM;GAC9B,WAAW,EAAE,YAAY,MAAM;GAC/B,YAAY,EAAE,YAAY,MAAM;IAC/B,OAAO,cAAc;IAAE,OAAO;IAAa,cAAc;IAAM;GAChE,YAAY;IAAE,OAAO;IAAG,YAAY;IAAM;GAC1C,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACpC,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,CAAC;AACF,SAAO,iBAAiB,WAAW;GACjC,YAAY;IAAE,OAAO;IAAG,YAAY;IAAM;GAC1C,MAAM;IAAE,OAAO;IAAG,YAAY;IAAM;GACpC,SAAS;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,QAAQ;IAAE,OAAO;IAAG,YAAY;IAAM;GACvC,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,wBAAA;;;;;CC7dN,MAAM,cAAA,eAAA;AACQ,kBAAA;CAEd,MAAM,OAAA,cAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,KAAK,QAAQ,cAAc,OAAO,EAAE,SAAS,UAAU,mCAAmC,CAAC;AAEnG,QAAI,OAAO;SAEX,OAAM,IAAI,aAAa,UAAU,gDAAgD;;EAIrF;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,iBAAiB,OAAO;KAC1C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,OAAM,IAAI,aAAa,UAAU,6CAA6C;;EAIlF;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,KAAK,QAAQ,cAAc,OAAO,EAAE,SAAS,UAAU,qCAAqC,CAAC;AAErG,QAAI,OAAO;SAEX,OAAM,IAAI,aAAa,UAAU,kDAAkD;;EAIvF;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,iBAAiB,OAAO;KAC1C,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,OAAM,IAAI,aAAa,UAAU,+CAA+C;;;AAKtF,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCpET,MAAM,eAAA,sBAAA;CAEN,MAAM,YAAA,mBAAA;CAEN,MAAM,oBAAA,4BAAA,CAAoD;CAG1D,IAAM,kBAAN,cAA8B,kBAAkB;EAE9C,YAAY,cAAc,MAAM;GAC9B,MAAM,EAAE,gBAAgB,aAAa,cAAc,cAAc,KAAK;AAEtE,OACE,eAAe,aAAa,UAAU,sBACtC,eAAe,aAAa,UAAU,kBACtC,aAAa,aAAa,UAAU,sBACpC,aAAa,aAAa,UAAU,eAEpC,OAAM,aAAa,OAAO,cAAc,CAAC,mCAAmC,uBAAuB,CAAC;AAGtG,SAAM,cAAc,EAAE,EAAE;IACtB,OAAO;KACL,MAAM;KACN,QAAQ;KACT;IACD,KAAK;KACH,MAAM;KACN,QAAQ;KACT;IACF,CAAC;;;AAIN,QAAO,UAAU,EACf,gBAAgB,iBACjB;;;;;ACpCmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,kBAAA,yBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,gBAAA,uBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,gBAAc,eAAe,SAAS,aAAa;;AAGrD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,oBAAoB,aAAa,cAAc;GACnD,YAAY,MAAM;AAChB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oEAAoE,UAAU,OAAO,WACtF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,gBAAgB,QAAQ,cAAc,QAAQ,EACrD,SAAS,kDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;;AAGjF,SAAO,iBAAiB,YAAY,WAAW,GAC5C,OAAO,cAAc;GAAE,OAAO;GAAe,cAAc;GAAM,EACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CCxHN,MAAM,eAAA,sBAAA;CAEN,MAAM,YAAA,mBAAA;CACN,MAAM,EAAE,YAAY,aAAA,gBAAA;CACpB,MAAM,EAAE,kBAAA,4BAAA;CACR,MAAM,EAAE,kCAAA,wBAAA;CAER,MAAM,EAAE,uBAAuB,wBAAA,oBAAA;CAE/B,MAAM,QAAA,eAAA;CACN,MAAM,EAAE,mBAAA,iBAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CAGR,MAAM,sBAAsB;EAC1B,UAAU;EACV,WAAW;EACX,eAAe;EAChB;CAGD,IAAM,gBAAN,MAAoB;EAClB,YAAY,cAAc;AACxB,QAAK,SAAS;AACd,QAAK,aAAa,oBAAoB;AAEtC,QAAK,gBAAgB;;EAIvB,IAAI,aAAa;GACf,MAAM,SAAS,KAAK;AACpB,UAAO,SAAS,OAAO,OAAO;;EAIhC,IAAI,eAAe;GACjB,MAAM,SAAS,KAAK;AACpB,UAAO,SAAS,OAAO,SAAS;;EAIlC,IAAI,YAAY;GACd,MAAM,QAAQ,KAAK;AACnB,UAAO,QAAQ,MAAM,OAAO;;EAI9B,IAAI,cAAc;GAChB,MAAM,QAAQ,KAAK;AACnB,UAAO,QAAQ,MAAM,SAAS;;EAIhC,IAAI,cAAc;AAChB,UAAO,KAAK,WAAW,QAAQ,KAAK,OAAO;;EAI7C,IAAI,aAAa;AACf,UAAO,KAAK,UAAU,GAAG,IAAI;;EAI/B,IAAI,OAAO;AACT,OAAI,KAAK,UAAU,CACjB,QAAO;YACE,KAAK,OAAO,UACrB,QAAO;AAGT,UAAO;;EAIT,WAAW,OAAO;AAChB,OAAI,UAAU,KAAK,KAAK,UAAU,CAChC,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,wBAAwB,iBAAiB,CAAC;AAG3F,UAAO,KAAK;;EAId,SAAS,OAAO;AACd,OAAI,MAAM,UAAU,eAAe,KAAK,cAAc,UAAU,IAAI,KAAK,eAAe,EACtF,MAAK,gBAAgB,MAAM;;EAK/B,YAAY,OAAO;AACjB,OAAI,UAAU,KAAK,OACjB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,kBAAkB,gBAAgB,CAAC;AAGpF,QAAK,gBAAgB,KAAK;;EAI5B,kBAAkB;AAChB,QAAK,gBAAgB,KAAK;;EAI5B,QAAQ;AACN,QAAK,iBAAiB;;EAIxB,SAAS,MAAM,QAAQ;AACrB,OAAI,SAAS,MAAM;AACjB,SAAK,iBAAiB;AACtB;;AAGF,OAAI,KAAK,aAAa,UAAU,mBAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,sDACA,uBACD,CAAC;AAGJ,OAAI,SAAS,WAAW,KAAK,CAC3B,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,wBAAwB,iBAAiB,CAAC;AAG3F,OAAI,SAAS,KAAK,KAAK,eAAe,KAAK,cAAc,UAAU,CACjE;GAGF,MAAM,WAAW,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IACxD,OAAO;KAAE;KAAM,QAAQ;KAAG;IAC1B,KAAK;KAAE;KAAM,QAAQ;KAAG;IACzB,CAAC;AAEF,yBAAsB,UAAU,MAAM,OAAO;AAC7C,uBAAoB,UAAU,MAAM,OAAO;AAE3C,QAAK,gBAAgB,SAAS;;EAIhC,YAAY,MAAM,QAAQ;AACxB,QAAK,SAAS,MAAM,OAAO;;EAI7B,kBAAkB;AAChB,OAAI,KAAK,UAAU,CACjB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;GAG5G,MAAM,EAAE,MAAM,WAAW,KAAK,OAAO;GACrC,MAAM,WAAW,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IACxD,OAAO;KAAE;KAAM;KAAQ;IACvB,KAAK;KAAE;KAAM;KAAQ;IACtB,CAAC;AAEF,QAAK,gBAAgB,SAAS;;EAIhC,gBAAgB;AACd,OAAI,KAAK,UAAU,CACjB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,sCAAsC,oBAAoB,CAAC;GAG5G,MAAM,EAAE,MAAM,WAAW,KAAK,OAAO;GACrC,MAAM,WAAW,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IACxD,OAAO;KAAE;KAAM;KAAQ;IACvB,KAAK;KAAE;KAAM;KAAQ;IACtB,CAAC;AAEF,QAAK,gBAAgB,SAAS;;EAIhC,OAAO,MAAM,QAAQ;AACnB,OAAI,SAAS,KAAK,KAAK,eAAe,KAAK,cAAc,UAAU,CACjE;AAGF,OAAI,KAAK,UAAU,CACjB,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,oCAAoC,oBAAoB,CAAC;GAG1G,MAAM,EAAE,SAAS,cAAc;GAC/B,MAAM,WAAW;IAAE;IAAM;IAAQ;GAEjC,MAAM,WAAW,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IACxD,OAAO;KAAE;KAAM,QAAQ;KAAG;IAC1B,KAAK;KAAE;KAAM,QAAQ;KAAG;IACzB,CAAC;AAEF,OAAI,SAAS,KAAK,KAAK,KAAK,OAAO,OAAO;AACxC,0BAAsB,UAAU,SAAS,MAAM,SAAS,OAAO;AAC/D,wBAAoB,UAAU,SAAS,MAAM,SAAS,OAAO;cACpD,8BAA8B,WAAW,SAAS,IAAI,GAAG;AAClE,0BAAsB,UAAU,UAAU,MAAM,UAAU,OAAO;AACjE,wBAAoB,UAAU,SAAS,MAAM,SAAS,OAAO;UACxD;AACL,0BAAsB,UAAU,SAAS,MAAM,SAAS,OAAO;AAC/D,wBAAoB,UAAU,UAAU,MAAM,UAAU,OAAO;;AAGjE,QAAK,gBAAgB,SAAS;AAE9B,QAAK,aAAa,8BAA8B,UAAU,UAAU,KAAK,KACvE,oBAAoB,YACpB,oBAAoB;;EAIxB,iBAAiB,YAAY,cAAc,WAAW,aAAa;AACjE,OAAI,eAAe,WAAW,WAAW,IAAI,cAAc,WAAW,UAAU,CAC9E,OAAM,aAAa,OAAO,KAAK,eAAe,CAAC,mCAAmC,iBAAiB,CAAC;GAGtG,MAAM,WAAW,eAAe,KAAK,cAAc,UAAU;AAC7D,OAAI,aAAa,SAAS,WAAW,IAAI,aAAa,SAAS,UAAU,CACvE;GAGF,MAAM,SAAS;IAAE,MAAM;IAAY,QAAQ;IAAc;GACzD,MAAM,QAAQ;IAAE,MAAM;IAAW,QAAQ;IAAa;GAEtD,IAAI;AACJ,OAAI,8BAA8B,QAAQ,MAAM,KAAK,GACnD,YAAW,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IAClD,OAAO;KAAE,MAAM,OAAO;KAAM,QAAQ,OAAO;KAAQ;IACnD,KAAK;KAAE,MAAM,MAAM;KAAM,QAAQ,MAAM;KAAQ;IAChD,CAAC;OAEF,YAAW,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IAClD,OAAO;KAAE,MAAM,MAAM;KAAM,QAAQ,MAAM;KAAQ;IACjD,KAAK;KAAE,MAAM,OAAO;KAAM,QAAQ,OAAO;KAAQ;IAClD,CAAC;AAGJ,QAAK,gBAAgB,SAAS;AAE9B,QAAK,aAAa,8BAA8B,OAAO,OAAO,KAAK,KACjE,oBAAoB,YACpB,oBAAoB;;EAIxB,kBAAkB,MAAM;AACtB,OAAI,KAAK,aAAa,UAAU,mBAC9B,OAAM,aAAa,OAAO,KAAK,eAAe,CAC5C,sDACA,uBACD,CAAC;AAIJ,OADiB,eAAe,KAAK,cAAc,UAAU,KAC5C,SAAS,KAAK,CAC7B;GAGF,MAAM,SAAS,cAAc,cAAc,KAAK;GAEhD,MAAM,WAAW,MAAM,WAAW,KAAK,eAAe,EAAE,EAAE;IACxD,OAAO;KAAE;KAAM,QAAQ;KAAG;IAC1B,KAAK;KAAE;KAAM,QAAQ;KAAG;IACzB,CAAC;AAEF,yBAAsB,UAAU,MAAM,EAAE;AACxC,uBAAoB,UAAU,MAAM,OAAO;AAE3C,QAAK,gBAAgB,SAAS;;EAIhC,qBAAqB;AACnB,OAAI,CAAC,KAAK,UAAU,CAClB,MAAK,OAAO,gBAAgB;;EAKhC,aAAa,MAAM,yBAAyB;AAC1C,OAAI,KAAK,UAAU,IAAI,SAAS,KAAK,KAAK,eAAe,KAAK,cAAc,UAAU,CACpF,QAAO;GAGT,MAAM,EAAE,QAAQ,SAAS,KAAK;GAE9B,MAAM,oBAAoB,8BAA8B,QAAQ;IAAE;IAAM,QAAQ;IAAG,CAAC,KAAK;GACzF,MAAM,iBAAiB,8BAA8B,MAAM;IAAE;IAAM,QAAQ,WAAW,KAAK;IAAE,CAAC,KAAK;AAEnG,UAAO,0BACL,qBAAqB,iBACrB,qBAAqB;;EAIzB,WAAW;AACT,UAAO,KAAK,SAAS,KAAK,OAAO,UAAU,GAAG;;EAIhD,WAAW;AACT,UAAO,KAAK,WAAW;;EAIzB,IAAI,UAAU;AACZ,OAAI,CAAC,KAAK,OACR,QAAO;AAGT,UAAO,KAAK,eAAe,oBAAoB,WAC7C,KAAK,OAAO,SACZ,KAAK,OAAO;;EAIhB,IAAI,SAAS;AACX,OAAI,CAAC,KAAK,OACR,QAAO;AAGT,UAAO,KAAK,eAAe,oBAAoB,WAC7C,KAAK,OAAO,OACZ,KAAK,OAAO;;EAGhB,gBAAgB,UAAU;GACxB,MAAM,qBAAqB,KAAK,WAAW,aAGvC,aAAa,QACb,KAAK,WAAW,QAEhB,8BAA8B,SAAS,QAAQ,KAAK,OAAO,OAAO,KAAK,KACvE,8BAA8B,SAAS,MAAM,KAAK,OAAO,KAAK,KAAK;AAEvE,QAAK,SAAS;AACd,QAAK,aAAa,aAAa,OAAO,oBAAoB,gBAAgB,oBAAoB;AAG9F,OAAI,oBAAoB;IAEtB,MAAM,WAAW,KAAK,cAAc;AACpC,qBAAiB;AACf,iBAAY,mBAAmB,eAAe,SAAS,CAAC;OACvD,EAAE;;;;AAKX,QAAO,UAAU,EACf,gBAAgB,eACjB;;;;;CCnWD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,QAAA,eAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,8BAA8B;;CAG5E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,aAAa;AAGxD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,UAAU;GACd,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,WAAW,OAAO;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,gFAAgF,UAAU,OAAO,WAClG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW,GAAG,KAAK,CAAC;;GAGzE,SAAS,OAAO;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8EAA8E,UAAU,OAAO,WAChG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,MAAM,QAAQ,cAAc,QAAQ,EAC3C,SAAS,4DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,SAAS,GAAG,KAAK;;GAG9C,YAAY,OAAO;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,MAAM,QAAQ,cAAc,QAAQ,EAC3C,SAAS,+DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,YAAY,GAAG,KAAK;;GAGjD,kBAAkB;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY,iBAAiB;;GAG9C,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAG5G,WAAO,QAAQ,YAAY,OAAO;;GAGpC,SAAS,MAAM;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,8EAA8E,UAAU,OAAO,WAChG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,4DACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,SAAS,GAAG,KAAK;;GAG9C,YAAY,MAAM;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,iFAAiF,UAAU,OAAO,WACnG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,QAAQ,WAAW,KAAA,EAChC,UAAS;SAET,UAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,+DACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,YAAY,GAAG,KAAK;;GAGjD,kBAAkB;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY,iBAAiB;;GAG9C,gBAAgB;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY,eAAe;;GAG5C,OAAO,MAAM;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,0EAA0E;AAG7G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,4EAA4E,UAAU,OAAO,WAC9F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,0DACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,iBAAiB,YAAY,cAAc,WAAW,aAAa;IACjE,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,oEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,oEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,iBAAiB,QAAQ;MAC5C,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,iBAAiB,GAAG,KAAK;;GAGtD,kBAAkB,MAAM;IACtB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uFAAuF,UAAU,OAAO,WACzG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,qEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,kBAAkB,GAAG,KAAK;;GAGvD,qBAAqB;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,oBAAoB;cACvC;AACR,+DAA0D,aAAa;;;GAI3E,aAAa,MAAM;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,kFAAkF,UAAU,OAAO,WACpG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,gEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,WAAW,QAAQ;MACtC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,aAAa,GAAG,KAAK;;GAGlD,WAAW;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,QAAQ,YAAY,UAAU;;GAGvC,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc;;GAGnE,IAAI,eAAe;IACjB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa;;GAGlE,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,cAAc;IAChB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,aAAa;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,UAAU,WAAW;GAC3C,YAAY,EAAE,YAAY,MAAM;GAChC,UAAU,EAAE,YAAY,MAAM;GAC9B,aAAa,EAAE,YAAY,MAAM;GACjC,iBAAiB,EAAE,YAAY,MAAM;GACrC,OAAO,EAAE,YAAY,MAAM;GAC3B,UAAU,EAAE,YAAY,MAAM;GAC9B,aAAa,EAAE,YAAY,MAAM;GACjC,iBAAiB,EAAE,YAAY,MAAM;GACrC,eAAe,EAAE,YAAY,MAAM;GACnC,QAAQ,EAAE,YAAY,MAAM;GAC5B,kBAAkB,EAAE,YAAY,MAAM;GACtC,mBAAmB,EAAE,YAAY,MAAM;GACvC,oBAAoB,EAAE,YAAY,MAAM;GACxC,cAAc,EAAE,YAAY,MAAM;GAClC,UAAU,EAAE,YAAY,MAAM;GAC9B,YAAY,EAAE,YAAY,MAAM;GAChC,cAAc,EAAE,YAAY,MAAM;GAClC,WAAW,EAAE,YAAY,MAAM;GAC/B,aAAa,EAAE,YAAY,MAAM;GACjC,aAAa,EAAE,YAAY,MAAM;GACjC,YAAY,EAAE,YAAY,MAAM;GAChC,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAa,cAAc;IAAM;GACjE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,wBAAA;;;;;CCxjBN,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;AAEN,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,OAAO,UAAU,WACnB,OAAM,IAAI,aAAa,UAAU,UAAU,qBAAqB;EAGlE,SAAS,4BAA4B;GACnC,MAAM,UAAU,MAAM,kBAAkB,KAAK;GAC7C,IAAI;AAEJ,gBAAa,QAAQ,MAAM,OAAO,SAAS,EAAE,CAAC;AAE9C,gBAAa,YAAY,OAAO,YAAY;IAAW;IAAS,SAAS;IAAc,CAAC;AAExF,UAAO;;AAGT,4BAA0B,kBAAkB;GAC1C,IAAI,aAAa,QAAQ,UAAU,OAAO,EAAE,CAAC;AAE7C,gBAAa,YAAY,OAAO,YAAY;IAAW;IAAS,SAAS;IAAc,CAAC;AAExF,UAAO;;AAGT,4BAA0B,MAAM,iBAAiB;AACjD,4BAA0B,kBAAkB;AAE5C,SAAO;;;;;;CC9BT,MAAM,cAAA,eAAA;AACQ,kBAAA;AAEd,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,aAAa,OAAO;KACtC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCzBT,MAAM,oBAAA,eAAA;CACN,MAAM,eAAA,sBAAA;CAEN,MAAM,YAAA,mBAAA;CAEN,MAAM,EAAE,YAAA,oBAAA;CACR,MAAM,EAAE,4BAAA,wBAAA;CACR,MAAM,EAAE,gDAAA,oBAAA;CACR,MAAM,EAAE,0BAA0B,mBAAmB,6BAAA,yBAAA;CAErD,MAAM,WAAA,iBAAA;CACN,MAAM,cAAA,kBAAA;CACN,MAAM,qBAAA,4BAAA;CAEN,MAAM,sBAAsB;EAC1B;EACA;EACA;EACA;EACD;CAED,SAAS,2BAA2B,KAAK;AACvC,MAAI,CAAC,OAAO,CAAC,IAAI,OAAO,UACtB,OAAM,IAAI,UAAU,mBAAmB;AAGzC,SAAO,MAAM,KAAK,KAAK,kBAAkB,UAAU;;CAKrD,SAAS,cAAc,OAAO;AAC5B,MAAI,OAAO,UAAU,WACnB,QAAO;AAGT,MAAI;AAQF,OAPU,IAAI,MAAM,OAAO,EACzB,YAAY;AACV,WAAO,EAAE;MAEZ,CAAC,EAGK;AAEP,UAAO;UACD;AACN,UAAO;;;CAKX,IAAM,4BAAN,MAAgC;EAC9B,YAAY,cAAc;AACxB,QAAK,4BAA4B,EAAE;AACnC,QAAK,8BAA8B;AACnC,QAAK,yBAAyB,OAAO,OAAO,KAAK;AAEjD,QAAK,gBAAgB;;EAIvB,OAAO,MAAM,aAAa,SAAS;GACjC,MAAM,EAAE,kBAAkB;GAC1B,MAAM,OAAO,YAAY;AAEzB,OAAI,CAAC,cAAc,KAAK,CACtB,OAAM,IAAI,UAAU,6CAA6C;AAGnE,OAAI,CAAC,yBAAyB,KAAK,CACjC,OAAM,aAAa,OAAO,eAAe,CAAC,qDAAqD,cAAc,CAAC;AAIhH,OAD8B,KAAK,0BAA0B,MAAK,UAAS,MAAM,SAAS,KAAK,CAE7F,OAAM,aAAa,OAAO,eAAe,CACvC,0DACA,oBACD,CAAC;AAIJ,OAD8B,KAAK,0BAA0B,MAAK,UAAS,MAAM,oBAAoB,KAAK,CAExG,OAAM,aAAa,OAAO,eAAe,CACvC,iEACA,oBACD,CAAC;GAGJ,IAAI,YAAY;GAEhB,IAAI,gBAAgB;AACpB,OAAI,YAAY,KAAA,KAAa,QAAQ,QACnC,iBAAgB,QAAQ;AAG1B,OAAI,kBAAkB,MAAM;AAC1B,QAAI,yBAAyB,cAAc,CACzC,OAAM,aAAa,OAAO,eAAe,CACvC,8DACA,oBACD,CAAC;AAIJ,QADyB,wBAAwB,cAAc,KACtC,mBACvB,OAAM,aAAa,OAAO,eAAe,CACvC,GAAG,cAAc,6BACjB,oBACD,CAAC;AAGJ,gBAAY;;AAGd,OAAI,KAAK,4BACP,OAAM,aAAa,OAAO,eAAe,CACvC,6CACA,oBACD,CAAC;AAGJ,QAAK,8BAA8B;GAEnC,IAAI,mBAAmB;GACvB,IAAI,gBAAgB;GACpB,IAAI,qBAAqB,EAAE;GAC3B,IAAI,iBAAiB;GACrB,MAAM,qBAAqB;IACzB,mBAAmB;IACnB,sBAAsB;IACtB,iBAAiB;IACjB,0BAA0B;IAC3B;GAED,IAAI;AACJ,OAAI;IACF,MAAM,EAAE,cAAc;AAEtB,QAAI,OAAO,cAAc,SACvB,OAAM,IAAI,UAAU,iCAAiC;AAGvD,SAAK,MAAM,gBAAgB,qBAAqB;KAC9C,MAAM,gBAAgB,UAAU;AAEhC,SAAI,kBAAkB,KAAA,EACpB,oBAAmB,gBAAgB,YAAY,QAAQ,eAAe,eAAe,EACnF,SAAS,2BAA2B,aAAa,IAClD,CAAC;;AAIN,QAAI,mBAAmB,6BAA6B,MAAM;KACxD,MAAM,6BAA6B,KAAK;AAExC,SAAI,+BAA+B,KAAA,EACjC,sBAAqB,2BAA2B,2BAA2B;;IAI/E,IAAI,mBAAmB,EAAE;IACzB,MAAM,2BAA2B,KAAK;AACtC,QAAI,yBACF,oBAAmB,2BAA2B,yBAAyB;IAGzE,MAAM,sBAAsB,KAAK;AAEjC,uBAAmB,iBAAiB,SAAS,YAAY;AACzD,oBAAgB,iBAAiB,SAAS,SAAS;AACnD,qBAAiB,kBAAkB,QAAQ,oBAAoB;YACxD,KAAK;AACZ,kBAAc;aACN;AACR,SAAK,8BAA8B;;AAGrC,OAAI,gBAAgB,KAAA,EAClB,OAAM;GAGR,MAAM,aAAa;IACjB;IACA;IACA;IACA,iBAAiB;IACjB;IACA;IACA;IACA;IACA;IACA,mBAAmB,EAAE;IACtB;AAED,QAAK,0BAA0B,KAAK,WAAW;GAE/C,MAAM,WAAW,SAAS,eAAe,KAAK,cAAc,UAAU;GAEtE,MAAM,oBAAoB,EAAE;AAC5B,QAAK,MAAM,aAAa,4CAA4C,SAAS,CAC3E,KACG,UAAU,kBAAkB,WAAW,UAAU,eAAe,cAChE,kBAAkB,QAAQ,UAAU,aAAa,MAElD,mBAAkB,KAAK,UAAU;AAIrC,QAAK,MAAM,oBAAoB,kBAC7B,0BAAyB,kBAAkB,WAAW;AAGxD,OAAI,KAAK,uBAAuB,UAAU,KAAA,GAAW;AACnD,SAAK,uBAAuB,MAAM,QAAQ,KAAK;AAC/C,WAAO,KAAK,uBAAuB;;;EAKvC,IAAI,MAAM;GACR,MAAM,aAAa,KAAK,0BAA0B,MAAK,UAAS,MAAM,SAAS,KAAK;AACpF,UAAO,cAAc,WAAW;;EAIlC,QAAQ,aAAa;GACnB,MAAM,QAAQ,KAAK,0BAA0B,MAAK,UAAS,MAAM,oBAAoB,YAAY,gBAAgB;AACjH,UAAO,QAAQ,MAAM,OAAO;;EAI9B,YAAY,MAAM;AAChB,OAAI,CAAC,yBAAyB,KAAK,CACjC,QAAO,QAAQ,OAAO,aAAa,OACjC,KAAK,eACL,CAAC,qDAAqD,cAAc,CACrE,CAAC;GAGJ,MAAM,oBAAoB,KAAK,0BAA0B,MAAK,UAAS,MAAM,SAAS,KAAK;AAC3F,OAAI,kBACF,QAAO,QAAQ,QAAQ,kBAAkB,gBAAgB;AAG3D,OAAI,KAAK,uBAAuB,UAAU,KAAA,GAAW;IACnD,IAAI;IACJ,MAAM,UAAU,IAAI,SAAQ,MAAK;AAC/B,eAAU;MACV;AAIF,SAAK,uBAAuB,QAAQ;KAClC;KACA;KACD;;AAGH,UAAO,KAAK,uBAAuB,MAAM;;EAI3C,QAAQ,MAAM;AACZ,QAAK,MAAM,aAAa,4CAA4C,KAAK,CACvE,KAAI,UAAU,aAAa,UAAU,aACnC,mBAAkB,UAAU;;;AAMpC,QAAO,UAAU,EACf,gBAAgB,2BACjB;;;;;CCpRD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,2BAAA,kCAAA;CACN,MAAM,2BAAA,kCAAA;CACN,MAAM,2DAAA,yBAAA,CACqD;CAC3D,MAAM,4DAAA,yBAAA,CACqD;CAC3D,MAAM,OAAA,cAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,0CAA0C;;CAGxF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,yBAAyB;AAGpE,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,sBAAsB;GAC1B,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,OAAO,MAAM,aAAa;IACxB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,yBAAyB,QAAQ,cAAc,QAAQ,EAC9D,SAAS,sEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,yBAAyB,QAAQ,cAAc,QAAQ,EAC9D,SAAS,sEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;cAClC;AACR,+DAA0D,aAAa;;;GAI3E,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,qFAAqF,UAAU,OAAO,WACvG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;;GAGzC,QAAQ,aAAa;IACnB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,yBAAyB,QAAQ,cAAc,QAAQ,EAC9D,SAAS,uEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;;GAG7C,YAAY,MAAM;AAChB,QAAI;KACF,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,SAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,2FACD;AAGH,SAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,6FAA6F,UAAU,OAAO,WAC/G;KAEH,MAAM,OAAO,EAAE;KACf;MACE,IAAI,SAAS,UAAU;AACvB,eAAS,YAAY,aAAa,QAAQ;OACxC,SAAS;OACT,SAAS;OACV,CAAC;AACF,WAAK,KAAK,OAAO;;AAEnB,YAAO,MAAM,kBAAkB,QAAQ,YAAY,YAAY,GAAG,KAAK,CAAC;aACjE,GAAG;AACV,YAAO,aAAa,QAAQ,OAAO,EAAE;;;GAIzC,QAAQ,MAAM;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,uFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yFAAyF,UAAU,OAAO,WAC3G;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,uEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,6DAAyD,aAAa;AACtE,QAAI;AACF,YAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;cACnC;AACR,+DAA0D,aAAa;;;;AAI7E,SAAO,iBAAiB,sBAAsB,WAAW;GACvD,QAAQ,EAAE,YAAY,MAAM;GAC5B,KAAK,EAAE,YAAY,MAAM;GACzB,SAAS,EAAE,YAAY,MAAM;GAC7B,aAAa,EAAE,YAAY,MAAM;GACjC,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAyB,cAAc;IAAM;GAC7E,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,oCAAA;;;;;AC1Qc,gBAAA;CACpB,MAAM,QAAA,iBAAA;AAEN,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,OAAO,UAAU,WACnB,OAAM,IAAI,aAAa,UAAU,UAAU,qBAAqB;EAGlE,SAAS,0BAA0B,WAAW,UAAU;GACtD,MAAM,UAAU,MAAM,kBAAkB,KAAK;AAG7C,eAAY,MAAM,kBAAkB,UAAU;AAE9C,cAAW,MAAM,kBAAkB,SAAS;AAE/B,WAAQ,MAAM,OAAO,SAAS,CAAC,WAAW,SAAS,CAAC;;AAGnE,4BAA0B,aAAa,WAAW,aAAa;AAC7D,eAAY,MAAM,kBAAkB,UAAU;AAE9C,cAAW,MAAM,kBAAkB,SAAS;AAE3B,WAAQ,UAAU,OAAO,CAAC,WAAW,SAAS,CAAC;;AAGlE,4BAA0B,MAAM,iBAAiB;AACjD,4BAA0B,kBAAkB;AAE5C,SAAO;;;;;;CC9BT,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;AAEN,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,QAAI,CAAC,MAAM,SAAS,MAAM,CACxB,OAAM,IAAI,aAAa,UACrB,UAAU,gEACX;SACI;KACL,MAAM,IAAI,EAAE;KACZ,MAAM,MAAM;AACZ,UAAK,IAAI,YAAY,KAAK;AACxB,iBAAW,YAAY,aAAa,UAAU;OAC5C,SAAS,UAAU;OACnB,SAAS;OACV,CAAC;AAEF,QAAE,KAAK,SAAS;;AAElB,aAAQ;;AAGV,QAAI,OAAO;;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KAAE,SAAS,UAAU;KAA8B,SAAS;KAAc,CAAC;AAEjH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCrHT,MAAM,EAAE,mBAAA,iBAAA;CAQR,IAAI,qBAAqB;CAGzB,IAAM,uBAAN,MAA2B;EAEzB,YAAY,cAAc,MAAM;GAC9B,MAAM,CAAC,YAAY;AAEnB,QAAK,YAAY;AACjB,QAAK,YAAY,EAAE;AACnB,QAAK,eAAe,EAAE;AAEtB,QAAK,MAAM,EAAE;;EAIf,QAAQ,QAAQ,SAAS;AACvB,QAAK,uBAAuB,WAAW,qBAAqB,YAAY,EAAE,gBAAgB,SACxF,SAAQ,aAAa;AAGvB,OAAI,2BAA2B,UAAU,EAAE,mBAAmB,SAC5D,SAAQ,gBAAgB;AAG1B,OAAI,CAAC,QAAQ,aAAa,CAAC,QAAQ,cAAc,CAAC,QAAQ,cACxD,OAAM,IAAI,UAAU,qGACP;YACJ,QAAQ,qBAAqB,CAAC,QAAQ,WAC/C,OAAM,IAAI,UAAU,wGACH;YACP,qBAAqB,WAAY,CAAC,QAAQ,WACpD,OAAM,IAAI,UAAU,8FACP;YACJ,QAAQ,yBAAyB,CAAC,QAAQ,cACnD,OAAM,IAAI,UAAU,+GACK;GAG3B,MAAM,6BAA6B,OAAO,wBAAwB,MAAK,uBAAsB;AAC3F,WAAO,mBAAmB,aAAa;KACvC;AAEF,OAAI,4BAA4B;AAC9B,SAAK,MAAM,QAAQ,KAAK,UACtB,MAAK,0BAA0B,KAAK,wBAAwB,QAAO,uBAAsB;AACvF,YAAO,mBAAmB,WAAW;MACrC;AAGJ,+BAA2B,UAAU;UAChC;AACL,WAAO,wBAAwB,KAAK;KAClC,UAAU;KACV;KACD,CAAC;AAEF,SAAK,UAAU,KAAK,OAAO;;;EAK/B,aAAa;AACX,QAAK,MAAM,QAAQ,KAAK,UACtB,MAAK,0BAA0B,KAAK,wBAAwB,QAAO,uBAAsB;AACvF,WAAO,mBAAmB,aAAa;KACvC;AAGJ,QAAK,eAAe,EAAE;;EAIxB,cAAc;GAEZ,MAAM,UAAU,KAAK,aAAa,IAAI,eAAe;AACrD,QAAK,eAAe,EAAE;AAEtB,UAAO;;;AAIX,QAAO,UAAU,EACf,gBAAgB,sBACjB;;;;;AC5FmB,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,mBAAA,0BAAA;CACN,MAAM,OAAA,cAAA;CACN,MAAM,uBAAA,8BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,qCAAqC;;CAGnF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,oBAAoB;AAG/D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,iBAAiB;GACrB,YAAY,UAAU;AACpB,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,yEAAyE,UAAU,OAAO,WAC3F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,iBAAiB,QAAQ,cAAc,QAAQ,EACtD,SAAS,uDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,QAAQ,QAAQ;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,oFAAoF,UAAU,OAAO,WACtG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,KAAK,QAAQ,cAAc,QAAQ,EAC1C,SAAS,kEACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,qBAAqB,QAAQ,cAAc,QAAQ,EAC1D,SAAS,kEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,QAAQ,GAAG,KAAK;;GAG7C,aAAa;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,qFACD;AAGH,WAAO,QAAQ,YAAY,YAAY;;GAGzC,cAAc;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,sFACD;AAGH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,aAAa,CAAC;;;AAGrE,SAAO,iBAAiB,iBAAiB,WAAW;GAClD,SAAS,EAAE,YAAY,MAAM;GAC7B,YAAY,EAAE,YAAY,MAAM;GAChC,aAAa,EAAE,YAAY,MAAM;IAChC,OAAO,cAAc;IAAE,OAAO;IAAoB,cAAc;IAAM;GACxE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,+BAAA;;;;;CC/KN,MAAM,EACJ,0BACA,+BACA,qCACA,qCACA,oCAAA,sBAAA;CAEF,MAAM,EAAE,cAAc,eAAe,yBAAA,sBAAA;CACrC,MAAM,aAAA,qBAAA;CAEN,SAAS,WAAW,MAAM;AACxB,MAAI,CAAC,aAAa,KAAK,CACrB,OAAM,IAAI,UAAU,kBAAkB;;CAI1C,SAAS,YAAY,OAAO;AAC1B,MAAI,CAAC,cAAc,MAAM,CACvB,OAAM,IAAI,UAAU,mBAAmB;;CAI3C,IAAM,cAAN,MAAkB;EAChB,YAAY,cAAc,MAAM;AAC9B,QAAK,QAAQ;AACb,QAAK,aAAa,IAAI,YAAY;AAElC,OAAI,KAAK,GACP,OAAA,KAAW,KAAK,GAAG;;EAKvB,UAAU,MAAM,OAAO;AACrB,cAAW,KAAK;AAChB,eAAY,MAAM;AAElB,WAAQ,KAAK,OAAb;IACE,KAAK,YACH,OAAM,IAAI,UAAU,uBAAuB;IAE7C,KAAK;AACH,SAAI,yBAAyB,MAAM,MAAM,CACvC,QAAO;AAET;IAEF,KAAK;AACH,SAAI,8BAA8B,KAAK,CACrC,QAAO;AAET;;AAIJ,UAAO;;EAIT,MAAM,MAAM;AACV,OAAI,MAAM,QAAQ,KAAK,CACrB,MAAK,MAAM,UAAU,MAAM;AACzB,QAAI,OAAO,WAAW,EACpB,OAAM,IAAI,UAAU,kBAAkB;AAExC,SAAK,OAAO,OAAO,IAAI,OAAO,GAAG;;OAGnC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,MAAK,OAAO,KAAK,MAAM;;EAM7B,iCAAiC;AAC/B,QAAK,WAAW,OAAO,QAAQ;;EAIjC,OAAO,MAAM,OAAO;AAClB,WAAQ,qBAAqB,MAAM;AACnC,OAAI,CAAC,MAAA,SAAe,MAAM,MAAM,CAC9B;AAGF,OAAI,KAAK,UAAU,mBAAmB;IACpC,IAAI,iBAAiB,KAAK,WAAW,IAAI,KAAK;AAC9C,QAAI,mBAAmB,KACrB,kBAAiB;QAEjB,mBAAkB,OAAO;AAE3B,QAAI,CAAC,gCAAgC,MAAM,eAAe,CACxD;;AAIJ,QAAK,WAAW,OAAO,MAAM,MAAM;AAEnC,OAAI,KAAK,UAAU,kBACjB,OAAA,+BAAqC;;EAKzC,OAAO,MAAM;AACX,OAAI,CAAC,MAAA,SAAe,MAAM,GAAG,CAC3B;AAGF,OAAI,KAAK,UAAU,qBACjB,CAAC,oCAAoC,KAAK,IAC1C,CAAC,oCAAoC,KAAK,CAC1C;AAGF,OAAI,CAAC,KAAK,WAAW,SAAS,KAAK,CACjC;AAGF,QAAK,WAAW,OAAO,KAAK;AAE5B,OAAI,KAAK,UAAU,kBACjB,OAAA,+BAAqC;;EAKzC,IAAI,MAAM;AACR,cAAW,KAAK;AAChB,UAAO,KAAK,WAAW,IAAI,KAAK;;EAIlC,eAAe;AACb,UAAO,KAAK,WAAW,OAAO,aAAa,IAAI,EAAE;;EAInD,IAAI,MAAM;AACR,cAAW,KAAK;AAChB,UAAO,KAAK,WAAW,SAAS,KAAK;;EAIvC,IAAI,MAAM,OAAO;AACf,WAAQ,qBAAqB,MAAM;AACnC,OAAI,CAAC,MAAA,SAAe,MAAM,MAAM,CAC9B;AAGF,OAAI,KAAK,UAAU,qBAAqB,CAAC,gCAAgC,MAAM,MAAM,CACnF;AAGF,QAAK,WAAW,IAAI,MAAM,MAAM;AAEhC,OAAI,KAAK,UAAU,kBACjB,OAAA,+BAAqC;;EAIzC,EAAG,OAAO,YAAY;AACpB,QAAK,MAAM,UAAU,KAAK,WAAW,gBAAgB,CACnD,OAAM;;;AAKZ,SAAQ,iBAAiB;;;;;CC1KzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,WAAA,kBAAA;CACN,MAAM,mBAAmB,MAAM;CAC/B,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4BAA4B;;AAG1E,SAAQ,yBAAyB,cAAc,QAAQ,SAAS;EAE9D,MAAM,oBADe,aAAa,oBACK;EACvC,MAAM,WAAW,OAAO,OAAO,kBAAkB;AACjD,SAAO,eAAe,UAAU,MAAM,oBAAoB;GACxD,OAAO;IAAE;IAAQ;IAAM,OAAO;IAAG;GACjC,cAAc;GACf,CAAC;AACF,SAAO;;CAGT,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,WAAW;AAGtD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,QAAQ;GACZ,cAAc;IACZ,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,MAAM,SAAS,OAAO,CACxB,KAAI,OAAO,OAAO,cAAc,KAAA,EAC9B,KAAI,CAAC,MAAM,SAAS,OAAO,CACzB,OAAM,IAAI,aAAa,UACrB,iFACD;UACI;MACL,MAAM,IAAI,EAAE;MACZ,MAAM,MAAM;AACZ,WAAK,IAAI,YAAY,KAAK;AACxB,WAAI,CAAC,MAAM,SAAS,SAAS,CAC3B,OAAM,IAAI,aAAa,UACrB,2FAID;YACI;QACL,MAAM,IAAI,EAAE;QACZ,MAAM,MAAM;AACZ,aAAK,IAAI,YAAY,KAAK;AACxB,oBAAW,YAAY,cAAc,UAAU;UAC7C,SACE;UACF,SAAS;UACV,CAAC;AAEF,WAAE,KAAK,SAAS;;AAElB,mBAAW;;AAGb,SAAE,KAAK,SAAS;;AAElB,eAAS;;cAGP,CAAC,MAAM,SAAS,OAAO,CACzB,OAAM,IAAI,aAAa,UACrB,sEACD;UACI;MACL,MAAM,SAAS,OAAO,OAAO,KAAK;AAClC,WAAK,MAAM,OAAO,QAAQ,QAAQ,OAAO,EAAE;OACzC,MAAM,OAAO,OAAO,yBAAyB,QAAQ,IAAI;AACzD,WAAI,QAAQ,KAAK,YAAY;QAC3B,IAAI,WAAW;AAEf,mBAAW,YAAY,cAAc,UAAU;SAC7C,SAAS;SACT,SAAS;SACV,CAAC;QAEF,IAAI,aAAa,OAAO;AAExB,qBAAa,YAAY,cAAc,YAAY;SACjD,SAAS;SACT,SAAS;SACV,CAAC;AAEF,eAAO,YAAY;;;AAGvB,eAAS;;SAIb,OAAM,IAAI,aAAa,UACrB,2EACD;AAGL,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,OAAO,MAAM,OAAO;IAClB,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAG3G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,2EAA2E,UAAU,OAAO,WAC7F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,OAAO,MAAM;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAG3G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,0EAA0E,UAAU,OAAO,WAC5F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,qEAAqE;AAGxG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uEAAuE,UAAU,OAAO,WACzF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;;GAGzC,eAAe;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,8EAA8E;AAGjH,WAAO,MAAM,kBAAkB,QAAQ,YAAY,cAAc,CAAC;;GAGpE,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,qEAAqE;AAGxG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,uEAAuE,UAAU,OAAO,WACzF;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;;GAGzC,IAAI,MAAM,OAAO;IACf,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,qEAAqE;AAGxG,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,wEAAwE,UAAU,OAAO,WAC1F;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,IAAI,GAAG,KAAK;;GAGzC,OAAO;AACL,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,sEAAsE;AAEzG,WAAO,QAAQ,sBAAsB,cAAc,MAAM,MAAM;;GAGjE,SAAS;AACP,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,wEAAwE;AAE3G,WAAO,QAAQ,sBAAsB,cAAc,MAAM,QAAQ;;GAGnE,UAAU;AACR,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAE5G,WAAO,QAAQ,sBAAsB,cAAc,MAAM,YAAY;;GAGvE,QAAQ,UAAU;AAChB,QAAI,CAAC,QAAQ,GAAG,KAAK,CACnB,OAAM,IAAI,aAAa,UAAU,yEAAyE;AAE5G,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,sFACD;AAEH,eAAW,SAAS,QAAQ,cAAc,UAAU,EAClD,SAAS,mFACV,CAAC;IACF,MAAM,UAAU,UAAU;IAC1B,IAAI,QAAQ,MAAM,KAAK,KAAK,YAAY;IACxC,IAAI,IAAI;AACR,WAAO,IAAI,MAAM,QAAQ;KACvB,MAAM,CAAC,KAAK,SAAS,MAAM,GAAG,IAAI,MAAM,kBAAkB;AAC1D,cAAS,KAAK,SAAS,OAAO,KAAK,KAAK;AACxC,aAAQ,MAAM,KAAK,KAAK,YAAY;AACpC;;;;AAIN,SAAO,iBAAiB,QAAQ,WAAW;GACzC,QAAQ,EAAE,YAAY,MAAM;GAC5B,QAAQ,EAAE,YAAY,MAAM;GAC5B,KAAK,EAAE,YAAY,MAAM;GACzB,cAAc,EAAE,YAAY,MAAM;GAClC,KAAK,EAAE,YAAY,MAAM;GACzB,KAAK,EAAE,YAAY,MAAM;GACzB,MAAM,EAAE,YAAY,MAAM;GAC1B,QAAQ,EAAE,YAAY,MAAM;GAC5B,SAAS,EAAE,YAAY,MAAM;GAC7B,SAAS,EAAE,YAAY,MAAM;IAC5B,OAAO,cAAc;IAAE,OAAO;IAAW,cAAc;IAAM;IAC7D,OAAO,WAAW;IAAE,OAAO,QAAQ,UAAU;IAAS,cAAc;IAAM,UAAU;IAAM;GAC5F,CAAC;AACF,eAAa,iBAAiB;AAE9B,eAAa,sBAAsB,OAAO,OAAO,aAAa,wBAAwB,GACnF,OAAO,cAAc;GACpB,cAAc;GACd,OAAO;GACR,EACF,CAAC;AACF,QAAM,OAAO,aAAa,qBAAqB,EAC7C,OAAO;GACL,MAAM,WAAW,QAAQ,KAAK,MAAM;AACpC,OAAI,CAAC,SACH,OAAM,IAAI,aAAa,UAAU,iEAAiE;GAGpG,MAAM,EAAE,QAAQ,MAAM,UAAU;GAChC,MAAM,SAAS,MAAM,KAAK,OAAO,YAAY;AAE7C,OAAI,SADQ,OAAO,OAEjB,QAAO,iBAAiB,cAAc;IAAE,OAAO,KAAA;IAAW,MAAM;IAAM,CAAC;GAGzE,MAAM,OAAO,OAAO;AACpB,YAAS,QAAQ,QAAQ;AACzB,UAAO,iBAAiB,cAAc,MAAM,eAAe,KAAK,IAAI,MAAM,kBAAkB,EAAE,KAAK,CAAC;KAEvG,CAAC;AAEF,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,sBAAA;;;;;CC/ZN,MAAM,cAAA,qBAAA;CAEN,IAAM,sBAAN,MAA0B;EACxB,YAAY,cAAc;AACxB,QAAK,SAAS,YAAY,WAAW,cAAc,EAAE,CAAC;;EAGxD,MAAM,QAAQ;AACZ,QAAK,OAAO,aAAa,OAAO;;;AAIpC,QAAO,UAAU,EACf,gBAAgB,qBACjB;;;;;CCdD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,gBAAgB;GACpB,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,QAAQ;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,OAAO,QAAQ;MAClC,SAAS;MACT,SAAS;MACV,CAAC;AAEJ,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,MAAM,GAAG,KAAK;;GAG3C,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,MAAM,cAAc,MAAM,gBAAgB;AAC/C,YAAO,MAAM,kBAAkB,QAAQ,YAAY,UAAU;MAC7D;;;AAGN,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;AC5Ic,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kDAAkD;;CAGhG,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iCAAiC;AAG5E,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,8BAA8B;GAClC,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,6FACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,8BAA8B,WAAW;GAC/D,GAAG,EAAE,YAAY,MAAM;GACvB,GAAG,EAAE,YAAY,MAAM;GACvB,GAAG,EAAE,YAAY,MAAM;IACtB,OAAO,cAAc;IAAE,OAAO;IAAiC,cAAc;IAAM;GACrF,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4CAAA;;;;;AC9Ic,gBAAA;CACpB,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,kDAAkD;;CAGhG,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,iCAAiC;AAG5E,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,8BAA8B;GAClC,cAAc;AACZ,UAAM,IAAI,aAAa,UAAU,sBAAsB;;GAGzD,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gGACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iGACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,8BAA8B,WAAW;GAC/D,OAAO,EAAE,YAAY,MAAM;GAC3B,MAAM,EAAE,YAAY,MAAM;GAC1B,OAAO,EAAE,YAAY,MAAM;IAC1B,OAAO,cAAc;IAAE,OAAO;IAAiC,cAAc;IAAM;GACrF,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,4CAAA;;;;;CC9IN,MAAM,cAAA,eAAA;AACQ,kBAAA;AAEd,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,uBAAuB,OAAO;KAChD,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,uBAAuB,OAAO;KAChD,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,uBAAuB,OAAO;KAChD,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,uBAAuB,OAAO;KAChD,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCzET,MAAM,kBAAA,yBAAA;CAEN,IAAM,sBAAN,MAA0B;EACxB,YAAY,cAAc,CAAC,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,IAAI;AAC/D,QAAK,gBAAgB;AACrB,QAAK,KAAK;AACV,QAAK,KAAK;AACV,QAAK,SAAS;AACd,QAAK,UAAU;;EAGjB,OAAO,SAAS,cAAc,OAAO;AACnC,UAAO,gBAAgB,WAAW,cAAc;IAAC,MAAM;IAAG,MAAM;IAAG,MAAM;IAAO,MAAM;IAAO,CAAC;;EAGhG,IAAI,IAAI;AACN,UAAO,KAAK;;EAGd,IAAI,IAAI;AACN,UAAO,KAAK;;EAGd,IAAI,QAAQ;AACV,UAAO,KAAK;;EAGd,IAAI,SAAS;AACX,UAAO,KAAK;;EAGd,IAAI,MAAM;GACR,MAAM,EAAE,QAAQ,MAAM;AAEtB,UAAO,KAAK,IAAI,GAAG,IAAI,OAAO;;EAGhC,IAAI,QAAQ;GACV,MAAM,EAAE,OAAO,MAAM;AAErB,UAAO,KAAK,IAAI,GAAG,IAAI,MAAM;;EAG/B,IAAI,SAAS;GACX,MAAM,EAAE,QAAQ,MAAM;AAEtB,UAAO,KAAK,IAAI,GAAG,IAAI,OAAO;;EAGhC,IAAI,OAAO;GACT,MAAM,EAAE,OAAO,MAAM;AAErB,UAAO,KAAK,IAAI,GAAG,IAAI,MAAM;;EAI/B,SAAS;AACP,UAAO;IACL,GAAG,KAAK;IACR,GAAG,KAAK;IACR,OAAO,KAAK;IACZ,QAAQ,KAAK;IACb,KAAK,KAAK;IACV,OAAO,KAAK;IACZ,QAAQ,KAAK;IACb,MAAM,KAAK;IACZ;;;AAIL,SAAQ,iBAAiB;;;;;CCrEzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,cAAA,qBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oCAAoC;;CAGlF,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,mBAAmB;AAG9D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,gBAAgB;GACpB,cAAc;IACZ,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,WAAO,QAAQ,YAAY,QAAQ;;GAGrC,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM;IACR,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,iFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,oFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO;IACT,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,OAAO,WAAW;IAChB,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,QAAQ,cAAc,QAAQ,EACjD,SAAS,kEACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,KAAK,eAAe,SAAS,cAAc,GAAG,KAAK,CAAC;;;AAGvF,SAAO,iBAAiB,gBAAgB,WAAW;GACjD,QAAQ,EAAE,YAAY,MAAM;GAC5B,GAAG,EAAE,YAAY,MAAM;GACvB,GAAG,EAAE,YAAY,MAAM;GACvB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,KAAK,EAAE,YAAY,MAAM;GACzB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;GAC5B,MAAM,EAAE,YAAY,MAAM;IACzB,OAAO,cAAc;IAAE,OAAO;IAAmB,cAAc;IAAM;GACvE,CAAC;AACF,SAAO,iBAAiB,iBAAiB,EAAE,UAAU,EAAE,YAAY,MAAM,EAAE,CAAC;AAC5E,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,8BAAA;;;;;CC3RN,MAAM,sBAAA,8BAAA,CAAwD;CAC9D,MAAM,UAAA,iBAAA;CAEN,IAAM,cAAN,cAA0B,oBAAoB;EAC5C,OAAO,SAAS,cAAc,OAAO;AACnC,UAAO,QAAQ,WAAW,cAAc;IAAC,MAAM;IAAG,MAAM;IAAG,MAAM;IAAO,MAAM;IAAO,CAAC;;EAGxF,IAAI,IAAI;AACN,UAAO,MAAM;;EAEf,IAAI,EAAE,MAAM;AACV,QAAK,KAAK;;EAGZ,IAAI,IAAI;AACN,UAAO,MAAM;;EAEf,IAAI,EAAE,MAAM;AACV,QAAK,KAAK;;EAGZ,IAAI,QAAQ;AACV,UAAO,MAAM;;EAEf,IAAI,MAAM,UAAU;AAClB,QAAK,SAAS;;EAGhB,IAAI,SAAS;AACX,UAAO,MAAM;;EAEf,IAAI,OAAO,WAAW;AACpB,QAAK,UAAU;;;AAInB,SAAQ,iBAAiB;;;;;CCpCzB,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,cAAA,qBAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CACjC,MAAM,kBAAA,yBAAA;CAEN,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,4BAA4B;;CAG1E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,WAAW;AAGtD,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAClD,kBAAgB,eAAe,SAAS,aAAa;;AAGvD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,SAAS,CAAC;AAE7C,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,gBAAgB,aAAa,gBAAgB;GACjD,cAAc;IACZ,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,uBAAuB,QAAQ;MAClD,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,EAAE,GAAG;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,QAAI,YAAY,uBAAuB,GAAG;KACxC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,OAAO;;GAG7B,IAAI,IAAI;IACN,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,EAAE,GAAG;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,uEAAuE;AAG1G,QAAI,YAAY,uBAAuB,GAAG;KACxC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,OAAO;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,MAAM,GAAG;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,2EAA2E;AAG9G,QAAI,YAAY,uBAAuB,GAAG;KACxC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,WAAW;;GAGjC,IAAI,SAAS;IACX,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,WAAO,QAAQ,YAAY;;GAG7B,IAAI,OAAO,GAAG;IACZ,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;AAG/G,QAAI,YAAY,uBAAuB,GAAG;KACxC,SAAS;KACT,SAAS;KACV,CAAC;AAEF,YAAQ,YAAY,YAAY;;GAGlC,OAAO,WAAW;IAChB,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,QAAQ,cAAc,QAAQ,EACjD,SAAS,0DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,KAAK,eAAe,SAAS,cAAc,GAAG,KAAK,CAAC;;;AAGvF,SAAO,iBAAiB,QAAQ,WAAW;GACzC,GAAG,EAAE,YAAY,MAAM;GACvB,GAAG,EAAE,YAAY,MAAM;GACvB,OAAO,EAAE,YAAY,MAAM;GAC3B,QAAQ,EAAE,YAAY,MAAM;IAC3B,OAAO,cAAc;IAAE,OAAO;IAAW,cAAc;IAAM;GAC/D,CAAC;AACF,SAAO,iBAAiB,SAAS,EAAE,UAAU,EAAE,YAAY,MAAM,EAAE,CAAC;AACpE,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,sBAAA;;;;;CCjRN,MAAM,cAAA,eAAA;AACQ,kBAAA;AAEd,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KAAE,SAAS,UAAU;KAA4B,SAAS;KAAc,CAAC;AAE/G,QAAI,OAAO;SAEX,KAAI,OAAO;;EAIf;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KACpC,SAAS,UAAU;KACnB,SAAS;KACV,CAAC;AAEF,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCvCT,MAAM,cAAA,eAAA;AACQ,kBAAA;AAEd,SAAQ,mBAAmB,cAAc,KAAK,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;EAC7F;GACE,MAAM,MAAM;GACZ,IAAI,QAAQ,QAAQ,KAAA,KAAa,QAAQ,OAAO,KAAA,IAAY,IAAI;AAChE,OAAI,UAAU,KAAA,GAAW;AACvB,YAAQ,YAAY,WAAW,OAAO;KAAE,SAAS,UAAU;KAA6B,SAAS;KAAc,CAAC;AAEhH,QAAI,OAAO;SAEX,KAAI,OAAO;;;AAKjB,SAAQ,WAAW,cAAc,KAAK,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAChF,MAAI,QAAQ,KAAA,KAAa,OAAO,QAAQ,YAAY,OAAO,QAAQ,WACjE,OAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,oBAAoB;EAGlE,MAAM,MAAM,OAAO,OAAO,KAAK;AAC/B,UAAQ,gBAAgB,cAAc,KAAK,KAAK,EAAE,SAAS,CAAC;AAC5D,SAAO;;;;;;CCzBT,MAAM,EAAE,iBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;AAGR,SAAQ,iBAAiB,MAAM,gBAAgB;EAC7C,YAAY,cAAc,CAAC,OAAO,UAAU;AAC1C,QAAK,aAAa,IAAI,YAAY,OAAO,QAAQ;;EAGnD,OAAO,OAAO,SAAS;AACrB,UAAO,KAAK,WAAW,OAAO,OAAO,QAAQ;;EAG/C,IAAI,WAAW;AACb,UAAO,KAAK,WAAW;;EAGzB,IAAI,QAAQ;AACV,UAAO,KAAK,WAAW;;EAGzB,IAAI,YAAY;AACd,UAAO,KAAK,WAAW;;;;;;;CCpB3B,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,qBAAA,4BAAA;CACN,MAAM,oBAAA,2BAAA;CACN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,YAAY;GAChB,cAAc;IACZ,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,mBAAmB,QAAQ,cAAc,QAAQ,EACxD,SAAS,kDACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAK;;GAG/E,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;IAE/G,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,KAAI,MAAM,cAAc,OAAO,CAC7B,UAAS,YAAY,eAAe,QAAQ;MAC1C,SAAS;MACT,SAAS;MACV,CAAC;cACO,MAAM,oBAAoB,OAAO,CAC1C,UAAS,YAAY,qBAAqB,QAAQ;MAChD,SAAS;MACT,SAAS;MACV,CAAC;cACO,YAAY,OAAO,OAAO,CACnC,UAAS,YAAY,mBAAmB,QAAQ;MAC9C,SAAS;MACT,SAAS;MACT,aAAa;MACd,CAAC;SAEF,OAAM,IAAI,aAAa,UACrB,yFACD;AAGL,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,kBAAkB,QAAQ,cAAc,QAAQ,EACvD,SAAS,4DACV,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,QAAQ;IACV,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,+EACD;AAGH,WAAO,QAAQ,YAAY;;GAG7B,IAAI,YAAY;IACd,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,mFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,YAAY,WAAW;GAC7C,QAAQ,EAAE,YAAY,MAAM;GAC5B,UAAU,EAAE,YAAY,MAAM;GAC9B,OAAO,EAAE,YAAY,MAAM;GAC3B,WAAW,EAAE,YAAY,MAAM;IAC9B,OAAO,cAAc;IAAE,OAAO;IAAe,cAAc;IAAM;GACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CCjNN,MAAM,EAAE,iBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;CACR,MAAM,EAAE,mCAAA,qBAAA;CAMR,MAAM,UAAU,IAAI,aAAa;AAEjC,SAAQ,iBAAiB,MAAM,gBAAgB;EAC7C,YAAY,cAAc;AACxB,QAAK,gBAAgB;AACrB,QAAK,WAAW;;EAGlB,OAAO,OAAO;GAEZ,MAAM,KAAK,+BADK,QAAQ,OAAO,MAAM,CACa,QAAQ,KAAK,cAAc;AAC7E,UAAO,IAAI,KAAK,cAAc,WAAW,GAAG;;EAG9C,WAAW,QAAQ,aAAa;AAC9B,UAAO,QAAQ,WAAW,QAAQ,YAAY;;;;;;;CCrBlD,MAAM,cAAA,eAAA;CACN,MAAM,QAAA,iBAAA;CAEN,MAAM,aAAa,MAAM;CACzB,MAAM,qBAAqB,MAAM;CAEjC,MAAM,gBAAgB;AAEtB,SAAQ,MAAK,UAAS;AACpB,SAAO,MAAM,SAAS,MAAM,IAAI,OAAO,OAAO,OAAO,WAAW,IAAI,MAAM,uBAAuB,KAAK;;AAExG,SAAQ,UAAS,UAAS;AACxB,SAAO,MAAM,SAAS,MAAM,IAAI,iBAAiB,KAAK;;AAExD,SAAQ,WAAW,cAAc,OAAO,EAAE,UAAU,yBAAyB,EAAE,KAAK;AAClF,MAAI,QAAQ,GAAG,MAAM,CACnB,QAAO,MAAM,eAAe,MAAM;AAEpC,QAAM,IAAI,aAAa,UAAU,GAAG,QAAQ,gCAAgC;;CAG9E,SAAS,YAAY,cAAc,WAAW;EAC5C,IAAI;AACJ,MAAI,cAAc,KAAA,EAChB,SAAQ,UAAU;AAGpB,MAAI,CAAC,MAAM,SAAS,MAAM,CACxB,SAAQ,aAAa,oBAAoB,eAAe;AAG1D,SAAO,OAAO,OAAO,MAAM;;AAG7B,SAAQ,UAAU,cAAc,iBAAiB,gBAAgB;EAC/D,MAAM,UAAU,YAAY,aAAa;AACzC,SAAO,QAAQ,MAAM,SAAS,cAAc,iBAAiB,YAAY;;AAG3E,SAAQ,cAAc,cAAc,iBAAiB,gBAAgB;EACnE,MAAM,UAAU,QAAQ,OAAO,cAAc,iBAAiB,YAAY;AAC1E,SAAO,MAAM,eAAe,QAAQ;;AAGtC,SAAQ,kBAAkB,SAAS,iBAAiB;AAEpD,SAAQ,SAAS,SAAS,cAAc,kBAAkB,EAAE,EAAE,cAAc,EAAE,KAAK;AACjF,cAAY,UAAU;AAEtB,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,IAAI,KAAK,eAAe,cAAc,iBAAiB,YAAY;GAC1E,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO;;AAGT,SAAQ,OAAO,cAAc,cAAc;EACzC,MAAM,UAAU,YAAY,cAAc,UAAU;AAEpD,UAAQ,eAAe,SAAS,aAAa;AAC7C,SAAO,eAAe,SAAS,YAAY;GACzC,OAAO,OAAO,OAAO,KAAK,eAAe,UAAU;GACnD,cAAc;GACf,CAAC;AAEF,UAAQ,YAAY,MAAM,iBAAiB;AAC3C,MAAI,KAAK,KACP,MAAK,KAAK,QAAQ,YAAY;AAEhC,SAAO,QAAQ;;CAGjB,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;AAEnC,SAAQ,WAAW,cAAc,gBAAgB;AAC/C,MAAI,CAAC,YAAY,MAAK,eAAc,QAAQ,IAAI,WAAW,CAAC,CAC1D;EAGF,MAAM,eAAe,MAAM,iBAAiB,aAAa;EACzD,MAAM,YAAY;GAChB,cAAc;AACZ,WAAO,QAAQ,MAAM,OAAO,OAAO,IAAI,OAAO,UAAU,EAAE,cAAc,KAAA,EAAU;;GAGpF,SAAS;IACP,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UAAU,4EAA4E;IAE/G,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,SAAI,WAAW,KAAA,EACb,UAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;SAEF,UAAS;AAEX,UAAK,KAAK,OAAO;;AAEnB,WAAO,QAAQ,YAAY,OAAO,GAAG,KAAK;;GAG5C,WAAW,QAAQ,aAAa;IAC9B,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAC7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,gFACD;AAGH,QAAI,UAAU,SAAS,EACrB,OAAM,IAAI,aAAa,UACrB,mFAAmF,UAAU,OAAO,WACrG;IAEH,MAAM,OAAO,EAAE;IACf;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,aAAa,QAAQ;MACxC,SAAS;MACT,SAAS;MACV,CAAC;AACF,UAAK,KAAK,OAAO;;IAEnB;KACE,IAAI,SAAS,UAAU;AACvB,cAAS,YAAY,cAAc,QAAQ;MACzC,SAAS;MACT,SAAS;MACT,aAAa;MACd,CAAC;AACF,UAAK,KAAK,OAAO;;AAEnB,WAAO,MAAM,kBAAkB,QAAQ,YAAY,WAAW,GAAG,KAAK,CAAC;;GAGzE,IAAI,WAAW;IACb,MAAM,UAAU,SAAS,QAAQ,SAAS,KAAA,IAAY,OAAO;AAE7D,QAAI,CAAC,QAAQ,GAAG,QAAQ,CACtB,OAAM,IAAI,aAAa,UACrB,kFACD;AAGH,WAAO,QAAQ,YAAY;;;AAG/B,SAAO,iBAAiB,YAAY,WAAW;GAC7C,QAAQ,EAAE,YAAY,MAAM;GAC5B,YAAY,EAAE,YAAY,MAAM;GAChC,UAAU,EAAE,YAAY,MAAM;IAC7B,OAAO,cAAc;IAAE,OAAO;IAAe,cAAc;IAAM;GACnE,CAAC;AACF,eAAa,iBAAiB;AAE9B,SAAO,eAAe,cAAc,eAAe;GACjD,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;CAGJ,MAAM,OAAA,0BAAA;;;;;CC7KN,MAAM,QAAA,eAAA;CACN,MAAM,QAAA,eAAA;CAMN,MAAM,sBAAsB;EAC1B,cAAA,sBAAA;EAEA,KAAA,2BAAA,CAA6C;EAC7C,iBAAA,2BAAA,CAAyD;EAEzD,aAAA,qBAAA;EAEA,cAAA,sBAAA;EACA,MAAA,cAAA;EACA,MAAA,cAAA;EACA,SAAA,iBAAA;EACA,kBAAA,0BAAA;EACA,mBAAA,2BAAA;EACA,UAAA,kBAAA;EACA,aAAA,qBAAA;EACA,eAAA,uBAAA;EACA,MAAA,cAAA;EACA,cAAA,sBAAA;EACA,uBAAA,+BAAA;EACA,SAAA,iBAAA;EACA,cAAA,sBAAA;EACA,UAAA,kBAAA;EACA,eAAA,uBAAA;EACA,gBAAA,wBAAA;EACA,uBAAA,+BAAA;EACA,cAAA,sBAAA;EACA,cAAA,sBAAA;EAEA,gBAAA,wBAAA;EAEA,aAAA,qBAAA;EACA,iBAAA,yBAAA;EACA,kBAAA,0BAAA;EACA,iBAAA,yBAAA;EACA,iBAAA,yBAAA;EACA,iBAAA,yBAAA;EACA,kBAAA,0BAAA;EACA,iBAAA,yBAAA;EACA,oBAAA,4BAAA;EACA,sBAAA,8BAAA;EACA,eAAA,uBAAA;EACA,gBAAA,wBAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EACA,eAAA,uBAAA;EACA,iBAAA,yBAAA;EACA,kBAAA,0BAAA;EACA,gBAAA,wBAAA;EACA,mBAAA,2BAAA;EACA,iBAAA,yBAAA;EACA,eAAA,uBAAA;EACA,mBAAA,2BAAA;EACA,mBAAA,2BAAA;EACA,iBAAA,yBAAA;EACA,qBAAA,6BAAA;EACA,oBAAA,4BAAA;EACA,mBAAA,2BAAA;EACA,sBAAA,8BAAA;EACA,qBAAA,6BAAA;EACA,iBAAA,yBAAA;EACA,iBAAA,yBAAA;EACA,iBAAA,yBAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EACA,mBAAA,2BAAA;EACA,gBAAA,wBAAA;EACA,oBAAA,4BAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EACA,gBAAA,wBAAA;EACA,qBAAA,6BAAA;EACA,mBAAA,2BAAA;EACA,mBAAA,2BAAA;EACA,oBAAA,4BAAA;EACA,qBAAA,6BAAA;EACA,kBAAA,0BAAA;EACA,mBAAA,2BAAA;EACA,mBAAA,2BAAA;EACA,iBAAA,yBAAA;EACA,mBAAA,2BAAA;EACA,iBAAA,yBAAA;EACA,yBAAA,iCAAA;EACA,sBAAA,8BAAA;EACA,qBAAA,6BAAA;EACA,kBAAA,0BAAA;EACA,iBAAA,yBAAA;EACA,qBAAA,6BAAA;EACA,yBAAA,iCAAA;EACA,qBAAA,6BAAA;EACA,qBAAA,6BAAA;EACA,oBAAA,4BAAA;EACA,kBAAA,0BAAA;EACA,qBAAA,6BAAA;EACA,mBAAA,2BAAA;EACA,kBAAA,0BAAA;EACA,mBAAA,2BAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EACA,4BAAA,oCAAA;EAEA,YAAA,oBAAA;EACA,oBAAA,4BAAA;EACA,eAAA,uBAAA;EACA,aAAA,qBAAA;EACA,gBAAA,wBAAA;EACA,gBAAA,wBAAA;EACA,oBAAA,4BAAA;EACA,iBAAA,yBAAA;EACA,kBAAA,0BAAA;EACA,kBAAA,0BAAA;EAEA,gCAAA,wCAAA;EACA,iBAAA,yBAAA;EACA,mBAAA,2BAAA;EACA,WAAA,mBAAA;EACA,wBAAA,gCAAA;EACA,SAAA,iBAAA;EACA,eAAA,uBAAA;EAEA,OAAA,eAAA;EACA,mBAAA,2BAAA;EACA,WAAA,mBAAA;EACA,YAAA,oBAAA;EACA,aAAA,qBAAA;EACA,wBAAA,gCAAA;EACA,mBAAA,2BAAA;EACA,YAAA,oBAAA;EACA,iBAAA,yBAAA;EACA,cAAA,sBAAA;EACA,qBAAA,6BAAA;EACA,eAAA,uBAAA;EACA,uBAAA,+BAAA;EACA,eAAA,uBAAA;EACA,cAAA,sBAAA;EACA,aAAA,qBAAA;EACA,iBAAA,yBAAA;EAEA,SAAA,iBAAA;EACA,YAAA,oBAAA;EACA,YAAA,oBAAA;EACA,YAAA,oBAAA;EACA,cAAA,sBAAA;EACA,eAAA,uBAAA;EACA,YAAA,oBAAA;EACA,kBAAA,0BAAA;EACA,YAAA,oBAAA;EAEA,SAAA,iBAAA;EACA,UAAA,kBAAA;EACA,UAAA,kBAAA;EACA,SAAA,iBAAA;EACA,QAAA,gBAAA;EACA,aAAA,qBAAA;EACA,WAAA,mBAAA;EAEA,QAAA,gBAAA;EAEA,aAAA,qBAAA;EACA,eAAA,uBAAA;EACA,QAAA,gBAAA;EACA,UAAA,kBAAA;EAEA,YAAA,oBAAA;EACA,MAAA,cAAA;EACA,MAAA,cAAA;EACA,UAAA,kBAAA;EACA,eAAA,uBAAA;EAEA,WAAA,mBAAA;EACA,eAAA,uBAAA;EAEA,UAAA,kBAAA;EACA,2BAAA,mCAAA;EACA,sBAAA,8BAAA;EACA,gBAAA,wBAAA;EACA,WAAA,mBAAA;EAEA,YAAA,oBAAA;EACA,cAAA,sBAAA;EACA,YAAA,oBAAA;EAEA,eAAA,uBAAA;EACA,OAAA,eAAA;EACA,aAAA,qBAAA;EACA,WAAA,mBAAA;EAEA,SAAA,iBAAA;EAEA,uBAAA,+BAAA;EACA,kBAAA,0BAAA;EACA,YAAA,oBAAA;EAEA,kBAAA,0BAAA;EACA,gBAAA,wBAAA;EAEA,SAAA,iBAAA;EACA,iBAAA,yBAAA;EACA,aAAA,qBAAA;EAEA,+BAAA,uCAAA;EACA,+BAAA,uCAAA;EAEA,iBAAA,yBAAA;EACA,SAAA,iBAAA;EAEA,aAAA,qBAAA;EACA,aAAA,qBAAA;EACD;CAED,SAAS,QAAQ,QAAQ,MAAM,sBAAsB;AACnD,SAAO,eAAe,QAAQ,MAAM;GAClC,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;;AAGJ,SAAQ,qBAAqB,QAAQ,gBAAgB;AAEnD,OAAK,MAAM,sBAAsB,OAAO,OAAO,oBAAoB,CACjE,oBAAmB,QAAQ,QAAQ,YAAY;AAKjD,UAAQ,QAAQ,gBAAgB,OAAO,SAAS;AAGhD,SAAO,eAAe,OAAO,aAAa,WAAW,OAAO,MAAM,UAAU;AAG5E,QAAM,UAAU,OAAO;AACvB,QAAM,OAAO;;AAIf,SAAQ,uBAAsB,SAAQ;AACpC,SAAO,oBAAoB;;;;;;CCzP7B,MAAM,sBAAA,6BAAA;CACN,MAAM,EAAE,gBAAA,gBAAA;AAGR,SAAQ,4BAA4B,WAAW,QAAQ,cAAc;AAEnE,cAAY,WAAW,QAAQ,qBADZ;GAAE;GAAW,YAAY;GAAM,SAAS;GAAM,EACD,KAAK;;;;;;CCNvE,MAAM,YAAA,oBAAA;CACN,MAAM,kBAAA,yBAAA;CACN,MAAM,gBAAA,uBAAA;CACN,MAAM,iBAAA,yBAAA;CACN,MAAM,WAAA,iBAAA;CACN,MAAM,EAAE,gBAAA,gBAAA;CAGR,IAAM,iBAAN,MAAqB;EACnB,YAAY,cAAc,QAAQ;AAChC,QAAK,UAAU;AACf,QAAK,cAAc,SAAS,eAAe,OAAO;AAClD,QAAK,yCAAyB,IAAI,KAAK;AACvC,QAAK,WAAW,CAAC,aAAa;AAC9B,QAAK,gBAAgB;;EAGvB,2BAA2B,IAAI;GAC7B,MAAM,YAAY,KAAK,QAAQ,iBAAiB;AAC9C,SAAK,uBAAuB,OAAO,UAAU;AAC7C,QAAI;MACH,EAAE;AAEL,QAAK,uBAAuB,IAAI,UAAU;;EAG5C,6BAA6B;AAC3B,QAAK,MAAM,aAAa,KAAK,uBAC3B,MAAK,QAAQ,aAAa,UAAU;AAEtC,QAAK,uBAAuB,OAAO;;EAGrC,IAAI,SAAS;AACX,UAAO,KAAK,SAAS;;EAGvB,IAAI,eAAe;AACjB,UAAO,KAAK,SAAS,KAAK;;EAI5B,oCAAoC;AAClC,QAAK,SAAS,OAAO,KAAK,gBAAgB,GAAG,SAAS;;EAIxD,gBAAgB,OAAO;AACrB,QAAK,iCAAiC;IACpC,MAAM,WAAW,KAAK,gBAAgB;AACtC,QAAI,WAAW,KAAK,YAAY,KAAK,OACnC;IAGF,MAAM,iBAAiB,KAAK,SAAS;AAMrC,SAAK,iCAAiC;AASpC,SAAI,eAAe,aAAa,KAAK,aAAa,SAEhD,gBAAe,KAAK,SAAS,yCAAyC;AAExE,UAAK,gBAAgB,eAAe;MACpC;KACF;;EAIJ,gBAAgB,gBAAgB,QAAQ,EAAE,EAAE;AAC1C,OAAI,CAAC,eAAe,SAGlB,gBAAe,KAAK,SAAS,qEAAqE;GAIpG,MAAM,oBAAoB,QAAQ,MAAM,kBAAkB;GAE1D,MAAM,WAAW,SAAS,eAAe,KAAK,QAAQ,UAAU;GAEhE,MAAM,EAAE,iBAAiB;AAIzB,OAAI,aAAa,UAAU,KAAA,EACzB,cAAa,QAAQ,SAAS;AAIhC,OAAI,eAAe,aAAa,aAAa,SAE3C,gBAAe,KAAK,SAAS,+DAA+D;AAG9F,YAAS,OAAO,eAAe;GAE/B,MAAM,cACJ,eAAe,IAAI,aAAa,aAAa,IAAI,YAAY,eAAe,aAAa,aAAa;GACxG,IAAI,QAAQ;AACZ,OAAI,aAAa;AACf,aAAS,aAAa;AACtB,aAAS,eAAe;;AAG1B,OAAI,MAAM,YAGR,MAAK,SAAS,OAAO,KAAK,SAAS,QAAQ,eAAe,GAAG,GAAG,EAAE;AAGpE,QAAK,mBAAmB,eAAe;GAEvC,MAAM,QAAQ,eAAe;AAI7B,YAAS,SAAS,SAAS;GAC3B,MAAM,eAAe,eAAe,SAAS,iBAAiB;AAC9D,kBAAe,SAAS,eAAe;GAEvC,MAAM,mBAAmB,KAAK,YAAY,cAAc,aAAa,OAAO,QAAQ,OAAO;AAE3F,OAAI,kBACF,MAAK,QAAQ,WAAW,YAAY,EAAE;OAEtC,aAAY;;EAIhB,YAAY,cAAc,aAAa,OAAO,QAAQ,QAAQ;AAC5D,OAAI,aACF,aAAY,YAAY,KAAK,aAAa,eAAe,EAAE,OAAO,CAAC;AAGrE,OAAI,YACF,aAAY,cAAc,KAAK,aAAa,iBAAiB;IAC3D,QAAQ,UAAU,aAAa,OAAO;IACtC,QAAQ,UAAU,aAAa,OAAO;IACvC,CAAC;;EAIN,0BAA0B,OAAO;AAC/B,QAAK,SAAS,OAAO,KAAK,gBAAgB,GAAG,GAAG,MAAM;;EAGxD,mBAAmB,OAAO;AACxB,QAAK,gBAAgB,KAAK,SAAS,QAAQ,MAAM;;;AAGrD,QAAO,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CEjKjB,MAAMI,OAAK,QAAQ,UAAU;CAC7B,MAAM,oBAAA,eAAA;CACN,MAAM,YAAA,oBAAA;CACN,MAAM,EAAE,yBAAA,yBAAA;CACR,MAAM,EAAE,sBAAA,oBAAA;CACR,MAAM,EAAE,QAAQ,UAAA,iBAAA;CAChB,MAAM,UAAA,iBAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,sBAAA,6BAAA;CACN,MAAM,cAAA,kBAAA;CACN,MAAM,oCAAA,2CAAA;CACN,MAAM,6BAAA,oCAAA;CACN,MAAM,EAAE,6BAAA,+BAAA;CACR,MAAM,mBAAA,2BAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,WAAA,iBAAA;CACN,MAAM,gBAAA,wBAAA,CAA+D;CACrE,MAAM,UAAA,iBAAA;CACN,MAAM,YAAA,mBAAA;CACN,MAAM,WAAA,kBAAA;CACN,MAAM,YAAA,mBAAA;CACN,MAAM,cAAA,qBAAA;CACN,MAAM,SAAA,gBAAA;CACN,MAAM,SAAA,gBAAA;CACN,MAAM,UAAA,iBAAA;CACN,MAAM,YAAA,mBAAA;CACN,MAAM,kBAAA,+BAAA;CACN,MAAM,EAAE,gCAAA,+BAAA;CACR,MAAM,EAAE,gBAAA,gBAAA;CACR,MAAM,iBAAA,wBAAA;CACN,MAAM,EAAE,0BAA0B,gCAAA,qBAAA;CAClC,MAAM,wBAAA,+BAAA;CACN,MAAM,eAAA,sBAAA;CACN,MAAM,YAAA,oBAAA;CAEN,MAAM,0BAAA,kCAAA,CAA8E;CACpF,MAAM,0BAAA,kCAAA,CAA8E;CACpF,MAAM,EAAE,2BAA2B,8BAAA,oBAAA;CAEnC,MAAM,kBAAkB,IAAI,IAAI,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,CAAC;CAE7F,MAAM,2BAA2B,OAAO,QAAQ,UAAU,CAAC,QAAQ,CAAC,UAAU,QAAQ,OAAO;AAE7F,SAAQ,gBAAe,YAAW;EAChC,MAAM,gBAAgB,QAAQ,eAAe,kBAAkB,QAAQ,eAAe;EAGtF,IAAI,SAAS,EAAE;AAOf,MAAI,eAAe;AACjB,YAASA,KAAG,cAAcA,KAAG,UAAU,gBAAgB;AAEvD,UAAO,gBAAgB;AACvB,UAAO,eAAeA,KAAG,aAAa,QAAQ,OAAO;AAIrD,QAAK,MAAM,CAAC,YAAY,mBAAmB,0BAA0B;IACnE,MAAM,WAAW;KAAE,GAAG;KAAgB,OAAOA,KAAG,aAAa,YAAY,OAAO;KAAE;AAClF,WAAO,eAAe,QAAQ,YAAY,SAAS;;SAEhD;AACL,UAAO,gBAAgB,OAAO,eAAe;AAI7C,QAAK,MAAM,CAAC,YAAY,mBAAmB,0BAA0B;IACnE,MAAM,WAAW;KAAE,GAAG;KAAgB,OAAO,OAAO;KAAa;AACjE,WAAO,eAAe,QAAQ,YAAY,SAAS;;;AAKvD,oBAAkB,QAAQ,CAAC,SAAS,CAAC;EAKrC,MAAM,oBAAoB,SAAS,SAAS;AAC1C,SAAM,IAAI,UAAU,sBAAsB;;AAE5C,SAAO,eAAe,mBAAmB,OAAO,YAAY;AAE5D,SAAO,eAAe,QAAQ,UAAU;GACtC,cAAc;GACd,UAAU;GACV,OAAO;GACR,CAAC;EAEF,MAAM,yBAAyB,iBAAiB,OAAO,OAAO,YAAY,WAAW,OAAO;EAE5F,MAAM,kBAAkB,OAAO,OAAO,uBAAuB;AAC7D,SAAO,iBAAiB,iBAAiB;GACvC,aAAa;IACX,OAAO;IACP,UAAU;IACV,cAAc;IACf;IACA,OAAO,cAAc;IACpB,OAAO;IACP,cAAc;IACf;GACF,CAAC;AAEF,oBAAkB,YAAY;AAC9B,SAAO,eAAe,QAAQ,gBAAgB;AAC9C,MAAI,eAAe;AACjB,UAAO,eAAe,OAAO,cAAc,gBAAgB;AAC3D,UAAO,eAAe,OAAO,YAAY,WAAW,OAAO,OAAO,UAAU;;AAI9E,cAAY,MAAM,QAAQ,OAAO;AAEjC,uBAAqB,OAAO;AAE5B,uBAAqB,QAAQ,QAAQ;AAGrC,SAAO,eAAe,SAAS,eAAe,OAAO,EAAE,SAAS,eAAe,EAAE,WAAW,OAAO,cAAc,CAAC;AAGlH,UAAQ,eAAe;AACrB,OAAI,CAAC,OAAO,SACV;AAGF,OAAI,OAAO,SAAS,eAAe,WACjC,aAAY,QAAQ,QAAQ,KAAA,GAAW,EAAE,EAAE,KAAK;OAEhD,QAAO,SAAS,iBAAiB,cAAc;AAC7C,gBAAY,QAAQ,QAAQ,KAAA,GAAW,EAAE,EAAE,KAAK;AAChD,QAAI,CAAC,OAAO,UACV;IAGF,MAAM,eAAe,SAAS,eAAe,OAAO,UAAU;AAC9D,QAAI,CAAC,aAAa,kBAAkB;AAClC,kBAAa,mBAAmB;AAChC,8BAAyB,YAAY,QAAQ,MAAM;;KAErD;IAEJ;AAEF,SAAO;;CAGT,SAAS,qBAAqB,QAAQ;AACpC,QAAM,QAAQ,wBAAwB,UAAU;AAChD,QAAM,QAAQ,wBAAwB,UAAU;AAChD,SAAO,mBAAmB;AAE1B,OAAK,MAAM,SAAS,iBAAiB;GACnC,IAAI,YAAY;AAChB,OAAI,UAAU,QACZ,aAAY;YACH,UAAU,eACnB,aAAY;AAEd,UAAO,eAAe,QAAQ,KAAK,SAAS;IAC1C,cAAc;IACd,YAAY;IACZ,MAAM;AACJ,YAAO,SAAS,kBAAkB,4BAA4B,QAAQ,MAAM,CAAC;;IAE/E,IAAI,GAAG;AACL,SAAI,CAAC,SAAS,SAAS,EAAE,CACvB,KAAI;SAEJ,KAAI,UAAU,QAAQ,QAAQ,GAAG,EAC/B,SAAS,wBAAwB,MAAM,6CACxC,CAAC;AAEJ,YAAO,oBAAoB,OAAO,EAAE;;IAEvC,CAAC;;;CAIN,SAAS,qBAAqB,QAAQ,SAAS;EAC7C,MAAM,oBAAoB,YAAY,KAAK;AAI3C,SAAO,cAAc,QAAQ;AAC7B,SAAO,oBAAoB,QAAQ;AACnC,SAAO,aAAa,QAAQ;AAG5B,SAAO,YAAY,UAAU,cAAc,QAAQ;GACjD,aAAa,QAAQ;GACrB,aAAa,QAAQ;GACrB,UAAU,QAAQ;GAClB,WAAW,QAAQ;GACnB,KAAK,QAAQ;GACb,cAAc,QAAQ;GACtB,UAAU,QAAQ;GAClB,cAAc,QAAQ;GACtB,aAAa,OAAO;GACpB,QAAQ;GACR,cAAc,QAAQ;GACvB,EAAE,EAAE,wBAAwB,MAAM,CAAC;EAEpC,MAAM,iBAAiB,SAAS,eAAe,OAAO,UAAU,CAAC;AACjE,SAAO,UAAU;AAGjB,SAAO,kBAAkB,IAAI,eAAe;GAC1C,UAAU,SAAS,eAAe,OAAO,UAAU;GACnD,KAAK,SAAS,eAAe,OAAO,UAAU,CAAC;GAC/C,aAAa;GACd,EAAE,OAAO;AAEV,SAAO,kBAAkB,QAAQ;AAEjC,SAAO,cAAc,QAAQ;AAI7B,SAAO,UAAU,OAAO,OAAO,OAAO;AACtC,SAAO,gBAAgB;AAKvB,SAAO,UAAU;AAGjB,SAAO,gBAAgB,KAAA;AAEvB,SAAO,qBAAqB,QAAQ;AACpC,SAAO,gBAAgB,QAAQ;AAK/B,MAAI,QAAQ,mBAAmB,QAAQ,gBAAgB,gBACrD,QAAO,mBAAmB,QAAQ;MAElC,QAAO,mBAAmB,GACvB,iBAAiB;GAChB,kCAAkB,IAAI,KAAK;GAC3B,oCAAoB,IAAI,KAAK;GAC7B,qBAAqB,CAAC,OAAO;GAC9B,EACF;AAGH,SAAO,qBAAqB,OAAO,iBAAiB;AAIpD,SAAO,gBAAgB,QAAQ,OAAO,QAAQ,EAAE,EAAE;GAChD,kBAAkB;GAClB,aAAa,OAAO,mBAAmB;GACvC,MAAM;GACN,KAAK,OAAO,UAAU;GACtB,cAAc,OAAO;GACtB,CAAC;AACF,SAAO,kBAAkB,QAAQ,OAAO,QAAQ,EAAE,EAAE;GAClD,kBAAkB;GAClB,aAAa,OAAO,mBAAmB;GACvC,MAAM;GACN,KAAK,OAAO,UAAU;GACtB,cAAc,OAAO;GACtB,CAAC;AAKF,SAAO,aAAa,UAAU,WAAW,OAAO;AAGhD,SAAO,eAAe,WAAY;AAChC,UAAO,OAAO;;EAKhB,MAAM,cAAc,QAAQ,OAAO,OAAO;EAC1C,MAAM,UAAU,QAAQ,OAAO,OAAO;EACtC,MAAM,cAAc,QAAQ,OAAO,OAAO;EAC1C,MAAM,aAAa,QAAQ,OAAO,OAAO;EACzC,MAAM,YAAY,QAAQ,OAAO,OAAO;EACxC,MAAM,UAAU,QAAQ,OAAO,OAAO;EACtC,MAAM,WAAW,SAAS,OAAO,OAAO;EACxC,MAAM,YAAY,UAAU,OAAO,OAAO;EAC1C,MAAM,kBAAkB,YAAY,OAAO,QAAQ,EAAE,EAAE;GACrD,YAAY,YAAY,aAAa;GACrC,iBAAiB;GAClB,CAAC;EACF,MAAM,SAAS,OAAO,OAAO,OAAO;EACpC,MAAM,SAAS,OAAO,OAAO,OAAO;AACpC,SAAO,yBAAyB,sBAAsB,OAAO,OAAO;EAEpE,IAAI,SAAS;AAEb,SAAO,QAAQ;GACb,MAAM;GACN,IAAI,SAAS;AACX,WAAO;;GAET,IAAI,OAAO,OAAO;AAChB,aAAS,kBAAkB,UAAU,MAAM;;GAE7C,IAAI,mBAAmB;AACrB,WAAO;;GAET,IAAI,aAAa;AACf,WAAO;;GAET,IAAI,cAAc;AAChB,WAAO;;GAET,IAAI,aAAa;AACf,WAAO;;GAET,IAAI,cAAc;AAChB,WAAO;;GAET,IAAI,cAAc;AAChB,WAAO;;GAET,IAAI,cAAc;AAChB,WAAO;;GAET,IAAI,UAAU;AACZ,WAAO;;GAET,IAAI,aAAa;AACf,WAAO;;GAET,IAAI,UAAU;AACZ,WAAO;;GAET,IAAI,YAAY;AACd,WAAO;;GAET,IAAI,UAAU;AACZ,WAAO;;GAET,IAAI,UAAU;AACZ,WAAO;;GAET,IAAI,SAAS;AACX,WAAO,OAAO;;GAEhB,IAAI,SAAS;AACX,WAAO,OAAO;;GAEhB,IAAI,eAAe;AACjB,WAAO,SAAS,eAAe,OAAO,cAAc;;GAEtD,IAAI,SAAS;AACX,WAAO,OAAO;;GAEhB,IAAI,OAAO;AACT,WAAO,OAAO;;GAEhB,IAAI,SAAS;AACX,WAAO,OAAO;;GAEhB,IAAI,MAAM;AACR,WAAO,OAAO;;GAEhB,IAAI,WAAW;AACb,WAAO,OAAO;;GAEhB,IAAI,WAAW;AACb,WAAO;;GAET,IAAI,WAAW;AACb,WAAO,SAAS,eAAe,SAAS,eAAe,OAAO,UAAU,CAAC,UAAU;;GAGrF,IAAI,SAAS,OAAO;AAClB,YAAQ,IAAI,OAAO,UAAU,QAAQ,MAAM;;GAE7C,IAAI,UAAU;AACZ,WAAO,SAAS,eAAe,SAAS,eAAe,OAAO,UAAU,CAAC,SAAS;;GAEpF,IAAI,YAAY;AACd,WAAO;;GAET,IAAI,cAAc;AAChB,WAAO;;GAET,IAAI,UAAU;AACZ,WAAO;;GAET,IAAI,cAAc;AAChB,WAAO;;GAET,IAAI,aAAa;AACf,WAAO;;GAET,IAAI,YAAY;AACd,WAAO;;GAET,IAAI,UAAU;AACZ,WAAO;;GAET,IAAI,cAAc;AAChB,WAAO;;GAET,IAAI,SAAS;AACX,WAAO;;GAET,IAAI,SAAS;AACX,WAAO;;GAET,IAAI,SAAS;AACX,WAAO,OAAO;;GAEhB,IAAI,eAAe;AACjB,QAAI,SAAS,eAAe,OAAO,UAAU,CAAC,YAAY,OACxD,OAAM,aAAa,OAAO,QAAQ,CAChC,oDACA,gBACD,CAAC;AAGJ,WAAO,OAAO;;GAEhB,IAAI,iBAAiB;AACnB,QAAI,SAAS,eAAe,OAAO,UAAU,CAAC,YAAY,OACxD,OAAM,aAAa,OAAO,QAAQ,CAChC,sDACA,gBACD,CAAC;AAGJ,WAAO,OAAO;;GAEhB,IAAI,iBAAiB;AACnB,WAAO,OAAO;;GAEhB,IAAI,QAAQ;AACV,WAAO,OAAO,gBAAgB,SAAS,eAAe,OAAO,cAAc,GAAG,KAAA;;GAEjF,CAAC;AAEF,SAAO,iBAAiB,QAAQ;GAE9B,MAAM,kCAAkC,QAAQ,OAAO;GACvD,aAAa,kCAAkC,eAAe,OAAO;GACrE,SAAS,kCAAkC,WAAW,OAAO;GAC7D,aAAa,kCAAkC,eAAe,OAAO;GACrE,YAAY,kCAAkC,cAAc,OAAO;GACnE,WAAW,kCAAkC,aAAa,OAAO;GACjE,SAAS,kCAAkC,WAAW,OAAO;GAC7D,QAAQ,kCAAkC,UAAU,OAAO;GAC3D,QAAQ,kCAAkC,UAAU,OAAO;GAC3D,UAAU,kCAAkC,YAAY,OAAO;GAC/D,QAAQ,kCAAkC,UAAU,OAAO;GAC3D,QAAQ,kCAAkC,UAAU,OAAO;GAC3D,QAAQ,kCAAkC,UAAU,OAAO;GAC3D,OAAO,kCAAkC,SAAS,OAAO;GACzD,YAAY,kCAAkC,cAAc,OAAO;GACnE,aAAa,kCAAkC,eAAe,OAAO;GACrE,SAAS,kCAAkC,WAAW,OAAO;GAC7D,aAAa,kCAAkC,eAAe,OAAO;GACrE,SAAS,kCAAkC,WAAW,OAAO;GAC7D,aAAa,kCAAkC,eAAe,OAAO;GACrE,SAAS,kCAAkC,WAAW,OAAO;GAC7D,YAAY,kCAAkC,cAAc,OAAO;GACnE,SAAS,kCAAkC,WAAW,OAAO;GAC7D,WAAW,kCAAkC,aAAa,OAAO;GACjE,YAAY,kCAAkC,cAAc,OAAO;GACnE,aAAa,kCAAkC,eAAe,OAAO;GACrE,kBAAkB,kCAAkC,oBAAoB,OAAO;GAG/E,QAAQ,EAAE,cAAc,OAAO;GAC/B,UAAU,EAAE,cAAc,OAAO;GACjC,UAAU,EAAE,cAAc,OAAO;GACjC,KAAK,EAAE,cAAc,OAAO;GAC7B,CAAC;EASF,MAAM,qCAAqB,IAAI,KAAK;EACpC,IAAI,gBAAgB;AAEpB,SAAO,aAAa,SAAU,SAAS,UAAU,GAAG,GAAG,MAAM;AAC3D,OAAI,OAAO,YAAY,WACrB,WAAU,kBAAkB,UAAU,QAAQ;AAEhD,aAAU,kBAAkB,KAAK,QAAQ;AAEzC,UAAO,yBAAyB,SAAS,SAAS,MAAM;IAAE,eAAe;IAAQ,QAAQ;IAAO,CAAC;;AAEnG,SAAO,cAAc,SAAU,SAAS,UAAU,GAAG,GAAG,MAAM;AAC5D,OAAI,OAAO,YAAY,WACrB,WAAU,kBAAkB,UAAU,QAAQ;AAEhD,aAAU,kBAAkB,KAAK,QAAQ;AAEzC,UAAO,yBAAyB,SAAS,SAAS,MAAM;IAAE,eAAe;IAAQ,QAAQ;IAAM,CAAC;;AAGlG,SAAO,eAAe,SAAU,SAAS,GAAG;AAC1C,YAAS,kBAAkB,KAAK,OAAO;GAEvC,MAAM,cAAc,mBAAmB,IAAI,OAAO;AAClD,OAAI,aAAa;AACf,iBAAa,YAAY;AACzB,uBAAmB,OAAO,OAAO;;;AAGrC,SAAO,gBAAgB,SAAU,SAAS,GAAG;AAC3C,YAAS,kBAAkB,KAAK,OAAO;GAEvC,MAAM,cAAc,mBAAmB,IAAI,OAAO;AAClD,OAAI,aAAa;AAEf,iBAAa,YAAY;AACzB,uBAAmB,OAAO,OAAO;;;EAIrC,SAAS,yBAAyB,SAAS,SAAS,MAAM,EAAE,eAAe,QAAQ,kBAAkB;AAEnG,OAAI,CAAC,cAAc,UACjB,QAAO;GAKT,MAAM,qBAAqB,cAAc;GACzC,MAAM,SAAS,mBAAmB,KAAA,IAAY,iBAAiB,EAAE;GAEjE,SAAS,OAAO;AACd,QAAI,CAAC,mBAAmB,IAAI,OAAO,CACjC;AAGF,QAAI;AACF,SAAI,OAAO,YAAY,WACrB,SAAQ,MAAM,oBAAoB,KAAK;cAC9B,OAAO,gBAAgB,cAChC,MAAG,aAAa,SAAS,QAAQ;MAAE,UAAU,OAAO,SAAS;MAAM,eAAe;MAAO,CAAC;aAErF,GAAG;AACV,qBAAgB,QAAQ,GAAG,OAAO,SAAS,KAAK;;AAGlD,QAAI,mBAAmB,IAAI,OAAO,CAChC,KAAI,OACF,0BAAyB,SAAS,SAAS,MAAM;KAAE;KAAe,QAAQ;KAAM,gBAAgB;KAAQ,CAAC;QAEzG,oBAAmB,OAAO,OAAO;;AAKvC,OAAI,UAAU,EACZ,WAAU;GAGZ,MAAM,cAAc,WAAW,MAAM,QAAQ;AAC7C,sBAAmB,IAAI,QAAQ,YAAY;AAE3C,UAAO;;AAKT,SAAO,iBAAiB,SAAU,UAAU;AAC1C,cAAW,YAAY,QAAQ,QAAQ,SAAS;AAEhD,wBAAqB;AACnB,QAAI;AACF,eAAU;aACH,GAAG;AACV,qBAAgB,QAAQ,GAAG,OAAO,SAAS,KAAK;;KAElD;;EAKJ,IAAI,2BAA2B;EAC/B,MAAM,+CAA+B,IAAI,KAAK;EAC9C,IAAI,+BAA+B;EAInC,IAAI,yCAAyC;AAE7C,MAAI,OAAO,oBAAoB;AAC7B,UAAO,wBAAwB,SAAU,UAAU;AACjD,eAAW,YAAY,QAAQ,QAAQ,SAAS;IAEhD,MAAM,SAAS,EAAE;AACjB,iCAA6B,IAAI,QAAQ,SAAS;AAElD,MAAE;AACF,QAAI,2CAA2C,EAC7C,gCAA+B,kBAAkB;AAC/C,gCAA2B,YAAY,KAAK,GAAG,kBAAkB;OAChE,MAAO,GAAG;AAGf,WAAO;;AAGT,UAAO,uBAAuB,SAAU,QAAQ;AAC9C,aAAS,kBAAkB,iBAAiB,OAAO;AAEnD,iCAA6B,OAAO;;GAGtC,SAAS,2BAA2B,KAAK;IAEvC,MAAM,kBAAkB,CAAC,GAAG,6BAA6B,MAAM,CAAC;AAChE,SAAK,MAAM,UAAU,gBAEnB,KAAI,6BAA6B,IAAI,OAAO,EAAE;KAC5C,MAAM,WAAW,6BAA6B,IAAI,OAAO;AACzD,kCAA6B,OAAO;AACpC,SAAI;AACF,eAAS,IAAI;cACN,GAAG;AACV,sBAAgB,QAAQ,GAAG,OAAO,SAAS,KAAK;;;;GAMxD,SAAS,6BAA6B,QAAQ;AAC5C,QAAI,6BAA6B,IAAI,OAAO,EAAE;AAC5C,OAAE;AACF,SAAI,2CAA2C,EAC7C,eAAc,6BAA6B;;AAI/C,iCAA6B,OAAO,OAAO;;;EAI/C,SAAS,gBAAgB;AACvB,QAAK,MAAM,eAAe,mBAAmB,QAAQ,CACnD,cAAa,YAAY;AAE3B,sBAAmB,OAAO;AAE1B,iBAAc,6BAA6B;;EAG7C,SAAS,OAAO,MAAM,OAAO,iBAAiB,UAAU;AACtD,OAAI,SAAS,KAAA,EACX,QAAO;AAET,UAAO,kBAAkB,UAAU,KAAK;AAExC,OAAI,UAAU,KAAA,EACZ,SAAQ,kBAAkB,UAAU,MAAM;AAG5C,qBAAkB,kBAAkB,QAAQ,gBAAgB;AAC5D,cAAW,kBAAkB,QAAQ,SAAS;GAE9C,MAAM,SAAS,OAAO,UAAU,cAAc,SAAS;GACvD,MAAM,OAAO,SAAS,eAAe,OAAO;AAE5C,OAAI,SAAS,GACX,MAAK,OAAO;AAEd,OAAI,UAAU,KAAA,EACZ,MAAK,eAAe,MAAM,SAAS,MAAM;AAE3C,OAAI,gBACF,MAAK,eAAe,MAAM,YAAY,GAAG;AAE3C,QAAK,gBAAgB;AAErB,UAAO;;AAET,SAAO,eAAe,QAAQ,aAAa;GACzC,OAAO,OAAO,kBAAkB;GAChC,cAAc;GACd,YAAY;GACZ,UAAU;GACX,CAAC;AACF,SAAO,eAAe,QAAQ,UAAU;GACtC,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;GACX,CAAC;EAEF,SAAS,MAAM,GAAG,MAAM;GACtB,MAAM,MAAM,OAAO,UAAU,cAAc,MAAM;GACjD,MAAM,OAAO,SAAS,eAAe,IAAI;AAEzC,OAAI,KAAK,SAAS,EAChB,MAAK,eAAe,MAAM,SAAS,OAAO,KAAK,GAAG,CAAC;AAErD,OAAI,KAAK,SAAS,EAChB,MAAK,eAAe,MAAM,UAAU,OAAO,KAAK,GAAG,CAAC;AAGtD,UAAO;;AAET,SAAO,eAAe,OAAO,aAAa;GACxC,OAAO,OAAO,iBAAiB;GAC/B,cAAc;GACd,YAAY;GACZ,UAAU;GACX,CAAC;AACF,SAAO,eAAe,QAAQ,SAAS;GACrC,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;GACX,CAAC;EAEF,SAAS,MAAM,KAAK;GAClB,MAAM,QAAQ,OAAO,UAAU,cAAc,QAAQ;GACrD,MAAM,OAAO,SAAS,eAAe,MAAM;AAC3C,QAAK,eAAe,MAAM,WAAW,OAAO;AAE5C,OAAI,QAAQ,KAAA,EACV,MAAK,eAAe,MAAM,OAAO,OAAO,IAAI,CAAC;AAG/C,UAAO;;AAET,SAAO,eAAe,OAAO,aAAa;GACxC,OAAO,OAAO,iBAAiB;GAC/B,cAAc;GACd,YAAY;GACZ,UAAU;GACX,CAAC;AACF,SAAO,eAAe,QAAQ,SAAS;GACrC,OAAO;GACP,cAAc;GACd,YAAY;GACZ,UAAU;GACX,CAAC;AAEF,SAAO,cAAc,SAAU,SAAS,cAAc;AACpD,OAAI,UAAU,SAAS,EACrB,OAAM,IAAI,UAAU,mEAAmE;AAGzF,kBAAe,kBAAkB,UAAU,aAAa;AAExD,OAAI,iBAAiB,IAGnB;YACS,iBAAiB,KAAK;IAC/B,MAAM,YAAY,UAAU,SAAS,aAAa;AAClD,QAAI,cAAc,KAChB,OAAM,aAAa,OAAO,QAAQ,CAChC,yEAC4B,eAAe,iCAC3C,cACD,CAAC;AAEJ,mBAAe,UAAU,mBAAmB,UAAU;AAEtD,QAAI,iBAAiB,SAAS,eAAe,OAAO,UAAU,CAAC,QAE7D;;AAQJ,oBAAiB;AACf,gBAAY,WAAW,QAAQ,cAAc,EAAE,MAAM,SAAS,CAAC;MAC9D,EAAE;;AAGP,SAAO,OAAO,SAAU,KAAK;AAC3B,OAAI;AACF,WAAO,KAAK,IAAI;WACV;AAEN,UAAM,aAAa,OAAO,QAAQ,CAChC,yDACA,wBACD,CAAC;;;AAIN,SAAO,OAAO,SAAU,KAAK;AAC3B,OAAI;AACF,WAAO,KAAK,IAAI;WACV;AAEN,UAAM,aAAa,OAAO,QAAQ,CAChC,yDACA,wBACD,CAAC;;;AAIN,SAAO,OAAO,WAAY;GACxB,MAAM,UAAU,SAAS,eAAe,OAAO,UAAU,CAAC;AAC1D,OAAI,QACF,SAAQ,OAAO;;AAInB,SAAO,QAAQ,WAAY;AAEzB,QAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,EACnC,QAAO,GAAG,SAAS;AAIrB,YAAS,eAAe,OAAO,CAAC,kBAAkB,OAAO,OAAO,KAAK;AAErE,OAAI,OAAO,WAAW;AACpB,QAAI,OAAO,UAAU,KACnB,QAAO,UAAU,KAAK,YAAY;AAGpC,QAAI,OAAO,UAAU,OAAO;AAG1B,cAAS,eAAe,OAAO,UAAU,CAAC,kBAAkB,OAAO,OAAO,KAAK;AAC/E,YAAO,UAAU,OAAO;;IAE1B,MAAM,MAAM,SAAS,eAAe,OAAO,UAAU;AACrD,QAAI,IAAI,gBACN,KAAI,gBAAgB,OAAO;AAE7B,WAAO,OAAO;;AAGhB,kBAAe;AACf,iBAAc,cAAc,OAAO;;AAGrC,SAAO,mBAAmB,SAAU,KAAK,YAAY,KAAA,GAAW;GAC9D,MAAM,cAAc,QAAQ,QAAQ,QAAQ,IAAI;AAEhD,OAAI,cAAc,KAAA,KAAa,cAAc,MAAM;AACjD,gBAAY,kBAAkB,UAAU,UAAU;AAElD,QAAI,cAAc,IAAI;AAGpB,SAAI,yBAAyB,KAAK,UAAU,CAC1C,OAAM,IAAI,UAAU,kEAAkE;AAGxF,0BAAqB,QAAQ,UAAU,oBAAoB,uBAAuB;;;AAItF,UAAO,4BAA4B,YAAY;;AAGjD,SAAO,eAAe,WAAY;AAChC,UAAO,OAAO,UAAU,cAAc;;AAIxC,SAAO,gBAAgB,WAAY;AAEnC,SAAO,gBAAgB,WAAY;EAInC,SAAS,kBAAkB,QAAQ;AACjC,WAAQ,GAAG,SAAS;AAClB,WAAO,gBAAgB,KAAK,QAAQ,GAAG,KAAK;;;AAIhD,SAAO,UAAU;GACf,QAAQ,kBAAkB,SAAS;GACnC,OAAO,kBAAkB,QAAQ;GACjC,OAAO,kBAAkB,QAAQ;GACjC,YAAY,kBAAkB,aAAa;GAC3C,OAAO,kBAAkB,QAAQ;GACjC,KAAK,kBAAkB,MAAM;GAC7B,QAAQ,kBAAkB,SAAS;GACnC,OAAO,kBAAkB,QAAQ;GACjC,OAAO,kBAAkB,QAAQ;GACjC,gBAAgB,kBAAkB,iBAAiB;GACnD,UAAU,kBAAkB,WAAW;GACvC,MAAM,kBAAkB,OAAO;GAC/B,KAAK,kBAAkB,MAAM;GAC7B,OAAO,kBAAkB,QAAQ;GACjC,MAAM,kBAAkB,OAAO;GAC/B,SAAS,kBAAkB,UAAU;GACrC,SAAS,kBAAkB,UAAU;GACrC,OAAO,kBAAkB,QAAQ;GACjC,MAAM,kBAAkB,OAAO;GAChC;EAED,SAAS,4BAA4B,MAAM;AACzC,UAAO,WAAY;AACjB,yBAAqB,QAAQ,UAAU,KAAK;;;AAIhD,SAAO,QAAQ;GACb,OAAO,4BAA4B,QAAQ;GAC3C,MAAM,4BAA4B,OAAO;GACzC,SAAS,4BAA4B,UAAU;GAC/C,OAAO,4BAA4B,QAAQ;GAC3C,QAAQ,4BAA4B,SAAS;GAC7C,QAAQ,4BAA4B,SAAS;GAC7C,MAAM,4BAA4B,OAAO;GACzC,OAAO,4BAA4B,QAAQ;GAC3C,QAAQ,4BAA4B,SAAS;GAC7C,UAAU,4BAA4B,WAAW;GACjD,UAAU,4BAA4B,WAAW;GACjD,QAAQ,4BAA4B,SAAS;GAC7C,UAAU,4BAA4B,WAAW;GACjD,UAAU,4BAA4B,WAAW;GAClD,CAAC;;CAGJ,SAAS,kCAAkC,UAAU,QAAQ;EAC3D,MAAM,OAAO,EACX,IAAI,OAAO;AACT,UAAO,eAAe,QAAQ,UAAU;IACtC,cAAc;IACd,YAAY;IACZ,UAAU;IACV;IACD,CAAC;KAEL;AAED,SAAO,eAAe,KAAK,KAAK,QAAQ,EAAE,OAAO,OAAO,YAAY,CAAC;AACrE,SAAO;;;;;;CC76BT,MAAM,EAAE,eAAe,cAAc,2BAA2B,QAAQ,OAAO;CAC/E,MAAM,EAAE,aAAa,QAAQ,SAAS;CACtC,MAAM,EAAE,qBAAA,gBAAA;CAER,MAAM,qBAAqB;EACzB,QAAQ;EACR,UAAU;EACV,MAAM;EACN,WAAW;EACX,YAAY;EACZ,cAAc;EACf;CAED,MAAM,yBAAyB,CAAC,KAAK,IAAI;CAEzC,IAAM,oBAAN,cAAgC,iBAAiB;EAC/C,iBAAiB,EAAE;EACnB;EACA;EAEA,YAAY,SAAS,EAAE,kBAAkB,wBAAwB,qBAAqB,SAAS,EAAE,EAAE;AACjG,SAAM,QAAQ;AACd,SAAA,kBAAwB;AACxB,SAAA,qBAA2B;;EAG7B,yBAAyB,iBAAiB,YAAY;AACpD,OAAI,CAAC,mBAAmB,aAAa,IACnC,QAAO;AAET,OAAI,MAAA,gBAAsB,SAAS,WAAW,CAC5C,QAAO;AAET,OAAI,MAAA,sBAA4B,cAAc,IAC5C,QAAO;AAET,UAAO;;EAGT,0BAA0B,WAAW;GACnC,MAAM,QAAQ,UAAU,MAAM,IAAI;GAElC,MAAM,sBAAsB;AAC5B,OAAI,MAAM,SAAS,oBACjB,OAAM,IAAI,MAAM,2CAA2C,MAAM,OAAO,WAAW,sBAAsB;GAG3G,MAAM,gBAAgB,EAAE;AAExB,QAAK,IAAI,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;IAC1C,MAAM,WAAW,MAAM,GAAG,MAAM;AAChC,QAAI,CAAC,SACH;AAGF,QAAI,CAAC,mBAAmB,WAAW;AACjC,mBAAc,SAAS;AACvB,YAAO;;AAGT,kBAAc,KAAK,mBAAmB,WAAW,CAAC;;AAGpD,UAAO;;EAGT,yBAAyB,cAAc,YAAY;AACjD,gBAAa,GAAG,kBAAkB;IAChC,IAAI;AACJ,YAAQ,QAAQ,aAAa,MAAM,MAAM,KAEvC,KADe,MAAM,eAAe,YAAY,MAAM,KACvC,MACb;KAGJ;AAEF,gBAAa,GAAG,UAAS,UAAS;AAChC,UAAM,gBAAgB,YAAY,MAAM;KACxC;;EAGJ,yBAAyB,YAAY;GACnC,MAAM,eAAe,MAAA,cAAoB;AACzC,SAAA,wBAA8B,cAAc,WAAW;AAEvD,gBAAa,GAAG,aAAa;AAC3B,UAAM,cAAc,YAAY,EAAE,CAAC;KACnC;;EAGJ,4BAA4B,YAAY;GACtC,MAAM,mBAAmB,MAAA,cAAoB,MAAA,cAAoB,SAAS;AAC1E,SAAA,wBAA8B,kBAAkB,WAAW;AAE3D,YAAS,MAAA,gBAAqB,QAAO;AACnC,QAAI,KAAK;AACP,WAAM,gBAAgB,YAAY,IAAI;AACtC;;AAEF,UAAM,cAAc,YAAY,EAAE,CAAC;KACnC;;EAGJ,wBAAwB;AACtB,SAAA,cAAoB,SAAS;;EAG/B,gBAAgB,YAAY,YAAY,SAAS,eAAe;GAC9D,MAAM,kBAAkB,QAAQ;AAEhC,OAAI,MAAA,wBAA8B,iBAAiB,WAAW,CAC5D,QAAO,MAAM,gBAAgB,YAAY,YAAY,SAAS,cAAc;GAG9E,MAAM,gBAAgB,MAAA,yBAA+B,gBAAgB,aAAa,CAAC;AAEnF,OAAI,cAAc,WAAW,GAAG;AAC9B,UAAA,sBAA4B;AAC5B,WAAO,MAAM,gBAAgB,YAAY,YAAY,SAAS,cAAc;;AAG9E,SAAA,gBAAsB;GAItB,MAAM,aAAa,EAAE,GAAG,SAAS;AAEjC,OAAI,MAAA,cAAoB,WAAW,EACjC,OAAA,wBAA8B,WAAW;OAEzC,OAAA,2BAAiC,WAAW;AAG9C,UAAO,MAAM,gBAAgB,YAAY,YAAY,YAAY,cAAc;;EAGjF,eAAe,YAAY,OAAO;AAChC,OAAI,MAAA,cAAoB,SAAS,GAAG;AAClC,UAAA,cAAoB,GAAG,MAAM,MAAM;AACnC;;AAEF,SAAM,eAAe,YAAY,MAAM;;EAGzC,cAAc,YAAY,UAAU;AAClC,OAAI,MAAA,cAAoB,SAAS,GAAG;AAClC,UAAA,cAAoB,GAAG,KAAK;AAC5B,UAAA,sBAA4B;AAC5B;;AAEF,SAAM,cAAc,YAAY,SAAS;;EAG3C,gBAAgB,YAAY,KAAK;AAC/B,OAAI,MAAA,cAAoB,SAAS,GAAG;AAClC,SAAK,MAAM,gBAAgB,MAAA,cACzB,cAAa,QAAQ,IAAI;AAE3B,UAAA,sBAA4B;;AAE9B,SAAM,gBAAgB,YAAY,IAAI;;;CAI1C,SAAS,4BAA4B,UAAU,EAAE,EAAE;AACjD,UAAO,aAAY;AACjB,WAAQ,MAAM,YAAY;AAExB,WAAO,SAAS,MADU,IAAI,kBAAkB,SAAS,QAAQ,CACzB;;;;AAK9C,QAAO,UAAU;;;;;CCtLjB,MAAM,EAAE,aAAa,QAAQ,SAAS;CACtC,MAAM,EAAE,uBAAA,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CR,QAAO,UAAU,SAAS,mBAAmB,IAAI;AAC/C,UAAO,cAAa,SAAS,YAAY;GACvC,MAAM,EAAE,UAAU,MAAM,QAAQ,QAAQ,UAAU,EAAE;GACpD,MAAM,kBAAkB,IAAI,iBAAiB;GAI7C,MAAM,EAAE,kBAAkB,mBAAmB,oBAAoB,SAAS,gBAAgB;AAG1F,WAAQ,iBAAiB,kBAAkB,EAAE,CAAC;GAG9C,MAAM,cAAc;IAClB,QAAQ,QAAQ,UAAU;IAC1B,SAAS,QAAQ;IACjB,QAAQ,gBAAgB;IACzB;AACD,OAAI,QAAQ,SAAS,KAAA,KAAa,QAAQ,SAAS,MAAM;AACvD,gBAAY,OAAO,QAAQ;AAC3B,gBAAY,SAAS;;AAEvB,OAAI,QAAQ,SACV,aAAY,WAAW,QAAQ;GAEjC,MAAM,UAAU,IAAI,QAAQ,KAAK,YAAY;AAE7C,OAAI,SAAQ,YAAW;AACrB,YAAQ,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC;KACjC,CACC,MAAK,aAAY;AAChB,QAAI,oBAAoB,SAItB,oBAAmB,gBADJ,SAAS,OAAO,SAAS,QAAQ,SAAS,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC,EACvC;KACzC,QAAQ,SAAS;KACjB,YAAY,SAAS;KACrB,SAAS,gBAAgB,SAAS,QAAQ;KAC3C,CAAC;aACO,aAAa,KAAA,EACtB,OAAM,IAAI,UAAU,kEAAkE;aAC7E,CAAC,gBAAgB,OAAO,QAEjC,UAAS,SAAS,eAAe;KAEnC,CACD,OAAM,UAAS;AACd,YAAQ,kBAAkB,kBAAkB,MAAM;KAClD;AAGJ,UAAO;;;;;;;;;CAUX,SAAS,oBAAoB,SAAS,iBAAiB;EACrD,IAAI,wBAAwB;AA6C5B,SAAO;GAAE,kBA3CgB;IACvB,MAAM,QAAQ;AACZ,qBAAgB,MAAM,OAAO;AAC7B,4BAAuB,MAAM,OAAO;;IAEtC,QAAQ;AACN,4BAAuB,OAAO;;IAEhC,SAAS;AACP,4BAAuB,QAAQ;;IAEjC,IAAI,SAAS;AACX,YAAO,uBAAuB,UAAU;;IAE1C,IAAI,UAAU;AACZ,YAAO,gBAAgB,OAAO;;IAEhC,IAAI,SAAS;AACX,YAAO,gBAAgB,OAAO;;IAEjC;GAuB0B,gBArBJ;IACrB,eAAe,YAAY;AACzB,6BAAwB;;IAE1B,iBAAiB,GAAG,MAAM;AACxB,aAAQ,mBAAmB,GAAG,KAAK;;IAErC,gBAAgB,GAAG,MAAM;AACvB,aAAQ,kBAAkB,GAAG,KAAK;;IAEpC,eAAe,GAAG,MAAM;AACtB,aAAQ,iBAAiB,GAAG,KAAK;;IAEnC,cAAc,GAAG,MAAM;AACrB,aAAQ,gBAAgB,GAAG,KAAK;;IAElC,gBAAgB,GAAG,MAAM;AACvB,aAAQ,kBAAkB,GAAG,KAAK;;IAErC;GAE0C;;;;;;CAO7C,SAAS,gBAAgB,SAAS;EAChC,MAAM,SAAS,EAAE;AACjB,OAAK,MAAM,CAAC,KAAK,UAAU,QACzB,QAAO,OAAO;EAEhB,MAAM,UAAU,QAAQ,cAAc;AACtC,MAAI,QAAQ,SAAS,EACnB,QAAO,gBAAgB;AAEzB,SAAO;;;;;;CCxKT,MAAM,OAAO,QAAQ,OAAO;CAC5B,MAAM,EAAE,kBAAkB,QAAQ,MAAM;CACxC,MAAM,KAAK,QAAQ,KAAK,CAAC;CACzB,MAAM,KAAK,QAAQ,KAAK;CACxB,MAAM,cAAA,gBAAA;CACN,MAAM,oBAAA,+BAAA;CACN,MAAM,YAAA,oBAAA;CACN,MAAM,EAAE,sBAAA,eAAA,EAAA,cAAA,aAAA,iBAAA;CACR,MAAM,EAAE,QAAA,oBAAA;CACR,MAAM,EAAE,aAAA,eAAA;CACR,MAAM,EAAE,wBAAA,gBAAA;CACR,MAAM,WAAA,iBAAA;CACN,MAAM,iBAAA,yBAAA;CACN,MAAM,EAAE,iBAAA,gBAAA;CACR,MAAM,EAAE,sBAAA,kBAAA;CACR,MAAM,EAAE,0BAAA,uBAAA;CACR,MAAM,8BAAA,gCAAA;CACN,MAAM,EACJ,iBAAiB,oBAAoB,mBAAA,0BAAA;CAEvC,MAAM,qBAAA,6BAAA;CAEN,IAAM,YAAN,cAAwB,YAAY,UAAU;EAC5C,YAAY,OAAO,SAAS;AAE1B,SAAM,OAAO;IAAE,WAAW;IAAM,GAAG;IAAS,CAAC;;;CAIjD,MAAM,SAAS,OAAO,SAAS;CAC/B,IAAI,yBAAyB;CAE7B,IAAM,QAAN,MAAM,MAAM;EACV,YAAY,QAAQ,IAAI,UAAU,EAAE,EAAE;GACpC,MAAM,WAAW,IAAI,SAAS,QAAQ,gBAAgB,KAAA,IAAY,cAAc,QAAQ,YAAY;GACpG,MAAM,EAAE,MAAM,aAAa,cAAc,OAAO,SAAS;AAEzD,aAAU,iBAAiB,SAAS,UAAU,SAAS;AAEvD,QAAK,UAAU,aAAa,QAAQ,cAAc;GAElD,MAAM,eAAe,SAAS,eAAe,KAAK,QAAQ,UAAU;AAEpE,WAAQ,YAAY,KAAK,QAAQ,aAAa;AAE9C,qBAAkB,MAAM,aAAa;AAErC,gBAAa,OAAO;;EAGtB,IAAI,SAAS;AAGX,UAAO,KAAK,QAAQ;;EAGtB,IAAI,iBAAiB;AACnB,UAAO,KAAK,QAAQ;;EAGtB,IAAI,YAAY;AAEd,UAAO,SAAS,eAAe,KAAK,QAAQ,UAAU,CAAC;;EAGzD,YAAY;AACV,UAAO,sBAAsB,SAAS,eAAe,KAAK,QAAQ,UAAU,EAAE,EAAE,mBAAmB,OAAO,CAAC;;EAG7G,aAAa,MAAM;AACjB,OAAI,CAAC,SAAS,eAAe,KAAK,QAAQ,UAAU,CAAC,cAAc,uBACjE,OAAM,IAAI,MAAM,+FAA+F;AAGjH,UAAO,SAAS,eAAe,KAAK,CAAC;;EAGvC,uBAAuB;AACrB,OAAI,CAAC,GAAG,UAAU,KAAK,QAAQ,CAC7B,OAAM,IAAI,UAAU,oGAC2B;AAGjD,UAAO,KAAK;;EAGd,YAAY,UAAU;AACpB,OAAI,eAAe,SACjB,MAAK,QAAQ,OAAO,SAAS;AAG/B,OAAI,SAAS,UAAU;IACrB,MAAM,WAAW,SAAS,eAAe,KAAK,QAAQ,UAAU;IAEhE,MAAM,MAAM,UAAU,SAAS,SAAS,IAAI;AAC5C,QAAI,QAAQ,KACV,OAAM,IAAI,UAAU,oBAAoB,SAAS,IAAI,YAAY;AAGnE,aAAS,OAAO;AAChB,aAAS,UAAU,UAAU,mBAAmB,SAAS,KAAK;AAC9D,SAAK,QAAQ,gBAAgB,aAAa,MAAM;AAChD,aAAS,oBAAoB;;;EAIjC,OAAO,SAAS,SAAS,IAAI;AAC3B,OAAI,CAAC,uBACH,0BAA0B,IAAI,OAAO,CAAE,OAAO;GAGhD,MAAM,WAAW,uBAAuB,cAAc,WAAW;AACjE,YAAS,YAAY;AACrB,UAAO,SAAS;;EAGlB,aAAa,QAAQ,KAAK,UAAU,EAAE,EAAE;AACtC,aAAU,wBAAwB,QAAQ;GAM1C,MAAM,EAAE,wBAAwB,wBADC,QAAQ,cAAc,KAAA,IAAY,QAAQ,YAAY,UACL,QAAQ,UAAU;GAEpG,MAAM,UAAU,EAAE,QAAQ,mEAAmE;AAC7F,OAAI,QAAQ,SACV,SAAQ,UAAU,QAAQ;GAG5B,MAAM,WAAW,MAAM,eAAe,qBAAqB;IACzD;IACA;IACD,CAAC;AAEF,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,oCAAoC,SAAS,SAAS;AAGxE,aAAU,OAAO,OAAO,SAAS;IAC/B,KAAK,SAAS;IACd,aAAa,SAAS,QAAQ,mBAAmB,KAAA;IACjD,UAAU,QAAQ;IAClB,WAAW,QAAQ;IACpB,CAAC;AAEF,UAAO,IAAI,MAAM,SAAS,MAAM,QAAQ;;EAG1C,aAAa,SAAS,UAAU,UAAU,EAAE,EAAE;AAC5C,aAAU,yBAAyB,UAAU,QAAQ;AAGrD,UAAO,IAAI,MAFQ,MAAM,GAAG,SAAS,SAAS,EAEjB,QAAQ;;;CAIzC,SAAS,wBAAwB,SAAS;AAExC,MAAI,QAAQ,QAAQ,KAAA,EAClB,OAAM,IAAI,UAAU,gDAAgD;AAEtE,MAAI,QAAQ,gBAAgB,KAAA,EAC1B,OAAM,IAAI,UAAU,wDAAwD;EAK9E,MAAM,aAAa,EAAE,GAAG,SAAS;AAEjC,MAAI,QAAQ,aAAa,KAAA,EACvB,YAAW,WAAY,IAAI,IAAI,QAAQ,SAAS,CAAE;AAGpD,MAAI,QAAQ,cAAc,KAAA,EACxB,YAAW,YAAY,IAAI,WAAW;AAGxC,SAAO;;CAMT,SAAS,wBAAwB,WAAW,WAAW;EAGrD,IAAI,WAAW,gBAAgB,kBAAkB;AAEjD,MAAI,cAAc,KAAA,GAAW;AAE3B,eAAY;AACZ,oBAAiB,qBAAqB;AACtC,sBAAmB,EAAE;AACrB,sBAAmB;aACV,cAAc,UAAU;AAEjC,eAAY;AACZ,oBAAiB,qBAAqB;AACtC,sBAAmB,EAAE;AACrB,sBAAmB;aACV,OAAO,cAAc,YAAY,cAAc,MAAM;AAE9D,eAAY,UAAU,cAAc,KAAA,IAAY,UAAU,YAAY;AACtE,oBAAiB,UAAU,eAAe,KAAA,IAAY,UAAU,aAAa,qBAAqB;AAClG,sBAAmB,UAAU,iBAAiB,KAAA,IAAY,UAAU,eAAe,EAAE;AACrF,sBAAmB;QAEnB,OAAM,IAAI,UAAU,sDAAsD;EAI5E,MAAM,sBAAsB,CAC1B,GAAG,kBACH,6BAA6B,CAC9B;AAED,SAAO;GACL;GACA,qBAAqB,IAAI,gBAAgB;IACvC;IACA;IACA;IACA,kBAAkB;IACnB,CAAC;GACF;GACD;;CAGH,SAAS,yBAAyB,UAAU,SAAS;EACnD,MAAM,aAAa,EAAE,GAAG,SAAS;AAEjC,MAAI,WAAW,gBAAgB,KAAA,GAAW;GACxC,MAAM,UAAU,KAAK,QAAQ,SAAS;AACtC,OAAI,YAAY,YAAY,YAAY,UAAU,YAAY,OAC5D,YAAW,cAAc;;AAI7B,MAAI,WAAW,QAAQ,KAAA,EACrB,YAAW,MAAM,cAAc,KAAK,QAAQ,SAAS,CAAC,CAAC;AAGzD,SAAO;;CAGT,SAAS,iBAAiB,SAAS,UAAU,UAAU;EACrD,MAAM,cAAc;GAClB,eAAe;IAEb,KAAK;IACL,UAAU;IACV,aAAa;IACb,aAAa;IACb,cAAc;KACZ,wBAAwB;KACxB,kBAAkB;KACnB;IACD,YAAY,KAAA;IACZ;IACA,mBAAmB;IACnB,cAAc;IAGd,YAAY,KAAA;IACZ,kBAAkB,KAAA;IAClB,WAAW,KAAA;IACX,gBAAgB,KAAA;IAChB,WAAW,KAAA;IACZ;GAGD,cAAc;GACf;AAGD,MAAI,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,OAAO,CACzC,OAAM,IAAI,WAAW,8BAA8B,QAAQ,YAAY,sCAAsC;AAG/G,cAAY,cAAc,cAAc,SAAS;AACjD,cAAY,cAAc,cAAc,SAAS,QAAQ,GAAG,SAAS;AAErE,MAAI,QAAQ,QAAQ,KAAA,EAClB,aAAY,cAAc,MAAO,IAAI,IAAI,QAAQ,IAAI,CAAE;AAGzD,MAAI,QAAQ,aAAa,KAAA,EACvB,aAAY,cAAc,WAAY,IAAI,IAAI,QAAQ,SAAS,CAAE;AAGnE,MAAI,QAAQ,sBAAsB;AAChC,OAAI,YAAY,cAAc,gBAAgB,MAC5C,OAAM,IAAI,UAAU,mEAAmE;AAGzF,eAAY,cAAc,eAAe,EAAE,wBAAwB,MAAM;;AAG3E,cAAY,cAAc,YAAY,QAAQ,cAAc,KAAA,IACvB,IAAI,WAAW,GACf,QAAQ;AAE7C,cAAY,cAAc,iBAAiB,QAAQ,mBAAmB,KAAA,IAC3B,IAAI,gBAAgB,CAAE,UAAU,QAAQ,GACzC,QAAQ;AAElD,MAAI,EAAE,YAAY,cAAc,0BAA0B,gBACxD,OAAM,IAAI,UAAU,uDAAuD;EAG7E,MAAM,EAAE,WAAW,qBAAqB,qBACtC,wBAAwB,QAAQ,WAAW,YAAY,cAAc,UAAU;AACjF,cAAY,cAAc,YAAY;AACtC,cAAY,cAAc,aAAa;AACvC,cAAY,cAAc,mBAAmB;AAE7C,MAAI,QAAQ,eAAe,KAAA,GAAW;AACpC,eAAY,cAAc,aAAa,OAAO,QAAQ,WAAW;AACjE,OAAI,YAAY,cAAc,eAAe,cAC3C,aAAY,cAAc,aAAa,mBAAmB;YACjD,YAAY,cAAc,eAAe,eAClD,OAAM,IAAI,WAAW,iEAAiE;;AAI1F,MAAI,QAAQ,gBAAgB,KAAA,EAC1B,aAAY,cAAc,QAAQ;AAGpC,MAAI,QAAQ,sBAAsB,KAAA,EAChC,aAAY,cAAc,oBAAoB,QAAQ,QAAQ,kBAAkB;AAGlF,MAAI,QAAQ,iBAAiB,KAAA,EAC3B,aAAY,cAAc,eAAe,OAAO,QAAQ,aAAa;AAGvE,SAAO;;CAGT,SAAS,cAAc,MAAM,UAAU;EACrC,IAAI,WAAW;AAEf,MAAI,gBAAgB,YAAY,YAErB,YAAY,OAAO,KAAK,CACjC,QAAO,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,WAAW;WAC3D,gBAAgB,YACzB,QAAO,IAAI,WAAW,KAAK;AAG7B,MAAI,gBAAgB,YAAY;AAC9B,cAAW,kBAAkB,MAAM;IACjC,KAAK,SAAS,OAAO;IACrB,6BAA6B,SAAS,WAAW,IAAI,UAAU;IAChE,CAAC;AACF,UAAO,iBAAiB,MAAM,SAAS;QAEvC,QAAO,OAAO,KAAK;AAGrB,SAAO;GAAE;GAAM;GAAU;;AAG3B,SAAQ,QAAQ;;;;;AC3WhB,IAAIU,WAAS,IAAIC,WAAAA,MAAM,kBAAkB,CAAC;AAC1C,IAAI,SAASC,SAAiBF,SAAO;AACrC,IAAI,YAAY,IAAI,MAAM,EAAE,EAAE,EAC5B,IAAI,GAAG,MAAM;CACX,MAAM,QAAQ,OAAO;AACrB,QAAO,OAAO,UAAU,aAAa,MAAM,KAAK,OAAO,GAAG;GAE7D,CAAC;AACF,IAAI,cAAc;AAElB,IAAI,cAAc,UAAU;AAQ5B,IAAI,UAAU,UAAU;AACxB,IAAI,UAAU,IAAI,MAAM,EAAE,EAAE,EAC1B,IAAI,GAAG,MAAM;AACX,QAAO,QAAQ,IAAI,OAAO,SAAS,KAAK;GAE3C,CAAC;;;ACxBF,MAAM,4BAAoD;CACxD,KAAK;CACL,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,MAAM;CACN,MAAM;CACP;AAED,MAAM,oBAAoB,WAA2B;CACnD,MAAM,mBAAmB,OAAO,aAAa;AAE7C,KAAI,iBAAiB,WAAW,MAAM,EAAE;EACtC,MAAM,YAAY,OAAO,SAAS,iBAAiB,MAAM,GAAG,GAAG,EAAE,GAAG;AAEpE,MAAI;AACF,UAAO,OAAO,MAAM,UAAU,GAAG,SAAS,OAAO,cAAc,UAAU;UACnE;AACN,UAAO;;;AAIX,KAAI,iBAAiB,WAAW,KAAK,EAAE;EACrC,MAAM,YAAY,OAAO,SAAS,iBAAiB,MAAM,GAAG,GAAG,EAAE,GAAG;AAEpE,MAAI;AACF,UAAO,OAAO,MAAM,UAAU,GAAG,SAAS,OAAO,cAAc,UAAU;UACnE;AACN,UAAO;;;AAKX,QAAO,0BADa,iBAAiB,MAAM,GAAG,GAAG,KACA;;AAGnD,MAAM,2BAA2B,QAC/B,IAAI,QAAQ,qDAAqD,WAC/D,iBAAiB,OAAO,CACzB;AAEH,MAAa,mBAAmB,QAAwB;AAMtD,QAAO,wBALkBG,YAAU,SAAS,SAAS,IAAI,UAAU;EACjE,cAAc,EAAE;EAChB,cAAc,EAAE;EAChB,cAAc;EACf,CAAC,CAC8C;;AAGlD,MAAa,aAAa,QAAgB;AACxC,KAAI,CAAC,IAAK,QAAO;AAEjB,QAAO,gBAAgB,IAAI;;;;AC9C7B,SAAgB,oBAAoB,EAClC,KACA,OACA,eAC4B;AAO5B,QAAO,8CANQ,IAAI,gBAAgB;EACjC,GAAG;EACH,GAAI,SAAS,EAAE,OAAO,OAAO;EAC7B,GAAI,eAAe,EAAE,aAAa;EACnC,CAAC,CAE0D,UAAU;;AAGxE,SAAgB,aAAa,EAC3B,KACA,OACA,YAC4B;AAO5B,QAAO,oCANQ,IAAI,gBAAgB;EACjC;EACA,GAAI,SAAS,EAAE,MAAM,OAAO;EAC5B,GAAI,YAAY,SAAS,SAAS,KAAK,EAAE,UAAU,SAAS,KAAK,IAAI,EAAE;EACxE,CAAC,CAEgD,UAAU;;AAG9D,SAAgB,oBAAoB,EAClC,KACA,OACA,eAC4B;AAO5B,QAAO,mDANQ,IAAI,gBAAgB;EACjC;EACA,GAAI,SAAS,EAAE,OAAO;EACtB,GAAI,eAAe,EAAE,SAAS,aAAa;EAC5C,CAAC,CAE+D,UAAU;;AAG7E,SAAgB,qBAAqB,EACnC,OACmC;AACnC,QAAO,UAAU,UAAU,UAAU,IAAI,CAAC,WAAW;AACnD,mBAAiB;AACf,UAAO,KAAK,6BAA6B,SAAS;KACjD,IAAK;GACR;;AAGJ,SAAgB,kBAAkB,EAAE,OAAyC;AAC3E,QAAO,UAAU,UAAU,UAAU,IAAI,CAAC,WAAW;AACnD,mBAAiB;AACf,UAAO,KAAK,0BAA0B,SAAS;KAC9C,IAAK;GACR;;AAGJ,SAAgB,gBAAgB,UAAwB;CACtD,MAAM,QAAQ;CACd,MAAM,SAAS;CACf,MAAM,QAAQ,OAAO,OAAO,QAAQ,SAAS;CAC7C,MAAM,OAAO,OAAO,OAAO,SAAS,UAAU;AAE9C,QAAO,KACL,UACA,gBACA,SAAS,MAAM,UAAU,OAAO,QAAQ,KAAK,OAAO,IAAI,+BACzD;;AAcH,SAAgB,uBAAuB,GAAmC;AACxE,QAAO;EACL,wBAAwB,EAAE,yBAAyB;EACnD,iBAAiB,EAAE,kBAAkB;EACrC,wBAAwB,EAAE,yBAAyB;EACnD,wBAAwB,EAAE,yBAAyB;EACnD,qBAAqB,EAAE,sBAAsB;EAC7C,eAAe,aAAqB,EAAE,gBAAgB,EAAE,UAAU,CAAC;EACpE;;AAGH,eAAsB,kBACpB,UACA,QACA,WACA,SACA,QACe;AACf,KAAI;AACF,UAAQ,UAAR;GACE,KAAK;AACH,oBAAgB,oBAAoB,OAAO,CAAC;AAC5C,gBACE,QAAQ,0BAA0B,mCACnC;AACD;GAEF,KAAK;AACH,oBAAgB,aAAa,OAAO,CAAC;AACrC,gBAAY,QAAQ,mBAAmB,4BAA4B;AACnE;GAEF,KAAK;AACH,oBAAgB,oBAAoB,OAAO,CAAC;AAC5C,gBACE,QAAQ,0BAA0B,mCACnC;AACD;GAEF,KAAK;AACH,UAAM,qBAAqB,OAAO;AAClC,gBACE,QAAQ,0BACN,iEACH;AACD;GAEF,KAAK;AACH,UAAM,kBAAkB,OAAO;AAC/B,gBACE,QAAQ,uBACN,sDACH;AACD;GAEF,QACE,OAAM,IAAI,MAAM,yBAAyB,WAAW;;UAEjD,OAAO;AACd,UAAQ,MAAM,yBAAyB,MAAM;EAC7C,MAAM,aACH,QAAQ,eAAe,OAAO,aAAa,SAAS,GAAG,SACxD,sBAAsB,SAAS;AACjC,YAAU,UAAU;;;;;ACpJxB,SAAgB,qBAAsC;AACpD,KAAI,OAAO,cAAc,YACvB,QAAO;CAGT,MAAM,YAAY,UAAU,UAAU,aAAa;CACnD,MAAM,WAAW,UAAU,UAAU,aAAa,IAAI;AAEtD,KAAI,mBAAmB,KAAK,UAAU,CACpC,QAAO;AAGT,KAAI,UAAU,KAAK,UAAU,CAC3B,QAAO;AAGT,KAAI,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,UAAU,CAClD,QAAO;AAGT,KAAI,MAAM,KAAK,SAAS,IAAI,UAAU,KAAK,UAAU,CACnD,QAAO;AAGT,KAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAChD,QAAO;AAGT,QAAO;;AAGT,SAAgB,iBAA0B;CACxC,MAAM,KAAK,oBAAoB;AAC/B,QAAO,OAAO,SAAS,OAAO;;;;AClChC,eAAsB,aACpB,QACA,QACoC;CACpC,MAAM,EAAE,SAAS,GAAG,SAAS,UAAU,EAAE;AACzC,QAAO,OAAO,IAAI,wBAAwB;EACxC,GAAG;EACH,GAAI,WAAW,EAAE,UAAU,CAAC,QAAQ,IAAI,QAAQ,OAAO,SAAS,MAAM,EAAE;EACzE,CAAC;;AAGJ,eAAsB,WACpB,QACA,IACA,SACmC;AACnC,QAAO,OAAO,IAAI,wBAAwB,MAAM;EAC9C,GAAI,SAAS,QAAQ,EAAE,MAAM,QAAQ,MAAM;EAC3C,GAAI,SAAS,gBAAgB,EAAE,cAAc,QAAQ,cAAc;EACpE,CAAC;;;;ACrBJ,MAAM,EAAE,UAAU,oBAAoB,mBACpCC,wCAAAA,yBAAyC,aAAa;AAExD,MAAa,gCACX;AACF,MAAa,2BAA2B;;;ACgBxC,MAAMC,kBACJ;AAEF,SAAwB,cAAc,EACpC,OACA,UACA,MACA,OACA,UAAU,OACV,YACwC;CACxC,MAAM,EAAE,aAAa,iBAAiB;CACtC,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,mBAAmB,YAAY,EAAE,6BAA6B;CAEpE,SAAS,cAAc;AACrB,WAAS,KAAK;;AAGhB,QACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,MAAD;EACE,MAAK;EACL,UAAU;EACV,SAAS;EACT,YAAY,MAAM;AAChB,OAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,MAAE,gBAAgB;AAClB,iBAAa;;;EAGjB,WAAU;YAVZ,CAaE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACG,YAAY;KACX,KAAK,YAAYD;KACjB,KAAK;KACL,MAAM;KACN,WAAW;KACZ,CAAC;IAGD,WACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAACE,aAAAA,YAAD,EAAY,WAAU,2BAA4B,CAAA;MAC9C,CAAA;KACF,CAAA;IAIP,SAAS,CAAC,WAAW,CAAC,MAAM,aAC3B,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;KAAO,WAAU;KAAmC,SAAQ;eACzD,MAAM;KACD,CAAA;IAIT,OAAO,aAAa,CAAC,WACpB,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,gFAAiF,CAAA;IAE9F;MAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,SAAS,EAAE,kBAAkB;IAC3B,CAAA,EACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cAAsC;IAAqB,CAAA,CACpE;KACD;;;;;ACjFX,SAAS,mBACP,SACe;AACf,KAAI,MAAM,QAAQ,QAAQ,OAAO,IAAI,QAAQ,OAAO,SAAS,GAAG;EAI9D,MAAM,eAHe,QAAQ,OAAO,UACjC,GAAG,OAAO,EAAE,YAAY,MAAM,EAAE,YAAY,GAC9C,CACiC;AAClC,MAAI,cAAc,UAChB,QAAO,aAAa;;AAGxB,QAAO,QAAQ,aAAa;;AAG9B,SAAwB,iBAAiB,EACvC,SACA,cAC2C;CAC3C,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAW,mBAAmB,QAAQ;CAC5C,MAAM,UAAU,QAAQ,SAAS,WAAW,CAAC,CAAC,QAAQ;AAEtD,QACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;EACE,OAAO,QAAQ;EACL;EACV,MAAM,WAAW,QAAQ;EACzB,OACE,CAAC,WAAW,cAAc,OACtB,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,OAAO,WAAW,EAAE,CAAC,EAAE,GAClE,KAAA;EAEG;EACT,CAAA;;;;;;;;ACvCN,MAAa,uBACX;;;;;;;;;;;;;;AA2CF,SAAgB,oBAAoB,EAClC,SACA,UACA,WACA,OACA,cACA,SACA,cACA,QACA,qBAAqB,UACrB,eAC8C;CAC9C,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,uBAAuB,gBAAgB,EAAE,4BAA4B;AAE3E,KAAI,UACF,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,UAAD,EAAU,WAAU,eAAgB,CAAA;IACnC,uBAAuB,iBACtB,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,WAAY,CAAA;IAEjC,uBAAuB,mBACtB,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,aAAc,CAAA;IAEhC;MACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aACb,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,MACjC,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAa,WAAU;cAAvB;KACE,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,mCAAoC,CAAA;KACxD,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,aAAc,CAAA;KAClC,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,aAAc,CAAA;KAC9B;MAJI,EAIJ,CACN;GACE,CAAA,CACF;;AAIV,KAAI,MACF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;GAAG,WAAU;aAA4B;GAAyB,CAAA;EAC9D,CAAA;AAIV,QAIE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACG;GACA,UACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eAAiC;KAAiB,CAAA;IAC3D,CAAA,GAEN;GAED;GACA,eAAe,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,KAAK;IAAa,WAAU;IAAQ,CAAA;GACrD;;;;;;;;;AC5GV,MAAa,uBAAuB;;;;;;;AA+BpC,SAAgB,iBAAiB,EAC/B,UACA,UACA,OACA,UACA,SACA,SACA,YAC2C;CAC3C,MAAM,EAAE,MAAM,0BAA0B;AACxC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACG;GACD,iBAAA,GAAA,kBAAA,MAAC,UAAD;IACE,MAAK;IACI;IACT,WAAU;cAHZ,CAKE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,WACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;MACE,KAAK;MACL,KAAK,YAAY;MACjB,WAAU;MACV,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,0BAA2B,CAAA;KAExC,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,SAAS,EAAE,kBAAkB;MAC5B,CAAA,EACH,YAAY,QAAQ,aAAa,SAChC,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV;MACC,CAAA,CAEF;OACC;;GACR;GACG;;;;;;;;;AChEV,SAAgB,eAAe,EAC7B,OACA,YACyC;CACzC,MAAM,EAAE,MAAM,0BAA0B;AACxC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;GACE,QAAQ,UAAU;GAClB,OAAO,EAAE,mBAAmB;GAC5B,eAAe,SAAS,OAAO;aAE/B,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,UAAW,CAAA;GACd,CAAA,EACf,iBAAA,GAAA,kBAAA,KAAC,cAAD;GACE,QAAQ,UAAU;GAClB,OAAO,EAAE,mBAAmB;GAC5B,eAAe,SAAS,OAAO;aAE/B,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,UAAW,CAAA;GACpB,CAAA,CACX;;;AAIV,SAAS,aAAa,EACpB,QACA,OACA,SACA,YAMC;AACD,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;EACE,MAAK;EACI;EACT,OAAO;EACP,cAAY;EACZ,gBAAc;EACd,WAAWC,YAAAA,GACT,sEACA,SACI,4CACA,8CACL;EAEA;EACM,CAAA;;;;;;;;;;;;AC3Cb,SAAgB,wBAAwB,EACtC,aACA,oBACA,eACA,SACmE;CACnE,MAAM,eAAA,GAAA,MAAA,QAAqC,KAAK;AAEhD,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,SAAS,YAAY;AAC3B,MAAI,CAAC,OAAQ;EACb,MAAM,WAAW,IAAI,sBAClB,YAAY;AACX,OACE,QAAQ,IAAI,kBACZ,eACA,CAAC,sBACD,CAAC,MAED,gBAAe;KAGnB;GAAE,WAAW;GAAG,YAAY;GAAS,CACtC;AACD,WAAS,QAAQ,OAAO;AACxB,eAAa,SAAS,YAAY;IACjC;EAAC;EAAe;EAAa;EAAoB;EAAM,CAAC;AAE3D,QAAO;;;;ACvBT,MAAMC,cAAY;AAelB,SAAgB,eAAe,EAC7B,aACA,eAAe,qBACf,YAAY,eAC6B;CACzC,MAAM,SAASC,mBAAAA,qBAAqB;CACpC,MAAM,EAAE,aAAa,iBAAiB;CACtC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWC,0BAAAA,aAAa;CAE9B,MAAM,gBAAA,GAAA,MAAA,eACE;EACJ;GAAE,OAAO,EAAE,cAAc;GAAE,OAAO;GAAmB;EACrD;GAAE,OAAO,EAAE,cAAc;GAAE,OAAO;GAAkB;EACpD;GAAE,OAAO,EAAE,iBAAiB;GAAE,OAAO;GAAa;EAClD;GAAE,OAAO,EAAE,kBAAkB;GAAE,OAAO;GAAc;EACpD;GAAE,OAAO,EAAE,iBAAiB;GAAE,OAAO;GAAa;EAClD;GAAE,OAAO,EAAE,kBAAkB;GAAE,OAAO;GAAc;EACrD,EACD,CAAC,EAAE,CACJ;CAED,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,GAAG;CAChD,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA+B,GAAG;CAC1D,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,kBAAkB;CAC7D,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAkC,OAAO;AAE1D,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,iBAAiB;AAC7B,sBAAmB,WAAW;KAC7B,IAAI;AACP,eAAa,aAAa,MAAM;IAC/B,CAAC,WAAW,CAAC;CAKhB,MAAM,gBAAgB,kBAAkB,KAAA,IAAY;CAGpD,MAAM,eAAA,GAAA,sBAAA,kBAA+B;EACnC,UAAU;GACR;GACA,mBAAmB;GACnBF;GACA;GACD;EACD,SAAS,OAAO,EAAE,gBAAgB;AAChC,UAAO,oBACL,iBACA,WACAA,aACA,cACD;;EAEH,mBAAmB,aACjB,SAAS,MAAM,YAAY,eAAe,KAAA;EAC5C,kBAAkB,KAAA;EAClB,SAAS,CAAC,CAAC;EACZ,CAAC;CAGF,MAAM,eAAA,GAAA,sBAAA,kBAA+B;EACnC,UAAU;GAAC;GAAuB;GAAiB;GAAY;EAC/D,SAAS,OAAO,EAAE,YAAY,QAAQ;AAEpC,OAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,8BAA8B;AAU3D,WATiB,MAAM,aAAa,QAAQ;IAC1C,MAAM;IACN,UAAUA;IACV,cAAc,mBAAmB,KAAA;IACjC,SAAS;KAAE,IAAI;KAAS,MAAM;KAAO;IACrC,QAAQ,CAAC,SAAS;IAClB,cAAc,cAAc,CAAC,YAAY,GAAG,CAAC,KAAK;IAClD,kBAAkB,CAAC,MAAM;IAC1B,CAAC,EACc;;EAElB,mBAAmB,UAAU,aAC3B,SAAS,WAAWA,cAAY,SAAS,SAAS,IAAI,KAAA;EACxD,kBAAkB;EAClB,SAAS,CAAC,uBAAuB,CAAC,CAAC;EACpC,CAAC;CAIF,MAAM,YAAY,CAAC,CAAC;CAGpB,MAAM,EACJ,MACA,WACA,oBACA,aACA,eACA,UARkB,YAAY,cAAc;CAW9C,MAAM,cAAc,wBAAwB;EAC1C;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,YAAA,GAAA,MAAA,eAAyB;AAC7B,MAAI,CAAC,KAAM,QAAO,EAAE;AACpB,MAAI,UAEF,QADmB,MAEL,MAAM,SAAS,UACxB,KAAK,YAAY,EAAE,EAAE,KAAK,OAAO;GAChC,IAAI,EAAE,MAAM;GACZ,OAAO,EAAE,QAAQ;GACjB,WAAW,EAAE,SAAS,IAAI,OAAO;GACjC,aAAa,EAAE;GAChB,EAAE,CACJ,IAAI,EAAE;AAIX,SADmB,MAEL,MAAM,MAAM,CAAC,KAAK,OAAO;GACnC,IAAI,EAAE;GACN,OAAO,EAAE,SAAS;GAClB,WACE,EAAE,aAEA,EAAE,SAGA,IAAI,aACR;GACF,aAAa,KAAA;GACd,EAAE,IAAI,EAAE;IAEV,CAAC,MAAM,UAAU,CAAC;CAErB,MAAM,SACJ,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,sBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,iFAAkF,CAAA;EAC7F,CAAA,EAEP,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;EAAG,WAAU;YACV,EAAE,sBAAsB;EACvB,CAAA,CAEL,EAAA,CAAA;AAGL,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACG,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;EAAgB,WAAU;YACxB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;GAAgB,WAAU;aACvB,EAAE,sBAAsB;GACV,CAAA,EACF,CAAA;EACF,CAAA,EACN,CAAA,EACW,CAAA,EAC1B,iBAAA,GAAA,kBAAA,KAAC,qBAAD;EACa;EACX,SACE,CAAC,SAAS,SAAS,WAAW,KAAK,CAAC,sBAAsB,CAAC;EAE7D,cACE,kBACI,EAAE,6BAA6B,GAC/B,EAAE,yBAAyB;EAEjC,SACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,YAAD;KACE,cAAc,WAAW,iBAAiB;KAC1C,aAAa;KACb,gBAAgB;KAChB,aAAa,EAAE,8BAA8B;KAC7C,aAAa;KACF;KACX,cAAc;KACd,CAAA;IACE,CAAA,EAEN,iBAAA,GAAA,kBAAA,KAAC,gBAAD;IAAgB,OAAO;IAAU,UAAU;IAAe,CAAA,CACtD;;EAER,oBAAmB;EACX;EACK;YAEZ,aAAa,SACZ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aACb,SAAS,KAAK,YACb,iBAAA,GAAA,kBAAA,KAAC,kBAAD;IAEE,SAAS;KACP,IAAI,QAAQ;KACZ,OAAO,QAAQ;KACf,WAAW,QAAQ;KACpB;IACD,YAAY,QAAQ;IACpB,EAPK,QAAQ,GAOb,CACF;GACE,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aACb,SAAS,KAAK,YACb,iBAAA,GAAA,kBAAA,KAAC,kBAAD;IAEE,UAAU,QAAQ;IAClB,OAAO,QAAQ;IACf,UACE,QAAQ,eAAe,OACnB,EAAE,wBAAwB,EACxB,OAAO,OAAO,QAAQ,YAAY,EACnC,CAAC,GACF,KAAA;IAEN,eAAe,SAAS,WAAW,QAAQ,KAAK;IAChD,EAXK,QAAQ,GAWb,CACF;GACE,CAAA;EAEY,CAAA,CACrB,EAAA,CAAA;;;;AC9PP,SAAS,YAAY,KAAa,OAAO,GAAW;AAClD,KAAI;EACF,MAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,SAAO,OAAO,QAAQ,KAAK;AAC3B,SAAO,OAAO,UAAU;SAClB;AACN,SAAO,GAAG,IAAI,QAAQ,KAAK;;;AAyB/B,SAAwB,sBAAsB,EAC5C,cACA,cACA,cACA,YACA,SACA,YACA,UAAU,MACV,YAAY,MACZ,kBACA,kBACA,oBACgD;CAChD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CACzD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,EAAE;CACjD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,yBAAA,GAAA,MAAA,QAAkD,KAAK;CAC7D,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAW,gBAAgB;CACjC,MAAM,kBAAkB,CAAC,CAAC,gBAAgB,CAAC;CAC3C,MAAM,uBAAuB,WACzB,EAAE,yBAAyB,EAAE,OAAO,UAAU,CAAC,GAC/C,EAAE,oBAAoB;CAC1B,MAAM,oBACJ,iBAAiB,CAAC,WAAW,CAAC,cAAc;CAC9C,MAAM,2BACJ,oBAAoB,EAAE,yBAAyB;CACjD,MAAM,2BAA2B,oBAAoB,EAAE,qBAAqB;CAC5E,MAAM,2BAA2B,oBAAoB,EAAE,qBAAqB;AAE5E,EAAA,GAAA,MAAA,iBAAgB;AACd,iBAAe,MAAM;IACpB,CAAC,aAAa,CAAC;CAElB,MAAM,yBAAyB;AAC7B,iBAAe,KAAK;AACpB,mBAAiB,MAAM;;CAGzB,MAAM,uBAAuB;AAC3B,kBAAgB,SAAU,OAAO,IAAI,OAAO,IAAI,KAAM;;CAGxD,MAAM,uBAAuB;AAC3B,kBAAgB,SAAS,OAAO,EAAE;;AAGpC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EACE,WAAW,oEACT,UAAU,gBAAgB;YAF9B;GAKG,UACC,iBAAA,GAAA,kBAAA,KAAC,SAAD;IACE,KAAK,gBAAgB;IACrB,WAAU;IACV,UAAA;IACA,OAAA;IACA,MAAA;IACA,UAAA;IACA,CAAA,GACA,aACF,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;IACE,KAAK,YAAY,YAAY,YAAY;IACzC,WAAU;IACV,OAAO,gBAAgB;IACvB,CAAA,EACF,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;MACE,SAAS;MACT,UAAU,eAAe;MACzB,SAAQ;MACR,MAAK;MACL,WAAU;MACV,cAAY;gBAEZ,iBAAA,GAAA,kBAAA,KAACC,aAAAA,aAAD,EAAa,WAAU,UAAW,CAAA;MAC3B,CAAA;KACT,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,SAAD;OACE,MAAK;OACL,KAAI;OACJ,OAAO;OACP,WAAW,MAAM;QACf,MAAM,OAAO,SAAS,EAAE,OAAO,MAAM;AACrC,YAAI,OAAO,EACT,gBAAe,KAAK;;OAGxB,WAAU;OACV,cAAY,EAAE,uBAAuB;OACrC,CAAA;MACE,CAAA;KACN,iBAAA,GAAA,kBAAA,KAACD,YAAAA,QAAD;MACE,SAAS;MACT,SAAQ;MACR,MAAK;MACL,WAAU;MACV,cAAY;gBAEZ,iBAAA,GAAA,kBAAA,KAACE,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;MAC5B,CAAA;KACL;MACL,EAAA,CAAA,GACD,kBACF,iBAAA,GAAA,kBAAA,MAAC,UAAD;IACE,KAAK;IACL,MAAK;IACL,eAAe,iBAAiB,KAAK;IACrC,WAAU;IACV,cAAY;IACZ,iBAAc;IACd,iBAAe;cAPjB;KASE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAEE,KAAK;MACL,KAAI;MACJ,SAAQ;MACR,UAAS;MACT,WAAU;MACV,eAAY;MACZ,UAAU,MAAM;AACd,SAAE,cAAc,MAAM,UAAU;;MAElC,EAVK,aAUL;KACD,YAAY;MACX,KAAK;MACL,KAAK;MACL,MAAM;MACN,WAAW;MACX,SAAS;MACV,CAAC;KACF,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,WAAU,gIAAiI,CAAA;KAC1I;QAET,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD;KAAW,WAAU;KAAqB,eAAY;KAAS,CAAA,EAC/D,iBAAA,GAAA,kBAAA,KAAC,QAAD;KAAM,WAAU;eAAW,EAAE,oBAAoB;KAAQ,CAAA,CACrD;;GAMP,aACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;IACE,SAAQ;IACR,WAAU;cAET;IACK,CAAA;IAIR,WAAW,eACX,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,QAAD;IACE,eAAe,iBAAiB,KAAK;IACrC,WAAU;IACV,SAAQ;IACR,MAAK;IACL,cAAY,EAAE,qBAAqB;cAEnC,iBAAA,GAAA,kBAAA,KAACK,aAAAA,UAAD,EAAU,WAAU,UAAW,CAAA;IACxB,CAAA;GAIX,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;IAAQ,MAAM;IAAmB,cAAc;cAC7C,iBAAA,GAAA,kBAAA,MAACC,YAAAA,eAAD;KACE,WAAU;KACV,iBAAiB;KACjB,kBAAiB;KACjB,mBAAmB,UAAU;AAC3B,YAAM,gBAAgB;AACtB,4BAAsB,SAAS,OAAO;;eAN1C;MASE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD;OAAa,WAAU;iBAAW;OAAuB,CAAA;MACzD,iBAAA,GAAA,kBAAA,KAACC,YAAAA,mBAAD;OAAmB,WAAU;iBAC1B,EAAE,2BAA2B;OACZ,CAAA;MACpB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD;OACE,cAAY,EAAE,qBAAqB;OACnC,WAAU;iBAEV,iBAAA,GAAA,kBAAA,KAACC,aAAAA,GAAD,EAAG,WAAU,UAAW,CAAA;OACZ,CAAA;MACd,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACZ,YAAY;QACX,KAAK;QACL,KAAK;QACL,MAAM;QACN,WAAW;QACX,SAAS;QACV,CAAC;OACE,CAAA;MACQ;;IACT,CAAA;GAGR,iBAAiB,WAChB,iBAAA,GAAA,kBAAA,MAAC,OAAD;IACE,WAAU;IACV,eAAe,iBAAiB,MAAM;cAFxC,CAIE,iBAAA,GAAA,kBAAA,KAACX,YAAAA,QAAD;KACE,eAAe,iBAAiB,MAAM;KACtC,WAAU;KACV,SAAQ;KACR,MAAK;KACL,cAAY,EAAE,sBAAsB;eAEpC,iBAAA,GAAA,kBAAA,KAACW,aAAAA,GAAD,EAAG,WAAU,UAAW,CAAA;KACjB,CAAA,EACT,iBAAA,GAAA,kBAAA,KAAC,SAAD;KACE,KAAK,gBAAgB;KACrB,WAAU;KACV,UAAA;KACA,UAAA;KACA,UAAU,MAAM,EAAE,iBAAiB;KACnC,CAAA,CACE;;GAIP,iBAAiB,cAChB,iBAAA,GAAA,kBAAA,MAAC,OAAD;IACE,WAAU;IACV,eAAe,iBAAiB,MAAM;cAFxC,CAIE,iBAAA,GAAA,kBAAA,KAACX,YAAAA,QAAD;KACE,UAAU,MAAM;AACd,QAAE,iBAAiB;AACnB,uBAAiB,MAAM;;KAEzB,WAAU;KACV,SAAQ;KACR,MAAK;KACL,cAAY,EAAE,sBAAsB;eAEpC,iBAAA,GAAA,kBAAA,KAACW,aAAAA,GAAD,EAAG,WAAU,UAAW,CAAA;KACjB,CAAA,EACT,iBAAA,GAAA,kBAAA,KAAC,OAAD;KACE,WAAU;KACV,UAAU,MAAM,EAAE,iBAAiB;KACnC,OAAO;MAAE,OAAO;MAAQ,QAAQ;MAAQ;eAExC,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,KAAK,YAAY,YAAY,YAAY;MACzC,WAAU;MACV,OAAO,gBAAgB;MACvB,CAAA;KACE,CAAA,CACF;;GAEJ;;;;;AC9SV,SAAgB,cAAc,EAC5B,KACA,KACA,OAAO,MACP,YAAY,MAC4B;CACxC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,cAAc,OAAO,EAAE,4BAA4B;CACzD,MAAM,aAAA,GAAA,MAAA,eAEF,MACI,iEAAiE,mBAAmB,IAAI,KACxF,IACN,CAAC,IAAI,CACN;AAcD,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAW,QAdK;GAClB,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAUkC,MAAM,oGAAoG;YAExI,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK;GACL,KAAK;GACL,WAAU;GACV,SAAQ;GACR,UAAU,MAAM;AACd,MAAE,cAAc,MAAM,UAAU;IAChC,MAAM,SAAS,EAAE,cAAc;AAC/B,QAAI,OAAQ,QAAO,QAAQ,EAAE,2BAA2B;;GAE1D,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;IACE,WAzBQ;KAChB,IAAI;KACJ,IAAI;KACJ,IAAI;KACL,CAqB8B;IACrB,MAAK;IACL,SAAQ;cAER,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,oKAAqK,CAAA;IACzK,CAAA;GACF,CAAA;EAEJ,CAAA;;;;AC7DV,SAAgBC,eAAa,OAAqC;AAChE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,OAAM;EACN,SAAQ;EACR,MAAK;EACL,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,kSAAmS,CAAA;EACvS,CAAA;;AAIV,SAAgBC,gBAAc,OAAqC;AACjE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,OAAM;EACN,SAAQ;EACR,MAAK;EACL,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,i3BAAk3B,CAAA;EACt3B,CAAA;;AAIV,SAAgB,WAAW,OAAqC;AAC9D,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,OAAM;EACN,SAAQ;EACR,MAAK;EACL,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,ylBAA0lB,CAAA;EAC9lB,CAAA;;AAIV,SAAgB,aAAa,OAAqC;AAChE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,OAAM;EACN,SAAQ;EACR,MAAK;EACL,GAAI;YAEJ,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,+JAAgK,CAAA;EACpK,CAAA;;;;ACtBV,SAAwB,iBAAiB,EACvC,WACA,SACA,cACA,SACA,cACA,kBAC2C;CAC3C,MAAM,EAAE,WAAW,kBAAkB,iBAAiB;CACtD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAAgC,MAAM;CAE/D,MAAM,iBAAiB,YAAY;AACjC,MAAI,UACF,KAAI;AACF,SAAM,UAAU,UAAU,UAAU,UAAU;AAC9C,aAAU;IACR,OAAO,EAAE,oBAAoB;IAC7B,MAAM;IACP,CAAC;WACK,OAAO;AACd,aAAU;IACR,OAAO,EAAE,wBAAwB;IACjC,MAAM;IACN;IACD,CAAC;;;CAKR,MAAM,sBAAsB,OAAO,aAAqB;AACtD,MAAI,CAAC,WAAW;AACd,aAAU;IACR,OAAO,EAAE,2BAA2B;IACpC,MAAM;IACP,CAAC;AACF;;AAEF,QAAM,kBACJ,SAAS,aAAa,EAMtB;GACE,KAAK;GACL,OAAO;GACP,aAAa,EAAE,4BAA4B;IACzC,MAAM,UAAU,UAAU;IAC1B,OAAO;IACR,CAAC;GACH,GACA,YAAY,UAAU;GAAE,OAAO;GAAS,MAAM;GAAW,CAAC,GAC1D,YAAY,UAAU;GAAE,OAAO;GAAS,MAAM;GAAS,CAAC,EACzD,uBAAuB,EAAE,CAC1B;;CAGH,MAAM,yBAAyB,YAAY;AACzC,MAAI,CAAC,WAAW;AACd,aAAU;IACR,OAAO,EAAE,2BAA2B;IACpC,MAAM;IACP,CAAC;AACF;;AAGF,MAAI,cACF,KAAI;AACF,SAAM,cAAc;IAClB;IACA,eAAe;IACf,iBAAiB;IAClB,CAAC;AACF,aAAU;IACR,OAAO,EAAE,uBAAuB;IAChC,MAAM;IACP,CAAC;WACK,OAAO;AACd,aAAU;IACR,OAAO,EAAE,qBAAqB;IAC9B,MAAM;IACN;IACD,CAAC;;;CAKR,MAAM,kBAAkB;EACtB;GAAE,MAAM;GAAY,MAAMC;GAAc;EACxC;GAAE,MAAM;GAAa,MAAMC;GAAe;EAC1C;GAAE,MAAM;GAAU,MAAM;GAAY;EACpC;GAAE,MAAM;GAAK,MAAM;GAAc;EAClC;AAED,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,EAAE,4BAA4B;IAC5B,CAAA,EACL,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,6BAA8B,CAAA,CACzC;MAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,eAAD;KACE,KAAK;KACL,KAAK,EAAE,oBAAoB;KAC3B,MAAK;KACL,WAAU;KACV,CAAA;IACE,CAAA,EAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;MACE,SAAS;MACT,SAAQ;MACR,MAAK;MACL,WAAU;gBAET,EAAE,sBAAsB;MAClB,CAAA,EACR,gBAAgB,GACf,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,MAACA,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MACL,WAAU;MACV,eAAe,oBAAoB,KAAK;gBAJ1C,CAME,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,eAAgB,CAAA,EAC/B,EAAE,eAAe,CACX;SACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;MACE,MAAM;MACN,cAAc;MACd,OAAO,EAAE,eAAe;MACxB,SAAS,gBAAgB,KAAK,cAAc;OAC1C,IAAI,SAAS;OACb,OAAO,SAAS;OAChB,gBAAgB,oBAAoB,SAAS,KAAK;OACnD,EAAE;MACH,CAAA,CACD,EAAA,CAAA,GAEH,gBAAgB,KAAK,aACnB,iBAAA,GAAA,kBAAA,MAACF,YAAAA,QAAD;MAEE,eAAe,oBAAoB,SAAS,KAAK;MACjD,SAAQ;MACR,MAAK;MACL,WAAU;gBALZ,CAOE,iBAAA,GAAA,kBAAA,KAAC,SAAS,MAAV,EAAe,WAAU,iBAAkB,CAAA,EAC1C,SAAS,KACH;QARF,SAAS,KAQP,CACT,CAEA;QAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KACE,WAAU;KACV,OAAO,EACL,YACE,2GACH;eALH,CAOE,iBAAA,GAAA,kBAAA,KAAC,QAAD;MAAM,WAAU;gBACb,cACE,UAAU,EAAE,wBAAwB,GAAG,EAAE,iBAAiB;MACxD,CAAA,EACP,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;MACE,SAAS;MACT,SAAQ;MACR,MAAK;MACL,WAAU;MACV,UAAU,CAAC;gBAEX,iBAAA,GAAA,kBAAA,KAACG,aAAAA,MAAD,EAAM,WAAU,yBAA0B,CAAA;MACnC,CAAA,CACL;OACF;MACF;KACF;;;;;AC7NV,eAAsB,aACpB,KACA,UACe;CACf,MAAM,MAAM,MAAM,MAAM,IAAI;AAC5B,KAAI,CAAC,IAAI,GACP,OAAM,IAAI,MAAM,oBAAoB,IAAI,OAAO,GAAG,IAAI,aAAa;CAErE,MAAM,OAAO,MAAM,IAAI,MAAM;CAC7B,MAAM,YAAY,IAAI,gBAAgB,KAAK;CAC3C,MAAM,IAAI,SAAS,cAAc,IAAI;AACrC,GAAE,OAAO;AACT,GAAE,WAAW;AACb,GAAE,OAAO;AACT,KAAI,gBAAgB,UAAU;;;;ACoBhC,SAAwB,aAAa,EACnC,aACA,cACA,WACA,kBACA,SACA,cACA,gBACA,iBACA,wBACuC;CACvC,MAAM,EAAE,mBAAmB,iBAAiB;CAC5C,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CAEzD,MAAM,kBAAA,GAAA,MAAA,aAA6B,YAAY;AAC7C,MAAI,CAAC,eAAe,cAAe;AACnC,MAAI,gBAAgB;AAClB,kBAAe,aAAa,gBAAgB,QAAQ;AACpD;;AAEF,mBAAiB,KAAK;AACtB,MAAI;AACF,SAAM,aAAa,aAAa,gBAAgB,QAAQ;UAClD;AACN,UAAO,KAAK,aAAa,UAAU,sBAAsB;YACjD;AACR,oBAAiB,MAAM;;IAExB;EAAC;EAAa;EAAc;EAAgB;EAAc,CAAC;CAE9D,MAAM,iBAAiB,eACrB,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;EACE,SAAS;EACT,UAAU;EACV,WACE,kBACI,qJACA;YANR,CASE,iBAAA,GAAA,kBAAA,KAAC,QAAD;GAAM,WAAU;aAAuB,EAAE,uBAAuB;GAAQ,CAAA,EACxE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,UAAD,EAAU,WAAU,UAAW,CAAA,CACxB;;AAGX,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,EACI,eAAe,qBACd,kBAMC,iBAAA,GAAA,kBAAA,MAAC,OAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACG,iBACA,eACG;KACL,qBACG,EAAA,CAAA,GAEN,iBAGJ,iBAAA,GAAA,kBAAA,KAAC,kBAAD;EACa;EACX,SAAS;EACK;EACL;EACK;EACE;EAChB,CAAA,CACD,EAAA,CAAA;;;;ACtGP,MAAM,oBACJ;AAiBF,MAAM,aAAaC,MAAAA,QAAM,KAAK,SAAS,WAAW,EAChD,MACA,WACA,eACqC;AACrC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACZ,KAAK,KAAK,QACT,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;GAEE,eAAe,YAAY,IAAI,GAAG;GAClC,SAAQ;GACR,MAAK;GACL,WAAW,qIACT,cAAc,IAAI,KACd,sHACA;aAGL,IAAI;GACE,EAXF,IAAI,GAWF,CACT;EACE,CAAA;EAER;AAOF,MAAM,YAAYD,MAAAA,QAAM,KAAK,SAAS,UAAU,EAC9C,WACA,WACiB;CACjB,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,UAAU,UAAU,SAAS;CACnC,MAAM,UAAU,UAAU,SAAS;CAEnC,MAAM,YAAY,UAAUE,aAAAA,OAAO,UAAUC,aAAAA,YAAYC,aAAAA;AAEzD,QACE,iBAAA,GAAA,kBAAA,MAAC,UAAD;EACE,eAAe,QAAQ,UAAU;EACjC,WAAU;YAFZ,CAKE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACG,YAAY;IACX,KAAK,UAAU,aAAa;IAC5B,KAAK,UAAU,SAAS,EAAE,qBAAqB;IAC/C,MAAM;IACN,WAAW;IACZ,CAAC,EAGF,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,WAAD,EAAW,WAAU,wBAAyB,CAAA;KAC1C,CAAA;IACF,CAAA,CACF;MAGN,iBAAA,GAAA,kBAAA,KAAC,MAAD;GAAI,WAAU;aACX,UAAU,SAAS,EAAE,kBAAkB;GACrC,CAAA,CACE;;EAEX;AAMF,MAAM,eAAeJ,MAAAA,QAAM,KAAK,SAAS,aAAa,EACpD,WACoB;CACpB,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,kBAAkB,WAAW,EAAE,sBAAsB;AAC3D,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAACK,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,EAC9B,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aAAiC;GAAsB,CAAA,CAClE;;EAER;AAMF,MAAM,aAAaL,MAAAA,QAAM,KAAK,SAAS,WAAW,EAChD,WACkB;CAClB,MAAM,EAAE,MAAM,0BAA0B;AAExC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aAHK,WAAW,EAAE,yBAAyB;GAGG,CAAA;EACzD,CAAA;EAER;AAQF,MAAM,aAAaA,MAAAA,QAAM,KAAK,SAAS,WAAW,EAChD,SACA,MACA,eACkB;AAClB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACG,QAAQ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aAAsB;GAAW,CAAA,EACzD,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cAAyB;IAAc,CAAA,EACrD,eACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cAAyB;IAAkB,CAAA,CAExD;KACF;;EAER;AAEF,MAAM,uBAAuBA,MAAAA,QAAM,KAAK,SAAS,uBAAuB;CACtE,MAAM,EAAE,MAAM,0BAA0B;AACxC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,EAAE,8BAA8B;IAC7B,CAAA,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,EAAE,8BAA8B;IAC7B,CAAA,CACF;;EACF,CAAA;EAER;AAIF,MAAM,gBAAgBA,MAAAA,QAAM,KAAK,SAAS,cAAc,EACtD,mBAGC;CACD,MAAM,EAAE,MAAM,0BAA0B;CAWxC,MAAM,SAAA,GAAA,MAAA,gBATG;EACL,SAAS,EAAE,qBAAqB;EAChC,QAAQ,EAAE,mBAAmB;EAC7B,gBAAgB,EAAE,6BAA6B;EAC/C,QAAQ,EAAE,kBAAkB;EAC5B,SAAS,EAAE,qBAAqB;EACjC,GACD,CAAC,EAAE,CACJ,CACoC,oBAAoB;AACzD,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAACI,aAAAA,OAAD,EAAO,WAAU,mBAAoB,CAAA;KACjC,CAAA;IACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,EAAE,4BAA4B;KAC3B,CAAA;IACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,EAAE,6BAA6B,EAAE,OAAO,CAAC;KACtC,CAAA;IACF;;EACF,CAAA;EAER;AA4BF,SAAS,oBAAoB,EAC3B,WACA,OACA,WACA,aACA,YACA,kBACA,iBAAiB,OACjB,gBAAgB,qBAChB,mBAC8C;CAC9C,MAAM,EAAE,MAAM,0BAA0B;CAExC,MAAM,eAAA,GAAA,MAAA,eACE;EACJ;GAAE,IAAI;GAAO,OAAO,EAAE,aAAa;GAAE;EACrC;GAAE,IAAI;GAAU,OAAO,EAAE,sBAAsB;GAAE;EACjD;GAAE,IAAI;GAAU,OAAO,EAAE,sBAAsB;GAAE;EAClD,EACD,CAAC,EAAE,CACJ;CAED,MAAM,wBAAA,GAAA,MAAA,cACH,cAAyB;AACxB,mBAAiB,UAAU;IAE7B,CAAC,iBAAiB,CACnB;CAGD,MAAM,sBAAsB;AAC1B,MAAI,eACF,QAAO,iBAAA,GAAA,kBAAA,KAAC,eAAD,EAAgC,iBAAmB,CAAA;AAE5D,MAAI,kBAAkB,eAAe,oBAAoB,SACvD,QAAO,iBAAA,GAAA,kBAAA,KAAC,sBAAD,EAAwB,CAAA;AAGjC,MAAI,kBAAkB,oBACpB,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,EAAE,iCAAiC,EAClC,OAAO,OAAO,WAAW,OAAO,EACjC,CAAC;IACC,CAAA;GACD,CAAA,EAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAAC,YAAD;KACE,MAAM;KACK;KACE;KACb,CAAA;IAED,aAAa,iBAAA,GAAA,kBAAA,KAAC,cAAD,EAAgB,CAAA;IAC7B,SAAS,iBAAA,GAAA,kBAAA,KAAC,YAAD,EAAc,CAAA;IAEvB,CAAC,aAAa,CAAC,SAAS,WAAW,SAAS,KAC3C,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,WAAW,KAAK,cACf,iBAAA,GAAA,kBAAA,KAAC,WAAD;MAEa;MACX,SAAS;MACT,EAHK,UAAU,GAGf,CACF;KACE,CAAA;IAGP,CAAC,aAAa,CAAC,SAAS,WAAW,WAAW,KAC7C,iBAAA,GAAA,kBAAA,KAAC,YAAD,EACE,SAAS,EAAE,4BAA4B,EACrC,MACE,YAAY,MAAM,QAAQ,IAAI,OAAO,UAAU,EAAE,SACjD,WACA,aAAa,EAChB,CAAC,EACF,CAAA;IAEA;KACL,EAAA,CAAA;AAIP,SAAO;;AAGT,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAU;EACV,OAAO;GAAE,gBAAgB;GAAQ,iBAAiB;GAAQ;YAGzD,eAAe;EACZ,CAAA;;AAKV,IAAA,8BAAeJ,MAAAA,QAAM,KAAK,oBAAoB;;;ACrU9C,MAAM,yBAAyB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,sCAGF;CACF,GAAG,IAAI,IAAI;EAAC;EAAQ;EAAO;EAAU;EAAQ,CAAC;CAC9C,KAAK,IAAI,IAAI;EAAC;EAAO;EAAU;EAAO;EAAS;EAAQ,CAAC;CACxD,IAAI,IAAI,IAAI;EAAC;EAAW;EAAW;EAAQ,CAAC;CAC5C,IAAI,IAAI,IAAI;EAAC;EAAW;EAAW;EAAQ,CAAC;CAC7C;AAED,MAAM,+BAA+B;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,gCAAgC,IAAI,IAAI;CAC5C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AACF,MAAM,yBAAyB,IAAI,IAAI;CAAC;CAAU;CAAW;CAAQ;CAAQ,CAAC;AAC9E,MAAM,sBAAsB,IAAI,IAAI;CAAC;CAAS;CAAU;CAAW;CAAO,CAAC;AAC3E,MAAM,uBAAuB,IAAI,IAAI,CAAC,SAAS,SAAS,CAAC;AACzD,MAAM,oBAAoB,IAAI,IAAI,CAAC,UAAU,QAAQ,CAAC;AACtD,MAAM,iCAAiC;AACvC,MAAM,+BAA+B;AACrC,MAAM,gBAAgB;AACtB,MAAM,4BACJ;AAEF,MAAM,mCACJ;;;;;;;;;;;AAsCF,SAAgB,sBAAsB,EACpC,WACA,UACA,iBACA,OACA,aACA,OACA,SACA,MACA,UACA,uBAAuB,8BACyB;CAChD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,0BACJ,mBAAmB,EAAE,2BAA2B;AAElD,KAAI,UAEF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAU;EACV,MAAK;EACL,aAAU;YAEV,iBAAA,GAAA,kBAAA,MAAC,OAAD;GACE,WAAW,8EAA8E;aAD3F,CAGE,iBAAA,GAAA,kBAAA,KAACM,YAAAA,UAAD,EAAU,WAAU,4DAA6D,CAAA,EACjF,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,aAAc,CAAA;KAClC,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,cAAe,CAAA;KACnC,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,aAAc,CAAA;KAClC,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,aAAc,CAAA;KAClC,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,aAAc,CAAA,EAClC,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,WAAY,CAAA,CAC5B;;KACF;MACF;;EACF,CAAA;AAIV,KAAI,SACF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;GAAG,WAAU;aAA4B;GAA4B,CAAA;EACjE,CAAA;AAIV,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;GACE,WAAW,8EAA8E;aAD3F,CAIE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ;IACG,CAAA,EAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBACX;OACE,CAAA;MAEL,iBAAA,GAAA,kBAAA,KAAC,sBAAD,EAAsB,MAAM,aAAe,CAAA;MAE1C;MAEA;MACG;QAEL,SACG;MACF;;EACF,CAAA;;AAIV,SAAS,UACP,OACA,kBACS;AACT,KAAI;EACF,MAAM,MAAM,IAAI,IAAI,OAAO,cAAc;AACzC,SAAO,iBAAiB,IAAI,IAAI,SAAS;SACnC;AACN,SAAO;;;AAIX,SAAS,2BACP,SACA,eACS;CACT,MAAM,oBAAoB,QAAQ,aAAa;CAC/C,MAAM,0BAA0B,cAAc,aAAa;AAE3D,KAAI,4BAA4B,QAC9B,QAAO,8BAA8B,IAAI,kBAAkB;AAG7D,QACE,oCAAoC,oBAAoB,IACtD,wBACD,IAAI;;AAIT,SAAS,uBAAuB,YAAmC;CACjE,IAAI,qBAAoC;AAExC,MAAK,MAAM,eAAe,WAAW,MAAM,IAAI,EAAE;EAC/C,MAAM,iBAAiB,YAAY,QAAQ,IAAI;AAE/C,MAAI,mBAAmB,GACrB;EAGF,MAAM,WAAW,YAAY,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa;EAC1E,MAAM,QAAQ,YACX,MAAM,iBAAiB,EAAE,CACzB,MAAM,CACN,aAAa;AAEhB,MAAI,aAAa,gBAAgB,uBAAuB,IAAI,MAAM,CAChE,sBAAqB;;AAIzB,QAAO,uBAAuB,OAC1B,OACA,eAAe,mBAAmB;;AAGxC,MAAM,qCAAqC,SAAkB;CAC3D,MAAM,UAAU,KAAK,QAAQ,aAAa;AAE1C,MAAK,MAAM,QAAQ,MAAM,KAAK,KAAK,WAAW,EAAE;EAC9C,MAAM,gBAAgB,KAAK,KAAK,aAAa;EAC7C,MAAM,iBAAiB,KAAK,MAAM,MAAM;AAExC,MACE,CAAC,2BAA2B,SAAS,cAAc,IACnD,eAAe,SAAS,IAAI,IAC5B,eAAe,SAAS,IAAI,EAC5B;AACA,QAAK,gBAAgB,KAAK,KAAK;AAC/B;;AAGF,MACE,YAAY,OACZ,kBAAkB,UAClB,CAAC,UAAU,gBAAgB,oBAAoB,EAC/C;AACA,QAAK,gBAAgB,KAAK,KAAK;AAC/B;;AAGF,MACE,YAAY,SACZ,kBAAkB,SAClB,CAAC,UAAU,gBAAgB,qBAAqB,EAChD;AACA,QAAK,gBAAgB,KAAK,KAAK;AAC/B;;AAGF,MAAI,kBAAkB,UAAU;GAC9B,MAAM,mBAAmB,eAAe,aAAa;AAErD,OAAI,kBAAkB,IAAI,iBAAiB,CACzC,MAAK,aAAa,KAAK,MAAM,iBAAiB;OAE9C,MAAK,gBAAgB,KAAK,KAAK;AAGjC;;AAGF,MAAI,kBAAkB,SAAS;GAC7B,MAAM,iBAAiB,uBAAuB,eAAe;AAE7D,OAAI,mBAAmB,KACrB,MAAK,gBAAgB,KAAK,KAAK;OAE/B,MAAK,aAAa,KAAK,MAAM,eAAe;AAG9C;;AAGF,OACG,kBAAkB,WAAW,kBAAkB,aAChD,CAAC,+BAA+B,KAAK,eAAe,EACpD;AACA,QAAK,gBAAgB,KAAK,KAAK;AAC/B;;AAGF,OACG,kBAAkB,aAAa,kBAAkB,cAClD,CAAC,6BAA6B,KAAK,eAAe,CAElD,MAAK,gBAAgB,KAAK,KAAK;;;AAKrC,MAAM,sCAAsC,SAAkB;AAC5D,KAAI,KAAK,QAAQ,aAAa,KAAK,MACjC;CAGF,MAAM,MAAM,KAAK,aAAa,MAAM,EAAE,MAAM;AAE5C,KAAI,OAAO,UAAU,KAAK,qBAAqB,CAC7C;AAGF,MAAK,QAAQ;;AAGf,MAAM,uCAAuC,SAAkB;AAC7D,KAAI,KAAK,QAAQ,aAAa,KAAK,KAAK;EACtC,MAAM,SAAS,KAAK,aAAa,SAAS,EAAE,MAAM,CAAC,aAAa;AAEhE,MAAI,WAAW,UAAU;AACvB,QAAK,aAAa,UAAU,SAAS;AACrC,QAAK,aAAa,OAAO,sBAAsB;AAC/C;;AAGF,MAAI,WAAW,QACb,MAAK,aAAa,UAAU,QAAQ;MAEpC,MAAK,gBAAgB,SAAS;AAGhC,OAAK,gBAAgB,MAAM;AAC3B;;AAGF,oCAAmC,KAAK;;AAG1C,SAAS,yBAAyB,eAAgC;AAChE,KAAI,OAAO,aAAa,YACtB,QAAO,wBAAwB,KAAK,cAAc;AAIpD,QADY,IAAI,WAAW,CAAC,gBAAgB,eAAe,YAAY,CAC5D,KAAK,cAAc,WAAW,KAAK;;AAGhD,SAAS,2BAA2B,eAAgC;CAClE,MAAM,iBAAiB,cAAc,MAAM;AAE3C,KAAI,CAAC,eACH,QAAO;AAGT,QACE,UAAU,eAAe,CAAC,MAAM,CAAC,SAAS,KAC1C,yBAAyB,eAAe;;AAQ5C,SAAgB,iCAAiC,MAAsB;CACrE,MAAM,gBAAgBC,YAAU,SAAS,MAAM;EAC7C,cAAc;EACd,cAAc;EACd,oBAAoB;EACpB,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB,EAAE;EACrB,YAAY;EACb,CAAC;AAEF,MAAK,MAAM,QAAQ,MAAM,KAAK,cAAc,iBAAiB,IAAI,CAAC,EAAE;AAClE,oCAAkC,KAAK;AACvC,sCAAoC,KAAK;;AAG3C,QAAO,cAAc;;AAGvB,SAAgB,qBAAqB,EACnC,MACA,YAAY,OAIe;CAC3B,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,MAAM;CACnD,MAAM,YAAY,iCAAiC,QAAQ,GAAG;AAE9D,KAAI,CAAC,2BAA2B,UAAU,CAAE,QAAO;CAGnD,MAAM,qBADW,UAAU,UAAU,CAAC,MAAM,CACR,SAAS;AAC7C,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAW;YAAhB,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,WAAW,CAAC,cAAc,qBAAqB,iBAAiB;GAChE,yBAAyB,EAAE,QAAQ,WAAW;GAC9C,CAAA,EACD,sBACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;GACE,eAAe,eAAe,SAAS,CAAC,KAAK;GAC7C,SAAQ;GACR,MAAK;GACL,WAAU;aAET,aAAa,EAAE,mBAAmB,GAAG,EAAE,mBAAmB;GACpD,CAAA,CAEP;;;;;AClaV,SAAgB,oBAAoB,EAClC,WACA,aACA,cAAc,oBACd,YACA,QACA,oBAC8C;CAC9C,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,SAASC,mBAAAA,qBAAqB;CACpC,MAAM,EAAE,aAAa,iBAAiB;CACtC,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAGjD,MAAM,EAAE,MAAM,uBAAuB,WAAW,4BAAA,GAAA,sBAAA,UACrC;EACP,UAAU;GAAC;GAAmB;GAAU;GAAU;EAClD,eAAe,mBAAoB,UAAU;EAC7C,SAAS,CAAC,CAAC;EACZ,CAAC;CAGJ,MAAM,EAAE,MAAM,uBAAuB,WAAW,4BAAA,GAAA,sBAAA,UACrC;EACP,UAAU,CAAC,WAAW,UAAU;EAChC,eAAe;AAEb,OAAI,CAAC,OAAQ,OAAM,IAAI,MAAM,8BAA8B;AAC3D,UAAO,WAAW,QAAQ,WAAW,EAAE,cAAc,aAAa,CAAC;;EAErE,SAAS,CAAC,sBAAsB,CAAC,CAAC;EACnC,CAAC;CAEJ,MAAM,mBAAmB,qBACrB,yBACA;CAGJ,MAAM,EACJ,MAAM,sBACN,WAAW,gBACX,OAAO,gBAAA,GAAA,sBAAA,UACI;EACX,UAAU;GAAC;GAAS;GAAU;GAAU;EACxC,eAAe,IAAI,aAAa,gBAAgB,OAAO,UAAU,CAAC;EACnE,CAAC;CAGF,MAAM,EACJ,WACA,SAAS,kBACT,OAAO,mBACLC,uBAAAA,aAAa,EAAE,IAAI,OAAO,UAAU,EAAE,EAAE,WAAW,KAAA,GAAW,OAAO;CAGzE,MAAM,gBAAgB,uBAAuB;CAC7C,MAAM,gBAAgB,uBAAuB;CAC7C,MAAM,UAAU,iBAAiB;CAEjC,MAAM,eAAe,eAAe,QAAQ,eAAe,SAAS;CACpE,MAAM,eACJ,eAAe,SAAS,IAAI,OAAO,eAAe,aAAa;CACjE,MAAM,qBACJ,eAAe,eACf,eAAe,eACf,eAAe,YACf;CAEF,MAAM,sBAAsB;AAC1B,MAAI,eAAe,cAAe,QAAO,cAAc;EACvD,MAAM,QAAQ,eAAe,SAAS,eAAe;AACrD,MAAI,CAAC,MAAO,QAAO,KAAA;EACnB,MAAM,eAAe,OAAO,MAAM;AAClC,MAAI,OAAO,MAAM,aAAa,CAAE,QAAO,IAAI;AAC3C,MAAI;AACF,UAAO,IAAI,KAAK,aAAa,OAAO,QAAQ,KAAK,IAAI,EAAE;IACrD,OAAO;IACP,UAAU,eAAe,YAAY;IACtC,CAAC,CAAC,OAAO,aAAa;UACjB;AACN,UAAO,IAAI;;KAEX;CAGJ,MAAM,sBAAmC,sBAAsB,SAAS,EAAE,EACvE,QAAQ,SAAkC;AACzC,MAAI,cAAc,MAAO,QAAO;AAChC,MAAI,cAAc,SAAU,QAAO,KAAK,SAAS;AACjD,MAAI,cAAc,SAAU,QAAO,KAAK,SAAS;AACjD,SAAO;GACP,CACD,KACE,UAOM;EACL,IAAI,KAAK;EACT,OAAO,KAAK;EACZ,WAAW,KAAK;EAChB,MAAM,KAAK,QAAQ;EACnB,WAAW,KAAK;EAChB,cAAc,KAAK;EACpB,EACF;CAEH,MAAM,YAAY,sBAAsB,OAAO,UAAU,KAAK;CAG9D,MAAM,wBAAA,GAAA,MAAA,cACH,cAAyB;AACxB,eAAa,SAAS,OAAO,UAAU,GAAG,CAAC;IAE7C,CAAC,WAAW,CACb;AAED,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;EAAgB,WAAU;YAA1B;GACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;IACE,MAAK;IACL,UAAU,MAAM;AACd,OAAE,gBAAgB;AAClB,MACE,kBAAkB,WAClB,iBACO,SAAS,WAAW,IAC1B;;cAGJ,EAAE,sBAAsB;IACV,CAAA,EACF,CAAA;GACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;GACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;IAAgB,WAAU;cACvB,gBAAgB,EAAE,+BAA+B;IACnC,CAAA,EACF,CAAA;GACF;KACN,CAAA,EACW,CAAA,EAC1B,iBAAA,GAAA,kBAAA,MAAC,uBAAD;EACE,WAAW;EACX,UAAU,CAAC;EACX,iBAAiB,EAAE,qBAAqB;EACxC,OAAO;EACP,aAAa;EACb,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACZ,CAAC,eACA,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EAAW,WAAU,mBAAoB,CAAA;MACrC,CAAA;KACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACZ,EAAE,oBAAoB;MACnB,CAAA;KACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACZ,EAAE,oBAAoB;MACnB,CAAA;KACF;QAEN,iBAAA,GAAA,kBAAA,KAAC,uBAAD;IACE,cAAc;IACA;IACd,SAAS;IACT,YAAY,EAAE,iBAAiB;IAC/B,kBAAkB,EAAE,yBAAyB;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,kBAAkB,EAAE,qBAAqB;IACzC,CAAA;GAEA,CAAA;EAER,MACE,eACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;KAAM,WAAU;eAAiB,EAAE,uBAAuB;KAAQ,CAAA;IAClE,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAA,UAAM,KAAQ,CAAA;IACd,iBAAA,GAAA,kBAAA,KAAC,QAAD;KAAM,WAAU;eAAiB;KAAoB,CAAA;IACjD;OACJ;EAEN,SACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;GACE,aAAa,gBAAgB;GACf;GACd,WAAW,iBAAiB,OAAO,aAAa;GAC9B;GAClB,SAAS;GACT,cAAc,OAAO,UAAU;GAC/B,gBAAe;GACf,CAAA;YAnDN,CAuDE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,WAAD,EAAW,WAAU,0BAA2B,CAAA,EAEhD,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAACC,6BAAD;IACE,WAAW;IACX,OAAO;IACI;IACX,aAAa;IACb,YAAY;IACZ,kBAAkB;IAClB,gBAAgB,CAAC;IACjB,eAAc;IACd,iBAAgB;IAChB,CAAA;GACE,CAAA,CACgB;IACvB,EAAA,CAAA;;;;ACvPP,MAAMC,kBACJ;AAmBF,SAAS,mBACP,OACA,UACA;AACA,SAAQ,SAAS,UAAU,QAAQ,4BAA4B,GAAG;;AAGpE,SAAS,iBACP,OACQ;AACR,QAAO,OAAO,QAAQ,UAAU,SAAS,KAAK,IAAI,UAAU,KAAK,GAAG,EAAE,EAAE,IAAI;;AAG9E,SAAgB,yBAAyB,EACvC,cAAc,KAC4C;CAC1D,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,EAAE,UAAU,mBAAmB,iBAAiB;CACtD,MAAM,cAAc,gBAAgB;CACpC,MAAM,eAAA,GAAA,MAAA,QAA4C,KAAK;CAEvD,MAAM,kBAAA,GAAA,MAAA,cAA8B,cAAsB;EACxD,MAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,SAAU;AAEf,WAAS,SAAS;GAChB,MAAM,YAAY,KAAK,IAAI,SAAS,cAAc,KAAM,IAAI;GAC5D,UAAU;GACX,CAAC;IACD,EAAE,CAAC;CAEN,MAAM,EAAE,MAAM,cAAc,eAAA,GAAA,sBAAA,UAAuB;EACjD,UAAUC,uBAAAA,eAAe,aAAa,iBAAiB,QAAQ,YAAY;EAC3E,SAAS,YAAY;AACnB,OAAI,CAAC,eAAgB,QAAO,EAAE;AAG9B,WADiB,MAAM,eAAe,IAAI,EAAE,OAAO,cAAc,GAAG,CAAC,EACrD;;EAElB,SAAS,CAAC,CAAC;EACX,WAAW,MAAS;EACrB,CAAC;CAEF,MAAM,YAAA,GAAA,MAAA,eAEF,cACI,QAAQ,YAAY,QAAQ,MAAM,KAAK,CACxC,KAAK,aAAa;EACjB,IAAI,QAAQ;EACZ,OAAO,QAAQ,QAAQ,EAAE,kBAAkB;EAC3C,WAAW,QAAQ,aAAa;EACjC,EAAE,IAAI,EAAE,EACb,CAAC,cAAc,EAAE,CAClB;CAOD,MAAM,EAAE,MAAM,4BACZC,mBAAAA,6BAAAA,GAAAA,MAAAA,eALM,SAAS,MAAM,GAAG,YAAY,CAAC,KAAK,YAAY,QAAQ,GAAG,EACjE,CAAC,aAAa,SAAS,CACxB,CAGwC;CAEzC,MAAM,iBAAA,GAAA,MAAA,eAEF,SACG,UACE,GAAG,MACF,iBAAiB,0BAA0B,EAAE,IAAI,GACjD,iBAAiB,0BAA0B,EAAE,IAAI,CACpD,CACA,MAAM,GAAG,YAAY,EAC1B;EAAC;EAAa;EAAyB;EAAS,CACjD;CAED,MAAM,mBACJ,MACA,YAAY,2EAEZ,YAAY;EACV,KAAK,MAAM,aAAaF;EACxB,KAAK,MAAM,SAAS,EAAE,kBAAkB;EACxC,MAAM;EACN;EACD,CAAC;AAEJ,KAAI,UACF,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAD;EAAS,WAAU;YAAnB,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,UAAD,EAAU,WAAU,YAAa,CAAA,EACjC,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,uBAAwB,CAAA,CACxC;MACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACZ,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,GAAG,MAC7B,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAEE,WAAU,sFACV,EAFK,EAEL,CACF;GACE,CAAA,CACE;;AAId,KAAI,cAAc,WAAW,EAAG,QAAO;AAEvC,QACE,iBAAA,GAAA,kBAAA,MAAC,WAAD;EAAS,WAAU;YAAnB,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eACX,EAAE,+BAA+B;KAC/B,CAAA,EACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV,EAAE,qCAAqC;KACtC,CAAA,CACA;OACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;KACE,MAAK;KACL,SAAQ;KACR,MAAK;KACL,eAAe,eAAe,GAAG;KACjC,WAAU;KACV,cAAY,EAAE,kCAAkC;eAEhD,iBAAA,GAAA,kBAAA,KAACC,aAAAA,aAAD,EAAa,WAAU,UAAW,CAAA;KAC3B,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACD,YAAAA,QAAD;KACE,MAAK;KACL,SAAQ;KACR,MAAK;KACL,eAAe,eAAe,EAAE;KAChC,WAAU;KACV,cAAY,EAAE,8BAA8B;eAE5C,iBAAA,GAAA,kBAAA,KAACE,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;KAC5B,CAAA,CACL;MACF;MACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;IACE,KAAK;IACL,WAAU;cAET,cAAc,KAAK,SAAS;KAC3B,MAAM,eAAe,mBACnB,KAAK,OACL,EAAE,kBAAkB,CACrB;KACD,MAAM,eACJ,0BAA0B,KAAK,KAC3B,UAAU,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,CAChC,MAAM,GAAG,EAAE,IAAI,EAAE;KACtB,MAAM,eACJ,0BAA0B,KAAK,KAAK,UAAU,aAAa;AAE7D,YACE,iBAAA,GAAA,kBAAA,MAAC,UAAD;MAEE,MAAK;MACL,eAAe,SAAS,WAAW,KAAK,KAAK;MAC7C,WAAU;gBAJZ;OAMG,gBAAgB,KAAK;OACtB,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,WAAU,qCAAsC,CAAA;OACtD,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,WAAU,yFAA0F,CAAA;OAC1G,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,WAAU,uEAAwE,CAAA;OACxF,iBAAA,GAAA,kBAAA,MAAC,QAAD;QAAM,WAAU;kBAAhB;SACE,iBAAA,GAAA,kBAAA,MAAC,QAAD;UAAM,WAAU;oBAAhB,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;WAAM,WAAU;qBACb;WACI,CAAA,EACP,iBAAA,GAAA,kBAAA,MAAC,QAAD;WAAM,WAAU;qBAAhB,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,UAAD,EAAU,WAAU,yBAA0B,CAAA,EAC7C,EAAE,gCAAgC,EACjC,OAAO,cACR,CAAC,CACG;aACF;;SAEP,iBAAA,GAAA,kBAAA,KAAC,QAAD;UAAM,WAAU;oBACb,EAAE,oCAAoC,EACrC,OAAO,cACR,CAAC;UACG,CAAA;SAEP,iBAAA,GAAA,kBAAA,KAAC,QAAD;UAAM,WAAU;oBACb,aAAa,KAAK,gBACjB,iBAAA,GAAA,kBAAA,KAAC,QAAD;WAEE,WAAU;qBAEV,iBAAA,GAAA,kBAAA,KAAC,QAAD;YAAM,WAAU;sBACb,gBAAgB,YAAY;YACxB,CAAA;WACF,EANA,YAAY,GAMZ,CACP;UACG,CAAA;SACF;;OACA;QAzCF,KAAK,GAyCH;MAEX;IACE,CAAA;GACF,CAAA,CACE;;;;;AC/Nd,MAAMC,cAAY;;;;;;;;AASlB,MAAM,uBAAuB,CAAC,mBAAmB,YAAY;AA8C7D,SAAgB,oBAAoB,EAClC,MACA,cACA,WACA,aACA,MACA,mBAAmB,MACnB,mBACA,SACA,kBAC8C;CAC9C,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,WAAWC,0BAAAA,aAAa;CAC9B,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CAEpC,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,GAAG;CACxC,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA+B,GAAG;CAC1D,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAqB,GAAG;CAItC,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,0BACrB,IAAI,KAAK,CACV;CAOD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAGV,KAAK;CAIf,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,UACxB,iBACD;CAKD,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA+C,KAAK;CACzE,MAAM,kBAAA,GAAA,MAAA,QAA8D,KAAK;CAQzE,MAAM,gBAAgB,sBAAsB,OAAO,eAAe;AAalE,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,eAAe,YAAY,MAAM;AACnC,gBAAa,eAAe,QAAQ;AACpC,kBAAe,UAAU;;AAE3B,eAAa;GACX,MAAM,UAAU,gBAAgB;AAChC,OAAI,CAAC,QAAS;AACd,kBAAe,UAAU,iBAAiB;AACxC,mBAAe,UAAU;AACzB,YAAQ,OAAO;MACd,EAAE;;IAEN,CAAC,eAAe,CAAC;AAIpB,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,iBAAiB,mBAAmB,OAAO,EAAE,IAAI;AAC/D,eAAa,aAAa,MAAM;IAC/B,CAAC,OAAO,CAAC;CAEZ,MAAM,EACJ,MACA,aACA,oBACA,eACA,OACA,WACA,YACA,aAAA,GAAA,sBAAA,kBACmB;EACnB,UAAU,CAAC,GAAG,sBAAsB,gBAAgB;EACpD,SAAS,QAAQ,kBAAkB;EAGnC,iBAAiBC,sBAAAA;EACjB,SAAS,OAAO,EAAE,gBAAgB;GAChC,MAAM,WAAW,MAAM,IAAI,UAAU,aAAa;IAChD,iBAAiB,mBAAmB,KAAA;IACpC,qBAAqB;IACrB,gBAAgB;IAChB,eAAeH;IAChB,CAAC;AACF,UAAO;IACL,WAAW,SAAS;IACpB,YAAY,SAAS,KAAK,WAAW;IACtC;;EAEH,mBAAmB,aAAa,SAAS,cAAc,KAAA;EACvD,kBAAkB,KAAA;EACnB,CAAC;CAEF,MAAM,YAAY,MAAM,MAAM,SAAS,SAAS,KAAK,UAAU,IAAI,EAAE;CAIrE,MAAM,sBAAsB,CAAC,cACzB,KACA,YAAY,QACV,EAAE,sCAAsC,EAAE,OAAO,YAAY,OAAO,CAAC,GACrE,EAAE,+BAA+B;CAEvC,MAAM,cAAc,wBAAwB;EAC1C;EACA;EACA;EACA;EACD,CAAC;CAKF,MAAM,WAAW,eACf,IAAI,UAAU,kBAAkB,YAAY,EAC1C,OAAO,CAAC;EAAE,iBAAiB;EAAa,eAAe;EAAW,CAAC,EACpE,CAAC;CAQJ,MAAM,mBAAmB;AAElB,cAAY,kBAAkB,EAAE,UAAU,sBAAsB,CAAC;AACjE,cAAY,kBAAkB,EACjC,UAAUI,uBAAAA,eAAe,UAAU,KACpC,CAAC;;CAGJ,MAAM,eAAA,GAAA,sBAAA,aAA0B;EAC9B,aAAa,EAAE,SAAoB,QAAQ,GAAG;EAC9C,iBAAiB;AACf,cAAW;AACX,aAAU;IAAE,MAAM;IAAW,OAAO,EAAE,4BAA4B;IAAE,CAAC;AACrE,eAAY;AACZ,gBAAa,MAAM;;EAErB,UAAU,OAAc,EAAE,IAAI,YAAY,YAAuB;AAI/D,OAAIC,qBAAAA,WAAW,MAAM,IAAI,MAAM,WAAW,KAAK;AAC7C,uBAAmB,aAAa,IAAI,IAAI,SAAS,CAAC,IAAI,WAAW,CAAC;AAClE,mBAAe;KAAE,IAAI;KAAY;KAAO,CAAC;AAYzC,QAAI,eAAe,mBAAmB;AACpC,0BAAqB,KAAK;AAK1B,qBAAgB,OAAO;AACvB,gBAAW;;AAEb;;AAEF,aAAU;IAAE,MAAM;IAAS,OAAO,EAAE,0BAA0B;IAAE;IAAO,CAAC;;EAE3E,CAAC;CAEF,MAAM,kBAAA,GAAA,sBAAA,aAA6B;EACjC,YAAY,OAAO,aAAqB;GACtC,MAAM,UAAU,MAAM,IAAI,UAAU,eAAe,EACjD,UAAU,EAAE,OAAO,UAAU,EAC9B,CAAC;AAIF,wBAAqB,QAAQ,SAAS,GAAG;AAMzC,aAAU,GAAG;AACb,sBAAmB,GAAG;AACtB,uBAAoB,QAAQ,SAAS,GAAG;AACxC,SAAM,QAAQ,QAAQ,SAAS,GAAG;;EAEpC,iBAAiB;AACf,wBAAqB,KAAK;AAC1B,cAAW;AACX,aAAU;IAAE,MAAM;IAAW,OAAO,EAAE,4BAA4B;IAAE,CAAC;AACrE,gBAAa,MAAM;;EAErB,UAAU,UAAiB;AAMzB,OAAIA,qBAAAA,WAAW,MAAM,IAAI,MAAM,WAAW,KAAK;AAC7C,yBAAqB,KAAK;AAC1B,eAAW;AACX,cAAU;KAAE,MAAM;KAAW,OAAO,EAAE,4BAA4B;KAAE,CAAC;AACrE,iBAAa,MAAM;AACnB;;AAEF,aAAU;IAAE,MAAM;IAAS,OAAO,EAAE,0BAA0B;IAAE;IAAO,CAAC;;EAM1E,iBAAiB;AACf,eAAY;;EAEf,CAAC;AAEF,QACE,iBAAA,GAAA,kBAAA,KAACC,yBAAAA,kBAAD;EACQ;EACQ;EACd,cAAc,WAAW,iBAAiB;EAC1C,OACE,kBAAkB,WACd,EAAE,wBAAwB,GAC1B,EAAE,wBAAwB;YAG/B,kBAAkB,WACjB,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;KAAO,SAAQ;eACZ,EAAE,6BAA6B;KAC1B,CAAA;IACR,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;KACE,IAAG;KACH,OAAO;KACP,WAAW,UAAU,SAAS,MAAM,OAAO,MAAM;KACjD,CAAA;IACF,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;KACE,UAAU,CAAC,MAAM,MAAM,IAAI,eAAe;KAC1C,eAAe,eAAe,OAAO,MAAM,MAAM,CAAC;eAEjD,EAAE,yBAAyB;KACrB,CAAA;IAMR,SAAS,UACR,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;KACE,SAAQ;KACR,UAAU,eAAe;KACzB,eAAe,gBAAgB,OAAO;eAErC,EAAE,gBAAgB;KACZ,CAAA;IAEP;OAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAACD,YAAAA,OAAD;KACE,OAAO;KACP,aAAa,EAAE,yBAAyB;KAGxC,cAAY,EAAE,yBAAyB;KACvC,WAAW,UAAU,UAAU,MAAM,OAAO,MAAM;KAClD,CAAA;IAMF,iBAAA,GAAA,kBAAA,KAAC,KAAD;KACE,MAAK;KACL,aAAU;KACV,eAAY;KACZ,WAAU;eAET;KACC,CAAA;IAMH,aAAc,cAAc,UAAU,WAAW,IAChD,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAACE,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA;KAC1B,CAAA,GACJ,QAIF,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,EAAE,4BAA4B;MAC7B,CAAA,EACJ,iBAAA,GAAA,kBAAA,KAACD,YAAAA,QAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,eAAe,SAAS;gBACzD,EAAE,eAAe;MACX,CAAA,CACL;SACJ,UAAU,WAAW,IASvB,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,kBACG,EAAE,6BAA6B,GAC/B,EAAE,wBAAwB;MAC5B,CAAA,EAQH,sBAAsB,QACrB,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MACL,eAAe,gBAAgB,SAAS;gBAEvC,EAAE,qBAAqB;MACjB,CAAA,CAEP;SAEN,UAAU,KAAK,aAAa;KAC1B,MAAM,mBAAmB,eAAe,IAAI,SAAS,GAAG;KACxD,MAAM,YAAY,YAAY,aAAa;AAE3C,YACE,iBAAA,GAAA,kBAAA,MAAC,UAAD;MAEE,MAAK;MACL,WAAWE,YAAAA,GACT,gEACA,aAAa,kCACd;MAQD,iBAAe,aAAa,KAAA;MAS5B,cAAc,UAAU,MAAM,gBAAgB;MAC9C,eAAe;AACb,WAAI,UAAW;AACf,mBAAY,OAAO;QACjB,IAAI,SAAS;QACb,OAAO,SAAS,SAAS;QAC1B,CAAC;;gBA7BN,CAgCG,SAAS,YACR,iBAAA,GAAA,kBAAA,KAAC,OAAD;OACE,KAAK,SAAS;OACd,KAAI;OACJ,eAAY;OACZ,SAAQ;OACR,WAAU;OACV,CAAA,GAIF,iBAAA,GAAA,kBAAA,KAAC,OAAD;OACE,eAAY;OACZ,WAAU;iBAEV,iBAAA,GAAA,kBAAA,KAACC,aAAAA,WAAD,EAAW,WAAU,UAAW,CAAA;OAC5B,CAAA,EAER,iBAAA,GAAA,kBAAA,MAAC,QAAD;OAAM,WAAU;iBAAhB,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBAAY,SAAS;QAAa,CAAA,EAMjD,oBACC,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBACb,EAAE,+BAA+B;QAC7B,CAAA,CAEJ;SACA;QA9DF,SAAS,GA8DP;MAEX;IAEH,sBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAACF,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA;KAC1B,CAAA;IAGR,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,KAAK,aAAe,CAAA;IACrB;;EAES,CAAA;;;;;;;;;;;;;;;;;;;;AC3evB,SAAgB,oBAAoB,EAClC,qBAAqB,MACrB,WACA,UACA,iBACA,iBAUoB;CACpB,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWG,0BAAAA,aAAa;CAC9B,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,MAAM;CAC3C,MAAM,cAAA,GAAA,MAAA,QAAuC,KAAK;AAClD,KAAI,SACF,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;EACE,KAAK;EACL,SAAQ;EACR,MAAK;EACL,WAAU;EACV,UAAU,UAAU;AAClB,SAAM,iBAAiB;AACvB,aAAU,KAAK;;EAEjB,cAAY,EAAE,qBAAqB;YAEnC,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;EAC5B,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;EACE,MAAM;EACN,cAAc;EACd,OAAO,EAAE,qBAAqB;EAC9B,SAAS,CACP,GAAI,qBACA,CACE;GACE,IAAI;GACJ,OAAO,EAAE,wBAAwB;GACjC,gBAAgB,gBAAgB,WAAW,QAAQ;GACpD,EACD;GACE,IAAI;GACJ,OAAO,EAAE,qBAAqB;GAC9B,gBAAgB,cAAc,WAAW,QAAQ;GAClD,CACF,GACD,EAAE,EACN,GAAI,YACA,CACE;GACE,IAAI;GACJ,OAAO,EAAE,gBAAgB;GACzB,SAAS;GACT,UAAU;GACX,CACF,GACD,EAAE,CACP;EACD,CAAA,CACD,EAAA,CAAA;AAGP,QACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;EAAqB,SAAA;YACnB,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,QAAD;GACE,KAAK;GACL,SAAQ;GACR,MAAK;GACL,WAAU;GACV,UAAU,MAAM;AAGd,MAAE,iBAAiB;;GAErB,cAAY,EAAE,qBAAqB;aAEnC,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;GAC5B,CAAA;EACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,MAACI,YAAAA,qBAAD;EAAqB,OAAM;EAAM,UAAU,MAAM,EAAE,iBAAiB;YAApE,CACG,sBACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,kBAAD;GACE,eAAe,gBAAgB,WAAW,QAAQ;aAEjD,EAAE,wBAAwB;GACV,CAAA,EACnB,iBAAA,GAAA,kBAAA,KAACA,YAAAA,kBAAD;GAAkB,eAAe,cAAc,WAAW,QAAQ;aAC/D,EAAE,qBAAqB;GACP,CAAA,CAClB,EAAA,CAAA,EAEJ,aACC,iBAAA,GAAA,kBAAA,MAACA,YAAAA,kBAAD;GACE,SAAS;GACT,WAAU;aAFZ,CAIE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,gBAAgB,CACF;KAED;IACT,EAAA,CAAA;;;;ACvInB,MAAa,0CAA0C;AACvD,MAAa,0CACX;AACF,MAAa,6CACX;AAEF,SAAgB,wBAAwB,EACtC,YACA,aACA,kBAAkB,OAClB,aAAa,SACb,gBACA,UACA,KAcS;CACT,MAAM,aAAa,gBAAgB,SAAS;AAC5C,KAAI,UAAU;AACZ,MAAI,cAAc,WAAY,QAAO,SAAS;AAC9C,MAAI,WAAY,QAAO,SAAS;AAChC,MAAI,WAAY,QAAO,SAAS;AAChC,SACE,kBACA,SAAS,gBACT,IAAI,uBAAuB,IAC3B;;AAGJ,KAAI,cAAc,WAChB,QACE,IAAI,gCAAgC;EAAE;EAAY;EAAY,CAAC,IAC/D,MAAM,WAAW,UAAU,WAAW;AAE1C,KAAI,WACF,QACE,IAAI,uBAAuB;EAAE;EAAY;EAAY,CAAC,IACtD,MAAM,WAAW,UAAU,WAAW;AAE1C,KAAI,WACF,QACE,IAAI,yBAAyB,EAAE,YAAY,CAAC,IAC5C,eAAe,WAAW;AAE9B,QACE,kBACA,IAAI,uBAAuB,IAC3B;;AAWJ,SAAgB,gBAAgB,EAC9B,OACA,eACA,SACA,oBAAoB,SACsB;CAC1C,MAAM,EAAE,MAAM,0BAA0B;AACxC,QACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,MAAD;EACS;EACP,gBAAgB,MAAM,cAAc,EAAiB;EACrD,WAAWC,YAAAA,GACT,qBAAA,gBACD;YAED,iBAAA,GAAA,kBAAA,MAACC,YAAAA,UAAD;GACE,WAAWD,YAAAA,GACT,qBAAA,+CACD;aAHH;IAKE,iBAAA,GAAA,kBAAA,KAACE,YAAAA,aAAD;KACE,OAAM;KACN,WAAWF,YAAAA,GACT,qBAAA,+CACD;eAEA,EAAE,aAAa;KACJ,CAAA;IACd,iBAAA,GAAA,kBAAA,KAACE,YAAAA,aAAD;KACE,OAAM;KACN,WAAWF,YAAAA,GACT,qBAAA,+CACD;eAEA,WAAW,EAAE,cAAc;KAChB,CAAA;IACd,iBAAA,GAAA,kBAAA,KAACE,YAAAA,aAAD;KACE,OAAM;KACN,WAAWF,YAAAA,GACT,qBAAA,+CACD;eAEA,EAAE,iBAAiB;KACR,CAAA;IACL;;EACN,CAAA;;;;ACtHX,MAAa,6BACX;AACF,MAAa,8BAA8B;AAC3C,MAAa,kCACX;AACF,MAAa,8BACX;;;;;;;;;AAeF,SAAgB,yBAAyB,EACvC,MACA,YACmD;AACnD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAW;YAAhB,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aAA8B;GAAW,CAAA,EACzD,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aAAkC;GAAe,CAAA,CAC7D;;;;;AC+BV,MAAMG,cAAY;AAElB,SAAS,kBACP,MACA,QACQ;AACR,SAAQ,MAAR;EACE,KAAK,QACH,QAAO,OAAO;EAChB,KAAK,MACH,QAAO,OAAO;EAChB,QACE,QAAO,OAAO;;;AAWpB,MAAM,sBAAsB;CAC1B;EAAE,OAAO;EAAO,UAAU;EAA0B;CACpD;EAAE,OAAO;EAAS,UAAU;EAAuB;CACnD;EAAE,OAAO;EAAS,UAAU;EAAuB;CACnD;EAAE,OAAO;EAAO,UAAU;EAAqB;CAChD;AAED,SAAgB,mBAAmB,EACjC,+BAA+B,SACc;CAC7C,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,WAAWC,0BAAAA,aAAa;CAC9B,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,aAAaC,mBAAAA,eAAe;CAClC,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CACpC,MAAM,EAAE,UAAU,UAAU,cAAc,iBAAiB;CAC3D,MAAM,qBAAqB,uBAAuB;CAQlD,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UACrB,EAAE,CACH;CAED,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA8C,KAAK;CAC3E,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAGb,KAAK;CAUf,MAAM,4BAAA,GAAA,MAAA,QAA4D,KAAK;CACvE,MAAM,sBAAA,GAAA,MAAA,cACH,SAAiB,UACf,YAAsC;AACrC,2BAAyB,UAAU;AACnC,oBAAkB;GAAE;GAAS;GAAM,CAAC;IAExC,EAAE,CACH;CAED,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,GAAG;CAChD,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA+B,GAAG;CAC1D,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,SAAS;CACpD,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAkC,OAAO;CAC1D,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAAwC,MAAM;CAClE,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAAsC,MAAM;CAC/D,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAAgC,MAAM;AAG/D,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,iBAAiB;AAC7B,sBAAmB,WAAW;KAC7B,IAAI;AACP,eAAa,aAAa,MAAM;IAC/B,CAAC,WAAW,CAAC;CAEhB,MAAM,EAAE,QAAQ,aAAa,WAAW,gBAAA,GAAA,sBAAA,aAA2B;EACjE,aAAa,OAAe,IAAI,MAAM,YAAY,GAAG;EACrD,iBAAiB;AACf,aAAU;IAAE,OAAO,EAAE,uBAAuB;IAAE,MAAM;IAAW,CAAC;AAC3D,eAAY,kBAAkB,EACjC,UAAUC,uBAAAA,eAAe,MAAM,KAChC,CAAC;AACF,sBAAmB,KAAK;;EAE1B,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,sBAAsB,EAAE,SAAS,MAAM,SAAS,CAAC;IAC1D,MAAM;IACN;IACD,CAAC;AACF,sBAAmB,KAAK;;EAE3B,CAAC;CACF,MAAM,iBAAA,GAAA,MAAA,mBAAkC;AACtC,MAAI,mBAAmB,KAAM,aAAY,gBAAgB;IACxD,CAAC,iBAAiB,YAAY,CAAC;CAKlC,MAAM,UACJ,cAAc,cACV,cACA,cAAc,eACZ,eACA,KAAA;CAGR,MAAM,UACJ,eAAe,QAAQ,KAAA,IAAY;CAErC,MAAM,EACJ,MACA,WACA,oBACA,aACA,eACA,WAAA,GAAA,sBAAA,kBACmB;EACnB,UAAU;GACR,GAAGA,uBAAAA,eAAe,MAAM,KACtB,iBACA,cAAc,cACd,YACA,aACA,OACD;GACD;GACA;GACD;EACD,SAAS,OAAO,EAAE,gBAAgB;AAUhC,UATiB,MAAM,IAAI,MAAM,KAAK;IACpC,iBAAiB,mBAAmB,KAAA;IACpC,qBAAqB;IACrB,0BAA0B;IAC1B,gBAAgB;IAChB,eAAeJ;IACf,MAAM;IACN,cAAc;IACf,CAAC;;EAGJ,mBAAmB,aAAa,SAAS,cAAc,KAAA;EACvD,kBAAkB,KAAA;EAClB,iBAAiBK,sBAAAA;EAClB,CAAC;CAEF,MAAM,iBAAA,GAAA,MAAA,eACE,MAAM,MAAM,SAAS,MAAM,EAAE,MAAM,IAAI,EAAE,EAC/C,CAAC,MAAM,MAAM,CACd;CAED,MAAM,cAAc,wBAAwB;EAC1C;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,qBAAA,GAAA,MAAA,eAEF,oBAAoB,KAAK,YAAY;EACnC,OAAO,OAAO;EACd,OAAO,EAAE,OAAO,SAAS;EAC1B,EAAE,EACL,CAAC,EAAE,CACJ;CAED,MAAM,kBACJ,kBAAkB,MAAM,WAAW,OAAO,UAAU,WAAW,EAAE,SACjE,EAAE,yBAAyB;CAE7B,MAAM,oBACJ,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,UAAW,CAAA,EAE7B,iBAAA,GAAA,kBAAA,KAAC,QAAD;EAAM,WAAU;YAAoB;EAAuB,CAAA,CAC1D,EAAA,CAAA;CAGL,MAAM,YACJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACG,gCAAgC,iBAAA,GAAA,kBAAA,KAAC,0BAAD,EAA4B,CAAA,EAE7D,iBAAA,GAAA,kBAAA,KAAC,0BAAD;GACE,MACE,iBAAA,GAAA,kBAAA,KAAC,iBAAD;IACE,OAAO;IACP,eAAe;IACf,SAAS,EAAE,qBAAqB;IAChC,mBAAA;IACA,CAAA;GAEJ,UACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAW;eACd,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,YAAD;MACE,cAAc,WAAW,iBAAiB;MAC1C,aAAa;MACb,gBAAgB;MAChB,aAAa,EAAE,2BAA2B;MAC1C,aAAa;OACX;QAAE,OAAO,EAAE,cAAc;QAAE,OAAO;QAAU;OAC5C;QAAE,OAAO,EAAE,gBAAgB;QAAE,OAAO;QAAa;OACjD;QAAE,OAAO,EAAE,iBAAiB;QAAE,OAAO;QAAc;OACpD;MACU;MACX,cAAc;MACd,CAAA;KACE,CAAA;IAKL,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;KACE,SAAQ;KACR,cAAY,EAAE,qBAAqB,EACjC,OAAO,iBACR,CAAC;KACF,eAAe,oBAAoB,KAAK;eAEvC;KACM,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;KACE,MAAM;KACN,cAAc;KACd,OAAO,EAAE,yBAAyB;KAClC,SAAS,kBAAkB,KAAK,YAAY;MAC1C,IAAI,OAAO;MACX,OAAO,OAAO;MACd,UAAU,eAAe,OAAO;MAChC,gBAAgB,cAAc,OAAO,MAAM;MAC5C,EAAE;KACH,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;KAAqB,SAAA;eACnB,iBAAA,GAAA,kBAAA,KAACH,YAAAA,QAAD;MACE,SAAQ;MACR,cAAY,EAAE,qBAAqB,EACjC,OAAO,iBACR,CAAC;gBAED;MACM,CAAA;KACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,KAACI,YAAAA,qBAAD;KAAqB,OAAM;eACxB,kBAAkB,KAAK,WACtB,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;MAEE,eAAe,cAAc,OAAO,MAAM;gBAF5C,CAIE,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,WAAU;iBAAU,OAAO;OAAa,CAAA,EAC7C,eAAe,OAAO,SACrB,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EAAO,WAAU,gCAAiC,CAAA,CAEnC;QAPZ,OAAO,MAOK,CACnB;KACkB,CAAA,CACT,EAAA,CAAA;IAGjB,iBAAA,GAAA,kBAAA,KAAC,gBAAD;KAAgB,OAAO;KAAU,UAAU;KAAe,CAAA;IACzD,EAAA,CAAA;GAEL,CAAA,CACE;;CAGR,MAAM,SACJ,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,sBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,iFAAkF,CAAA;EAC7F,CAAA,EAEP,SACC,iBAAA,GAAA,kBAAA,MAAC,KAAD;EAAG,WAAU;YAAb,CACG,EAAE,sBAAsB,EACxB,MAAM,QACL;IAEL,EAAA,CAAA;AAGL,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,qBAAD,EAAA,UACG,WAAW,OACV,iBAAA,GAAA,kBAAA,MAACP,YAAAA,QAAD;GAAQ,eAAe,SAAS,YAAY;GAAE,MAAK;aAAnD,CACE,iBAAA,GAAA,kBAAA,KAACQ,aAAAA,MAAD,EAAM,WAAU,eAAgB,CAAA,EAC/B,EAAE,mBAAmB,CACf;MAES,CAAA;EACtB,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;GAAgB,WAAU;aACxB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;IAAgB,WAAU;cACvB,EAAE,mBAAmB;IACP,CAAA,EACF,CAAA;GACF,CAAA,EACN,CAAA,EACW,CAAA;EAC1B,iBAAA,GAAA,kBAAA,KAAC,qBAAD;GACa;GACX,SACE,CAAC,SACD,cAAc,WAAW,KACzB,CAAC,sBACD,CAAC;GAEH,cAAc,wBAAwB;IACpC,YAAY;IACZ;IACA,iBAAiB,eAAe;IAChC,YAAY;IACZ,gBAAgB,EAAE,sBAAsB;IACxC;IACA,UAAU;KACR,uBAAuB,EAAE,mCAAmC;MAC1D,YAAY;MACZ,YAAY;MACb,CAAC;KACF,iBAAiB,EAAE,4BAA4B;MAC7C,YAAY;MACZ,YAAY;MACb,CAAC;KACF,iBAAiB,EAAE,4BAA4B,EAC7C,YAAY,SACb,CAAC;KACH;IACF,CAAC;GACF,SAAS;GACD;GACK;GACb,oBAAmB;aAElB,aAAa,SACZ,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAW;cACb,cAAc,KAAK,SAAS;AAC3B,YACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAmB,WAAU;gBAA7B,CACE,iBAAA,GAAA,kBAAA,KAAC,eAAD;OACE,OAAO,KAAK,SAAS;OACrB,UAAU,KAAK;OACf,MAAM,SAAS,KAAK;OACpB,OAAO,EACL,MAAM,kBAAkB,KAAK,MAAM;QACjC,OAAO,EAAE,mBAAmB;QAC5B,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,mBAAmB;QAC7B,CAAC,EACH;OACD,SAAS,KAAK,SAAS;OACvB,UACE,iBAAA,GAAA,kBAAA,MAAC,QAAD;QAAM,WAAU;kBAAhB,CACG,kBAAkB,KAAK,MAAM;SAC5B,OAAO,EAAE,mBAAmB;SAC5B,KAAK,EAAE,iBAAiB;SACxB,OAAO,EAAE,mBAAmB;SAC7B,CAAC,EACD,KAAK,eAAe,UACnB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;SACE,SAAQ;SACR,WAAU;mBAET,EAAE,uBAAuB;SACpB,CAAA,CAEL;;OAET,CAAA,GACA,sBACC,CAAC,YAAY,KAAK,eAAe,WAClC,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,qBAAD;QACsB;QACpB,WAAW,CAAC,YAAY,KAAK,eAAe;QAC5C,gBAAgB,mBAAmB,KAAK,GAAG;QAC3C,iBAAiB,mBAAmB,KAAK,IAAI,OAAO;QACpD,eAAe,mBAAmB,KAAK,IAAI,SAAS;QACpD,CAAA;OACE,CAAA,CAEJ;QA3CI,KAAK,GA2CT;MAER;IACE,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAW;cACb,cAAc,KAAK,SAAS;AAC3B,YACE,iBAAA,GAAA,kBAAA,KAAC,kBAAD;MAEE,UAAU,KAAK;MACf,UAAU,KAAK,SAAS;MACxB,OAAO,KAAK,SAAS,EAAE,kBAAkB;MACzC,UACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,kBAAkB,KAAK,MAAM;OAC5B,OAAO,EAAE,mBAAmB;OAC5B,KAAK,EAAE,iBAAiB;OACxB,OAAO,EAAE,mBAAmB;OAC7B,CAAC,EACD,KAAK,eAAe,UACnB,iBAAA,GAAA,kBAAA,KAACA,YAAAA,OAAD;OACE,SAAQ;OACR,WAAU;iBAET,EAAE,uBAAuB;OACpB,CAAA,CAET,EAAA,CAAA;MAEL,eAAe,SAAS,SAAS,KAAK,KAAK;MAC3C,WACG,sBACE,CAAC,YAAY,KAAK,eAAe,WAClC,iBAAA,GAAA,kBAAA,KAAC,qBAAD;OACsB;OACpB,WAAW,CAAC,YAAY,KAAK,eAAe;OAC5C,gBAAgB,mBAAmB,KAAK,GAAG;OAC3C,iBAAiB,mBAAmB,KAAK,IAAI,OAAO;OACpD,eAAe,mBAAmB,KAAK,IAAI,SAAS;OACpD,CAAA;MAGN,EAlCK,KAAK,GAkCV;MAEJ;IACE,CAAA;GAEY,CAAA;EAGtB,iBAAA,GAAA,kBAAA,KAACC,yBAAAA,kBAAD;GACE,MAAM,oBAAoB;GAC1B,eAAe,SAAS,CAAC,QAAQ,mBAAmB,KAAK;GACzD,OAAO,EAAE,6BAA6B;GACtC,aAAa,EAAE,mCAAmC;GAClD,cAAc,WAAW,iBAAiB;GAC1C,MAAK;GACL,MAAK;aAEL,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAChB,YAAAA,QAAD;IACE,SAAQ;IACR,eAAe,mBAAmB,KAAK;IACvC,UAAU;cAET,EAAE,gBAAgB;IACZ,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;IACE,SAAQ;IACR,SAAS;IACT,UAAU;cAET,aAAa,iBAAA,GAAA,kBAAA,KAACiB,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,GAAG,EAAE,gBAAgB;IAC1D,CAAA,CACI,EAAA,CAAA;GACE,CAAA;EAElB,kBACC,iBAAA,GAAA,kBAAA,KAAC,qBAAD;GACE,MAAA;GACA,eAAe,SAAS;AACtB,QAAI,CAAC,KAAM,mBAAkB,KAAK;;GAEpC,WAAW,eAAe;GAC1B,aAAY;GACZ,MAAM,eAAe;GACrB,kBAAkB,eAAe,eAAe,YAAY;GAC5D,gBAAgB;GAChB,oBAAoB,eAClB,mBAAmB,aAAa;IAC9B,GAAG;KACF,eAAe,UAAU;IAC3B,EAAE;GAEL,eACE,mBACG,GAAG,eAAe,UAAU,OAAO,GAAG,WAAW,KACnD;GAEH,CAAA;EAEH,EAAA,CAAA;;;;ACpjBP,MAAMC,kBACJ;AAUF,SAAS,aAAa,SAAuC;CAC3D,IAAI,QAAQ,QAAQ,iBAAiB,QAAQ;AAE7C,KAAI,QAAQ,YAAY,QAAQ,SAAS,SAAS,GAAG;EACnD,MAAM,eAAe,QAAQ,SAAS;AACtC,MAAI,cAAc,cAChB,SAAQ,aAAa;WACZ,cAAc,MACvB,SAAQ,aAAa;;AAIzB,KAAI,CAAC,MAAO,QAAO;CAEnB,MAAM,WAAW,WAAW,MAAM,QAAQ,aAAa,GAAG,CAAC;AAC3D,KAAI,OAAO,MAAM,SAAS,IAAI,YAAY,EAAG,QAAO;AAEpD,KAAI,MAAM,SAAS,IAAI,CAAE,QAAO;AAEhC,QAAO,IAAI,SAAS,QAAQ,EAAE;;AAGhC,SAAwB,mBAAmB,EACzC,UACA,kBAC6C;CAC7C,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,MAAM,0BAA0B;CAExC,MAAM,sBACJ,WACA,MACG;AACH,IAAE,iBAAiB;AACnB,MAAI,aAAa,KAAM;AACvB,mBAAiB,UAAU;;AAG7B,KAAI,CAAC,YAAY,SAAS,WAAW,EACnC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,EAAE,+BAA+B,EAAE,OAAO,KAAK,CAAC;IAC9C,CAAA;GACD,CAAA,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,aAAD,EAAa,WAAU,mBAAoB,CAAA;MACvC,CAAA;KACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACZ,EAAE,2BAA2B;MAC1B,CAAA;KACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACZ,EAAE,uCAAuC;MACtC,CAAA;KACF;;GACF,CAAA,CACF;;AAIV,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,EAAE,+BAA+B,EAAE,OAAO,OAAO,SAAS,OAAO,EAAE,CAAC;IAClE,CAAA;GACD,CAAA,EAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,SAAS,KAAK,SAAS,UAAU;KAChC,MAAM,WACJ,QAAQ,SAAS,IAAI,aACrB,QAAQ,aACR,QAAQ,wBACRD;KACF,MAAM,QAAQ,QAAQ,SAAS,EAAE,kBAAkB;KACnD,MAAM,eAAe,aAAa,QAAQ;AAC1C,YACE,iBAAA,GAAA,kBAAA,MAAC,UAAD;MAEE,UAAU,MAAM,mBAAmB,QAAQ,IAAI,EAAE;MACjD,WAAU;gBAHZ,CAME,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACZ,YAAY;QACX,KAAK;QACL,KAAK;QACL,MAAM;QACN,WAAW;QACZ,CAAC;OACE,CAAA,EAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CAEE,iBAAA,GAAA,kBAAA,MAAC,MAAD;QAAI,WAAU;kBAAd,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;SAAM,WAAU;mBAAgB;SAAa,CAAA,EAC7C,iBAAA,GAAA,kBAAA,KAACE,aAAAA,cAAD,EAAc,WAAU,+FAAgG,CAAA,CACrH;WAGJ,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACZ;QACG,CAAA,CAEJ;SACC;QA7BF,QAAQ,MAAM,MA6BZ;MAEX;IACE,CAAA;GACF,CAAA,CACF;;;;;;;;;;;;;;;;;;;;AChFV,SAAgB,eAAe,EAC7B,MACA,UACA,cAKoB;CACpB,MAAM,EAAE,MAAM,0BAA0B;AACxC,QACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;EACE,KAAK;EACL,MAAK;EACL,iBAAe;EACf,SAAS;EACT,WAAU;YALZ,CAOG,EAAE,sBAAsB,EACzB,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD;GAAM,WAAU;GAAW,eAAY;GAAS,CAAA,CACzC;;;;;;;;;;;AAYb,SAAgB,gBAAgB,EAC9B,MACA,qBAAqB,MACrB,iBACA,iBAUoB;CACpB,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,gBACJ;AACF,QAKE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,OAAO,CAAC;EACR,WAAWC,YAAAA,GACT,oGACA,OAAO,gCAAgC,4BACxC;YAED,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,sBACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACF,YAAAA,QAAD;KACE,MAAK;KACL,SAAQ;KACR,MAAK;KACL,SAAS;KACT,WAAW;eAEV,EAAE,wBAAwB;KACpB,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;KACE,MAAK;KACL,SAAQ;KACR,MAAK;KACL,SAAS;KACT,WAAW;eAEV,EAAE,qBAAqB;KACjB,CAAA,CACR,EAAA,CAAA;IAED,CAAA;GACF,CAAA;EACF,CAAA;;AAIV,SAAS,cACP,MACA,QACQ;AACR,SAAQ,MAAR;EACE,KAAK,QACH,QAAO,OAAO;EAChB,KAAK,QACH,QAAO,OAAO;EAChB,KAAK,MACH,QAAO,OAAO;EAChB,QACE,QAAO,OAAO;;;AAIpB,SAAgB,kBAAkB,EAChC,SACA,YACA,QACA,oBAC4C;CAC5C,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,MAAMG,uBAAAA,kBAAkB;CAC9B,MAAM,aAAaC,mBAAAA,eAAe;CAClC,MAAM,EAAE,UAAU,UAAU,qBAAqB,iBAAiB;CAClE,MAAM,qBAAqB,uBAAuB;CAClD,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAGb,KAAK;CAKf,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CAKrD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAGZ,KAAK;CAIf,MAAM,mBAAA,GAAA,MAAA,QAA4C,KAAK;CAEvD,MAAM,EAAE,MAAM,eAAe,eAAA,GAAA,sBAAA,UAAuB;EAClD,UAAUC,uBAAAA,eAAe,MAAM,OAAO,OAAO,QAAQ,EAAE,YAAY,OAAO;EAC1E,eAAe,IAAI,MAAM,aAAa,OAAO,QAAQ,EAAE,OAAO;EAC/D,CAAC;CAEF,MAAM,EACJ,WACA,SAAS,kBACT,OAAO,mBACLC,uBAAAA,aAAa,EAAE,IAAI,OAAO,QAAQ,EAAE,EAAE,UAAU,KAAA,GAAW,OAAO;CAEtE,MAAM,EAAE,MAAM,uBAAA,GAAA,sBAAA,UAA+B;EAC3C,UAAUD,uBAAAA,eAAe,cAAc,KAAK,OAAO,QAAQ,EAAE,OAAO;EACpE,eACE,iBAAkB,kBAAkB,OAAO,QAAQ,EAAE,EACnD,cAAc,QACf,CAAC;EACJ,SAAS,CAAC,CAAC;EACZ,CAAC;CAEF,MAAM,kBAAA,GAAA,MAAA,eAEF,mBAAmB,gBAAgB,KAAK,OAAO;EAC7C,IAAI,EAAE;EACN,OAAO,EAAE,QAAQ;EACjB,WAAW,EAAE,aAAa;EAC1B,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,QAAQ;EAChB,KAAK,EAAE,OAAO;EACf,EAAE,IAAI,EAAE,EACX,CAAC,kBAAkB,CACpB;CAED,MAAM,YAAY,eAAe;CAEjC,MAAM,eAAe,WAAW,SAAS;CACzC,MAAM,eAAe,WAAW,aAAa;CAC7C,MAAM,eAAe,WAAW,aAAa;CAC7C,MAAM,aAAa,WAAW,WAAW;CACzC,MAAM,UAAU,WAAW,SAAS,WAAW,CAAC,CAAC;CACjD,MAAM,QAAQ,WAAW,SAAS,SAAS,CAAC,CAAC;CAE7C,MAAM,aAAa,cAAc,WAAW,QAAQ,MAAM;EACxD,OAAO,EAAE,mBAAmB;EAC5B,OAAO,EAAE,mBAAmB;EAC5B,KAAK,EAAE,iBAAiB;EACxB,SAAS,EAAE,qBAAqB;EACjC,CAAC;CAEF,MAAM,iBACJ,WAAW,aAAa,QAAQ,WAAW,YAAY;CAEzD,MAAM,cAAc,UAChB,eACA,WAAW,WAAW;AAE1B,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACE,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;GAAgB,WAAU;aAA1B;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KACE,MAAK;KACL,UAAU,MAAM;AACd,QAAE,gBAAgB;AAClB,OACE,kBAAkB,WAClB,iBACO,SAAS,QAAQ,IACvB;;eAGJ,kBAAkB,SAAS,EAAE,mBAAmB;KAClC,CAAA,EACF,CAAA;IACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;KAAgB,WAAU;eACvB,gBAAgB,EAAE,mBAAmB;KACvB,CAAA,EACF,CAAA;IACF;MACN,CAAA,EACW,CAAA;EAC1B,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,qBAAD,EAAA,UACG,YAAY,CAAC,aAAa,UAAU,eAAe,SAAS,OAC3D,iBAAA,GAAA,kBAAA,MAACd,YAAAA,QAAD;GACE,MAAK;GACL,SAAQ;GACR,eAAe,SAAS,SAAS,QAAQ,OAAO;GAChD,WAAU;aAJZ,CAME,iBAAA,GAAA,kBAAA,KAACe,aAAAA,QAAD,EAAQ,WAAU,YAAa,CAAA,EAC9B,EAAE,cAAc,CACV;MAES,CAAA;EACtB,iBAAA,GAAA,kBAAA,KAAC,uBAAD;GACa;GACX,UAAU,CAAC;GACX,iBAAiB,EAAE,kBAAkB;GACrC,OAAO;GACP,aAAa;GAGb,sBAAqB;GACrB,OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,uBAAD;KACgB;KACA;KACd,cAAc,UAAU,eAAe,KAAA;KACvC,YAAY,QAAQ,aAAa,KAAA;KACxB;KACG;KACZ,SAAA;KACA,WAAW;KACX,kBAAkB,EAAE,yBAAyB;KAC7C,kBAAkB,EAAE,qBAAqB;KACzC,kBAAkB,EAAE,qBAAqB;KACzC,CAAA,EAIF,iBAAA,GAAA,kBAAA,KAAC,QAAD;KAAM,WAAU;eACb;KACI,CAAA,CACH;;GAER,SACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;IACE,aAAa,eAAe;IACd;IACd,WAAW,iBAAiB,OAAO,aAAa;IAC9B;IACT;IACT,cAAc,OAAO,QAAQ;IAC7B,gBAAe;IACf,iBACE,sBAAsB,YACpB,iBAAA,GAAA,kBAAA,KAAC,gBAAD;KACE,MAAM;KACN,gBAAgB,gBAAgB,SAAS,CAAC,KAAK;KAC/C,YAAY;KACZ,CAAA,GACA,KAAA;IAEN,sBACE,sBAAsB,YACpB,iBAAA,GAAA,kBAAA,KAAC,iBAAD;KACE,MAAM;KACc;KACpB,uBAAuB;AACrB,wBAAkB;OAChB,SAAS,OAAO,QAAQ;OACxB,MAAM;OACP,CAAC;AACF,qBAAe,MAAM;;KAEvB,qBAAqB;AACnB,wBAAkB;OAChB,SAAS,OAAO,QAAQ;OACxB,MAAM;OACP,CAAC;AACF,qBAAe,MAAM;;KAEvB,CAAA,GACA,KAAA;IAEN,CAAA;aAGH,eAAe,SAAS,KACvB,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,WAAD,EAAW,WAAU,sBAAuB,CAAA,EAC5C,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,oBAAD;KACE,UAAU;KACV,iBAAiB,cACf,aAAa,WAAW,OAAO,UAAU,CAAC;KAE5C,CAAA;IACE,CAAA,CACL,EAAA,CAAA;GAEiB,CAAA;EAEvB,kBACC,iBAAA,GAAA,kBAAA,KAAC,qBAAD;GACE,MAAA;GACA,eAAe,SAAS;AACtB,QAAI,CAAC,KAAM,mBAAkB,KAAK;;GAEpC,WAAW,eAAe;GAC1B,aAAY;GACZ,MAAM,eAAe;GACrB,kBACE,eAAe,YAAY,eAAe,UACtC,cAAc,aACd;GAEN,gBAAgB;GAChB,oBAAoB,eAClB,iBAAiB;IAAE,SAAS,eAAe;IAAS;IAAY,CAAC;GAEnE,eAGE,kBAAkB,YAChB,SAAS,YAAY,eAAe,UAAU,OAAO,QACtD;GAEH,CAAA;EAEH,EAAA,CAAA;;;;ACtZP,SAAgB,sBAAsB,EACpC,KACA,YAIoB;AACpB,QACE,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,uBAAD;EAA2B,OAAO;EAC/B;EACyB,CAAA;;;;ACuBhC,MAAM,qBAAA,GAAA,MAAA,eAAiE,KAAK;AAE5E,SAAgB,mBAAmB,EACjC,UACA,SAIoB;AACpB,QACE,iBAAA,GAAA,kBAAA,KAAC,kBAAkB,UAAnB;EAAmC;YACjC,iBAAA,GAAA,kBAAA,KAAC,6BAAD,EAA8B,UAAuC,CAAA;EAC1C,CAAA;;AAIjC,SAAgB,uBAA+C;CAC7D,MAAM,OAAA,GAAA,MAAA,YAAiB,kBAAkB;AACzC,KAAI,CAAC,IACH,OAAM,IAAI,MACR,gEACD;AAEH,QAAO;;AAuBT,MAAM,kCAAA,GAAA,MAAA,eACwC,KAAK;AACnD,MAAM,mCAAA,GAAA,MAAA,eACsC,KAAK;AAEjD,SAAS,4BAA4B,EACnC,YAGoB;AAIpB,QACE,iBAAA,GAAA,kBAAA,KAAC,+BAA+B,UAAhC;EAAyC,OAAO;YAC9C,iBAAA,GAAA,kBAAA,KAAC,gCAAgC,UAAjC;GAA0C,OAAO;GAC9C;GACwC,CAAA;EACH,CAAA;;AAI9C,SAAgB,yBAAyB,EACvC,OACA,KACA,YAKoB;AACpB,QACE,iBAAA,GAAA,kBAAA,KAAC,+BAA+B,UAAhC;EAAyC,OAAO;YAC9C,iBAAA,GAAA,kBAAA,KAAC,gCAAgC,UAAjC;GAA0C,OAAO;GAC9C;GACwC,CAAA;EACH,CAAA;;;;;;;AAS9C,SAAgB,yBAGd;AAGA,QAAO;EAAE,QAAA,GAAA,MAAA,YAFgB,+BAA+B;EAExC,MAAA,GAAA,MAAA,YADO,gCAAgC;EAClC;;;;ACpIvB,SAAgB,WAAW,EAAE,aAAgD;AAC3E,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAgB;EAAW,SAAQ;EAAY,MAAK;YAApD;GACE,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,qHAAsH,CAAA;GAC9H,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,yIAA0I,CAAA;GAClJ,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,iIAAkI,CAAA;GAC1I,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,uIAAwI,CAAA;GAC5I;;;AAIV,SAAgB,cAAc,EAC5B,aACoC;AACpC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAgB;EAAW,SAAQ;EAAY,MAAK;YAClD,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,63BAA83B,CAAA;EACl4B,CAAA;;AAIV,SAAgB,aAAa,EAAE,aAAgD;AAC7E,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAgB;EAAW,SAAQ;EAAY,MAAK;YAClD,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,kSAAmS,CAAA;EACvS,CAAA;;AAIV,SAAgB,WAAW,EAAE,aAAgD;AAC3E,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAgB;EAAW,SAAQ;EAAY,MAAK;YAClD,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,ylBAA0lB,CAAA;EAC9lB,CAAA;;AAIV,SAAgB,YAAY,EAAE,aAAgD;AAC5E,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAgB;EAAW,SAAQ;EAAY,MAAK;YAClD,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,gHAAiH,CAAA;EACrH,CAAA;;AAIV,SAAgB,aAAa,EAAE,aAAgD;AAC7E,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAgB;EAAW,SAAQ;EAAY,MAAK;YAClD,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,GAAE,+DAAgE,CAAA;EACpE,CAAA;;;;ACpDV,MAAa,sBACX,QAAgB,QAKb;CACH,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,GAAG;CAClD,MAAM,CAAC,sBAAsB,4BAAA,GAAA,MAAA,UAAoC,GAAG;AAEpE,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,iBAAiB;AAC7B,2BAAwB,YAAY;KACnC,MAAM;AAET,eAAa,aAAa,MAAM;IAC/B,CAAC,aAAa,MAAM,CAAC;AAExB,QAAO;EACL;EACA;EACA;EACD;;;;ACCH,MAAM,uBACJ,aACQ;CACR,MAAM,QAAQ,SAAS,WAAW,YAAY,QAAQ,YAAY,KAAK;CACvE,MAAM,iBAAiB,QAAQ,IAAI,SAAS,SAAS,KAAA;AACrD,KAAI,CAAC,eAAgB,QAAO;AAC5B,QAAO,CAAC,gBAAgB,GAAG,SAAS,QAAQ,GAAG,MAAM,MAAM,MAAM,CAAC;;AAGpE,MAAM,6BAA6B,aAAoC;CACrE,MAAM,aACH,SAA8C,uBAAuB;AACxE,QAAO;EACL,IAAI,SAAS;EAEb,YACE,SAAS,QACR,SAA+C;EAClD,MAAM,SAAS;EACf,UAAU,SAAS;EACnB,qBAAqB,cAAc,KAAA;EACnC,UAAU,oBACR,MAAM,QAAQ,SAAS,SAAS,GAAG,SAAS,WAAW,EAAE,CAC1D,CAAC,KAAK,YAAY;GACjB,MAAM,aAAa;AAInB,UAAO;IACL,IAAI,OAAO,QAAQ,MAAM,GAAG;IAC5B,KAAK,QAAQ,OAAO,cAAc;IAClC,WAAW,QAAQ,aAAa;IAChC,WAAW,QAAQ,aAAa;IAChC,UAAU,WAAW,YAAY,EAAE;IACnC,OAAO,WAAW,SAAS,QAAQ,sBAAsB;IACzD,MAAM,QAAQ,QAAQ,EAAE;IACzB;IACD;EACH;;AAGH,MAAM,iBAAiB,UAAyC;AAC9D,QACE,OAAO,UAAU,YACjB,UAAU,SACT,UAAU,SAAS,gBAAgB,UACpC,UAAU,SACV,cAAc;;AAIlB,MAAM,kBAAkB,UAA4C;AAKlE,KACE,gBAAgB,SAChB,MAAM,QAAS,MAAmB,SAAS,IAC1C,MAAmB,SAAS,SAAS,KACtC,OAAQ,MAAmB,SAAS,IAAI,UAAU,UAElD,QAAO;AAET,QAAO,0BAA0B,MAAqB;;AAGxD,MAAM,eACJ,MACA,WAAW,IACX,QAAQ,MACsC;AAC9C,KAAI,QAAQ,GAAI,QAAO;EAAE,SAAS,EAAE;EAAE,QAAQ,EAAE;EAAE;CAElD,MAAM,UAAoB,EAAE;CAC5B,MAAM,SAAqB,EAAE;AAE7B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,EAAE;EAC/C,MAAM,WAAW,WAAW,GAAG,SAAS,GAAG,QAAQ;AAEnD,MAAI,cAAc,MAAM,CACtB,QAAO,KAAK,0BAA0B,MAAM,CAAC;WACpC,OAAO,UAAU,YAAY,UAAU,MAAM;AACtD,OAAI,OAAO,KAAK,SAAS,EAAE,CAAC,EAAE,WAAW,EAAG;AAC5C,WAAQ,KAAK,SAAS;GACtB,MAAM,SAAS,YAAY,OAAkB,UAAU,QAAQ,EAAE;AACjE,WAAQ,KAAK,GAAG,OAAO,QAAQ;AAC/B,UAAO,KAAK,GAAG,OAAO,OAAO;;;AAIjC,QAAO;EAAE;EAAS;EAAQ;;AAG5B,MAAa,iBACX,gBACA,qBA0BG;CACH,MAAM,MAAMC,mBAAAA,kBAAkB;CAC9B,MAAM,EAAE,cAAc,sBAAsB;CAC5C,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,IAAI;CAEnD,MAAM,iBAAiB,mBAAmB,IAAI;CAC9C,MAAM,eAAe,qBAAqB,KAAA;CAC1C,MAAM,cAAc,eAChB,iBAAkB,cAClB,eAAe;CACnB,MAAM,iBAAiB,eACnB,iBAAkB,iBAClB,eAAe;CAEnB,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAC1B,kBAAkB,eAAe,GAClC;AACD,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,aAAc;EACnB,MAAM,QAAQ,iBAAiB,uBAAuB,YAAY,EAAE,IAAI;AACxE,eAAa,aAAa,MAAM;IAC/B,CAAC,cAAc,YAAY,CAAC;CAE/B,MAAM,uBAAuB,eACzB,sBACA,eAAe;CAEnB,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,0BAErB,IAAI,KAAK,CAAC;CAEZ,MAAM,wBAAA,GAAA,MAAA,eAAqC;AACzC,MAAI,CAAC,kBAAkB,CAAC,UAAW,QAAO;AAC1C,SAAO,eAAe,KAAK,WACzB,OAAO,SAAS,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,IACxD;IACA,CAAC,gBAAgB,UAAU,CAAC;CAE/B,MAAM,kBAAA,GAAA,MAAA,eAA+B;AACnC,MAAI,CAAC,sBAAsB,OAAQ,QAAO;AAC1C,MAAI,sBAAsB,WAAW,EAAG,QAAO,qBAAqB;AACpE,MAAI,CAAC,UAAW,QAAO;EAEvB,MAAM,aAAa,qBAChB,KAAK,SAAS,KAAK,MAAM,IAAI,CAAC,GAAG,CACjC,OAAO,QAAQ;AAElB,SAAO,YAAY,SACf,GAAG,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC,MACrC;IACH;EAAC;EAAsB;EAAa;EAAU,CAAC;CAElD,MAAM,EACJ,MACA,WACA,OACA,YACA,eACA,aACA,wBAAA,GAAA,sBAAA,kBACmB;EACnB,UAAU,aAAa,MAAM;GAC3B,MAAM;GACN,QAAQ;GACR,SAAS;GACV,CAAC;EACF,UAAU,EAAE,gBACV,IAAI,eAAe;GACjB,MAAM,kBAAkB;GACxB,QAAQ;GACR,aAAa;GACb,cAAc;GACd,oBAAoB;GACpB,QAAQ;GACT,CAAC;EACJ,mBAAmB,aAChB,UAA+B,MAAM,eAAe,KAAA;EACvD,kBAAkB,KAAA;EAClB,sBAAsB;EACvB,CAAC;CAEF,MAAM,cAAA,GAAA,MAAA,mBAA+B;AACnC,MAAI,gBAAgB,IAAK;EAEzB,MAAM,YAAY,YAAY,MAAM,IAAI;AACxC,MAAI,WAAW,UAAU,GAAG;AAC1B,kBAAe,IAAI;AACnB;;AAEF,MAAI,YAAY,WAAW,SAAS,OAAO,KAAK;GAC9C,MAAM,cAAc,UAAU,MAAM,GAAG,GAAG;AAC1C,OAAI,aAAa,WAAW,EAC1B,gBAAe,IAAI;OAEnB,gBAAe,YAAY,KAAK,IAAI,GAAG,KAAK;QAI9C,gBADoB,UAAU,MAAM,GAAG,GAAG,CACf,KAAK,IAAI,GAAG,KAAK;IAE7C,CAAC,YAAY,CAAC;CAEjB,MAAM,eAAA,GAAA,MAAA,cACH,OAA+B,cAAuB;EACrD,MAAM,aAAa,eAAe,MAAM;AACxC,qBAAmB,SAAS;GAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,QAAK,IAAI,WAAW,YAAY;IAAE,OAAO;IAAY;IAAW,CAAC;AACjE,UAAO;IACP;IAEJ,EAAE,CACH;CAED,MAAM,iBAAA,GAAA,MAAA,cAA6B,cAAsB;AACvD,qBAAmB,SAAS;AAC1B,OAAI,CAAC,KAAK,IAAI,UAAU,CAAE,QAAO;GACjC,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,QAAK,OAAO,UAAU;AACtB,UAAO;IACP;IACD,EAAE,CAAC;CAEN,MAAM,kBAAA,GAAA,MAAA,mBAAmC;AACvC,oCAAkB,IAAI,KAAK,CAAC;IAC3B,EAAE,CAAC;CAEN,MAAM,uBAAA,GAAA,MAAA,cACH,OAA+B,cAAuB;EACrD,MAAM,aAAa,eAAe,MAAM;AACxC,oBACE,IAAI,IAAI,CAAC,CAAC,WAAW,YAAY;GAAE,OAAO;GAAY;GAAW,CAAC,CAAC,CAAC,CACrE;IAEH,EAAE,CACH;CAED,MAAM,sBAAA,GAAA,MAAA,mBAA2D;AAC/D,SAAO,MAAM,KAAK,eAAe,QAAQ,CAAC,CAAC,KAAK,EAAE,OAAO,gBAAgB;GACvE,MAAM,UAAU,YACZ,MAAM,SAAS,MAAM,MAAM,EAAE,OAAO,UAAU,GAC9C,MAAM,SAAS,MAAM,MAAM,EAAE,MAAM,IAAI,MAAM,SAAS;GAC1D,MAAM,oBAAoB,MAAM,uBAAuB;GACvD,MAAM,UAAU,SAAS,OAAO,qBAAqB;GAErD,MAAM,WAAW,SAAS,YAAY,EAAE;GACxC,MAAM,aACJ,OAAO,SAAS,UAAU,YAC1B,OAAO,SAAS,WAAW,WACvB;IAAE,OAAO,SAAS;IAAO,QAAQ,SAAS;IAAQ,GAClD,KAAA;AAEN,UAAO;IACL,UAAU,MAAM;IAChB,YAAY,MAAM;IAClB,WAAW;IACX,UAAU;IACV,UAAU;KACR,WAAW,SAAS,aAAa,MAAM;KACvC,WAAW,SAAS,aAAa;KACjC;KACD;IACD,eAAe;IACf,YAAY,SAAS,MAAM,KAAA;IAC5B;IACD;IACD,CAAC,eAAe,CAAC;CAEpB,MAAM,qBAAA,GAAA,MAAA,cACH,cAA8B;EAE7B,MAAM,QADO,MAAM,KAAK,eAAe,MAAM,CAAC,CAC3B,QAAQ,UAAU;AACrC,SAAO,UAAU,KAAK,KAAK,QAAQ;IAErC,CAAC,eAAe,CACjB;CAED,MAAM,sBAAA,GAAA,MAAA,eACE,MAAM,KAAK,eAAe,MAAM,CAAC,EACvC,CAAC,eAAe,CACjB;CAED,MAAM,kBAAA,GAAA,MAAA,cACH,SAA2B;EAC1B,MAAM,eAAe,WAAW,UAAU;AAC1C,SAAO,gBAAgB,KAAK,gBACxB,GAAG,eAAe,KAAK,eAAe,GACtC;IAEN,CAAC,UAAU,CACZ;CAED,MAAM,EAAE,SAAS,eAAA,GAAA,MAAA,eAA4B;AAC3C,MAAI,CAAC,MAAM,OAAO,OAChB,QAAO;GAAE,SAAS,EAAE;GAAE,WAAW,EAAE;GAAE;EAGvC,MAAM,eAAe,WAAW,UAAU;EAC1C,MAAM,WAAqB,eAAe,CAAC,aAAa,GAAG,EAAE;AAC7D,MAAI,gBAAgB,UAAU,aAC5B,gBAAe,SAAS,WAAW;AACjC,OAAI,CAAC,OAAO,SAAS,IAAI,CACvB,UAAS,KAAK,GAAG,aAAa,GAAG,SAAS;IAE5C;EAGJ,MAAM,4BAAY,IAAI,KAAa;EACnC,MAAM,2BAAW,IAAI,KAAuB;AAC5C,OAAK,MAAM,QAAQ,KAAK,OAAO;GAE7B,MAAM,OAAO,YAAY,eADR,KACgC,KAAK,CAAC;AACvD,QAAK,MAAM,UAAU,KAAK,QACxB,KAAI,CAAC,SAAS,SAAS,OAAO,CAC5B,WAAU,IAAI,OAAO;AAGzB,QAAK,MAAM,SAAS,KAAK,OACvB,UAAS,IAAI,MAAM,YAAY,MAAM;;AAIzC,SAAO;GACL,SAAS,MAAM,KAAK,UAAU;GAC9B,WAAW,MAAM,KAAK,SAAS,QAAQ,CAAC;GACzC;IACA;EAAC;EAAM;EAAgB;EAAW;EAAe,CAAC;AAErD,QAAO;EACL;EACA;EACA;EACA,gBAAgB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB,mBAAmB;EACnB,SAAS,WAAW,EAAE;EACtB,QAAQ,aAAa,EAAE;EACvB;EACA;EACA,aAAa,gBAAgB;EAC7B,aAAa,QAAQ,YAAY;EACjC,UAAU;EACV,YAAY,cAAc;EAC3B;;;;AC5YH,MAAM,oBAAoB;AAE1B,SAAgB,cAAuB;CACrC,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAwB,MAAM;AAE/C,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,OAAO,OAAO,eAAe,YAAY;AAC3C,eAAY,MAAM;AAClB;;EAGF,MAAM,aAAa,OAAO,WACxB,eAAe,oBAAoB,EAAE,KACtC;EACD,MAAM,eAAe,YAAY,WAAW,QAAQ;AAEpD,UAAQ;AACR,aAAW,iBAAiB,UAAU,OAAO;AAC7C,eAAa,WAAW,oBAAoB,UAAU,OAAO;IAC5D,EAAE,CAAC;AAEN,QAAO;;;;ACPT,MAAa,eAERC,IAAE,OAAO,EACZ,YAAYA,IACT,QAAQ,CACR,IAAI,GAAG,0BAA0B,CACjC,IAAI,GAAG,4CAA4C,CACnD,IAAI,IAAI,4CAA4C,CACpD,MACC,mBACA,iEACD,EACJ,CAAC;AAYF,SAAgB,eAAe,EAC7B,MACA,SACA,UACA,MACA,aACyC;CACzC,MAAM,WAAW,aAAa;CAC9B,MAAM,oBAAoB;AACxB,UAAQ,MAAM;AACd,OAAK,OAAO;;AAGd,QACE,iBAAA,GAAA,kBAAA,KAACC,yBAAAA,kBAAD;EACQ;EACN,cAAc;EACd,OAAM;EACN,aAAY;EACZ,cAAc,WAAW,iBAAiB;EAC1C,MAAK;YAEL,iBAAA,GAAA,kBAAA,KAACC,YAAAA,MAAD;GAAM,GAAI;aACR,iBAAA,GAAA,kBAAA,MAAC,QAAD;IAAM,UAAU,KAAK,aAAa,SAAS;IAAE,WAAU;cAAvD,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,WAAD;KACE,SAAS,KAAK;KACd,MAAK;KACL,SAAS,EAAE,YACT,iBAAA,GAAA,kBAAA,MAACC,YAAAA,UAAD,EAAA,UAAA;MACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,WAAD,EAAA,UAAW,eAAuB,CAAA;MAClC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;OACE,aAAY;OACZ,GAAI;OACJ,UAAU;OACV,CAAA,EACU,CAAA;MACd,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD,EAAe,CAAA;MACN,EAAA,CAAA;KAEb,CAAA,EACF,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;KAAQ,SAAQ;KAAU,MAAK;KAAS,UAAU;eAC/C,YAAY,gBAAgB;KACtB,CAAA,CACJ;;GACF,CAAA;EACU,CAAA;;;;ACUvB,SAAgB,YAAY,EAC1B,OACA,aACA,cAAc,UACd,cAAc,UACd,MACA,UACA,UACA,gBAAgB,eAChB,WACsC;AAEtC,QACE,iBAAA,GAAA,kBAAA,MAACC,yBAAAA,kBAAD;EACQ;EACN,eAAe,aAAa;AAC1B,OAAI,CAAC,SAAU,aAAY;;EAEtB;EACP,cARa,aAAa,GAQD,iBAAiB;EAC1C,MAAK;YAPP,CASE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,mBAAD,EAAmB,WAAU,uCAAwC,CAAA,EACrE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eAAyB;KAAgB,CAAA;IAClD,CAAA,CACF;MAEN,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;GACE,MAAK;GACL,SAAS;GACT,SAAQ;GACR,UAAU;GACV,WAAU;aAET;GACM,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;GACE,UAAU;GACV,MAAK;GACL,SAAS;GACT,SAAS;GACT,WAAU;aAET;GACM,CAAA,CACI,EAAA,CAAA,CACE;;;;;AC9IvB,SAAgB,gBAAgB,UAA8B;AAC5D,SAAQ,UAAR;EACE,KAAK,SACH,QAAOC,aAAAA;EACT,KAAK,SACH,QAAOC,aAAAA;EACT,QACE,QAAOC,aAAAA;;;;;ACHb,SAAS,eAAe,SAAyB;CAC/C,MAAM,IAAI,KAAK,MAAM,UAAU,KAAK;CACpC,MAAM,IAAI,KAAK,MAAO,UAAU,OAAQ,GAAG;CAC3C,MAAM,IAAI,KAAK,MAAM,UAAU,GAAG;AAClC,KAAI,IAAI,EACN,QAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI;AACzE,QAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI;;AAG3C,SAAS,mBAAmB,EAAE,OAAwB;CACpD,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAuC,KAAK;CAC7D,MAAM,YAAA,GAAA,MAAA,QAA2C,KAAK;AAEtD,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,QAAM,UAAU;AAChB,QAAM,MAAM;AACZ,QAAM,yBAAyB;AAC7B,OAAI,MAAM,YAAY,SAAS,MAAM,SAAS,CAC5C,aAAY,eAAe,MAAM,SAAS,CAAC;;AAG/C,WAAS,UAAU;AACnB,eAAa;AACX,SAAM,mBAAmB;AACzB,SAAM,MAAM;;IAEb,CAAC,IAAI,CAAC;AAET,KAAI,CAAC,SAAU,QAAO;AAEtB,QACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EAAM,WAAU;YACb;EACI,CAAA;;AAcX,SAAgB,eAAe,EAC7B,OACA,SACA,QACA,YAAY,KACZ,aAC0C;CAC1C,MAAM,gBAAgB,gBAAgB,MAAM,SAAS;AAErD,KAAI,WAAW,OACb,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAWC,YAAAA,GACT,mEACA,UACD;YAEA,SAAS,OAAO,MAAM,aAAa,WAClC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,QAAQ;GACb,KAAK,MAAM;GACX,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,GACA,SAAS,OAAO,MAAM,aAAa,WACrC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,GAAG;GAClC,KAAK,QAAQ,OAAO;GACpB,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,GACA,SAAS,OAAO,MAAM,aAAa,cACrC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,GAAG;GAClC,KAAK,MAAM,QAAQ;GACnB,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,eAAD,EAAe,WAAU,yBAA0B,CAAA;GAC/C,CAAA;EAEJ,CAAA;AAIV,KAAI,WAAW,UACb,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAWA,YAAAA,GACT,4DACA,UACD;YAEA,SAAS,OAAO,MAAM,aAAa,WAClC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,QAAQ;GACb,KAAK,MAAM;GACX,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,GACA,SAAS,OAAO,MAAM,aAAa,WACrC,iBAAA,GAAA,kBAAA,KAAC,SAAD;GACE,KAAK,QAAQ;GACb,UAAA;GACA,OAAA;GACA,UAAA;GACA,WAAU;GACV,CAAA,GACA,SAAS,OAAO,MAAM,aAAa,cACrC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,GAAG;GAClC,KAAK,MAAM;GACX,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,eAAD,EAAe,WAAU,2BAA4B,CAAA;GACjD,CAAA;EAEJ,CAAA;AAKV,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAWA,YAAAA,GACT,mEACA,UACD;YAEA,SAAS,OAAO,MAAM,aAAa,WAClC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,QAAQ;GACb,KAAK,MAAM;GACX,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,GACA,SAAS,OAAO,MAAM,aAAa,WACrC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,GAAG;GAClC,KAAK,MAAM;GACX,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,oBAAD,EAAoB,KAAK,QAAQ,KAAO,CAAA,CACvC,EAAA,CAAA,GACD,SAAS,OAAO,MAAM,aAAa,cACrC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,GAAG;GAClC,KAAK,MAAM;GACX,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,eAAD,EAAe,WAAU,yBAA0B,CAAA;GAC/C,CAAA;EAEJ,CAAA;;;;AChLV,SAAgB,oBAAoB,EAClC,OACA,aAC+C;AAG/C,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAWC,YAAAA,GAAG,iCAHhB,2GAG8D,UAAU;YAErE;EACG,CAAA;;;;ACIV,SAAgB,iBAAiB,EAC/B,UACA,WACA,YAC4C;CAC5C,MAAM,WAAW,aAAa;CAC9B,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,MAAM;AAS3C,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAWC,YAAAA,GAVU,WACrB,aAAa,SACX,mDACA,gCACF,aAAa,SACX,wGACA,mFAI6B;EAC/B,UAAU,MAAM,EAAE,iBAAiB;EACnC,gBAAgB,MAAM,EAAE,iBAAiB;YAExC,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;GACE,MAAK;GACL,eAAe,UAAU,KAAK;GAC9B,WAAU;GACV,cAAW;aAEX,iBAAA,GAAA,kBAAA,KAACC,aAAAA,sBAAD,EAAsB,WAAU,eAAgB,CAAA;GACzC,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;GACE,MAAM;GACN,cAAc;GACd,OAAM;GACN,SAAS,CACP;IAAE,IAAI;IAAW,OAAO;IAAW,UAAU;IAAW,EACxD;IACE,IAAI;IACJ,OAAO;IACP,SAAS;IACT,UAAU;IACX,CACF;GACD,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;GAAqB,WAAU;aAC7B,iBAAA,GAAA,kBAAA,KAACH,aAAAA,sBAAD,EAAsB,WAAU,eAAgB,CAAA;GAC5B,CAAA,EACtB,iBAAA,GAAA,kBAAA,MAACI,YAAAA,qBAAD;GAAqB,WAAU;aAA/B,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;IAAkB,SAAS;cAA3B,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EAAO,WAAU,eAAgB,CAAA,EAAA,UAEhB;OACnB,iBAAA,GAAA,kBAAA,MAACD,YAAAA,kBAAD;IACE,SAAS;IACT,WAAU;cAFZ,CAIE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,YAAD,EAAY,WAAU,eAAgB,CAAA,EAAA,SAErB;MACC;KACT,EAAA,CAAA;EAEb,CAAA;;;;ACpDV,SAAS,eACP,UACA,eACQ;AACR,KAAI,aAAa,OACf,QAAO;AAET,KAAI,iBAAiB,GACnB,QAAO;AAET,KAAI,iBAAiB,GACnB,QAAO;AAET,KAAI,iBAAiB,GACnB,QAAO;AAET,KAAI,iBAAiB,GACnB,QAAO;AAET,KAAI,iBAAiB,IACnB,QAAO;AAET,KAAI,iBAAiB,IACnB,QAAO;AAET,QAAO;;AAGT,SAAgB,iBAAoB,EAClC,OACA,UACA,eACA,kBACA,iBACA,SACA,eACA,sBACA,uBACA,YAC+C;CAC/C,MAAM,cAAc,eAAe,UAAU,cAAc;CAE3D,MAAM,cAAc,MAA2B,UAAkB;EAC/D,MAAM,eAAe,MAAwB;AAC3C,KAAE,gBAAgB;AAClB,WAAQ,GAAG,KAAK,IAAI,MAAM;;EAE5B,MAAM,oBAAoB,iBACrB,MAAwB;AACvB,KAAE,gBAAgB;AAClB,KAAE,iBAAiB;AACnB,iBAAc,GAAG,KAAK,IAAI,MAAM;MAElC,KAAA;EAEJ,MAAM,UACJ,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;GACG,wBAAwB,KAAK;GAC7B,aAAa,SACZ,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,gBAAgB,KAAK,KAAK,OAAO;KAC9B,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,KAAK;MACJ,CAAA,EACH,KAAK,YAAY,QAAQ,KAAK,aAAa,MAC1C,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,KAAK;MACJ,CAAA,CAEF;OACF;QAEN,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,gBAAgB,KAAK,KAAK,OAAO;IAC9B,CAAA,EACL,oBACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV,KAAK;KACJ,CAAA,EACH,KAAK,YACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV,KAAK;KACJ,CAAA,CAEF;MAEP,EAAA,CAAA;GAEJ,KAAK,cAAc,KAAK,iBAAiB,KACxC,iBAAA,GAAA,kBAAA,KAAC,qBAAD,EAAqB,OAAO,KAAK,gBAAkB,CAAA;GAEpD,uBAAuB,KAAK;GAC5B,EAAA,CAAA;AAGL,SACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,MAAK;GACL,UAAU;GACV,WAAWC,YAAAA,GACT,2EACA,sBAAsB,KAAK,WAAW,EACtC,aAAa,UAAU,6BACxB;GACD,SAAS;GACT,eAAe;GACf,YAAY,MAAM;AAChB,QAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,OAAE,gBAAgB;AAClB,aAAQ,GAAkC,KAAK,IAAI,MAAM;;;aAI5D;GACG,CAAA;;AAIV,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAWA,YAAAA,GAAG,cAAc,YAAY;YAC1C,MAAM,KAAK,MAAM,UAAU;GAC1B,MAAM,OAAO,WAAW,MAAM,MAAM;GACpC,MAAM,UAAU,WAAW,SAAS,MAAM,KAAK,GAAG;AAClD,UAAO,iBAAA,GAAA,kBAAA,KAACC,MAAAA,QAAM,UAAP,EAAA,UAA+B,SAAyB,EAAnC,KAAK,GAA8B;IAC/D;EACE,CAAA;;;;ACtEV,SAAS,uBAAuB,aAA0C;AACxE,KAAI,gBAAgB,IAClB,QAAO,CAAC;EAAE,OAAO;EAAc,MAAM;EAAK,WAAW;EAAM,CAAC;CAK9D,MAAM,YAHa,YAAY,SAAS,KAAK,GACzC,YAAY,MAAM,GAAG,GAAG,GACxB,aACwB,MAAM,IAAI,CAAC,QAAQ,MAAmB,QAAQ,EAAE,CAAC;AAC7E,KAAI,SAAS,WAAW,EACtB,QAAO,CAAC;EAAE,OAAO;EAAc,MAAM;EAAK,WAAW;EAAM,CAAC;CAE9D,MAAM,SAA8B,CAClC;EAAE,OAAO;EAAc,MAAM;EAAK,WAAW;EAAO,CACrD;CACD,IAAI,UAAU;AACd,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;EACxC,MAAM,UAAU,SAAS;AACzB,YAAU,UAAU,GAAG,QAAQ,GAAG,YAAY;AAC9C,SAAO,KAAK;GACV,OAAO;GACP,MAAM,GAAG,QAAQ;GACjB,WAAW,MAAM,SAAS,SAAS;GACpC,CAAC;;AAEJ,QAAO;;AAGT,MAAa,cAAA,GAAA,MAAA,aAIT,EACE,QACA,kBACA,mBACA,mBACA,mBACA,cAAc,gBAAgB,OAC9B,aAAa,uBACb,gBAAgB,0BAChB,gBAAgB,KAChB,WAAW,QACX,mBAAmB,MACnB,YACA,iBACA,kBACA,cACA,wBAEF,QACG;AACH;CAEA,MAAM,MAAMC,mBAAAA,kBAAkB;CAC9B,MAAM,EAAE,WAAW,UAAU,sBAAsB;CACnD,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CAEpC,MAAM,mBACJ,0BAA0B,KAAA,KAAa,2BACnC;EACE,aAAa;EACb,gBAAgB;EACjB,GACD,KAAA;CAEN,MAAM,EACJ,aACA,gBACA,aACA,eACA,gBACA,qBACA,oBACA,mBACA,gBACA,mBACA,SACA,QACA,WACA,aACA,aACA,UACA,eACE,cAAc,OAAO,gBAAgB,iBAAiB;CAE1D,MAAM,eAAA,GAAA,MAAA,eACE,uBAAuB,YAAY,EACzC,CAAC,YAAY,CACd;CAED,MAAM,gBAAA,GAAA,MAAA,eAA6B;AACjC,MAAI,CAAC,cAAc,CAAC,QAAQ,OAAQ,QAAO,UAAU,EAAE;EACvD,MAAM,SAAS,aAAa,MAAM,MAAM,EAAE,OAAO,WAAW;AAC5D,MAAI,CAAC,OAAQ,QAAO,UAAU,EAAE;AAEhC,SAAO,CAAC,GAAI,UAAU,EAAE,CAAE,CAAC,MAAM,GAAG,MAAM;AACxC,OAAI,OAAO,WAAW,QAAQ;IAC5B,MAAM,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,QAAQ,IAAI,KAAA,GAAW,EAChE,aAAa,QACd,CAAC;AACF,WAAO,OAAO,kBAAkB,QAAQ,MAAM,CAAC;;AAEjD,OAAI,OAAO,WAAW,cAAc;IAGlC,MAAM,OAFM,EAAE,MAAM,MACR,EAAE,MAAM;AAEpB,WAAO,OAAO,kBAAkB,QAAQ,MAAM,CAAC;;AAEjD,UAAO;IACP;IACD,CAAC,QAAQ,WAAW,CAAC;AAExB,EAAA,GAAA,MAAA,iBAAgB;AACd,sBAAoB,YAAY;IAC/B,CAAC,aAAa,kBAAkB,CAAC;AAEpC,EAAA,GAAA,MAAA,iBAAgB;AACd,oBAAkB,WAAW,EAAE,CAAC;IAC/B,CAAC,SAAS,gBAAgB,CAAC;CAE9B,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAAoB,MAAM;CAEvC,MAAM,OAAOC,YAAAA,WAAW,cAAc,EACpC,eAAe,EACb,YAAY,IACb,EACF,CAAC;CAEF,MAAM,EAAE,QAAQ,eAAA,GAAA,sBAAA,aAA0B;EACxC,aAAa,SAA8C;GACzD,MAAM,WAAW,KAAK,KAAK,WACzB,IAAI,4BAA4B,OAAO,CACxC;AACD,UAAO,QAAQ,IAAI,SAAS;;EAE9B,iBAAiB;AACf,SAAM,QAAQ,sCAAsC;AACpD,eAAY,kBAAkB,EAAE,UAAU,aAAa,KAAK,CAAC;AAC7D,QAAK,OAAO;AACZ,WAAQ,MAAM;AACd,mBAAgB;;EAElB,eAAe;AACb,SAAM,MAAM,mCAAmC;;EAElD,CAAC;CAEF,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAyC,KAAK;CAC7D,MAAM,uBAAA,GAAA,MAAA,QAAqC,GAAG;CAC9C,MAAM,0BAAA,GAAA,MAAA,QACJ,KACD;CAED,MAAM,EAAE,QAAQ,mBAAmB,WAAW,gBAAA,GAAA,sBAAA,aAA2B;EACvE,aAAa,cAAsB,IAAI,eAAe,UAAU;EAChE,iBAAiB;AACf,SAAM,QAAQ,6BAA6B;AAC3C,eAAY,kBAAkB,EAAE,UAAU,aAAa,KAAK,CAAC;;EAE/D,eAAe;AACb,SAAM,MAAM,0BAA0B;;EAEzC,CAAC;CAEF,MAAM,EAAE,QAAQ,oBAAoB,WAAW,kBAAA,GAAA,sBAAA,aAC7C;EACE,aAAa,cAAsB,IAAI,gBAAgB,UAAU;EACjE,iBAAiB;AACf,SAAM,QAAQ,+BAA+B;AAC7C,eAAY,kBAAkB,EAAE,UAAU,aAAa,KAAK,CAAC;;EAE/D,eAAe;AACb,SAAM,MAAM,2BAA2B;;EAE1C,CACF;CAED,MAAM,oBAAoB,aAA6B;EACrD,MAAM,SAAS,SAAS,YAAY,IAAI;AAExC,UADgB,SAAS,IAAI,SAAS,UAAU,GAAG,OAAO,GAAG,UAC9C,QAAQ,kBAAkB,IAAI,IAAI;;CAGnD,MAAM,mBAAA,GAAA,MAAA,cACH,SAAiC;AAChC,MAAI,CAAC,WAAW;AACd,SAAM,MAAM,2CAA2C;AACvD;;AAYF,SAViB,oBAAoB,CAAC,KAAK,SAAS;GAClD,MAAM,WAAW,UAAU,UAAU,GAAG;GACxC,MAAM,OAAO,iBAAiB,KAAK,SAAS,UAAU;AAEtD,UAAO;IACL,MAAM,KAAK;IACX,aAAa,CAAC,GAAG,WAAW,KAAK,WAAW,GAAG,OAAO;IACvD;IACD,CAEc;IAElB;EAAC;EAAoB;EAAW;EAAQ;EAAM,CAC/C;CAED,MAAM,6BAAA,GAAA,MAAA,cACH,eAAuB;AAUtB,SATiB,oBAAoB,CAAC,KAAK,SAAS;GAClD,MAAM,OAAO,iBAAiB,KAAK,SAAS,UAAU;AAEtD,UAAO;IACL,MAAM,KAAK;IACX,aAAa,CAAC,GAAG,WAAW,GAAG,OAAO;IACvC;IACD,CAEc;IAElB,CAAC,oBAAoB,OAAO,CAC7B;AAGD,EAAA,GAAA,MAAA,qBACE,YACO;EACL,sBAAsB;AACpB,mBAAgB;;EAElB,wBAAwB;AAEtB,oBADgB,oBAAoB,CACX;;EAE3B,uBAAuB;GACrB,MAAM,UAAU,oBAAoB;AACpC,OAAI,kBACF,mBAAkB,QAAQ;OAE1B,kBAAiB,QAAQ;;EAG7B,0BAA0B;AACxB,UAAO,oBAAoB;;EAE7B,sBAAsB,cAAsB;AAC1C,iBAAc,UAAU;;EAE1B,sBAAsB,UAAkC;AACtD,eAAY,MAAM;;EAEpB,sBAAsB,eAAmC;GACvD,MAAM,cAAc,IAAI,IAAI,WAAW;GACvC,MAAM,WAAqB,EAAE;AAC7B,QAAK,MAAM,SAAS,gBAAgB,EAAE,CACpC,KAAI,YAAY,IAAI,MAAM,WAAW,EAAE;AACrC,gBAAY,MAAM;AAClB,aAAS,KAAK,MAAM,WAAW;;AAGnC,UAAO;;EAET,0BAA0B;AACxB,WAAQ,KAAK;;EAEf,sBAAsB,eAAuB;AAC3C,6BAA0B,WAAW;;EAEvC,kBAAkB,cAAsB;AAEtC,UADc,kBAAkB,IAAI,UAAU,EAChC,OAAO,UAAU,UAAU;;EAE3C,uBAAuB,cAAsB;AAE3C,UADc,kBAAkB,IAAI,UAAU,EAChC,SAAS;;EAEzB,qBAAqB,WAAmB,cAAsB;GAE5D,MAAM,QADQ,kBAAkB,IAAI,UAAU,EACzB;AACrB,OAAI,MACF,KAAI,OAAO,aAAa,EACtB,qBAAoB,OAAO,UAAU;OAErC,aAAY,OAAO,UAAU;;EAIpC,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACR,CACF;CAID,MAAM,wBAAA,GAAA,MAAA,QAA8B,kBAAkB;AACtD,sBAAqB,UAAU;AAG/B,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,SAAS,kBAAkB,EAAE,EAAE;EACrC,MAAM,QAAQ,oBAAoB;EAClC,MAAM,gBAAwC,EAAE;AAChD,oBAAkB,SAAS,OAAO,cAAc;GAC9C,MAAM,IAAI,OAAO,OAAO,UAAU,UAAU;AAC5C,OAAI,IAAI,EAAG,eAAc,aAAa;IACtC;AACF,uBAAqB,UAAU,OAAO,OAAO,cAAc;IAC1D;EAAC;EAAgB;EAAoB;EAAkB,CAAC;CAE3D,MAAM,oBACJ,GACA,OACA,UACG;EACH,MAAM,kBACJ,MAAM,SAAS,MAAM,MAAM,EAAE,MAAM,IAAI,MAAM,SAAS;AAExD,MAAI,EAAE,YAAY,OAAO,aAAa,GAAG;GAEvC,MAAM,OAAO,oBAAoB;GACjC,MAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,MAAM,MAAM,GAAG;GACjD,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,MAAM,GAAG;GAC/C,MAAM,WAAW,cAAc,MAAM,MAAM,KAAK,EAAE,IAAI,EAAE;GACxD,MAAM,WAAW,OAAO,WACpB,KAAK,IAAI,GAAG,OAAO,WAAW,eAAe,OAAO,GACpD,SAAS;GACb,IAAI,QAAQ;AACZ,YAAS,SAAS,MAAgB;AAChC,QAAI,eAAe,SAAS,EAAE,WAAW,CAAE;AAC3C,QAAI,SAAS,SAAU;AAIvB,gBAAY,IAFV,EAAE,SAAS,MAAM,MAAoC,EAAE,MAAM,IAC7D,EAAE,SAAS,KACK,GAAG;AACrB,aAAS;KACT;AACF,uBAAoB,UAAU;AAC9B;;AAGF,OAAK,EAAE,WAAW,EAAE,YAAY,OAAO,aAAa,GAAG;AAErD,OAAI,eAAe,SAAS,MAAM,WAAW,CAC3C,eAAc,MAAM,WAAW;YAE/B,CAAC,OAAO,YACR,eAAe,SAAS,OAAO,SAE/B,aAAY,OAAO,iBAAiB,GAAG;AAEzC,uBAAoB,UAAU;AAC9B;;AAGF,sBAAoB,UAAU;AAE9B,MAAI,eAAe,SAAS,MAAM,WAAW,CAC3C,eAAc,MAAM,WAAW;WAE3B,OAAO,aAAa,EACtB,qBAAoB,OAAO,iBAAiB,GAAG;MAE/C,aAAY,OAAO,iBAAiB,GAAG;;CAK7C,MAAM,oBAAoB,UAAU,KAAK;CAEzC,MAAM,gBAAA,GAAA,MAAA,eAA2D;AAC/D,MAAI,CAAC,cAAc,OAAQ,QAAO,EAAE;AACpC,SAAO,aAAa,KAAK,UAAoB;GAC3C,MAAM,aAAa,eAAe,SAAS,MAAM,WAAW;GAC5D,MAAM,iBAAiB,kBAAkB,MAAM,WAAW;AAC1D,UAAO;IACL,IAAI,MAAM;IACV,MAAM,MAAM,QAAQ;IACpB,UAAU,GAAG,MAAM,SAAS,KAAK,MAAM,UAAU,UAAU,EAAE,WAAW,MAAM,UAAU,UAAU,OAAO,IAAI,MAAM;IACnH;IACA;IACA,KAAK;IACN;IACD;IACD;EAAC;EAAc;EAAgB;EAAkB,CAAC;CAErD,MAAM,qBAAqB;AAEzB,SAAO,KAAK,MADK,OACa,gBAAgB,KAAK;;AAGrD,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAAC,gBAAD;GACQ;GACG;GACT,UAAU;GACJ;GACN,WAAW;GACX,CAAA;EAEF,iBAAA,GAAA,kBAAA,KAAC,aAAD;GACE,MAAM,QAAQ,SAAS;GACvB,aAAa,gBAAgB,QAAQ,KAAK,KAAK;GAC/C,UAAU;GACV,gBACE,kBAAkB,QAAQ,KAAK,cAAc,IAAI,EAC/C,WAAW,aACZ,CAAC;GAEJ,OAAM;GACN,SAAS;GACT,CAAA;EAEF,iBAAA,GAAA,kBAAA,KAAC,aAAD;GACE,aAAY;GACZ,MAAM,QAAQ,SAAS;GACvB,aAAa,gBAAgB,QAAQ,KAAK,KAAK;GAC/C,gBACE,mBAAmB,QAAQ,KAAK,cAAc,IAAI,EAChD,WAAW,aACZ,CAAC;GAEJ,OAAM;GACN,UAAU;GACV,eAAc;GACd,SAAS;GACT,CAAA;EAGF,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;GACE,MAAM,iBAAiB;GACvB,eAAe,SAAS,CAAC,QAAQ,uBAAuB,KAAK;aAE7D,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD;IAAc,WAAW,oBAAoB,KAAA;cAA7C,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD,EAAe,WAAU,yCAA0C,CAAA,EACnE,iBAAA,GAAA,kBAAA,KAAA,YAAA,SAAA;KACE,WAAU;KACV,OAAO,EAAE,QAAQ,KAAO;KACxB,cAAW;eAEV,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,gBAAD;OACE,OAAO;OACP,SACE,aAAa,SAAS,MAAM,MAAM,EAAE,MAAM,IAC1C,aAAa,SAAS;OAExB,QAAO;OACP,CAAA;MACE,CAAA;KAEgB,CAAA,CACb;;GACR,CAAA;EAET,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;IAAgB,WAAU;cACvB,YAAY,KAAK,OAAO,UACvB,iBAAA,GAAA,kBAAA,MAACC,MAAAA,QAAM,UAAP,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KAAgB,WAAU;eACvB,MAAM,YACL,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;MAAgB,WAAU;gBACvB,MAAM;MACQ,CAAA,GAEjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MACL,eAAe,eAAe,MAAM,KAAK;MACzC,WAAWC,YAAAA,GACT,wEACD;gBAEA,MAAM;MACA,CAAA;KAEI,CAAA,EAChB,QAAQ,YAAY,SAAS,KAAK,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA,CAC3C,EAAA,EApBI,MAAM,KAoBV,CACjB;IACa,CAAA,EACN,CAAA,EAEZ,aAAa,cACZ,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,gGAAqG,CAAA,EACpH,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,cAAc,iBAAiB;MAC9B,CAAA,CACA;;IACF,CAAA,GAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACG,SAAS,SAAS,KACjB,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBAAoC;OAE7C,CAAA,EAEL,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACZ,QAAQ,KAAK,WACZ,iBAAA,GAAA,kBAAA,MAACF,YAAAA,QAAD;QACE,SAAQ;QAER,eAAe,eAAe,SAAS,KAAK;QAC5C,WAAU;kBAJZ,CAME,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAACG,aAAAA,YAAD,EAAY,WAAU,yBAA0B,CAAA;SAC5C,CAAA,EACN,iBAAA,GAAA,kBAAA,KAAC,QAAD;SAAM,WAAU;mBACb,OAAO,MAAM,IAAI,CAAC,KAAK;SACnB,CAAA,CACA;UAVF,OAUE,CACT;OACE,CAAA,CACF;;KAGP,cAAc,SAAS,KACtB,iBAAA,GAAA,kBAAA,MAAC,OAAD,EAAA,UAAA;MACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;QAAI,WAAU;kBAAoC;QAE7C,CAAA;OACD,CAAA;MAEN,iBAAA,GAAA,kBAAA,KAAC,kBAAD;OACE,OAAO;OACG;OACK;OACG;OAClB,kBAAkB,KAAK,WAAW;AAGhC,eACE,iBAAA,GAAA,kBAAA,KAAC,gBAAD;SACE,OAAO;SACP,SAJF,IAAI,SAAS,MAAM,MAAM,EAAE,MAAM,IAAI,IAAI,SAAS;SAKxC;SACR,WAAW,cAAc;SACzB,CAAA;;OAGN,UAAU,GAAG,IAAI,UAAU;QACzB,MAAM,QAAQ,eAAe;AAC7B,YAAI,CAAC,MAAO;AACK,iCACf,wBACA,mBACC,MAAM,uBAAuB,EAAE,EAChC,OACA,MACD,CACQ,QAAQ,EAAE;;OAErB,gBAAgB,GAAG,KAAK,UAAU;QAChC,MAAM,QAAQ,eAAe;AAC7B,YAAI,CAAC,MAAO;AACK,iCACf,wBACA,mBACC,MAAM,uBAAuB,EAAE,EAChC,OACA,MACD,CACQ,cAAc,EAAE;;OAE3B,wBAAwB,SACtB,iBAAA,GAAA,kBAAA,KAAC,kBAAD;QACE,OAAO,KAAK;QACZ,UAAU,aAAa,SAAS,SAAS;QACzC,iBACE,UAAU;SAAE,MAAM,KAAK;SAAK,MAAM;SAAW,CAAC;QAEhD,gBACE,UAAU;SAAE,MAAM,KAAK;SAAK,MAAM;SAAU,CAAC;QAE/C,CAAA;OAEJ,WAAW,MAAM,YACf,iBAAA,GAAA,kBAAA,KAACC,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;QAAgB,SAAA;kBAAS;QAAyB,CAAA,EAClD,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UAAiB,KAAK,MAAsB,CAAA,CACpC,EAAA,CAAA,EACM,EALI,KAAK,GAKT;OAEpB,CAAA;MACD,eACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAACP,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,UAAU,MAAM;AACd,WAAE,gBAAgB;AAClB,WAAE,iBAAiB;AACnB,mBAAU;;QAEZ,UAAU;kBAET,aACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACQ,aAAAA,YAAD,EAAY,WAAU,6BAA8B,CAAA,EAAA,aAEnD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,iBAAD,EAAiB,WAAU,gBAAiB,CAAA,EAAA,YAE3C,EAAA,CAAA;QAEE,CAAA;OACL,CAAA;MAEJ,EAAA,CAAA;KAGP,SAAS,WAAW,KACnB,cAAc,WAAW,KACzB,CAAC,aACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAACN,aAAAA,YAAD,EAAY,WAAU,yBAA0B,CAAA;QAC5C,CAAA;OACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;QAAI,WAAU;kBAAyC;QAElD,CAAA;OACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;QAAG,WAAU;kBAAwB;QAGjC,CAAA;OACA;;KAEN;MAEJ;MACF,CAAA;EACL,EAAA,CAAA;EAGR;AAED,WAAW,cAAc;;;ACjuBzB,MAAa,qBAAuD,EAClE,aACA,cACA,gBACA,cACI;AACJ,KAAI,gBAAgB,SAClB,QAAO;AAKT,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eAAsC;KAAkB,CAAA;IAClE,CAAA,EAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,QACE,QAAQ,WAAW,2BAA2B,SAAS,OAAO,GAAG,CAAC,CAClE,KAAK,WACJ,iBAAA,GAAA,kBAAA,MAACO,YAAAA,QAAD;KACE,SAAQ;KAER,eAAe,eAAe,OAAO,GAAG;KACxC,WAAW,wIACT,iBAAiB,OAAO,KACpB,0CACA;eAPR,CAUGC,MAAAA,QAAM,cAAc,OAAO,MAAM,EAChC,WAAW,yBACZ,CAAC,EACF,iBAAA,GAAA,kBAAA,KAAC,QAAD;MAAM,WAAU;gBAAiB,OAAO;MAAa,CAAA,CAC9C;OAZF,OAAO,GAYL,CACT;IACA,CAAA,CAyDF;;EACF,CAAA;;;;AC9FV,MAAM,iBAAyC;CAC7C,MAAM;CACN,MAAM;CACN,YAAY;CACZ,aAAa;CACb,QAAQ;CACT;AASD,MAAa,0BAAiE,EAC5E,SACA,iBACA,SACA,aACI;CACJ,MAAM,gBACJ,KACA,UACG;AACH,kBAAgB;GAAE,GAAG;IAAU,MAAM;GAAO,CAAC;;CAG/C,MAAM,mBACJ,QAAQ,SAAS,MACjB,QAAQ,SAAS,MACjB,QAAQ,eAAe,MACvB,QAAQ,gBAAgB,MACxB,QAAQ,WAAW;AAErB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;KAAM,WAAU;eAAoC;KAAc,CAAA,EACjE,oBACC,iBAAA,GAAA,kBAAA,KAAC,UAAD;KACE,MAAK;KACL,SAAS;KACT,WAAU;eACX;KAEQ,CAAA,CAEP;;GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAD;MAAO,WAAU;gBAAoC;MAAY,CAAA,EACjE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;MACE,OAAO,QAAQ,QAAA;MACf,gBAAgB,UACd,aAAa,QAAQ,UAAA,YAA6B,KAAK,MAAM;gBAHjE,CAME,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD;OAAe,WAAU;iBACvB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD,EAAe,CAAA;OACD,CAAA,EAChB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD;OAAe,WAAU;iBACtB,wBAAwB,KAAK,WAC5B,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD;QAA+B,OAAO,OAAO;kBAC1C,OAAO;QACG,EAFI,OAAO,MAEX,CACb;OACY,CAAA,CACT;QACL;;IA0BF,CAAA;GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;KAAQ,SAAQ;KAAY,MAAK;KAAK,SAAS;eAAQ;KAE9C,CAAA;IACL,CAAA;GACF;;;AAIV,uBAAuB,cAAc;;;ACxCrC,MAAa,oBAAqD,EAChE,aACA,cACA,SACA,SACA,gBACA,iBAAiB,IACjB,mBACA,eAAe,OACf,gBAAgB,KAChB,uBACA,WAAW,QACX,kBACA,mBAAmB,MACnB,0BACA,mBAAmB,OACnB,aAAa,EAAE,EACf,kBACA,uBACA,SACA,iBACA,gBACA,YACA,cACA,sBAAsB,IACtB,wBACA,oBAAoB,OACpB,sBAAsB,YAClB;CACJ,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,UAAiC,MAAM;CACjE,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAwB,MAAM;CAC/C,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,WAAW,aAAa;CAC9B,MAAM,mBACJ,gBAAgB,aACf,iBAAiB,SAAS,iBAAiB;CAC9C,MAAM,sBACJ,gBAAgB,YAAY,iBAAiB;CAC/C,MAAM,QACJ,gBAAgB,WACZ,QAAQ,MAAM,WAAW,OAAO,OAAO,aAAa,EAAE,SACtD,iBACA;CAON,MAAM,oBAAoB,QAAQ,QAAQ,WACxC,2BAA2B,SAAS,OAAO,GAAG,CAC/C;AAOD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KAPF,YACA,gBAAgB,YAChB,mBAAmB,KAAA,KACnB,kBAAkB,SAAS,IAMrB,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MAIL,eAAY;MACZ,iBAAc;MACd,iBAAe;MACf,eAAe,eAAe,KAAK;MACnC,WAAU;gBAVZ,CAYG,OACD,iBAAA,GAAA,kBAAA,KAACC,aAAAA,iBAAD,EAAiB,WAAU,yBAA0B,CAAA,CAC9C;SACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;MACE,MAAM;MACN,cAAc;MACd,OAAM;MACN,SAAS,kBAAkB,KAAK,YAAY;OAC1C,IAAI,OAAO;OACX,OAAO,OAAO;OACd,UAAU,OAAO,OAAO;OACxB,gBAAgB,iBAAiB,OAAO,GAAG;OAC5C,EAAE;MACH,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;MAAM,WAAU;gBACb;MACI,CAAA;KAGR,oBACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;OACE,MAAK;OACL,aAAY;OACZ,OAAO;OACP,WAAW,MAAM,oBAAoB,EAAE,OAAO,MAAM;OACpD,WAAU;OACV,CAAA,EACD,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,mFAAoF,CAAA;OAC/F,CAAA,CAEJ;;KAGP,uBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,KAACA,YAAAA,OAAD;QACE,MAAK;QACL,aAAY;QACZ,OAAO;QACP,WAAW,MAAM,yBAAyB,EAAE,OAAO,MAAM;QACzD,UAAU;QACV,WAAU;QACV,CAAA,EACD,qBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,mFAAoF,CAAA;QAC/F,CAAA,CAEJ;;MACF,CAAA;KAEJ;;GAGL,oBACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MACE,WACE,aAAa,SACT,6DACA;gBAJR;OAOE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;QAAgB,SAAA;kBACd,iBAAA,GAAA,kBAAA,KAACN,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,MAAK;SACL,eAAe;UACb,MAAM,OAAO,KAAK,IAAI,IAAI,gBAAgB,GAAG;AAC7C,kCAAwB,KAAK;;SAE/B,UAAU,iBAAiB,MAAM,aAAa;SAC9C,WAAU;mBAEV,iBAAA,GAAA,kBAAA,KAACO,aAAAA,WAAD,EAAW,WAAU,WAAY,CAAA;SAC1B,CAAA;QACM,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UAAgB,YAAyB,CAAA,CACjC,EAAA,CAAA,EACM,CAAA;OAClB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;QACE,OAAO,CAAC,cAAc;QACtB,gBAAgB,UAAU;AACxB,aAAI,MAAM,OAAO,KAAA,EACf,yBAAwB,MAAM,GAAG;;QAGrC,KAAK;QACL,KAAK;QACL,MAAM;QACN,WAAU;QACV,UAAU,aAAa;QACvB,CAAA;OACF,iBAAA,GAAA,kBAAA,KAACL,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;QAAgB,SAAA;kBACd,iBAAA,GAAA,kBAAA,KAACN,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,MAAK;SACL,eAAe;UACb,MAAM,OAAO,KAAK,IAAI,KAAK,gBAAgB,GAAG;AAC9C,kCAAwB,KAAK;;SAE/B,UAAU,iBAAiB,OAAO,aAAa;SAC/C,WAAU;mBAEV,iBAAA,GAAA,kBAAA,KAACU,aAAAA,UAAD,EAAU,WAAU,WAAY,CAAA;SACzB,CAAA;QACM,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UAAgB,WAAwB,CAAA,CAChC,EAAA,CAAA,EACM,CAAA;OACd;;KAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,wBAAyB,CAAA;KAExC,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;MAAgB,SAAA;gBACd,iBAAA,GAAA,kBAAA,KAACN,YAAAA,QAAD;OACE,SAAQ;OACR,MAAK;OACL,eAAe,2BAA2B,CAAC,iBAAiB;OAC5D,UAAU,aAAa;OACvB,WAAW,wFACT,aAAa,SACT,kCACA,mBACE,6BACA;iBAGR,iBAAA,GAAA,kBAAA,KAACW,aAAAA,UAAD,EAAU,WAAU,WAAY,CAAA;OACzB,CAAA;MACM,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACH,YAAAA,gBAAD,EAAA,UACG,aAAa,SACV,+BACA,mBACE,wBACA,uBACS,CAAA,CACT,EAAA,CAAA,EACM,CAAA;KAElB,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,wBAAyB,CAAA;KAGxC,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;OAAgB,SAAA;iBACd,iBAAA,GAAA,kBAAA,KAACN,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,eAAe,mBAAmB,OAAO;QACzC,WAAW,qFACT,aAAa,SACT,qCACA;kBAGN,iBAAA,GAAA,kBAAA,KAACY,aAAAA,gBAAD,EAAgB,WAAU,eAAgB,CAAA;QACnC,CAAA;OACM,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,gBAAD,EAAA,UAAgB,aAA0B,CAAA,CAClC,EAAA,CAAA,EACM,CAAA,EAClB,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;OAAgB,SAAA;iBACd,iBAAA,GAAA,kBAAA,KAACN,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,eAAe,mBAAmB,OAAO;QACzC,WAAW,qFACT,aAAa,SACT,qCACA;kBAGN,iBAAA,GAAA,kBAAA,KAACa,aAAAA,UAAD,EAAU,WAAU,eAAgB,CAAA;QAC7B,CAAA;OACM,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACL,YAAAA,gBAAD,EAAA,UAAgB,aAA0B,CAAA,CAClC,EAAA,CAAA,EACM,CAAA,CACd;;KAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,wBAAyB,CAAA;KAEvC,iBAAiB,SAChB,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;MAAgB,SAAA;gBACd,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,WAAU;iBACb,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACN,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,UAAU,CAAC;QACX,WAAU;QACV,eAAe,qBAAqB,KAAK;kBAEzC,iBAAA,GAAA,kBAAA,KAACc,aAAAA,gBAAD,EAAgB,WAAU,WAAY,CAAA;QAC/B,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACZ,0BAAAA,mBAAD;QACE,MAAM;QACN,cAAc;QACd,OAAM;QACN,SAAS,CACP;SACE,IAAI;SACJ,OAAO;SACP,gBAAgB,oBAAoB;SACrC,EACD,GAAG,WAAW,KAAK,YAAY;SAC7B,IAAI;SACJ,OAAO,OAAO,MAAM,IAAI,CAAC,KAAK,IAAI;SAClC,gBAAgB,wBAAwB,OAAO;SAChD,EAAE,CACJ;QACD,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACa,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;QAAqB,SAAA;kBACnB,iBAAA,GAAA,kBAAA,KAAChB,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,UAAU,CAAC;SACX,WAAU;mBAEV,iBAAA,GAAA,kBAAA,KAACc,aAAAA,gBAAD,EAAgB,WAAU,WAAY,CAAA;SAC/B,CAAA;QACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,MAACG,YAAAA,qBAAD;QAAqB,WAAU;kBAA/B,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;SACE,eAAe,oBAAoB;SACnC,WAAU;mBAFZ,CAIE,iBAAA,GAAA,kBAAA,KAACJ,aAAAA,gBAAD,EAAgB,WAAU,gBAAiB,CAAA,EAAA,oBAE1B;YAClB,WAAW,SAAS,KACnB,iBAAA,GAAA,kBAAA,MAACK,YAAAA,iBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,wBAAD;SAAwB,WAAU;mBAAlC,CACE,iBAAA,GAAA,kBAAA,KAACN,aAAAA,gBAAD,EAAgB,WAAU,gBAAiB,CAAA,EAAA,yBAEpB;YACzB,iBAAA,GAAA,kBAAA,KAACO,YAAAA,wBAAD;SAAwB,WAAU;mBAC/B,WAAW,KAAK,WACf,iBAAA,GAAA,kBAAA,MAACH,YAAAA,kBAAD;UAEE,eACE,wBAAwB,OAAO;UAEjC,WAAU;oBALZ,CAOE,iBAAA,GAAA,kBAAA,KAACI,aAAAA,YAAD,EAAY,WAAU,gBAAiB,CAAA,EACtC,OAAO,MAAM,IAAI,CAAC,KAAK,IAAI,OACX;YARZ,OAQY,CACnB;SACqB,CAAA,CACT,EAAA,CAAA,CAEA;UACT,EAAA,CAAA;OAEZ,CAAA;MACQ,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACd,YAAAA,gBAAD,EAAA,UACG,mBACG,mCACA,mCACW,CAAA,CACT,EAAA,CAAA,EACM,CAAA;KAGnB,iBAAiB,SAAS,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,wBAAyB,CAAA;KAGlE,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACR,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MACL,MAAK;MACL,cAAW;MACX,eAAe,eAAe,KAAK;MACnC,WAAW,wFACT,YACC,QAAQ,QACP,QAAQ,QACR,QAAQ,cACR,QAAQ,eACR,QAAQ,UACN,6BACA;gBAGN,iBAAA,GAAA,kBAAA,KAACuB,aAAAA,uBAAD,EAAuB,WAAU,WAAY,CAAA;MACtC,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;MACE,MAAM;MACN,cAAc;MACd,OAAM;gBAEN,iBAAA,GAAA,kBAAA,KAAC,wBAAD;OACE,SAAS,WAAWC;OACpB,kBAAkB,gBAChB,kBAAkB,YAAY;OAEhC,eAAe;AACb,0BAAkB;AAClB,uBAAe,MAAM;;OAEvB,cAAc,eAAe,MAAM;OACnC,CAAA;MACgB,CAAA,CACnB,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD;MAAS,MAAM;MAAa,cAAc;gBAA1C,CACE,iBAAA,GAAA,kBAAA,KAACtB,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;OAAgB,SAAA;iBACd,iBAAA,GAAA,kBAAA,KAACqB,YAAAA,gBAAD;QAAgB,SAAA;kBACd,iBAAA,GAAA,kBAAA,KAAC3B,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,MAAK;SACL,WAAW,wFACT,YACC,QAAQ,QACP,QAAQ,QACR,QAAQ,cACR,QAAQ,eACR,QAAQ,UACN,6BACA;mBAGN,iBAAA,GAAA,kBAAA,KAACuB,aAAAA,uBAAD,EAAuB,WAAU,WAAY,CAAA;SACtC,CAAA;QACM,CAAA;OACF,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACf,YAAAA,gBAAD,EAAA,UAAgB,WAAwB,CAAA,CAChC,EAAA,CAAA,EACM,CAAA,EAClB,iBAAA,GAAA,kBAAA,KAACoB,YAAAA,gBAAD;OAAgB,OAAM;OAAM,WAAU;iBACpC,iBAAA,GAAA,kBAAA,KAAC,wBAAD;QACE,SAAS,WAAWH;QACpB,kBAAkB,MAAM,kBAAkB,EAAE;QAC5C,eAAe;AACb,2BAAkB;AAClB,wBAAe,MAAM;;QAEvB,cAAc,eAAe,MAAM;QACnC,CAAA;OACa,CAAA,CACT;;KAIZ,iBAAA,GAAA,kBAAA,KAACrB,YAAAA,iBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,SAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;MAAgB,SAAA;gBACd,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,WAAU;iBACb,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACN,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,cAAW;QACX,eAAe,YAAY,KAAK;QAChC,WAAU;kBAEV,iBAAA,GAAA,kBAAA,KAAC6B,aAAAA,iBAAD,EAAiB,WAAU,WAAY,CAAA;QAChC,CAAA,EACT,iBAAA,GAAA,kBAAA,KAAC3B,0BAAAA,mBAAD;QACE,MAAM;QACN,cAAc;QACd,OAAM;QACN,SAAS,aAAa,KAAK,YAAY;SACrC,IAAI,OAAO;SACX,OAAO,OAAO;SACd,gBAAgB,eAAe,OAAO,GAAG;SAC1C,EAAE;QACH,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACa,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;QAAqB,SAAA;kBACnB,iBAAA,GAAA,kBAAA,KAAChB,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,WAAU;mBAEV,iBAAA,GAAA,kBAAA,KAAC6B,aAAAA,iBAAD,EAAiB,WAAU,WAAY,CAAA;SAChC,CAAA;QACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,KAACZ,YAAAA,qBAAD;QAAqB,WAAU;kBAC5B,aAAa,KAAK,WACjB,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;SAEE,eAAe,eAAe,OAAO,GAAG;mBAF1C,CAIE,iBAAA,GAAA,kBAAA,KAAC,QAAD;UACE,WACE,eAAe,OAAO,KAClB,gBACA,KAAA;oBAGL,OAAO;UACH,CAAA,EACN,eAAe,OAAO,MACrB,iBAAA,GAAA,kBAAA,KAACY,aAAAA,WAAD,EAAW,WAAU,iCAAkC,CAAA,CAExC;WAfZ,OAAO,GAeK,CACnB;QACkB,CAAA,CACT,EAAA,CAAA;OAEZ,CAAA;MACQ,CAAA,EACjB,iBAAA,GAAA,kBAAA,KAACtB,YAAAA,gBAAD,EAAA,UAAgB,QAAqB,CAAA,CAC7B,EAAA,CAAA,EACM,CAAA;KACd;;GAIR,iBAAA,GAAA,kBAAA,KAACR,YAAAA,QAAD;IAAQ,SAAQ;IAAQ,MAAK;IAAK,SAAS;IAAS,WAAU;cAC5D,iBAAA,GAAA,kBAAA,KAAC+B,aAAAA,OAAD,EAAO,WAAU,WAAY,CAAA;IACtB,CAAA;GACL;;;;;AC9iBV,MAAM,6BAAqD;CACzD,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,OAAO;CACP,MAAM;CACN,OAAO;CACP,eAAe;CAChB;AAED,MAAa,YAAqC,EAChD,QACA,mBACA,mBACA,kBACA,kBACA,aAAa,uBACb,gBAAgB,0BAChB,gBAAgB,KAChB,WAAW,QACX,mBAAmB,MACnB,iBAAiB,kBACjB,YACA,kBACA,cACA,2BACI;CACJ,MAAM,EAAE,qBAAqB,sBAAsB;CACnD,MAAM,sBAAsB,kBAAkB,MAAM,YAAY;CAEhE,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAAmC,GAAG;CAClE,MAAM,qBACJ,0BAA0B,KAAA,KAAa,4BAA4B;CACrE,MAAM,cAAc,qBAChB,wBACA;CACJ,MAAM,iBAAiB,qBACnB,2BACA;CACJ,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA+C,EAAE,CAAC;CACxE,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,EAAE;CACjD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CAErD,MAAM,mBAAA,GAAA,MAAA,eAAgC;AACpC,MAAI,oBAAoB,2BAA2B,kBACjD,QAAO,2BAA2B;AAEpC,MAAI,CAAC,OAAO,kBAAkB,OAAO,eAAe,WAAW,EAC7D;AAEF,OAAK,MAAM,UAAU,OAAO,eAC1B,KAAI,2BAA2B,QAC7B,QAAO,2BAA2B;IAIrC,CAAC,kBAAkB,OAAO,eAAe,CAAC;CAG7C,MAAM,EACJ,MAAM,eACN,WACA,WAAA,GAAA,sBAAA,UACW;EACX,UAAU;GAAC;GAAa;GAAa;GAAiB;GAAoB;EAC1E,eAAe;AACb,OAAI,CAAC,iBACH,OAAM,IAAI,MAAM,sCAAsC;AAExD,UAAO,iBAAiB,MAAM,KAAK;IACjC,cAAc;IACd,MAAM;IACN,UAAU;IACV,QAAQ;IACR,WAAW;IACZ,CAAC;;EAKJ,SAAS,CAAC,CAAC;EACX,WAAW,MAAS;EACrB,CAAC;AAGF,EAAA,GAAA,MAAA,iBAAgB;AACd,mBAAiB,EAAE,CAAC;AACpB,iBAAe,EAAE;AACjB,iBAAe,MAAM;IACpB;EAAC;EAAqB;EAAa;EAAgB,CAAC;CAEvD,MAAM,qBAAqBC,MAAAA,QAAM,OAC/B,GAAG,oBAAoB,GAAG,YAAY,GAAG,mBAAmB,KAC7D;AACD,EAAA,GAAA,MAAA,iBAAgB;AACd,qBAAmB,UAAU,GAAG,oBAAoB,GAAG,YAAY,GAAG,mBAAmB;IACxF;EAAC;EAAqB;EAAa;EAAgB,CAAC;AAGvD,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,cAAe;AAEpB,iBAAe,cAAc,MAAM,QAAQ,KAAK;EAEhD,MAAM,gBAAiB,cAAc,SAAS,EAAE;AAChD,MAAI,cAAc,SAAS,EACzB,mBAAkB,SAAS;GAEzB,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;AACxD,QAAK,MAAM,QAAQ,cACjB,KAAI,IAAI,KAAK,IAAI,KAAK;AAExB,UAAO,MAAM,KAAK,IAAI,QAAQ,CAAC;IAC/B;IAEH,CAAC,cAAc,CAAC;CAGnB,MAAM,YAAA,GAAA,MAAA,aAAuB,YAAY;AACvC,MAAI,CAAC,eAAe,CAAC,iBAAkB;AAEvC,MAAI;AACF,kBAAe,KAAK;GACpB,MAAM,WAAW,cAAc;GAC/B,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,YAAY,GAAG,mBAAmB;GACpF,MAAM,WAAY,MAAM,iBAAiB,MAAM,KAAK;IAClD,cAAc;IACd,MAAM;IACN,UAAU;IACV,QAAQ;IACR,WAAW;IACZ,CAAC;AAEF,OAAI,oBAAoB,mBAAmB,QAAS;AAEpD,kBAAe,SAAS,MAAM,QAAQ,KAAK;AAC3C,kBAAe,SAAS;GAExB,MAAM,gBAAiB,SAAS,SAAS,EAAE;AAC3C,OAAI,cAAc,SAAS,EACzB,mBAAkB,SAAS;IAEzB,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;AACxD,SAAK,MAAM,QAAQ,cACjB,KAAI,IAAI,KAAK,IAAI,KAAK;AAExB,WAAO,MAAM,KAAK,IAAI,QAAQ,CAAC;KAC/B;YAEI;AACR,kBAAe,MAAM;;IAEtB;EACD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,6BAAA,GAAA,MAAA,cACH,UAA4C;EAE3C,IAAI,UAAU;EACd,IAAI,WAAW;EACf,IAAI,WAAW,MAAM;EACrB,IAAI,eAAe;EACnB,IAAI,cAAc;AAIlB,MAAI,MAAM,WAAW;AACnB,aAAU,MAAM;AAChB,cAAW;AACX,cAAW,GAAG,MAAM,MAAM;AAC1B,kBAAe,MAAM,aAAa;AAClC,iBAAc,MAAM,aAAa,QAAQ;aAChC,MAAM,SAAS;AACxB,aAAU,MAAM;AAChB,cAAW;AACX,cAAW,GAAG,MAAM,MAAM;aACjB,MAAM,WAAW;AAC1B,aAAU,MAAM;AAChB,cAAW;AACX,cAAW,GAAG,MAAM,MAAM;;AAG5B,SAAO;GACL,UAAU,MAAM;GAChB,YAAY,SAAS,MAAM;GAC3B,WAAW;GACX,UAAU;GACV,GAAI,eAAe,EAAE,eAAe,cAAc,GAAG,EAAE;GACvD,GAAI,cAAc,EAAe,aAAa,GAAG,EAAE;GACnD,UAAU;IACR,WAAW;IACX,WAAW;IACZ;GACD,eAAe;GAChB;IAEH,EAAE,CACH;CAKD,MAAM,EAAE,OAAO,cAAc,KAAK,eAAe,wBAAwB;CACzE,MAAM,YAAY,iBAAiB,QAAQ,eAAe;CAE1D,MAAM,oBAAA,GAAA,MAAA,cACH,IAAsB,IAAY,WAAmB;EACpD,MAAM,UAAU,SAAS,GAAG,QAAQ,WAAW,GAAG,EAAE,GAAG;AACvD,MAAI,OAAO,MAAM,QAAQ,CAAE;AAE3B,MAAI,WAAW;GACb,MAAM,QAAQ,cAAc,MAAM,MAAM,EAAE,OAAO,QAAQ;AACzD,OAAI,CAAC,MAAO;GACZ,MAAM,SAAS,0BAA0B,MAAM;AAC/C,OAAI,WAAY,WAAW,OAAO,WAAW,CAC3C,YAAY,OAAO,OAAO,WAAW;OAErC,YAAY,IAAI,OAAO;AAEzB;;EAGF,MAAM,aAAa,iBAAiB,SAAS,QAAQ;EACrD,IAAI;AAEJ,MAAI,WACF,kBAAiB,iBAAiB,QAAQ,OAAO,OAAO,QAAQ;WAE5D,OAAO,aAAa,EACtB,kBAAiB,CAAC,QAAQ;WAE1B,OAAO,YACP,iBAAiB,UAAU,OAAO,SAElC;MAEA,kBAAiB,CAAC,GAAG,kBAAkB,QAAQ;AAInD,mBAAiB,eAAe;EAEhC,MAAM,YAAY,IAAI,IAAI,cAAc,KAAK,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAI9D,MAAM,oBAHe,eAClB,KAAK,OAAO,UAAU,IAAI,GAAG,CAAC,CAC9B,QAAQ,MAA2B,KAAK,KAAK,CACT,IAAI,0BAA0B;AACrE,sBAAoB,kBAAkB;IAExC;EACE;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACD,CACF;AAID,OAAA,QAAM,gBAAgB;AACpB,MAAI,CAAC,UACH,qBAAoB,iBAAiB,OAAO;IAE7C;EAAC;EAAW,iBAAiB;EAAQ;EAAkB,CAAC;CAE3D,MAAM,oBAAA,GAAA,MAAA,eAAiC;AACrC,MAAI,CAAC,cAAc,CAAC,cAAc,OAAQ,QAAO;EACjD,MAAM,SAAS,aAAa,MAAM,MAAM,EAAE,OAAO,WAAW;AAC5D,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM;AACvC,OAAI,OAAO,WAAW,QAAQ;IAC5B,MAAM,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,SAAS,IAAI,KAAA,GAAW,EAClE,aAAa,QACd,CAAC;AACF,WAAO,OAAO,kBAAkB,QAAQ,MAAM,CAAC;;AAEjD,OAAI,OAAO,WAAW,cAAc;IAGlC,MAAM,OAFM,EAAE,MAAM,MACR,EAAE,MAAM;AAEpB,WAAO,OAAO,kBAAkB,QAAQ,MAAM,CAAC;;AAEjD,UAAO;IACP;IACD,CAAC,eAAe,WAAW,CAAC;CAE/B,MAAM,gBAAgB,UAA0B;AAC9C,MAAI,MAAM,UAAW,QAAOC,aAAAA;AAC5B,MAAI,MAAM,UAAW,QAAOC,aAAAA;AAC5B,MAAI,MAAM,QAAS,QAAOC,aAAAA;AAC1B,SAAOA,aAAAA;;CAGT,MAAM,wBAAA,GAAA,MAAA,cACH,OAAuB,YAAkC;AACxD,MAAI,MAAM,UACR,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK,MAAM;GACX,KAAK,MAAM;GACX,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA;AAIN,SACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAHc,aAAa,MAAM,EAGjC,EAAW,WAAU,yBAA0B,CAAA;GAC3C,CAAA;IAGV,EAAE,CACH;CAED,MAAM,gBAAA,GAAA,MAAA,eAAiE;AACrE,SAAO,iBAAiB,KAAK,UAAU;GACrC,MAAM,KAAK,SAAS,MAAM;GAC1B,IAAI;GACJ,IAAI;AACJ,OAAI,WAAW;IACb,MAAM,MAAM,aAAc,MAAM,WAAW,MAAM,EAAE,eAAe,GAAG;AACrE,iBAAa,OAAO;AACpB,qBAAiB,aAAa,MAAM,IAAI;UACnC;IACL,MAAM,mBAAmB,iBAAiB,QAAQ,MAAM,GAAG;AAC3D,iBAAa,oBAAoB;AACjC,qBAAiB,aAAa,mBAAmB,IAAI;;AAEvD,UAAO;IACL;IACA,MAAM,MAAM,SAAS;IACrB,UAAU,MAAM,QAAQ;IACxB;IACA;IACA,KAAK;IACN;IACD;IACD;EAAC;EAAkB;EAAkB;EAAW;EAAa,CAAC;CAEjE,MAAM,0BAAA,GAAA,MAAA,cACH,IAAsB,KAAa,UAAkB;EACpD,MAAM,QAAQ,iBAAiB;AAC/B,MAAI,MAAO,wBAAuB,MAAM;IAE1C,CAAC,kBAAkB,qBAAqB,CACzC;AAED,KAAI,MACF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cAAuB;IAAwB,CAAA,EAC5D,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cAA6B;IAA0B,CAAA,CAChE;;EACF,CAAA;AAIV,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;IACE,MAAM,CAAC,CAAC;IACR,eAAe,SAAS,CAAC,QAAQ,uBAAuB,KAAK;cAE7D,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD;KAAc,WAAW,oBAAoB,KAAA;eAA7C,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD,EAAe,WAAU,yCAA0C,CAAA,EACnE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD;MACE,WAAU;MACV,OAAO,EAAE,QAAQ,KAAO;gBAEvB,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACZ,aAAa,YACZ,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;SACE,KAAK,aAAa;SAClB,KAAK,aAAa;SAClB,WAAU;SACV,CAAA;QACE,CAAA,GACJ,aAAa,YACf,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,SAAD;SACE,KAAK,aAAa;SAClB,UAAA;SACA,OAAA;SACA,UAAA;SACA,WAAU;SACV,CAAA;QACE,CAAA,GAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CAIM,iBAAA,GAAA,kBAAA,KAFkB,aAAa,aAAa,EAE5C,EAAa,WAAU,2BAA4B,CAAA,EAGvD,iBAAA,GAAA,kBAAA,KAAC,KAAD;SAAG,WAAU;mBACV,aAAa;SACZ,CAAA,CACA;;OAEJ,CAAA;MAEM,CAAA,CACH;;IACR,CAAA;GAGR,CAAC,sBACA,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;KACE,MAAK;KACL,aAAY;KACZ,OAAO;KACP,WAAW,MAAM;AACf,qBAAe,EAAE,OAAO,MAAM;;KAEhC,WAAU;KACV,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,yBAA0B,CAAA;KAC5C,CAAA,CACF;;GAIP,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,mDAAoD,CAAA,EAC1E,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAwB;MAAoB,CAAA,CACrD;;IACF,CAAA,GACJ,cAAc,WAAW,IAC3B,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAACT,aAAAA,WAAD,EAAW,WAAU,yBAA0B,CAAA;MAC3C,CAAA;KACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBAAyC;MAElD,CAAA;KACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,cACG,oCACA;MACF,CAAA;KACA;QAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,kBAAD;KACE,OAAO;KACP,UAAU,YAAY;KACP;KACf,kBAAkB,oBAAoB;KACtC,iBAAiB;KACjB,SAAS;KACT,eAAe;KACf,CAAA,EAGD,eACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAACU,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MACL,SAAS;MACT,UAAU;gBAET,cACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACD,aAAAA,YAAD,EAAY,WAAU,6BAA8B,CAAA,EAAA,aAEnD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,iBAAD,EAAiB,WAAU,gBAAiB,CAAA,EAAA,YAE3C,EAAA,CAAA;MAEE,CAAA;KACL,CAAA,CAEJ;;GAEJ;;;;;AClfV,MAAMC,cAAY;AAElB,SAAgB,kBAAqB,EACnC,aACA,iBACA,aACA,QACA,OACA,UACA,aACA,aACA,cAAc,cACd,QACA,aACA,qBACA,sBACA,wBACA,gBAAgB,KAChB,WAAW,QACX,mBAAmB,QAC6B;CAKhD,MAAM,iBAAiB,OAAO,mBAAmB;CACjD,MAAM,iBAAiB,OAAO,YAAY;CAC1C,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,GAAG;CAClD,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAA8B,GAAG;CACxD,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAA0B,EAAE,CAAC;CAC3C,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAqC,KAAK;CACzD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;AAGrD,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,IAAI,iBAAiB,kBAAkB,YAAY,EAAE,IAAI;AAC/D,eAAa,aAAa,EAAE;IAC3B,CAAC,YAAY,CAAC;CAOjB,MAAM,EACJ,MAAM,WACN,WACA,WAAA,GAAA,sBAAA,UACW;EACX,WAAA,GAAA,MAAA,eATM;GAAC;GAAa;GAAQ;GAAgB;GAAe,EAC3D;GAAC;GAAa;GAAgB;GAAe,CAC9C;EAQC,eACE,OAAO,KAAK;GAAE,QAAQ;GAAgB,QAAQ;GAAM,OAAOA;GAAW,CAAC;EACzE,WAAW,MAAS;EACrB,CAAC;AAGF,EAAA,GAAA,MAAA,iBAAgB;AACd,WAAS,EAAE,CAAC;AACZ,YAAU,KAAK;IACd,CAAC,gBAAgB,eAAe,CAAC;AAEpC,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,UAAW;AAChB,WAAS,UAAU,MAAM;AACzB,YAAU,UAAU,WAAW;IAC9B,CAAC,UAAU,CAAC;CAOf,MAAM,sBAAA,GAAA,MAAA,QAA4B,GAAG,eAAe,GAAG,iBAAiB;AACxE,EAAA,GAAA,MAAA,iBAAgB;AACd,qBAAmB,UAAU,GAAG,eAAe,GAAG;IACjD,CAAC,gBAAgB,eAAe,CAAC;CAEpC,MAAM,EAAE,UAAU,sBAAsB;CAExC,MAAM,YAAA,GAAA,MAAA,aAAuB,YAAY;AACvC,MAAI,CAAC,OAAQ;EACb,MAAM,eAAe;EACrB,MAAM,kBAAkB,GAAG,eAAe,GAAG;AAC7C,MAAI;AACF,kBAAe,KAAK;GACpB,MAAM,OAAO,MAAM,OAAO,KAAK;IAC7B,QAAQ;IACR;IACA,OAAOA;IACR,CAAC;AAEF,OAAI,oBAAoB,mBAAmB,QAAS;AACpD,aAAU,SAAS;IACjB,MAAM,MAAM,IAAI,IAAI,KAAK,IAAI,MAAM,CAAC;IACpC,MAAM,SAAS,CAAC,GAAG,KAAK;AACxB,SAAK,MAAM,MAAM,KAAK,MACpB,KAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAE,QAAO,KAAK,GAAG;AAE1C,WAAO;KACP;AACF,aAAU,KAAK,WAAW;WACnB,KAAK;AAIZ,SAAM,MAAM,uBAAuB,eAAe,IAAI;YAC9C;AACR,kBAAe,MAAM;;IAEtB;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,EAAE,OAAO,cAAc,KAAK,eAAe,wBAAwB;CACzE,MAAM,YAAY,iBAAiB,QAAQ,eAAe;CAE1D,MAAM,YAAA,GAAA,MAAA,cACH,SAA8B;EAC7B,MAAM,KAAK,MAAM,KAAK;EACtB,MAAM,QAAQ,SAAS,KAAK;EAC5B,MAAM,QAAQ,YAAY,KAAK,IAAI;AACnC,SAAO;GACL,UAAU;GACV,YAAY,GAAG,kBAAkB;GACjC,WAAW;GACX,UAAU;GACV,GAAI,QAAQ,EAAE,eAAe,OAAO,GAAG,EAAE;GACzC,UAAU;IACR,WAAW;IACX,WAAW;IACZ;GACD,eAAe;GAChB;IAEH;EAAC;EAAiB;EAAO;EAAU;EAAY,CAChD;CAED,MAAM,cAAA,GAAA,MAAA,cACH,OAAe;AACd,MAAI,UACF,QAAO,aAAc,MAAM,MACxB,MAAM,EAAE,eAAe,GAAG,kBAAkB,KAC9C;AAEH,SAAO,YAAY,SAAS,GAAG;IAEjC;EAAC;EAAW;EAAc;EAAiB;EAAY,CACxD;CAED,MAAM,kBAAA,GAAA,MAAA,cACH,OAAuB;AACtB,MAAI,WAAW;GACb,MAAM,OAAO,GAAG,kBAAkB;AAClC,UAAO,aAAc,MAAM,WAAW,MAAM,EAAE,eAAe,KAAK,GAAG;;AAEvE,SAAO,YAAY,QAAQ,GAAG,GAAG;IAEnC;EAAC;EAAW;EAAc;EAAiB;EAAY,CACxD;CAGD,MAAM,eAAA,GAAA,MAAA,cACH,IAAsB,WAAmB;EAKxC,MAAM,YAAY,OAAO,SACvB,OAAO,WAAW,gBAAgB,GAC9B,OAAO,MAAM,gBAAgB,OAAO,GACpC,QACJ,GACD;AACD,MAAI,OAAO,MAAM,UAAU,CAAE;EAC7B,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM,GAAG,KAAK,UAAU;AACxD,MAAI,CAAC,KAAM;EACX,MAAM,SAAS,SAAS,KAAK;AAE7B,MAAI,WAAW;AACb,OAAI,WAAY,WAAW,OAAO,WAAW,CAC3C,YAAY,OAAO,OAAO,WAAW;OAErC,YAAY,IAAI,OAAO;AAEzB;;EAGF,MAAM,UAAU,YAAY,SAAS,UAAU;EAC/C,IAAI;AACJ,MAAI,QACF,WAAU,YAAY,QAAQ,MAAM,MAAM,UAAU;WAC3C,OAAO,aAAa,EAC7B,WAAU,CAAC,UAAU;WAErB,OAAO,aAAa,KAAA,KACpB,YAAY,UAAU,OAAO,SAE7B;MAEA,WAAU,CAAC,GAAG,aAAa,UAAU;AAEvC,sBAAoB,QAAQ;EAC5B,MAAM,WAAW,IAAI,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;AAK5D,uBAJgB,QACb,KAAK,OAAO,SAAS,IAAI,GAAG,CAAC,CAC7B,QAAQ,OAAgB,MAAM,KAAK,CACnC,IAAI,SAAS,CACa;IAE/B;EACE;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACD,CACF;AAGD,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,UACH,0BAAyB,YAAY,OAAO;IAE7C;EAAC;EAAW,YAAY;EAAQ;EAAuB,CAAC;CAE3D,MAAM,mBAAA,GAAA,MAAA,cACH,SAAY;EACX,MAAM,MAAM,YAAY,KAAK;AAC7B,MAAI,IACF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK;GACL,KAAK,SAAS,KAAK;GACnB,OAAO;GACP,QAAQ;GACR,WAAU;GACV,CAAA;AAGN,SACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,cAAD,EAAc,WAAU,yBAA0B,CAAA;GAC9C,CAAA;IAGV;EAAC;EAAc;EAAa;EAAS,CACtC;CAED,MAAM,gBAAA,GAAA,MAAA,eAEF,MAAM,KAAK,SAAS;EAClB,MAAM,KAAK,MAAM,KAAK;EACtB,MAAM,MAAM,eAAe,GAAG;AAC9B,SAAO;GACL,IAAI,GAAG,kBAAkB;GACzB,MAAM,SAAS,KAAK;GACpB,UAAU,cAAc,KAAK,IAAI,KAAA;GACjC,YAAY,WAAW,GAAG;GAC1B,gBAAgB;GAChB,KAAK;GACN;GACD,EACJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,KAAI,MACF,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,KAAD;GAAG,WAAU;aAAb,CAAoC,mBAAgB,YAAgB;MACpE,iBAAA,GAAA,kBAAA,KAAC,KAAD;GAAG,WAAU;aAA6B;GAA0B,CAAA,CAChE;;AAIV,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACG,kBACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;IACE,MAAK;IACL,aAAa,UAAU,YAAY;IACnC,OAAO;IACP,WAAW,MAAM,eAAe,EAAE,OAAO,MAAM;IAC/C,WAAU;IACV,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,yBAA0B,CAAA;IAC5C,CAAA,CACF;MAGP,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,mDAAoD,CAAA,EAC1E,iBAAA,GAAA,kBAAA,MAAC,KAAD;KAAG,WAAU;eAAb;MAAqC;MAAS;MAAY;MAAO;OAC7D;;GACF,CAAA,GACJ,aAAa,WAAW,IAC1B,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,cAAD,EAAc,WAAU,yBAA0B,CAAA;KAC9C,CAAA;IACN,iBAAA,GAAA,kBAAA,MAAC,MAAD;KAAI,WAAU;eAAd;MAAuD;MACjD;MAAY;MACb;;IACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV,iBACG,oCACA,MAAM,YAAY;KACpB,CAAA;IACA;OAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,kBAAD;IACE,OAAO;IACG;IACK;IACG;IACD;IACjB,SAAS;IACT,CAAA,EACD,UACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;KACE,SAAQ;KACR,MAAK;KACL,SAAS;KACT,UAAU;eAET,cACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACD,aAAAA,YAAD,EAAY,WAAU,6BAA8B,CAAA,EAAA,aAEnD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,iBAAD,EAAiB,WAAU,gBAAiB,CAAA,EAAA,YAE3C,EAAA,CAAA;KAEE,CAAA;IACL,CAAA,CAEJ;KAEJ;;;;;ACjZV,MAAa,YAAqC,UAAU;CAC1D,MAAM,EAAE,qBAAqB,sBAAsB;CACnD,MAAM,SAAS,kBAAkB;AACjC,KAAI,CAAC,OAEH,QAAO;AAET,QACE,iBAAA,GAAA,kBAAA,KAAC,mBAAD;EACE,aAAY;EACZ,iBAAgB;EAChB,aAAY;EACJ;EACR,QAAQ,MAAM,EAAE;EAChB,WAAW,MAAM,EAAE,SAAS,SAAS,EAAE;EACvC,cAAc,MAAM,EAAE,aAAa;EACnC,cAAcC,aAAAA;EACd,GAAI;EACJ,CAAA;;;;AClBN,MAAa,eAA2C,UAAU;CAChE,MAAM,EAAE,qBAAqB,sBAAsB;CACnD,MAAM,SAAS,kBAAkB;AACjC,KAAI,CAAC,OAAQ,QAAO;AACpB,QACE,iBAAA,GAAA,kBAAA,KAAC,mBAAD;EACE,aAAY;EACZ,iBAAgB;EAChB,aAAY;EACJ;EACR,QAAQ,MAAM,EAAE;EAChB,WAAW,MAAM,EAAE,QAAQ,YAAY,EAAE;EACzC,cAAc,MAAM,EAAE,aAAa;EACnC,cAAc,MAAO,EAAE,QAAQ,IAAI,EAAE,UAAU,KAAA;EAC/C,cAAcC,aAAAA;EACd,GAAI;EACJ,CAAA;;;;AChBN,MAAa,sBACX,UACG;CACH,MAAM,EAAE,qBAAqB,sBAAsB;CACnD,MAAM,SAAS,kBAAkB;AACjC,KAAI,CAAC,OAAQ,QAAO;AACpB,QACE,iBAAA,GAAA,kBAAA,KAAC,mBAAD;EACE,aAAY;EACZ,iBAAgB;EAChB,aAAY;EACJ;EACR,QAAQ,MAAM,EAAE;EAChB,WAAW,MAAM,EAAE,SAAS,oBAAoB,EAAE;EAClD,cAAc,MAAM,EAAE,aAAa;EACnC,cAAcC,aAAAA;EACd,GAAI;EACJ,CAAA;;;;ACrBN,MAAa,qBACX,YAcG;CACH,MAAM,EAAE,uBAAuB,kCAC7B,WAAW,EAAE;CACf,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAAmC,GAAG;CAClE,MAAM,cAAc,yBAAyB;CAC7C,MAAM,iBACJ,iCAAiC;CACnC,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA8C,EAAE,CAAC;CACvE,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CACzD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,EAAE;CACjD,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAA8B,KAAK;CAC1D,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,0BAErB,IAAI,KAAK,CAAC;CACZ,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CACpC,MAAM,MAAMC,mBAAAA,kBAAkB;CAC9B,MAAM,EAAE,YAAY,UAAU,sBAAsB;CAEpD,MAAM,kBAAA,GAAA,sBAAA,aAA6B;EACjC,aAAa,WAAiC,IAAI,eAAe,OAAO;EACxE,iBAAiB;AACf,eAAY,kBAAkB,EAAE,UAAU,aAAa,KAAK,CAAC;;EAEhE,CAAC;CAEF,MAAM,gBAAA,GAAA,MAAA,aACJ,OAAO,OAAe,OAAO,MAAM;AACjC,MAAI,CAAC,MAAM,MAAM,EAAE;AACjB,oBAAiB,EAAE,CAAC;AACpB,kBAAe,EAAE;AACjB,qBAAkB,KAAK;AACvB;;AAGF,MAAI,SAAS,GAAG;AACd,kBAAe,KAAK;AACpB,kBAAe,EAAE;QAEjB,kBAAiB,KAAK;AAGxB,MAAI;GACF,MAAM,OAAO,MAAM,IAAI,eAAe,OAAO,KAAK;AAElD,qBAAkB,gBAChB,SAAS,IAAI,KAAK,UAAU,CAAC,GAAG,aAAa,GAAG,KAAK,QAAQ,CAC9D;AAED,kBAAe,KAAK;AACpB,qBAAkB,OAAO,KAAK,YAAY;WACnC,KAAK;AACZ,OAAI,SAAS,EACX,kBAAiB,EAAE,CAAC;AAEtB,SAAM,MACJ,eAAe,QAAQ,IAAI,UAAU,yBACtC;YACO;AACR,kBAAe,MAAM;AACrB,oBAAiB,MAAM;;IAG3B,CAAC,KAAK,MAAM,CACb;CAED,MAAM,qBAAA,GAAA,MAAA,aACJ,OAAO,UAAoD;EACzD,MAAM,WAAW,YAAY,MAAM;EACnC,MAAM,WAAW,YAAY,MAAM,GAAG;AAEtC,qBAAmB,SAAS;GAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,QAAK,IAAI,UAAU;IACjB,WAAW;IACX,UAAU;IACV,QAAQ;IACT,CAAC;AACF,UAAO;IACP;AAEF,MAAI;AACF,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,MAAM,iBAAiB,IAAI,IAAI,MAAM,KAAK,QAAQ;AAClD,kBAAe,aAAa,IAAI,MAAM,MAAM;AAC5C,kBAAe,aAAa,IAAI,KAAK,KAAK;GAC1C,MAAM,cAAc,eAAe,UAAU;GAC7C,MAAM,WAAW,MAAM,MAAM,YAAY;AAEzC,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,6BAA6B,SAAS,aAAa;AAGrE,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,MAAM,OAAO,MAAM,SAAS,MAAM;GAClC,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/D,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,MAAM,cAAc,MAAM,eAAe,YAAY;IACnD;IACA,MAAM,sBACJ,MAAM,mBACJ,MAAM,eACN,YAAY,MAAM,KACrB;IACD,aAAa,sCAAsC,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,SAAS;IAC5F,MAAM,CAAC,YAAY,MAAM,KAAK,SAAS;IACxC,CAAC;AAEF,OAAI,CAAC,YAAY,MACf,OAAM,IAAI,MACR,0DACD;AAGH,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,MAAM,QAAQ,YAAY;GAC1B,MAAM,UAAU,eAAe,OAAO,WAAW;AAEjD,UAAO;IACL,UAAU,MAAM;IAChB,YAAY,MAAM;IAClB,WAAW;IACX,UAAU;IACV,UAAU;KACR,WAAW;KACX,WAAW;KACX,YAAY;MACV,OAAO,MAAM;MACb,QAAQ,MAAM;MACf;KACF;IACD,eAAe;IACf,YAAY,MAAM,qBACd,MAAM,mBAAmB,UAAU,GACnC,KAAA;IACL;WACM,OAAO;GACd,MAAM,eACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,SAAM,MAAM,aAAa;AACzB,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACR,OAAO;KACR,CAAC;AACF,WAAO;KACP;AAEF,UAAO;IACL,UAAU;IACV,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;KACR,WAAW;KACX,WAAW;KACX,YAAY;MACV,OAAO,MAAM;MACb,QAAQ,MAAM;MACf;KACF;IACD,eAAe;IAChB;;IAGL;EAAC;EAAgB;EAAY;EAAM,CACpC;CAED,MAAM,iBAAA,GAAA,MAAA,mBAAkC;AACtC,oCAAkB,IAAI,KAAK,CAAC;IAC3B,EAAE,CAAC;CAEN,MAAM,YAAA,GAAA,MAAA,mBAA6B;AACjC,MAAI,YAAY,MAAM,IAAI,kBAAkB,CAAC,cAC3C,cAAa,aAAa,cAAc,EAAE;IAE3C;EAAC;EAAa;EAAgB;EAAe;EAAa;EAAa,CAAC;AAE3E,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB,MAAM,KAAK,eAAe,QAAQ,CAAC;EACnD,aAAa,eAAe;EAC5B;EACA;EACA;EACA;EACD;;;;AC9NH,MAAa,kBAAiD,EAC5D,QACA,gBACA,aAAa,uBACb,qBAAqB,+BACrB,mBACA,wBACI;CACJ,MAAM,EACJ,aACA,eACA,aACA,cACA,mBACA,gBACA,aACA,eACA,gBACA,UACA,kBACE,kBACF,0BAA0B,KAAA,KAAa,gCACnC;EACE;EACA;EACD,GACD,KAAA,EACL;CAED,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA8C,KAAK;AAE3E,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,YAAY,iBAAiB;AACjC,OAAI,YAAY,MAAM,CACpB,cAAa,YAAY;KAE1B,IAAI;AAEP,eAAa,aAAa,UAAU;IACnC,CAAC,aAAa,aAAa,CAAC;AAE/B,EAAA,GAAA,MAAA,iBAAgB;AACd,sBAAoB,YAAY;IAC/B,CAAC,aAAa,kBAAkB,CAAC;AAEpC,EAAA,GAAA,MAAA,iBAAgB;AACd,sBAAoB,YAAY;IAC/B,CAAC,aAAa,kBAAkB,CAAC;CAEpC,MAAM,oBAAoB,OAAO,UAAyB;AACxD,qBAAmB,MAAM,GAAG;AAC5B,iBAAe;EAEf,MAAM,SAAS,MAAM,kBAAkB,MAAM;AAE7C,MAAI,UAAU,OAAO,kBAAkB,SAAS;AAC9C,sBAAmB,KAAK;AACxB,kBAAe,OAAO;QAEtB,oBAAmB,KAAK;;AAI5B,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACG,eACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eAAgB;KAAyB,CAAA;IAClD,CAAA;GAGP,cAAc,SAAS,KACtB,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,cAAc,KAAK,UAClB,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAEE,WAAW,oFAAoF,oBAAoB,MAAM,KAAK,oBAAoB,2CAA2C,GAAG,eAAe,oBAAoB,MAAM,KAAK,eAAe,GAAG;KAChQ,eAAe,CAAC,eAAe,kBAAkB,MAAM;eAHzD;MAKE,iBAAA,GAAA,kBAAA,KAAC,OAAD;OACE,KAAK,MAAM,KAAK;OAChB,KACE,MAAM,mBAAmB,MAAM,eAAe;OAEhD,OAAO;OACP,QAAQ;OACR,WAAU;OACV,UAAU,MAAM;QACd,MAAM,SAAS,EAAE;AACjB,eAAO,MAAM,MAAM,KAAK;;OAE1B,CAAA;MAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD;OACE,WAAU;OACV,OAAO,EACL,iBAAiB,oBAClB;iBAED,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EAAc,WAAU,sBAAuB,CAAA;QAC3C,CAAA;OACF,CAAA;MAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,UAAD,EAAU,WAAU,WAAY,CAAA,EAChC,iBAAA,GAAA,kBAAA,MAAC,QAAD,EAAA,UAAA;SAAM;SACK;SACT,iBAAA,GAAA,kBAAA,KAAC,KAAD;UACE,MAAM,yBAAyB,MAAM,KAAK,SAAS;UACnD,QAAO;UACP,KAAI;UACJ,WAAU;UACV,UAAU,MAAM,EAAE,iBAAiB;oBAElC,MAAM,KAAK;UACV,CAAA;SAAC;SAAI;SACN;SACH,iBAAA,GAAA,kBAAA,KAAC,KAAD;UACE,MAAK;UACL,QAAO;UACP,KAAI;UACJ,WAAU;UACV,UAAU,MAAM,EAAE,iBAAiB;oBACpC;UAEG,CAAA;SACC,EAAA,CAAA,CACH;;OACF,CAAA;MAEL,oBAAoB,MAAM,MAAM,eAC/B,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAACD,aAAAA,cAAD,EAAc,WAAU,8BAA+B,CAAA,EACvD,iBAAA,GAAA,kBAAA,KAAC,KAAD;SAAG,WAAU;mBAAU;SAAgB,CAAA,CACnC;;OACF,CAAA;MAEJ;OAjEC,MAAM,GAiEP,CACN;IACE,CAAA;GAGP,eAAe,CAAC,eAAe,cAAc,WAAW,KACvD,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,KAAD;KAAG,WAAU;eAAb;MAA6B;MACA;MAAY;MACrC;;IACA,CAAA;GAGP,kBAAkB,cAAc,SAAS,KACxC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACE,YAAAA,QAAD;KAAQ,SAAS;KAAU,UAAU;KAAe,SAAQ;eACzD,gBACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,qBAAsB,CAAA,EAAA,aAE3C,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACH,aAAAA,cAAD,EAAc,WAAU,QAAS,CAAA,EAAA,YAEhC,EAAA,CAAA;KAEE,CAAA;IACL,CAAA;GAGP,OAAO,gBAAgB,eAAe,SAAS,KAC9C,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eAAoC;KAAoB,CAAA,EACrE,eAAe,KAAK,aACnB,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAEE,WAAU;eAFZ;MAIE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CASM,iBAAA,GAAA,kBAAA,KANA,SAAS,WAAW,UAChBI,aAAAA,YACA,SAAS,WAAW,UAClBC,aAAAA,oBACAL,aAAAA,cAEN,EACE,WAAW,WACT,SAAS,WAAW,UAChB,mBACA,SAAS,WAAW,UAClB,iBACA,mBAER,CAAA,EAGN,iBAAA,GAAA,kBAAA,KAAC,QAAD;SAAM,WAAU;mBACb,SAAS;SACL,CAAA,CACH;WACN,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBACb,SAAS;QACL,CAAA,CACH;;MAEL,SAAS,WAAW,eACnB,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;QACE,WAAU;QACV,OAAO,EAAE,OAAO,GAAG,SAAS,SAAS,IAAI;QACzC,CAAA;OACE,CAAA;MAGP,SAAS,SACR,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBAA6B,SAAS;OAAU,CAAA;MAE3D;OA7CC,GAAG,SAAS,UAAU,GAAG,SAAS,SA6CnC,CACN,CACE;;GAGR,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KAAmD;KAC9B;KACnB,iBAAA,GAAA,kBAAA,KAAC,KAAD;MACE,MAAK;MACL,QAAO;MACP,KAAI;MACJ,WAAU;gBACX;MAEG,CAAA;KACA;;GACF;;;;;AC1QV,MAAa,qBAKR;CACH,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,0BAErB,IAAI,KAAK,CAAC;CACZ,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CACpC,MAAM,MAAMM,mBAAAA,kBAAkB;CAC9B,MAAM,EAAE,WAAW,YAAY,UAAU,sBAAsB;CAE/D,MAAM,kBAAA,GAAA,sBAAA,aAA6B;EACjC,aAAa,WAAiC,IAAI,eAAe,OAAO;EACxE,iBAAiB;AACf,eAAY,kBAAkB,EAAE,UAAU,aAAa,KAAK,CAAC;;EAEhE,CAAC;CAEF,MAAM,iBAAA,GAAA,MAAA,aACJ,OAAO,KAAa,aAAiD;EACnE,MAAM,WAAW,OAAO,KAAK,KAAK;EAClC,MAAM,cACJ,YACA,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,MAChD;AAEF,qBAAmB,SAAS;GAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,QAAK,IAAI,UAAU;IACjB,WAAW;IACX,UAAU;IACV,QAAQ;IACT,CAAC;AACF,UAAO;IACP;AAEF,MAAI;AACF,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,IAAI;GACJ,IAAI;AAEJ,OAAI;IACF,MAAM,WAAW,MAAM,MAAM,KAAK;KAChC,MAAM;KACN,aAAa;KACd,CAAC;AAEF,QAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,yBAAyB,SAAS,aAAa;AAGjE,WAAO,MAAM,SAAS,MAAM;AAC5B,kBACE,SAAS,QAAQ,IAAI,eAAe,IAAI;YACnC,YAAY;AAOnB,QALE,sBAAsB,cACrB,WAAW,QAAQ,SAAS,OAAO,IAClC,WAAW,QAAQ,SAAS,kBAAkB,IAC9C,WAAW,QAAQ,SAAS,eAAe,GAE9B;AACf,wBAAmB,SAAS;MAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,WAAK,IAAI,UAAU;OACjB,WAAW;OACX,UAAU;OACV,QAAQ;OACT,CAAC;AACF,aAAO;OACP;AAEF,SAAI;MACF,MAAM,gBAAgB,MAAM,IAAI,cAAc,IAAI;MAClD,MAAM,eAAe,KAAK,cAAc,KAAK;MAC7C,MAAM,QAAQ,IAAI,WAAW,aAAa,OAAO;AACjD,WAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,IACvC,OAAM,KAAK,aAAa,WAAW,EAAE;AAEvC,aAAO,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,cAAc,aAAa,CAAC;AAC7D,oBAAc,cAAc;cACrB,YAAY;MACnB,IAAI,SAAS;AACb,UAAI;AACF,gBAAS,IAAI,IAAI,IAAI,CAAC;cAChB;AAGR,YAAM,IAAI,MACR,6BAA6B,OAAO,oEAClC,sBAAsB,QAClB,WAAW,UACX,kBAEP;;UAGH,OAAM;;AAIV,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,MAAM,gBAAgB,iBADF,YAC+B;GAEnD,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnE,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,MAAM,cAAc,MAAM,eAAe,YAAY;IACnD;IACA,MAAM,sBAAsB,cAAc;IAC1C,aAAa,sBAAsB;IACnC;IACD,CAAC;AAEF,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;GAEF,MAAM,QAAQ,YAAY;GAC1B,MAAM,UAAU,eAAe,OAAO,WAAW;AAEjD,UAAO;IACL,UAAU,MAAM;IAChB,YAAY,MAAM;IAClB,WAAW;IACX,UAAU;IACV,UAAU;KACR,WAAW;KACX,WAAW;KACX,WAAW,KAAK;KACjB;IACD,eAAe;IACf,YAAY,MAAM,qBACd,MAAM,mBAAmB,UAAU,GACnC,KAAA;IACL;WACM,OAAO;GACd,MAAM,eACJ,iBAAiB,QAAQ,MAAM,UAAU;AAC3C,SAAM,MAAM,aAAa;AACzB,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,UAAU;KACjB,WAAW;KACX,UAAU;KACV,QAAQ;KACR,OAAO;KACR,CAAC;AACF,WAAO;KACP;AAEF,UAAO;IACL,UAAU;IACV,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;KACR,WAAW;KACX,WAAW;KACZ;IACD,eAAe;IAChB;;IAGL;EAAC;EAAgB;EAAW;EAAY;EAAK;EAAM,CACpD;CAED,MAAM,iBAAA,GAAA,MAAA,mBAAkC;AACtC,oCAAkB,IAAI,KAAK,CAAC;IAC3B,EAAE,CAAC;AAEN,QAAO;EACL;EACA,gBAAgB,MAAM,KAAK,eAAe,QAAQ,CAAC;EACnD,aAAa,eAAe;EAC5B;EACD;;;;AClMH,MAAa,aAAuC,EAClD,QACA,gBACA,wBAAwB,OACxB,mBAAmB,OACnB,mBACA,yBACI;CACJ,MAAM,EAAE,UAAU,sBAAsB;CACxC,MAAM,CAAC,KAAK,WAAA,GAAA,MAAA,UAAmB,GAAG;CAClC,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAwB,GAAG;CAC5C,MAAM,EAAE,eAAe,gBAAgB,aAAa,kBAClD,cAAc;CAEhB,MAAM,eAAe,OAAO,MAAuB;AACjD,IAAE,gBAAgB;AAClB,MAAI,CAAC,IAAI,MAAM,CAAE;AAEjB,iBAAe;AAEf,MAAI;AAEF,OAAI,OAAO,UAAU,OAAO,OAAO,SAAS,EAC1C,KAAI;AAWF,QAAI,CAACC,mBAAAA,oBATY,MAAM,MAAM,IAAI,MAAM,EAAE;KACvC,QAAQ;KACR,MAAM;KACN,aAAa;KACd,CAAC,EAC2B,QAAQ,IAAI,eAAe,IAAI,IAE1D,SAAS,MAAM,IAAI,mBAAmB,IAAI,MAAM,CAAC,EAEC,OAAO,OAAO,EAAE;KAClE,MAAM,oBAAoBC,mBAAAA,4BACxB,OAAO,OACR;AACD,WAAM,MACJ,gDAAgD,kBAAkB,aAAa,CAAC,GACjF;AACD;;YAEK,OAAO;AAGd,QACE,iBAAiB,cAChB,MAAM,QAAQ,SAAS,OAAO,IAC7B,MAAM,QAAQ,SAAS,kBAAkB,IACzC,MAAM,QAAQ,SAAS,eAAe,GACxC;;GAQN,MAAM,SAAS,MAAM,cACnB,IAAI,MAAM,EACV,SAAS,MAAM,IAAI,KAAA,EACpB;AAKD,OAAI,OAAO,kBAAkB,SAAS;AACpC,mBAAe,OAAO;AACtB,WAAO,GAAG;AACV,gBAAY,GAAG;SAIf;WAEK,OAAO;AAId,SAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,gBAAgB;;;CAIzE,MAAM,cAAc,cAA+B;AACjD,MAAI;AACF,OAAI,IAAI,UAAU;AAClB,UAAO;UACD;AACN,UAAO;;;CAIX,MAAM,sBAAsB,cAA8B;AACxD,MAAI;AAIF,WAHe,IAAI,IAAI,UAAU,CACT,SACE,MAAM,IAAI,CAAC,KAAK,IAAI,IAC9B,MAAM,IAAI,CAAC,MAAM;UAC3B;AACN,UAAO;;;CAIX,MAAM,mBAAmB,UAAkB;AACzC,SAAO,MAAM;AACb,MAAI,SAAS,WAAW,MAAM,IAAI,CAAC,UAAU;GAC3C,MAAM,gBAAgB,mBAAmB,MAAM;AAC/C,OAAI,cACF,aAAY,cAAc;;;AAKhC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,UAAD,EAAU,WAAU,yBAA0B,CAAA;KAC1C,CAAA,EACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eAAsC;KAAoB,CAAA,CACpE;;GAIN,iBAAA,GAAA,kBAAA,MAAC,QAAD;IACE,UAAU;IACV,WAAU;cAFZ;KAIE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;QACE,IAAG;QACH,MAAK;QACL,aAAY;QACZ,OAAO;QACP,WAAW,MAAM,gBAAgB,EAAE,OAAO,MAAM;QAChD,UAAU;QACV,UAAA;QACA,WAAW,4CACT,OAAO,CAAC,WAAW,IAAI,GACnB,2EACA;QAEN,CAAA,EACD,OACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACZ,WAAW,IAAI,GACd,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,WAAD,EAAW,WAAU,0BAA2B,CAAA;SAC5C,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,mBAAD,EAAmB,WAAU,wBAAyB,CAAA;SAClD,CAAA;QAEJ,CAAA,CAEJ;UACL,IAAI,MAAM,IAAI,WAAW,IAAI,IAC5B,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;OAAQ,SAAQ;OAAU,MAAK;OAAS,UAAU;iBAC/C,cACC,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,wBAAyB,CAAA,EAC9C,CAAA,GAEH,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,gBAAD,EAAgB,WAAU,WAAY,CAAA,EACrC,CAAA;OAEE,CAAA,CAEP;;KACL,OAAO,CAAC,WAAW,IAAI,IACtB,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAuB;MAA4B,CAAA;KAIjE,OAAO,WAAW,IAAI,IACrB,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OACE,iBAAA,GAAA,kBAAA,MAAC,SAAD;QACE,SAAQ;QACR,WAAU;kBAFZ;SAIE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,UAAD,EAAU,WAAU,6BAA8B,CAAA;;SAElD,iBAAA,GAAA,kBAAA,KAAC,QAAD;UAAM,WAAU;oBAAoC;UAE7C,CAAA;SACD;;OACR,iBAAA,GAAA,kBAAA,KAACN,YAAAA,OAAD;QACE,IAAG;QACH,MAAK;QACL,aACE,mBAAmB,IAAI,IACvB;QAEF,OAAO;QACP,WAAW,MAAM,YAAY,EAAE,OAAO,MAAM;QAC5C,UAAU;QACV,WAAU;QACV,CAAA;OACD,mBAAmB,IAAI,IAAI,CAAC,YAC3B,iBAAA,GAAA,kBAAA,MAAC,KAAD;QAAG,WAAU;kBAAb;SAAqC;SAChB;SACnB,iBAAA,GAAA,kBAAA,KAAC,QAAD;UAAM,WAAU;oBAAe,mBAAmB,IAAI;UAAQ,CAAA;SAC5D;;OAEF;;KAEH;;GAGN,OAAO,gBACN,eAAe,SAAS,MACvB,uBAAuB,KAAA,KACtB,qBAAqB,KACrB,gBACA,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,eAAe,KAAK,UAAU,UAC7B,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAEE,WAAU;eAEV,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;SACE,WAAW,yDACT,SAAS,WAAW,UAChB,iBACA,SAAS,WAAW,UAClB,eACA;mBAWJ,iBAAA,GAAA,kBAAA,KANA,SAAS,WAAW,UAChBC,aAAAA,YACA,SAAS,WAAW,UAClBC,aAAAA,oBACAE,aAAAA,YAEN,EACE,WAAW,WACT,SAAS,WAAW,UAChB,mBACA,SAAS,WAAW,UAClB,iBACA,gCAER,CAAA;SAGF,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;UAAG,WAAU;oBACV,SAAS;UACR,CAAA,EACJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;WAAG,WAAU;qBACV,SAAS,WAAW,cACjB,iBACA,SAAS,WAAW,UAClB,aACA,SAAS;WACb,CAAA,EACH,SAAS,WAAW,eACnB,iBAAA,GAAA,kBAAA,MAAC,QAAD;WAAM,WAAU;qBAAhB,CACG,SAAS,UAAS,IACd;aAEL;YACF;WACF;;OAEL,SAAS,WAAW,eACnB,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;UACE,WAAU;UACV,OAAO,EAAE,OAAO,GAAG,SAAS,SAAS,IAAI;UACzC,CAAA;SACE,CAAA;QACF,CAAA;OAGP,SAAS,SACR,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;SAAG,WAAU;mBAAwB,SAAS;SAAU,CAAA;QACpD,CAAA;OAEJ;;KACF,EAxEC,MAwED,CACN;IACE,CAAA;GAIT,yBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,QAAD;MACE,SAAS;MACT,iBAAiB;MACjB,IAAG;MACH,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,SAAD;MACE,SAAQ;MACR,WAAU;gBACX;MAEO,CAAA,CACJ;;IACF,CAAA;GAEJ;;;;;AC9UV,MAAa,0BAKR;CACH,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,0BAErB,IAAI,KAAK,CAAC;CACZ,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CACpC,MAAM,MAAMC,mBAAAA,kBAAkB;CAC9B,MAAM,EAAE,WAAW,OAAO,eAAe,sBAAsB;CAE/D,MAAM,kBAAA,GAAA,sBAAA,aAA6B;EACjC,aAAa,WAAiC,IAAI,eAAe,OAAO;EACxE,iBAAiB;AACf,eAAY,kBAAkB,EAAE,UAAU,aAAa,KAAK,CAAC;;EAEhE,CAAC;CAEF,MAAM,eAAA,GAAA,MAAA,aACJ,OAAO,UAA+C;EACpD,MAAM,UAA8B,EAAE;AAEtC,OAAK,MAAM,QAAQ,OAAO;GACxB,MAAM,SAAS,GAAG,KAAK,KAAK,GAAG,KAAK,KAAK;AAEzC,sBAAmB,SAAS;IAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,SAAK,IAAI,QAAQ;KACf,WAAW,KAAK;KAChB,UAAU;KACV,QAAQ;KACT,CAAC;AACF,WAAO;KACP;AAEF,OAAI;AACF,uBAAmB,SAAS;KAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,UAAK,IAAI,QAAQ;MACf,WAAW,KAAK;MAChB,UAAU;MACV,QAAQ;MACT,CAAC;AACF,YAAO;MACP;IAEF,MAAM,WAAW,MAAM,eAAe,YAAY;KAChD;KACA,MAAM,sBAAsB,KAAK,KAAK;KACtC,aAAa,4BAA4B,KAAK;KAC9C;KACD,CAAC;AAEF,uBAAmB,SAAS;KAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,UAAK,IAAI,QAAQ;MACf,WAAW,KAAK;MAChB,UAAU;MACV,QAAQ;MACT,CAAC;AACF,YAAO;MACP;IAEF,MAAM,QAAQ,SAAS;IACvB,MAAM,UAAU,eAAe,OAAO,WAAW;AAEjD,YAAQ,KAAK;KACX,UAAU,MAAM;KAChB,YAAY,MAAM;KAClB,WAAW;KACX,UAAU;KACV,UAAU;MACR,WAAW,KAAK;MAChB,WAAWC,mBAAAA,gBAAgB,KAAK;MAChC,WAAW,KAAK;MACjB;KACD,eAAe;KACf,YAAY,MAAM,qBACd,MAAM,mBAAmB,UAAU,GACnC,KAAA;KACL,CAAC;YACK,OAAO;IACd,MAAM,eACJ,iBAAiB,QAAQ,MAAM,UAAU;IAC3C,MAAM,SACJ,iBAAiB,SAAS,YAAY,QACjC,MAA6B,SAC9B,KAAA;AAKN,QAHE,WAAW,OACV,WAAW,OACV,aAAa,aAAa,CAAC,SAAS,YAAY,CAElD,OAAM,MACJ,8DACD;QAED,OAAM,MAAM,aAAa;AAE3B,uBAAmB,SAAS;KAC1B,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,UAAK,IAAI,QAAQ;MACf,WAAW,KAAK;MAChB,UAAU;MACV,QAAQ;MACR,OAAO;MACR,CAAC;AACF,YAAO;MACP;AAEF,YAAQ,KAAK;KACX,UAAU;KACV,YAAY;KACZ,WAAW;KACX,UAAU;KACV,UAAU;MACR,WAAW,KAAK;MAChB,WAAWA,mBAAAA,gBAAgB,KAAK;MAChC,WAAW,KAAK;MACjB;KACD,eAAe;KAChB,CAAC;;;AAIN,SAAO;IAET;EAAC;EAAgB;EAAW;EAAO;EAAW,CAC/C;CAED,MAAM,iBAAA,GAAA,MAAA,mBAAkC;AACtC,oCAAkB,IAAI,KAAK,CAAC;IAC3B,EAAE,CAAC;AAEN,QAAO;EACL;EACA,gBAAgB,MAAM,KAAK,eAAe,QAAQ,CAAC;EACnD,aAAa,eAAe;EAC5B;EACD;;;;ACjHH,MAAa,kBAAiD,EAC5D,QACA,SACA,QACA,WACA,aAAa,iBACb,WAAW,IACX,YAAY,IACZ,WAAW,KACX,YAAY,UACR;CACJ,MAAM,EAAE,UAAU,sBAAsB;CACxC,MAAM,WAAW,aAAa;CAC9B,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,WAA2B;CACxC,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,WAAyC;CAC/D,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAA8B,GAAG;CAChD,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UACnB,mBAAmB,OACpB;CACD,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAwB,EAAE;CAC3C,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAA8B,MAAM;CAC3D,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAAoB,EAAE;CACnC,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAC1B,KACD;CACD,MAAM,UAAA,GAAA,MAAA,QAAkC,KAAK;CAC7C,MAAM,oBAAA,GAAA,MAAA,QAA0C,KAAK;CACrD,MAAM,kBAAA,GAAA,MAAA,QAAwC,KAAK;CAEnD,MAAM,kBAAkB,iBAAiB,SAAS,KAAA,IAAY;CAE9D,MAAM,oBAAA,GAAA,MAAA,eAAiC;EACrC,MAAM,MAAM,OAAO;AACnB,MAAI,CAAC,iBAAiB,CAAC,IAAK,QAAO;EACnC,MAAM,KAAK,IAAI;EACf,MAAM,KAAK,IAAI;EACf,MAAM,KAAK,IAAI;EACf,MAAM,KAAK,IAAI;AACf,MAAI,CAAC,MAAM,CAAC,GAAI,QAAO;EACvB,MAAM,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG;AAC1C,SAAO;GACL,OAAO,KAAK,MAAM,cAAc,QAAQ,QAAQ;GAChD,QAAQ,KAAK,MAAM,cAAc,SAAS,QAAQ;GACnD;IACA,CAAC,cAAc,CAAC;CAGnB,MAAM,aACJ,aAAa,KACb,mBAAmB,SACnB,SAAS,KACT,kBALoB,mBAAmB,WAMvC;AAEF,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,UAAU,WAAW;GACvB,MAAM,SAAS,IAAI,YAAY;AAC/B,UAAO,iBAAiB,cAAc;AACpC,cAAU,OAAO,OAAiB;KAClC;AACF,UAAO,cAAc,UAAU;;AAEjC,MAAI,CAAC,QAAQ;AACX,eAAY,EAAE;AACd,qBAAkB,MAAM;AACxB,WAAQ,EAAE;AACV,mBAAgB,MAAM;AACtB,0BAAuB,KAAK;AAC5B,mBAAgB,mBAAmB,OAAO;;IAE3C;EAAC;EAAQ;EAAW;EAAgB,CAAC;;CAGxC,MAAM,sBAAA,GAAA,MAAA,cAAkC,WAA+B;EACrE,MAAM,MAAM,OAAO;AACnB,MAAI,CAAC,IAAK;EACV,MAAM,EAAE,MAAM,SAAS,eAAe,iBAAiB,mBACrD,IAAI,aACJ,IAAI,cACJ,OACD;AACD,UAAQ,QAAQ;AAChB,mBAAiB,iBAAiB,aAAa,EAAE,EAAE;IAClD,EAAE,CAAC;CAEN,MAAM,eAAA,GAAA,MAAA,mBAAgC;AACpC,MAAI,CAAC,OAAO,QAAS;AACrB,qBAAmB,gBAAgB;IAClC,CAAC,iBAAiB,mBAAmB,CAAC;CAEzC,MAAM,aAAa,YAAY;AAC7B,MAAI,CAAC,OAAO,QAAS;AACrB,kBAAgB,KAAK;AACrB,MAAI;GACF,MAAM,KAAK,OAAO,QAAQ;GAC1B,MAAM,KAAK,OAAO,QAAQ;GAE1B,IAAI,IAAY,IAAY,IAAY;AACxC,OAAI,eAAe;AACjB,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,cAAc;AACnB,SAAK,cAAc;cACV,KACT,KAAI,KAAK,SAAS,KAAK;AACrB,SAAM,KAAK,IAAI,MAAO;AACtB,SAAM,KAAK,IAAI,MAAO;AACtB,SAAM,KAAK,QAAQ,MAAO;AAC1B,SAAM,KAAK,SAAS,MAAO;UACtB;AACL,SAAM,KAAmB;AACzB,SAAM,KAAmB;AACzB,SAAM,KAAmB;AACzB,SAAM,KAAmB;;QAEtB;AACL,SAAK;AACL,SAAK;AACL,SAAK;AACL,SAAK;;GAOP,MAAM,cAAc,MAAM,0BACxB,OAAO,SACP,IACA,IACA;IAAE,GAAG;IAAI,GAAG;IAAI,OAAO;IAAI,QAAQ;IAAI,EACvC,MACA,UACA,gBACA,UAAU,MACV,UAAU,MACV,GACA,UACD;AACD,SAAM,QAAQ,QAAQ,OAAO,YAAY,CAAC;AAC1C,YAAS;WACF,OAAO;AACd,SAAM,MACJ,iBAAiB,QAAQ,MAAM,UAAU,uBAC1C;YACO;AACR,mBAAgB,MAAM;;;CAI1B,MAAM,kBAAkB;AACtB,cAAY,EAAE;AACd,oBAAkB,MAAM;AACxB,UAAQ,EAAE;AACV,kBAAgB,MAAM;AACtB,kBAAgB,mBAAmB,OAAO;AAC1C,qBAAmB,mBAAmB,KAAA,EAAU;;CAGlD,MAAM,cACJ,eAAe,MACZ,MACC,EAAE,UAAU,gBACX,OAAO,EAAE,UAAU,YAAY,EAAE,UAAU,aAC/C,EAAE,SAAS;AAEd,QACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;EAAQ,MAAM;EAAQ,eAAe,SAAS,CAAC,QAAQ,SAAS;EAAE,OAAA;YAChE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,eAAD;GACE,kBAAiB;GACjB,iBAAiB;GACjB,WAAU;aAHZ;IAKE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD;KAAa,WAAU;eAAU;KAAwB,CAAA;IACzD,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACG,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;OACE,SAAQ;OACR,MAAK;OACL,MAAK;OACL,eAAe,gBAAgB,KAAK;iBAJtC,CAMG,aACD,iBAAA,GAAA,kBAAA,KAACC,aAAAA,iBAAD,EAAiB,WAAU,WAAY,CAAA,CAChC;UACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;OACE,MAAM;OACN,cAAc;OACd,OAAM;OACN,SAAS,eAAe,KAAK,YAAY;QACvC,IAAI,OAAO,OAAO,MAAM;QACxB,OAAO,OAAO;QACd,gBAAgB;AACd,yBAAgB,OAAO,MAAM;AAC7B,4BACE,OAAO,UAAU,SAAS,KAAA,IAAY,OAAO,MAC9C;;QAEJ,EAAE;OACH,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,qBAAD;OAAqB,WAAU;iBAA/B,CACG,aACD,iBAAA,GAAA,kBAAA,KAACH,aAAAA,iBAAD,EAAiB,WAAU,WAAY,CAAA,CACnB;UACtB,iBAAA,GAAA,kBAAA,KAACI,YAAAA,qBAAD;OAAqB,WAAU;iBAC5B,eAAe,KAAK,QACnB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,kBAAD;QAEE,eAAe;AACb,yBAAgB,IAAI,MAAM;AAC1B,4BACE,IAAI,UAAU,SAAS,KAAA,IAAY,IAAI,MACxC;;kBAGF,IAAI;QACY,EATZ,OAAO,IAAI,MAAM,CASL,CACnB;OACkB,CAAA,CACT,EAAA,CAAA;MAEjB,iBAAA,GAAA,kBAAA,MAACN,YAAAA,QAAD;OACE,SAAQ;OACR,MAAK;OACL,MAAK;OACL,eAAe,mBAAmB,MAAM,CAAC,EAAE;OAC3C,cAAW;OACX,WAAU;iBANZ,CAQE,iBAAA,GAAA,kBAAA,KAACO,aAAAA,oBAAD,EAAoB,WAAU,WAAY,CAAA,EAC1C,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBAAU;QAAW,CAAA,CAC9B;;MACT,iBAAA,GAAA,kBAAA,MAACP,YAAAA,QAAD;OACE,SAAQ;OACR,MAAK;OACL,MAAK;OACL,eAAe;AACb,qBAAa,MAAM;SACjB,MAAM,OAAO,IAAI;AACjB,aAAI,OAAA,IAAqB,QAAO,OAAO;AACvC,aAAI,OAAA,KAAqB,QAAO,OAAO;AACvC,gBAAO;UACP;;OAEJ,cAAW;OACX,WAAU;iBAbZ,CAeE,iBAAA,GAAA,kBAAA,KAACQ,aAAAA,cAAD,EAAc,WAAU,WAAY,CAAA,EACpC,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBAAU;QAAa,CAAA,CAChC;;MAET,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf;QACE,iBAAA,GAAA,kBAAA,KAACR,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,MAAK;SACL,eACE,SAAS,MAAM,KAAK,IAAI,IAAK,KAAK,OAAO,IAAI,MAAO,GAAG,GAAG,GAAG,CAAC;SAEhE,WAAU;SACV,cAAW;mBAEX,iBAAA,GAAA,kBAAA,KAACS,aAAAA,WAAD,EAAW,WAAU,WAAY,CAAA;SAC1B,CAAA;QACT,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;SACE,KAAK;SACL,KAAK;SACL,MAAM;SACN,OAAO,CAAC,KAAK;SACb,gBAAgB,CAAC,WAAW;AAC1B,cAAI,UAAU,KAAA,EAAW,SAAQ,MAAM;;SAEzC,WAAU;SACV,cAAW;SACX,CAAA;QACF,iBAAA,GAAA,kBAAA,KAACV,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,MAAK;SACL,eACE,SAAS,MAAM,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI,MAAO,GAAG,GAAG,GAAG,CAAC;SAE9D,WAAU;SACV,cAAW;mBAEX,iBAAA,GAAA,kBAAA,KAACW,aAAAA,UAAD,EAAU,WAAU,WAAY,CAAA;SACzB,CAAA;QACT,iBAAA,GAAA,kBAAA,MAAC,QAAD;SACE,WAAU;SACV,eAAA;mBAFF,CAIG,KAAK,MAAM,OAAO,IAAI,EAAC,IACnB;;QACH;;MACF;;IAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,UACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;MACE,KAAK;MACL,WAAU;MACV,OAAO,EACL,OACE,uBAAuB,OACnB,GAAG,oBAAoB,MACvB,QACP;gBAED,iBAAA,GAAA,kBAAA,KAAC,OAAD;OACE,KAAK;OACL,WAAU;iBAEV,iBAAA,GAAA,kBAAA,KAACC,GAAD;QACQ;QACN,WAAW,WAAW,gBAAgB;AACpC,iBAAQ,YAAY;AACpB,0BAAiB,UAAU;AAC3B,yBAAgB,KAAK;;QAEvB,aAAa,MAAM,iBAAiB,EAAE;QACtC,QAAQ;QACE;QACC;QACD;QACC;kBAEX,iBAAA,GAAA,kBAAA,KAAC,OAAD;SACE,KAAK;SACL,KAAI;SACJ,KAAK;SACL,WAAU;SACV,OAAO;UACL,WAAW;WACT,UAAU,SAAS;WACnB,SAAS,KAAK;WACd,iBAAiB,eAAe;WACjC,CACE,OAAO,QAAQ,CACf,KAAK,IAAI;UACZ,iBAAiB;UAClB;SACD,QAAQ;SACR,CAAA;QACQ,CAAA;OACR,CAAA;MACF,CAAA;KAEJ,CAAA;IAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,WAAU;OAAgC,eAAA;iBAC7C,mBACG,GAAG,iBAAiB,MAAM,KAAK,iBAAiB,OAAO,QAAQ,SAAS,OACxE,GAAG,SAAS;OACX,CAAA;MACH,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OACE,iBAAA,GAAA,kBAAA,KAACZ,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,SAAS;QACT,UAAU,gBAAgB,CAAC;QAC3B,WAAU;kBACX;QAEQ,CAAA;OACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,SAAS;QACT,UAAU;QACV,WAAU;kBACX;QAEQ,CAAA;OACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,SAAS;QACT,UAAU,CAAC,QAAQ;QACnB,WAAU;kBAET,eAAe,kBAAkB;QAC3B,CAAA;OACL;QACF;;IACQ;;EACT,CAAA;;;;ACnab,SAASa,iBAAe,OAAuB;AAC7C,KAAI,UAAU,EAAG,QAAO;CACxB,MAAM,IAAI;CACV,MAAM,QAAQ;EAAC;EAAS;EAAM;EAAM;EAAM;EAAK;CAC/C,MAAM,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;AACnD,QAAO,YAAY,QAAQ,KAAK,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,MAAM;;AAavE,MAAa,kBAAiD,EAC5D,QACA,iBACA,wBAAwB,OACxB,mBAAmB,OACnB,mBACA,cAAc,OACd,yBACI;CACJ,MAAM,EAAE,UAAU,sBAAsB;CACxC,MAAM,EAAE,aAAa,gBAAgB,aAAa,kBAChD,mBAAmB;CACrB,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,MAAM;CACnD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CACzD,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAA6C,KAAK;CAC3E,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAAoC,EAAE,CAAC;CAE5D,MAAM,cAAA,GAAA,MAAA,aACJ,OAAO,kBAA0B;AAC/B,gBAAc,MAAM;AACpB,iBAAe;EAEf,MAAM,gBAAgB,OAAO,WACzB,cAAc,MAAM,GAAG,OAAO,SAAS,GACvC;EAIJ,MAAM,mBAAmB;GACvB;GACA;GACA;GACA;GACD;EACD,MAAM,mBAAmB,SAAe;GACtC,MAAM,OAAOC,mBAAAA,gBAAgB,KAAK;AAClC,UAAO,KAAK,WAAW,SAAS,IAAI,CAAC,iBAAiB,SAAS,KAAK;;EAEtE,MAAM,aAAa,cAAc,OAAO,gBAAgB;EACxD,MAAM,gBAAgB,cAAc,QAAQ,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAEtE,MAAI,WAAW,WAAW,KAAK,CAAC,aAAa;AAG3C,mBAAgB,cAAc;AAE9B,uBAAoB,WAAW,MAAM,KAAK;AAC1C,oBAAiB,KAAK;QAItB,iBADgB,MAAM,YAAY,cAAc,CACxB;IAG5B;EAAC;EAAa;EAAiB,OAAO;EAAU;EAAe;EAAY,CAC5E;CAED,MAAM,sBAAA,GAAA,MAAA,aACJ,OAAO,gBAAsB;AAC3B,mBAAiB,MAAM;AAKvB,kBADgB,MAAM,YADL,CAAC,aAAa,GAAG,aAAa,CACJ,CACnB;AAGxB,sBAAoB,KAAK;AACzB,kBAAgB,EAAE,CAAC;IAErB;EAAC;EAAa;EAAiB;EAAa,CAC7C;CAED,MAAM,oBAAA,GAAA,MAAA,mBAAqC;AACzC,mBAAiB,MAAM;AACvB,sBAAoB,KAAK;AAGzB,MAAI,aAAa,SAAS,EACxB,aAAY,aAAa,CAAC,KAAK,gBAAgB;AAEjD,kBAAgB,EAAE,CAAC;IAClB;EAAC;EAAa;EAAiB;EAAa,CAAC;CAEhD,MAAM,sBAAA,GAAA,MAAA,cACH,mBAAoC;AACnC,iBAAe,SAAS,EAAE,MAAM,aAAa;AAC3C,UAAO,SAAS,UAAU;AACxB,QAAI,MAAM,SAAS,iBACjB,OAAM,MACJ,yBAAyB,KAAK,KAAK,KAAKD,iBAAe,KAAK,KAAK,CAAC,qCACnE;aACQ,MAAM,SAAS,oBACxB,OAAM,MACJ,uBAAuB,KAAK,KAAK,iCAClC;aACQ,MAAM,SAAS,iBACxB,OAAM,MACJ,uCAAuC,OAAO,SAAS,OAAO,OAAO,aAAa,IAAI,KAAK,IAAI,aAChG;QAED,OAAM,MAAM,MAAM,QAAQ;KAE5B;IACF;IAEJ,CAAC,OAAO,UAAU,MAAM,CACzB;CAED,MAAM,EAAE,cAAc,eAAe,iBAAiBE,WAAAA,YAAY;EAChE,QAAQ;EACR,iBAAiB,mBACf,mBAAmB,eAAe;EACpC,QAAQ,OAAO,SACX,OAAO,OAAO,QACX,KAAK,SAAS;AAEb,OAAI,KAAK,WAAW,IAAI,EAAE;AAExB,QAAI,SAAS,IAAI,UAAU,EAAE;AAC7B,QAAI,OAAO,KAAK,KAAK;SAGrB,KAAI,QAAQ,EAAE;AAEhB,UAAO;KAET,EAAE,CACH,GACD,KAAA;EACJ,SAAS,OAAO;EAChB,UAAU,OAAO;EACjB,mBAAmB,cAAc,KAAK;EACtC,mBAAmB,cAAc,MAAM;EACxC,CAAC;AAEF,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GAEE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,MAAD;IAAM,WAAU;cACd,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD;KAAa,WAAU;eACrB,iBAAA,GAAA,kBAAA,MAAC,OAAD;MACE,GAAI,cAAc;MAClB,WAAW,sGACT,gBAAgB,aACZ,+CACA,4DACL,GAAG,cAAc,mCAAmC;gBANvD,CAQE,iBAAA,GAAA,kBAAA,KAAC,SAAD,EAAO,GAAI,eAAe,EAAI,CAAA,EAC9B,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf;QAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;UAAK,WAAU;oBACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,aAAD,EAAa,WAAU,qDAAsD,CAAA;UACzE,CAAA;SACF,CAAA;QAGN,iBAAA,GAAA,kBAAA,KAAC,KAAD;SAAG,WAAU;mBAAoC;SAE7C,CAAA;QAEJ,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;SACE,SAAQ;SACR,UAAU;SACV,WAAU;mBAET,cACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,YAAD,EAAY,WAAU,6BAA8B,CAAA,EAAA,eAEnD,EAAA,CAAA,GAEH;SAEK,CAAA;QACL;SACF;;KACM,CAAA;IACT,CAAA;GAGN,OAAO,gBACN,eAAe,SAAS,MACvB,uBAAuB,KAAA,KACtB,qBAAqB,KACrB,gBACA,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,eAAe,KAAK,aACnB,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAEE,WAAU;eAEV,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;SACE,WAAW,yDACT,SAAS,WAAW,UAChB,iBACA,SAAS,WAAW,UAClB,eACA;mBAWJ,iBAAA,GAAA,kBAAA,KANA,SAAS,WAAW,UAChBC,aAAAA,YACA,SAAS,WAAW,UAClBC,aAAAA,oBACAF,aAAAA,YAEN,EACE,WAAW,WACT,SAAS,WAAW,UAChB,mBACA,SAAS,WAAW,UAClB,iBACA,gCAER,CAAA;SAGF,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;UAAG,WAAU;oBACV,SAAS;UACR,CAAA,EACJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;WAAG,WAAU;qBACV,SAAS,WAAW,cACjB,iBACA,SAAS,WAAW,UAClB,aACA,SAAS;WACb,CAAA,EACH,SAAS,WAAW,eACnB,iBAAA,GAAA,kBAAA,MAAC,QAAD;WAAM,WAAU;qBAAhB,CACG,SAAS,UAAS,IACd;aAEL;YACF;WACF;;OAEL,SAAS,WAAW,eACnB,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;UACE,WAAU;UACV,OAAO,EAAE,OAAO,GAAG,SAAS,SAAS,IAAI;UACzC,CAAA;SACE,CAAA;QACF,CAAA;OAGP,SAAS,SACR,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;SAAG,WAAU;mBAAwB,SAAS;SAAU,CAAA;QACpD,CAAA;OAEJ;;KACF,EAxEC,GAAG,SAAS,UAAU,GAAG,SAAS,SAwEnC,CACN;IACE,CAAA;GAIT,yBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,QAAD;MACE,SAAS;MACT,iBAAiB;MACjB,IAAG;MACH,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,SAAD;MACE,SAAQ;MACR,WAAU;gBACX;MAEO,CAAA,CACJ;;IACF,CAAA;GAIP,oBACC,iBAAA,GAAA,kBAAA,KAAC,gBAAD;IACE,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,WAAW;IACX,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;IACX,CAAA;GAEA;;;;;AC5PV,MAAa,qBAAuD,EAClE,cACA,QACA,eACA,YACA,iBACA,sBACA,uBACA,kBACA,mBACA,eACA,4BACA,kBACA,kBACA,wBACA,mBACA,iBACA,iBACA,uBACA,kBACA,oBACA,oBACA,0BACA,qBACA,2BACA,2BACA,iCACA,4BACA,sBACA,sBACA,cAAc,OACd,iBAAiB,IACjB,mBACA,kBACA,qBACA,qBACA,wBACA,2BACA,2BACA,gBAAgB,KAChB,WAAW,QACX,mBAAmB,MACnB,oBACA,kBACA,cACA,sBACA,cACA,sBACA,2BACI;CACJ,MAAM,YAAYC,MAAAA,QAAM,eACf;EACL,GAAG;EACH,gBAAgB,gBAAgB,CAAC,cAAc,GAAG,OAAO;EAC1D,GACD,CAAC,QAAQ,cAAc,CACxB;AACD,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;IACI,iBAAiB,YAAY,iBAAiB,eAC9C,iBAAA,GAAA,kBAAA,KAAC,gBAAD;IACU;IACS;IACM;IACL;IACC;IACN;IACb,oBAAoB;IACpB,CAAA;GAEH,iBAAiB,SAChB,iBAAA,GAAA,kBAAA,KAAC,WAAD;IACU;IACR,gBAAgB;IACO;IACL;IACC;IACnB,oBAAoB;IACpB,CAAA;GAGH,iBAAkB,SACjB,iBAAA,GAAA,kBAAA,KAAC,YAAD;IACE,KAAK;IACL,QAAQ;IACI;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,mBAAmB;IACnB,oBAAoB,YAAY;AACzB,gCAA2B,QAAQ;;IAE1C,mBAAmB;IACnB,cAAc,OAAO;IACrB,aAAa;IACb,gBAAgB;IACD;IACL;IACQ;IACA;IACJ;IACQ;IACtB,CAAA;GAGH,iBAAkB,WACjB,iBAAA,GAAA,kBAAA,KAAC,UAAD;IACU;IACR,uBAAuB;IACvB,mBAAmB;IACA;IACD;IACA;IAClB,aAAa;IACb,gBAAgB;IACD;IACL;IACQ;IAClB,iBAAiB;IACL;IACM;IACJ;IACQ;IACtB,CAAA;GAGH,iBAAiB,WAChB,iBAAA,GAAA,kBAAA,KAAC,UAAD;IACU;IACR,aAAa,mBAAmB,EAAE;IAClC,qBAAqB,0BAA0B;IAC/C,sBAAsB,2BAA2B;IACjD,wBAAwB;IACT;IACL;IACQ;IAClB,CAAA;GAGH,iBAAiB,cAChB,iBAAA,GAAA,kBAAA,KAAC,aAAD;IACU;IACR,aAAa,sBAAsB,EAAE;IACrC,qBAAqB,6BAA6B;IAClD,sBAAsB,8BAA8B;IACpD,wBAAwB;IACT;IACL;IACQ;IAClB,CAAA;GAGH,iBAAiB,sBAChB,iBAAA,GAAA,kBAAA,KAAC,oBAAD;IACU;IACR,aAAa,6BAA6B,EAAE;IAC5C,qBAAqB,oCAAoC;IACzD,sBAAsB,qCAAqC;IAC3D,wBAAwB;IACT;IACL;IACQ;IAClB,CAAA;GAGH,iBAAiB,cAChB,iBAAA,GAAA,kBAAA,KAAC,gBAAD;IACU;IACR,gBAAgB;IAChB,aAAa;IACb,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,CAAA;GAGH,iBAAiB,kBAChB,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,YAAD,EAAY,WAAU,yBAA0B,CAAA;OAC5C,CAAA;MACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBAAsC;OAE/C,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBAA6B;OAEtC,CAAA;MACA;QACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAgB;MAEzB,CAAA;KACA,CAAA,CACF;;GAGP,iBAAiB,eAChB,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,eAAD,EAAe,WAAU,yBAA0B,CAAA;OAC/C,CAAA;MACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBAAsC;OAE/C,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBAA6B;OAEtC,CAAA;MACA;QACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAgB;MAEzB,CAAA;KACA,CAAA,CACF;;GAGP,iBAAiB,cAChB,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,cAAD,EAAc,WAAU,yBAA0B,CAAA;OAC9C,CAAA;MACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBAAsC;OAE/C,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBAA6B;OAEtC,CAAA;MACA;QACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAgB;MAAuC,CAAA;KAChE,CAAA,CACF;;GAGP,iBAAiB,YAChB,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,YAAD,EAAY,WAAU,yBAA0B,CAAA;OAC5C,CAAA;MACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBAAsC;OAE/C,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBAA6B;OAEtC,CAAA;MACA;QACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAgB;MAAqC,CAAA;KAC9D,CAAA,CACF;;GAGP,iBAAiB,aAChB,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,aAAD,EAAa,WAAU,yBAA0B,CAAA;OAC7C,CAAA;MACN,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBAAsC;OAE/C,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBAA6B;OAEtC,CAAA;MACA;QACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAgB;MAAsC,CAAA;KAC/D,CAAA,CACF;;GAEJ;;;;;ACnTV,MAAM,eAAe,aAA6C;AAChE,KAAI,CAAC,SAAU,QAAOC,aAAAA;AACtB,KAAI,SAAS,WAAW,SAAS,CAAE,QAAOC,aAAAA;AAC1C,KAAI,SAAS,WAAW,SAAS,CAAE,QAAOC,aAAAA;AAC1C,QAAOF,aAAAA;;AAGT,MAAM,eAAe,SACnB,QAAQ,KAAK,SAAS,WAAW,WAAW,SAAS,CAAC;AAExD,MAAa,kBAAiD,EAC5D,eACA,cACA,SACA,WACA,mBAAmB,OACnB,WACA,aACA,sBACA,iBACA,oBACA,kBACI;CACJ,MAAM,WAAW,aAAa;CAC9B,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAAmD,KAAK;CAC3E,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAGT,KAAK;CACf,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAA6C,KAAK;CAC3E,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CACzD,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,UAGhB,KAAK;CAEf,MAAM,oBAAA,GAAA,MAAA,cACH,cAAsB;AACrB,MAAI,wBAAwB,iBAAiB;GAC3C,MAAM,QAAQ,qBAAqB,UAAU;AAC7C,OAAI,UAAU,MAAM,UAAU,UAAU,KAAK,GAAG;AAC9C,yBAAqB;KAAE;KAAO;KAAW,CAAC;AAC1C;;;AAGJ,uBAAqB,UAAU;IAEjC;EAAC;EAAsB;EAAiB;EAAmB,CAC5D;CAED,MAAM,uBAAA,GAAA,MAAA,cACH,YAAwB;AACvB,MAAI,mBAAmB;AACrB,qBAAkB,kBAAkB,WAAW,QAAQ,GAAG;AAC1D,wBAAqB,KAAK;;IAG9B,CAAC,mBAAmB,gBAAgB,CACrC;AAGD,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,YAAY,KAAK,YAAY,CAAC,YAAY,WAAW,KAAK,CAC7D;EAEF,IAAI,YAAY;EAChB,MAAM,EAAE,aAAa,WAAW;EAChC,MAAM,WAAW,WAAW,KAAK,SAAS,aAAa;EACvD,MAAM,WAAW,WAAW,KAAK,SAAS,aAAa;AACvD,QAAM,SAAS,CACZ,MAAM,MAAM,EAAE,MAAM,CAAC,CACrB,MAAM,SAAS;AACd,OAAI,UAAW;AAEf,uBADa,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC,CAClC;AACzB,oBAAiB,KAAK;IACtB,CACD,YAAY;AACX,OAAI,CAAC,UAAW,eAAc,KAAK;IACnC;AACJ,eAAa;AACX,eAAY;;IAEb,CAAC,WAAW,CAAC;CAEhB,MAAM,sBAAA,GAAA,MAAA,aACJ,OAAO,gBAAsB;AAC3B,MAAI,YAAY;GACd,MAAM,SAAS,cAAc,WAAW,WAAW,YAAY;AAC/D,OACE,UAAU,QACV,OAAQ,QAA6B,SAAS,WAE9C,OAAO;;AAGX,gBAAc,KAAK;AACnB,sBAAoB,KAAK;AACzB,mBAAiB,MAAM;IAEzB,CAAC,YAAY,YAAY,CAC1B;CAED,MAAM,oBAAA,GAAA,MAAA,mBAAqC;AACzC,gBAAc,KAAK;AACnB,sBAAoB,KAAK;AACzB,mBAAiB,MAAM;IACtB,EAAE,CAAC;AAEN,KAAI,CAAC,aAAa,cAAc,WAAW,EACzC,QAAO;AAGT,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eAAsC;KAAc,CAAA;IAC9D,CAAA;GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,cAAc,KAAK,SAAS;MAC3B,MAAM,UAAU,YAAY,KAAK,IAAI;MACrC,MAAM,mBACJ,cAAc,KAAK,WAAW,KAC7B,sBAAuB,wBAAwB;AAClD,aACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAEE,WAAU;iBAFZ;QAIE,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACZ,KAAK,YACN,KAAK,SAAS,WAAW,WAAW,SAAS,GAC3C,iBAAA,GAAA,kBAAA,KAAC,OAAD;UACE,KAAK,KAAK;UACV,KAAK,KAAK,SAAS;UACnB,OAAO;UACP,QAAQ;UACR,WAAU;UACV,CAAA,GACA,KAAK,YACP,KAAK,SAAS,WAAW,WAAW,SAAS,GAC7C,iBAAA,GAAA,kBAAA,KAAC,OAAD;UACE,KAAK,GAAG,KAAK,SAAS,MAAM,IAAI,CAAC,GAAG;UACpC,KAAK,KAAK,SAAS;UACnB,OAAO;UACP,QAAQ;UACR,WAAU;UACV,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD;UAAK,WAAU;oBACZG,MAAAA,QAAM,cACL,YAAY,KAAK,SAAS,UAAU,EACpC,EACE,WAAW,yBACZ,CACF;UACG,CAAA;SAEJ,CAAA;QAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;UAAG,WAAU;oBACV,KAAK,SAAS;UACb,CAAA,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;UAAG,WAAU;oBACV,KAAK,SAAS,WAAW,MAAM,IAAI,CAAC,IAAI,aAAa,IACpD;UACA,CAAA,CACA;;QAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACG,WACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;UACE,SAAQ;UACR,MAAK;UACL,cAAY,eAAe,KAAK,SAAS;UACzC,WAAU;UACV,UAAU,UAAU;AAClB,iBAAM,iBAAiB;AACvB,yBAAc,KAAK;;oBAGrB,iBAAA,GAAA,kBAAA,KAACC,aAAAA,sBAAD,EAAsB,WAAU,WAAY,CAAA;UACrC,CAAA,GAET,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;UACE,WAAU;UACV,UAAU,MAAM,EAAE,iBAAiB;oBAEnC,iBAAA,GAAA,kBAAA,KAACF,aAAAA,sBAAD,EAAsB,WAAU,WAAY,CAAA;UACxB,CAAA,EACtB,iBAAA,GAAA,kBAAA,MAACG,YAAAA,qBAAD;UAAqB,OAAM;UAAM,WAAU;oBAA3C,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;WACE,UAAU,CAAC;WACX,UAAU,MAAM;AACd,cAAE,iBAAiB;AACnB,gBAAI,WAAW,YAAY,KAAK,CAC9B,eAAc;aACZ,WAAW,KAAK;aAChB;aACD,CAAC;;WAEN,OACE,UACI,KAAA,IACA;qBAbR,CAgBE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,UAAD,EAAU,WAAU,kCAAmC,CAAA,EAAA,aAEtC;cACnB,iBAAA,GAAA,kBAAA,MAACD,YAAAA,kBAAD;WACE,UAAU,CAAC;WACX,UAAU,MAAM;AACd,cAAE,iBAAiB;AACnB,gBAAI,iBACF,kBAAiB,KAAK,WAAW;;qBALvC,CAQE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,YAAD,EACE,WAAW,oBAAoB,mBAAmB,kBAAkB,mBACpE,CAAA,EAAA,iBAEe;aACC;YACT,EAAA,CAAA,EAEjB,iBAAA,GAAA,kBAAA,KAAC,UAAD;UACE,MAAK;UACL,cAAY,UAAU,KAAK,SAAS;UACpC,UAAU,MAAM;AACd,aAAE,iBAAiB;AACnB,wBAAa,KAAK,WAAW;;UAE/B,WAAWC,YAAAA,GACT,4HACA,CAAC,YAAY,oCACd;oBAED,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EAAO,WAAU,WAAY,CAAA;UACtB,CAAA,CACL;;QACF;SArHC,KAAK,WAqHN;OAER;KACE,CAAA;IACF,CAAA;GAEN,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;IACE,MAAM,eAAe;IACrB,eAAe,SAAS;AACtB,SAAI,CAAC,KAAM,eAAc,KAAK;;IAEhC,OAAO,YAAY,SAAS,aAAa;IACzC,SAAS,CACP;KACE,IAAI;KACJ,OAAO;KACP,UAAU,CAAC,cAAc,CAAC,YAAY,WAAW,IAAI,CAAC;KACtD,gBAAgB;AACd,UAAI,cAAc,YAAY,WAAW,IAAI,YAC3C,eAAc;OACZ,WAAW,WAAW;OACtB,MAAM;OACP,CAAC;;KAGP,EACD;KACE,IAAI;KACJ,OAAO;KACP,UACE,CAAC,cACD,CAAC,cAAc,WAAW,WAAW,IACrC,EACE,sBACC,wBAAwB;KAE7B,gBAAgB;AACd,UAAI,WAAY,kBAAiB,WAAW,WAAW;;KAE1D,CACF;IACD,CAAA;GAEF,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAACV,YAAAA,QAAD;KAAQ,SAAQ;KAAY,MAAK;KAAK,SAAS;eAAS;KAE/C,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;KAAQ,SAAQ;KAAU,MAAK;KAAK,SAAS;eAC1C,mBACG,SACA,OAAO,cAAc,OAAO,OAAO,cAAc,WAAW,IAAI,MAAM;KACnE,CAAA,CACL;;GAEL,oBACC,iBAAA,GAAA,kBAAA,KAAC,gBAAD;IACE,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,WAAW;IACX,CAAA;GAGH,qBAAqB,WACpB,iBAAA,GAAA,kBAAA,MAACW,0BAAAA,mBAAD;IACE,MAAM;IACN,eAAe,SAAS,CAAC,QAAQ,qBAAqB,KAAK;IAC3D,OAAM;cAHR,CAKE,iBAAA,GAAA,kBAAA,MAAC,KAAD;KAAG,WAAU;eAAb;MAAqC;MAElC,kBAAkB,MAAM,QAAQ;MAAgB;MAC/C;QACJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACZ,kBAAkB,MAAM,UAAU,KAAK,YACtC,iBAAA,GAAA,kBAAA,MAAC,UAAD;MAEE,MAAK;MACL,eAAe,oBAAoB,QAAQ;MAC3C,WAAU;gBAJZ,CAME,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,QAAQ,aAAa;OACpB,CAAA,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,QAAQ,aAAa;OACpB,CAAA,CACG;QAXF,QAAQ,GAWN,CACT;KACE,CAAA,CACY;QAClB,oBACF,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;IACE,MAAM;IACN,eAAe,SAAS,CAAC,QAAQ,qBAAqB,KAAK;cAE3D,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD,EAAe,WAAU,yCAA0C,CAAA,EACnE,iBAAA,GAAA,kBAAA,MAAA,YAAA,SAAA;KACE,WAAU;KACV,OAAO,EAAE,QAAQ,KAAO;eAF1B;MAIE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;QAAI,WAAU;kBAAsC;QAE/C,CAAA,EACL,iBAAA,GAAA,kBAAA,MAAC,KAAD;QAAG,WAAU;kBAAb;SAA0C;SAEvC,kBAAkB,MAAM,QAAQ;SAAgB;SAC/C;UACA;;MACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACZ,kBAAkB,MAAM,UAAU,KAAK,YACtC,iBAAA,GAAA,kBAAA,KAAC,UAAD;SAEE,MAAK;SACL,eAAe,oBAAoB,QAAQ;SAC3C,WAAU;mBAEV,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;WAAK,WAAU;qBACZ,QAAQ,OACT,kBAAkB,MAAM,aAAa,WACnC,iBAAA,GAAA,kBAAA,KAAC,OAAD;YACE,KAAK,QAAQ;YACb,KAAK,QAAQ;YACb,OAAO;YACP,QAAQ;YACR,WAAU;YACV,CAAA,GACA,kBAAkB,MAAM,aAAa,YACvC,SAAS,MACT,iBAAA,GAAA,kBAAA,KAAC,OAAD;YAAK,WAAU;sBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;aACE,KAAK,GAAG,SAAS,KAAK,MAAM,IAAI,CAAC,GAAG;aACpC,KAAK,QAAQ;aACb,OAAO;aACP,QAAQ;aACR,WAAU;aACV,CAAA;YACE,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;YAAK,WAAU;sBACZf,MAAAA,QAAM,cACL,gBACE,kBAAkB,OAAO,YACvB,UACH,EACD,EAAE,WAAW,yBAAyB,CACvC;YACG,CAAA;WAEJ,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf;YACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;aAAG,WAAU;uBACV,SAAS,aAAa;aACrB,CAAA;YACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;aAAG,WAAU;uBACV,SAAS,aAAa;aACrB,CAAA;YACH,OAAO,QAAQ,UAAU,UAAU,YAClC,OAAO,QAAQ,UAAU,WAAW,YAClC,iBAAA,GAAA,kBAAA,MAAC,KAAD;aAAG,WAAU;uBAAb;cACG,QAAQ,SAAS;cAAM;cAAK;cAC5B,QAAQ,SAAS;cAAO;cACvB;;YAEJ;aACF;;SACC,EAvDF,SAAS,GAuDP,CACT;QACE,CAAA;OACF,CAAA;MACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;SACE,SAAQ;SACR,eAAe,qBAAqB,KAAK;mBAC1C;SAEQ,CAAA;QACL,CAAA;OACF,CAAA;MACkB;OACb,EAAA,CAAA;IACR,CAAA,GACP;GACA;;;;;ACxaV,MAAa,cAAyC,EACpD,QAAQ,cAAc,EAAE,EACxB,iBACA,SACA,MACA,eAAe,OACf,WACA,cAAc,OACd,oBACI;CACJ,MAAM,UAAA,GAAA,MAAA,eAAuB;EAC3B,MAAM,SAAS,uBAAuB,UAAU,YAAY;AAC5D,SAAO,OAAO,UAAU,OAAO,OAAO,uBAAuB,MAAM,EAAE,CAAC;IACrE,CAAC,YAAY,CAAC;CAEjB,MAAM,aAAa,iBAAiB;CACpC,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,gBAAgD;AACnE,MAAI,OAAO,kBAAkB,OAAO,eAAe,SAAS,GAAG;GAC7D,MAAM,UAAU,OAAO;AACvB,OAAI,QAAQ,SAAS,WAAW,CAAE,QAAO;AACzC,UAAO,QAAQ,MAAM;;AAEvB,SAAO;GACP;AAEF,EAAA,GAAA,MAAA,iBAAgB;AACd,MACE,OAAO,kBACP,OAAO,eAAe,SAAS,KAC/B,CAAC,OAAO,eAAe,SAAS,aAAa,CAE7C,iBAAiB,OAAO,eAAe,MAAuB,MAAM;IAErE,CAAC,OAAO,gBAAgB,aAAa,CAAC;CAEzC,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UACtB,EAAE,CACH;CACD,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,UAAiC,EAAE;CAC7D,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UACvB,EAAE,CACH;CACD,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAEvB,EAAE,CAAC;CACL,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAA8B,GAAG;CACxD,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAAgC,GAAG;CAC5D,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAAmC,GAAG;CAClE,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,UAAiC,MAAM;CACjE,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAAmC,MAAM;CACrE,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAAmC,EAAE;CACjE,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UACgBe,eAAkB;CACrD,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UACjB,KAAA,EACD;CACD,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAAoC,EAAE,CAAC;CAC1D,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAA0C,EAAE,CAAC;CACtE,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,UAExB,EAAE,CAAC;CACL,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAAyC,EAAE,CAAC;CACpE,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UACvB,EAAE,CACH;CACD,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,UAAkC,EAAE;CAC/D,MAAM,CAAC,oBAAoB,0BAAA,GAAA,MAAA,UAA4C,EAAE,CAAC;CAC1E,MAAM,CAAC,qBAAqB,2BAAA,GAAA,MAAA,UAE1B,EAAE,CAAC;CACL,MAAM,CAAC,uBAAuB,6BAAA,GAAA,MAAA,UAAqC,EAAE;CACrE,MAAM,CAAC,2BAA2B,iCAAA,GAAA,MAAA,UAEhC,EAAE,CAAC;CACL,MAAM,CAAC,4BAA4B,kCAAA,GAAA,MAAA,UAEjC,EAAE,CAAC;CACL,MAAM,CAAC,8BAA8B,oCAAA,GAAA,MAAA,UAC1B,EAAE;CAEb,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAAgD,EAAE,CAAC;CACxE,MAAM,iBAAA,GAAA,MAAA,QAA6C,KAAK;CACxD,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UACS,KAAK;CACvC,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA6C,KAAK;CAGvE,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,IAAI;CACvD,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAkC,OAAO;CAC1D,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAAgC,KAAK;CAE9D,MAAM,eAAA,GAAA,MAAA,mBAAgC;AACpC,kBAAgB,WAAW;AAC3B,qBAAmB,EAAE,CAAC;AACtB,uBAAqB,EAAE;AACvB,sBAAoB,EAAE,CAAC;AACvB,sBAAoB,EAAE,CAAC;AACvB,oBAAkB,GAAG;AACrB,sBAAoB,GAAG;AACvB,yBAAuB,GAAG;AAC1B,uBAAqB,MAAM;AAC3B,yBAAuB,MAAM;AAC7B,yBAAuB,EAAE;AACzB,sBAAoB,EAAE,CAAC;AACvB,uBAAqB,EAAE,CAAC;AACxB,qBAAmB,EAAE,CAAC;AACtB,sBAAoB,EAAE,CAAC;AACvB,wBAAsB,EAAE;AACxB,wBAAsB,EAAE,CAAC;AACzB,yBAAuB,EAAE,CAAC;AAC1B,2BAAyB,EAAE;AAC3B,+BAA6B,EAAE,CAAC;AAChC,gCAA8B,EAAE,CAAC;AACjC,kCAAgC,EAAE;AAClC,kBAAgB,EAAE,CAAC;AACnB,gBAAcA,eAAkB;AAChC,gBAAc,KAAA,EAAU;AACxB,gBAAc,SAAS,kBAAkB;AACzC,kBAAgB,KAAK;IACpB,CAAC,WAAW,CAAC;CAEhB,MAAM,sBAAA,GAAA,MAAA,cACH,cAA4B;AAG3B,MAAI,CAAC,OAAO,kBAAkB;AAC5B,sBAAmB,EAAE,CAAC;AACtB,wBAAqB,EAAE;AACvB,uBAAoB,EAAE,CAAC;AACvB,uBAAoB,EAAE,CAAC;AACvB,qBAAkB,GAAG;AACrB,0BAAuB,GAAG;AAC1B,wBAAqB,MAAM;AAC3B,0BAAuB,MAAM;AAC7B,0BAAuB,EAAE;AACzB,uBAAoB,EAAE,CAAC;AACvB,wBAAqB,EAAE,CAAC;AACxB,sBAAmB,EAAE,CAAC;AACtB,uBAAoB,EAAE,CAAC;AACvB,yBAAsB,EAAE;AACxB,yBAAsB,EAAE,CAAC;AACzB,0BAAuB,EAAE,CAAC;AAC1B,4BAAyB,EAAE;AAC3B,gCAA6B,EAAE,CAAC;AAChC,iCAA8B,EAAE,CAAC;AACjC,mCAAgC,EAAE;AAClC,iBAAc,SAAS,kBAAkB;;AAE3C,kBAAgB,UAAU;IAE5B,CAAC,OAAO,iBAAiB,CAC1B;CAED,MAAM,uBAAA,GAAA,MAAA,cACH,YAAgC;EAC/B,MAAM,eAAe,QAAQ,QAC1B,WAAW,OAAO,kBAAkB,QACtC;AAED,MAAI,OAAO,aAAa,EACtB,oBAAmB,aAAa,MAAM,GAAG,EAAE,CAAC;MAE5C,qBAAoB,SAAS;GAC3B,MAAM,aAAa,KAAK,SAAS,aAAa;AAC9C,OAAI,OAAO,YAAY,aAAa,OAAO,UAAU;IACnD,MAAM,iBAAiB,OAAO,WAAW,KAAK;AAC9C,WAAO,CAAC,GAAG,MAAM,GAAG,aAAa,MAAM,GAAG,eAAe,CAAC;;AAE5D,UAAO,CAAC,GAAG,MAAM,GAAG,aAAa;IACjC;IAGN,CAAC,OAAO,SAAS,CAClB;CAED,MAAM,uBAAA,GAAA,MAAA,cACH,YAAgC;EAC/B,MAAM,eAAe,QAAQ,QAC1B,WAAW,OAAO,kBAAkB,QACtC;AACD,MAAI,aAAa,WAAW,EAAG;AAC/B,kBAAgB,aAAa;AAC7B,aAAW;IAEb,CAAC,iBAAiB,QAAQ,CAC3B;CAED,MAAM,4BAAA,GAAA,MAAA,cACH,WAA6B;AAC5B,sBAAoB,CAAC,OAAO,CAAC;IAE/B,CAAC,oBAAoB,CACtB;CAED,MAAM,4BAAA,GAAA,MAAA,cAEF,OACA,OACA,kBACG;AACH,uBAAqB,MAAM;AAC3B,sBAAoB,SAAS,EAAE,CAAC;AAChC,sBAAoB,iBAAiB,EAAE,CAAC;IAE1C,EAAE,CACH;CAED,MAAM,8BAAA,GAAA,MAAA,cAA0C,UAAkB;AAChE,yBAAuB,MAAM;IAC5B,EAAE,CAAC;CAEN,MAAM,yBAAA,GAAA,MAAA,cAAqC,SAA6B;AACtE,uBAAqB,KAAK;IACzB,EAAE,CAAC;CAEN,MAAM,6BAAA,GAAA,MAAA,cAAyC,SAAiB;AAC9D,mBAAiB,KAAK;IACrB,EAAE,CAAC;CAEN,MAAM,wBAAA,GAAA,MAAA,cAAoC,SAAmB;AAC3D,cAAY,KAAK;IAChB,EAAE,CAAC;CAEN,MAAM,oBAAA,GAAA,MAAA,cACH,YAAgC;AAC/B,kBAAgB,QAAQ;AACxB,aAAW;IAEb,CAAC,iBAAiB,QAAQ,CAC3B;CAED,MAAM,EAAE,kBAAkB,UAAU,sBAAsB;CAE1D,MAAM,WAAA,GAAA,MAAA,eAKa;EA2FjB,MAAM,mBA1Fa;GACjB;IACE,IAAI;IACJ,OAAO;IACP,MAAMC,aAAAA;IACN,aAAa;IACd;GACD,GAAI,gBACH,OAAO,kBAAkB,OAAO,eAAe,SAAS,QAAQ,GAC7D,CACE;IACE,IAAI;IACJ,OAAO;IACP,MAAMC,aAAAA;IACN,aAAa;IACd,CACF,GACD,EAAE;GACN;IACE,IAAI;IACJ,OAAO;IACP,MAAMC,aAAAA;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAMC,aAAAA;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAMC,aAAAA;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAMC,aAAAA;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAMC,aAAAA;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAM;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAM;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAM;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAM;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAM;IACN,aAAa;IACd;GACD;IACE,IAAI;IACJ,OAAO;IACP,MAAM;IACN,aAAa;IACd;GACF,CAMmC,QAAQ,MAAM;AAChD,OAAI,EAAE,OAAO,QAAS,QAAO,kBAAkB,SAAS;AACxD,OAAI,EAAE,OAAO,WAAY,QAAO,kBAAkB,YAAY;AAC9D,OAAI,EAAE,OAAO,mBACX,QAAO,kBAAkB,oBAAoB;AAC/C,UAAO;IACP;AAEF,MAAI,OAAO,kBAAkB,OAAO,eAAe,SAAS,EAC1D,QAAO,iBAAiB,QAAQ,WAC9B,OAAO,eAAgB,SAAS,OAAO,GAAG,CAC3C;AAGH,SAAO;IACN;EAAC;EAAc,OAAO;EAAgB;EAAiB,CAAC;CAE3D,MAAM,cAAc,iBAAiB;CASrC,MAAM,yBAAA,GAAA,MAAA,gBACG,EAAE,OAAO,cAAc,GAC9B,CAAC,aAAa,CACf;CAMD,MAAM,mBAAA,GAAA,MAAA,QAAyB,aAAa;AAC5C,EAAA,GAAA,MAAA,iBAAgB;AACd,kBAAgB,UAAU;IACzB,CAAC,aAAa,CAAC;CAElB,MAAM,cAAA,GAAA,MAAA,gBACG;EACL,MAAM,SAAS;GAMb,MAAM,UAAU,gBAAgB;AAChC,OAAI,QAAQ,MAAM,MAAM,EAAE,eAAe,KAAK,WAAW,CAAE;AAC3D,OAAI,OAAO,YAAY,QAAQ,UAAU,OAAO,UAAU;AACxD,UAAM,MACJ,wBAAwB,OAAO,SAAS,mBACzC;AACD;;AAEF,oBAAiB,SAAS;AACxB,QAAI,KAAK,MAAM,MAAM,EAAE,eAAe,KAAK,WAAW,CAAE,QAAO;AAC/D,QAAI,OAAO,YAAY,KAAK,UAAU,OAAO,SAAU,QAAO;AAC9D,WAAO,CAAC,GAAG,MAAM,KAAK;KACtB;;EAEJ,SAAS,cAAc;AACrB,oBAAiB,SACf,KAAK,QAAQ,MAAM,EAAE,eAAe,UAAU,CAC/C;;EAEH,aAAa,gBAAgB,EAAE,CAAC;EAChC,aAAa,cACX,gBAAgB,QAAQ,MAAM,MAAM,EAAE,eAAe,UAAU;EACjE,iBAAiB,cACf,gBAAgB,QAAQ,WAAW,MAAM,EAAE,eAAe,UAAU,GACpE;EACH,GACD,CAAC,OAAO,UAAU,MAAM,CACzB;CAOD,MAAM,OACJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,mBAAD;GACE,aAAY;GACE;GACd,gBAAgB;GACP;GACT,CAAA,EAEF,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,kBAAD;IACE,aAAY;IACE;IACL;IACT,gBAAgB;IAChB,eAAe;AACb,kBAAa;AACb,gBAAW;;IAEb,gBACE,iBAAiB,QAAQ,iBAAiB;IAE5C,mBACE,iBAAiB,QAAQ,oBAAoB;IAEjC;IACC;IACf,uBAAuB;IACb;IACV,kBAAkB;IACA;IAClB,0BAA0B;IAC1B,kBAAkB,oBAAoB;IAC1B;IACZ,wBAAwB,cAAc,SAAS,oBAAoB;IACnE,wBAAwB,eACtB,cAAc,SAAS,sBAAsB,WAAW;IAE1D,SAAS;IACT,iBAAiB;IACjB,sBAAsB,cAAcP,eAAkB;IAC1C;IACZ,cAAc;IACO;IACrB,wBAAwB;IACL;IACE;IACrB,CAAA,EAGF,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,mBAAD;OACgB;OACN;OACR,eAAe,WAAW,OAAO,WAAW,OAAO,KAAA;OACvC;OACZ,iBAAiB;OACjB,+BAA+B;OAC/B,sBAAsB;OACP;OACf,4BAA4B;OACV;OAClB,kBAAkB;OAClB,wBAAwB;OACxB,mBAAmB;OACF;OACjB,iBAAiB;OACjB,uBAAuB;OACvB,kBAAkB;OACE;OACpB,oBAAoB;OACpB,0BAA0B;OAC1B,qBAAqB;OACM;OAC3B,2BAA2B;OAC3B,iCAAiC;OACjC,4BAA4B;OAC5B,sBAAsB;OACtB,sBAAsB;OACT;OACG;OAChB,mBAAmB;OACD;OAClB,qBAAqB;OACA;OACrB,wBAAwB;OACxB,2BAA2B;OAC3B,2BAA2B;OACZ;OACL;OACQ;OAClB,oBAAoB;OACF;OACJ;OACd,sBAAsB;OACtB,sBACE,iBAAiB,YACjB,iBAAiB,SACjB,iBAAiB,aACb,gBAAgB,SAChB,KAAA;OAEN,CAAA;MACE,CAAA;KACL,iBAAiB,SAChB,iBAAA,GAAA,kBAAA,KAAC,gBAAD;MACE,eAAe;MACf,eAAe,cAAc;AAC3B,qBAAc,SAAS,sBAAsB,UAAU;;MAEzD,eAAe;AACb,qBAAc,SAAS,gBAAgB;AACvC,4BAAqB,EAAE;AACvB,2BAAoB,EAAE,CAAC;AACvB,2BAAoB,EAAE,CAAC;;MAEzB,iBAAiB;AACf,qBAAc,SAAS,iBAAiB;;MAE1C,WAAW,oBAAoB;MAC/B,cAAc,eACX,iBAAiB,cAAc,KAAK;MAEvC,uBAAuB,cACrB,cAAc,SAAS,uBAAuB,UAAU,IAAI;MAE9D,kBAAkB,WAAW,cAAc;AACzC,qBAAc,SAAS,qBACrB,WACA,UACD;;MAEH,CAAA;KAEH,CAAC,OAAO,oBAAoB,iBAAiB,WAC5C,iBAAA,GAAA,kBAAA,KAAC,gBAAD;MACE,eAAe;MACf,eAAe,cAAc;OAC3B,MAAM,KAAK,SAAS,UAAU,QAAQ,WAAW,GAAG,EAAE,GAAG;AACzD,WAAI,CAAC,OAAO,MAAM,GAAG,EAAE;AACrB,6BAAqB,SACnB,KAAK,QAAQ,YAAY,YAAY,GAAG,CACzC;AACD,8BAAsB,SACpB,KAAK,QAAQ,MAAM,EAAE,eAAe,UAAU,CAC/C;;;MAGL,eAAe;AACb,2BAAoB,EAAE,CAAC;AACvB,4BAAqB,EAAE,CAAC;AACxB,8BAAuB,EAAE;;MAE3B,iBAAiB;AACf,uBAAgB,kBAAkB;AAClC,kBAAW;;MAEb,WAAW,sBAAsB;MACjC,mBAAmB;MACnB,CAAA;KAEH,CAAC,OAAO,oBAAoB,iBAAiB,WAC5C,iBAAA,GAAA,kBAAA,KAAC,gBAAD;MACE,eAAe;MACf,eAAe,cAAc;OAC3B,MAAM,KAAK,SAAS,UAAU,QAAQ,UAAU,GAAG,EAAE,GAAG;AACxD,WAAI,CAAC,OAAO,MAAM,GAAG,EAAE;AACrB,4BAAoB,SAClB,KAAK,QAAQ,WAAW,WAAW,GAAG,CACvC;AACD,6BAAqB,SACnB,KAAK,QAAQ,MAAM,EAAE,eAAe,UAAU,CAC/C;;;MAGL,eAAe;AACb,0BAAmB,EAAE,CAAC;AACtB,2BAAoB,EAAE,CAAC;AACvB,6BAAsB,EAAE;;MAE1B,iBAAiB;AACf,uBAAgB,iBAAiB;AACjC,kBAAW;;MAEb,WAAW,qBAAqB;MAChC,mBAAmB;MACnB,CAAA;KAEH,CAAC,OAAO,oBAAoB,iBAAiB,cAC5C,iBAAA,GAAA,kBAAA,KAAC,gBAAD;MACE,eAAe;MACf,eAAe,cAAc;OAC3B,MAAM,KAAK,SAAS,UAAU,QAAQ,aAAa,GAAG,EAAE,GAAG;AAC3D,WAAI,CAAC,OAAO,MAAM,GAAG,EAAE;AACrB,+BAAuB,SACrB,KAAK,QAAQ,cAAc,cAAc,GAAG,CAC7C;AACD,gCAAwB,SACtB,KAAK,QAAQ,MAAM,EAAE,eAAe,UAAU,CAC/C;;;MAGL,eAAe;AACb,6BAAsB,EAAE,CAAC;AACzB,8BAAuB,EAAE,CAAC;AAC1B,gCAAyB,EAAE;;MAE7B,iBAAiB;AACf,uBAAgB,oBAAoB;AACpC,kBAAW;;MAEb,WAAW,wBAAwB;MACnC,mBAAmB;MACnB,CAAA;KAEH,CAAC,OAAO,oBAAoB,iBAAiB,sBAC5C,iBAAA,GAAA,kBAAA,KAAC,gBAAD;MACE,eAAe;MACf,eAAe,cAAc;OAC3B,MAAM,KAAK,SACT,UAAU,QAAQ,qBAAqB,GAAG,EAC1C,GACD;AACD,WAAI,CAAC,OAAO,MAAM,GAAG,EAAE;AACrB,sCAA8B,SAC5B,KAAK,QAAQ,WAAW,WAAW,GAAG,CACvC;AACD,uCAA+B,SAC7B,KAAK,QAAQ,MAAM,EAAE,eAAe,UAAU,CAC/C;;;MAGL,eAAe;AACb,oCAA6B,EAAE,CAAC;AAChC,qCAA8B,EAAE,CAAC;AACjC,uCAAgC,EAAE;;MAEpC,iBAAiB;AACf,uBAAgB,2BAA2B;AAC3C,kBAAW;;MAEb,WAAW,+BAA+B;MAC1C,mBAAmB;MACnB,CAAA;KAEH,CAAC,OAAO,qBACN,iBAAiB,YAChB,iBAAiB,SACjB,iBAAiB,eACjB,iBAAA,GAAA,kBAAA,KAAC,gBAAD;MACE,eAAe;MACf,eAAe,cAAc;AAC3B,2BAAoB,SAClB,KAAK,QAAQ,MAAM,EAAE,eAAe,UAAU,CAC/C;;MAEH,eAAe;AACb,0BAAmB,EAAE,CAAC;;MAExB,iBAAiB;AACf,2BAAoB,gBAAgB;;MAEtC,WAAW,gBAAgB,SAAS;MACpC,mBAAmB;MACnB,CAAA;KAEL,OAAO,oBACN,iBAAA,GAAA,kBAAA,KAAC,gBAAD;MACE,eAAe;MACf,eAAe,cAAc;AAC3B,wBAAiB,SACf,KAAK,QAAQ,MAAM,EAAE,eAAe,UAAU,CAC/C;;MAEH,eAAe;AACb,uBAAgB,EAAE,CAAC;;MAErB,iBAAiB;AAEf,uBADsB,CAAC,GAAG,aAAa,CACT;AAC9B,oBAAa;AACb,kBAAW;;MAEb,WAAW,aAAa,SAAS;MACjC,mBAAmB;MACnB,CAAA;KAEA;MACF;KACF;;AAGR,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,OAAO,aAAa,gBAAA,GAAA,UAAA,cAEjB,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,KAAK;EACL,WAAU;EACV,OAAO;GACL,QAAQ;GACR,eAAe,cAAc,SAAS;GACvC;EACD,eAAa,CAAC;EACd,CAAA,EACF,SAAS,KACV,EACH,iBAAA,GAAA,kBAAA,KAACQ,YAAAA,QAAD;EACQ;EACN,eAAe,WAAW;AACxB,OAAI,CAAC,QAAQ;AACX,iBAAa;AACb,eAAW;;;YAIf,iBAAA,GAAA,kBAAA,MAACC,YAAAA,eAAD;GAGE,iBAAiB;GAIjB,WAAW,2cAA2c,aAAa;aAPre,CASE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD;IAAa,WAAU;cAAU;IAAyB,CAAA,EACzD,OAAO,mBACN,iBAAA,GAAA,kBAAA,KAAC,0BAAD;IACE,OAAO;IACP,KAAK;cAEJ;IACwB,CAAA,GAE3B,KAEY;;EACT,CAAA,CACR,EAAA,CAAA;;;;ACnyBP,SAAgB,iBAAiB,KAAgC;CAC/D,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAA0C,KAAK;CAC5D,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAM,WAAW,KAAK,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM;CAEzD,MAAM,cAAA,GAAA,MAAA,cACH,MAA8C;AAC7C,eAAa,MAAM;EACnB,MAAM,MAAM,EAAE;AACd,WAAS,UAAU;GACjB,OAAO,IAAI;GACX,QAAQ,IAAI;GACZ,MAAM,MAAM,QAAQ;GACrB,EAAE;IAEL,EAAE,CACH;CAED,MAAM,eAAA,GAAA,MAAA,mBAAgC;AACpC,eAAa,KAAK;IACjB,EAAE,CAAC;AAEN,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,KAAK;AACR,WAAQ,KAAK;AACb;;AAEF,UAAQ,KAAK;EACb,MAAM,aAAa,IAAI,iBAAiB;AACxC,QAAM,KAAK;GAAE,QAAQ;GAAQ,QAAQ,WAAW;GAAQ,CAAC,CACtD,MAAM,QAAQ;AACb,OAAI,CAAC,IAAI,GAAI;GACb,MAAM,MAAM,IAAI,QAAQ,IAAI,iBAAiB;AAC7C,OAAI,KAAK;IAEP,MAAM,KADQ,OAAO,IAAI,GACN;IACnB,MAAM,UACJ,MAAM,OAAO,IAAI,KAAK,MAAM,QAAQ,EAAE,CAAC,OAAO,GAAG,GAAG,QAAQ,EAAE,CAAC;AACjE,aAAS,UAAU;KACjB,OAAO,MAAM,SAAS;KACtB,QAAQ,MAAM,UAAU;KACxB,MAAM;KACP,EAAE;;IAEL,CACD,OAAO,QAAiB;AACvB,OAAI,eAAe,gBAAgB,IAAI,SAAS,aAAc;AAC9D,WAAQ,KAAK,mCAAmC,IAAI;IACpD;AACJ,eAAa,WAAW,OAAO;IAC9B,CAAC,IAAI,CAAC;AAET,EAAA,GAAA,MAAA,iBAAgB;AACd,eAAa,MAAM;IAClB,CAAC,IAAI,CAAC;AAET,QAAO;EAAE;EAAM;EAAU;EAAY;EAAa;EAAW;;;;ACrC/D,SAAgB,eAAe,EAC7B,OACA,UACA,aACA,WACA,mBACyC;CACzC,MAAM,EAAE,MAAM,0BAA0B;CAExC,MAAM,SAASC,eAAAA,UAAU;EACvB,YAAY;GACVC,eAAAA,WAAW,UAAU;IACnB,YAAY;KAAE,WAAW;KAAM,gBAAgB;KAAO;IACtD,aAAa;KAAE,WAAW;KAAM,gBAAgB;KAAO;IACxD,CAAC;GACFC,eAAAA,YAAY,UAAU,EACpB,aAAa,eAAe,EAAE,mCAAmC,EAClE,CAAC;GACFC,eAAAA,UAAU,UAAU;IAClB,OAAO,CAAC,YAAY;IACpB,YAAY;KAAC;KAAQ;KAAU;KAAS;KAAU;IACnD,CAAC;GACFC,eAAAA;GACD;EACD,SAAS,SAAS;EAClB,WAAW,EAAE,aAAa;AACxB,YAAS,OAAO,SAAS,CAAC;;EAE7B,CAAC;AAEF,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,OAAQ;AACb,MAAI,OAAO,SAAS,KAAK,MACvB,QAAO,SAAS,WAAW,SAAS,IAAI,MAAM;IAE/C,CAAC,QAAQ,MAAM,CAAC;CAEnB,MAAM,aACJ;CACF,MAAM,eAAe;CACrB,MAAM,iBAAiB;CACvB,MAAM,YAAY,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,6BAA8B,CAAA;AAE/D,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EACE,WAAWC,YAAAA,GACT,iEACA,UACD;YAJH;GAOE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK;MACzD,UAAU,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK;MAC3D,WAAWA,YAAAA,GACT,YACA,aACA,QAAQ,SAAS,OAAO,GAAG,eAAe,eAC3C;MACD,OAAO,EAAE,cAAc;gBACxB;MAEQ,CAAA;KACT,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK;MAC3D,UAAU,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK;MAC7D,WAAWA,YAAAA,GACT,YACA,UACA,QAAQ,SAAS,SAAS,GAAG,eAAe,eAC7C;MACD,OAAO,EAAE,gBAAgB;gBAC1B;MAEQ,CAAA;KACT,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK;MAC9D,UAAU,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK;MAChE,WAAWA,YAAAA,GACT,YACA,aACA,QAAQ,SAAS,YAAY,GAAG,eAAe,eAChD;MACD,OAAO,EAAE,mBAAmB;gBAC7B;MAEQ,CAAA;KACR;KACD,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,OAAO,CAAC,KAAK;MACjE,WAAWA,YAAAA,GACT,YACA,QAAQ,SAAS,EAAE,WAAW,QAAQ,CAAC,GACnC,eACA,eACL;MACD,OAAO,EAAE,oBAAoB;gBAE7B,iBAAA,GAAA,kBAAA,KAACC,aAAAA,WAAD,EAAW,WAAU,YAAa,CAAA;MAC3B,CAAA;KACT,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,SAAS,CAAC,KAAK;MACnE,WAAWD,YAAAA,GACT,YACA,QAAQ,SAAS,EAAE,WAAW,UAAU,CAAC,GACrC,eACA,eACL;MACD,OAAO,EAAE,sBAAsB;gBAE/B,iBAAA,GAAA,kBAAA,KAACE,aAAAA,aAAD,EAAa,WAAU,YAAa,CAAA;MAC7B,CAAA;KACT,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,QAAQ,CAAC,KAAK;MAClE,WAAWF,YAAAA,GACT,YACA,QAAQ,SAAS,EAAE,WAAW,SAAS,CAAC,GACpC,eACA,eACL;MACD,OAAO,EAAE,qBAAqB;gBAE9B,iBAAA,GAAA,kBAAA,KAACG,aAAAA,YAAD,EAAY,WAAU,YAAa,CAAA;MAC5B,CAAA;KACT,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,aAAa,UAAU,CAAC,KAAK;MACpE,WAAWH,YAAAA,GACT,YACA,QAAQ,SAAS,EAAE,WAAW,WAAW,CAAC,GACtC,eACA,eACL;MACD,OAAO,EAAE,iBAAiB;gBAE1B,iBAAA,GAAA,kBAAA,KAACI,aAAAA,cAAD,EAAc,WAAU,YAAa,CAAA;MAC9B,CAAA;KACR;KACD,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK;MAC/D,WAAWJ,YAAAA,GACT,YACA,QAAQ,SAAS,aAAa,GAAG,eAAe,eACjD;MACD,OAAO,EAAE,qBAAqB;gBAE9B,iBAAA,GAAA,kBAAA,KAACK,aAAAA,MAAD,EAAM,WAAU,YAAa,CAAA;MACtB,CAAA;KACT,iBAAA,GAAA,kBAAA,KAAC,UAAD;MACE,MAAK;MACL,eAAe,QAAQ,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK;MAChE,WAAWL,YAAAA,GACT,YACA,QAAQ,SAAS,cAAc,GAAG,eAAe,eAClD;MACD,OAAO,EAAE,sBAAsB;gBAE/B,iBAAA,GAAA,kBAAA,KAACM,aAAAA,aAAD,EAAa,WAAU,YAAa,CAAA;MAC7B,CAAA;KACL;;GAGN,iBAAA,GAAA,kBAAA,KAACC,eAAAA,eAAD;IACU;IACR,WAAWP,YAAAA,GAAG,8BAA8B,gBAAgB;IAC5D,CAAA;GAEF,iBAAA,GAAA,kBAAA,KAAC,SAAD,EAAA,UAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA4BE,CAAA;GACN;;;;;AC9LV,MAAMQ,cAAY;AAElB,SAAS,aAAa,EACpB,UACA,QAIC;CACD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,CAAC,SAAS,eAAA,GAAA,MAAA,UAAuB,MAAM;AAE7C,KAAI,YAAY,SAAS,SAAS,KAAK,CAAC,QACtC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,KAAK;EACL,KAAK,QAAQ,EAAE,iBAAiB;EAChC,OAAO;EACP,QAAQ;EACR,WAAU;EACV,eAAe,WAAW,KAAK;EAC/B,CAAA;AAIN,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,SAAD,EAAS,WAAU,wBAAyB,CAAA;EACxC,CAAA;;AAIV,SAAgB,oBAAoB,EAClC,UACA,cACA,iBACA,kBACA,WAAW,OACX,cAAc,OACgC;CAC9C,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWC,0BAAAA,aAAa;CAC9B,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAqB,GAAG;CACtC,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6C,EAAE,CAAC;CACtE,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CACjD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAAyC,KAAK;CACjE,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAAyC,KAAK;CACjE,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAuC,KAAK;CAC7D,MAAM,eAAA,GAAA,MAAA,QAA2D,KAAK;CACtE,MAAM,uBAAA,GAAA,MAAA,QAAoD,KAAK;CAC/D,MAAM,sBAAA,GAAA,MAAA,QAAmD,KAAK;CAE9D,MAAM,aAAA,GAAA,MAAA,eACE,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE,GAAG,CAAC,EACxC,CAAC,SAAS,CACX;CACD,MAAM,eAAe,SAAS,UAAU;CAExC,MAAM,aAAA,GAAA,MAAA,aACJ,OAAO,MAAc;AACnB,eAAa,KAAK;AAClB,MAAI;GACF,MAAM,EAAE,UAAU,SAAS,YAAY,WACrC,MAAM,iBAAiB,GAAG,EAAE,OAAOF,aAAW,CAAC;AACjD,oBAAiB,QAAQ;AACzB,iBAAc,UAAU,KAAK;WACtB,OAAO;AACd,oBAAiB,EAAE,CAAC;AACpB,iBAAc,KAAK;AACnB,aAAU;IACR,OAAO,EAAE,sBAAsB;IAC/B,MAAM;IACN;IACD,CAAC;YACM;AACR,gBAAa,MAAM;;IAGvB,CAAC,kBAAkB,UAAU,CAC9B;CAED,MAAM,YAAA,GAAA,MAAA,aAAuB,YAAY;AACvC,MAAI,CAAC,cAAc,eAAe,UAAW;AAC7C,iBAAe,KAAK;AACpB,MAAI;GACF,MAAM,EAAE,UAAU,SAAS,YAAY,WAAW,MAAM,iBACtD,OACA;IAAE,QAAQ;IAAY,OAAOA;IAAW,CACzC;AACD,qBAAkB,SAAS,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC;AACjD,iBAAc,UAAU,KAAK;WACtB,OAAO;AAGd,iBAAc,KAAK;AACnB,aAAU;IACR,OAAO,EAAE,2BAA2B;IACpC,MAAM;IACN;IACD,CAAC;YACM;AACR,kBAAe,MAAM;;IAEtB;EAAC;EAAY;EAAa;EAAW;EAAkB;EAAO;EAAU,CAAC;AAE5E,EAAA,GAAA,MAAA,iBAAgB;AAKd,MAAI,CAAC,YAAa;AAElB,MAAI,YAAY,QACd,cAAa,YAAY,QAAQ;AAGnC,cAAY,UAAU,iBAAiB;AAChC,aAAU,MAAM;KACpB,IAAI;AAEP,eAAa;AACX,OAAI,YAAY,QACd,cAAa,YAAY,QAAQ;;IAGpC;EAAC;EAAO;EAAa;EAAU,CAAC;AAKnC,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,YAAa;EAClB,MAAM,WAAW,oBAAoB;EACrC,MAAM,OAAO,mBAAmB;AAChC,MAAI,CAAC,YAAY,CAAC,KAAM;EACxB,MAAM,WAAW,IAAI,sBAClB,YAAY;AACX,OAAI,QAAQ,IAAI,eAAqB,WAAU;KAEjD;GAAE;GAAM,YAAY;GAAS,CAC9B;AACD,WAAS,QAAQ,SAAS;AAC1B,eAAa,SAAS,YAAY;IACjC;EAAC;EAAa;EAAU,cAAc;EAAO,CAAC;CAEjD,SAAS,kBAAkB;AACzB,WAAS,GAAG;AACZ,mBAAiB,EAAE,CAAC;AACpB,iBAAe,KAAK;;CAGtB,eAAe,UAAU,WAAmB;AAC1C,cAAY,UAAU;AACtB,MAAI;AACF,SAAM,aAAa,UAAU;AACxB,aAAU,MAAM;WACd,OAAO;AAId,aAAU;IACR,OAAO,EAAE,qBAAqB;IAC9B,MAAM;IACN;IACD,CAAC;YACM;AACR,eAAY,KAAK;;;CAIrB,eAAe,aAAa,WAAmB;AAC7C,gBAAc,UAAU;AACxB,MAAI;AACF,SAAM,gBAAgB,UAAU;WACzB,OAAO;AACd,aAAU;IACR,OAAO,EAAE,wBAAwB;IACjC,MAAM;IACN;IACD,CAAC;YACM;AACR,iBAAc,KAAK;;;AAIvB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,EAAE,gCAAgC;IAChC,CAAA;GAEL,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACZ,SAAS,WAAW,IAEnB,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,EAAE,2BAA2B;MAC5B,CAAA,EACH,CAAC,YACA,iBAAA,GAAA,kBAAA,MAACG,YAAAA,QAAD;MACE,MAAK;MACL,SAAS;MACT,MAAK;MACL,WAAU;gBAJZ,CAME,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAE,2BAA2B,CACvB;QAEP;SAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBACb,EAAE,iCAAiC;SAClC,SAAS,OAAO,SAAS,OAAO;SAChC,KAAK,OAAO,YAAY;SACzB,CAAC;QACG,CAAA,EACN,CAAC,YAAY,CAAC,gBACb,iBAAA,GAAA,kBAAA,MAACD,YAAAA,QAAD;QACE,MAAK;QACL,SAAS;QACT,SAAQ;QACR,MAAK;QACL,WAAU;kBALZ,CAOE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAE,4BAA4B,CACxB;UAEP;;MAEN,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,EAAE,8BAA8B;OAC/B,CAAA;MAGJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACZ,SAAS,KAAK,YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAEE,WAAU;kBAFZ,CAIE,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;UACE,UAAU,QAAQ;UAClB,MAAM,QAAQ;UACd,CAAA,EACF,iBAAA,GAAA,kBAAA,MAAC,OAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;UAAG,WAAU;oBACV,QAAQ,QACP,EAAE,+BAA+B,EAC/B,IAAI,OAAO,QAAQ,GAAG,EACvB,CAAC;UACF,CAAA,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;UAAG,WAAU;oBACV,QAAQ,QAAQ,IAAI,QAAQ,UAAU,EAAE,YAAY;UACnD,CAAA,CACA,EAAA,CAAA,CACF;YACL,CAAC,YACA,iBAAA,GAAA,kBAAA,KAACD,YAAAA,QAAD;SACE,MAAK;SACL,SAAQ;SACR,MAAK;SACL,eAAe,KAAK,aAAa,QAAQ,GAAG;SAC5C,UAAU,eAAe,QAAQ;SACjC,WAAU;mBAET,eAAe,QAAQ,KACpB,EAAE,kBAAkB,GACpB,EAAE,gBAAgB;SACf,CAAA,CAEP;UAlCC,QAAQ,GAkCT,CACN;OACE,CAAA;MAEL,gBACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,EAAE,8BAA8B,EAAE,KAAK,OAAO,YAAY,EAAE,CAAC;OAC5D,CAAA;MAEF;;IAEJ,CAAA;GAGN,iBAAA,GAAA,kBAAA,MAACE,yBAAAA,kBAAD;IACE,MAAM;IACN,cAAc;IACd,OAAO,EAAE,8BAA8B;IACvC,cAAc,WAAW,iBAAiB;IAC1C,MAAK;cALP;KAOE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,EAAE,iCAAiC;OAClC,SAAS,OAAO,SAAS,OAAO;OAChC,KAAK,OAAO,YAAY;OACzB,CAAC;MACA,CAAA;KAEH,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,EAAE,8BAA8B,EAAE,KAAK,OAAO,YAAY,EAAE,CAAC;OAC5D,CAAA;MACA,CAAA;KAIR,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACG,YACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,SAAD,EAAS,WAAU,mDAAoD,CAAA,GAEvE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,iEAAkE,CAAA,EAEtF,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;OACE,aAAa,EAAE,8BAA8B;OAC7C,OAAO;OACP,WAAW,MAAM,SAAS,EAAE,OAAO,MAAM;OACzC,WAAU;OACV,CAAA,CACE;;KAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,KAAK;MAAoB,WAAU;gBACrC,aAAa,cAAc,WAAW,IACrC,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAACF,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA;OAC1B,CAAA,GACJ,cAAc,WAAW,IAC3B,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,MAAM,SAAS,IACZ,EAAE,6BAA6B,GAC/B,EAAE,+BAA+B;OACnC,CAAA,GAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CAGG,cAAc,KAAK,WAAW;QAC7B,MAAM,WAAW,UAAU,IAAI,OAAO,GAAG;QACzC,MAAM,SAAS,CAAC,YAAY,CAAC;AAE7B,eACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAEE,WAAW,2DACT,WACI,iCACA,SACE,0CACA;mBAPV,CAUE,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;WACE,UAAU,OAAO;WACjB,MAAM,OAAO;WACb,CAAA,EACF,iBAAA,GAAA,kBAAA,MAAC,OAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;WACE,WAAW,uBACT,SAAS,kBAAkB;qBAG5B,OAAO,QACN,EAAE,+BAA+B,EAC/B,IAAI,OAAO,OAAO,GAAG,EACtB,CAAC;WACF,CAAA,EACH,OAAO,SACN,iBAAA,GAAA,kBAAA,MAAC,KAAD;WAAG,WAAU;qBAAb,CAAqC,KACjC,OAAO,MACP;aAEF,EAAA,CAAA,CACF;aACN,iBAAA,GAAA,kBAAA,KAACH,YAAAA,QAAD;UACE,MAAK;UACL,SAAS,WAAW,UAAU;UAC9B,MAAK;UACL,eAAe;AACb,eAAI,OAAa,WAAU,OAAO,GAAG;;UAEvC,UAAU,CAAC,UAAU,aAAa,OAAO;UACzC,WAAW,WAAW,mBAAmB;oBAExC,aAAa,OAAO,KACjB,EAAE,gBAAgB,GAClB,WACE,EAAE,eAAe,GACjB,SACE,EAAE,aAAa,GACf,EAAE,sBAAsB;UACzB,CAAA,CACL;WAlDC,OAAO,GAkDR;SAER,EAED,eAAe,QACd,iBAAA,GAAA,kBAAA,KAAC,OAAD;QACE,KAAK;QACL,WAAU;kBAET,eAAe,iBAAA,GAAA,kBAAA,KAACG,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA;QAC1C,CAAA,CAEJ;;MAEJ,CAAA;KAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAACH,YAAAA,QAAD;OACE,MAAK;OACL,SAAQ;OACR,eAAe,eAAe,MAAM;iBAEnC,EAAE,cAAc;OACV,CAAA;MACL,CAAA;KACW;;GACf;;;;;AChbV,SAAgB,SAAS,EACvB,MACA,cACA,YACA,SACA,eACA,QACA,UACmC;CACnC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWM,0BAAAA,aAAa;CAE9B,MAAM,aAAA,GAAA,MAAA,eAEI;EACJ;GACE,OAAO;GACP,OAAO,EAAE,gBAAgB;GACzB,MAAM,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EAAO,WAAU,0BAA2B,CAAA;GACnD;EACD;GACE,OAAO;GACP,OAAO,EAAE,gBAAgB;GACzB,MAAM,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EAAc,WAAU,0BAA2B,CAAA;GAC1D;EACD;GACE,OAAO;GACP,OAAO,EAAE,iBAAiB;GAC1B,MAAM,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,0BAA2B,CAAA;GAClD;EACD;GACE,OAAO;GACP,OAAO,EAAE,iBAAiB;GAC1B,MAAM,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EAAO,WAAU,0BAA2B,CAAA;GACnD;EACF,EACD,CAAC,EAAE,CACJ;CAEH,MAAM,CAAC,SAAS,eAAA,GAAA,MAAA,UAAuB,WAAW;CAClD,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAA8B,WAAuB,OAAO;CACzE,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,cAAc;CAC3D,MAAM,CAAC,KAAK,WAAA,GAAA,MAAA,UAAmB,OAAO;AAGtC,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,MAAM;AACR,cAAW,WAAW;AACtB,WAAS,WAAuB,OAAO;AACvC,iBAAc,iBAAiB,EAAE,0BAA0B,CAAC;AAC5D,UAAO,OAAO;;IAEf;EAAC;EAAM;EAAY;EAAS;EAAe;EAAO,CAAC;CAEtD,MAAM,gBAAgB,YAAqB;AACzC,aAAW,QAAQ;AACnB,MAAI,WAAW,CAAC,WACd,eAAc,EAAE,0BAA0B,CAAC;;CAI/C,MAAM,qBAAqB;AACzB,eAAa,MAAM;;CAGrB,MAAM,mBAAmB;AAIvB,SAAO;GAAE;GAAS;GAAM;GAAY;GAAK,CAAC;AAC1C,eAAa,MAAM;;CAGrB,MAAM,iBAAiB,CAAC;AAExB,QACE,iBAAA,GAAA,kBAAA,MAACC,yBAAAA,kBAAD;EACQ;EACQ;EACd,OAAO,EAAE,mBAAmB;EAC5B,cAAc,WAAW,iBAAiB;YAJ5C;GAME,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cACV,EAAE,yBAAyB;IAC1B,CAAA;GAGJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;OAAM,WAAU;iBACb,EAAE,0BAA0B;OACxB,CAAA,EACP,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;OAAQ,SAAS;OAAS,iBAAiB;OAAgB,CAAA,CACvD;;KAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;QACE,WAAW,iBAAiB,kBAAkB;kBAE7C,EAAE,wBAAwB;QACrB,CAAA,EACR,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;QACE,OAAO;QACP,gBAAgB,MAAM,QAAQ,EAAa;QAC3C,UAAU;kBAHZ,CAKE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD;SACE,WAAW,UAAU,iBAAiB,eAAe;mBAErD,iBAAA,GAAA,kBAAA,KAACC,YAAAA,aAAD,EAAa,aAAa,EAAE,uBAAuB,EAAI,CAAA;SACzC,CAAA,EAChB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,eAAD,EAAA,UACG,UAAU,KAAK,cACd,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD;SAAkC,OAAO,UAAU;mBACjD,iBAAA,GAAA,kBAAA,MAAC,QAAD;UAAM,WAAU;oBAAhB,CACG,UAAU,MACV,UAAU,MACN;;SACI,EALI,UAAU,MAKd,CACb,EACY,CAAA,CACT;UACL;UAGL,SAAS,SACR,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAACL,YAAAA,OAAD;SACE,WAAW,iBAAiB,kBAAkB;mBAE7C,EAAE,mBAAmB;SAChB,CAAA,EACR,iBAAA,GAAA,kBAAA,KAACM,aAAAA,YAAD,EAAY,WAAU,0BAA2B,CAAA,CAC7C;WACN,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;QACE,OAAO;QACP,WAAW,MAAM,cAAc,EAAE,OAAO,MAAM;QAC9C,aAAa,EAAE,0BAA0B;QACzC,UAAU;QACV,WAAW,iBAAiB,eAAe;QAC3C,CAAA,CACE;WAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAO,CAAA,CAEL;;KAGL,SAAS,UACR,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,KAACP,YAAAA,OAAD;QACE,WAAW,iBAAiB,kBAAkB;kBAE7C,EAAE,gBAAgB;QACb,CAAA,EACR,iBAAA,GAAA,kBAAA,KAACM,aAAAA,YAAD,EAAY,WAAU,0BAA2B,CAAA,CAC7C;UACN,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;OACE,OAAO;OACP,WAAW,MAAM,OAAO,EAAE,OAAO,MAAM;OACvC,aAAa,EAAE,sBAAsB;OACrC,MAAK;OACL,UAAU;OACV,WAAW,iBAAiB,eAAe;OAC3C,CAAA,CACE;;KAEJ;;GAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;KAAQ,SAAQ;KAAU,SAAS;eAChC,EAAE,gBAAgB;KACZ,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;KAAQ,SAAS;eAAa,EAAE,cAAc;KAAU,CAAA,CACpD;;GACW;;;;;ACxMvB,SAAS,WAAW,SAAyB;AAG3C,QAAO,GAFM,KAAK,MAAM,UAAU,GAAG,CAEtB,GADF,KAAK,MAAM,UAAU,GAAG,CACd,UAAU,CAAC,SAAS,GAAG,IAAI;;AAGpD,SAAgB,uBAAuB,EACrC,UACA,cACA,qBACA,qBACA,WAAW,SACsC;CACjD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWC,0BAAAA,aAAa;CAC9B,MAAM,EAAE,cAAc,iBAAiB;CACvC,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,UAAiC,MAAM;CACjE,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CACjD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,EAAE;CACjD,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAwB,EAAE;CAC3C,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,MAAM;CAEjD,MAAM,YAAA,GAAA,MAAA,QAAoC,KAAK;CAC/C,MAAM,aAAA,GAAA,MAAA,QAAsC,KAAK;CAEjD,MAAM,wBAAA,GAAA,MAAA,mBAAyC;EAC7C,MAAM,QAAQ,SAAS;AACvB,MAAI,CAAC,MAAO;AACZ,cAAY,MAAM,SAAS;AAE3B,QAAM,cAAc,KAAK,IAAI,GAAG,MAAM,WAAW,GAAI;IACpD,EAAE,CAAC;CAEN,MAAM,oBAAA,GAAA,MAAA,mBAAqC;AACzC,MAAI,SAAS,QACX,gBAAe,SAAS,QAAQ,YAAY;IAE7C,EAAE,CAAC;CAEN,MAAM,mBAAA,GAAA,MAAA,mBAAoC;EACxC,MAAM,QAAQ,SAAS;AACvB,MAAI,CAAC,MAAO;AACZ,MAAI,MAAM,QAAQ;AACX,SAAM,MAAM;AACjB,gBAAa,KAAK;SACb;AACL,SAAM,OAAO;AACb,gBAAa,MAAM;;IAEpB,EAAE,CAAC;CAEN,MAAM,eAAA,GAAA,MAAA,cAA2B,MAA2C;EAC1E,MAAM,QAAQ,SAAS;AACvB,MAAI,CAAC,MAAO;EACZ,MAAM,OAAO,OAAO,EAAE,OAAO,MAAM;AACnC,QAAM,cAAc;AACpB,iBAAe,KAAK;AACpB,MAAI,CAAC,MAAM,QAAQ;AACjB,SAAM,OAAO;AACb,gBAAa,MAAM;;IAEpB,EAAE,CAAC;CAEN,MAAM,iBAAA,GAAA,MAAA,mBAAkC;EACtC,MAAM,QAAQ,SAAS;EACvB,MAAM,SAAS,UAAU;AACzB,MAAI,CAAC,SAAS,CAAC,OAAQ;AAEvB,eAAa,KAAK;AAClB,MAAI;AACF,UAAO,QAAQ,MAAM;AACrB,UAAO,SAAS,MAAM;GACtB,MAAM,MAAM,OAAO,WAAW,KAAK;AACnC,OAAI,CAAC,KAAK;AACR,iBAAa,MAAM;AACnB;;AAEF,OAAI,UAAU,OAAO,GAAG,GAAG,OAAO,OAAO,OAAO,OAAO;AACvD,UAAO,QACJ,SAAS;AACR,QAAI,MAAM;AACR,yBAAoB,KAAK;AACzB,0BAAqB,MAAM;UAI3B,WAAU;KACR,OAAO,EAAE,4BAA4B;KACrC,MAAM;KACP,CAAC;AAEJ,iBAAa,MAAM;MAErB,cACA,IACD;WACM,OAAO;AAEd,aAAU;IACR,OAAO,EAAE,4BAA4B;IACrC,MAAM;IACN;IACD,CAAC;AACF,gBAAa,MAAM;;IAEpB;EAAC;EAAqB;EAAW;EAAE,CAAC;CAEvC,MAAM,oBAAA,GAAA,MAAA,mBAAqC;AACzC,eAAa,MAAM;AACnB,iBAAe,EAAE;AACjB,cAAY,EAAE;AACd,uBAAqB,KAAK;IACzB,EAAE,CAAC;CAEN,MAAM,mBAAmB,WAAW;CAEpC,MAAM,EACJ,MAAM,SACN,UAAU,eACV,YAAY,eACZ,aAAa,gBACb,WAAW,iBACT,iBAAiB,aAAa;AAElC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAD;GAAO,WAAU;aACd,EAAE,wBAAwB;GACrB,CAAA,EACP,eACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACG,eACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,WAAD,EAAW,WAAU,gCAAiC,CAAA;IAClD,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IACE,KAAK;IACL,KAAK,EAAE,4BAA4B;IACnC,WAAU;IACV,QAAQ;IACR,SAAS;IACT,CAAA,EAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV;MACC,CAAA;KACH,WAAW,QAAQ,QAAQ,KAC1B,iBAAA,GAAA,kBAAA,MAAC,KAAD;MAAG,WAAU;gBAAb;OACG,QAAQ;OAAM;OAAU,QAAQ;OAAO;OACtC;;KAEL,SAAS,QACR,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBAAiC,QAAQ;MAAS,CAAA;KAEhE,CAAC,YACA,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;OACE,SAAQ;OACR,MAAK;OACL,SAAS;OACT,WAAU;iBAJZ,CAME,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,YAAa,CAAA,EAC9B,EAAE,gCAAgC,CAC5B;UACR,uBACC,iBAAA,GAAA,kBAAA,MAACD,YAAAA,QAAD;OACE,SAAQ;OACR,MAAK;OACL,SAAS;OACT,WAAU;iBAJZ,CAME,iBAAA,GAAA,kBAAA,KAACD,aAAAA,WAAD,EAAW,WAAU,YAAa,CAAA,EACjC,EAAE,yBAAyB,CACrB;SAEP;;KAEJ;MACF;OAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACE,aAAAA,QAAD,EAAQ,WAAU,gCAAiC,CAAA;IAC/C,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV,EAAE,qBAAqB;KACtB,CAAA,EACH,CAAC,YACA,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,MAACD,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MACL,SAAS;MACT,WAAU;gBAJZ,CAME,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,YAAa,CAAA,EAC9B,EAAE,2BAA2B,CACvB;;KACL,CAAA,CAEJ;MACF;KAEJ,EAAA,CAAA,EAGN,iBAAA,GAAA,kBAAA,MAACC,yBAAAA,kBAAD;GACE,MAAM;GACN,cAAc;GACd,OAAO,EAAE,2BAA2B;GACpC,cAAc,WAAW,iBAAiB;GAC1C,MAAK;aALP,CAOE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAD;OACE,KAAK;OACL,KAAK;OACL,aAAY;OACZ,kBAAkB;OAClB,cAAc;OACd,eAAe,aAAa,MAAM;OAClC,SAAQ;OACR,OAAA;OACA,aAAA;OACA,WAAU;OACV,CAAA,EAEF,iBAAA,GAAA,kBAAA,KAAC,UAAD;OACE,MAAK;OACL,SAAS;OACT,UAAU,CAAC;OACX,WAAU;iBAET,YACC,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EAAO,WAAU,sBAAuB,CAAA,GAExC,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,sBAAuB,CAAA;OAElC,CAAA,CACL;;KAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBACb,WAAW,YAAY;QACnB,CAAA;OACP,iBAAA,GAAA,kBAAA,KAAC,SAAD;QACE,MAAK;QACL,KAAK;QACL,KAAK,YAAY;QACjB,MAAM;QACN,OAAO;QACP,UAAU;QACV,UAAU,CAAC;QACX,WAAU;QACV,CAAA;OACF,iBAAA,GAAA,kBAAA,KAAC,QAAD;QAAM,WAAU;kBACb,WAAW,SAAS;QAChB,CAAA;OACH;;KAGN,iBAAA,GAAA,kBAAA,MAACJ,YAAAA,QAAD;MACE,SAAS;MACT,UAAU,CAAC,oBAAoB;MAC/B,WAAU;gBAHZ,CAKG,YACC,iBAAA,GAAA,kBAAA,KAACK,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,GAE9B,iBAAA,GAAA,kBAAA,KAACJ,aAAAA,QAAD,EAAQ,WAAU,UAAW,CAAA,EAE9B,EAAE,sBAAsB,CAClB;;KACL;OAGN,iBAAA,GAAA,kBAAA,KAAC,UAAD;IAAQ,KAAK;IAAW,WAAU;IAAW,CAAA,CAC5B;KACf;;;;;ACtPV,SAAS,6BAA6B,QAKpC;CACA,MAAM,OAAO,OAAO,SAAS;AAC7B,KAAI,KAAK,WAAW,SAAS,CAC3B,QAAO;EAAE,WAAW,OAAO;EAAU,MAAM;EAAS;AAEtD,KAAI,SAAS,kBACX,QAAO;EAAE,SAAS,OAAO;EAAU,MAAM;EAAO;AAElD,QAAO;EAAE,WAAW,OAAO;EAAU,MAAM;EAAS;;AAgBtD,SAAS,eAAe,WAiCV;CACZ,MAAM,aACJ,UAAU,KAAK,WACf,UAAU,UAAU,KAAK,WACzB,UAAU,eACV;CACF,MAAM,aACJ,UAAU,KAAK,QACf,UAAU,UAAU,KAAK,QACzB,UAAU,mBACV;CACF,MAAM,UACJ,eAAe,UAAU,eAAe,WAAW,eAAe,UAC9D,aACA;AAEN,QAAO;EACL,OAAO,UAAU,SAAS;EAK1B,aAAa,UAAU,aAAa,QAAQ,UAAU,YAAY;EAClE,QAAQ,UAAU,WAAW;EAC7B;EACA;EACA,eACE,UAAU,KAAK,eACf,UAAU,UAAU,KAAK,eACzB,UAAU,mBACV;EACF,QACE,UAAU,KAAK,cACf,UAAU,UAAU,KAAK,OACzB,UAAU,WACV;EACF,UAAU,UAAU,KAAK,SAAS,UAAU,UAAU,KAAK,SAAS;EACpE,gBACE,UAAU,KAAK,eAAe,UAAU,UAAU,KAAK,eAAe;EACxE,cACE,UAAU,KAAK,iBACf,UAAU,UAAU,KAAK,iBACzB;EACH;;AAGH,SAAS,kBAAkB,EACzB,KACA,aAIC;CACD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,EAAE,MAAM,UAAU,YAAY,aAAa,cAC/C,iBAAiB,IAAI;AAEvB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACG,YACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAACK,aAAAA,WAAD,EAAW,WAAU,gCAAiC,CAAA;GAClD,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACO;GACL,KAAK,EAAE,sBAAsB;GAC7B,WAAU;GACV,QAAQ;GACR,SAAS;GACT,CAAA,EAEJ,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV;KACC,CAAA;IACH,QAAQ,KAAK,QAAQ,KACpB,iBAAA,GAAA,kBAAA,MAAC,KAAD;KAAG,WAAU;eAAb;MACG,KAAK;MAAM;MAAU,KAAK;MAAO;MAChC;;IAEL,MAAM,QACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eAAiC,KAAK;KAAS,CAAA;IAE9D,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;MACE,SAAQ;MACR,MAAK;MACL,SAAS;MACT,WAAU;gBAJZ,CAME,iBAAA,GAAA,kBAAA,KAACD,aAAAA,WAAD,EAAW,WAAU,YAAa,CAAA,EACjC,EAAE,yBAAyB,CACrB;;KACL,CAAA;IACF;KACF;;;AAIV,SAAS,oBAAoB,EAC3B,WACA,gBACA,eAYC;CACD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,gBACJ,eAAe,UAAU,kBAAkB,UAAU;CACvD,MAAM,oBACJ,gBAAgB,UAAU,iBAAiB,UAAU;CACvD,MAAM,oBACJ,gBAAgB,UACZ,iBACA,cACE,OACA,UAAU;CAClB,MAAM,kBACJ,gBAAgB,QAAQ,iBAAiB,UAAU;AAGrD,KAAI,kBAAkB,WAAW,kBAC/B,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,SAAD;GACE,KAAK;GACL,QAAQ,qBAAqB,KAAA;GAC7B,UAAA;GACA,SAAQ;GACR,WAAU;GACV,CAAA;EACE,CAAA;AAKV,KAAI,kBAAkB,SAAS,gBAC7B,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,UAAD;GACE,KAAK,GAAG,gBAAgB;GACxB,SAAQ;GACR,WAAU;GACV,OAAO,EAAE,WAAW,QAAQ;GAC5B,OAAO,UAAU,SAAS,EAAE,qBAAqB;GACjD,CAAA;EACE,CAAA;AAKV,KAAI,kBACF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,KAAK;GACL,KAAK,UAAU,SAAS,EAAE,qBAAqB;GAC/C,WAAU;GACV,CAAA;EACE,CAAA;AAKV,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAACA,aAAAA,WAAD,EAAW,WAAU,UAAW,CAAA,EAChC,iBAAA,GAAA,kBAAA,KAAC,QAAD;GAAM,WAAU;aAAW,EAAE,2BAA2B;GAAQ,CAAA,CAC5D;;;AAIV,SAAgB,gBAAgB,EAC9B,SACA,YAAY,aACZ,UAC0C;CAC1C,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,WAAWE,0BAAAA,aAAa;CAC9B,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,aAAaC,mBAAAA,eAAe;CAClC,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CACpC,MAAM,EACJ,UACA,WACA,eACA,UACA,kBACA,gBACA,oBACE,iBAAiB;CAGrB,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAoC;EACpD,OAAO;EACP,aAAa;EACb,QAAQ;EACR,YAAY;EACZ,SAAS;EACT,eAAe;EACf,QAAQ;EACR,UAAU;EACV,gBAAgB;EAChB,cAAc;EACf,CAAC;CACF,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA+C,KAAK;CAK1E,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA4C,KAAK;CACvE,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CACzD,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,uBAAuB,6BAAA,GAAA,MAAA,UAAqC,MAAM;CACzE,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAA8B,MAAM;CAC3D,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UACW,KAAK;CACzC,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAA+C,KAAK;CAG7E,MAAM,EAAE,MAAM,eAAe,eAAA,GAAA,sBAAA,UAAuB;EAClD,UAAUC,uBAAAA,eAAe,MAAM,OAAO,OAAO,QAAQ,EAAE,YAAY,OAAO;EAC1E,eAAe,IAAI,MAAM,aAAa,OAAO,QAAQ,EAAE,OAAO;EAC/D,CAAC;CAEF,MAAM,YAAY,eAAe;CAGjC,MAAM,EAAE,MAAM,cAAc,SAAS,qBAAA,GAAA,sBAAA,UAA6B;EAChE,UAAUA,uBAAAA,eAAe,cAAc,KAAK,OAAO,QAAQ,EAAE,OAAO;EACpE,eACE,kBAAkB,kBAAkB,OAAO,QAAQ,EAAE,EACnD,cAAc,QACf,CAAC;EACJ,SAAS,CAAC,CAAC;EACZ,CAAC;CACF,MAAM,iBAAiB,cAAc,kBAAkB,EAAE;CAEzD,MAAM,WAAA,GAAA,MAAA,eAAwB;AAC5B,MAAI,oBAAoB,iBAAkB,QAAO;AACjD,MAAI,CAAC,cAAe,QAAO;AAC3B,SACE,UAAU,UAAU,cAAc,SAClC,UAAU,gBAAgB,cAAc,eACxC,UAAU,WAAW,cAAc,UACnC,UAAU,eAAe,cAAc,cACvC,UAAU,YAAY,cAAc,WACpC,UAAU,kBAAkB,cAAc,iBAC1C,UAAU,WAAW,cAAc,UACnC,UAAU,aAAa,cAAc,YACrC,UAAU,mBAAmB,cAAc,kBAC3C,UAAU,iBAAiB,cAAc;IAE1C;EAAC;EAAW;EAAe;EAAkB;EAAiB,CAAC;CAKlE,MAAM,cAAA,GAAA,MAAA,QAAoB,MAAM;AAChC,YAAW,UAAU;AAMrB,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,CAAC,UAAW;AAChB,MAAI,WAAW,QAAS;EACxB,MAAM,UAAU,eAAe,UAAU;AACzC,eAAa,QAAQ;AACrB,mBAAiB,QAAQ;AACzB,mBAAiB,OAAO;IACvB,CAAC,WAAW,OAAO,CAAC;CAGvB,MAAM,EAAE,QAAQ,aAAa,WAAW,cAAA,GAAA,sBAAA,aAAyB;EAC/D,kBACE,IAAI,MAAM,YACR,OAAO,QAAQ,EACf;GACE,OAAO,UAAU;GACjB,aAAa,UAAU;GACvB,QAAQ,UAAU;GAClB,GAAI,mBACA,6BAA6B,iBAAiB,GAC9C,EAAE;GACN,GAAI,mBAAmB,EAAE,eAAe,kBAAkB,GAAG,EAAE;GAC/D,UAAU;IACR,KAAK;KACH,SAAS,UAAU;KACnB,MAAM,UAAU;KAChB,aAAa,UAAU,iBAAiB,KAAA;KACxC,KACE,UAAU,YAAY,SAClB,UAAU,UAAU,KAAA,IACpB,KAAA;KACP;IACD,KAAK;KACH,OAAO,UAAU,YAAY;KAC7B,aAAa,UAAU,kBAAkB;KACzC,eAAe,UAAU;KAC1B;IACF;GACF,EACD,iBAAiB,OAClB;EACH,iBAAiB;AAIV,eAAY,kBAAkB,EACjC,UAAUA,uBAAAA,eAAe,MAAM,KAChC,CAAC;AACF,oBAAiB,UAAU;AAC3B,uBAAoB,KAAK;AACzB,uBAAoB,KAAK;AACzB,aAAU;IAAE,OAAO,EAAE,qBAAqB;IAAE,MAAM;IAAW,CAAC;;EAEhE,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,oBAAoB,EAAE,SAAS,MAAM,SAAS,CAAC;IACxD,MAAM;IACN;IACD,CAAC;;EAEL,CAAC;CAEF,MAAM,EAAE,QAAQ,aAAa,WAAW,gBAAA,GAAA,sBAAA,aAA2B;EACjE,kBAAkB,IAAI,MAAM,YAAY,OAAO,QAAQ,CAAC;EACxD,iBAAiB;AACf,aAAU;IAAE,OAAO,EAAE,uBAAuB;IAAE,MAAM;IAAW,CAAC;AAChE,YAAS,QAAQ;;EAEnB,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,sBAAsB,EAAE,SAAS,MAAM,SAAS,CAAC;IAC1D,MAAM;IACN;IACD,CAAC;AACF,mBAAgB,MAAM;;EAEzB,CAAC;CAGF,MAAM,cAAA,GAAA,MAAA,mBAA+B;AACnC,eAAa;IACZ,CAAC,YAAY,CAAC;CAEjB,MAAM,gBAAA,GAAA,MAAA,mBAAiC;AACrC,eAAa;IACZ,CAAC,YAAY,CAAC;CAEjB,MAAM,uBAAA,GAAA,MAAA,cAAmC,YAAgC;EACvE,MAAM,SAAS,QAAQ;AACvB,MAAI,CAAC,OAAQ;AACb,kBAAgB,MAAM;AACtB,sBAAoB,OAAO;IAC1B,EAAE,CAAC;CAGN,MAAM,0BAAA,GAAA,MAAA,eAAsE;AAC1E,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,EACL,OAAO;GACL,UAAU,QAAgB,UAAU;IAAE,OAAO;IAAK,MAAM;IAAW,CAAC;GACpE,QAAQ,KAAa,UACnB,UAAU;IACR,OAAO,iBAAiB,QAAQ,GAAG,IAAI,IAAI,MAAM,YAAY;IAC7D,MAAM;IACP,CAAC;GACJ,eAAe;GACf,eAAe;GAChB,EACF;IACA,CAAC,eAAe,UAAU,CAAC;CAE9B,MAAM,eAAe,WAAW,SAAS;AAGzC,KAAI,UACF,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAACC,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA;EAC1B,CAAA;AAIV,KAAI,CAAC,UACH,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,KAAD;GAAG,WAAU;aAA4B,EAAE,kBAAkB;GAAK,CAAA;EAC9D,CAAA;AAIV,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;GAAgB,WAAU;aAA1B;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KACE,MAAK;KACL,UAAU,MAAM;AACd,QAAE,gBAAgB;AAClB,OAAC,iBAAiB,SAAS,QAAQ,IAAI;;eAGxC,EAAE,mBAAmB;KACP,CAAA,EACF,CAAA;IACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KACE,MAAK;KACL,UAAU,MAAM;AACd,QAAE,gBAAgB;AAClB,eAAS,SAAS,UAAU;;KAE9B,WAAU;eAET,gBAAgB,EAAE,mBAAmB;KACvB,CAAA,EACF,CAAA;IACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;KAAgB,WAAU;eACvB,EAAE,cAAc;KACF,CAAA,EACF,CAAA;IACF;MACN,CAAA,EACW,CAAA;EAC1B,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,qBAAD,EAAA,UACG,YAAY,CAAC,YAAY,OACxB,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACG,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACb,YAAAA,QAAD;IACE,SAAQ;IACR,MAAK;IACL,WAAU;IACV,cAAY,EAAE,qBAAqB;IACnC,eAAe,iBAAiB,KAAK;cAErC,iBAAA,GAAA,kBAAA,KAACc,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;IAC5B,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;IACE,MAAM;IACN,cAAc;IACd,OAAO,EAAE,qBAAqB;IAC9B,SAAS,CACP;KACE,IAAI;KACJ,OAAO,EAAE,gBAAgB;KACzB,SAAS;KACT,gBAAgB,gBAAgB,KAAK;KACtC,CACF;IACD,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;IAAqB,SAAA;cACnB,iBAAA,GAAA,kBAAA,KAACjB,YAAAA,QAAD;KAAQ,SAAQ;KAAU,MAAK;KAAK,WAAU;eAC5C,iBAAA,GAAA,kBAAA,KAACc,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;KAC5B,CAAA;IACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,KAACI,YAAAA,qBAAD;IAAqB,OAAM;cACzB,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;KACE,eAAe,gBAAgB,KAAK;KACpC,WAAU;eAFZ,CAIE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,gBAAgB,CACF;;IACC,CAAA,CACT,EAAA,CAAA,EAEjB,iBAAA,GAAA,kBAAA,KAACpB,YAAAA,QAAD;IACE,SAAS;IACT,UAAU,CAAC,WAAW;IACtB,MAAK;cAEJ,WAAW,iBAAA,GAAA,kBAAA,KAACK,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,GAAG,EAAE,cAAc;IACtD,CAAA,CACL;MAEY,CAAA;EACtB,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,UAAU,SAAS,gBAAgB,EAAE,gBAAgB;MACnD,CAAA;KACD,CAAA;IAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf;SACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;WAAI,WAAU;qBACX,EAAE,gBAAgB;WAChB,CAAA,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACG,CAAC,YAAY,0BAA0B,iBACtC,iBAAA,GAAA,kBAAA,KAACL,YAAAA,QAAD;YACE,eAAe,gBAAgB,KAAK;YACpC,SAAQ;YACR,MAAK;sBAEJ,EAAE,uBAAuB;YACnB,CAAA,EAEV,CAAC,YACA,iBAAA,GAAA,kBAAA,MAACA,YAAAA,QAAD;YACE,SAAQ;YACR,MAAK;YACL,eAAe,kBAAkB,KAAK;YACtC,WACE,UAAU,aACN,gCACA;sBAPR,CAUG,EAAE,yBAAyB,EAC3B,UAAU,aAAa,EAAE,YAAY,GAAG,EAAE,aAAa,CACjD;cAEP;aACF;;SAEN,iBAAA,GAAA,kBAAA,KAAC,qBAAD;UACa;UACX,gBACE,mBAAmB,iBAAiB,WAAW;UAEjD,aACE,mBACI,6BAA6B,iBAAiB,CAAC,OAC/C;UAEN,CAAA;gBAIM;UACN,MAAM,cAAc,mBAChB,6BAA6B,iBAAiB,CAAC,OAC/C;UACJ,MAAM,mBACJ,UACA;UACF,MAAM,gBACJ,eAAe,oBAAoB,UAAU;UAC/C,MAAM,oBACJ,gBAAgB,UACZ,kBAAkB,WAClB,UAAU;AAEhB,cAAI,SAAU,QAAO;AAErB,cAAI,kBAAkB,WAAW,kBAC/B,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,wBAAD;YACE,UAAU;YACV,cAAc,oBAAoB,UAAU;YAC5C,qBAAqB,OAAO,SAAS;AACnC,iBAAI,CAAC,iBAAiB;AACpB,wBAAU;eACR,OAAO,EAAE,sCAAsC;eAC/C,MAAM;eACP,CAAC;AACF;;AAEF,iBAAI;AAKF,kCAJY,MAAM,gBAChB,MACA,aAAa,QAAQ,MACtB,CACuB;sBACjB,OAAO;AACd,wBAAU;eACR,OAAO,EAAE,+BAA+B;eACxC,MAAM;eACN;eACD,CAAC;;;YAGN,2BACE,yBAAyB,KAAK;YAEhC,CAAA,EACD,oBACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;YAAG,WAAU;sBACV,EAAE,qBAAqB;YACtB,CAAA,CAEF;;AAIV,cAAI,kBAAkB,OAAO;WAC3B,MAAM,mBACJ,oBAAoB,UAAU;AAChC,kBACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;YAAK,WAAU;sBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;aAAK,WAAU;uBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAD;cAAO,WAAU;wBACd,EAAE,wBAAwB;cACrB,CAAA,EACP,mBACC,iBAAA,GAAA,kBAAA,KAAC,mBAAD;cACE,KAAK;cACL,iBAAiB,yBAAyB,KAAK;cAC/C,CAAA,GAEF,iBAAA,GAAA,kBAAA,MAAC,OAAD;cAAK,WAAU;wBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;eAAK,WAAU;yBACb,iBAAA,GAAA,kBAAA,KAACD,aAAAA,WAAD,EAAW,WAAU,gCAAiC,CAAA;eAClD,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;eAAK,WAAU;yBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;gBAAG,WAAU;0BACV,EAAE,qBAAqB;gBACtB,CAAA,EACJ,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;gBACE,SAAQ;gBACR,MAAK;gBACL,eAAe,yBAAyB,KAAK;gBAC7C,WAAU;0BAJZ,CAME,iBAAA,GAAA,kBAAA,KAACD,aAAAA,WAAD,EAAW,WAAU,YAAa,CAAA,EACjC,EAAE,yBAAyB,CACrB;kBACL;iBACF;gBAEJ;gBACL,oBACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;aAAG,WAAU;uBACV,EAAE,qBAAqB;aACtB,CAAA,CAEF;;;AAIV,iBAAO;aACL;SAGA;;OAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;SAAI,WAAU;mBACX,EAAE,wBAAwB;SACxB,CAAA,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,MAACsB,YAAAA,OAAD;WAAO,SAAQ;qBAAf;YACG,EAAE,qBAAqB;YAAE;YAC1B,iBAAA,GAAA,kBAAA,KAAC,QAAD;aAAM,WAAU;uBAAmB;aAAQ,CAAA;YACrC;cACP,WACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;WAAG,WAAU;qBAA2B;WAAiB,CAAA,GAEzD,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;WACE,IAAG;WACH,OAAO,UAAU;WACjB,WAAW,MACT,cAAc,OAAO;YAAE,GAAG;YAAG,OAAO,EAAE,OAAO;YAAO,EAAE;WAExD,aAAa,EAAE,0BAA0B;WACzC,CAAA,CAEA;aACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,KAACD,YAAAA,OAAD,EAAA,UAAQ,EAAE,2BAA2B,EAAS,CAAA,EAC7C,WAIC,iBAAA,GAAA,kBAAA,KAAC,KAAD;WAAG,WAAU;qBACV,UAAU,UAAU,YAAY;WAC/B,CAAA,GAEJ,iBAAA,GAAA,kBAAA,KAAC,gBAAD;WACE,OAAO,UAAU;WACjB,WAAW,QACT,cAAc,OAAO;YAAE,GAAG;YAAG,aAAa;YAAK,EAAE;WAEnD,aAAa,EAAE,mCAAmC;WAClD,CAAA,CAEA;YACF;WACF;;OAGN,iBAAA,GAAA,kBAAA,KAAC,qBAAD;QACE,UAAU;QACV,cAAc,OAAO,cAAc;AACjC,aAAI,CAAC,iBAAkB;AACvB,aAAI;AACF,gBAAM,iBAAiB,gBAAgB,OAAO,QAAQ,EAAE,EACtD,IAAI,WACL,CAAC;AACF,gBAAM,iBAAiB;kBAChB,OAAO;AACd,oBAAU;WACR,OAAO,EAAE,iCAAiC,EACxC,SACE,iBAAiB,QACb,MAAM,UACN,EAAE,gBAAgB,EACzB,CAAC;WACF,MAAM;WACN;WACD,CAAC;;;QAGN,iBAAiB,OAAO,cAAc;AACpC,aAAI,CAAC,iBAAkB;AACvB,aAAI;AACF,gBAAM,iBAAiB,mBACrB,OAAO,QAAQ,EACf,UACD;AACD,gBAAM,iBAAiB;kBAChB,OAAO;AACd,oBAAU;WACR,OAAO,EAAE,oCAAoC,EAC3C,SACE,iBAAiB,QACb,MAAM,UACN,EAAE,gBAAgB,EACzB,CAAC;WACF,MAAM;WACN;WACD,CAAC;;;QAGN,kBACE,mBACC,aAAa;SAAE,UAAU,EAAE;SAAE,YAAY;SAAM;QAElD,UAAU,YAAY,CAAC;QACvB,CAAA;OAGE;SAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBAEb,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf;QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;UAAI,WAAU;oBACX,EAAE,cAAc;UACd,CAAA,EACJ,CAAC,YACA,iBAAA,GAAA,kBAAA,KAACrB,YAAAA,QAAD;UACE,SAAQ;UACR,MAAK;UACL,eAAe,gBAAgB,SAAS,CAAC,KAAK;oBAE7C,cAAc,EAAE,cAAc,GAAG,EAAE,cAAc;UAC3C,CAAA,CAEP;;eAKE;SAIN,MAAM,mBAHgB,mBAClB,6BAA6B,iBAAiB,GAC9C,OAEa,aACf,oBACA,WAAW;AACb,gBACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACG,kBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;YACE,KAAK;YACL,KAAK,EAAE,6BAA6B;YACpC,WAAU;YACV,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,OAAD;YAAK,WAAU;sBACb,iBAAA,GAAA,kBAAA,KAACD,aAAAA,WAAD,EAAW,WAAU,gCAAiC,CAAA;YAClD,CAAA,EAER,iBAAA,GAAA,kBAAA,MAAC,OAAD;YAAK,WAAU;sBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;aAAG,WAAU;uBACV,UAAU,YACT,gBACA,EAAE,6BAA6B;aAC/B,CAAA,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;aAAG,WAAU;uBACV,WAAW,gBACV,WAAW,iBACX,EAAE,2BAA2B;aAC7B,CAAA,CACA;cACF;cACL,UAAU,kBACT,iBAAA,GAAA,kBAAA,KAAC,KAAD;WAAG,WAAU;qBACV,UAAU;WACT,CAAA,CAEF;;YAEN;QAEH,eACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf;UACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,KAACsB,YAAAA,OAAD;YAAO,SAAQ;sBAAa,EAAE,kBAAkB;YAAS,CAAA,EACzD,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;YACE,IAAG;YACH,OAAO,UAAU;YACjB,WAAW,MACT,cAAc,OAAO;aACnB,GAAG;aACH,UAAU,EAAE,OAAO;aACpB,EAAE;YAEL,aAAa,EAAE,wBAAwB;YACvC,CAAA,CACE;;UACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,KAACD,YAAAA,OAAD;YAAO,SAAQ;sBACZ,EAAE,wBAAwB;YACrB,CAAA,EACR,iBAAA,GAAA,kBAAA,KAACE,YAAAA,UAAD;YACE,IAAG;YACH,OAAO,UAAU;YACjB,WAAW,MACT,cAAc,OAAO;aACnB,GAAG;aACH,gBAAgB,EAAE,OAAO;aAC1B,EAAE;YAEL,aAAa,EAAE,8BAA8B;YAC7C,MAAM;YACN,CAAA,CACE;;UACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;YAAK,WAAU;sBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;aAAM,WAAU;uBACb,EAAE,2BAA2B;aACzB,CAAA,EACP,iBAAA,GAAA,kBAAA,KAAC,QAAD;aAAM,WAAU;uBACb,EAAE,iCAAiC;aAC/B,CAAA,CACH;eACN,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;YACE,SAAS,UAAU;YACnB,kBAAkB,YAChB,cAAc,OAAO;aAAE,GAAG;aAAG,cAAc;aAAS,EAAE;YAExD,cAAY,EAAE,0BAA0B;YACxC,CAAA,CACE;;UACF;;QAEJ;;MAGF,CAAA,CACF;;IAGN,iBAAA,GAAA,kBAAA,KAACC,yBAAAA,kBAAD;KACE,MAAM;KACN,cAAc;KACd,OAAO,EAAE,4BAA4B;KACrC,aAAa,EAAE,mCAAmC,EAChD,OAAO,WAAW,SAAS,IAC5B,CAAC;KACF,cAAc,WAAW,iBAAiB;KAC1C,MAAK;KACL,MAAK;eAEL,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC1B,YAAAA,QAAD;MACE,SAAQ;MACR,UAAU;MACV,eAAe,gBAAgB,MAAM;gBAEpC,EAAE,gBAAgB;MACZ,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;MACE,SAAQ;MACR,SAAS;MACT,UAAU;gBAET,aAAa,EAAE,kBAAkB,GAAG,EAAE,gBAAgB;MAChD,CAAA,CACI,EAAA,CAAA;KACE,CAAA;IAGnB,iBAAA,GAAA,kBAAA,KAAC,UAAD;KACE,MAAM;KACN,cAAc;KACd,YAAY,UAAU;KACtB,SAAS,UAAU;KACnB,eAAe,UAAU;KACzB,QAAQ,UAAU;KAClB,SAAS,aAAa;AACpB,oBAAc,OAAO;OACnB,GAAG;OACH,YAAY,SAAS;OACrB,SAAS,SAAS;OAClB,eAAe,SAAS;OACxB,QAAQ,SAAS;OAClB,EAAE;;KAEL,CAAA;IAGD,0BAA0B,iBACzB,iBAAA,GAAA,kBAAA,KAAC,uBAAD;KAAuB,KAAK;eAC1B,iBAAA,GAAA,kBAAA,KAAC,oBAAD;MAAoB,OAAO;gBACzB,iBAAA,GAAA,kBAAA,KAAC,YAAD;OACE,MAAM;OACN,iBAAiB;OACjB,eAAe,gBAAgB,MAAM;OACrC,QAAQ;QACN,UAAU;QACV,gBAAgB;SAAC;SAAO;SAAU;SAAM;QACzC;OACD,CAAA;MACiB,CAAA;KACC,CAAA;IAIzB,0BAA0B,iBACzB,iBAAA,GAAA,kBAAA,KAAC,uBAAD;KAAuB,KAAK;eAC1B,iBAAA,GAAA,kBAAA,KAAC,oBAAD;MAAoB,OAAO;gBACzB,iBAAA,GAAA,kBAAA,KAAC,YAAD;OACE,MAAM;OACN,kBAAkB,YAAY;QAC5B,MAAM,SAAS,QAAQ;AACvB,YAAI,OACF,qBAAoB,OAAO,SAAS;AAEtC,iCAAyB,MAAM;;OAEjC,eAAe,yBAAyB,MAAM;OAC9C,QAAQ;QACN,UAAU;QACV,gBAAgB;SAAC;SAAO;SAAU;SAAM;QACzC;OACD,CAAA;MACiB,CAAA;KACC,CAAA;IAEtB;;EACL,EAAA,CAAA;;;;ACliCP,SAAS,gBAAgB,UAA6C;AACpE,KAAI,SAAS,WAAW,SAAS,CAAE,QAAO;AAC1C,KAAI,aAAa,kBAAmB,QAAO;AAC3C,QAAO;;AAGT,SAAS,YAAY,EACnB,QACA,aAIC;CACD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,eACJ,cAAc,UAAU,OAAO,WAAW,OAAO;AAEnD,KAAI,cAAc;EAChB,MAAM,OACJ,cAAc,UAAU2B,aAAAA,QAAQ,cAAc,QAAQC,aAAAA,WAAW;AACnE,SACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IACE,KAAK;IACL,KAAK,OAAO,SAAS;IACrB,WAAU;IACV,CAAA,EACD,QACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD,EAAM,WAAU,YAAa,CAAA,EAC7B,iBAAA,GAAA,kBAAA,KAAC,QAAD;KAAM,WAAU;eACb,cAAc,UACX,EAAE,mBAAmB,GACrB,EAAE,iBAAiB;KAClB,CAAA,CACH;MAEJ;;;AAKV,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAHS,cAAc,UAAUD,aAAAA,QAAQC,aAAAA,UAGzC,EAAM,WAAU,yCAA0C,CAAA,EAC1D,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cACV,OAAO,SAAS;IACf,CAAA,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cACV,OAAO,SAAS;IACf,CAAA,CACA;KACF;;;AAIV,SAAgB,kBAAkB,EAChC,YACA,UAC4C;CAC5C,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,EAAE,UAAU,WAAW,kBAAkB,iBAAiB;CAChE,MAAM,OAAOC,mBAAAA,mBAAmB;CAEhC,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAqB,GAAG;CACtC,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,GAAG;CAClD,MAAM,CAAC,WAAA,GAAA,MAAA,UAAmB,KAAK;CAC/B,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UACrB,KACD;CACD,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAA8B,MAAM;CAG3D,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,MAAM;CACnD,MAAM,CAAC,SAAS,eAAA,GAAA,MAAA,UAAgC,OAAO;CACvD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,GAAG;CACtD,MAAM,CAAC,QAAQ,cAAA,GAAA,MAAA,UAAsB,GAAG;CAGxC,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAA2B,MAAM;CACrD,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAwB,GAAG;CAC5C,MAAM,CAAC,gBAAgB,sBAAA,GAAA,MAAA,UAA8B,GAAG;CACxD,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA+B,MAAM;CAE7D,MAAM,YAAY,iBACd,gBAAgB,eAAe,SAAS,UAAU,GAClD;CAEJ,MAAM,EAAE,QAAQ,aAAa,WAAW,eAAeC,mBAAAA,uBACrD;EACE,YAAY,aAA6B;AACvC,aAAU;IAAE,OAAO,EAAE,uBAAuB;IAAE,MAAM;IAAW,CAAC;AAChE,gBAAa,SAAS,OAAO,SAAS,GAAG,CAAC;;EAE5C,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,sBAAsB,EAAE,SAAS,MAAM,SAAS,CAAC;IAC1D,MAAM;IACP,CAAC;;EAEL,CACF;CAED,MAAM,cAAA,GAAA,MAAA,mBAA+B;AACnC,MAAI,CAAC,MAAM,MAAM,EAAE;AACjB,aAAU;IAAE,OAAO,EAAE,uBAAuB;IAAE,MAAM;IAAW,CAAC;AAChE;;AAEF,MAAI,CAAC,gBAAgB;AACnB,aAAU;IAAE,OAAO,EAAE,sBAAsB;IAAE,MAAM;IAAW,CAAC;AAC/D;;EAGF,MAAM,KAAK,gBAAgB,eAAe,SAAS,UAAU;AAE7D,cAAY;GACV,OAAO,MAAM,MAAM;GACN;GACb;GACA,YAAY;GACZ,MAAM;GACN,WAAW,OAAO,UAAU,eAAe,WAAW,KAAA;GACtD,WAAW,OAAO,UAAU,eAAe,WAAW,KAAA;GACtD,SAAS,OAAO,QAAQ,eAAe,WAAW,KAAA;GAClD,SAAS,MAAM;GACf,UAAU;IACR,KAAK,aACD;KACE,SAAS;KACT,MAAM;KACN,aAAa,iBAAiB;KAC9B,KAAK,YAAY,SAAS,UAAU,OAAO;KAC5C,GACD,EAAE,SAAS,OAAO;IACtB,KAAK;KACH,OAAO,YAAY;KACnB,aAAa,kBAAkB;KAC/B,eAAe;KAChB;IACF;GACF,CAAC;IACD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,uBAAA,GAAA,MAAA,cACH,YAAgC;EAC/B,MAAM,SAAS,QAAQ;AACvB,MAAI,CAAC,OAAQ;AACb,oBAAkB,OAAO;AACzB,kBAAgB,MAAM;AACtB,MAAI,CAAC,MAAM,MAAM,CACf,UAAS,OAAO,SAAS,UAAU,QAAQ,aAAa,GAAG,CAAC;IAGhE,CAAC,MAAM,CACR;CAED,MAAM,0BAAA,GAAA,MAAA,eAAsE;AAC1E,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO,EACL,OAAO;GACL,UAAU,QAAgB,UAAU;IAAE,OAAO;IAAK,MAAM;IAAW,CAAC;GACpE,QAAQ,KAAa,UACnB,UAAU;IACR,OAAO,iBAAiB,QAAQ,GAAG,IAAI,IAAI,MAAM,YAAY;IAC7D,MAAM;IACP,CAAC;GACJ,eAAe;GACf,eAAe;GAChB,EACF;IACA,CAAC,eAAe,UAAU,CAAC;AAE9B,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;GAAgB,WAAU;aAA1B;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KACE,MAAK;KACL,UAAU,MAAM;AACd,QAAE,gBAAgB;AAClB,OAAC,iBAAiB,SAAS,QAAQ,IAAI;;eAGxC,EAAE,mBAAmB;KACP,CAAA,EACF,CAAA;IACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;KAAgB,WAAU;eACvB,EAAE,0BAA0B;KACd,CAAA,EACF,CAAA;IACF;MACN,CAAA,EACW,CAAA;EAC1B,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,qBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;GAAQ,SAAS;GAAY,UAAU;GAAY,MAAK;aACrD,aAAa,iBAAA,GAAA,kBAAA,KAACC,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,GAAG,EAAE,cAAc;GACxD,CAAA,EACW,CAAA;EACtB,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf;IAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,MAAM,MAAM,IAAI,EAAE,kBAAkB;MAClC,CAAA;KACD,CAAA;IAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CAEE,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;SAAI,WAAU;mBACX,EAAE,gBAAgB;SAChB,CAAA,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAACD,YAAAA,QAAD;UACE,eAAe,gBAAgB,KAAK;UACpC,SAAQ;UACR,MAAK;UACL,UAAU,CAAC;oBAEV,EAAE,sBAAsB;UAClB,CAAA,EACT,iBAAA,GAAA,kBAAA,MAACA,YAAAA,QAAD;UACE,SAAQ;UACR,MAAK;UACL,eAAe,kBAAkB,KAAK;UACtC,WAAW,aAAa,gCAAgC;oBAJ1D,CAMG,EAAE,yBAAyB,EAC3B,aAAa,EAAE,YAAY,GAAG,EAAE,aAAa,CACvC;YACL;WACF;WAEL,kBAAkB,YACjB,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,aAAD;SAAa,QAAQ;SAA2B;SAAa,CAAA,EAC7D,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;SACE,eAAe,gBAAgB,KAAK;SACpC,SAAQ;SACR,MAAK;SACL,WAAU;mBAET,EAAE,iBAAiB;SACb,CAAA,CACL;YAEN,iBAAA,GAAA,kBAAA,MAAC,UAAD;QACE,MAAK;QACL,eAAe,gBAAgB,KAAK;QACpC,UAAU,CAAC;QACX,WAAU;kBAJZ,CAME,iBAAA,GAAA,kBAAA,KAACE,aAAAA,QAAD,EAAQ,WAAU,UAAW,CAAA,EAC7B,iBAAA,GAAA,kBAAA,KAAC,QAAD;SAAM,WAAU;mBACb,EAAE,2BAA2B;SACzB,CAAA,CACA;UAIP;UAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;QAAI,WAAU;kBACX,EAAE,wBAAwB;QACxB,CAAA,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,OAAD;UAAO,SAAQ;oBAAf;WACG,EAAE,qBAAqB;WAAE;WAC1B,iBAAA,GAAA,kBAAA,KAAC,QAAD;YAAM,WAAU;sBAAmB;YAAQ,CAAA;WACrC;aACR,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;UACE,IAAG;UACH,OAAO;UACP,WAAW,MAAM,SAAS,EAAE,OAAO,MAAM;UACzC,aAAa,EAAE,0BAA0B;UACzC,UAAA;UACA,CAAA,CACE;YACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAACD,YAAAA,OAAD,EAAA,UAAQ,EAAE,2BAA2B,EAAS,CAAA,EAC9C,iBAAA,GAAA,kBAAA,KAAC,gBAAD;UACE,OAAO;UACP,UAAU;UACV,aAAa,EAAE,mCAAmC;UAClD,CAAA,CACE;WACF;UACF;SACF;SAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBAEb,iBAAA,GAAA,kBAAA,MAAC,OAAD;OAAK,WAAU;iBAAf;QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;UAAI,WAAU;oBACX,EAAE,cAAc;UACd,CAAA,EACL,iBAAA,GAAA,kBAAA,KAACH,YAAAA,QAAD;UACE,SAAQ;UACR,MAAK;UACL,eAAe,gBAAgB,SAAS,CAAC,KAAK;oBAE7C,cAAc,EAAE,cAAc,GAAG,EAAE,cAAc;UAC3C,CAAA,CACL;;QAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;UAAK,WAAU;oBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;WAAK,WAAU;qBACb,iBAAA,GAAA,kBAAA,KAACK,aAAAA,WAAD,EAAW,WAAU,gCAAiC,CAAA;WAClD,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;YAAG,WAAU;sBACV,YAAY,EAAE,6BAA6B;YAC1C,CAAA,EACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;YAAG,WAAU;sBACV,EAAE,2BAA2B;YAC5B,CAAA,CACA;aACF;aACL,kBACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;UAAG,WAAU;oBACV;UACC,CAAA,CAEF;;QAEL,eACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;SAAK,WAAU;mBAAf;UACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,KAACF,YAAAA,OAAD;YAAO,SAAQ;sBAAa,EAAE,kBAAkB;YAAS,CAAA,EACzD,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;YACE,IAAG;YACH,OAAO;YACP,WAAW,MAAM,YAAY,EAAE,OAAO,MAAM;YAC5C,aAAa,EAAE,wBAAwB;YACvC,CAAA,CACE;;UACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,KAACD,YAAAA,OAAD;YAAO,SAAQ;sBACZ,EAAE,wBAAwB;YACrB,CAAA,EACR,iBAAA,GAAA,kBAAA,KAACG,YAAAA,UAAD;YACE,IAAG;YACH,OAAO;YACP,WAAW,MAAM,kBAAkB,EAAE,OAAO,MAAM;YAClD,aAAa,EAAE,8BAA8B;YAC7C,MAAM;YACN,CAAA,CACE;;UACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;WAAK,WAAU;qBAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;YAAK,WAAU;sBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;aAAM,WAAU;uBACb,EAAE,2BAA2B;aACzB,CAAA,EACP,iBAAA,GAAA,kBAAA,KAAC,QAAD;aAAM,WAAU;uBACb,EAAE,iCAAiC;aAC/B,CAAA,CACH;eACN,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;YACE,SAAS;YACT,iBAAiB;YACjB,cAAY,EAAE,0BAA0B;YACxC,CAAA,CACE;;UACF;;QAEJ;;MAGF,CAAA,CACF;;IAGN,iBAAA,GAAA,kBAAA,KAAC,UAAD;KACE,MAAM;KACN,cAAc;KACF;KACH;KACM;KACP;KACR,SAAS,aAAa;AACpB,oBAAc,SAAS,QAAQ;AAC/B,iBAAW,SAAS,KAAK;AACzB,uBAAiB,SAAS,WAAW;AACrC,gBAAU,SAAS,IAAI;;KAEzB,CAAA;IAGD,0BAA0B,iBACzB,iBAAA,GAAA,kBAAA,KAAC,uBAAD;KAAuB,KAAK;eAC1B,iBAAA,GAAA,kBAAA,KAAC,oBAAD;MAAoB,OAAO;gBACzB,iBAAA,GAAA,kBAAA,KAAC,YAAD;OACE,MAAM;OACN,iBAAiB;OACjB,eAAe,gBAAgB,MAAM;OACrC,QAAQ;QACN,UAAU;QACV,gBAAgB;SAAC;SAAO;SAAU;SAAM;QACzC;OACD,CAAA;MACiB,CAAA;KACC,CAAA;IAEtB;;EACL,EAAA,CAAA;;;;AChcP,MAAMC,kBACJ;AAEF,SAAgB,aAAa,EAC3B,OACA,UACA,MACA,WACA,cAAc,OACd,eAAe,OACf,aAAa,OACb,UAAU,OACV,mBACA,kBACA,QACA,YACuC;CACvC,MAAM,EAAE,aAAa,iBAAiB;CACtC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,cAAc,gBAAgB;CACpC,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAwB,MAAM;CAC/C,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CACzD,MAAM,WAAWC,0BAAAA,aAAa;CAE9B,MAAM,WAAW,YAAY;CAC7B,MAAM,YACJ,cAAc,IACV,EAAE,2BAA2B,EAAE,OAAO,KAAK,CAAC,GAC5C,EAAE,6BAA6B,EAAE,OAAO,OAAO,UAAU,EAAE,CAAC;AAElE,QACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;EACE,MAAK;EACL,eAAe,SAAS,KAAK;EAC7B,WAAU;YAGV,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CAEG,YACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IACE,WAAU;IACV,OAAO,EACL,WAAW,aAAa,iBAAiB,iBAC1C;IACD,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,OAAD;IACE,WAAU;IACV,OAAO,EACL,WAAW,aAAa,iBAAiB,gBAC1C;IACD,CAAA,CACD,EAAA,CAAA,EAIL,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACG,YAAY;OACX,KAAK,WAAWD,kBAAgB,YAAYA;OAC5C,KAAK;OACL,MAAM;OACN,WACE;OACF,eAAe,YAAY,KAAK;OACjC,CAAC;MAGD,gBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;OACE,WAAWE,YAAAA,GACT,iDACA,aACI,gBACA,oCACL;OACD,UAAU,MAAM;AACd,UAAE,iBAAiB;;iBAGrB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,UAAD;QACE,SAAS;QACT,uBAAuB,oBAAoB,CAAC,WAAW;QACvD,CAAA;OACE,CAAA;OAIN,oBAAoB,YACpB,iBAAA,GAAA,kBAAA,KAAC,OAAD;OACE,WAAWD,YAAAA,GACT,kDACA,WACI,gBACA,oCACL;iBAEA,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;QACE,MAAK;QACL,UAAU,UAAU;AAClB,eAAM,iBAAiB;AACvB,0BAAiB,KAAK;;QAExB,WAAU;QACV,cAAY,EAAE,2BAA2B;kBAEzC,iBAAA,GAAA,kBAAA,KAACE,aAAAA,cAAD,EAAc,WAAU,0BAA2B,CAAA;QAC5C,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;QACE,MAAM;QACN,cAAc;QACd,OAAO,EAAE,2BAA2B;QACpC,SAAS;SACP,GAAI,mBACA,CACE;UACE,IAAI;UACJ,OAAO,cACH,EAAE,oBAAoB,GACtB,EAAE,kBAAkB;UACxB,UAAU;UACX,CACF,GACD,EAAE;SACN,GAAI,WAAW,SACX,CACE;UACE,IAAI;UACJ,OAAO,EAAE,cAAc;UACvB,UAAU;UACX,CACF,GACD,EAAE;SACN,GAAI,WAAW,WACX,CACE;UACE,IAAI;UACJ,OAAO,EAAE,gBAAgB;UACzB,UAAU;UACV,SAAS;UACV,CACF,GACD,EAAE;SACP;QACD,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;QAAqB,SAAA;kBACnB,iBAAA,GAAA,kBAAA,KAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM,EAAE,iBAAiB;SACnC,WAAU;SACV,cAAY,EAAE,2BAA2B;mBAEzC,iBAAA,GAAA,kBAAA,KAACH,aAAAA,cAAD,EAAc,WAAU,0BAA2B,CAAA;SAC5C,CAAA;QACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,MAACI,YAAAA,qBAAD;QACE,OAAM;QACN,UAAU,MAAM,EAAE,iBAAiB;kBAFrC;SAIG,oBACC,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;UAAkB,SAAS;oBAA3B,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EACE,WAAWR,YAAAA,GACT,gBACA,eAAe,gCAChB,EACD,CAAA,EACD,cACG,EAAE,oBAAoB,GACtB,EAAE,kBAAkB,CACP;;SAEpB,WAAW,UACV,iBAAA,GAAA,kBAAA,MAACO,YAAAA,kBAAD;UAAkB,SAAS;oBAA3B,CACE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,cAAc,CACA;;SAEpB,WAAW,YACV,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,uBAAD,EAAyB,CAAA,EACzB,iBAAA,GAAA,kBAAA,MAACH,YAAAA,kBAAD;UACE,SAAQ;UACR,SAAS;oBAFX,CAIE,iBAAA,GAAA,kBAAA,KAACI,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,gBAAgB,CACF;YAClB,EAAA,CAAA;SAEe;UACT,EAAA,CAAA;OAEb,CAAA;MAIP,oBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,kGAAmG,CAAA;MAInH,oBACC,iBAAA,GAAA,kBAAA,KAAC,UAAD;OACE,MAAK;OACL,WAAU;OACV,UAAU,MAAM;AACd,UAAE,iBAAiB;AACnB,0BAAkB;;OAEpB,cACE,cAAc,EAAE,oBAAoB,GAAG,EAAE,kBAAkB;iBAG7D,iBAAA,GAAA,kBAAA,KAACH,aAAAA,OAAD,EACE,WAAWR,YAAAA,GACT,yCACA,cACI,sCACA,iBACL,EACD,CAAA;OACK,CAAA;MAIX,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAACY,YAAAA,OAAD;QACE,WAAU;QACV,SAAQ;kBAEP;QACK,CAAA;OACJ,CAAA;MACF;QAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,SAAS,EAAE,kBAAkB;MAC3B,CAAA;KACD,CAAA,CACF;MACF;;EACC,CAAA;;;;AC9Qb,SAAgB,iBAAiB,EAC/B,eACA,YACA,aACA,kBACA,kBAC2C;CAC3C,MAAM,EAAE,MAAM,0BAA0B;AAExC,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;IACE,MAAK;IACL,SAAS;IACT,WAAU;cAET,kBAAkB,aACf,EAAE,sBAAsB,GACxB,EAAE,oBAAoB;IACnB,CAAA,EACT,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,WAAU;cACb,EAAE,yBAAyB,EAAE,OAAO,OAAO,cAAc,EAAE,CAAC;IACxD,CAAA,CACH;MACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;IACE,SAAS;IACT,UAAU,kBAAkB;IAC5B,SAAQ;IACR,MAAK;IACL,WAAU;cAET,EAAE,kBAAkB;IACd,CAAA,EACT,iBAAA,GAAA,kBAAA,KAAC,UAAD;IACE,MAAK;IACL,SAAS;IACT,WAAU;IACV,cAAY,EAAE,+BAA+B;cAE7C,iBAAA,GAAA,kBAAA,KAACC,aAAAA,GAAD,EAAG,WAAU,UAAW,CAAA;IACjB,CAAA,CACL;KACF;;;;;ACFV,MAAMC,cAAY;AAGlB,MAAM,aACJ;AAIF,SAAgB,uBACd,QACmB;CACnB,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWC,0BAAAA,aAAa;CAC9B,MAAM,EAAE,UAAU,WAAW,MAAM,kBAAkB,qBACnD,iBAAiB;CACnB,MAAM,qBAAqB,uBAAuB;CAClD,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CAEpC,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,GAAG;CAChD,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA+B,GAAG;CAC1D,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,QAAQ;CACnD,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAAwC,MAAM;CAClE,MAAM,CAAC,UAAU,gBAAA,GAAA,MAAA,UAAkC,OAAO;CAC1D,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,0BAAwC,IAAI,KAAK,CAAC;CACtE,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA8C,KAAK;CAC3E,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAA+C,KAAK;AAE7E,EAAA,GAAA,MAAA,iBAAgB;AACd,iCAAe,IAAI,KAAK,CAAC;IACxB,CAAC,YAAY,CAAC;AAEjB,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,iBAAiB,mBAAmB,WAAW,EAAE,IAAI;AACnE,eAAa,aAAa,MAAM;IAC/B,CAAC,WAAW,CAAC;CAChB,MAAM,kBAAA,GAAA,MAAA,QAAwC,KAAK;CAEnD,MAAM,WAAW,CACf,GAAGC,uBAAAA,eAAe,UAAU,KAAK,iBAAiB,WAAW,YAAY,CAC1E;CAED,MAAM,EACJ,MACA,WACA,oBACA,aACA,eACA,WAAA,GAAA,sBAAA,kBACmB;EACnB;EACA,SAAS,OAAO,EAAE,gBAAgB;GAChC,MAAM,WAAW,MAAM,IAAI,UAAU,aAAa;IAChD,iBAAiB,mBAAmB,KAAA;IACpC,qBAAqB,gBAAgB,QAAQ,cAAc,KAAA;IAC3D,gBAAgB;IAChB,eAAeH;IACf,MAAM;IACP,CAAC;AACF,UAAO;IACL,WAAW,SAAS;IACpB,YAAY,SAAS,KAAK,WAAW;IACtC;;EAEH,mBAAmB,aAAa,SAAS,cAAc,KAAA;EACvD,kBAAkB,KAAA;EAClB,iBAAiBI,sBAAAA;EAClB,CAAC;CAEF,MAAM,qBAAA,GAAA,MAAA,eACE,MAAM,MAAM,SAAS,SAAS,KAAK,UAAU,IAAI,EAAE,EACzD,CAAC,MAAM,MAAM,CACd;AAGD,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,SAAS,eAAe;AAC9B,MAAI,CAAC,OAAQ;EACb,MAAM,WAAW,IAAI,sBAClB,YAAY;AACX,OAAI,QAAQ,IAAI,kBAAkB,eAAe,CAAC,mBAChD,gBAAe;KAGnB;GAAE,WAAW;GAAG,YAAY;GAAS,CACtC;AACD,WAAS,QAAQ,OAAO;AACxB,eAAa,SAAS,YAAY;IACjC;EAAC;EAAe;EAAa;EAAmB,CAAC;CAGpD,MAAM,eAAe,YAAY,OAAO;CAExC,MAAM,yBAAA,GAAA,MAAA,cAAqC,IAAY,aAAsB;AAC3E,kBAAgB,SAAS;GACvB,MAAM,OAAO,IAAI,IAAI,KAAK;AAC1B,OAAI,SAAU,MAAK,IAAI,GAAG;OACrB,MAAK,OAAO,GAAG;AACpB,UAAO;IACP;IACD,EAAE,CAAC;CAEN,MAAM,mBAAA,GAAA,MAAA,mBAAoC;AACxC,MAAI,YAAY,SAAS,kBAAkB,OACzC,gCAAe,IAAI,KAAK,CAAC;MAEzB,gBAAe,IAAI,IAAI,kBAAkB,KAAK,MAAM,EAAE,GAAG,CAAC,CAAC;IAE5D,CAAC,YAAY,MAAM,kBAAkB,CAAC;CAEzC,MAAM,wBAAA,GAAA,MAAA,mBAAyC;AAC7C,iCAAe,IAAI,KAAK,CAAC;IACxB,EAAE,CAAC;CAGN,MAAM,oBAAA,GAAA,sBAAA,aAA+B;EACnC,aAAa,eAAuB;AAClC,OAAI,CAAC,iBACH,QAAO,QAAQ,uBAAO,IAAI,MAAM,yBAAyB,CAAC;AAE5D,UAAO,iBAAiB;IACtB,gBAAgB;IAChB,kBAAkB;IACnB,CAAC;;EAEJ,UAAU,OAAO,eAAe;AAC9B,SAAM,YAAY,cAAc,EAAE,UAAU,CAAC;GAC7C,MAAM,eAAe,YAAY,aAAa,SAAS;AAEvD,eAAY,aAA0B,WAAW,YAAY;AAC3D,QAAI,CAAC,QAAS,QAAO;AACrB,WAAO;KACL,GAAG;KACH,OAAO,QAAQ,MAAM,KAAK,UAAU;MAClC,GAAG;MACH,WAAW,KAAK,UAAU,KAAK,MAC7B,EAAE,OAAO,aAAa;OAAE,GAAG;OAAG,cAAc,CAAC,EAAE;OAAc,GAAG,EACjE;MACF,EAAE;KACJ;KACD;AAEF,UAAO;IAAE;IAAc,aAAa;IAAU;;EAEhD,UAAU,MAAM,aAAa,YAAY;AACvC,OAAI,SAAS,aACX,aAAY,aAAa,QAAQ,aAAa,QAAQ,aAAa;AAErE,aAAU;IAAE,OAAO,EAAE,0BAA0B;IAAE,MAAM;IAAS,CAAC;;EAEnE,YAAY,WAAW;AACrB,aAAU;IACR,OAAO,OAAO,eACV,EAAE,0BAA0B,GAC5B,EAAE,4BAA4B;IAClC,MAAM;IACP,CAAC;;EAEJ,iBAAiB;AACf,eAAY,kBAAkB,EAAE,UAAUD,uBAAAA,eAAe,UAAU,KAAK,CAAC;;EAE5E,CAAC;CAEF,MAAM,kBAAA,GAAA,MAAA,cACH,eAAuB;AACtB,MAAI,CAAC,iBAAkB;AACvB,mBAAiB,OAAO,WAAW;IAErC,CAAC,kBAAkB,iBAAiB,CACrC;CAED,MAAM,sBAAA,GAAA,MAAA,mBAAuC;AAC3C,OAAK,MAAM,MAAM,YACf,gBAAe,GAAG;AAEpB,iCAAe,IAAI,KAAK,CAAC;IACxB,CAAC,aAAa,eAAe,CAAC;CAGjC,MAAM,cAAA,GAAA,MAAA,cACH,eAAuB;AACtB,WAAS,aAAa,WAAW,OAAO;IAE1C,CAAC,SAAS,CACX;CAED,MAAM,EAAE,QAAQ,gBAAgB,WAAW,gBAAA,GAAA,sBAAA,aAA2B;EACpE,aAAa,eAAuB;AAClC,OAAI,CAAC,iBACH,QAAO,QAAQ,uBAAO,IAAI,MAAM,uBAAuB,CAAC;AAE1D,UAAO,iBAAiB,WAAW;;EAErC,iBAAiB;AACf,eAAY,kBAAkB,EAAE,UAAUA,uBAAAA,eAAe,UAAU,KAAK,CAAC;AACzE,aAAU;IAAE,OAAO,EAAE,0BAA0B;IAAE,MAAM;IAAW,CAAC;AACnE,sBAAmB,KAAK;;EAE1B,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,wBAAwB;IACjC,MAAM;IACN;IACD,CAAC;AACF,sBAAmB,KAAK;;EAE3B,CAAC;CAEF,MAAM,iBAAA,GAAA,MAAA,mBAAkC;AACtC,MAAI,mBAAmB,KAAM,gBAAe,gBAAgB;IAC3D,CAAC,iBAAiB,eAAe,CAAC;CAErC,MAAM,eAAA,GAAA,MAAA,eACE;EACJ;GAAE,OAAO,EAAE,gBAAgB;GAAE,OAAO;GAAS;EAC7C;GAAE,OAAO,EAAE,iBAAiB;GAAE,OAAO;GAAU;EAC/C;GAAE,OAAO,EAAE,mBAAmB;GAAE,OAAO;GAAe;EACtD;GAAE,OAAO,EAAE,mBAAmB;GAAE,OAAO;GAAc;EACtD,EACD,CAAC,EAAE,CACJ;CAED,MAAM,YAAY,eAChB,iBAAA,GAAA,kBAAA,KAAC,kBAAD;EACE,eAAe,YAAY;EAC3B,YAAY,kBAAkB;EAC9B,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,0BAAD;EACE,MACE,iBAAA,GAAA,kBAAA,KAAC,iBAAD;GACE,OAAO;GACP,eAAe;GACf,SAAS,EAAE,4BAA4B;GACvC,mBAAA;GACA,CAAA;EAEJ,UACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aACd,iBAAA,GAAA,kBAAA,KAACE,mBAAAA,YAAD;IACE,cAAc,WAAW,iBAAiB;IAC1C,aAAa;IACb,gBAAgB;IAChB,aAAa,EAAE,8BAA8B;IAChC;IACF;IACX,cAAc;IACd,CAAA;GACE,CAAA,EAEN,iBAAA,GAAA,kBAAA,KAAC,gBAAD;GAAgB,OAAO;GAAU,UAAU;GAAe,CAAA,CACzD,EAAA,CAAA;EAEL,CAAA;CAGJ,MAAM,SACJ,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,sBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,iFAAkF,CAAA;EAC7F,CAAA,EAEP,SACC,iBAAA,GAAA,kBAAA,MAAC,KAAD;EAAG,WAAU;YAAb,CAAuE,WAC7D,MAAM,QACZ;IAEL,EAAA,CAAA;CAGL,MAAM,UACJ,kBAAkB,WAAW,KAAK,CAAC,sBAAsB,CAAC;AAE5D,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,qBAAD,EAAA,UACG,qBACC,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;GAAQ,eAAe,SAAS,gBAAgB;GAAE,MAAK;aAAvD,CACE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,eAAgB,CAAA,EAC/B,EAAE,yBAAyB,CACrB;OACP,MACgB,CAAA;EACtB,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;GAAgB,WAAU;aACxB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;IAAgB,WAAU;cACvB,EAAE,sBAAsB;IACV,CAAA,EACF,CAAA;GACF,CAAA,EACN,CAAA,EACW,CAAA;EAC1B,iBAAA,GAAA,kBAAA,KAAC,qBAAD;GACa;GACX,SAAS;GACA;GACT,cAAc,wBAAwB;IACpC;IACA;IACA,YAAY;IACZ,gBAAgB,EAAE,yBAAyB;IAC3C;IACA,UAAU;KACR,uBAAuB,EAAE,mCAAmC;MAC1D,YAAY;MACZ;MACD,CAAC;KACF,iBAAiB,EAAE,4BAA4B;MAC7C,YAAY;MACZ;MACD,CAAC;KACF,iBAAiB,EAAE,4BAA4B,EAC7C,YAAY,aACb,CAAC;KACH;IACF,CAAC;GACM;GACR,aAAa;GACb,oBAAmB;aAElB,aAAa,SACZ,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAW;cACb,kBAAkB,KAAK,aAAa;KACnC,MAAM,YAAY,SAAS,QAAQ;KACnC,MAAM,WACJ,SAAS,aACT,WAAW,aACX,WAAW,YAAY,aACvB,WAAW,YAAY;KACzB,MAAM,YACJ,SAAS,eAAe,SAAS,OAAO,UAAU;KACpD,MAAM,UACJ,sBAAsB,SAAS,YAAY,MAAM;AAEnD,YACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;MAEE,OAAO,SAAS,SAAS,EAAE,oBAAoB;MACrC;MACV,MAAM,aAAa,SAAS;MACjB;MACX,aAAa,SAAS;MACtB,cAAA;MACA,YAAY,YAAY,IAAI,SAAS,GAAG;MAC/B;MACT,oBAAoB,aAClB,sBAAsB,SAAS,IAAI,SAAS;MAE9C,kBACE,yBACU,eAAe,SAAS,GAAG,GACjC,KAAA;MAEN,cAAc,WAAW,SAAS,GAAG;MACrC,UACE,yBACU,mBAAmB,SAAS,GAAG,GACrC,KAAA;MAEN,EAvBK,SAAS,GAuBd;MAEJ;IACE,CAAA,GAEN,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAW;cACb,kBAAkB,KAAK,aAAa;KACnC,MAAM,YAAY,SAAS,QAAQ;KACnC,MAAM,WACJ,SAAS,aACT,WAAW,aACX,WAAW,YAAY,aACvB,WAAW,YAAY;KACzB,MAAM,YACJ,SAAS,eAAe,SAAS,OAAO,UAAU;KACpD,MAAM,UACJ,sBAAsB,SAAS,YAAY,MAAM;KACnD,MAAM,aAAa,YAAY,IAAI,SAAS,GAAG;KAC/C,MAAM,QAAQ,SAAS,SAAS,EAAE,oBAAoB;AAEtD,YACE,iBAAA,GAAA,kBAAA,KAAC,kBAAD;MAEY;MACH;MACP,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;OACE,SAAQ;OACR,WAAU;iBAET,cAAc,IACX,EAAE,2BAA2B,EAAE,OAAO,KAAK,CAAC,GAC5C,EAAE,6BAA6B,EAC7B,OAAO,OAAO,UAAU,EACzB,CAAC;OACA,CAAA;MAEV,eAAe,SAAS,aAAa,SAAS,KAAK;MACnD,SACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,UAAD;OACE,SAAS;OACT,kBAAkB,YAChB,sBAAsB,SAAS,IAAI,YAAY,KAAK;OAEtD,cAAY,EAAE,wBAAwB,EAAE,OAAO,CAAC;OAChD,CAAA;MAEJ,UACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,oBACC,iBAAA,GAAA,kBAAA,KAAC,UAAD;OACE,MAAK;OACL,eAAe,eAAe,SAAS,GAAG;OAC1C,cACE,SAAS,eACL,EAAE,oBAAoB,GACtB,EAAE,kBAAkB;OAE1B,WAAU;iBAEV,iBAAA,GAAA,kBAAA,KAACC,aAAAA,OAAD,EACE,WAAWC,YAAAA,GACT,6BACA,SAAS,eACL,sCACA,wBACL,EACD,CAAA;OACK,CAAA,EAEV,YACE,WACC,iBAAA,GAAA,kBAAA,KAACV,YAAAA,QAAD;OACE,SAAQ;OACR,MAAK;OACL,WAAU;OACV,cAAY,EAAE,wBAAwB;OACtC,eAAe,oBAAoB,SAAS,GAAG;iBAE/C,iBAAA,GAAA,kBAAA,KAACW,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;OAC5B,CAAA,GAET,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;OAAqB,SAAA;iBACnB,iBAAA,GAAA,kBAAA,KAACb,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,WAAU;QACV,cAAY,EAAE,wBAAwB;kBAEtC,iBAAA,GAAA,kBAAA,KAACW,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;QAC5B,CAAA;OACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,MAACG,YAAAA,qBAAD;OAAqB,OAAM;iBAA3B,CACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;QACE,eAAe,WAAW,SAAS,GAAG;kBADxC,CAGE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,cAAc,CACA;WAClB,oBACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,uBAAD,EAAyB,CAAA,EACzB,iBAAA,GAAA,kBAAA,MAACF,YAAAA,kBAAD;QACE,SAAQ;QACR,eACE,mBAAmB,SAAS,GAAG;kBAHnC,CAME,iBAAA,GAAA,kBAAA,KAACG,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,gBAAgB,CACF;UAClB,EAAA,CAAA,CAEe;SACT,EAAA,CAAA,EAElB,EAAA,CAAA;MAEL,EAjGK,SAAS,GAiGd;MAEJ;IACE,CAAA;GAEY,CAAA;EAEtB,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;GACE,MAAM,qBAAqB;GAC3B,eAAe,SAAS;AACtB,QAAI,CAAC,KAAM,qBAAoB,KAAK;;GAEtC,OAAO,EAAE,wBAAwB;GACjC,SAAS,CACP;IACE,IAAI;IACJ,OAAO,EAAE,cAAc;IACvB,gBAAgB;AACd,SAAI,qBAAqB,KAAM,YAAW,iBAAiB;;IAE9D,EACD,GAAI,mBACA,CACE;IACE,IAAI;IACJ,OAAO,EAAE,gBAAgB;IACzB,SAAS;IACT,gBAAgB,mBAAmB,iBAAiB;IACrD,CACF,GACD,EAAE,CACP;GACD,CAAA;EAEF,iBAAA,GAAA,kBAAA,KAACC,yBAAAA,kBAAD;GACE,MAAM,oBAAoB;GAC1B,eAAe,SAAS;AACtB,QAAI,CAAC,QAAQ,CAAC,WAAY,oBAAmB,KAAK;;GAEpD,OAAO,EAAE,gCAAgC;GACzC,aAAa,EAAE,sCAAsC;GACrD,cAAc,WAAW,iBAAiB;GAC1C,MAAK;GACL,MAAK;aAEL,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACrB,YAAAA,QAAD;IACE,SAAQ;IACR,eAAe,mBAAmB,KAAK;IACvC,UAAU;cAET,EAAE,gBAAgB;IACZ,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;IACE,SAAQ;IACR,SAAS;IACT,UAAU;cAET,aAAa,iBAAA,GAAA,kBAAA,KAACsB,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,GAAG,EAAE,gBAAgB;IAC1D,CAAA,CACI,EAAA,CAAA;GACE,CAAA;EAClB,EAAA,CAAA;;;;AC5lBP,MAAa,6BAA6B,IAAI,IAAY;CACxD;CACA;CACA;CACD,CAAC;;;ACKF,MAAMC,kBACJ;AAUF,SAAS,YACP,MACA,MACA,QAQA;AACA,KAAI,SAAS,UAAW,QAAO,OAAO;AACtC,KAAI,SAAS,iBAAkB,QAAO,OAAO;AAC7C,KAAI,SAAS,OAAQ,QAAO,OAAO;AACnC,KAAI,SAAS,QAAS,QAAO,OAAO;AACpC,KAAI,SAAS,QAAS,QAAO,OAAO;AACpC,QAAO,OAAO;;AAGhB,SAAS,kBAAkB,SAAkB;AAC3C,KAAI,WAAW,KAAM,QAAO;CAC5B,MAAM,OAAO,KAAK,MAAM,UAAU,GAAG;CACrC,MAAM,OAAO,UAAU;AACvB,QAAO,GAAG,OAAO,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,KAAK,CAAC,SAAS,GAAG,IAAI;;AAG1E,SAAS,YAAY,aAA6B,UAA0B;AAC1E,KAAI,YACF,QAAO,YAAY,aAAa;AAElC,KAAI,UAAU;EACZ,MAAM,WAAW,SAAS,MAAM,IAAI;EACpC,MAAM,YAAY,SAAS,SAAS,SAAS,IAAI,MAAM,IAAI,CAAC;AAC5D,MAAI,UACF,QAAO,UAAU,aAAa;;AAGlC,QAAO;;AAGT,SAAwB,kBAAkB,EACxC,OACA,cACA,oBAAoB,GACpB,oBAC4C;CAC5C,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,wBACJ,QACA,MACA,MACG;AACH,KAAG,iBAAiB;AACpB,qBAAmB,QAAQ,KAAK;;CAGlC,MAAM,mBAAmB,UAAkB;AACzC,iBAAe,MAAM;;CAGvB,MAAM,cAAc,gBAAgB;CAEpC,MAAM,sBAAsB;AAC1B,MAAI,CAAC,SAAS,MAAM,WAAW,EAC7B,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAACC,aAAAA,WAAD,EAAW,WAAU,mBAAoB,CAAA;MACrC,CAAA;KACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACZ,EAAE,oBAAoB;MACnB,CAAA;KACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACZ,EAAE,gCAAgC;MAC/B,CAAA;KACF;;GACF,CAAA;AAIV,SACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACZ,MAAM,KAAK,MAAM,UAAU;IAC1B,MAAM,aAAa,KAAK;IACxB,MAAM,WACJ,KAAK,aACL,YAAY,aACZ,YAAY,wBACZD;IACF,MAAM,QAAQ,KAAK,SAAS,YAAY,SAAS,EAAE,kBAAkB;IACrE,MAAM,WAAW,YAAY,iBAAiB,YAAY;IAC1D,MAAM,QACJ,YAAY,WAAW,SAAS,QAAQ,aAAa,GAAG,CAAC,GAAG,IACxD,WACA;IACN,MAAM,OAAO,KAAK,QAAQ,YAAY;IACtC,MAAM,WAAW,YAAY,KAAK,iBAAiB,MAAM;KACvD,SAAS,EAAE,iBAAiB;KAC5B,YAAY,EAAE,oBAAoB;KAClC,MAAM,EAAE,cAAc;KACtB,OAAO,EAAE,mBAAmB;KAC5B,OAAO,EAAE,mBAAmB;KAC5B,OAAO,EAAE,qBAAqB;KAC/B,CAAC;IACF,MAAM,UAAU,SAAS;IACzB,MAAM,UAAU,SAAS;IACzB,MAAM,YAAY,KAAK,oBAAoB;IAC3C,MAAM,cAAc,2BAA2B,IAC7C,KAAK,mBAAmB,GACzB;IACD,MAAM,cAAc,kBAClB,KAAK,YAAY,YAAY,SAC9B;IACD,MAAM,WAAW,YACf,KAAK,gBAAgB,YAAY,cACjC,KAAK,aAAa,YAAY,UAC/B;AAGD,WACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAEE,eAAe,gBAAgB,MAAM;KACrC,WAAW,0GANI,UAAU,oBAOV,gBAAgB;eAJjC,CAQE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACG,YAAY;OACX,KAAK;OACL,KAAK;OACL,MAAM;OACN,WAAW;OACZ,CAAC,EAED,WACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;OAAK,WAAU;iBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAACE,aAAAA,MAAD,EAAM,WAAU,iCAAkC,CAAA;QAC9C,CAAA;OACF,CAAA,CAEJ;SAGN,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OAEG,cACC,iBAAA,GAAA,kBAAA,MAAC,UAAD;QACE,UAAU,MACR,qBACE,YAAY,MAAM,KAAK,IACvB,KAAK,iBACL,EACD;QAEH,WAAU;kBARZ,CAUE,iBAAA,GAAA,kBAAA,KAAC,QAAD;SAAM,WAAU;mBAAgB;SAAa,CAAA,EAC7C,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EAAc,WAAU,+FAAgG,CAAA,CACjH;YAET,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,QAAD;SAAM,WAAU;mBAAgB;SAAa,CAAA;QACzC,CAAA;OAIP,aAAa,SACZ,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACZ;QACG,CAAA;OAIP,WACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACZ,eAAe,EAAE,mBAAmB;QACjC,CAAA;OAIP,WACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACZ,YAAY,EAAE,2BAA2B;QACtC,CAAA;OAIR,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,QAAD;SAAM,WAAU;mBACb;SACI,CAAA;QACH,CAAA;OACF;QACF;OA3EC,KAAK,GA2EN;KAER;GACE,CAAA;;AAIV,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,EAAE,oCAAoC,EACrC,OAAO,OAAO,MAAM,OAAO,EAC5B,CAAC;IACC,CAAA;GACD,CAAA,EAGN,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aAAoC,eAAe;GAAO,CAAA,CACrE;;;;;AC3MV,MAAMC,kBACJ;AASF,SAAgB,qBAAqB,EACnC,YACA,YACA,QACA,oBAC+C;CAC/C,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,EAAE,UAAU,SAAS,iBAAiB;CAC5C,MAAM,qBAAqB,uBAAuB;CAClD,MAAM,CAAC,2BAA2B,iCAAA,GAAA,MAAA,UAAyC,EAAE;CAG7E,MAAM,EAAE,MAAM,kBAAkB,eAAA,GAAA,sBAAA,UAAuB;EACrD,UAAUC,uBAAAA,eAAe,UAAU,OAAO,OAAO,WAAW,EAAE,OAAO;EACrE,eAAe,IAAI,UAAU,gBAAgB,OAAO,WAAW,EAAE,OAAO;EACzE,CAAC;CAGF,MAAM,EACJ,WACA,SAAS,kBACT,OAAO,mBACLC,uBAAAA,aAAa,EAAE,IAAI,OAAO,WAAW,EAAE,EAAE,WAAW,KAAA,GAAW,OAAO;CAE1E,MAAM,WAAW,kBAAkB;CAEnC,MAAM,UAAU,sBAAsB,UAAU,YAAY,MAAM;CAClE,MAAM,eAAe,UAAU,SAAS;CAKxC,MAAM,iBACJ,UAAU,OACN,QACC,SACC,KAAK,oBAAoB,aACzB,KAAK,oBAAoB,iBAC5B,CACA,KAAK,SAAS,KAAK,WAAW,CAC9B,QAAQ,MAAkC,CAAC,CAAC,EAAE,IAAI,EAAE;CAKzD,MAAM,gBACJ,UAAU,OAAO,QACd,SACC,KAAK,oBAAoB,YAAY,KAAK,oBAAoB,OACjE,IAAI,EAAE;CAMT,MAAM,uBACJ,cAAc,8BAA8B,cAAc;CAG5D,MAAM,eACJ,sBAAsB,aACtB,sBAAsB,YAAY,aAClC,sBAAsB,YAAY,wBAClCH;CACF,MAAM,qBACJ,UAAU,eACV,UAAU,yBAAyB,eACnC;CAGF,MAAM,eACJ,sBAAsB,QAAQ,sBAAsB,YAAY;CAClE,MAAM,eACJ,iBAAiB,UACZ,sBAAsB,aACvB,sBAAsB,YAAY,aAClC,KAAA,IACA,KAAA;CACN,MAAM,UAAU,iBAAiB,WAAW,CAAC,CAAC;AAE9C,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACI,4BAAAA,qBAAD,EAAA,UACG,UACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;IACE,SAAQ;IACR,MAAK;IACL,eAAe,SAAS,aAAa,WAAW,OAAO;cAHzD,CAKE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,iBAAkB,CAAA,EACnC,EAAE,cAAc,CACV;;GACL,CAAA,GACJ,MACgB,CAAA;EACtB,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;GAAgB,WAAU;aAA1B;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KACE,MAAK;KACL,UAAU,MAAM;AACd,QAAE,gBAAgB;AAClB,OACE,kBAAkB,WAClB,iBACO,SAAS,YAAY,IAC3B;;eAGJ,EAAE,sBAAsB;KACV,CAAA,EACF,CAAA;IACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;KAAgB,WAAU;eACvB,gBAAgB,EAAE,+BAA+B;KACnC,CAAA,EACF,CAAA;IACF;MACN,CAAA,EACW,CAAA;EAC1B,iBAAA,GAAA,kBAAA,MAAC,uBAAD;GACa;GACX,UAAU,CAAC;GACX,iBAAiB,EAAE,qBAAqB;GACxC,OAAO;GACP,aAAa;GACb,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,uBAAD;KACgB;KACA;KACA;KACL;KACT,YAAY,EAAE,uBAAuB;KACrC,kBAAkB,EAAE,yBAAyB;KAC7C,kBAAkB,EAAE,qBAAqB;KACzC,kBAAkB,EAAE,qBAAqB;KACzC,CAAA;IACE,CAAA;GAER,SACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;IACE,aAAa;IACC;IACd,WAAW,iBAAiB,OAAO,aAAa;IAC9B;IACT;IACT,cAAc,OAAO,WAAW;IAChC,gBAAe;IACf,CAAA;aA7BN,CAgCE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,WAAD,EAAW,WAAU,0BAA2B,CAAA,EAEhD,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CAEE,iBAAA,GAAA,kBAAA,KAAC,oBAAD;KACE,UAAU;KACV,iBAAiB,cACf,aAAa,WAAW,OAAO,UAAU,CAAC;KAE5C,CAAA,EAGF,iBAAA,GAAA,kBAAA,KAAC,mBAAD;KACE,OAAO;KACP,cAAc;KACd,mBAAmB;KACnB,mBAAmB,QAAQ,mBAAmB;AAC5C,UAAI,CAAC,2BAA2B,IAAI,kBAAkB,GAAG,CAAE;AAC3D,UAAI,mBAAmB,UACrB,cAAa,WAAW,OAAO,OAAO,CAAC;eAC9B,mBAAmB,OAC5B,cAAa,QAAQ,OAAO,OAAO,CAAC;eAC3B,mBAAmB,SAC5B,cAAa,SAAS,OAAO,OAAO,CAAC;;KAGzC,CAAA,CACE;MACgB;;EACvB,EAAA,CAAA;;;;ACtJP,MAAM,uBAAA,GAAA,MAAA,eACJ,KAAA,EACD;AAED,MAAM,oBAAoB,WAAkD;CAC1E,OAAO,SAAS;CAChB,aAAa;CACb,WAAW;CACX,YAAY;CACZ,eAAe;CAChB;AAED,MAAM,qBAAqB,cAAgD;CACzE,IAAI,UAAU;CACd,OAAO,UAAU,SAAS;CAC1B,aAAa,UAAU,eAAe;CACtC,WAAW,UAAU,aAAa;CAClC,MAAM,UAAU,QAAQ;CACxB,aAAa,UAAU,eAAe;CACtC,aAAa,UAAU,eAAe;CACtC,+BACE,UAAU,iCAAiC;CAC7C,QAAQ,UAAU,UAAU;CAC5B,iBAAiB,UAAU,mBAAmB;CAC9C,iBAAiB,UAAU,mBAAmB;CAC9C,WAAW,UAAU,WAAW,KAAK,YAAY,QAAQ,IAAI,IAAI,EAAE;CACnE,yBAAyB,UAAU,2BAA2B;CAC/D;AAED,SAAgB,qBAAqB,EACnC,UACA,YAIoB;CACpB,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,eAAA,GAAA,MAAA,eAA4B,kBAAkB,SAAS,EAAE,CAAC,SAAS,CAAC;CAC1E,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAAuC,YAAY;CAChE,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UACvB,EAAE,CACH;CAED,MAAM,WAAA,GAAA,MAAA,eAAwB;AAC5B,SAAO,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,YAAY;IAC1D,CAAC,MAAM,YAAY,CAAC;CAEvB,MAAM,mBAAA,GAAA,MAAA,QAAiC,KAAK,UAAU,SAAS,CAAC;AAEhE,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,aAAa,KAAK,UAAU,SAAS;AAC3C,MAAI,eAAe,gBAAgB,QAAS;AAC5C,kBAAgB,UAAU;AAC1B,UAAQ,kBAAkB,SAAS,CAAC;IACnC,CAAC,SAAS,CAAC;CAEd,MAAM,eAAA,GAAA,MAAA,cAEF,OACA,UACG;AACH,WAAS,UAAU;GAAE,GAAG;IAAO,QAAQ;GAAO,EAAE;AAChD,MAAI,iBAAiB,OACnB,sBAAqB,SAAS;GAC5B,MAAM,OAAO,EAAE,GAAG,MAAM;AACxB,UAAO,KAAK;AACZ,UAAO;IACP;IAGN,CAAC,iBAAiB,CACnB;CAED,MAAM,aAAA,GAAA,MAAA,cAEF,YAGG;AACH,WAAS,SAAS;GAGhB,MAAM,UAAU,EAAE,GADhB,KAAK,2BAA2B,iBAAiB,KAAK,MAAM,EAC7B;AAEjC,OAAI,QAAQ,UAAU,KAAA,EAAW,SAAQ,QAAQ,QAAQ,SAAS;AAClE,OAAI,QAAQ,gBAAgB,KAAA,EAC1B,SAAQ,cAAc,QAAQ,eAAe;AAC/C,OAAI,QAAQ,cAAc,KAAA,EACxB,SAAQ,YAAY,QAAQ,aAAa;AAC3C,OAAI,QAAQ,eAAe,KAAA,EACzB,SAAQ,aAAa,QAAQ,cAAc;AAC7C,OAAI,QAAQ,kBAAkB,KAAA,EAC5B,SAAQ,gBAAgB,QAAQ,iBAAiB;GAEnD,MAAM,WACJ,QAAQ,SAAS,KAAA,IAAa,QAAQ,QAAQ,OAAQ,KAAK;AAE7D,UAAO;IACL,GAAG;IACH,MAAM;IACN,yBAAyB;IAC1B;IACD;IAEJ,EAAE,CACH;CAED,MAAM,gBAAA,GAAA,MAAA,mBAAiC;EACrC,MAAM,SAA2B,EAAE;AACnC,MAAI,CAAC,KAAK,SAAS,CAAC,KAAK,MAAM,MAAM,CACnC,QAAO,QAAQ,EAAE,0BAA0B;AAE7C,sBAAoB,OAAO;AAC3B,SAAO,OAAO,KAAK,OAAO,CAAC,WAAW;IACrC,CAAC,KAAK,OAAO,EAAE,CAAC;CAEnB,MAAM,mBAAA,GAAA,MAAA,cAA+B,UAAmC;AACtE,uBAAqB,SAAS;GAC5B,MAAM,OAAO,EAAE,GAAG,MAAM;AACxB,UAAO,KAAK;AACZ,UAAO;IACP;IACD,EAAE,CAAC;CAEN,MAAM,aAAA,GAAA,MAAA,cACH,iBAAgC;AAC/B,UAAQ,kBAAkB,gBAAgB,SAAS,CAAC;AACpD,sBAAoB,EAAE,CAAC;IAEzB,CAAC,SAAS,CACX;CAED,MAAM,SAAA,GAAA,MAAA,gBACG;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,oBAAoB,UAArB;EAAqC;EAClC;EAC4B,CAAA;;AAInC,SAAgB,kBAAkB;CAChC,MAAM,WAAA,GAAA,MAAA,KAAc,oBAAoB;AACxC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,2DAA2D;AAE7E,QAAO;;;;ACvMT,MAAM,wBAAA,GAAA,MAAA,eAEJ,KAAA,EAAU;AAEZ,SAAgB,mBAAmB;CACjC,MAAM,WAAA,GAAA,MAAA,KAAc,qBAAqB;AACzC,KAAI,CAAC,QACH,OAAM,IAAI,MACR,6DACD;AAEH,QAAO;;AAGT,SAAgB,sBAAsB,EACpC,UACA,eAAe,EAAE,IAIG;CACpB,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAyC,aAAa;CACpE,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UACO,aAAa;CAE5C,MAAM,kBAAA,GAAA,MAAA,QAAgC,KAAK,UAAU,aAAa,CAAC;AAEnE,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,aAAa,KAAK,UAAU,aAAa;AAC/C,MAAI,eAAe,eAAe,QAAS;AAC3C,iBAAe,UAAU;AACzB,WAAS,aAAa;AACtB,qBAAmB,aAAa;IAC/B,CAAC,aAAa,CAAC;CAElB,MAAM,WAAA,GAAA,MAAA,eACE,KAAK,UAAU,MAAM,KAAK,KAAK,UAAU,gBAAgB,EAC/D,CAAC,OAAO,gBAAgB,CACzB;CAED,MAAM,WAAA,GAAA,MAAA,cAAuB,SAA2B;AACtD,YAAU,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC;IAClC,EAAE,CAAC;CAEN,MAAM,cAAA,GAAA,MAAA,cAA0B,WAAmB;AACjD,YAAU,SAAS,KAAK,QAAQ,SAAS,KAAK,OAAO,OAAO,CAAC;IAC5D,EAAE,CAAC;CAEN,MAAM,eAAA,GAAA,MAAA,cAEF,aAGG;AACH,YAAU,SACR,OAAO,aAAa,aAAa,SAAS,KAAK,GAAG,SACnD;IAEH,EAAE,CACH;CAED,MAAM,SAAA,GAAA,MAAA,gBACG;EACL;EACA;EACA;EACA;EACA;EACA;EACD,GACD;EAAC;EAAO;EAAS;EAAY;EAAa;EAAQ,CACnD;AAED,QACE,iBAAA,GAAA,kBAAA,KAAC,qBAAqB,UAAtB;EAAsC;EACnC;EAC6B,CAAA;;;;ACpFpC,SAAgB,mBAAmB,EACjC,YACA,YACA,UACA,YAC6C;CAC7C,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,EAAE,MAAM,SAAS,gBAAgB,iBAAiB;CACxD,MAAM,EAAE,SAAS,iBAAiB,kBAAkB;CACpD,MAAM,EAAE,kBAAkB,WAAW,aAAa,iBAAiB;CACnE,MAAM,WAAWC,0BAAAA,aAAa;CAC9B,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA4B,MAAM;CACvD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B,MAAM;CACzD,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,MAAM;CAEnD,MAAM,eAAA,GAAA,MAAA,eAA4B;AAChC,SAAO,CAAC,EAAE,KAAK,SAAS,KAAK,MAAM,MAAM;IACxC,CAAC,KAAK,MAAM,CAAC;CAEhB,MAAM,UAAU,eAAe;CAC/B,MAAM,aAAa,cAAc;CAEjC,MAAM,eAAe,YAAY;AAC/B,MAAI,CAAC,cAAc,CAAC,iBAAkB;AACtC,gBAAc,KAAK;AACnB,MAAI;AACF,SAAM,iBAAiB,OAAO,WAAW,CAAC;AAC1C,aAAU;IAAE,OAAO,EAAE,+BAA+B;IAAE,MAAM;IAAW,CAAC;AACxE,YAAS,YAAY;WACd,OAAO;AACd,aAAU;IACR,OAAO,EAAE,wBAAwB;IACjC,MAAM;IACN;IACD,CAAC;YACM;AACR,iBAAc,MAAM;AACpB,mBAAgB,MAAM;;;AAI1B,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,qBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACG,cACC,qBACC,WACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;IACE,SAAQ;IACR,MAAK;IACL,WAAU;IACV,cAAY,EAAE,wBAAwB;IACtC,UAAU;IACV,eAAe,iBAAiB,KAAK;cAErC,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;IAC5B,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;IACE,MAAM;IACN,cAAc;IACd,OAAO,EAAE,wBAAwB;IACjC,SAAS,CACP;KACE,IAAI;KACJ,OAAO,EAAE,gBAAgB;KACzB,SAAS;KACT,gBAAgB,gBAAgB,KAAK;KACtC,CACF;IACD,CAAA,CACD,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;IAAqB,SAAA;cACnB,iBAAA,GAAA,kBAAA,KAACJ,YAAAA,QAAD;KACE,SAAQ;KACR,MAAK;KACL,WAAU;KACV,cAAY,EAAE,wBAAwB;KACtC,UAAU;eAEV,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EAAc,WAAU,UAAW,CAAA;KAC5B,CAAA;IACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,KAACI,YAAAA,qBAAD;IAAqB,OAAM;cACzB,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;KACE,eAAe,gBAAgB,KAAK;KACpC,WAAU;eAFZ,CAIE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,gBAAgB,CACF;;IACC,CAAA,CACT,EAAA,CAAA,GAEnB,iBAAA,GAAA,kBAAA,KAACP,YAAAA,QAAD;IACE,eAAe;AACb,eAAU,CAAC,YAAY,GAAG;;IAE5B,UAAU,cAAc,CAAC,WAAW,CAAC;IACrC,MAAK;cAEJ,WAAW,iBAAA,GAAA,kBAAA,KAACQ,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,GAAG,EAAE,cAAc;IACtD,CAAA,CACL;MACc,CAAA;EACtB,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;GAAgB,WAAU;aAA1B;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KACE,MAAK;KACL,UAAU,MAAM;AACd,QAAE,gBAAgB;AAClB,eAAS,YAAY;;eAGtB,EAAE,sBAAsB;KACV,CAAA,EACF,CAAA;IACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;KAAgB,WAAU;eACvB,aACG,EAAE,2BAA2B,GAC7B,EAAE,6BAA6B;KACpB,CAAA,EACF,CAAA;IACF;MACN,CAAA,EACW,CAAA;EAC1B,iBAAA,GAAA,kBAAA,KAACC,yBAAAA,kBAAD;GACE,MAAM;GACN,eAAe,SAAS;AACtB,QAAI,CAAC,QAAQ,CAAC,WAAY,iBAAgB,MAAM;;GAElD,OAAO,EAAE,gCAAgC;GACzC,aAAa,EAAE,sCAAsC;GACrD,cAAc,WAAW,iBAAiB;GAC1C,MAAK;GACL,MAAK;aAEL,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACjB,YAAAA,QAAD;IACE,SAAQ;IACR,UAAU;IACV,eAAe,gBAAgB,MAAM;cAEpC,EAAE,gBAAgB;IACZ,CAAA,EACT,iBAAA,GAAA,kBAAA,KAACA,YAAAA,QAAD;IACE,SAAQ;IACR,UAAU,MAAM;AACd,OAAE,gBAAgB;AACb,mBAAc;;IAErB,UAAU;cAET,aAAa,iBAAA,GAAA,kBAAA,KAACQ,YAAAA,SAAD,EAAS,WAAU,UAAW,CAAA,GAAG,EAAE,gBAAgB;IAC1D,CAAA,CACI,EAAA,CAAA;GACE,CAAA;EAClB,EAAA,CAAA;;;;ACpMP,SAAgB,sBAAyC;CACvD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,EAAE,MAAM,aAAa,qBAAqB,iBAAiB;AAEjE,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;IAAI,WAAU;cACX,EAAE,wBAAwB;IACxB,CAAA,EACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,WAAU;cACV,EAAE,4BAA4B;IAC7B,CAAA,CACA,EAAA,CAAA,EAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf;MACE,iBAAA,GAAA,kBAAA,KAACU,YAAAA,OAAD;OAAO,WAAU;iBACd,EAAE,sBAAsB;OACnB,CAAA;MACR,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;OACE,MAAK;OACL,aAAa,EAAE,4BAA4B;OAC3C,OAAO,KAAK;OACZ,WAAW,MAAM,YAAY,SAAS,EAAE,OAAO,MAAM;OACrD,UAAA;OACA,WAAWC,YAAAA,GACT,iBAAiB,SAAS,0BAC3B;OACD,CAAA;MACD,iBAAiB,SAChB,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,iBAAiB;OAChB,CAAA;MAEF;QAEN,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAACF,YAAAA,OAAD;MAAO,WAAU;gBACd,EAAE,2BAA2B;MACxB,CAAA,EACR,iBAAA,GAAA,kBAAA,KAAC,OAAD;MAAK,WAAU;gBACb,iBAAA,GAAA,kBAAA,KAAC,gBAAD;OACE,OAAO,KAAK,eAAe;OAC3B,WAAW,UAAU,YAAY,eAAe,MAAM;OACtD,WAAU;OACV,iBAAgB;OAChB,aAAa,EAAE,mCAAmC;OAClD,CAAA;MACE,CAAA,CACF;OACF;MACF;;EACF,CAAA;;;;;;AClDV,SAAgB,YAAY,EAC1B,UACA,IACA,mBAAmB,QACmB;CACtC,MAAM,EACJ,YACA,WACA,YACA,WACA,YACA,gBAAA,GAAA,cAAA,aACc;EAAE;EAAI,UAAU,CAAC;EAAkB,CAAC;AAQpD,QACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;EAAI,KAAK;EAAY,OAPT;GACZ,WAAWG,cAAAA,IAAI,UAAU,SAAS,UAAU;GAC5C;GACA,SAAS,aAAa,KAAM;GAC7B;EAGoC,GAAI;YACpCC,MAAAA,QAAM,SAAS,IAAI,WAAW,OAAO,UAAU;AAC9C,OAAI,UAAU,KAAK,iBACjB,QAAOA,MAAAA,QAAM,aAAa,OAA6B,EACrD,GAAG,WACJ,CAAC;AAEJ,UAAO;IACP;EACC,CAAA;;;;;ACCT,SAAS,cAAc,gBAAwB,MAA2B;CACxE,MAAM,IAAI,MAAM,aAAa,IAAI;AACjC,KAAI,mBAAmB,UAAU;AAC/B,MAAI,MAAM,WAAW,EAAE,SAAS,QAAQ,CAAE,QAAOC,aAAAA;AACjD,SAAOC,aAAAA;;AAET,KAAI,mBAAmB,OAAQ,QAAOC,aAAAA;AACtC,KAAI,mBAAmB,UAAW,QAAOC,aAAAA;AACzC,KAAI,mBAAmB,iBAAkB,QAAOC,aAAAA;AAChD,QAAOD,aAAAA;;AAGT,SAAS,eACP,gBACA,gBACA,GACA;AACA,SAAQ,gBAAR;EACE,KAAK,UACH,QAAO,EAAE,iBAAiB;EAC5B,KAAK,iBACH,QAAO,EAAE,yBAAyB;EACpC,KAAK,UAAU;GACb,MAAM,OAAO,gBAAgB,aAAa,IAAI;AAC9C,OAAI,SAAS,WAAW,KAAK,SAAS,QAAQ,CAC5C,QAAO,EAAE,mBAAmB;AAC9B,OAAI,SAAS,WAAW,KAAK,SAAS,QAAQ,CAC5C,QAAO,EAAE,mBAAmB;AAC9B,UAAO,kBAAkB,EAAE,qBAAqB;;EAElD,KAAK,OACH,QAAO,EAAE,cAAc;EACzB,QACE,QAAO,gBAAgB,QAAQ,MAAM,IAAI,IAAI,EAAE,iBAAiB;;;AAItE,SAAS,YAAY,gBAAwB;AAC3C,SAAQ,gBAAR;EACE,KAAK,SACH,QAAO,iBAAA,GAAA,kBAAA,KAACF,aAAAA,OAAD,EAAO,WAAU,gCAAiC,CAAA;EAC3D,KAAK,OACH,QAAO,iBAAA,GAAA,kBAAA,KAACC,aAAAA,UAAD,EAAU,WAAU,gCAAiC,CAAA;EAC9D,KAAK,UACH,QAAO,iBAAA,GAAA,kBAAA,KAACC,aAAAA,aAAD,EAAa,WAAU,gCAAiC,CAAA;EACjE,KAAK,iBACH,QAAO,iBAAA,GAAA,kBAAA,KAACC,aAAAA,SAAD,EAAS,WAAU,gCAAiC,CAAA;EAC7D,QACE,QAAO,iBAAA,GAAA,kBAAA,KAACH,aAAAA,OAAD,EAAO,WAAU,gCAAiC,CAAA;;;AAuB/D,SAAgB,cAAc,EAC5B,OACA,UACA,cACA,iBACA,mBAAmB,QACqB;CACxC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWI,0BAAAA,aAAa;CAC9B,MAAM,CAAC,cAAc,oBAAA,GAAA,MAAA,UAA2C,KAAK;CAErE,MAAM,WAAA,GAAA,YAAA,aAAA,GAAA,YAAA,WACMC,YAAAA,cAAc,GAAA,GAAA,YAAA,WACdC,YAAAA,gBAAgB,EACxB,kBAAkBC,cAAAA,6BACnB,CAAC,CACH;CAED,MAAM,iBAAiB,UAAwB;EAC7C,MAAM,EAAE,QAAQ,SAAS;AACzB,MAAI,OAAO,OAAO,MAAM,MAAM,SAO5B,WAAA,GAAA,cAAA,WAAmB,OANF,MAAM,WACpB,SAAS,KAAK,IAAI,UAAU,KAAK,OAAO,GAC1C,EACgB,MAAM,WACpB,SAAS,KAAK,IAAI,UAAU,KAAK,MAAM,GACzC,CAC4C,CAAC;;CAIlD,MAAM,YAAwB,MAAM,KAAK,MAAM,WAAW;EACxD,IAAI,KAAK,MAAM,QAAQ;EACvB,iBAAiB,KAAK;EACtB,eAAe,KAAK,YAAY;EAChC,YAAY,KAAK;EACjB,OAAO,QAAQ;EACf,OACE,KAAK,SACL,KAAK,YAAY,SACjB,GAAG,KAAK,gBAAgB,IAAI,KAAK,YAAY;EAC/C,WAAW,KAAK,aAAa,KAAK,YAAY,aAAa;EAC3D,MAAM,KAAK,QAAQ,KAAK,YAAY,QAAQ;EAC7C,EAAE;CAEH,MAAM,eACJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,SAAD;GAAO,WAAU;aAAjB,CACE,iBAAA,GAAA,kBAAA,KAAC,SAAD;IAAO,WAAU;cACf,iBAAA,GAAA,kBAAA,MAAC,MAAD,EAAA,UAAA;KACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,EAAE,uBAAuB;MACvB,CAAA;KACL,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,EAAE,sBAAsB;MACtB,CAAA;KACL,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,EAAE,sBAAsB;MACtB,CAAA;KACL,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,EAAE,yBAAyB;MACzB,CAAA;KACF,EAAA,CAAA;IACC,CAAA,EACR,iBAAA,GAAA,kBAAA,KAAC,SAAD;IAAO,WAAU;cACd,UAAU,KAAK,QACd,iBAAA,GAAA,kBAAA,MAAC,aAAD;KAEE,IAAI,IAAI,GAAG,UAAU;KACH;eAHpB;MAKE,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBACZ,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAW,mBAAmB,gBAAgB;mBACjD,iBAAA,GAAA,kBAAA,KAACC,aAAAA,cAAD,EACE,WAAW,WAAW,mBAAmB,0BAA0B,8BACnE,CAAA;SACE,CAAA,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACZ,IAAI;SACD,CAAA,CACF;;OACH,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBACZ,iBAAA,GAAA,kBAAA,MAAC,OAAD;QAAK,WAAU;kBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACZ,IAAI,YACH,iBAAA,GAAA,kBAAA,KAAC,OAAD;UACE,KAAK,OAAO,IAAI,UAAU;UAC1B,KAAK,OAAO,IAAI,MAAM;UACtB,WAAU;UACV,CAAA,GAEF,YAAY,IAAI,mBAAmB,GAAG;SAEpC,CAAA,EACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;UAAK,WAAU;oBACZ,IAAI,SAAS,EAAE,kBAAkB;UAC9B,CAAA;SACF,CAAA,CACF;;OACH,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBACZ,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBAOT,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KANS,cACX,IAAI,mBAAmB,IACvB,IAAI,QAAQ,GACb,EAGG,EAAM,WAAU,mBAAoB,CAAA,EACnC,eACC,IAAI,mBAAmB,IACvB,IAAI,QAAQ,IACZ,EACD,CACA,EAAA,CAAA;QAGH,CAAA;OACH,CAAA;MACL,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBACX,WACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,QAAD;QACE,SAAQ;QACR,MAAK;QACL,WAAU;QACV,UAAU;QACV,eAAe;AAKb,yBAHE,OAAO,IAAI,OAAO,WACd,IAAI,KACJ,SAAS,OAAO,IAAI,GAAG,CAAC,QAAQ,SAAS,GAAG,CAAC,CAC5B;;kBAGzB,iBAAA,GAAA,kBAAA,KAACC,aAAAA,gBAAD,EAAgB,WAAU,UAAW,CAAA;QAC9B,CAAA,GAET,iBAAA,GAAA,kBAAA,MAACC,YAAAA,cAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD;QAAqB,SAAA;kBACnB,iBAAA,GAAA,kBAAA,KAACH,YAAAA,QAAD;SACE,SAAQ;SACR,MAAK;SACL,WAAU;SACV,UAAU;mBAEV,iBAAA,GAAA,kBAAA,KAACC,aAAAA,gBAAD,EAAgB,WAAU,UAAW,CAAA;SAC9B,CAAA;QACW,CAAA,EACtB,iBAAA,GAAA,kBAAA,KAACG,YAAAA,qBAAD;QAAqB,OAAM;kBACzB,iBAAA,GAAA,kBAAA,MAACC,YAAAA,kBAAD;SACE,eAAe;AAKb,uBAHE,OAAO,IAAI,OAAO,WACd,IAAI,KACJ,SAAS,OAAO,IAAI,GAAG,CAAC,QAAQ,SAAS,GAAG,CAAC,CAC/B;;SAEtB,SAAQ;mBARV,CAUE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,QAAD,EAAQ,WAAU,eAAgB,CAAA,EACjC,EAAE,uBAAuB,CACT;;QACC,CAAA,CACT,EAAA,CAAA;OAEd,CAAA;MACO;OAvGP,IAAI,GAuGG,CACd;IACI,CAAA,CACF;;EACJ,CAAA;CAGR,MAAM,gBACJ,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,mBAAD;EACE,MAAM,iBAAiB;EACvB,eAAe,SAAS;AACtB,OAAI,CAAC,KAAM,iBAAgB,KAAK;;EAElC,OAAO,EAAE,yBAAyB;EAClC,SAAS,CACP;GACE,IAAI;GACJ,OAAO,EAAE,uBAAuB;GAChC,SAAS;GACT,UAAU;GACV,gBAAgB;AACd,QAAI,iBAAiB,KAAM,cAAa,aAAa;;GAExD,CACF;EACD,CAAA;AAGJ,KAAI,iBACF,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD;EACW;EACT,oBAAoBC,YAAAA;EACpB,WAAW;YAEX,iBAAA,GAAA,kBAAA,KAACC,cAAAA,iBAAD;GACE,OAAO,UAAU,KAAK,SAAS,KAAK,GAAG,UAAU,CAAC;GAClD,UAAUC,cAAAA;aAET;GACe,CAAA;EACP,CAAA,EACZ,cACA,EAAA,CAAA;AAIP,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,cACA,cACA,EAAA,CAAA;;;;ACpTP,MAAM,sBAAsB;AAQ5B,MAAM,gBAAgB;CACpB;EAAE,QAAQ;EAAU,gBAAgB;EAAU,SAAS;EAAW;CAClE;EAAE,QAAQ;EAAS,gBAAgB;EAAQ,SAAS;EAAW;CAC/D;EAAE,QAAQ;EAAY,gBAAgB;EAAW,SAAS;EAAU;CACpE;EACE,QAAQ;EACR,gBAAgB;EAChB,SAAS;EACV;CACF;AAMD,MAAM,wBAAwB,IAAI,IAChC,cAAc,QAAQ,MAAM,EAAE,YAAY,UAAU,CAAC,KAClD,MAAM,EAAE,eACV,CACF;AACD,MAAM,uBAAuB,IAAI,IAC/B,cAAc,QAAQ,MAAM,EAAE,YAAY,SAAS,CAAC,KACjD,MAAM,EAAE,eACV,CACF;AACD,MAAM,yBAAyB,IAAI,IACjC,cAAc,KAAK,MAAM,EAAE,eAAe,CAC3C;AAED,SAAS,qBAAqB,WAAkC;AAC9D,MAAK,MAAM,SAAS,cAClB,KAAI,UAAU,WAAW,MAAM,OAAO,CAAE,QAAO,MAAM;AAEvD,QAAO;;AAGT,SAAS,oBAAoB,OAA+C;CAC1E,MAAM,WAA+B,EAAE;CACvC,MAAM,WAA+B,EAAE;AAEvC,OAAM,SAAS,SAAS;EACtB,MAAM,OAAO,KAAK;AAClB,MAAI,QAAQ,sBAAsB,IAAI,KAAK,CACzC,UAAS,KAAK,KAAK;WACV,QAAQ,qBAAqB,IAAI,KAAK,CAC/C,UAAS,KAAK,KAAK;GAErB;CAEF,MAAM,SAA6B,EAAE;AACrC,UAAS,SAAS,MAAM,UAAU;AAChC,MAAI,KAAK,GACP,QAAO,KAAK;GAAE,GAAG;GAAM,OAAO,QAAQ;GAAG,CAAC;GAE5C;AACF,UAAS,SAAS,MAAM,UAAU;AAChC,MAAI,KAAK,GACP,QAAO,KAAK;GAAE,GAAG;GAAM,OAAO,SAAS,SAAS,QAAQ;GAAG,CAAC;GAE9D;AACF,QAAO;;AAkBT,SAAS,YAAY,GAGnB;AACA,SAAA,GAAA,MAAA,gBACS;EACL,SAAS;GACP,SAAS,EAAE,yBAAyB;GACpC,aAAa,EAAE,6BAA6B;GAC5C,gBAAgB,CAAC,SAAS,QAAQ;GAClC,wBAAwB;GACzB;EACD,QAAQ;GACN,SAAS,EAAE,mCAAmC;GAC9C,aAAa,EAAE,uCAAuC;GACtD,gBAAgB,CAAC,YAAY,mBAAmB;GAChD,wBAAwB;GACzB;EACF,GACD,CAAC,EAAE,CACJ;;AAGH,SAAgB,qBAAqB,EACnC,cAC+C;CAC/C,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,EAAE,WAAW,eAAe,kBAAkB,iBAAiB;CACrE,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,WAAW,YAAY,EAAE;CAC/B,MAAM,CAAC,aAAa,mBAAA,GAAA,MAAA,UAClB,KACD;CAED,MAAM,EACJ,OAAO,cACP,aACA,SACA,eACE,kBAAkB;CAEtB,MAAM,aAAa;CAEnB,MAAM,EAAE,cAAc,iBAAA,GAAA,MAAA,eAA8B;EAClD,MAAM,UAA8B,EAAE;EACtC,MAAM,SAA6B,EAAE;AACrC,aAAW,SAAS,SAAS;AAC3B,OACE,KAAK,mBACL,sBAAsB,IAAI,KAAK,gBAAgB,CAE/C,SAAQ,KAAK,KAAK;YAElB,KAAK,mBACL,qBAAqB,IAAI,KAAK,gBAAgB,CAE9C,QAAO,KAAK,KAAK;IAEnB;AACF,SAAO;GAAE,cAAc;GAAS,aAAa;GAAQ;IACpD,CAAC,WAAW,CAAC;CAEhB,MAAM,kBAAkBC,mBAAAA,6BAA6B,EACnD,UAAU,UAAiB;AACzB,YAAU;GACR,OAAO,EAAE,0BAA0B;GACnC,MAAM;GACN;GACD,CAAC;IAEL,CAAC;CAEF,MAAM,qBAAqBC,mBAAAA,mCAAmC;EAC5D,iBAAiB;AACf,aAAU;IACR,OAAO,EAAE,+BAA+B;IACxC,MAAM;IACP,CAAC;;EAEJ,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,6BAA6B;IACtC,MAAM;IACN;IACD,CAAC;;EAEL,CAAC;CAEF,MAAM,uBAAuBC,mBAAAA,iCAAiC;CAE9D,MAAM,mBAAA,GAAA,MAAA,QAA+D,KAAK;CAG1E,MAAM,sBAAA,GAAA,MAAA,QAAuD,KAAK;AAElE,EAAA,GAAA,MAAA,uBACc;AACV,MAAI,gBAAgB,QAAS,cAAa,gBAAgB,QAAQ;IAEpE,EAAE,CACH;CAED,MAAM,oBAAoB,CAAC,CAAC,IAAI,UAAU;CAI1C,MAAM,iBAAA,GAAA,MAAA,cACH,WAA+B,iBAAuC;EAKrE,MAAM,UAAU,oBAHd,iBAAiB,YACb,CAAC,GAAG,WAAW,GAAG,YAAY,GAC9B,CAAC,GAAG,cAAc,GAAG,UAAU,CACM;AAE3C,MACE,cACA,qBACA,gBAAgB,YAAY,QAC5B,mBAAmB,YAAY,KAE/B,oBAAmB,UAAU;AAG/B,cAAY,QAAQ;AAEpB,MAAI,CAAC,cAAc,CAAC,kBAAmB;AAEvC,MAAI,gBAAgB,QAAS,cAAa,gBAAgB,QAAQ;AAClE,kBAAgB,UAAU,iBAAiB;AACzC,mBAAgB,UAAU;GAC1B,MAAM,WAAW,mBAAmB;AACpC,wBAAqB,OACnB;IACE;IACA,MAAM,EACJ,OAAO,QACJ,QAEG,SAKA,OAAO,UAAU,KAAK,GAAG,IAAI,OAAO,KAAK,UAAU,SACtD,CACA,KAAK,UAAU;KAAE,IAAI,KAAK;KAAI,OAAO,KAAK;KAAO,EAAE,EACvD;IACF,EACD;IACE,iBAAiB;AACf,SAAI,gBAAgB,YAAY,KAC9B,oBAAmB,UAAU;SAE7B,oBAAmB,UAAU;;IAGjC,UAAU,UAAU;AAClB,SAAI,SAAU,aAAY,SAAS;AACnC,wBAAmB,UAAU;AAC7B,eAAU;MACR,OAAO,EAAE,yBAAyB;MAClC,MAAM;MACN;MACD,CAAC;;IAEL,CACF;KACA,oBAAoB;IAEzB;EACE;EACA;EACA;EACA;EACA;EACA;EACA,qBAAqB;EACrB;EACA;EACD,CACF;CAED,MAAM,oBAAoB,WAAmB;AAC3C,aAAW,OAAO;AAClB,MAAI,WACF,oBAAmB,OAAO;GACxB;GACA,SAAS,CAAC,OAAO;GAClB,CAAC;;CAQN,MAAM,uBAAA,GAAA,MAAA,cACH,YAA2B,OAAO,YAAgC;AACjE,iBAAe,KAAK;AACpB,MAAI,QAAQ,WAAW,GAAG;AACxB,aAAU;IACR,OAAO,EAAE,6BAA6B;IACtC,MAAM;IACP,CAAC;AACF;;EAGF,IAAI,YAAY,WAAW,SAAS;AAEpC,OAAK,MAAM,UAAU,SAAS;GAC5B,MAAM,iBAAiB,qBAAqB,OAAO,WAAW;AAC9D,OAAI,CAAC,eAAgB;AACrB,OAAI,CAAC,QAAQ,uBAAuB,IAAI,eAAe,CAAE;GAEzD,MAAM,eAAe,OAAO;GAC5B,MAAM,QACJ,OAAO,UAAU,aAAa,GAAG,eAAe,IAAI;AAOtD,OALmB,WAAW,MAC3B,aACC,SAAS,oBAAoB,kBAC7B,SAAS,YAAY,OAAO,aAC/B,EACe;AACd,cAAU;KACR,OAAO,EAAE,+BAA+B;KACxC,MAAM;KACP,CAAC;AACF;;GAGF,MAAM,QAAQ;GAEd,MAAM,UAA4B;IAChC,IAAI,KAAK,KAAK,GAAG,KAAK,QAAQ;IAC9B;IACA,iBAAiB;IACjB,YAAY;KACV,IAAI;KACJ,OAAO;KACP,WAAW,OAAO,iBAAiB,OAAO,YAAY;KACvD;IACF;AAED,OAAI,WACF,KAAI;AACF,UAAM,gBAAgB,YAAY;KAChC;KACA;KACA,MAAM;MACJ,iBAAiB;MACjB,eAAe;MACf;MACD;KACF,CAAC;AACF,cAAU;KACR,OAAO,EAAE,4BAA4B;KACrC,MAAM;KACP,CAAC;WACI;OAIR,SAAQ,QAAQ;;IAItB;EAAC;EAAY;EAAY;EAAiB;EAAS;EAAW;EAAE,CACjE;CAED,MAAM,0BAAA,GAAA,MAAA,eAAsE;AAC1E,MAAI,CAAC,cAAe,QAAO;AAC3B,SAAO;GACL,OAAO;IACL,UAAU,QAAgB,UAAU;KAAE,OAAO;KAAK,MAAM;KAAW,CAAC;IACpE,QAAQ,KAAa,UACnB,UAAU;KACR,OAAO,iBAAiB,QAAQ,GAAG,IAAI,IAAI,MAAM,YAAY;KAC7D,MAAM;KACP,CAAC;IACJ,eAAe;IACf,eAAe;IAChB;GACD,kBAAkB;IAChB,OAAO;KACL,UAAU,UAAU;KACpB,OAAO,YACL,IAAI,MAAM,SAAS;MACjB,GAAK,WAAW,EAAE;MAClB,cAAc;MACf,CAAC;KACL;IAGD,GAAI,eAAe,QACf,EACE,OAAO;KACL,GAAG,cAAc;KACjB,UAAU,GAAG,cAAc,MAAM,YAAY,SAAS,UAAU;KACjE,EACF,GACD,EAAE;IACN,GAAI,eAAe,WACf,EACE,UAAU;KACR,GAAG,cAAc;KACjB,UAAU,GAAG,cAAc,SAAS,YAAY,SAAS,UAAU;KACpE,EACF,GACD,EAAE;IACN,GAAI,eAAe,mBACf,EACE,kBAAkB;KAChB,GAAG,cAAc;KACjB,UAAU,GAAG,cAAc,iBAAiB,YAAY,SAAS,UAAU;KAC5E,EACF,GACD,EAAE;IACP;GACF;IACA;EAAC;EAAe;EAAW;EAAK;EAAe;EAAO,CAAC;CAM1D,MAAM,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAE7C,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf;GACE,iBAAA,GAAA,kBAAA,KAAC,yBAAD;IACE,SAAS,SAAS;IAClB,OAAO;IACP,aAAa,eAAe,UAAU;IACtC,YAAY,cAAc,cAAc,WAAW,UAAU;IAC7D,cAAc;IACd,WAAW,gBAAgB;IAC3B,iBAAiB,mBAAmB;IACpC,YAAY,CAAC;IACb,CAAA;GACF,iBAAA,GAAA,kBAAA,KAAC,yBAAD;IACE,SAAS,SAAS;IAClB,OAAO;IACP,aAAa,eAAe,SAAS;IACrC,YAAY,cAAc,cAAc,WAAW,SAAS;IAC5D,cAAc;IACd,WAAW,gBAAgB;IAC3B,iBAAiB,mBAAmB;IACpC,YAAY,CAAC;IACb,CAAA;GAED,mBACC,iBAAA,GAAA,kBAAA,KAAC,uBAAD;IAAuB,KAAK;cAC1B,iBAAA,GAAA,kBAAA,MAAC,oBAAD;KAAoB,OAAO;eAA3B,CACE,iBAAA,GAAA,kBAAA,KAAC,YAAD;MACE,MAAM,gBAAgB;MACtB,eAAe,eAAe,KAAK;MACnC,kBAAkB,aAChB,KAAK,oBAAoB,SAAS,QAAQ,CAAC,SAAS;MAEtD,QAAQ;OACN,UAAU;OACV,gBAAgB,SAAS,QAAQ;OACjC,kBAAkB;OACnB;MACD,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,YAAD;MACE,MAAM,gBAAgB;MACtB,eAAe,eAAe,KAAK;MACnC,kBAAkB,aAChB,KAAK,oBAAoB,SAAS,OAAO,CAAC,SAAS;MAErD,QAAQ;OACN,UAAU;OACV,gBAAgB,SAAS,OAAO;OAChC,kBAAkB;OACnB;MACD,CAAA,CACiB;;IACC,CAAA;GAEtB;;;AAoBV,SAAS,wBAAwB,EAC/B,SACA,OACA,OACA,WACA,cACA,WACA,iBACA,aAAa,SACK;CAClB,MAAM,EAAE,MAAM,0BAA0B;AAExC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;MAAI,WAAU;gBACX,QAAQ;MACN,CAAA,EACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,QAAQ;MACP,CAAA,CACA;QACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,MAACC,YAAAA,QAAD;MACE,MAAK;MACL,UAAU,aAAa;MACvB,SAAQ;MACR,MAAK;MACL,WAAU;MACV,SAAS;gBANX,CAQE,iBAAA,GAAA,kBAAA,KAACC,aAAAA,MAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAE,2BAA2B,CACvB;;KACL,CAAA,CACF;OAEN,iBAAA,GAAA,kBAAA,KAAC,eAAD;IACS;IACP,WAAW,cAAc,UAAU,UAAU;IAC/B;IACG;IACjB,kBAAA;IACA,CAAA,CACE;;EACF,CAAA;;;;ACviBV,MAAM,uBACJ;AAEF,MAAM,iCAAiC,IAAI,IAAY;CACrD;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,uBACP,MACe;CACf,MAAM,IAAI,MAAM;AAChB,KAAI,CAAC,EAAG,QAAO;AAGf,SAFY,EAAE,aAAa,EAAE,uBACd,MAAM,IACT;;AAGd,SAAS,2BACP,OAC8B;CAC9B,MAAM,UAAU,MAAM,QACnB,SACC,KAAK,mBACL,+BAA+B,IAAI,KAAK,gBAAgB,CAC3D;AACD,KAAI,QAAQ,WAAW,EAAG,QAAO,KAAA;AACjC,QAAO,QAAQ,UACZ,GAAG,OACD,EAAE,SAAS,OAAO,sBAClB,EAAE,SAAS,OAAO,mBACtB,CAAC;;AAGJ,SAAS,UAAU,MAAsB;AACvC,KAAI,CAAC,KAAM,QAAO;AAElB,QADY,IAAI,WAAW,CAAC,gBAAgB,MAAM,YAAY,CACnD,KAAK,eAAe;;AAGjC,SAAS,iBAAiB,SAKf;CACT,MAAM,EAAE,UAAU,UAAU,SAAS,UAAU,UAAU;AAEzD,KAAI,UAAU,cACZ,QAAO,UACH,GAAG,SAAS,cAAc,iBAC1B,SAAS;AAEf,KAAI,UAAU,aACZ,QAAO,UACH,SAAS,eACT,SAAS,aAAa,QAAQ,iBAAiB,GAAG;CAExD,MAAM,OAAO,YAAY,UAAU;AACnC,KAAI,WAAW,MAAM;EAEnB,MAAM,MAAM,GADS,QAAQ,QAAQ,OAAO,GAAG,CACnB,aAAa;AACzC,SAAO,UAAU,GAAG,IAAI,iBAAiB;;AAE3C,QAAO;;AAQT,SAAgB,yBAAyB,EACvC,UACA,wBACmD;CACnD,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,EAAE,SAAS,iBAAiB;CAClC,MAAM,EAAE,UAAU,kBAAkB;CACpC,MAAM,MAAM,KAAK;CAEjB,MAAM,oBAAA,GAAA,MAAA,eACE,2BAA2B,MAAM,EACvC,CAAC,MAAM,CACR;CAED,MAAM,qBAAA,GAAA,MAAA,eACE,uBAAuB,iBAAiB,EAC9C,CAAC,iBAAiB,CACnB;CAED,MAAM,SACH,KAAK,SAAS,KAAK,SAAS,IAAI,MAAM,IAAI,EAAE,6BAA6B;CAI5E,MAAM,eADH,KAAK,eAAe,IAAI,MAAM,IAAI,UAAU,KAAK,eAAe,GAAG,IAChC,EAAE,mCAAmC;CAE3E,MAAM,WACJ,sBACC,KAAK,aAAa,IAAI,MAAM,KAC5B,KAAK,aAAa,IAAI,MAAM;CAE/B,MAAM,YAAA,GAAA,MAAA,eAEF,iBAAiB;EACf;EACA,UAAU,KAAK;EACf,SAAS;EACT,SAAS;EACV,CAAC,EACJ;EAAC;EAAU,KAAK;EAAM;EAAqB,CAC5C;CAED,MAAM,YAAA,GAAA,MAAA,eAAyB;AAC7B,MAAI,CAAC,SAAU,QAAO;AACtB,MAAI;AACF,UAAO,IAAI,IAAI,SAAS,CAAC;UACnB;AACN,UAAO,SAAS,QAAQ,gBAAgB,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM;;IAE9D,CAAC,SAAS,CAAC;AAEd,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;GAAI,WAAU;aACX,EAAE,2BAA2B;GAC3B,CAAA,EACL,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAEE,KAAK,YAAY;KACjB,KAAI;KACJ,WAAU;KACV,EAJK,YAAY,cAIjB;IACE,CAAA,EACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf;KACE,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV,YAAY,EAAE,gCAAgC;MAC7C,CAAA;KACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV;MACC,CAAA;KACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;MAAG,WAAU;gBACV;MACC,CAAA;KACA;MACF;KACF;;;;;AC9GV,SAAS,oBAAoB,EAC3B,YACA,UACA,YACA,QACA,YACA,oBAQC;CACD,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,EAAE,WAAW,UAAU,SAAS,iBAAiB;CACvD,MAAM,EAAE,OAAO,iBAAiB,kBAAkB;CAClD,MAAM,EAAE,MAAM,aAAa,iBAAiB,iBAAiB;CAE7D,MAAM,gBAAgB,KAAK,SAAS;CACpC,MAAM,YAAY,KAAK,QAAQ;AAG/B,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,eAAe,KAAK,eAAe,UAAU,eAAe;AAClE,MAAI,iBAAiB,CAAC,cAAc;GAClC,MAAM,gBAAgB,cACnB,aAAa,CACb,QAAQ,iBAAiB,GAAG,CAC5B,QAAQ,QAAQ,IAAI,CACpB,QAAQ,OAAO,IAAI,CACnB,QAAQ,YAAY,GAAG;AAE1B,OAAI,kBAAkB,UACpB,aAAY,QAAQ,cAAc;;IAGrC;EACD;EACA,KAAK;EACL,UAAU;EACV;EACA;EACD,CAAC;CAEF,MAAM,iBAAiBC,mBAAAA,0BAA0B;EAC/C,YAAY,oBAAoB;AAC9B,aAAU;IAAE,OAAO,EAAE,0BAA0B;IAAE,MAAM;IAAW,CAAC;GACnE,MAAM,QAAQ,gBAAgB,SAAS;AACvC,YAAS,aAAa,MAAM,OAAO;;EAErC,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,wBAAwB;IACjC,MAAM;IACN;IACD,CAAC;;EAEL,CAAC;CAEF,MAAM,iBAAiBC,mBAAAA,0BAA0B;EAC/C,iBAAiB;AACf,aAAU;IAAE,OAAO,EAAE,0BAA0B;IAAE,MAAM;IAAW,CAAC;;EAErE,UAAU,UAAiB;AACzB,aAAU;IACR,OAAO,EAAE,wBAAwB;IACjC,MAAM;IACN;IACD,CAAC;;EAEL,CAAC;CAEF,MAAM,qBAAqB;CAE3B,MAAM,cAAA,GAAA,MAAA,aAAyB,YAA6B;AAC1D,MAAI,CAAC,cAAc,EAAE;AACnB,aAAU;IACR,OAAO,EAAE,8BAA8B;IACvC,MAAM;IACP,CAAC;AACF,UAAO,QAAQ,uBAAO,IAAI,MAAM,oBAAoB,CAAC;;EAGvD,MAAM,WAAW;GACf,OAAO,KAAK;GACZ,aAAa,KAAK,eAAe;GACjC,WAAW,KAAK,aAAa;GAC7B,MAAM,KAAK,QAAQ;GACnB,aAAa,KAAK,eAAe;GACjC,aAAa,KAAK,eAAe;GACjC,+BAA+B,KAAK,gCAChC,OAAO,KAAK,8BAA8B,GAC1C;GACJ,QAAQ,aAAc,KAAK,UAAU,QAAS;GAC9C,iBAAiB;GACjB,iBAAiB,KAAK,mBAAmB;GACzC,qBAAqB,KAAK,aAAa,EAAE;GACzC,oCACE,KAAK,2BAA2B,KAAA;GACnC;AAED,MAAI,cAAc,YAAY;AAC5B,SAAM,eAAe,YAAY;IAC/B,YAAY,SAAS,WAAW;IAChC,MAAM,EACJ,UAAU;KACR,GAAG;KACH,0BAA0B,oBAAoB,KAAK,UAAU;MAC3D,IAAI,KAAK;MACT,OAAO,KAAK;MACb,EAAE;KACJ,EACF;IACF,CAAC;AACF,UAAO,SAAS,WAAW;;EAG7B,IAAI,wBAAwB,KAAK;AACjC,MAAI,CAAC,sBACH,yBAAwB;GACtB,OAAO,KAAK,SAAS;GACrB,aAAa;GACb,WAAW;GACX,YAAY;GACZ,eAAe;GAChB;EAUH,MAAM,iBAPkB,MAAM,eAAe,YAAY,EACvD,UAAU;GACR,GAAG;GACH,oCAAoC;GACpC,GAAI,MAAM,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,EAAE;GACzC,EACF,CAAC,EACoC,SAAS;AAE/C,MAAI,mBAAmB,SAAS,EAC9B,KAAI;GACF,MAAM,YAAY,mBACf,QAEG,SAKA,CAAC,CAAC,KAAK,mBAAmB,OAAO,KAAK,YAAY,OAAO,SAC5D,CACA,KAAK,MAAM,WAAW;IACrB,iBAAiB,KAAK;IACtB,eAAe,KAAK,WAAW;IAC/B,OAAO,QAAQ;IAChB,EAAE;AAEL,SAAM,IAAI,UAAU,kBAAkB,eAAe,EACnD,OAAO,WACR,CAAC;WACK,WAAW;AAClB,WAAQ,MAAM,mCAAmC,UAAU;AAC3D,aAAU;IACR,OAAO,EAAE,sCAAsC;IAC/C,MAAM;IACP,CAAC;;AAIN,SAAO;IACN;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACD,CAAC;CAEF,MAAM,WAAW,eAAe,aAAa,eAAe;CAC5D,MAAM,eAAe,YAAY;AAC/B,QAAM,YAAY;;AAGpB,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;GAAgB,WAAU;aAA1B,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;IACE,MAAK;IACL,UAAU,MAAM;AACd,OAAE,gBAAgB;AAClB,MAAC,iBAAiB,SAAS,YAAY,IAAI;;cAG5C,EAAE,sBAAsB;IACV,CAAA,EACF,CAAA,EAChB,aACC,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA;IACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;KACE,MAAK;KACL,UAAU,MAAM;AACd,QAAE,gBAAgB;AAClB,eAAS,aAAa,aAAa;;KAErC,WAAU;eAET,iBAAiB,EAAE,+BAA+B;KACpC,CAAA,EACF,CAAA;IACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;IACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;KAAgB,WAAU;eACvB,EAAE,cAAc;KACF,CAAA,EACF,CAAA;IAChB,EAAA,CAAA,GAEH,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACD,YAAAA,qBAAD,EAAuB,CAAA,EACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;IAAgB,WAAU;cACvB,EAAE,6BAA6B;IACjB,CAAA,EACF,CAAA,CAChB,EAAA,CAAA,CAEU;MACN,CAAA,EACW,CAAA;EACzB,mBAAmB;GAClB,UAAU;GACV;GACA;GACA;GACD,CAAC;EACD,CAAC,cAAc,CAAC,oBACf,iBAAA,GAAA,kBAAA,KAAC,oBAAD;GACc;GACA;GACZ,UAAU;GACA;GACF;GACR,CAAA;EAEJ,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;KAAK,WAAU;eAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,qBAAD,EAAuB,CAAA,EACvB,iBAAA,GAAA,kBAAA,KAAC,sBAAD,EACE,YAAY,aAAa,SAAS,YAAY,GAAG,GAAG,KAAA,GACpD,CAAA,CACE;QACN,iBAAA,GAAA,kBAAA,KAAC,OAAD;KAAK,WAAU;eACb,iBAAA,GAAA,kBAAA,KAAC,0BAAD,EAAoC,UAAY,CAAA;KAC5C,CAAA,CACF;;GACF,CAAA;EACL,EAAA,CAAA;;AAIP,SAAgB,qBAAqB,EACnC,YACA,QACA,YACA,oBAC+C;CAC/C,MAAM,MAAMT,uBAAAA,kBAAkB;CAC9B,MAAM,EAAE,WAAW,0BAA0B;CAC7C,MAAM,aAAa,CAAC,CAAC;CAErB,MAAM,EAAE,MAAM,kBAAkB,eAAA,GAAA,sBAAA,UAAuB;EACrD,UAAU,aACNU,uBAAAA,eAAe,UAAU,OAAO,SAAS,YAAY,GAAG,EAAE,OAAO,GACjE;GAAC;GAAa;GAAU;GAAM;GAAO;EACzC,eACE,IAAI,UAAU,gBAAgB,SAAS,YAAa,GAAG,EAAE,OAAO;EAClE,SAAS;EACV,CAAC;CAEF,MAAM,WAAW,kBAAkB;CACnC,MAAM,aACH,UAAU,SAA4C,EAAE;AAE3D,KAAI,cAAc,UAChB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,UAAD,EAAU,WAAU,YAAa,CAAA,EACjC,iBAAA,GAAA,kBAAA,KAACA,YAAAA,UAAD,EAAU,WAAU,eAAgB,CAAA,CAChC;;AAIV,QACE,iBAAA,GAAA,kBAAA,KAAC,sBAAD;EAAgC;YAC9B,iBAAA,GAAA,kBAAA,KAAC,uBAAD;GAAuB,cAAc;aACnC,iBAAA,GAAA,kBAAA,KAAC,qBAAD;IACc;IACF;IACE;IACJ;IACI;IACM;IAClB,CAAA;GACoB,CAAA;EACH,CAAA;;;;ACvV3B,MAAMC,cAAY;AAElB,SAAS,eACP,OACA,QACQ;AACR,KAAI,QAAQ,KAAM,QAAO,GAAG,MAAM,GAAG,OAAO;AAC5C,KAAI,QAAQ,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,QAAQ,EAAE,CAAC,GAAG,OAAO;AACvE,KAAI,QAAQ,OAAO,OAAO,KACxB,QAAO,IAAI,SAAS,OAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,OAAO;AACzD,QAAO,IAAI,SAAS,OAAO,OAAO,OAAO,QAAQ,EAAE,CAAC,GAAG,OAAO;;AAOhE,MAAMC,kBACJ;AAEF,SAAgB,mBAAmB,EACjC,YAAY,eACiC;CAC7C,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,MAAM,0BAA0B;CACxC,MAAM,WAAWC,0BAAAA,aAAa;CAE9B,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,GAAG;CAChD,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA+B,GAAG;AAG1D,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,iBAAiB;AAC7B,sBAAmB,WAAW;KAC7B,IAAI;AACP,eAAa,aAAa,MAAM;IAC/B,CAAC,WAAW,CAAC;CAEhB,MAAM,EACJ,MACA,WACA,oBACA,aACA,eACA,WAAA,GAAA,sBAAA,kBACmB;EACnB,UAAU,CAAC,oBAAoB,gBAAgB;EAC/C,SAAS,OAAO,EAAE,YAAY,QAAQ;AAMpC,UALiB,MAAM,IAAI,cAAc,iBAAiB;IACxD,cAAc,mBAAmB,KAAA;IACjC,WAAW,UAAU,UAAU;IAC/B,UAAUH,YAAU,UAAU;IAC/B,CAAC;;EAGJ,mBAAmB,aAAa;GAC9B,MAAM,EAAE,cAAc,gBAAgB,SAAS;AAC/C,UAAO,eAAe,cAAc,eAAe,IAAI,KAAA;;EAEzD,kBAAkB;EACnB,CAAC;CAEF,MAAM,SAAA,GAAA,MAAA,eACE,MAAM,MAAM,SAAS,SAAS,KAAK,eAAe,IAAI,EAAE,EAC9D,CAAC,MAAM,MAAM,CACd;CAED,MAAM,cAAc,wBAAwB;EAC1C;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,SACJ,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACG,sBACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,WAAU;YACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,iFAAkF,CAAA;EAC7F,CAAA,EAEP,SACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;EAAG,WAAU;YACV,EAAE,mBAAmB;EACpB,CAAA,CAEL,EAAA,CAAA;AAGL,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACI,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;EAAgB,WAAU;YACxB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;GAAgB,WAAU;aACvB,EAAE,mBAAmB;GACP,CAAA,EACF,CAAA;EACF,CAAA,EACN,CAAA,EACW,CAAA,EAC1B,iBAAA,GAAA,kBAAA,KAAC,qBAAD;EACa;EACX,SACE,CAAC,SAAS,MAAM,WAAW,KAAK,CAAC,sBAAsB,CAAC;EAE1D,cACE,kBACI,EAAE,2BAA2B,EAAE,QAAQ,iBAAiB,CAAC,GACzD,EAAE,sBAAsB;EAE9B,SACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,YAAD;KACE,cAAc,WAAW,iBAAiB;KAC1C,aAAa;KACb,gBAAgB;KAChB,aAAa,EAAE,2BAA2B;KAC1C,CAAA;IACE,CAAA;GACF,CAAA;EAEA;EACK;YAEb,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aACb,MAAM,KAAK,SAAS;IACnB,MAAM,UAAU,KAAK,cAAc,WAAW,SAAS;IACvD,MAAM,UAAU,KAAK,OAAO;AAE5B,WACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,MAAD;KAEE,MAAK;KACL,UAAU;KACV,eAAe,OAAO,KAAK,SAAS,SAAS;KAC7C,YAAY,MAAM;AAChB,UAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,SAAE,gBAAgB;AAClB,cAAO,KAAK,SAAS,SAAS;;;KAGlC,WAAU;eAXZ,CAaE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf;OACG,YAAY;QACX,KAAK,KAAK,qBAAqBT;QAC/B,KAAK,KAAK,YAAY,EAAE,iBAAiB;QACzC,MAAM;QACN,WACE;QACH,CAAC;OACD,WACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;QAAK,WAAU;kBACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;SAAK,WAAU;mBACb,iBAAA,GAAA,kBAAA,KAACU,aAAAA,YAAD,EAAY,WAAU,2BAA4B,CAAA;SAC9C,CAAA;QACF,CAAA;OAEP,CAAC,WACA,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;QACE,WAAU;QACV,SAAQ;kBAEP,eAAe,KAAK,cAAc;SACjC,GAAG,EAAE,eAAe;SACpB,IAAI,EAAE,gBAAgB;SACtB,IAAI,EAAE,gBAAgB;SACtB,IAAI,EAAE,gBAAgB;SACvB,CAAC;QACI,CAAA;OAEN;SACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBACX,KAAK,YAAY,EAAE,iBAAiB;OAClC,CAAA,EACL,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,KAAK,gBAAgB,EAAE,qBAAqB;OAC3C,CAAA,CACA;QACD;OAjDA,KAAK,GAiDL;KAET;GACE,CAAA;EACc,CAAA,CACrB,EAAA,CAAA;;;;AC/LP,MAAM,YAAY;AAElB,MAAM,gBACJ;AAIF,SAAS,UAAU,OAA0D;AAC3E,QAAO,UAAU,WAAW,KAAA,IAAY;;AAO1C,SAAgB,mBAAmB,EACjC,cAC6C;CAC7C,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAChD,MAAM,WAAWC,0BAAAA,aAAa;CAE9B,MAAM,CAAC,YAAY,kBAAA,GAAA,MAAA,UAA0B,GAAG;CAChD,MAAM,CAAC,iBAAiB,uBAAA,GAAA,MAAA,UAA+B,GAAG;CAC1D,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAoC,SAAS;CAC/D,MAAM,kBAAA,GAAA,MAAA,QAAwC,KAAK;AAEnD,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,QAAQ,iBAAiB,mBAAmB,WAAW,EAAE,IAAI;AACnE,eAAa,aAAa,MAAM;IAC/B,CAAC,WAAW,CAAC;CAQhB,MAAM,EACJ,MACA,WACA,oBACA,aACA,eACA,WAAA,GAAA,sBAAA,kBACmB;EACnB,UAdeC,uBAAAA,eAAe,MAAM,KACpC,iBACA,WACA,OACD;EAWC,SAAS,OAAO,EAAE,gBAAgB;GAChC,MAAM,WAAW,MAAM,IAAI,MAAM,UAAU;IACzC,QAAQ;IACR,OAAO;IACP,iBAAiB,mBAAmB,KAAA;IACpC,MAAM,UAAU,UAAU;IAC1B,cAAc;IACf,CAAC;AACF,UAAO;IACL,OAAO,SAAS;IAChB,YAAY,SAAS,KAAK,YAAY,eAAe;IACtD;;EAEH,mBAAmB,aAAa,SAAS,cAAc,KAAA;EACvD,kBAAkB,KAAA;EAClB,iBAAiBC,sBAAAA;EAClB,CAAC;CAEF,MAAM,eAAA,GAAA,MAAA,eACE;EACJ;GAAE,OAAO,EAAE,oBAAoB;GAAE,OAAO;GAAU;EAClD;GAAE,OAAO,EAAE,iBAAiB;GAAE,OAAO;GAAa;EAClD;GAAE,OAAO,EAAE,kBAAkB;GAAE,OAAO;GAAc;EACrD,EACD,CAAC,EAAE,CACJ;CAED,MAAM,YAAA,GAAA,MAAA,eACE,MAAM,MAAM,SAAS,MAAM,EAAE,MAAM,IAAI,EAAE,EAC/C,CAAC,MAAM,MAAM,CACd;AAED,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,SAAS,eAAe;AAC9B,MAAI,CAAC,OAAQ;EACb,MAAM,WAAW,IAAI,sBAClB,YAAY;AACX,OAAI,QAAQ,IAAI,kBAAkB,eAAe,CAAC,mBAChD,gBAAe;KAGnB;GAAE,WAAW;GAAG,YAAY;GAAS,CACtC;AACD,WAAS,QAAQ,OAAO;AACxB,eAAa,SAAS,YAAY;IACjC;EAAC;EAAe;EAAa;EAAmB,CAAC;AAEpD,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;EAAgB,WAAU;YACxB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;GAAgB,WAAU;aACvB,EAAE,mBAAmB;GACP,CAAA,EACF,CAAA;EACF,CAAA,EACN,CAAA,EACW,CAAA,EAC1B,iBAAA,GAAA,kBAAA,KAAC,qBAAD;EACa;EACJ;EACP,cAAc,EAAE,mBAAmB;EACnC,SAAS,SAAS,WAAW,KAAK,CAAC;EACnC,cACE,kBACI,EAAE,2BAA2B,EAAE,QAAQ,iBAAiB,CAAC,GACzD,EAAE,sBAAsB;EAE9B,SACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,YAAD;KACE,cAAc,WAAW,iBAAiB;KAC1C,aAAa;KACb,gBAAgB;KAChB,aAAa,EAAE,2BAA2B;KAC7B;KACF;KACX,eAAe,MAAM,aAAa,EAAe;KACjD,CAAA;IACE,CAAA;GACF,CAAA;EAER,QACE,sBACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACb,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,iFAAkF,CAAA;GAC7F,CAAA;EAGV,aAAa;YAEb,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aACb,SAAS,KAAK,SAAS;IACtB,MAAM,QAAQ,KAAK,SAAS,EAAE,iBAAiB;IAC/C,MAAM,mBAAmB,aAAa,SAAS,OAAO,KAAK,GAAG,CAAC;AAC/D,WACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,MAAD;KAEE,MAAK;KACL,UAAU;KACV,SAAS;KACT,YAAY,MAAM;AAChB,UAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,SAAE,gBAAgB;AAClB,mBAAY;;;KAGhB,WAAU;eAXZ,CAaE,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACG,YAAY;OACX,KAAK,KAAK,aAAa;OACvB,KAAK;OACL,MAAM;OACN,WACE;OACH,CAAC,EACF,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;OACE,WAAU;OACV,SACE,KAAK,WAAW,cAAc,YAAY;iBAG3C,KAAK,WAAW,cACb,EAAE,yBAAyB,GAC3B,EAAE,2BAA2B;OAC3B,CAAA,CACJ;SACN,iBAAA,GAAA,kBAAA,MAAC,OAAD;MAAK,WAAU;gBAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;OAAI,WAAU;iBACX;OACE,CAAA,EACJ,KAAK,eACJ,iBAAA,GAAA,kBAAA,KAAC,KAAD;OAAG,WAAU;iBACV,KAAK;OACJ,CAAA,CAEF;QACD;OAzCA,KAAK,GAyCL;KAET;GACE,CAAA;EACc,CAAA,CACrB,EAAA,CAAA;;;;AC1LP,SAAgB,iBAAiB,EAC/B,QACA,QACA,oBAC2C;CAC3C,MAAM,MAAMC,uBAAAA,kBAAkB;CAC9B,MAAM,EAAE,aAAa,iBAAiB;CACtC,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAEhD,MAAM,EAAE,MAAM,cAAc,eAAA,GAAA,sBAAA,UAAuB;EACjD,UAAUC,uBAAAA,eAAe,MAAM,OAAO,OAAO,OAAO,EAAE,OAAO;EAC7D,eAAe,IAAI,MAAM,QAAQ,OAAO,OAAO,EAAE,OAAO;EACzD,CAAC;CAEF,MAAM,OAAO,cAAc;CAC3B,MAAM,eAAe,MAAM,SAAS;CACpC,MAAM,eAAe,MAAM,aAAa;CACxC,MAAM,cAAc,MAAM,eAAe;CAEzC,MAAM,EACJ,WACA,SAAS,kBACT,OAAO,mBACLC,uBAAAA,aACF;EACE,IAAI,MAAM;EACV,YAAY,cAAc,cAAc,KAAA;EACzC,EACD,QACA,KAAA,GACA,OACD;AAED,QACE,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAACC,4BAAAA,yBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,YAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,MAACC,YAAAA,gBAAD;EAAgB,WAAU;YAA1B;GACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,YAAAA,gBAAD;IACE,MAAK;IACL,UAAU,MAAM;AACd,OAAE,gBAAgB;AAClB,MACE,kBAAkB,WAClB,iBACO,SAAS,QAAQ,IACvB;;cAGJ,EAAE,mBAAmB;IACP,CAAA,EACF,CAAA;GACjB,iBAAA,GAAA,kBAAA,KAACC,YAAAA,qBAAD,EAAuB,CAAA;GACvB,iBAAA,GAAA,kBAAA,KAACF,YAAAA,gBAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACG,YAAAA,gBAAD;IAAgB,WAAU;cACvB,gBAAgB,EAAE,4BAA4B;IAChC,CAAA,EACF,CAAA;GACF;KACN,CAAA,EACW,CAAA,EAC1B,iBAAA,GAAA,kBAAA,KAAC,uBAAD;EACa;EACX,UAAU,CAAC,QAAQ,CAAC;EACpB,iBAAiB,EAAE,kBAAkB;EACrC,OAAO;EACM;EACb,sBAAqB;EACrB,OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,WAAU;aAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,uBAAD;IACgB;IACA;IACd,SAAS;IACT,YAAY,EAAE,oBAAoB;IAClC,SAAA;IACA,WAAW;IACX,kBAAkB,EAAE,yBAAyB;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,kBAAkB,EAAE,qBAAqB;IACzC,CAAA,EACD,QACC,iBAAA,GAAA,kBAAA,KAACC,YAAAA,OAAD;IACE,SAAS,KAAK,WAAW,cAAc,YAAY;IACnD,WAAU;cAET,KAAK,WAAW,cACb,EAAE,yBAAyB,GAC3B,EAAE,2BAA2B;IAC3B,CAAA,CAEN;;EAER,SACE,QACE,iBAAA,GAAA,kBAAA,KAAC,cAAD;GACE,aAAa;GACC;GACd,WAAW,iBAAiB,OAAO,aAAa;GAC9B;GAClB,SAAS;GACT,cAAc,KAAK;GACnB,gBAAe;GACf,CAAA;EAGN,CAAA,CACD,EAAA,CAAA;;;;ACnFP,SAAgB,cAAc,EAC5B,QACA,UACA,QACA,YACA,QACA,aACA,eACA,cACA,+BAA+B,OAC/B,oBACwC;CACxC,MAAM,EAAE,aAAa,iBAAiB;CAGtC,MAAM,qBAAqB,uBAAuB;CAClD,IAAI;AAEJ,SAAQ,QAAR;EACE,KAAK;AACH,OAAI,aAAa,SAAS,CAAC,SACzB,WAAU,iBAAA,GAAA,kBAAA,KAAC,mBAAD;IAA2B;IAAoB;IAAc,CAAA;YAEvE,YACA,aAAa,SACb,WAAW,UACX,CAAC,SAED,WACE,iBAAA,GAAA,kBAAA,KAAC,iBAAD;IACE,SAAS;IACG;IACJ;IACR,CAAA;YAEK,YAAY,aAAa,MAClC,WACE,iBAAA,GAAA,kBAAA,KAAC,mBAAD;IACE,SAAS;IACG;IACJ;IACU;IAClB,CAAA;OAGJ,WACE,iBAAA,GAAA,kBAAA,KAAC,oBAAD;IACc;IACkB;IAC9B,CAAA;AAGN;EACF,KAAK;EACL,KAAK;AACH,OAAI,aAAa,SAAS,mBACxB,WAAU,iBAAA,GAAA,kBAAA,KAAC,sBAAD,EAA8B,QAAU,CAAA;YACzC,YAAY,WAAW,UAAU,mBAC1C,WACE,iBAAA,GAAA,kBAAA,KAAC,sBAAD;IAAsB,YAAY;IAAkB;IAAU,CAAA;YAEvD,YAAY,aAAa,MAClC,WACE,iBAAA,GAAA,kBAAA,KAAC,sBAAD;IACE,YAAY;IACA;IACJ;IACU;IAClB,CAAA;OAGJ,WAAU,iBAAA,GAAA,kBAAA,KAAC,wBAAD,EAA0B,CAAA;AAEtC;EACF,KAAK;AACH,aAAU,iBAAA,GAAA,kBAAA,KAAC,oBAAD,EAAgC,YAAc,CAAA;AACxD;EACF,KAAK;EACL,KAAK;AACH,aACE,YAAY,aAAa,QACvB,iBAAA,GAAA,kBAAA,KAAC,kBAAD;IACE,QAAQ;IACA;IACU;IAClB,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,oBAAD,EAAgC,YAAc,CAAA;AAElD;EAEF;AACE,aAAU,WACR,iBAAA,GAAA,kBAAA,KAAC,qBAAD;IACE,WAAW;IACE;IACC;IACF;IACJ;IACU;IAClB,CAAA,GAEF,iBAAA,GAAA,kBAAA,KAAC,gBAAD;IACe;IACE;IACH;IACZ,CAAA;AAEJ;;AAGJ,QAAO;;;;AC/JT,SAAgB,4BAA4B,EAC1C,YAGoB;CACpB,MAAM,EAAE,WAAWC,4BAAAA,iBAAiB;CACpC,MAAM,OAAOC,4BAAAA,cAAcC,4BAAAA,kBAAkB,OAAO;AAKpD,QACE,iBAAA,GAAA,kBAAA,KAAC,+BAAD;EAA+B,QAAA,GAAA,MAAA,eAJzBC,4BAAAA,mCAAmC,QAAQ,KAAK,EACtD,CAAC,QAAQ,KAAK,CACf;EAGI;EAC6B,CAAA;;;;;;;;;;;;;;;;;;ACHpC,SAAgB,qBAAqB,aAAsC;CACzE,MAAM,oBAAoB,YAAY,QAAQ,aAAa,GAAG;AAC9D,KAAI,CAAC,kBACH,QAAO;EAAE,QAAQ;EAAM,UAAU;EAAM,QAAQ;EAAM;CAGvD,MAAM,QAAQ,kBAAkB,MAAM,IAAI;AAI1C,QAAO;EAAE,QAHM,MAAM,MAAM;EAGV,UAFA,MAAM,MAAM;EAEF,QADZ,MAAM,MAAM;EACQ;;;;;;;;;;;AAYrC,SAAgB,iCACd,cACA,YACe;AACf,KACE,aAAa,WAAW,WACxB,CAAC,aAAa,YACd,aAAa,OAEb,QAAO;AAGT,KAAI,CAAC,WACH,QAAO;CAGT,MAAM,cAAc,qBAAqB,WAAW;AACpD,KACE,YAAY,WAAW,cACvB,CAAC,YAAY,YACb,YAAY,OAEZ,QAAO;AAGT,QAAO,YAAY;;;;ACvBrB,SAAgB,iBAAiB,EAE/B,YACA,WACA,aACA,SACA,cACA,+BAA+B,OAE/B,GAAG,YACwC;AAC3C,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,GAAI;EAAU,WAAW,UAAU,SAAS,aAAa;YAC5D,iBAAA,GAAA,kBAAA,KAAC,6BAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,0BAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,KAAC,yBAAD,EACgC,8BAC9B,CAAA,EACuB,CAAA,EACC,CAAA;EAC1B,CAAA;;;AAKV,SAAS,wBAAwB,EAC/B,gCAGoB;CACpB,MAAM,EAAE,GAAG,WAAW,0BAA0B;CAOhD,MAAM,QAAA,GAAA,MAAA,QAAc,EAAE;AACtB,MAAK,UAAU;CACf,MAAM,aAAA,GAAA,MAAA,QAAmB,OAAO;AAChC,WAAU,UAAU;CACpB,MAAM,gBAAgBC,mBAAAA,yBAAyB;CAC/C,MAAM,EAAE,aAAa,sBAAsB;CAC3C,MAAM,gBAAgBC,mBAAAA,kBAAkB;CACxC,MAAM,EAAE,MAAM,YAAYC,oBAAAA,YAAY;CACtC,MAAM,EAAE,MAAM,UAAUC,kBAAAA,UAAU;CAClC,MAAM,EAAE,aAAa,aAAaC,6BAAAA,kBAAkB;CACpD,MAAM,mBAAmBC,8BAAAA,qBAAqB;CAI9C,MAAM,aAAaC,2BAAAA,kBAAkB,QAAQ;CAC7C,MAAM,SAASC,mBAAAA,8BAA8B;CAC7C,MAAM,eAAA,GAAA,sBAAA,iBAA8B;CAEpC,MAAM,iBAAA,GAAA,MAAA,aACJ,OAAO,QAAgB,QAAiB,OAAgB,SAAkB;AACxE,MAAI,OACF,QAAO,kBAAkB,eAAe,QAAQ;GAAE;GAAQ;GAAO,CAAC;AAEpE,SAAO,kBAAkB,aAAa;GAAE;GAAQ;GAAO;GAAM,CAAC;IAEhE,CAAC,kBAAkB,CACpB;CAED,MAAM,gBAAA,GAAA,MAAA,aACJ,OAAO,OAAwB,kBAAkB,WAAW,GAAG,EAC/D,CAAC,kBAAkB,CACpB;CAED,MAAM,EAAE,QAAQ,UAAU,WAAW,qBAAqB,YAAY;CACtE,MAAM,kBAAkB,iCACtB;EAAE;EAAQ;EAAU;EAAQ,EAC5B,kBAAkB,KACnB;CAED,MAAM,EAAE,MAAM,0BAA0BC,mBAAAA,iBACtC,mBAAmB,IACnB,EACE,SAAS,CAAC,CAAC,iBACZ,CACF;CAED,MAAM,qBAAqB,uBAAuB,QAAQ;CAC1D,MAAM,8BAAA,GAAA,MAAA,eAA2C;AAC/C,MAAI,CAAC,iBACH,QAAO;AAGT,SAAO,qBACH;GAAE,GAAG;GAAkB,OAAO;GAAoB,GAClD;IACH,CAAC,kBAAkB,mBAAmB,CAAC;CAE1C,MAAM,kBAAA,GAAA,MAAA,cACH,WAAmB,OAAgB;AAElC,WADa,KAAK,SAAS,UAAU,GAAG,OAAO,SAAS,YAC1C;IAEhB,CAAC,SAAS,CACX;CAED,MAAM,cAAA,GAAA,MAAA,mBAA+B;AACnC,MAAI,YAAY,OACd,UAAS,SAAS,SAAS;MAE3B,UAAS,iBAAiB;IAE3B;EAAC;EAAU;EAAU;EAAO,CAAC;AA2QhC,QACE,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,wBAAD;EAAwB,SAAA,GAAA,MAAA,gBAzQjB;GACL,MAAM,UAAU,EAAE,IAAI,QAAQ,IAAI,GAAG;GACrC,YAAY;GACb,GACD,CAAC,QAAQ,CACV;YAqQG,iBAAA,GAAA,kBAAA,KAAC,sBAAD;GAAsB,SAAA,GAAA,MAAA,gBAlQjB;IACL,MAAM,UACF;KACE,IAAI,QAAQ;KACZ,SAAS,EAAE,UAAU,OAAO,YAAY,MAAM;KAC/C,GACD,KAAA;IAEJ,aAAa;IACb,UAAU;IACV,WAAW,SAAiB;KAC1B,MAAM,YAAY,KAAK,QAAQ,OAAO,GAAG;AAIzC,cAHiB,UAAU,WAAW,SAAS,GAC3C,YACA,SAAS,YACK;;IAEpB,YAAY,SAIN;AACJ,iBAAA,WAAW;MAAE,OAAO,KAAK;MAAO,MAAM,KAAK;MAAM,CAAC;AAClD,SAAI,KAAK,MAAO,SAAQ,MAAM,gBAAgB,KAAK,MAAM;;IAE3D;IACA,kBAAkB,OAAO,WAGnB;KACJ,MAAM,SAAS,MAAMC,mBAAAA,eACnB,QACA,OAAO,gBACP,OAAO,iBACR;AACI,iBAAY,kBAAkB,EACjC,UAAUC,0BAAAA,mBAAmB,WAAW,EACzC,CAAC;AACF,YAAO;;IAET,eAAe,OAAO,WAIhB;AACJ,WAAMD,mBAAAA,eACJ,QACA,OAAO,eACP,OAAO,gBACR;AACI,iBAAY,kBAAkB,EACjC,UAAUC,0BAAAA,mBAAmB,WAAW,EACzC,CAAC;;IAMJ,kBAAkB,OAAO,eAAuB;AAC9C,WAAM,cAAc,iBAAiB,eAAe,WAAW;;IAEjE,kBAAkB,aACd,KAAA,IACA;KACE,GAAG,cAAc;KACjB,oBACE,UACA,WAEA,cAAc,qBAAqB,kBAAkB,UAAU;MAC7D,GAAG;MACH,cAAc,QAAQ,gBAAgB,UAAU;MACjD,CAAC;KACL;IACL,gBAAgB,aACZ,KAAA,IACA,OACE,OACA,YACG;KAIH,MAAM,QAAQ,SAAS,SAAS;KAChC,MAAM,SAAS,SAAS,UAAU,KAAA;KAClC,MAAM,SACJ,MAAM,MAAM,CAAC,SAAS,IAClB,MAAM,kBAAkB,eAAe,OAAO;MAC5C;MACA;MACD,CAAC,GACF,MAAM,kBAAkB,aAAa;MAAE;MAAQ;MAAO,CAAC;AA0B7D,YAAO;MACL,WAtBc,OAAO,YAAY,EAAE,EAClC,KACE,MAQC,EAAE,MAAM,OACJ;OACE,IAAI,EAAE;OACN,MACE,EAAE,QAAQ,EAAE,SAAS,KAAK,QAAQ,kBAAkB;OACtD,WAAW,EAAE,aAAa,EAAE,SAAS,IAAI,OAAO;OAChD,OAAO,EAAE,SAAS;OACnB,GACD,KACP,CACA,QAAQ,MAAkC,MAAM,KAAK;MAGtD,YAAY,OAAO,MAAM,YAAY,eAAe;MACrD;;IAKP,UAAU;IACV,oBAAoB;IAOpB,eAAe;KACb,OAAO;MACL,UAAU,UAAU;MACpB,MAAM,OAAO,EAAE,QAAQ,QAAQ,YAA8B;OAC3D,MAAM,WAAW,MAAM,cAAc,aAAa,UAAU;QAC1D,QAAQ,UAAU,KAAA;QAClB;QACA,iBACE,UAAU,OAAO,MAAM,CAAC,SAAS,IAAI,SAAS,KAAA;QAChD,cAAc,UAAU;QACzB,CAAC;AACF,cAAO;QACL,OAAO,SAAS,MAAM,KAAK,OAAO;SAChC,IAAI,EAAE;SACN,OACE,EAAE,SACF,KAAK,QAAQ,uBAAuB,EAAE,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;SAC3D,WAAW,EAAE,aAAa;SAC3B,EAAE;QACH,YAAY,SAAS,KAAK,YAAY,eAAe;QACtD;;MAEJ;KACD,UAAU;MACR,UAAU,UAAU;MACpB,MAAM,OAAO,EAAE,QAAQ,QAAQ,YAA8B;OAC3D,MAAM,gBAAgB,QAAQ,MAAM,IAAI;OACxC,MAAM,SACJ,cAAc,SAAS,IACnB,MAAM,kBAAkB,eAAe,eAAe;QACpD,QAAQ,UAAU,KAAA;QAClB;QACD,CAAC,GACF,MAAM,kBAAkB,aAAa;QACnC,QAAQ,UAAU,KAAA;QAClB;QACD,CAAC;AAgBR,cAAO;QACL,QAbc,OAAO,YAAY,EAAE,EAClC,KAAK,MACJ,EAAE,MAAM,OACJ;SACE,IAAI,EAAE;SACN,MAAM,EAAE,QAAQ,KAAK,QAAQ,kBAAkB;SAC/C,WAAW,EAAE,SAAS,IAAI,OAAO;SACjC,OAAO,EAAE,SAAS;SACnB,GACD,KACL,CACA,QAAQ,MAAkC,MAAM,KAAK;QAGtD,YAAY,OAAO,MAAM,YAAY,eAAe;QACrD;;MAEJ;KACD,kBAAkB;MAChB,UAAU,UAAU;MAKpB,gBAAgB;MAChB,MAAM,OAAO,EAAE,QAAQ,YAA8B;OACnD,MAAM,WACJ,MAAM,cAAc,uBAAuB,oBAAoB;QAC7D,QAAQ,UAAU,KAAA;QAClB;QACD,CAAC;AAUJ,cAAO;QACL,OAVY,SAAS,iBAAiB,KAAK,UAAU;SACrD,IAAI,KAAK;SACT,OACE,KAAK,SACL,KAAK,QAAQ,iCAAiC,EAC5C,IAAI,OAAO,KAAK,GAAG,EACpB,CAAC;SACJ,WAAW,KAAK,OAAO,IAAI,OAAO;SACnC,EAAE;QAGD,YAAY,SAAS,KAAK,YAAY,eAAe;QACtD;;MAEJ;KACF;IACD,iBAAiB,aACb,KAAA,IACA,OAAO,MAAY,aAAqB;KAKtC,MAAM,OAJW,MAAM,cAAc,eAAe;MAClD,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;MACrD,MAAM;MACP,CAAC,EACmB,OAAO;AAC5B,SAAI,CAAC,IAMH,OAAM,IAAI,MAAM,iDAAiD;AAEnE,YAAO;;IAEd,GACD;IACE;IACA;IACA;IACA;IACA;IACA;IACA,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd;IACA;IACA;IACD,CACF;aAKK,iBAAA,GAAA,kBAAA,KAAC,eAAD;IACU;IACE;IACF;IACR,gBAAgB,KAAA;IAChB,aAAa,KAAA;IACE;IACD;IACd,YAAY;IACZ,QAAQ;IACsB;IAC9B,kBAAkB;IAClB,CAAA;GACmB,CAAA;EACA,CAAA;;AAI7B,MAAa,iCAAuD;CAClE,YAAY;CACZ,aAAa;CACb,YAAY,CAAC;EAAE,IAAI;EAAW,OAAO;EAAW,CAAC;CACjD,QAAQ,CACN;EACE,KAAK;EACL,OAAO;EACP,MAAM;EACN,aACE;EACF,cAAc;EACd,KAAK;EACL,OAAO;EACR,CACF;CACF"}